Your IP : 18.117.103.114


Current Path : /opt/alt/python313/lib64/python3.13/__pycache__/
Upload File :
Current File : //opt/alt/python313/lib64/python3.13/__pycache__/mailbox.cpython-313.opt-1.pyc

�

1}g�>��
�SrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	rSSK
rSSKrSSKrSSK
Jr SSKr/SQr\R$R'S5r"SS5r"SS	\5r"S
S\5r"SS
\5r"SS\5r"SS\5r"SS\5r"SS\5r"SS\R8R:5r"SS\5r"SS\5r"SS\5r "SS\5r!"S S!\5r""S"S#\5r#"S$S%5r$"S&S'\$5r%S8S(jr&S)r'S*r(S+r)S,r*S-r+"S.S/\,5r-"S0S1\-5r."S2S3\-5r/"S4S5\-5r0"S6S7\-5r1g!\a SrGNCf=f)9zDRead/write support for Maildir, mbox, MH, Babyl, and MMDF mailboxes.�N)�GenericAlias)�Mailbox�Maildir�mbox�MH�Babyl�MMDF�Message�MaildirMessage�mboxMessage�	MHMessage�BabylMessage�MMDFMessage�Error�NoSuchMailboxError�
NotEmptyError�ExternalClashError�FormatError�asciic��\rSrSrSrS%SjrSrSrSrSr	S	r
S&S
jrSrSr
S
rSrSrSrSrSrSrSrSrSrSrSrSrS&SjrSrS&SjrSrSrSr S r!S!r"S"r#S'S#jr$\%"\&5r'S$r(g)(r�"z*A group of messages in a particular place.Nc��[RR[RRU55UlX lg)zInitialize a Mailbox instance.N)�os�path�abspath�
expanduser�_path�_factory��selfr�factory�creates    �./opt/alt/python313/lib64/python3.13/mailbox.py�__init__�Mailbox.__init__%s*���W�W�_�_�R�W�W�%7�%7��%=�>��
��
�c��[S5e)�$Add message and return assigned key.�&Method must be implemented by subclass��NotImplementedError�r �messages  r#�add�Mailbox.add*���!�"J�K�Kr&c��[S5e)�=Remove the keyed message; raise KeyError if it doesn't exist.r)r*�r �keys  r#�remove�Mailbox.remove.r0r&c�&�URU5 g�N)r5r3s  r#�__delitem__�Mailbox.__delitem__2s�����C�r&c�H�URU5 g![a gf=f�z'If the keyed message exists, remove it.N)r5�KeyErrorr3s  r#�discard�Mailbox.discard5s%��	��K�K�����	��	�s��
!�!c��[S5e)�>Replace the keyed message; raise KeyError if it doesn't exist.r)r*�r r4r-s   r#�__setitem__�Mailbox.__setitem__<r0r&c�J�URU5$![a Us$f=f)z9Return the keyed message, or default if it doesn't exist.)�__getitem__r=)r r4�defaults   r#�get�Mailbox.get@s,��	��#�#�C�(�(���	��N�	�s��"�"c���UR(dURU5$[R"UR	U55nURU5sSSS5 $!,(df   g=f)z=Return the keyed message; raise KeyError if it doesn't exist.N)r�get_message�
contextlib�closing�get_file)r r4�files   r#rF�Mailbox.__getitem__GsK���}�}��#�#�C�(�(��#�#�D�M�M�#�$6�7�4��}�}�T�*�8�7�7�s�A#�#
A1c��[S5e)�4Return a Message representation or raise a KeyError.r)r*r3s  r#rK�Mailbox.get_messageOr0r&c�h�[R"URU55R5$)z�Return a string representation or raise a KeyError.

Uses email.message.Message to create a 7bit clean string
representation of the message.��email�message_from_bytes�	get_bytes�	as_stringr3s  r#�
get_string�Mailbox.get_stringSs'��
�'�'����s�(;�<�F�F�H�Hr&c��[S5e)z8Return a byte string representation or raise a KeyError.r)r*r3s  r#rX�Mailbox.get_bytesZr0r&c��[S5e)�6Return a file-like representation or raise a KeyError.r)r*r3s  r#rN�Mailbox.get_file^r0r&c��[S5e)�Return an iterator over keys.r)r*�r s r#�iterkeys�Mailbox.iterkeysbr0r&c�4�[UR55$)zReturn a list of keys.)�listrdrcs r#�keys�Mailbox.keysfs���D�M�M�O�$�$r&c#�n# �UR5HnXnUv� M g![a Mf=f7f)z%Return an iterator over all messages.N�rdr=�r r4�values   r#�
itervalues�Mailbox.itervaluesjs;����=�=�?�C�
��	���K�#���
��
�s�5�$�	5�
2�5�2�5c�"�UR5$r8)rnrcs r#�__iter__�Mailbox.__iter__ss����� � r&c�4�[UR55$)z,Return a list of messages. Memory intensive.)rgrnrcs r#�values�Mailbox.valuesvs���D�O�O�%�&�&r&c#�p# �UR5H
nXnX4v� M g![a Mf=f7f)z.Return an iterator over (key, message) tuples.Nrkrls   r#�	iteritems�Mailbox.iteritemszs>����=�=�?�C�
��	���,��#���
��
�s�6�%�
6�
3�6�3�6c�4�[UR55$)z9Return a list of (key, message) tuples. Memory intensive.)rgrwrcs r#�items�
Mailbox.items�s���D�N�N�$�%�%r&c��[S5e)�9Return True if the keyed message exists, False otherwise.r)r*r3s  r#�__contains__�Mailbox.__contains__�r0r&c��[S5e)�*Return a count of messages in the mailbox.r)r*rcs r#�__len__�Mailbox.__len__�r0r&c�T�UR5HnURU5 M g)zDelete all messages.N)rhr>r3s  r#�clear�
Mailbox.clear�s���9�9�;�C��L�L���r&c�V�XnURU5 U$![a Us$f=f)z3Delete the keyed message and return it, or default.)r=r>)r r4rG�results    r#�pop�Mailbox.pop�s7��	��Y�F�	
���S���
���	��N�	�s��(�(c�j�UR5HnXRU54s $ [S5e)z6Delete an arbitrary (key, message) pair and return it.zNo messages in mailbox)rdr�r=r3s  r#�popitem�Mailbox.popitem�s1���=�=�?�C����#��'�'�#��3�4�4r&c��[US5(aUR5nO$[US5(aUR5nOUnSnUH
upEXPU'M U(a[S5eg![a SnM0f=f)z4Change the messages that correspond to certain keys.rwrzFTzNo message with key(s)N)�hasattrrwrzr=)r �arg�source�bad_keyr4r-s      r#�update�Mailbox.update�s����3��$�$��]�]�_�F�
�S�'�
"�
"��Y�Y�[�F��F���"�L�C�
�#�S�	�#�
��3�4�4����
���
�s�A,�,A<�;A<c��[S5e)�&Write any pending changes to the disk.r)r*rcs r#�flush�
Mailbox.flush�r0r&c��[S5e)�Lock the mailbox.r)r*rcs r#�lock�Mailbox.lock�r0r&c��[S5e)�#Unlock the mailbox if it is locked.r)r*rcs r#�unlock�Mailbox.unlock�r0r&c��[S5e)�Flush and close the mailbox.r)r*rcs r#�close�
Mailbox.close�r0r&c�X�URS5$![a [S5ef=f)Nrz?String input must be ASCII-only; use bytes or a Message instead)�encode�UnicodeError�
ValueErrorr,s  r#�_string_to_bytes�Mailbox._string_to_bytes�s7��	2��>�>�'�*�*���	2��1�2�
2�	2�s��)Fc���[U[RR5(a�[R
"5n[RRXCS5nURU5 URS5 UR5nURS[5nURU5 UR(a1UR[5(dUR[5 g
g
g
[U[ ["[R$45(a�[U[R$5(a,[&R("S[*S5 UR-5n[U[ 5(aUR/U5nU(aURSS5nURS[5nURU5 UR(a1UR[5(dUR[5 g
g
g
[1US5(Ga,[1US5(a([&R("S	[*S5 UR2nS
nUR55nURS5(a	US
SS-nOURS
5(aUS
SS-nU(dOPU(aUR7S5(aSUSS
-nURS[5nURU5 UnM�UR(a9U(a1UR[5(dUR[5 g
g
g
g
[9S[;U5-5e)z%Dump message contents to target file.r�
�8Use of StringIO input is deprecated, use BytesIO instead�s
From s
>From �read�buffer�DUse of text mode files is deprecated, use a binary mode file insteadN�
����
����From s>From ��Invalid message type: %s)�
isinstancerVr-r
�io�BytesIO�	generator�BytesGenerator�flatten�seekr��replace�linesep�write�_append_newline�endswith�str�bytes�StringIO�warnings�warn�DeprecationWarning�getvaluer�r�r��readline�
startswith�	TypeError�type)	r r-�target�mangle_from_r��gen�data�lastline�lines	         r#�
_dump_message�Mailbox._dump_message�s����g�u�}�}�4�4�5�5��Z�Z�\�F��/�/�0�0��q�I�C��K�K�� ��K�K��N��;�;�=�D��<�<��w�/�D��L�L����#�#�D�M�M�'�,B�,B����W�%�-C�#���#�u�b�k�k�!:�
;�
;��'�2�;�;�/�/��
�
�*�+=�q�B�!�*�*�,���'�3�'�'��/�/��8���!�/�/�*�k�B���o�o�e�W�5�G��L�L��!��#�#�G�,<�,<�W�,E�,E����W�%�-F�#��W�f�
%�
%��w��)�)��
�
�5�6H�!�M�!�.�.���H���'�'�)���=�=��)�)����9�u�,�D��]�]�5�)�)����9�u�,�D����D�O�O�H�$=�$=�$�t�A�B�x�/�D��|�|�E�7�3�����T�"�����#�#���9J�9J�7�9S�9S����W�%�:T��#��6��g��F�G�Gr&)rr�NTr8�F))�__name__�
__module__�__qualname__�__firstlineno__�__doc__r$r.r5r9r>rCrHrFrKrZrXrNrdrhrnrqrtrwrzr~r�r�r�r�r�r�r�r�r�r�r�r��classmethodr�__class_getitem__�__static_attributes__�r&r#rr"s���4� �
L�L���L��+�L�I�L�L�L�%��!�'��&�L�L��
�5�5�"L�L�L�L�2��O�4H�l$�L�1�r&rc��\rSrSrSrSrS(SjrSrSrSr	S	r
S
rSrSr
S
rS\4SjrSrS\4SjrS\4SjrS\4SjrSrSrSrSrSrSrSrSrSrSrS rS!r S"r!S#r"S$r#S%r$S&r%S'r&g))rizA qmail-style Maildir mailbox.�:Nc��[RXX#5 [RR	UR
S5[RR	UR
S5[RR	UR
S5S.Ul[RRUR
5(dvU(aZ[R"UR
S5 URR5Hn[R"US5 M O[UR
5e0UlSSS.UlSUl
SUlg	)
zInitialize a Maildir instance.�tmp�new�cur)r�r�r��r)r�r�g�������?N)rr$rr�joinr�_paths�exists�mkdirrtr�_toc�_toc_mtimes�
_last_read�_skewfactor)r �dirnamer!r"rs     r#r$�Maildir.__init__s��������8��7�7�<�<��
�
�E�2��7�7�<�<��
�
�E�2��7�7�<�<��
�
�E�2����
�w�w�~�~�d�j�j�)�)��������U�+� �K�K�.�.�0�D��H�H�T�5�)�1�)����4�4���	�#$�Q�/��������r&c��UR5nURX5 [U5 [U[5(a?UR5nURUR5-nX@R:XaSnOSnSn[RRUR5RUR5Sn[RR!UR"X5U-5n[U[5(aX[R$"UR[RR'UR5UR)545 [R*"URU5 [R
"UR5 U$![a2 UR5 [R
"UR5 ef=f![,[.4a% [R0"URU5 U$f=f![2aRn[R
"UR5 UR4[4R6:Xa[9SU-5eeSnAff=f)r(�r�rz$Name clash with existing message: %sN)�_create_tmpr��
BaseExceptionr�rr5�name�_sync_closer�r�
get_subdir�colon�get_infor�basename�splitr�r�utime�getatime�get_date�link�AttributeError�PermissionError�rename�OSError�errno�EEXISTr)r r-�tmp_file�subdir�suffix�uniq�dest�es        r#r.�Maildir.add$s����#�#�%��	����w�1�
	�H���g�~�.�.��'�'�)�F��Z�Z�'�"2�"2�"4�4�F����#�����F��F��w�w����
�
�.�4�4�T�Z�Z�@��C���w�w�|�|�D�J�J��v�
�>���g�~�.�.��H�H�X�]�]��g�g�&�&�x�}�}�5�w�7G�7G�7I�J�
L�

	�
)�����
�
�t�,��	�	�(�-�-�(����G�	��N�N���I�I�h�m�m�$��	��0#�O�4�
/��	�	�(�-�-��.���
/���	��I�I�h�m�m�$��w�w�%�,�,�&�(�)O�+/�*0�1�1���
	�sB�F*�'!G)� H!�*<G&�)1H�H!�H�H!�!
I=�+A
I8�8I=c��[R"[RRURURU555 g�r2N)rr5rr�r�_lookupr3s  r#r5�Maildir.removeNs*��
�	�	�"�'�'�,�,�t�z�z�4�<�<��+<�=�>r&c�T�URU5 g![[4a gf=fr<)r5r=�FileNotFoundErrorr3s  r#r>�Maildir.discardRs+��	��K�K�����+�,�	��	�s��'�'c��URU5nURU5nURU5n[U[5(aUnOUn[R
R
U5nURU;a,URURUR5S-nOSnURU5 [R
RURU5n	[R
RURXqU-5n
[U[5(aD[R"U	[R
RU	5UR545 [R"X�5 g)rAr�r�N)rr.r�rrrr�r�r�r>r�rr�rrr)r r4r-�old_subpath�temp_key�temp_subpath�dominant_subpathr
r�tmp_path�new_paths           r#rC�Maildir.__setitem__Zs���l�l�3�'���8�8�G�$���|�|�H�-���g�~�.�.�+�� +�������!1�2���:�:�)�)��Z�Z�"2�"8�"8����"D�R�"H�H�F��F����S���7�7�<�<��
�
�L�9���7�7�<�<��
�
�F�&�L�A���g�~�.�.��H�H�X��g�g�&�&�x�0�'�2B�2B�2D�E�
G�
	�	�	�(�%r&c��URU5n[[RR	UR
U5S5nUR(aUR
U5nO[U5nSSS5 [RRU5upVWRU5 URU;a-URURUR5S5 UR[RR[RR	UR
U555 U$!,(df   N�=f)rR�rbNr�)r�openrrr�rrrr��
set_subdirr��set_info�set_date�getmtime)r r4�subpath�f�msgr
r�s       r#rK�Maildir.get_messageus����,�,�s�#��
�"�'�'�,�,�t�z�z�7�3�T�
:�a��}�}��m�m�A�&��$�Q�'��	;�
�w�w�}�}�W�-������v���:�:����L�L����D�J�J�/��3�4����R�W�W�%�%�b�g�g�l�l�4�:�:�w�&G�H�I��
�;�
:�s�/E�
Ec��[[RRURURU55S5nUR
5R[S5sSSS5 $!,(df   g=f)�2Return a bytes representation or raise a KeyError.r r�N)	r!rrr�rrr�r�r��r r4r's   r#rX�Maildir.get_bytes�sM��
�"�'�'�,�,�t�z�z�4�<�<��+<�=�t�
D���6�6�8�#�#�G�U�3�E�
D�
D�s�$A2�2
Bc��[[RRURURU55S5n[
U5$)r_r )r!rrr�rr�
_ProxyFiler,s   r#rN�Maildir.get_file�s4��������d�j�j�$�,�,�s�*;�<�d�C���!�}�r&c��URU5nURU;aURUR5S$g)z+Get the keyed message's "info" as a string.r�r�)rr�r�)r r4r&s   r#r��Maildir.get_info�s7���,�,�s�#���:�:�� ��=�=����,�R�0�0�r&�infoc���[U[5(d[S[U535eUR	U5nURUR5SnU(aX@RU--
nXC:Xag[RRURU5n[RRURU5n[R"XV5 X@RU'g)z&Set the keyed message's "info" string.zinfo must be a string: rN)
r�r�r�r�rr�r�rrr�rrr�)r r4r3r�new_subpath�old_pathrs       r#r#�Maildir.set_info�s����$��$�$��5�d�4�j�\�B�C�C��l�l�3�'��!�'�'��
�
�3�A�6����:�:��,�,�K��%���7�7�<�<��
�
�K�8���7�7�<�<��
�
�K�8��
�	�	�(�%�$�	�	�#�r&c�\�URU5nURS5(aUSS$g)zHReturn as a string the standard flags that are set on the keyed message.�2,�Nr�)r�r�)r r4r3s   r#�	get_flags�Maildir.get_flags�s-���}�}�S�!���?�?�4� � ����8�O�r&�flagsc���[U[5(d[S[U535eUR	USSR[
[U555-5 g)z>Set the given flags and unset all others on the keyed message.zflags must be a string: r9r�N)r�r�r�r�r#r��sorted�set)r r4r=s   r#�	set_flags�Maildir.set_flags�sK���%��%�%��6�t�E�{�m�D�E�E��
�
�c�4�"�'�'�&��U��*<�"=�=�>r&�flagc
���[U[5(d[S[U535eUR	USR[
URU55[
U5-55 g)zCSet the given flag(s) without changing others on the keyed message.�flag must be a string: r�N)r�r�r�r�rAr�r@r;�r r4rCs   r#�add_flag�Maildir.add_flag�sT���$��$�$��5�d�4�j�\�B�C�C����s�B�G�G�C����s�(;�$<�s�4�y�$H�I�Jr&c
��[U[5(d[S[U535eUR	U5(aFURUSR
[UR	U55[U5-
55 gg)zLUnset the given string flag(s) without changing others on the keyed message.rEr�N)r�r�r�r�r;rAr�r@rFs   r#�remove_flag�Maildir.remove_flag�sh���$��$�$��5�d�4�j�\�B�C�C��>�>�#����N�N�3�����D�N�N�3�,?�(@�3�t�9�(L� M�N�r&c#�# �UR5 URHnURU5 Uv� M g![a M+f=f7f�rbN)�_refreshr�rr=r3s  r#rd�Maildir.iterkeys�sG����
�
���9�9�C�
����S�!��I����
��
�s%� A�=�	A�
A�A�
A�Ac�>�UR5 XR;$�r})rNr�r3s  r#r~�Maildir.__contains__�s���
�
���i�i��r&c�L�UR5 [UR5$�r�)rN�lenr�rcs r#r��Maildir.__len__�s���
�
���4�9�9�~�r&c��g)�"Write any pending changes to disk.Nr�rcs r#r��
Maildir.flush�s��	
r&c��g)r�Nr�rcs r#r��Maildir.lock����r&c��g)r�Nr�rcs r#r��Maildir.unlock�r\r&c��g�r�Nr�rcs r#r��
Maildir.close�r\r&c�T�/n[R"UR5H�n[U5S:�dMUSS:XdM[RR[RR
URU55(dMmURUSS5 M� U$)�Return a list of folder names.�r�.N)r�listdirrrUr�isdirr��append�r r��entrys   r#�list_folders�Maildir.list_folders�sr�����Z�Z��
�
�+�E��5�z�A�~�%��(�c�/��w�w�}�}�R�W�W�\�\�$�*�*�e�<�=�=��
�
�e�A�B�i�(�,��
r&c��[[RRURSU-5UR
SS9$)z/Return a Maildir instance for the named folder.reF�r!r")rrrr�rr�r �folders  r#�
get_folder�Maildir.get_folder�s2���r�w�w�|�|�D�J�J��f��=�#�}�}�#�%�	%r&c��[RRURSU-5n[	X R
S9n[RRUS5n[RR
U5(dK[R"[R"U[R[R-S55 U$)z>Create a folder and return a Maildir instance representing it.re�r!�
maildirfolder�)rrr�rrrr�r�r!�O_CREAT�O_WRONLY)r rprr��maildirfolder_paths     r#�
add_folder�Maildir.add_folder�s����w�w�|�|�D�J�J��f��5����}�}�5���W�W�\�\�$��@���w�w�~�~�0�1�1��H�H�R�W�W�/����b�k�k�1I���
��
r&c��[RRURSU-5n[R"[RRUS55[R"[RRUS55-H)n[U5S:dUSS:wdM[
SU-5e [R"U5HonUS:wdMUS:wdMUS:wdMR[RRX#55(dM^[
SU<S	U<35e [R"US
S9H~upEnUH6n[R"[RRXC55 M8 UH6n[R"[RRXC55 M8 M� [R"U5 g)
�-Delete the named folder, which must be empty.rer�r�rdrzFolder contains message(s): %sr�zFolder contains subdirectory 'z': F)�topdownN)rrr�rrfrUrrg�walkr5�rmdir)r rprrj�root�dirs�filess       r#�
remove_folder�Maildir.remove_folder�sT���w�w�|�|�D�J�J��f��5���Z�Z������T�5� 9�:��Z�Z������T�5� 9�:�;�E��5�z�A�~��q��S��#�$D�v�$M�N�N�;��Z�Z��%�E���~�%�5�.�U�e�^��w�w�}�}�R�W�W�\�\�$�6�7�7�#�%+�U�%4�5�5�&�
"$����u�!=��D�����	�	�"�'�'�,�,�t�3�4������������d�2�3��">�
	����r&c��[R"5n[R"[RR	UR
S55Hln[RR	UR
SU5nU[RR
U5-
S:�dMV[R"U5 Mn g)zDelete old files in "tmp".r�i@�N)�timerrfrr�rrr5)r �nowrjrs    r#�clean�
Maildir.cleansu���i�i�k���Z�Z������T�Z�Z�� ?�@�E��7�7�<�<��
�
�E�5�9�D��R�W�W�%�%�d�+�+�f�4��	�	�$��Ar&rdc	�~�[R"5n[R"5nSU;aURSS5nSU;aURSS5n[	U5<S[	US-S-5<S[
R"5<S	[R<S
U<3	n[
RRURSU5n[
R"U5 [!SU-5e![a9 [=RS-
sl[U5s$![a NLf=ff=f)
z=Create a file in the tmp subdirectory and open and return it.�/z\057r�z\072z.Mrdg��.A�P�Qrer�z&Name clash prevented file creation: %s)r��socket�gethostnamer��intr�getpidr�_countrr�r�statr�_create_carefully�FileExistsErrorr)r r��hostnamerrs     r#r��Maildir._create_tmps���i�i�k���%�%�'���(�?��'�'��W�5�H��(�?��'�'��W�5�H�$'��H�c�#��'�C�-�.@�"�)�)�+�$+�N�N�H�>���w�w�|�|�D�J�J��t�4��	��G�G�D�M�!�!I�!%�"&�'�	'��!�	��N�N�a��N�
�(��.�.��"�
��
��		�s0�C9�9#D<�
D*�'D<�*
D8�4D<�7D8�8D<c�N�[R"5UR-
SUR-:�akSnURHQn[R
R
URU5nX0RU:�aSnX0RU'MS U(dg0UlURH�nURUn[R"U5H�nURS5(aM[R
RXE5n[R
RU5(aM`URUR5Sn[R
RX%5URU'M� M� [R"5Ulg)z!Update table of contents mapping.r:FTNrer)r�r�r�r�rrr%r�r�rfr�r�rgr�r�)r �refreshr
�mtimerrj�prs        r#rN�Maildir._refresh4s8���9�9�;����(�1�t�/?�/?�+?�?��G��*�*�����(�(����V�)<�=���+�+�F�3�3�"�G�+0� � ��(�	+�
����	��&�&�F��;�;�v�&�D����D�)���#�#�C�(�(���G�G�L�L��-���7�7�=�=��#�#���{�{�4�:�:�.�q�1��"$�'�'�,�,�v�"=��	�	�$��*�'��)�)�+��r&c�p�[RR[RRURUR
U55(aUR
U$UR5 UR
U$![a N,f=f![a [
SU-5Sef=f)z=Use TOC to return subpath for given key, or raise a KeyError.�No message with key: %sN)rrr�r�rr�r=rNr3s  r#r�Maildir._lookupZs���	��w�w�~�~�b�g�g�l�l�4�:�:�t�y�y��~�F�G�G��y�y��~�%�H�	
�
�
��	F��9�9�S�>�!��	�	��	��
�	F��4�s�:�;��E�	F�s�A'B�<B�
B�B�B5c��[US5(dUR5UlU[UR5$![a g[
a M2f=f)z0Return the next message in a one-time iteration.�
_onetime_keysN)r�rdr��next�
StopIterationr=rcs r#r��Maildir.nexthsX���t�_�-�-�!%����D���
��D��!3�!3�4�5�5�� �
���
��
�s�A�
A�
	A�A)r�r�r�r�r�r�r�)'r�r�r�r�r�r�r$r.r5r>rCrKrXrNr�r�r#r;rArGrJrdr~r�r�r�r�r�rkrqrzr�r�r�r�rNrr�r�r�r&r#rrs���(��E��((�T?��&�6
�4�
�
�
%�#�
%��?�C�?�K�#�K�O�S�O�� �
�

�����%���& ��F�'�0$&�LF�
r&rc��\rSrSrSrSSjrSrSrSrSr	S	r
S
rSrSr
S
rSrSrSrSrSSjrSrSrg)�_singlefileMailboxiuzA single-file mailbox.Nc� �[RXX#5 [URS5nX@l
SUlSUlSUl
SUlSUlSUlg![a�nUR
[
R:Xa7U(a[URS5nSnAN{[UR5eUR
[
R[
R4;a[URS5nSnAN�eSnAff=f)z!Initialize a single-file mailbox.�rb+zwb+r NrF)rr$r!rrr�ENOENTr�EACCES�EROFS�_filer��	_next_key�_pending�
_pending_sync�_locked�_file_length)r rr!r"r'rs      r#r$�_singlefileMailbox.__init__xs�������W�5�	��T�Z�Z��'�A��
���	������
�"������ ����!�		��w�w�%�,�,�&���T�Z�Z��/�A�,�T�Z�Z�8�8����U�\�\�5�;�;�7�7�����T�*����		�s$�A�
D
�);D�)AD�D�D
c���UR5 URU5URUR'U=RS-
slSUlURS-
$)r(rdT)r�_append_messager�r�r�r,s  r#r.�_singlefileMailbox.add�sO������$(�$8�$8��$A��	�	�$�.�.�!����!���"����~�~��!�!r&c�N�URU5 URU	SUlg)r2TN)rr�r�r3s  r#r5�_singlefileMailbox.remove�s �����S���I�I�c�N���
r&c�p�URU5 URU5URU'SUlg)rATN)rr�r�r�rBs   r#rC�_singlefileMailbox.__setitem__�s-�����S���-�-�g�6��	�	�#����
r&c#�t# �UR5 URR5Shv�N gN7frM)rr�rhrcs r#rd�_singlefileMailbox.iterkeys�s"��������9�9�>�>�#�#�#�s�.8�6�8c�>�UR5 XR;$rQ)rr�r3s  r#r~�_singlefileMailbox.__contains__�s�������i�i��r&c�L�UR5 [UR5$rT)rrUr�rcs r#r��_singlefileMailbox.__len__�s�������4�9�9�~�r&c�`�UR(d[UR5 SUlgg)r�TN)r��
_lock_filer�rcs r#r��_singlefileMailbox.lock�s!���|�|��t�z�z�"��D�L�r&c�`�UR(a[UR5 SUlgg�r�FN)r��_unlock_filer�rcs r#r��_singlefileMailbox.unlock�s!���<�<�����$� �D�L�r&c	�F�UR(d.UR(a[UR5 SUlgURR	SS5 URR5nXR:wa[SURU4-5e[UR5n0nURU5 [URR55H�nURUupVURR	U5 URU5 UR5nURR[!SX`RR5-
55nU(dOUR#U5 MZXrR54X4'UR%U5 M� UR5Ul[/U5 URR'5 [(R0"UR5n	[(R2"UR,U	R45 [(R6"UR,U	R8U	R:5 [(R@"UR,UR5 [EURS5UlX0lSUlSUlURF(a[IURSS9 gg! UR'5 [(R*"UR,5 e=f![<[>4a N�f=f![BaN [(R*"UR5 [(R@"UR,UR5 N�f=f)	rXFNrr:z4Size of mailbox file changed (expected %i, found %i)�r�)�dotlock)%r�r��_sync_flushr�r��tellr�r�_create_temporaryr�_pre_mailbox_hookr?r�rh�_pre_message_hookr��minr��_post_message_hookr�rr5r�r�r��chmod�st_mode�chown�st_uid�st_gidrrrr�r!r�r�)
r �cur_len�new_file�new_tocr4�start�stop�	new_startr�r3s
          r#r��_singlefileMailbox.flush�s����}�}��!�!��D�J�J�'�%*��"��	
�
�
����1���*�*�/�/�#���'�'�'�$�&?�&*�&7�&7��%A�&B�C�
C�%�T�Z�Z�0��	��G��"�"�8�,��d�i�i�n�n�.�/��"�i�i��n����
�
����&��&�&�x�0�$�M�M�O�	��!�Z�Z�_�_�S��15�
�
���8I�1I�.K�L�F�!���N�N�6�*��!*�=�=�?�;����'�'��1�0�!)�
�
��D��
	�H���
�
�����w�w�t�z�z�"��
���������-�	��H�H�X�]�]�D�K�K����=�	1��I�I�h�m�m�T�Z�Z�0��$�*�*�e�,��
��	���
�"����<�<��t�z�z�5�1���/	��N�N���I�I�h�m�m�$�����(�	��	���	1��I�I�d�j�j�!��I�I�h�m�m�T�Z�Z�0�	1�s2�5DK<�6L2�;+M�<3L/�2M�M�AN �N c��g)�,Called before writing the mailbox to file f.Nr��r r's  r#r��$_singlefileMailbox._pre_mailbox_hookr\r&c��g)�-Called before writing each message to file f.Nr�r�s  r#r��$_singlefileMailbox._pre_message_hookr\r&c��g��,Called after writing each message to file f.Nr�r�s  r#r��%_singlefileMailbox._post_message_hookr\r&c��UR5 UR(aUR5 URR	5 g!URR	5 f=f!UR(aUR5 URR	5 f!URR	5 f=f=fr`)r�r�r�r�r�rcs r#r��_singlefileMailbox.closes|��	#��J�J�L�
#��<�<��K�K�M��
�
� � �"���
�
� � �"��	
#��<�<��K�K�M��
�
� � �"���
�
� � �"�s.�A.�!A�A+�.C�0!B,�C�,C�Cc��URcUR5 UbURU$g![a [SU-5Sef=f)z'Return (start, stop) or raise KeyError.Nr�)r��
_generate_tocr=r3s  r#r�_singlefileMailbox._lookups\���9�9����� ��?�
J��y�y��~�%����
J��8�3�>�?�T�I�
J�s	�2�Ac�R�URRSS5 URR5n[UR5S:Xa,UR
(dUR
UR5 URUR5 URU5nURUR5 URR5 URR5Ul
U$![a URRU5 ef=f)z;Append message to mailbox and return (start, stop) offsets.rr:)r�r�r�rUr�r�r�r��_install_messager�r��truncater�r�)r r-�before�offsetss    r#r��"_singlefileMailbox._append_message%s����
�
����1�������"���t�y�y�>�Q��t�}�}�

�"�"�4�:�:�.�	��"�"�4�:�:�.��+�+�G�4�G��#�#�D�J�J�/�	
�
�
���� �J�J�O�O�-�������	��J�J����'��	�s
�=AC?�?'D&)r�r�r�r�r�r�r�r�r8)r�r�r�r�r�r$r.r5rCrdr~r�r�r�r�r�r�r�r�rr�r�r�r&r#r�r�usX�� �!�."���$�
 �
�
 �!�B2�H���	#�J�r&r�c�F�\rSrSrSrSrSrSSjrSSjrSSjr	Sr
S	rg
)�	_mboxMMDFi<zAn mbox or MMDF mailbox.Tc���URU5up#URRU5 URR5R	[
S5R
S5nURRX0RR5-
5nURUR	[
S55nURU5 URUSS5 U$)rRr&rr�r�N)rr�r�r�r�r��decoder�r��_message_factory�set_unixfrom�set_from)r r4r�r��	from_line�stringr(s       r#rK�_mboxMMDF.get_messageAs����l�l�3�'����
�
������J�J�'�'�)�1�1�'�3�?�F�F�w�O�	�������
�
���(9�!9�:���#�#�F�N�N�7�E�$B�C������#����Y�q�r�]�#��
r&c�f�[R"URX55RUS9$)�3Return a string representation or raise a KeyError.)�unixfromrU)r r4�from_s   r#rZ�_mboxMMDF.get_stringLs.���'�'��N�N�3�&�(�(1�	�5�	�(A�	Br&c�6�URU5up4URRU5 U(dURR5 URR	X@RR5-
5nUR
[S5$)r�r�)rr�r�r�r�r�r�r�)r r4rr�r�r�s      r#rX�_mboxMMDF.get_bytesQsf���l�l�3�'����
�
�������J�J���!�������
�
���(9�!9�:���~�~�g�u�-�-r&c��URU5up4URRU5 U(dURR5 [	URURR5U5$)r_)rr�r�r��_PartialFiler�)r r4rr�r�s     r#rN�_mboxMMDF.get_fileZsS���l�l�3�'����
�
�������J�J���!��D�J�J��
�
���(9�4�@�@r&c��Sn[U[5(aURU5n[U[5(a?UR	S5(a)URS5nUS:wa
USUnXS-SnO�UnSnO�[U[5(a%UR5RS5nSU-nOM[U[RR5(a$UR5nUbURS5nUc:S[R"[R"55R5-nUR R#5nUR R%U[&-5 UR)XR UR*5 UR R#5nXV4$)	z1Format a message and blindly write to self._file.Nr�r�r�rdr&rsFrom MAILER-DAEMON )r�r�r�r�r��find�_mboxMMDFMessage�get_fromr�rVr-r
�get_unixfromr��asctime�gmtimer�r�r�r�r��
_mangle_from_)r r-r��newline�authorr�r�s       r#r��_mboxMMDF._install_messagebsg���	��g�s�#�#��+�+�G�4�G��g�u�%�%�'�*<�*<�X�*F�*F��l�l�5�)�G��"�}�#�H�W�-�	�!�A�+�,�/��#�	���
��!1�
2�
2��%�%�'�.�.�w�7�F� �6�)�I�
�����!6�!6�
7�
7��,�,�.�I��$�%�,�,�W�5�	���.����d�k�k�m�1L�1S�1S�1U�U�I��
�
���!���
�
����W�,�-����7�J�J��0B�0B�C��z�z��� ���}�r&r�Nr�)r�r�r�r�r�rrKrZrXrNr�r�r�r&r#r�r�<s%��"��M�	�B�
.�A�r&r�c�6�\rSrSrSrSrSrS	SjrSrSr	Sr
g)
rizA classic mbox mailbox.TNc�F�[Ul[RXX#5 g)zInitialize an mbox mailbox.N)rr�r�r$rs    r#r$�
mbox.__init__���� +������4�w�7r&c�.�UR[5 gr��r�r�r�s  r#r��mbox._post_message_hook�s��	����r&c��//p!SnURRS5 URR5nURR5nUR	S5(af[U5[U5:a:U(a"UR
U[[5-
5 OUR
U5 UR
U5 SnOQU(d;U(a"UR
U[[5-
5 OUR
U5 OU[:XaSnOSnGM[[[X555Ul[UR5UlURR5Ul
g)�0Generate key-to-(start, stop) table of contents.FrTr�N)r�r�r�r�r�rUrhr��dict�	enumerate�zipr�r�r�)r �starts�stops�last_was_empty�line_posr�s      r#r��mbox._generate_toc�s���B�����
�
�������z�z���(�H��:�:�&�&�(�D����x�(�(��u�:��F��+�%����X��G��%<�=�
���X�.��
�
�h�'�!&���!��L�L��C��L�!8�9��L�L��*�����!%��!&��/�0��3�v�#5�6�7��	��T�Y�Y���� �J�J�O�O�-��r&�r�r�r�r�r�)r�r�r�r�r�rr�r$r�r�r�r�r&r#rrs ��!��M��O�8�
�.r&rc�4�\rSrSrSrS	SjrSrSrSrSr	g)
r	i�zAn MMDF mailbox.Nc�F�[Ul[RXX#5 g)zInitialize an MMDF mailbox.N)rr�r�r$rs    r#r$�
MMDF.__init__�rr&c�4�URS[-5 g)r��Nrr�s  r#r��MMDF._pre_message_hook�s��	���#�g�-�.r&c�B�UR[S-[-5 g)r�r)Nrr�s  r#r��MMDF._post_message_hook�s��	����-�-��7�8r&c��//p!URRS5 SnUnURR5nURR5nUR	S[
-5(a�UR
U5 UnURR5nURR5nUS[
-:Xa"UR
U[[
5-
5 O#U(dUR
U5 O
M�U(dOM�[[[X555Ul[UR5UlURRSS5 URR5Ul
g)rrr)r:N)r�r�r�r�r�r�rhrUrrrr�r�r�)r rr �next_posr"r�s      r#r��MMDF._generate_toc�s)���B���
�
���������H��:�:�&�&�(�D��z�z���(�H����2�W�<�=�=��
�
�h�'��'�H��:�:�.�.�0�D�#�z�z���0�H��2�W�<�<����X��G��%<�=��!����X�.�����#�$��3�v�#5�6�7��	��T�Y�Y�����
�
����1�� �J�J�O�O�-��r&r$r�)
r�r�r�r�r�r$r�r�r�r�r�r&r#r	r	�s���8�
/�9�.r&r	c��\rSrSrSrSSjrSrSrSrSr	S	r
S
rSrSr
S
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrg)ri�zAn MH mailbox.Nc��[RXX#5 [RR	UR
5(d�U(a�[R"UR
S5 [R"[R"[RRUR
S5[R[R-[R-S55 O[UR
5eSUlg)zInitialize an MH instance.r��
.mh_sequencesi�FN)rr$rrr�rr�r�r!r�rw�O_EXCLrxrr�rs    r#r$�MH.__init__�s�������W�5��w�w�~�~�d�j�j�)�)��������U�+������������d�j�j�/�!J�!#���b�i�i�!7�"�+�+�!E�u�N�O�)����4�4���r&c��UR5n[U5S:XaSnO[U5S-n[RRUR[U55n[U5nSnUR(a[U5 URX5 [!U["5(aUR%X5 UR(a[U5 U(d[U5 U$![aA UR(a[U5 [U5 Sn[R"U5 ef=f!UR(a[U5 ff=f!U(d[U5 ff=f)r(rrdFT)rhrU�maxrrr�rr�r�r�r�r�r�r�r�r5r�r
�_dump_sequences)r r-rh�new_keyrr'�closeds       r#r.�MH.add�s���y�y�{���t�9��>��G��$�i�!�m�G��7�7�<�<��
�
�C��L�9���h�'����	��|�|��1�
�
$�	��&�&�w�2��g�y�1�1��(�(��:��<�<� ��O���A�����!%���|�|�$�Q����N�!�F��I�I�h�'�����<�<� ��O� ����A���s7�2E'�C7�!&E�E'�7AE�E�E$�$E'�'E<c�N�[RRUR[	U55n[US5nUR
5 [R"U5 g![a2nUR[R:Xa[SU-5eeSnAff=f)r2r�r�N)rrr�rr�r!r�r5rrr�r=)r r4rr'rs     r#r5�	MH.removes{���w�w�|�|�D�J�J��C��1��		��T�5�!�A�
�G�G�I��I�I�d�O���	��w�w�%�,�,�&��8�3�>�?�?���		�s�A(�(
B$�2-B�B$c���[RRUR[	U55n[US5nUR(a[U5 [R"[R
"U[R[R-55 URX$5 [!U["5(aUR%X!5 UR(a['U5 [)U5 g![a2nUR[R:Xa[SU-5eeSnAff=f!UR(a['U5 ff=f![)U5 f=f)rAr�r�N)rrr�rr�r!rrr�r=r�r�r�rx�O_TRUNCr�r�r
r7r�r�)r r4r-rr'rs      r#rC�MH.__setitem__s����w�w�|�|�D�J�J��C��1��	��T�5�!�A�	��|�|��1�
�
$��������r�{�{�R�Z�Z�'?�@�A��"�"�7�.��g�y�1�1��(�(��6��<�<� ��O���N��#�	��w�w�%�,�,�&��8�3�>�?�?���		���<�<� ��O� ��
��N�s<�D�E)�BE� E)�
E�-D?�?E�E&�&E)�)
E6c�"�UR(a>[[RR	UR
[
U55S5nO>[[RR	UR
[
U55S5nU UR(a[U5 [U5nUR(a[U5 SSS5 UR5R5HupVX;dMWR!U5 M W$![a2nUR[R:Xa[SU-5eeSnAff=f!UR(a[U5 ff=f!,(df   N�=f)rRr�r r�N)r�r!rrr�rr�rrr�r=r�r
r��
get_sequencesrz�add_sequence)r r4r'rr(r��key_lists       r#rK�MH.get_message7s��		��|�|�������d�j�j�#�c�(�;�U�C��������d�j�j�#�c�(�;�T�B����|�|��1�
�
$���l���<�<� ��O��#�0�0�2�8�8�:�N�D���� � ��&�;��
��!�	��w�w�%�,�,�&��8�3�>�?�?���		���<�<� ��O� ��
�Q�sB�AD�=D�F�/E�:F�
E�)-E�E�E=�=F�
Fc���UR(a>[[RR	UR
[
U55S5nO>[[RR	UR
[
U55S5nU UR(a[U5 UR5R[S5UR(a[U5 sSSS5 $![a2nUR[R:Xa[SU-5eeSnAff=f!UR(a[U5 ff=f!,(df   g=f)r+r�r r�Nr�)r�r!rrr�rr�rrr�r=r�r�r�r�r��r r4r'rs    r#rX�MH.get_bytesPs���		��|�|�������d�j�j�#�c�(�;�U�C��������d�j�j�#�c�(�;�T�B����|�|��1�
�
$��v�v�x�'�'���7��<�<� ��O��Q���	��w�w�%�,�,�&��8�3�>�?�?���		���<�<� ��O� ��
�Q�sB�AC8�=C8�E�/#D7�E�8
D4�-D/�/D4�7E�E�
E'c��[[RRUR[U55S5n[U5$![a2nUR[R:Xa[SU-5eeSnAff=f)r_r r�N)r!rrr�rr�rrr�r=r/rFs    r#rN�MH.get_fileesl��	��R�W�W�\�\�$�*�*�c�#�h�7��>�A��!�}����	��w�w�%�,�,�&��8�3�>�?�?���		�s�=A
�

B�-B�Bc�t�[[S[R"UR5555$)rbc3�f# �UH'nUR5(dM[U5v� M) g7fr8)�isdigitr�)�.0rjs  r#�	<genexpr>�MH.iterkeys.<locals>.<genexpr>rs(���:�3I�%�).����&�3�u�:�:�3I�s�1�1)�iterr?rrfrrcs r#rd�MH.iterkeysps/���F�:�2�:�:�d�j�j�3I�:�:�;�	;r&c��[RR[RRUR[U555$rQ)rrr�r�rr�r3s  r#r~�MH.__contains__us,���w�w�~�~�b�g�g�l�l�4�:�:�s�3�x�@�A�Ar&c�F�[[UR555$rT)rUrgrdrcs r#r��
MH.__len__ys���4��
�
��(�)�)r&c��U(aSOSnU(aSS0O0n[RRURS5n[	USU-40UD6$![
a Of=f[	USU-40UD6$![a Of=fMD)Nr��b�encoding�ASCIIr2zr+zx+)rrr�rr!rr�)r �text�mode�kwargsrs     r#�_open_mh_sequences_file�MH._open_mh_sequences_file}s����r�s��*.�*�g�&�B���w�w�|�|�D�J�J��8���
��D�$��+�8��8�8��$�
��
��
��D�$��+�8��8�8��"�
��
��s$�A�
A"�!A"�&A6�6
B�Bc��UR(d1URSS9Ul[UR5 SUlgg)r�F�rZTN)r�r]r�r�rcs r#r��MH.lock�s6���|�|��5�5�5�5�A�D�J��t�z�z�"��D�L�r&c��UR(a4[UR5 [UR5 U?SUlggr�)r�r�r�r�rcs r#r��	MH.unlock�s2���<�<�����$���
�
�#��
� �D�L�	r&c��g)r�Nr�rcs r#r��MH.flush�r\r&c�H�UR(aUR5 ggr`)r�r�rcs r#r��MH.close�s���<�<��K�K�M�r&c��/n[R"UR5Hbn[RR	[RRURU55(dMQUR
U5 Md U$)rc)rrfrrrgr�rhris   r#rk�MH.list_folders�sW�����Z�Z��
�
�+�E��w�w�}�}�R�W�W�\�\�$�*�*�e�<�=�=��
�
�e�$�,��
r&c�|�[[RRURU5UR
SS9$)z+Return an MH instance for the named folder.Frn�rrrr�rrros  r#rq�
MH.get_folder�s-���"�'�'�,�,�t�z�z�6�2��-�-��7�	7r&c�z�[[RRURU5UR
S9$)z:Create a folder and return an MH instance representing it.rtrkros  r#rz�
MH.add_folder�s+���"�'�'�,�,�t�z�z�6�2��-�-�)�	)r&c�f�[RRURU5n[R"U5nUS/:Xa5[R
"[RRUS55 OU/:XaO[
SUR-5e[R"U5 g)r}r2zFolder not empty: %sN)rrr�rrfr5rr�)r rpr�entriess    r#r��MH.remove_folder�sx���w�w�|�|�D�J�J��/���*�*�T�"����'�'��I�I�b�g�g�l�l�4��9�:�
��]��� 6���� C�D�D�
����r&c
� �0n[[RRURS5SSS9nU [
UR55nUH�nURS5upV[
5nUR5HknUR5(aUR[U55 M4SURS55up�UR[X�S-55 Mm [U5Vs/sHnX�;dM
UPM snX'[X5S	:XaX	M�M� SSS5 U$![
a Us$f=fs snf![ a [#S
UR%5-5ef=f!,(df   U$=f)z=Return a name-to-key-list dictionary to define each sequence.r2�rrY)rXr�c3�8# �UHn[U5v� M g7fr8)r�)rM�xs  r#rN�#MH.get_sequences.<locals>.<genexpr>�s���*K�?�a�3�q�6�6�?�s��-rdrz"Invalid sequence specification: %sN)r!rrr�rrr@rhr�rLr.r�r��ranger?rUr�r�rstrip)r �resultsr'�all_keysr�r��contentsrh�specr�r�r4s            r#rA�MH.get_sequences�sa����	��R�W�W�\�\�$�*�*�o�>��g�V�A���4�9�9�;�'�H���5�%)�Z�Z��_�N�D��5�D� (��� 0���<�<�>�>� �H�H�S��Y�/�*K�4�:�:�c�?�*K�K�E� �K�K��e�A�X�(>�?�!1�5;�4�L�%=�L�S�,/�O�&)�L�%=�G�M��7�=�)�Q�.�#�M�/���&���+!�	��N�	��%=��"�5�%�&J�&*�k�k�m�'4�5�5�5��!�Q�&��sM�3D=�E>�B)E�	E�E�E�-E>�=E�E�E�'E;�;E>�>
F
c���URSS9n[R"[R"UR[R
[R-55 UR5H�up4[U5S:XaMURUS-5 SnSn[[U55H_nUS-
U:XaU(dSnURS5 O6U(aSnURU<S	U<35 OURS
U-5 UnMa U(aUR[U5S-5 M�URS5 M� [U5 g![U5 f=f)z:Set sequences using the given name-to-key-list dictionary.Tr`rr�NFrdrw� z %s�
)r]rr�r!r�rxr>rzrUr�r?r@r�r�)r �	sequencesr'r�rh�prev�
completingr4s        r#�
set_sequences�MH.set_sequences�s���(�(�d�(�3��	��H�H�R�W�W�Q�V�V�R�[�[�2�:�:�%=�>�?�'�o�o�/�
���t�9��>������s�
�#���"�
�!�#�d�)�,�C��Q�w�$��)�)-�J��G�G�C�L��#�%*�
����4�� 5�6�������,��D�-���G�G�C��I��,�-��G�G�D�M�)0�,
��N��K��N�s�EE!�!
E.c� �UR5nSn/nUR5H�nUS-
U:wa�URXBS-45 [R"[R
R
UR[U55[R
R
UR[US-555 [R"[R
R
UR[U555 US-
nM� US-Ul
[U5S:XagUR5H*upVUHupxXv;dMX�UR!U5'M! M, UR#U5 g![[4a� [R"[R
R
UR[U55[R
R
UR[US-555 GNf=f)z?Re-name messages to eliminate numbering gaps. Invalidates keys.rrdN)rArdrhrrrr�rr��unlinkrrrr�rUrz�indexr�)	r r�r��changesr4r�rC�oldr�s	         r#�pack�MH.pack�s|���&�&�(�	������=�=�?�C��Q�w�$������A�X��/�B��G�G�B�G�G�L�L����S��X�>��G�G�L�L����S����]�C�E��I�I�b�g�g�l�l�4�:�:�s�3�x�@�A��A�I�D�#�������w�<�1���'�o�o�/�N�D�#����?�47�X�^�^�C�0�1�$�0�	
���9�%��'��8�G��I�I�b�g�g�l�l�4�:�:�s�3�x�@� �g�g�l�l�4�:�:�s�4�!�8�}�E�G�G�s�A<E=�=BH
�H
c�"�UR5nUR5nUR5H5upVXS;aURU5 MX&;dM$XfRU5	M7 UHnXt;dM
U/XG'M UR	U5 g)z;Inspect a new MHMessage and update sequences appropriately.N)rArzrhr�r�)r r-r4�pending_sequences�
all_sequencesr�rC�sequences        r#r7�MH._dump_sequencess���#�1�1�3���*�*�,�
�+�1�1�3�N�D��(�����$����^�^�C�0�1�	4�
*�H��,�+.�%�
�'�*�	
���=�)r&)r�r�r�r�)r�r�r�r�r�r$r.r5rCrKrXrNrdr~r�r]r�r�r�r�rkrqrzr�rAr�r�r7r�r�r&r#rr�sz���
� �D��0�2$�*	�;�
B�*�� �!���
�7�
)�

��8�:&�4*r&rc�~�\rSrSrSr\"1Sk5rSSjrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrg)ri#zAn Rmail-style Babyl mailbox.>�filed�edited�resent�unseen�deleted�answered�	forwardedNc�>�[RXX#5 0Ulg)zInitialize a Babyl mailbox.N)r�r$�_labelsrs    r#r$�Babyl.__init__)s���#�#�D��@���r&c��[RX5n[U[5(aUR	5UR
U'U$)r()r�r.r�r�
get_labelsr�)r r-r4s   r#r.�	Babyl.add.s;�� �$�$�T�3���g�|�,�,� '� 2� 2� 4�D�L�L����
r&c�h�[RX5 XR;aURU	ggr)r�r5r�r3s  r#r5�Babyl.remove5s+���!�!�$�,��,�,�����S�!�r&c��[RXU5 [U[5(aUR	5UR
U'gg)rAN)r�rCr�rr�r�rBs   r#rC�Babyl.__setitem__;s;���&�&�t�'�:��g�|�,�,� '� 2� 2� 4�D�L�L���-r&c��URU5up#URRU5 URR5 [R
"5nURR5nUS[-:XdU(dO'URUR[S55 MV[R
"5nURR5nU[:XdU(dO'URUR[S55 MSX0RR5-
nURRU5nUR[S5n[UR5U-5n	U	RUR55 XR;aU	RURU5 U	$)rR�*** EOOH ***r�)rr�r�r�r�r�r�r�r�r�r�rr��set_visibler��
set_labels)
r r4r�r��original_headersr��visible_headers�n�bodyr(s
          r#rK�Babyl.get_messageAsX���l�l�3�'����
�
������
�
�����:�:�<����:�:�&�&�(�D����0�0����"�"�4�<�<���#?�@�	�
�*�*�,����:�:�&�&�(�D��w��d���!�!�$�,�,�w��">�?�	�
�:�:�?�?�$�$���z�z���q�!���|�|�G�U�+���+�4�4�6��=�>������0�0�2�3��,�,���N�N�4�<�<��,�-��
r&c��URU5up#URRU5 URR5 [R
"5nURR5nUS[-:XdU(dO'URUR[S55 MVURR5nU[:XdU(dOM.UR5nX0RR5-
nURRU5nUR[S5nXh-$)r�r�r�)rr�r�r�r�r�r�r�r�r�r�r�)	r r4r�r�r�r��headersr�r�s	         r#rX�Babyl.get_bytes]s����l�l�3�'����
�
������
�
�����:�:�<����:�:�&�&�(�D����0�0����"�"�4�<�<���#?�@�	�
��:�:�&�&�(�D��w��d���#�+�+�-���:�:�?�?�$�$���z�z���q�!���|�|�G�U�+���~�r&c�t�[R"URU5RS[55$)r_r�)r�r�rXr�r�r3s  r#rN�Babyl.get_filess'���z�z�$�.�.��-�5�5�e�W�E�F�Fr&c���UR5 [5nURR5HnUR	U5 M URUR5 [U5$)z4Return a list of user-defined labels in the mailbox.)rr@r�rtr��difference_update�_special_labelsrg)r �labels�
label_lists   r#r��Babyl.get_labelswsS����������,�,�-�-�/�J��M�M�*�%�0�� � ��!5�!5�6��F�|�r&c�f�//p!URRS5 Sn/nUnURR5nURR5nUS[-:Xa�[U5[U5:a!UR
U[[5-
5 UR
U5 URR5SSRS5Vs/sH*nUR5(dMUR5PM, nnUR
U5 OvUS:Xd
US[-:Xa:[U5[U5:a!UR
U[[5-
5 O)U(d"UR
U[[5-
5 OGMy[[[X555Ul[[U55Ul
[UR5UlURRSS5 URR5Ulgs snf)rrsrdN�,�r:)r�r�r�r�r�rUrhr��striprrrr�r�r�r�)	r rr r.�label_listsr"r��labelr�s	         r#r��Babyl._generate_toc�s����B���
�
�����������H��:�:�&�&�(�D��z�z���(�H��{�W�,�,��u�:��F��+��L�L��C��L�!8�9��
�
�h�'�+/�:�:�+>�+>�+@���+D�+J�+J�4�+P�:�+P�-2�+0�;�;�=�(�%�+�+�-�+P��:��"�"�6�*����D�G�g�,=�$=��u�:��F��+��L�L��C��L�!8�9������X��G��4�5��#�$��3�v�#5�6�7��	��I�k�2�3����T�Y�Y�����
�
����1�� �J�J�O�O�-����:s�H.�<H.c���S[-nUS[--
nUR5nSU5nUSSRU5-[--
nUS-
nURU5 g)r�sBABYL OPTIONS:s
Version: 5c3�@# �UHoR5v� M g7fr8)r�)rMr�s  r#rN�*Babyl._pre_mailbox_hook.<locals>.<genexpr>�s���5�f�U�,�,�.�.�f�s�sLabels:r�r�N)r�r�r�r�)r r'�babylr�s    r#r��Babyl._pre_mailbox_hook�sc��!�G�+��
���(�(�����"��5�f�5��
��d�i�i��/�/�'�9�9��
����	����r&c�4�URS[-5 g)r��Nrr�s  r#r��Babyl._pre_message_hook�s��	����'�!�"r&c�4�UR[S-5 g)r�r�Nrr�s  r#r��Babyl._post_message_hook�s��	����'�!�"r&c��URR5n[U[5(Ga/n/nUR	5H6nXPR
;aUR
U5 M%UR
U5 M8 URRS5 UH/nURRSUR5-5 M1 URRS5 UH2nURRSUR5-S-5 M4 URR[5 O"URRS[-5 [U[RR5(Ga1[R"5n[RR!USS5nUR#U5 UR%S5 UR'5nURRUR)S
[55 US
:XdU(dOMOURRS[-5 [U[5(a�[R"5n	[RR!U	SS5n
U
R#UR+55 U	R'5nURRUR)S
[55 US
:XdU(dOcMOUR%S5 UR'5nURRUR)S
[55 US
:XdU(dOMOUR-S5nU(dGO�URRUR)S
[55 MK[U[.[0[R245(Ga�[U[R25(a,[4R6"S
[8S5 UR;5n[U[05(aUR=U5nUR?S5S-nUS-
S:wa�URRUSUR)S
[55 URRS[-5 URRUSUR)S
[55 URRXSR)S
[55 GO6URRS[-[-5 URRUR)S
[55 GO�[AUS5(Ga�[AUS5(a([4R6"S[8S5 URBnUR5n
S	nUR'5nURES5(a	USSS
-nOURES5(aUSSS
-nURRUR)S
[55 US
:XdU(d>U(a6SnURRS[-5 UR%U
5 OOM�UR'5nU(dO�URES5(a
USS[-nOEURES5(a
USS[-nO"URES
5(aUSS[-nURRU5 M�[GS[IU5-5eURR5nX/4$)z0Write message contents and return (start, stop).�1s, s,,� r�s1,,FrTr�r�r�r�r�s

r:r�Nr�r�r�r�r�r�r�)%r�r�r�rr�r�rhr�r�r�rVr-r
r�r�r�r�r�r�r�r��get_visibler�r�r�r�r�r�r�r�r�r	r�r�r�r�r�)r r-r��special_labelsr�r��orig_buffer�orig_generatorr��
vis_buffer�
vis_generatorr��
body_start�original_pos�
first_passr�s                r#r��Babyl._install_message�s����
�
���!���g�|�,�,��N��F� �+�+�-���0�0�0�"�)�)�%�0��M�M�%�(�	.�

�J�J���T�"�'���
�
� � ������!7�8�(��J�J���U�#����
�
� � ������!6��!=�>� ��J�J���W�%��J�J���V�g�-�.��g�u�}�}�4�4�5�5��*�*�,�K�"�_�_�;�;�K��PQ�R�N��"�"�7�+����Q���"�+�+�-���
�
� � ����e�W�!=�>��5�=���	�

�J�J���_�w�6�7��'�<�0�0��Z�Z�\�
� %��� >� >�z�5�RS� T�
��%�%�g�&9�&9�&;�<��%�.�.�0�D��J�J�$�$�T�\�\�%��%A�B��u�}�D��	�� � ��#��&�/�/�1�D��J�J�$�$�T�\�\�%��%A�B��u�}�D��	�
�$�)�)�$�/�����
�
� � �����w�!?�@�	�
��%��b�k�k�!:�
;�
;��'�2�;�;�/�/��
�
�*�+=�q�B�!�*�*�,���'�3�'�'��/�/��8�� ���g�.��2�J��A�~��#��
�
� � ���*�!5�!=�!=�e�W�!M�N��
�
� � ��7�!:�;��
�
� � ���*�!5�!=�!=�e�W�!M�N��
�
� � ���!5�!=�!=�e�W�!M�N��
�
� � ��7�!:�W�!D�E��
�
� � ������!@�A�
�W�j�
)�
)��w��)�)��
�
�5�6H�!�M�!�.�.��"�<�<�>�L��J���'�'�)���=�=��)�)����9�u�,�D��]�]�5�)�)����9�u�,�D��
�
� � ����e�W�!=�>��5�=��!�%*�
��
�
�(�(��7�)B�C����\�2�����'�'�)�����=�=��)�)����9�w�.�D��]�]�5�)�)����9�w�.�D��]�]�5�)�)����9�w�.�D��
�
� � ��&���6��g��F�G�G��z�z��� ���}�r&)r�r�r�r�r�)r�r�r�r�r��	frozensetr�r$r.r5rCrKrXrNr�r�r�r�r�r�r�r�r&r#rr#sY��'��!B�C�O��
�"�5��8�,G��.�<�#�#�ir&rc�.�\rSrSrSrSSjrSrSrSrg)	r
iz0Message with mailbox-format-specific properties.Nc�Z�[U[RR5(aMUR	[
R"U55 [U[5(aURU5 gg[U[5(a&UR	[R"U55 g[U[5(a&UR	[R"U55 g[U[R5(a&UR	[R"U55 g[US5(a&UR	[R "U55 gUc*[RRR#U5 g[%S['U5-5e)zInitialize a Message instance.r�Nr�)r�rVr-r
�_become_message�copy�deepcopy�_explain_tor�rWr��message_from_stringr��
TextIOWrapper�message_from_filer��message_from_binary_filer$r�r�r,s  r#r$�Message.__init__s ���g�u�}�}�4�4�5�5�� � ����w�!7�8��'�7�+�+��#�#�D�)�,�
���
'�
'�� � ��!9�!9�'�!B�C�
���
%�
%�� � ��!:�!:�7�!C�D�
���!1�!1�
2�
2�� � ��!8�!8��!A�B�
�W�f�
%�
%�� � ��!?�!?��!H�I�
�_��M�M�!�!�*�*�4�0��6��g��F�G�Gr&c��[US/5nURH&nX2;dM
URUURU'M( g)z0Assume the non-format-specific state of message.�_type_specific_attributesN)�getattr�__dict__)r r-�
type_specificr�s    r#r��Message._become_message2s@����)D�b�I�
��$�$�D��(�&-�&6�&6�t�&<��
�
�d�#�%r&c�D�[U[5(ag[S5e)z:Copy format-specific state to message insofar as possible.Nz Cannot convert to specified type)r�r
r�r,s  r#r��Message._explain_to9s���g�w�'�'���>�?�?r&r�r8)	r�r�r�r�r�r$r�r�r�r�r&r#r
r
s��:�H�&=�@r&r
c�l�\rSrSrSr/SQrSSjrSrSrSr	S	r
S
rSrSr
S
rSrSrSrSrg)riAz)Message with Maildir-specific properties.)�_subdir�_info�_dateNc�~�SUlSUl[R"5Ul[RX5 g)z%Initialize a MaildirMessage instance.r�r�N)r�r�r�r�r
r$r,s  r#r$�MaildirMessage.__init__Fs+�������
��Y�Y�[��
�����'r&c��UR$)zReturn 'new' or 'cur'.)r�rcs r#r��MaildirMessage.get_subdirMs���|�|�r&c�D�US:XdUS:XaXlg[SU-5e)zSet subdir to 'new' or 'cur'.r�r�z!subdir must be 'new' or 'cur': %sN)r�r�)r r
s  r#r"�MaildirMessage.set_subdirQs%���U�?�f��o�!�L��@�6�I�J�Jr&c�b�URRS5(aURSS$g)�*Return as a string the flags that are set.r9r:Nr�)r�r�rcs r#r;�MaildirMessage.get_flagsXs*���:�:� � ��&�&��:�:�a�b�>�!�r&c�H�SSR[U55-Ulg)�)Set the given flags and unset all others.r9r�N)r�r?r�)r r=s  r#rA�MaildirMessage.set_flags_s���B�G�G�F�5�M�2�2��
r&c��URSR[UR55[U5-55 g�z.Set the given flag(s) without changing others.r�N�rAr�r@r;�r rCs  r#rG�MaildirMessage.add_flagc�,�����r�w�w�s�4�>�>�#3�4�s�4�y�@�A�Br&c��UR5(aDURSR[UR55[U5-
55 gg)�7Unset the given string flag(s) without changing others.r�N)r;rAr�r@r�s  r#rJ�MaildirMessage.remove_flaggs>���>�>����N�N�2�7�7�3�t�~�~�'7�#8�3�t�9�#D�E�F�r&c��UR$)z<Return delivery date of message, in seconds since the epoch.)r�rcs r#r�MaildirMessage.get_datel����z�z�r&c�`�[U5Ulg![a [SU-5Sef=f)z9Set delivery date of message, in seconds since the epoch.zcan't convert to float: %sN)�floatr�r�r�)r �dates  r#r$�MaildirMessage.set_dateps7��	K��t��D�J���	K��8�4�?�@�d�J�	K�s��-c��UR$)z%Get the message's "info" as a string.)r�rcs r#r��MaildirMessage.get_infowrr&c�h�[U[5(aXlg[S[	U5-5e)z Set the message's "info" string.zinfo must be a string: %sN)r�r�r�r�r�)r r3s  r#r#�MaildirMessage.set_info{s)���d�C� � ��J��7�$�t�*�D�E�Er&c��[U[5(a^URUR55 UR	UR55 UR
UR55 g[U[5(a�[UR55nSU;aURS5 UR5S:XaURS5 SU;aURS5 SU;aURS5 SU;aURS5 URS	[R"UR555 g[U[5(a`[UR55nSU;aURS
5 SU;aURS5 SU;aURS5 gg[U[ 5(aw[UR55nSU;aUR#S
5 SU;aUR#S
5 SU;aUR#S5 SU;aUR#S5 gg[U[$5(ag['S[)U5-5e)z;Copy Maildir-specific state to message insofar as possible.�S�Rr��O�T�D�F�A�
MAILER-DAEMONr��replied�flaggedr�r�r�r��$Cannot convert to specified type: %sN)r�rrAr;r"r�r$rr
r@rGr�r�rr
rBr�	add_labelr
r�r�)r r-r=s   r#r��MaildirMessage._explain_to�s���g�~�.�.����d�n�n�.�/����t���0�1����T�]�]�_�-�
��!1�
2�
2�����(�)�E��e�|�� � ��%���� �E�)�� � ��%��e�|�� � ��%��e�|�� � ��%��e�|�� � ��%����_�d�k�k�$�-�-�/�.J�K�
���
+�
+�����(�)�E��%���$�$�X�.��e�|��$�$�Y�/��e�|��$�$�Y�/��
���
.�
.�����(�)�E��%���!�!�(�+��e�|��!�!�)�,��e�|��!�!�*�-��e�|��!�!�+�.��
���
)�
)���B� ��M�*�+�
+r&)r�r�r�r8)r�r�r�r�r�r�r$r�r"r;rArGrJrr$r�r#r�r�r�r&r#rrAsL��3� =��(��K��3�C�G�
�K��F�)+r&rc�V�\rSrSrSrS/rSSjrSrSSjrSr	S	r
S
rSrSr
S
rg)r
i�z/Message with mbox- or MMDF-specific properties.�_fromNc��URSS5 [U[RR5(a=UR5nUb*UR
S5(aURUSS5 [RX5 g)z'Initialize an mboxMMDFMessage instance.rTNzFrom r�)r�r�rVr-r
rr�r$)r r-rs   r#r$�_mboxMMDFMessage.__init__�sk���
�
�o�t�,��g�u�}�}�4�4�5�5��+�+�-�H��#��(;�(;�G�(D�(D��
�
�h�q�r�l�+�����'r&c��UR$)z Return contents of "From " line.�rrcs r#r�_mboxMMDFMessage.get_from�rr&c��Ub6USLa[R"5nUS[R"U5--
nXlg)z>Set "From " line, formatting and appending time_ if specified.NTr�)r�rr
r)r r�time_s   r#r��_mboxMMDFMessage.set_from�s7������}����
���S�4�<�<��.�.�.�E��
r&c�L�URSS5URSS5-$)r��Statusr��X-Status)rHrcs r#r;�_mboxMMDFMessage.get_flags�s#���x�x��"�%�����R�(@�@�@r&c���[U5nSup#SHnXA;dM
X$-
nURU5 M! SHnXA;dM
X4-
nURU5 M! USR[U55-
nUR	SU5 UR	SU5 g![
a UR
SU5 N2f=f![
a UR
SU5 gf=f)r�)r�r�)rr)rrrr�r(r)N)r@r5r�r?�replace_headerr=�
add_header)r r=�status_flags�
xstatus_flagsrCs     r#rA�_mboxMMDFMessage.set_flags�s����E�
��&,�#���D��}��$�����T�"��$�D��}��%�
����T�"�$�	�������/�/�
�	4�����,�7�	7����
�M�:���	4��O�O�H�l�3�	4���	7��O�O�J�
�6�	7�s$�8B�C�B=�<B=�C�Cc��URSR[UR55[U5-55 gr�r�r�s  r#rG�_mboxMMDFMessage.add_flag�rr&c��SU;dSU;aDURSR[UR55[U5-
55 gg)rr(r)r�Nr�r�s  r#rJ�_mboxMMDFMessage.remove_flag�s@���t��z�T�1��N�N�2�7�7�3�t�~�~�'7�#8�3�t�9�#D�E�F� 2r&c�>�[U[5(a�[UR55nSU;aUR	S5 SU;aURS5 SU;aURS5 SU;aURS5 SU;aURS5 US		US
	SR
UR5R5SS
5nUR[R"[R"US555 g
[U[ 5(a?UR#UR55 UR%UR55 g
[U[&5(ae[UR55nSU;aUR)S5 SU;aUR)S5 SU;aUR)S5 US		US
	g
[U[*5(ae[UR55nSU;aUR-S5 SU;aUR-S5 SU;aUR-S5 US		US
	g
[U[.5(ag
[1S[3U5-5e![[4a g
f=f)zACopy mbox- or MMDF-specific state to message insofar as possible.rr�rrrrrr�statuszx-statusr����Nz%a %b %d %H:%M:%S %Yr�rrr�r�r)r�rr@r;r"rGr�rr�r$�calendar�timegmr��strptimer��
OverflowErrorr
rAr�r
rBrrr
r�r�)r r-r=�
maybe_dates    r#r��_mboxMMDFMessage._explain_to�sH���g�~�.�.�����(�)�E��e�|��"�"�5�)��e�|�� � ��%��e�|�� � ��%��e�|�� � ��%��e�|�� � ��%���!��
�#����$�-�-�/�"7�"7�"9�"�#�">�?�J�
�� � �������z�6L�2N�"O�P���!1�
2�
2����d�n�n�.�/����T�]�]�_�-�
���
+�
+�����(�)�E��%���$�$�X�.��e�|��$�$�Y�/��e�|��$�$�Y�/���!��
�#�
���
.�
.�����(�)�E��%���!�!�(�+��e�|��!�!�)�,��e�|��!�!�*�-���!��
�#�
���
)�
)���B� ��M�*�+�
+��9�
�.�
��
�s�:J	�	J�Jr"r8)r�r�r�r�r�r�r$rr�r;rArGrJr�r�r�r&r#r
r
�s8��9�!(�	��(���A�7�,C�G�
1+r&r
c��\rSrSrSrSrg)riz&Message with mbox-specific properties.r�N�r�r�r�r�r�r�r�r&r#rr���0r&rc�F�\rSrSrSrS/rSSjrSrSrSr	S	r
S
rSrg)
r
i#z$Message with MH-specific properties.�
_sequencesNc�<�/Ul[RX5 g)z!Initialize an MHMessage instance.N)rBr
r$r,s  r#r$�MHMessage.__init__(s���������'r&c� �URSS$)z4Return a list of sequences that include the message.N�rBrcs r#rA�MHMessage.get_sequences-s�����q�!�!r&c�$�[U5Ulg)z3Set the list of sequences that include the message.N)rgrB)r r�s  r#r��MHMessage.set_sequences1s
���y�/��r&c��[U[5(a,XR;aURRU5 gg[	S[U5-5e)z8Add sequence to list of sequences including the message.zsequence type must be str: %sN)r�r�rBrhr�r��r r�s  r#rB�MHMessage.add_sequence5sG���h��$�$����.����&�&�x�0�/��;�d�8�n�L�M�Mr&c�\�URRU5 g![a gf=f)zARemove sequence from the list of sequences including the message.N)rBr5r�rKs  r#�remove_sequence�MHMessage.remove_sequence=s+��	��O�O�"�"�8�,���	��	����
+�+c���[U[5(a�[UR55nSU;aUR	S5 O"UR	S5 URS5 SU;aURS5 SU;aURS5 g
g
[U[5(ar[UR55nSU;aURS5 OURS	5 SU;aURS5 SU;aURS
5 g
g
[U[5(a)UR5HnURU5 M g
[U[5(aI[UR55nSU;aURS5 SU;aURS5 g
g
[U[5(ag
[S[U5-5e)z6Copy MH-specific state to message insofar as possible.r�r�rrrrr�ROrrr�rN)r�rr@rAr"rGr
r
rBrrr
r�r�)r r-r�r�s    r#r��MHMessage._explain_toDs����g�~�.�.��D�.�.�0�1�I��9�$��"�"�5�)��"�"�5�)�� � ��%��I�%�� � ��%��I�%�� � ��%�&�
��!1�
2�
2��D�.�.�0�1�I��y�(�� � ��&�� � ��%��I�%�� � ��%��I�%�� � ��%�&�
���
+�
+� �.�.�0���$�$�X�.�1�
���
.�
.��D�.�.�0�1�I��9�$��!�!�(�+��I�%��!�!�*�-�&�
���
)�
)���B� ��M�*�+�
+r&rFr8)
r�r�r�r�r�r�r$rAr�rBrNr�r�r�r&r#r
r
#s,��.�!-���(�
"�*�N��$+r&r
c�Z�\rSrSrSrSS/rSSjrSrSrS	r	S
r
SrSrS
r
SrSrg)rikz'Message with Babyl-specific properties.r��_visibleNc�Z�/Ul[5Ul[RX5 g)z#Initialize a BabylMessage instance.N)r�r
rUr$r,s  r#r$�BabylMessage.__init__ps ������	��
�����'r&c� �URSS$)z'Return a list of labels on the message.N)r�rcs r#r��BabylMessage.get_labelsvs���|�|�A��r&c�$�[U5Ulg)z&Set the list of labels on the message.N)rgr�)r r�s  r#r��BabylMessage.set_labelszs
���F�|��r&c��[U[5(a,XR;aURRU5 gg[	S[U5-5e)z+Add label to list of labels on the message.zlabel must be a string: %sN)r�r�r�rhr�r��r r�s  r#r�BabylMessage.add_label~sG���e�S�!�!��L�L�(����#�#�E�*�)��8�4��;�F�G�Gr&c�\�URRU5 g![a gf=f)z4Remove label from the list of labels on the message.N)r�r5r�r]s  r#�remove_label�BabylMessage.remove_label�s+��	��L�L����&���	��	�rPc�,�[UR5$)z3Return a Message representation of visible headers.�r
rUrcs r#r��BabylMessage.get_visible�s���t�}�}�%�%r&c�$�[U5Ulg)z2Set the Message representation of visible headers.Nrc)r �visibles  r#r��BabylMessage.set_visible�s����(��
r&c��URR5H5nX;a URRXU5 M(URU	M7 SH,nX;dM
XR;dMXURU'M. g)z9Update and/or sensibly generate a set of visible headers.)�Date�FromzReply-To�To�CC�SubjectN)rUrhr,)r �headers  r#�update_visible�BabylMessage.update_visible�sl���m�m�(�(�*�F��~��
�
�,�,�V�&�\�B��M�M�&�)�	+�
J�F��~�&�
�
�"=�(,���
�
�f�%�Jr&c�J�[U[5(a�[UR55nSU;aUR	S5 O"UR	S5 URS5 SU;dSU;aURS5 SU;aURS5 S	U;aURS
5 gg[U[5(ar[UR55nSU;aURS5 OURS5 S	U;aURS
5 SU;aURS5 gg[U[5(aI[UR55nSU;aURS5 SU;aURS5 gg[U[5(aHURUR55 UR5HnURU5 M g[U[5(ag[S[U5-5e)z9Copy Babyl-specific state to message insofar as possible.r�r�rr�r�r�r�rr�rrRrrrrrN)r�rr@r�r"rGr
r
rBrr�r�rr
r�r�)r r-r�r�s    r#r��BabylMessage._explain_to�s����g�~�.�.�����*�+�F��6�!��"�"�5�)��"�"�5�)�� � ��%��f�$��F�(:�� � ��%��V�#�� � ��%��F�"�� � ��%�#�
��!1�
2�
2�����*�+�F��v�%�� � ��&�� � ��%��F�"�� � ��%��V�#�� � ��%�$�
���
+�
+�����*�+�F��6�!��$�$�X�.��V�#��$�$�Y�/�$�
���
.�
.����� 0� 0� 2�3����*���!�!�%�(�+�
���
)�
)���B� ��M�*�+�
+r&)r�rUr8)r�r�r�r�r�r�r$r�r�rr`r�r�ror�r�r�r&r#rrks>��1�!*�J� 7��(��$�H��&�)�	5�'+r&rc��\rSrSrSrSrg)ri�z&Message with MMDF-specific properties.r�Nr?r�r&r#rr�r@r&rc��\rSrSrSrSSjrSSjrSSjrSSjrSSjr	S	r
S
rSSjrSr
S
rSrSrSrSrSrSr\S5r\"\5rSrg)r/i�zA read-only wrapper of a file.Nc�N�XlUcUR5UlgX lg)zInitialize a _ProxyFile.N)r�r��_pos)r r'�poss   r#r$�_ProxyFile.__init__�s���
��;�����D�I��Ir&c�L�URXRR5$�zRead bytes.)�_readr�r��r �sizes  r#r��_ProxyFile.read�s���z�z�$�
�
���0�0r&c�L�URXRR5$rz)r{r��read1r|s  r#r��_ProxyFile.read1�s���z�z�$�
�
� 0� 0�1�1r&c�L�URXRR5$)zRead a line.)r{r�r�r|s  r#r��_ProxyFile.readline�s���z�z�$�
�
� 3� 3�4�4r&c�v�/nUH0nURU5 UcMU[U5-nUS::dM/ U$ U$)zRead multiple lines.r)rhrU)r �sizehintr�r�s    r#�	readlines�_ProxyFile.readlines�sG�����D��M�M�$���#��C��I�%���q�=���
�
��
r&c#�v# �UR5=n(aUv� UR5=n(aMgg7f)zIterate over lines.N)r�)r r�s  r#rq�_ProxyFile.__iter__�s1����m�m�o�%�d�%��J��m�m�o�%�d�%�%�s�39�9c��UR$)zReturn the position.)rvrcs r#r��_ProxyFile.tell�s���y�y�r&c���US:Xa%URRUR5 URRX5 URR5Ulg)zChange position.rdN�r�r�rvr��r �offset�whences   r#r��_ProxyFile.seek�s?���Q�;��J�J�O�O�D�I�I�&��
�
����'��J�J�O�O�%��	r&c��[US5(a9[URS5(aURR5 U?gg!U?f=f)zClose the file.r�r�N)r�r�r�rcs r#r��_ProxyFile.closesH���4��!�!�
��4�:�:�w�/�/��J�J�$�$�&��J�"��
�J�s�5A�Ac��UcSnURRUR5 U"U5nURR5UlU$)z"Read size bytes using read_method.r�r�)r r}�read_methodr�s    r#r{�_ProxyFile._read	sA���<��D��
�
����	�	�"��T�"���J�J�O�O�%��	��
r&c��U$)z$Context management protocol support.r�rcs r#�	__enter__�_ProxyFile.__enter__s���r&c�$�UR5 gr8)r�)r �excs  r#�__exit__�_ProxyFile.__exit__s���
�
�r&c�6�URR5$r8)r��readablercs r#r��_ProxyFile.readable����z�z�"�"�$�$r&c�6�URR5$r8)r��writablercs r#r��_ProxyFile.writabler�r&c�6�URR5$r8)r��seekablercs r#r��_ProxyFile.seekabler�r&c�6�URR5$r8)r�r�rcs r#r��_ProxyFile.flush"s���z�z���!�!r&c��[US5(dg[URS5(dgURR$)Nr�Tr9F)r�r�r9rcs r#r9�_ProxyFile.closed%s6���t�W�%�%���t�z�z�8�,�,���z�z� � � r&)r�rvr8�r)r�r�r�r�r�r$r�r�r�r�rqr�r�r�r{r�r�r�r�r�r��propertyr9r�rr�r�r�r&r#r/r/�sv��(��1�2�5�	��
�&�����%�%�%�"��!��!�$�L�1�r&r/c�>�\rSrSrSrS
SjrSrSSjrSrSr	S	r
g)ri0z&A read-only wrapper of part of a file.Nc�H�[RXU5 X lX0lg)zInitialize a _PartialFile.N)r/r$�_start�_stop)r r'r�r�s    r#r$�_PartialFile.__init__3s�����D�U�+����
r&c�F�[RU5UR-
$)z*Return the position with respect to start.)r/r�r�rcs r#r��_PartialFile.tell9s�����t�$�t�{�{�2�2r&c��US:XaURUlSnOUS:XaURUlSn[R	XU5 g)z8Change position, possibly with respect to start or stop.rrdr:N)r�rvr�r/r�r�s   r#r��_PartialFile.seek=s>���Q�;����D�I��F�
�q�[��
�
�D�I��F�����f�-r&c��URUR-
nUS::agUbUS:dX:�aUn[RXU5$)z;Read size bytes using read_method, honoring start and stop.rr&)r�rvr/r{)r r}r��	remainings    r#r{�_PartialFile._readGsF���J�J����*�	���>���<�4�!�8�t�'7��D�����K�8�8r&c�,�[US5(aU?gg)Nr�)r�r�rcs r#r��_PartialFile.closePs���4��!�!��
�"r&)rvr�r�)NNr�)r�r�r�r�r�r$r�r�r{r�r�r�r&r#rr0s��0��3�.�9�r&rc���Sn[(a7[R"U[R[R-5 U(a|[URS-5nUR5 [R"URURS-5 Sn[R"UR5 gg![a[nUR
[
R[
R[
R4;a[SUR-5eeSnAff=f![a9nUR
[
R[
R4;aSnAgeSnAff=f![ ["4a3 [R$"URURS-5 Sngf=f![&a9 [R("UR5 [SUR-5ef=f! [(a%[R"U[R*5 U(a#[R("URS-5 e=f)z(Lock file f using lockf and dot locking.Fzlockf: lock unavailable: %sN�.lockTzdot lock unavailable: %s)�fcntl�lockf�LOCK_EX�LOCK_NBrr�EAGAINr�r�rr�r�r�rrr�rrrr�r5�LOCK_UN)r'r��dotlock_doner�pre_locks     r#r�r�Ws����L�%��5�
����A�u�}�}�u�}�}�<�=��
�,�Q�V�V�g�-=�>����� �
1�-��G�G�H�M�M�1�6�6�G�+;�<�#'�L�
�I�I�h�m�m�,�#��
�
��7�7�u�|�|�U�\�\�5�;�;�G�G�,�-J�-.�V�V�.4�5�5���
���
��7�7�u�|�|�U�[�[�9�9����	
��'��8�(��I�I�h�m�m�Q�V�V�g�-=�>�#'�L�(��
#�
1��	�	�(�-�-�(�(�)C�)*���*0�1�1�
1����5��K�K��5�=�=�)���I�I�a�f�f�w�&�'�
�s��H�6C
�H�(D2�80E8�( F>�

D/�AD*�*D/�/H�2
E5�<.E0�*H�/E0�0E5�5H�8AF;�8F>�:F;�;F>�>AH�H�AI!c��[(a%[R"U[R5 [RRURS-5(a$[R"URS-5 gg)z*Unlock file f using lockf and dot locking.r�N)r�r�r�rrr�r�r5�r's r#r�r��sO���u�
���A�u�}�}�%�	�w�w�~�~�a�f�f�w�&�'�'�
�	�	�!�&�&�7�"�#�(r&c��[R"U[R[R-[R-S5n[US5[R
"U5 $![R
"U5 f=f)zCCreate a file if it doesn't exist and open for reading and writing.rvr�)rr!rwr3�O_RDWRr�)r�fds  r#r�r��sP��	����r�z�z�B�I�I�-��	�	�9�5�	A�B���D�%� �
�����������s�
A,�,Bc
��[U<S[[R"55<S[R"5<S[
R"5<35$)zBCreate a temp file based on path and open for reading and writing.re)r�r�r�r�r�rr�)rs r#r�r��s8���d�C��	�	��4D�.4�.@�.@�.B�.0�i�i�k�;�<�<r&c��UR5 [[S5(a%[R"UR	55 gg)z0Ensure changes to file f are physically on disk.�fsyncN)r�r�rr��filenor�s r#r�r��s/���G�G�I��r�7���
��������r&c�:�[U5 UR5 g)z:Close file f, ensuring all changes are physically on disk.N)r�r�r�s r#r�r��s����N��G�G�Ir&c��\rSrSrSrSrg)ri�z"Raised for module-specific errors.r�Nr?r�r&r#rr�s��,r&rc��\rSrSrSrSrg)ri�z:The specified mailbox does not exist and won't be created.r�Nr?r�r&r#rr�s��Dr&rc��\rSrSrSrSrg)ri�z>The specified mailbox is not empty and deletion was requested.r�Nr?r�r&r#rr�s��Hr&rc��\rSrSrSrSrg)ri�z)Another process caused an action to fail.r�Nr?r�r&r#rr����3r&rc��\rSrSrSrSrg)ri�z)A file appears to have an invalid format.r�Nr?r�r&r#rr�r�r&r)T)2r�rr�r8r�rr�r�rV�
email.message�email.generatorr�rL�typesrr��ImportError�__all__r�r�rrr�r�rr	rrr-r
rr
rr
rrr/rr�r�r�r�r�r��	Exceptionrrrrrr�r&r#�<module>r�s���J�
���
�������	�����A��

�*�*�
�
�G�
$��f2�f2�Rg�g�g�TC��C�N@�"�@�F1.�9�1.�h*.�9�*.�Z@*��@*�F
v��v�r"@�e�m�m�#�#�"@�Jj+�W�j+�Zn+�w�n+�b1�"�1�E+��E+�P\+�7�\+�~1�"�1�_2�_2�D$�:�$�N(�T$��<���-�I�-�E��E�I�E�I�4��4�4�%�4��mD���E��s�E6�6F�F

?>