403Webshell
Server IP : 3.111.61.48  /  Your IP : 216.73.216.67
Web Server : Apache
System : Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.2.31
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3.10/test/test_email/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3.10/test/test_email/__pycache__/test_headerregistry.cpython-310.pyc
o

�9j��@snddlZddlZddlZddlmZddlmZddlmZddlm	Z	m
Z
ddlmZddlm
Z
mZddlmZe�ZGd	d
�d
e	�ZGdd�de	�ZGd
d�de�Ze
Gdd�de��Ze
Gdd�de��Ze
Gdd�de��Ze
Gdd�de��Ze
Gdd�de��Ze
Gdd�de��Ze
Gdd�de��ZGdd�de	�ZGdd �d e�Zed!kr�e� �dSdS)"�N)�errors��policy)�Message)�
TestEmailBase�parameterize)�headerregistry)�Address�Group)�	ALWAYS_EQc@s`eZdZdd�Zdd�ZGdd�d�Zdd�ZGd	d
�d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestHeaderRegistrycCs2t��}|dd�}|�|tj�|�|tj�dS�N�foobar�test�r�HeaderRegistry�assertIsInstance�
BaseHeader�UnstructuredHeader��self�factory�h�r�:/usr/lib/python3.10/test/test_email/test_headerregistry.py� test_arbitrary_name_unstructureds
z3TestHeaderRegistry.test_arbitrary_name_unstructuredcCs@t��}|�d|j�|dd�}|�|tj�|�|tj�dS)N�Subjectr)rr�assertNotIn�registryrr�UniqueUnstructuredHeaderrrrr�test_name_case_ignoreds

z)TestHeaderRegistry.test_name_case_ignoredc@seZdZdd�ZdS)zTestHeaderRegistry.FooBasecOsdS�Nr)r�args�kwrrr�__init__!sz#TestHeaderRegistry.FooBase.__init__N)�__name__�
__module__�__qualname__r$rrrr�FooBase �r(cCs8tj|jd�}|dd�}|�||j�|�|tj�dS)N)�
base_classrr)rrr(rrrrrr� test_override_default_base_class$�
z3TestHeaderRegistry.test_override_default_base_classc@seZdZejjZdS)zTestHeaderRegistry.FooDefaultN)r%r&r'rr�parserrrr�
FooDefault*r)r.cCs8tj|jd�}|dd�}|�|tj�|�||j�dS)N��
default_classrr)rrr.rrrrrr�test_override_default_class-r,z.TestHeaderRegistry.test_override_default_classcCs8tj|jd�}|dd�}|�|tj�|�|tj�dS)Nr/�subjectr)rrr.rrrrrrr�2test_override_default_class_only_overrides_default3r,zETestHeaderRegistry.test_override_default_class_only_overrides_defaultcCs6tjdd�}|dd�}|�|tj�|�|tj�dS)NF)�use_default_mapr2rrrrrr�test_dont_use_default_map9s
z,TestHeaderRegistry.test_dont_use_default_mapcCsft��}|dd�}|�dtj�|dd�}|�|tj�|�|tj�|�|tj�|�|tj�dSr
)rr�map_to_typerrrr)rr�h1�h2rrr�test_map_to_type?s

z#TestHeaderRegistry.test_map_to_typeN)r%r&r'rr r(r+r.r1r3r5r9rrrrrsrc@seZdZe��Zdd�ZdS)�TestHeaderBasecCs|�||�Sr!)r)r�name�valuerrr�make_headerNszTestHeaderBase.make_headerN)r%r&r'rrrr=rrrrr:Jsr:c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestBaseHeaderFeaturescCs8|�dd�}|�|t�|�|d�|�t|�d�dS�Nr2�this is a test)r=r�str�assertEqual�rrrrr�test_strTszTestBaseHeaderFeatures.test_strcCs$|�dd�}|�|dd�d�dS)Nr2r@���is)r=rBrCrrr�test_substrZsz"TestBaseHeaderFeatures.test_substrcCs|�dd�}|�|jd�dSr?)r=rBr;rCrrr�
test_has_name^sz$TestBaseHeaderFeatures.test_has_namecCsH|�dd�}|�t��t||d�Wd�dS1swYdS)Nr2r@�foo)r=�assertRaises�AttributeError�setattr)r�attrrrrr�
_test_attr_robs"�z$TestBaseHeaderFeatures._test_attr_rocC�|�d�dS)Nr;�rO�rrrr�test_name_read_onlyg�z*TestBaseHeaderFeatures.test_name_read_onlycCrP)N�defectsrQrRrrr�test_defects_read_onlyjrTz-TestBaseHeaderFeatures.test_defects_read_onlycCs\|�dd�}|�t|j�d�|�|jt�|�dd�}|�t|j�d�|�|jt�dS)Nr2r@r�date��)r=rB�lenrUr�tuplerCrrr�test_defects_is_tuplemsz,TestBaseHeaderFeatures.test_defects_is_tupleN)
r%r&r'rDrHrIrOrSrVr\rrrrr>Rsr>c@s2eZdZdd�Zddgdfddgdfdd	d
�ZdS)�TestUnstructuredHeaderc	Gs�t|�}|dkr|dng}d|rdnd}||dkr|dn|d}|�d|�}|�||�|�|j|�|�|jtjd�|�dS)	NrzSubject:� rXrY�
rr)rZr=rB�assertDefectsEqualrU�foldr�default)	r�source�decodedr"�lrU�header�foldedrrrr�string_as_value�sz&TestUnstructuredHeader.string_as_valuez=?utf-8?q?this_is_a_test?=r@z!=?gb2312?b?1eLKx9bQzsSy4srUo6E=?=u这是中文测试!z(=?utf-8?b?6L+Z5piv5Lit5paH5rWL6K+V77yB?=)z=?utf-8?q?=C3=89ric?=�Éric)z$The =?utf-8?q?=C3=89ric=2C?= Himself�The Éric, Himself)�rfc2047_simple_quopri�rfc2047_gb2312_base64�rfc2047_simple_nonascii_quopri� rfc2047_quopri_with_regular_textN)r%r&r'rh�
string_paramsrrrrr]�s��
�r]c	@s�eZdZdZejdd�Ze�e�Zejdddddd	ed
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�ZdS)�TestDateHeaderzSun, 23 Sep 2001 20:10:55 -0700i����)�hoursi��	���
�7)�tzinfocCsR|�d|j�}|�||j�|�|j|j�|�|j��|j�|�|jd�dS�NrWr)r=�
datestringrB�datetime�dt�	utcoffsetrUrCrrr�test_parse_date�s
zTestDateHeader.test_parse_datecCs>|�d|j�}|�||j�|�|j|j�|�|jd�dSrx)r=r{rBryrzrUrCrrr�test_set_from_datetime�sz%TestDateHeader.test_set_from_datetimecCs<|�d|j�}|�|tj�|�|jd�|�|jd�dS)NrWrYr)r=ryrr�UniqueDateHeaderrB�	max_countrUrCrrr�test_date_header_properties��z*TestDateHeader.test_date_header_propertiescCs<|�d|j�}|�|tj�|�|jd�|�|jd�dS)Nzresent-dater)r=ryrr�
DateHeaderrBr�rUrCrrr�"test_resent_date_header_properties�r�z1TestDateHeader.test_resent_date_header_propertiescCs6|�dd�}|�t|j�d�|�|jdtj�dS)NrWrXrYr)r=rBrZrUrr�HeaderMissingRequiredValuerCrrr�test_no_value_is_defect�sz&TestDateHeader.test_no_value_is_defectcC�Rd}|�d|�}|�||�|�|j�|�t|j�d�|�|jdtj�dS)NzNot a date headerrWrYr�	r=rB�assertIsNonerzrZrUrr�InvalidDateDefect�r�srrrr�test_invalid_date_format��z'TestDateHeader.test_invalid_date_formatcCr�)NzTue, 06 Jun 2017 27:39:33 +0600rWrYrr�r�rrr�test_invalid_date_value�r�z&TestDateHeader.test_invalid_date_valuecCsD|�d|j�}|�t��d|_Wd�dS1swYdS)NrWrJ)r=ryrKrLrzrCrrr�test_datetime_read_only�s"�z&TestDateHeader.test_datetime_read_onlycCs@ttjd�}|j|d<|�|d|j�|�|dj|j�dS)Nr�Date)rrrbr{rBryrz)r�mrrr�"test_set_date_header_from_datetime�s
z1TestDateHeader.test_set_date_header_from_datetimeN)r%r&r'ryrz�	timedeltar|�timezone�tzr{r}r~r�r�r�r�r�r�r�rrrrrp�s
rpc@s�eZdZdd�Ziddddddd	igd
f�ddddddd	igd
f�d
d
ddddd	if�dddddiejgf�dddddiejgf�dddddiejgf�dddddiejgf�dd�dd�dd�dd�ddddddd if�d!d"ddddd#if�d$d%ddddd&if�d'd(ddddd igd)f�d*d+dddd,digd-f�d.d/dddd,d0if�id1d2dddd,d3if�d4d5dddd6d6d7�ejgd8f�d9d:d;d<d=d>d?igd@f�dAdBdCdDdEdFdGdHdI�gdJdKf�dLdMdCdDdEdFdGdHdNdO�gdMdPf�dQdRdCdDdEdSdTif�dUdVdCdDdEdSdWif�dXdYdCdDdEdSdZigdYf�d[d\�d]��d	d^�d_d`dadbdcdd�ejgd8dedff�dgdhdCdDdEdSdiigdjf�dkdldCdDdEdadmigdnf�dodp�d]��d	d^�dddd	dqdr�ejgdsdtf�dudvddddd	igd
f�dwdxddddSdyigdzf�d{d|ddddSd}iejgd~df�d�d�dddd	d�dr�ejgd~d�d�f�d�d�d�d�d�dSd�iejgd~d�f��d�d�d�d�dSd�igd�fd�ddddSd�iejgd�fd�ddddSd�iejgd~d�fd�ddddSd�iejgd~d�fd�ddddSd�iejgd�d�fd�ddddSd�igd�fd�ddddd�iejgd�d�fd�ddddd�iejgd�d�fd�ddddd�igd�d�fd�d�d�d�dSd�iejgd�fd�d�d�d�dSd�iejgd8d�fd�d�d�d�dSd�iejgd~d�fd�d�d�d�dSd�igd�d�fd��
�Z	d�S)��TestContentTypeHeaderc
Gs$t|�}|dkr|dni}|dkr|dng}|dkr&|dtur&|dn|}	|r,dnd}
|dkr6|dn|
|	d}|�d|�}|�|j|�|�|j|�|�|j|�|�|j|�|�t	��
d	|jd
<Wd�n1sswY|�
|j|�|�||	�|�|jt
jd�|�dS)NrrY�zContent-Type: rX�r_zContent-Type�xyz�abcr)rZ�DITTOr=rB�content_type�maintype�subtype�paramsrK�	TypeErrorr`rUrarrb)
rrcr�r�r�r"re�parmdictrUrdrfrgrrrr�content_type_as_value�s" �z+TestContentTypeHeader.content_type_as_value�
RFC_2045_1z)text/plain; charset=us-ascii (Plain text)�
text/plain�text�plain�charsetzus-asciiztext/plain; charset="us-ascii"�
RFC_2045_2ztext/plain; charset=us-ascii�
RFC_2045_3�no_subtype_in_content_typeztext/�no_slash_in_content_typerJ�junk_text_in_content_typez<crazy "stuff">� too_many_slashes_in_content_typezimage/jpeg/foo�unknown_content_type)�	bad/namesr��bad�names�mixed_case_content_type)z
ImAge/JPeg�
image/jpeg�image�jpeg�spaces_in_content_type)z  text  /  plain  r�r�r��cfws_in_content_type)z"(foo) text (bar)/(baz)plain(stuff)r�r�r��
charset_paramztext/plain; charset="utf-8"zutf-8�capitalized_charsetztext/plain; charset="US-ASCII"zUS-ASCII�unknown_charsetztext/plain; charset="fOo"�fOo�*capitalized_charset_param_name_and_commentz*text/plain; (interjection) Charset="utf-8"ztext/plain; Charset="utf-8"�unquoted_param_valueztext/plain; title=foo�titleztext/plain; title="foo"�param_value_with_tspecialsz!text/plain; title="(bar)foo blue"z
(bar)foo blue�"param_with_extra_quoted_whitespacez0text/plain; title="  a     loong  way 	 home   "z  a     loong  way 	 home   �
bad_paramszblarg; baz; boorX)�baz�boor��spaces_around_param_equalsz0Multipart/mixed; boundary = "CPIMSSMTPC06p5f3tG"zmultipart/mixed�	multipart�mixed�boundary�CPIMSSMTPC06p5f3tGz.Multipart/mixed; boundary="CPIMSSMTPC06p5f3tG"�spaces_around_semiszPimage/jpeg; name="wibble.JPG" ; x-mac-type="4A504547" ; x-mac-creator="474B4F4E"r�r�r�z
wibble.JPG�4A504547�474B4F4E)r;�
x-mac-type�
x-mac-creatorzNimage/jpeg; name="wibble.JPG"; x-mac-type="4A504547"; x-mac-creator="474B4F4E"z^Content-Type: image/jpeg; name="wibble.JPG"; x-mac-type="4A504547";
 x-mac-creator="474B4F4E"
�lots_of_mime_paramszmimage/jpeg; name="wibble.JPG"; x-mac-type="4A504547"; x-mac-creator="474B4F4E"; x-extrastuff="make it longer"zmake it longer)r;r�r�zx-extrastuffz}Content-Type: image/jpeg; name="wibble.JPG"; x-mac-type="4A504547";
 x-mac-creator="474B4F4E"; x-extrastuff="make it longer"
�semis_inside_quotesz$image/jpeg; name="Jim&amp;&amp;Jill"r;zJim&amp;&amp;Jill�single_quotes_inside_quotesz!image/jpeg; name="Jim 'Bob' Jill"zJim 'Bob' Jill�double_quotes_inside_quotesz#image/jpeg; name="Jim \"Bob\" Jill"zJim "Bob" Jill�non_ascii_in_paramsufoo§/bar; b§r=two; baz=thr§ezlatin-1�surrogateescapeu
foo�/barufoo��bar�twouthr�e)ub�rr�u&foo�/bar; b�r="two"; baz="thr�e"uVContent-Type: =?unknown-8bit?q?foo=A7?=/bar; b�r="two";
 baz*=unknown-8bit''thr%A7e
�rfc2231_segmented_normal_valuesz(image/jpeg; name*0="abc"; name*1=".html"zabc.htmlzimage/jpeg; name="abc.html"�quotes_inside_rfc2231_valuez.image/jpeg; bar*0="baz\"foobar"; bar*1="\"baz"zbaz"foobar"bazz"image/jpeg; bar="baz\"foobar\"baz"�non_ascii_rfc2231_valueuGtext/plain; charset=us-ascii; title*=us-ascii'en'This%20is%20not%20f§nuThis is not f�n)r�r�u9text/plain; charset="us-ascii"; title="This is not f�n"z\Content-Type: text/plain; charset="us-ascii";
 title*=unknown-8bit''This%20is%20not%20f%A7n
�rfc2231_encoded_charsetz-text/plain; charset*=ansi-x3.4-1968''us-ascii� rfc2231_encoded_no_double_quotesz\text/plain;	name*0*=''This%20is%20;	name*1*=%2A%2A%2Afun%2A%2A%2A%20;	name*2="is it not.pdf"zThis is ***fun*** is it not.pdfz2text/plain; name="This is ***fun*** is it not.pdf"�"rfc2231_encoded_with_double_quoteszvtext/plain;	name*0*="us-ascii''This%20is%20even%20more%20";	name*1*="%2A%2A%2Afun%2A%2A%2A%20";	name*2="is it not.pdf"z)This is even more ***fun*** is it not.pdfr�z<text/plain; name="This is even more ***fun*** is it not.pdf"�)rfc2231_single_quote_inside_double_quotesz�text/plain; charset=us-ascii;	title*0*="us-ascii'en'This%20is%20really%20";	title*1*="%2A%2A%2Afun%2A%2A%2A%20";	title*2="isn't it!"z"This is really ***fun*** isn't it!zJtext/plain; charset="us-ascii"; title="This is really ***fun*** isn't it!"zZContent-Type: text/plain; charset="us-ascii";
 title="This is really ***fun*** isn't it!"
�3rfc2231_single_quote_in_value_with_charset_and_langzHapplication/x-foo;	name*0*="us-ascii'en-us'Frank's"; name*1*=" Document"zapplication/x-foo�applicationzx-foozFrank's Documentz*application/x-foo; name="Frank's Document"zFapplication/x-foo;	name*0="us-ascii'en-us'Frank's"; name*1=" Document"zus-ascii'en-us'Frank's Documentz9application/x-foo; name="us-ascii'en-us'Frank's Document"z/text/plain; NAME*0*=english_is_the_default.htmlzenglish_is_the_default.htmlz.text/plain; NAME="english_is_the_default.html"zjtext/plain;	name*0*="''This%20is%20even%20more%20";	name*1*="%2A%2A%2Afun%2A%2A%2A%20";	name*2="is it.pdf"z%This is even more ***fun*** is it.pdfz8text/plain; name="This is even more ***fun*** is it.pdf"zitext/plain;	name*0*="''This%20is%20even%20more%20";	name*1="%2A%2A%2Afun%2A%2A%2A%20";	name*2="is it.pdf"z3This is even more %2A%2A%2Afun%2A%2A%2A%20is it.pdfzFtext/plain; name="This is even more %2A%2A%2Afun%2A%2A%2A%20is it.pdf"zVContent-Type: text/plain;
 name="This is even more %2A%2A%2Afun%2A%2A%2A%20is it.pdf"
z1text/plain; name*0*=bogus'xx'ascii_is_the_default�ascii_is_the_defaultz'text/plain; name="ascii_is_the_default"z*text/plain; charset*=ascii''utf-8%F1%F2%F3uutf-8���u$text/plain; charset="utf-8���"z@Content-Type: text/plain; charset*=unknown-8bit''utf-8%F1%F2%F3
z*text/plain; charset*=ascii''utf-8%E2%80%9Duutf-8”utext/plain; charset="utf-8”"z@Content-Type: text/plain; charset*=unknown-8bit''utf-8%E2%80%9D
u-text/plain; charset*=utf-8”''utf-8%E2%80%9Dz9Content-Type: text/plain; charset*=utf-8''utf-8%E2%80%9D
zUapplication/x-foo;	name*0*="us-ascii'en-us'My";	name*1=" Document";	name*2=" For You"zMy Document For Youz-application/x-foo; name="My Document For You"zTapplication/x-foo;	name*0=us-ascii'en-us'My;	name*1*=" Document";	name*2*=" For You"zVapplication/x-foo;	name*0="us-ascii'en-us'My";	name*1*=" Document";	name*2*=" For You"z"us-ascii'en-us'My Document For Youz<application/x-foo; name="us-ascii'en-us'My Document For You"zrapplication/x-foo;	name="with spaceswith spaceswith spaceswith spaceswith spaceswith spaceswith spaceswith spaces"zXwith spaceswith spaceswith spaceswith spaceswith spaceswith spaceswith spaceswith spaceszrapplication/x-foo; name="with spaceswith spaceswith spaceswith spaceswith spaceswith spaceswith spaceswith spaces"z�Content-Type: application/x-foo;
 name*0*=us-ascii''with%20spaceswith%20spaceswith%20spaceswith%20spaceswith;
 name*1*=%20spaceswith%20spaceswith%20spaceswith%20spaces
)
�)rfc2231_single_quote_in_non_encoded_value�rfc2231_no_language_or_charset�rfc2231_encoded_no_charset�rfc2231_partly_encoded�rfc2231_partly_encoded_2�(rfc2231_unknown_charset_treated_as_ascii�0rfc2231_bad_character_in_charset_parameter_value�8rfc2231_utf8_in_supposedly_ascii_charset_parameter_value�6rfc2231_nonascii_in_charset_of_charset_parameter_value�'rfc2231_encoded_then_unencoded_segments�'rfc2231_unencoded_then_encoded_segments�.rfc2231_quoted_unencoded_then_encoded_segments�+rfc2231_folded_segments_correctly_formattedN)
r%r&r'r�r�InvalidHeaderDefect�encode�decode�UndecodableBytesDefect�content_type_paramsrrrrr��s���
���� ��(��0��8��F�N�T�Z�d��k��r��y��
���������"
���*���4����E����Y���`���g���p
�
�����������
�����(����2����@
����M
����]
����i��

�
���
�
��
�
�
�������r�c@s8eZdZdd�Zdddejgddfddejgfd�Zd	S)
�TestContentTransferEncodingc
Gs�t|�}|dkr|dng}|dkr|dtur|dn|}|r"dnd}|dkr,|dn||d}|�d|�}	|�|	j|�|�|	j|�|�|	|�|�|	jtj	d�|�dS)	NrrYzContent-Transfer-Encoding: rXr�r_zContent-Transfer-Encodingr)
rZr�r=rB�cter`rUrarrb)
rrcr�r"rerUrdrfrgrrrr�cte_as_value&s z(TestContentTransferEncoding.cte_as_value)�base64r�rX�7bitzContent-Transfer-Encoding:
z7bit and a bunch more)�
RFC_2183_1�no_value�junk_after_cteN)r%r&r'r�rr�r��
cte_paramsrrrrr�#s�	�
�r�c@s�eZdZdd�Zdddddd�gd	d
fddiejgdd
fddiejgfddddiejgfddddiejgdddfddddiejgddfd�ZdS)�TestContentDispositioncGs�t|�}|dkr|dni}|dkr|dng}|dkr&|dtur&|dn|}|r,dnd}|dkr6|dn||d}	|�d|�}
|�|
j|�|�|
j|�|�|
j|�|�|
|�|�|
jt	j
d	�|	�dS)
NrrYr�zContent-Disposition: rXr�r_zContent-Dispositionr)rZr�r=rB�content_dispositionr�r`rUrarrb)rrcr�r"rer�rUrdrfrgrrrr�content_disp_as_valueNs z,TestContentDisposition.content_disp_as_value)�inliner�zWattachment; filename=genome.jpeg;  modification-date="Wed, 12 Feb 1997 16:29:51 -0500";�
attachmentzgenome.jpegzWed, 12 Feb 1997 16:29:51 -0500)�filenamezmodification-datezWattachment; filename="genome.jpeg"; modification-date="Wed, 12 Feb 1997 16:29:51 -0500"znContent-Disposition: attachment; filename="genome.jpeg";
 modification-date="Wed, 12 Feb 1997 16:29:51 -0500"
rXNzContent-Disposition:
zab./kzab.zab./k; filename="foo"rrJzaattachment; filename="=?UTF-8?Q?Schulbesuchsbest=C3=A4ttigung=2E?=               =?UTF-8?Q?pdf?="uSchulbesuchsbestättigung.pdfr�u4attachment; filename="Schulbesuchsbestättigung.pdf"zUContent-Disposition: attachment;
 filename*=utf-8''Schulbesuchsbest%C3%A4ttigung.pdf
z<attachment; filename="File =?utf-8?q?Name?= With Spaces.pdf"zFile Name With Spaces.pdfz0attachment; filename="File Name With Spaces.pdf"zFContent-Disposition: attachment; filename="File Name With Spaces.pdf"
)r��
RFC_2183_2r��
invalid_value�invalid_value_with_params�+invalid_parameter_value_with_fws_between_ew�'parameter_value_with_fws_between_tokens)r%r&r'r�rr�r��content_disp_paramsrrrrr�KsX���	��
��
�r�c@seZdZdd�Zdddddgfdddddgfdddddgfdddddgfd	d	d	ddgfd
d
d
ddgfdddddgfd
d
dddgfdddddejgfdddddejgfdddddejgfdddddejgfdddddejgfdddddejgfdddddejgfd�ZdS)�TestMIMEVersionHeadercCs~|�d|�}|�||�|�|j|�|�|j|�|�|j|�|�|j|�|r.d|}|�|jtj	d�d|d�dS)NzMIME-Versionr^rz
MIME-Version:r_)
r=rB�version�major�minorr`rUrarrb)rrcrdr	r
rrUrrrr�version_string_as_MIME_Version�s
�z4TestMIMEVersionHeader.version_string_as_MIME_Versionz1.0rYrz1.0 (produced by MetaSend Vx.x)z(produced by MetaSend Vx.x) 1.0z1.(produced by MetaSend Vx.x)0z1.1z2.1r�z1 .0z  1.0  z	1.0 <abc>z	<abc> 1.0Nz1.<abc>0z1..0z2.xrJrX)r�r�r��
RFC_2045_4�1_1�2_1�
whitespace�#leading_trailing_whitespace_ignored�non_comment_garbage_after�non_comment_garbage_before�non_comment_garbage_inside�two_periods�2_xrJ�missing)r%r&r'rrr�r��version_string_paramsrrrrr�s��	�	�	��	�	�	�
�
�	�	�	�	�	�
�rc@s�eZdZdejgddddddfdgddddddfdgddddddfd	gd	dd
dddfdgd
dddddfdgddddddfdejgddddddfdejgdddddddfdgddddddfd ejgd!d"dd"d#ddfd$ejgd%d&dd&d'ddfd(ejgd)dd)d*ddfd+gd,d-d.d/ddfd0gd1d2d.d/ddfd3ejejgd,d-d.d/ddfd4�Zd5d6�Zd7d8�Zd9d:�Z	d;d<�Z
d=d>�Zd?d@�ZdAdB�Z
dCdD�ZdEdF�ZdGdH�ZdIdJ�ZdKdL�ZdMdN�ZdS)O�TestAddressHeader�<>rXNzzippy@pinhead.com�zippyzpinhead.comz%Zaphrod Beblebrux <zippy@pinhead.com>zZaphrod Beblebruxz)Zaphrod Beblebrux <"foo bar"@pinhead.com>z"foo bar"@pinhead.com�foo barz'"A \(Special\) Person" <person@dom.ain>z%"A (Special) Person" <person@dom.ain>zA (Special) Personzperson@dom.ain�personzdom.ainz."Arthur \\Backslash\\ Foobar" <person@dom.ain>zArthur \Backslash\ FoobarzJohn X. Doe <jxd@example.com>z"John X. Doe" <jxd@example.com>zJohn X. Doezjxd@example.com�jxd�example.comz""example" example"@example.comr�z"example example"@example.comzexample examplez!"\"example\" example"@example.comz"example" examplez#"\\"example\\" example"@example.comrEz#"\\example\\\\ example"@example.comz\example\\ examplezmerwok  wok  @example.comr�z"merwok wok"@example.comz
merwok wokzmerwok. wok .  wok@example.comzmerwok.wok.wok@example.comzmerwok.wok.wokz'=?utf-8?q?=C3=89ric?= <foo@example.com>uÉric <foo@example.com>ri�foo@example.comrJz6The =?utf-8?q?=C3=89ric=2C?= Himself <foo@example.com>u&"The Éric, Himself" <foo@example.com>rjz)"=?utf-8?q?=C3=89ric?=" <foo@example.com>)�empty�address_only�name_and_address�quoted_local_part�quoted_parens_in_name�quoted_backslashes_in_name�
name_with_dot�quoted_strings_in_local_part�$escaped_quoted_strings_in_local_part�escaped_escapes_in_local_part�'spaces_in_unquoted_local_part_collapsed�(spaces_around_dots_in_local_part_removed�rfc2047_atom_is_decoded�!rfc2047_atom_in_phrase_is_decoded�(rfc2047_atom_in_quoted_string_is_decodedc	Cs�|�d|�}	|�|	|�|�|	j|�|	j}
|�t|
�|�|�t|	j�d�|�|
gt|	jdj	��|�|
gt|	j	��|�|
j
|�|�|
j|�|�|
j|�|�|
j
|�dS)N�senderrYr)r=rBr`rU�addressrArZ�groups�list�	addresses�display_name�	addr_spec�username�domain)rrcrUrdr5r6r7r8�commentr�arrr�example_as_address�sz$TestAddressHeader.example_as_addressc	Cs�d�|�}|rd�|�nd}	|�d|�}
|�|
|	�|�|
j|�|�|
jdj|
j�|�t|
j�d�|�t|
j�d�|
jd}|�t|�|�|�|j	|�|�|j
|�|�|j|�|�|j|�dS)Nzfoo: {};�foo:;�torrY)
�formatr=rBr`rUr2r4rZrAr5r6r7r8)rrcrUrdr5r6r7r8r9�gdecodedrr:rrr�example_as_group�s

z"TestAddressHeader.example_as_groupcCs�d}|�d|�}|�||�|�t|j�d�|�t|j�d�td�D]}|�|j|jd|j|�q$|�t|jd�d�|�t|jd�d�|�t|jd�d	�|�|jdjd
�dS)NzTFred <dinsdale@python.org>, foo@example.com, "Harry W. Hastings" <hasty@example.com>r=r�rzFred <dinsdale@python.org>rYr r�z'"Harry W. Hastings" <hasty@example.com>zHarry W. Hastings)r=rBrZr2r4�rangerAr5)rr<r�irrr�test_simple_address_lists ��z*TestAddressHeader.test_simple_address_listcCsjt|j���}dd�dd�|dd�D��ddd�dd�|dd�D��d	d�d
d�|dd�D��}dd�dd�|dd�D��ddd�d
d�|dd�D��dd�dd�|dd�D��}|�d|�}|�|�d�|�d��|�||�|�t|j�dt|�d�|�|jdj	d�|�|jdj	d�|�|jdj	d�|�t|j
�t|��td�D]!}|�|j|dj	�|�t
|j|dj
d�||d�q�tddt|�d�D]}|�|j|j	�|�t
|j|j
d�||dd�q�tt|��D] }|�t
|j
|�||d�|�|j
|j||d��qdS)Nz dummy list:;, another: (empty);,z, cS�g|]}|d�qS�rr��.0�xrrr�
<listcomp>�z?TestAddressHeader.test_complex_address_list.<locals>.<listcomp>�z"A \"list\"": cSrDrErrFrrrrIrJ�z;,cSrDrErrFrrrrIrJzdummy list:;, another:;, cSrD�r�rrFrrrrIrJcSrDrMrrFrrrrIrJz;, cSrDrMrrFrrrrIrJr=�,rFrz
dummy listrY�anotherzA "list"r�)r3�example_params�values�joinr=rB�splitrZr2r5r4rAr�rAr6)r�examplesrc�expectedrrBrrr�test_complex_address_listsZ������������** �z+TestAddressHeader.test_complex_address_listcC�B|�dd�}|�t��d|_Wd�dS1swYdS�Nr0zabc@xyz.comrJ)r=rKrLr1rCrrr�test_address_read_only3�"�z(TestAddressHeader.test_address_read_onlycCrWrX)r=rKrLr4rCrrr�test_addresses_read_only8rZz*TestAddressHeader.test_addresses_read_onlycCrWrX)r=rKrLr2rCrrr�test_groups_read_only=rZz'TestAddressHeader.test_groups_read_onlycC�4d}|�d|�}|�|jt�|�|jdt�dS�Nzme <who@example.com>r=r)r=rr4r[r	�rrcrrrr�test_addresses_typesB�z&TestAddressHeader.test_addresses_typescCr]r^)r=rr2r[r
r_rrr�test_groups_typesHraz#TestAddressHeader.test_groups_typescCs$|�dtddd��}|�|d�dS)Nr=�merJrzme <foo@example.com>�r=r	rBrCrrr�test_set_from_AddressNsz'TestAddressHeader.test_set_from_AddresscCs0|�dtddd�tddd�g�}|�|d�dS)Nr=rcrJr�your�z+me <foo@example.com>, you <bar@example.com>rdrCrrr�test_set_from_Address_listRs
�z,TestAddressHeader.test_set_from_Address_listcCsj|�dtddd�tdtddd�td	d
d�g�tdd
d�g�}|�|d�|�|jtjjdd�d�d�dS)Nr=rcrJr�bing�fiz�z�b.com�zif�f�c.comrfr�zPme <foo@example.com>, bing: fiz <z@b.com>, zif <f@c.com>;, you <bar@example.com>�(��max_line_lengthrzWto: me <foo@example.com>,
 bing: fiz <z@b.com>, zif <f@c.com>;,
 you <bar@example.com>
)r=r	r
rBrarrb�clonerCrrr�$test_set_from_Address_and_Group_listWs
�
��z6TestAddressHeader.test_set_from_Address_and_Group_listc
Cs8|�dtdtddd�tddd�g�g�}|�|d	�dS)
Nr=rhrirjrkrlrmrnz#bing: fiz <z@b.com>, zif <f@c.com>;)r=r
r	rBrCrrr�test_set_from_Group_listcs

�z*TestAddressHeader.test_set_from_Group_list)r%r&r'rr��ObsoleteHeaderDefectrPr;r@rCrVrYr[r\r`rbrergrsrtrrrrr<s4�
�
�
�
�
�
�

�
�

�

�
�
�
�
���� #rc@seZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dES)F�TestAddressAndGroupcCs<|�t��t||d�Wd�dS1swYdS)NrJ)rKrLrM)r�objrNrrrrOk�"�z!TestAddressAndGroup._test_attr_rocC�|�tddd�d�dS)NrJr�r�r5�rOr	rRrrr�test_address_display_name_roo�z0TestAddressAndGroup.test_address_display_name_rocCry)NrJr�r�r7rzrRrrr�test_address_username_rorr|z,TestAddressAndGroup.test_address_username_rocCry)NrJr�r�r8rzrRrrr�test_address_domain_rour|z*TestAddressAndGroup.test_address_domain_rocC�|�td�d�dS)NrJr5�rOr
rRrrr�test_group_display_name_rox�z.TestAddressAndGroup.test_group_display_name_rocCr)NrJr4r�rRrrr�test_group_addresses_ro{r�z+TestAddressAndGroup.test_group_addresses_rocC�Xtddd�}|�|jd�|�|jd�|�|jd�|�|jd�|�t|�d�dS)NrJr�r��bar@baz�
foo <bar@baz>�r	rBr5r7r8r6rA�rr:rrr�!test_address_from_username_domain~�z5TestAddressAndGroup.test_address_from_username_domaincCsXtddd�}|�|jd�|�|jd�|�|jd�|�|jd�|�t|�d�dS)NrJr��r6r�r�r�r�r�rrr�test_address_from_addr_spec�r�z/TestAddressAndGroup.test_address_from_addr_speccCsVtdd�}|�|jd�|�|jd�|�|jd�|�|jd�|�t|�d�dS)Nr�r�rXr�r�r�r�rrr�!test_address_with_no_display_name�s
z5TestAddressAndGroup.test_address_with_no_display_namecCsRt�}|�|jd�|�|jd�|�|jd�|�|jd�|�t|�d�dS)NrXrr�r�rrr�test_null_address�sz%TestAddressAndGroup.test_null_addresscCsVtdd�}|�|jd�|�|jd�|�|jd�|�|jd�|�t|�d�dS)N�buzz�r8rXz@buzzr�r�rrr�test_domain_only��
z$TestAddressAndGroup.test_domain_onlycCsVtdd�}|�|jd�|�|jd�|�|jd�|�|jd�|�t|�d�dS)Nr��r7rXr�r�rrr�test_username_only�r�z&TestAddressAndGroup.test_username_onlycCsTtd�}|�|jd�|�|jd�|�|jd�|�|jd�|�t|�d�dS)Nr�rXrzbuzz <>r�r�rrr�test_display_name_only�sz*TestAddressAndGroup.test_display_name_onlycCr�)NzSara J.zbad namerz"bad name"@example.comz""Sara J." <"bad name"@example.com>r�r�rrr�test_quoting�sz TestAddressAndGroup.test_quotingcCr�)Nri�wokuexàmple.comuwok@exàmple.comuÉric <wok@exàmple.com>r�r�rrr�	test_il8n�r�zTestAddressAndGroup.test_il8ncCs�tdd�tdd�tdd�tdd�tdd�tdd�td	d
�tdd
�tdd
�td
d�tdd�tdd�f}|D]5}|j|d��%|�td��tdi|��Wd�n1sUwYWd�n1sdwYq4dS)Nzfoo
)r5zfoo
zfoo
zexample.com
r�zexample.com
z
example.com
zwok
r�zwok
zwok
zwok@example.com
r�zwok@example.com
zwok@example.com
)�kwargszinvalid argumentsr)�dict�subTest�assertRaisesRegex�
ValueErrorr	)r�casesr�rrr�$test_crlf_in_constructor_args_raises�s*�����z8TestAddressAndGroup.test_crlf_in_constructor_args_raisescC�<|�t��tddd�Wd�dS1swYdS)NrJuwők@example.comr��rKr�r	rRrrr�+test_non_ascii_username_in_addr_spec_raises�rxz?TestAddressAndGroup.test_non_ascii_username_in_addr_spec_raisescC�>|�t��tdddd�Wd�dS1swYdS)NrJrhr�)r7r6�rKr�r	rRrrr�*test_address_addr_spec_and_username_raises��"�z>TestAddressAndGroup.test_address_addr_spec_and_username_raisescCr�)NrJrhr�)r8r6r�rRrrr�(test_address_addr_spec_and_domain_raises�r�z<TestAddressAndGroup.test_address_addr_spec_and_domain_raisescCs@|�t��tddddd�Wd�dS1swYdS)NrJ�bongrhr�)r7r8r6r�rRrrr�5test_address_addr_spec_and_username_and_domain_raises�s"�zITestAddressAndGroup.test_address_addr_spec_and_username_and_domain_raisescCr�)NrJzbad name@example.comr�r�rRrrr�'test_space_in_addr_spec_username_raises�rxz;TestAddressAndGroup.test_space_in_addr_spec_username_raisescCr�)NrJzname@ex[]ample.comr�r�rRrrr�test_bad_addr_sepc_raises�rxz-TestAddressAndGroup.test_bad_addr_sepc_raisescC�:td�}|�|jd�|�|jt��|�t|�d�dS)NrJr<�r
rBr5r4r[rA�r�grrr�test_empty_group��z$TestAddressAndGroup.test_empty_groupcCs>tdgd�}|�|jd�|�|jt��|�t|�d�dS)NrJ�r4r<r�r�rrr�test_empty_group_listsz)TestAddressAndGroup.test_empty_group_listcCs6t�}|�|j�|�|jt��|�t|�d�dS)NzNone:;)r
r�r5rBr4r[rAr�rrr�test_null_groupsz#TestAddressAndGroup.test_null_groupcCsVtddd�tddd�g}td|�}|�|jd�|�|jt|��|�t|�d�dS)N�b�cr:rJzfoo: b <b@c>, a <b@c>;)r	r
rBr5r4r[rA�r�addrsr�rrr�test_group_with_addressess

z-TestAddressAndGroup.test_group_with_addressescCsTtddd�tddd�g}t|d�}|�|j�|�|jt|��|�t|�d�dS)Nr�r�r:r�zNone: b <b@c>, a <b@c>;�r	r
r�r5rBr4r[rAr�rrr�)test_group_with_addresses_no_display_names

z=TestAddressAndGroup.test_group_with_addresses_no_display_namecCsJtddd�g}t|d�}|�|j�|�|jt|��|�t|�d�dS)Nr�r�r�zb <b@c>r�r�rrr�+test_group_with_one_address_no_display_names

z?TestAddressAndGroup.test_group_with_one_address_no_display_namecCr�)Nzfoo.barz"foo.bar":;r�r�rrr�test_display_name_quoting!r�z-TestAddressAndGroup.test_display_name_quotingcCr�)Nr�	foo bar:;r�r�rrr�#test_display_name_blanks_not_quoted'r�z7TestAddressAndGroup.test_display_name_blanks_not_quotedcCsHtddd�}ttjd�}||d<|�|dd�|�|dj|f�dS)NrJr�rr�Tor=zfoo <bar@example.com>)r	rrrbrBr4)rr:r�rrr�$test_set_message_header_from_address-s
z8TestAddressAndGroup.test_set_message_header_from_addresscCsDtd�}ttjd�}||d<|�|dd�|�|dj|j�dS)Nrrr�r=r�)r
rrrbrBr4)rr�r�rrr�"test_set_message_header_from_group4s
z6TestAddressAndGroup.test_set_message_header_from_groupcCs~tddd�}|�tddd�|�|�tddd�|�|�tddd�|�|�tddd�|�|�|t�k�|�|tk�dS)NrJr�rr�)r	rB�assertNotEqual�assertFalse�object�
assertTruerr�rrr�test_address_comparison;sz+TestAddressAndGroup.test_address_comparisoncCsttddd�}td|g�}|�td|f�|�|�td|g�|�|�tdg�|�|�|t�k�|�|tk�dS)NrJr�rrr�)r	r
rBr�r�r�r�r)rr:r�rrr�test_group_comparisonDsz)TestAddressAndGroup.test_group_comparisonN)%r%r&r'rOr{r}r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrvisF		

	rvc@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�TestFoldingcCs@dD]\}}|�dt|dd��}|�|jtjd�d|�qdS)z1Test the folding and encoding of address headers.)	)zFoo Bar, Francez"Foo Bar, France")zFoo Bar (France)z"Foo Bar (France)")uFoo Bar, Españaz"Foo =?utf-8?q?Bar=2C_Espa=C3=B1a?=)uFoo Bar (España)z Foo Bar =?utf-8?b?KEVzcGHDsWEp?=)uFoo, Bar Españaz"=?utf-8?q?Foo=2C_Bar_Espa=C3=B1a?=)uFoo, Bar [España]z(=?utf-8?q?Foo=2C_Bar_=5BEspa=C3=B1a=5D?=)uFoo Bär, Francez"Foo =?utf-8?q?B=C3=A4r=2C?= France)uFoo Bär <France>z%Foo =?utf-8?q?B=C3=A4r_=3CFrance=3E?=)urLôrem ipsum dôlôr sit amet, cônsectetuer adipiscing. Suspendisse pôtenti. Aliquam nibh. Suspendisse pôtenti.z�=?utf-8?q?L=C3=B4rem_ipsum_d=C3=B4l=C3=B4r_sit_amet=2C_c=C3=B4nsectetuer?=
 =?utf-8?q?adipiscing=2E_Suspendisse_p=C3=B4tenti=2E_Aliquam_nibh=2E?=
 Suspendisse =?utf-8?q?p=C3=B4tenti=2E?=r�za@b.comr�rzTo: %s <a@b.com>
N)r=r	rBrarrb)rr;�resultrrrr�test_address_display_namesPs��z&TestFolding.test_address_display_namescC�&|�dd�}|�|jtjd�d�dS)Nr2r@rzsubject: this is a test
�r=rBrarrbrCrrr�test_short_unstructuredh��z#TestFolding.test_short_unstructuredcCr�)NrzhThis is a long header line that will need to be folded into two lines and will demonstrate basic foldingrzsSubject: This is a long header line that will need to be folded into two lines
 and will demonstrate basic folding
r�rCrrr�test_long_unstructuredms�z"TestFolding.test_long_unstructuredcC�4|�dd�}|�|jtjjdd�d�t�d��dS)Nrz1this is a short header that will be folded anywayrtrprz�                Subject: this is a
                 short header that
                 will be folded
                 anyway
                �r=rBrarrbrr�textwrap�dedentrCrrr�'test_unstructured_short_max_line_lengthvs
�z3TestFolding.test_unstructured_short_max_line_lengthcCr�)NrrrzSubject: test
r�rCrrr�"test_fold_unstructured_single_word�sz.TestFolding.test_fold_unstructured_single_wordcCr�)Nrztest test testrzSubject: test test test
r�rCrrr�test_fold_unstructured_short�r�z(TestFolding.test_fold_unstructured_shortcC�.|�dd�}|�|jtjjdd�d�d�dS)Nr�5thisisaverylonglineconsistingofasinglewordthatwontfitrtrprz�Subject: 
 =?utf-8?q?thisisa?=
 =?utf-8?q?verylon?=
 =?utf-8?q?glineco?=
 =?utf-8?q?nsistin?=
 =?utf-8?q?gofasin?=
 =?utf-8?q?gleword?=
 =?utf-8?q?thatwon?=
 =?utf-8?q?tfit?=
�r=rBrarrbrrrCrrr�)test_fold_unstructured_with_overlong_word��
�z5TestFolding.test_fold_unstructured_with_overlong_wordcCr�)NrzXthisisaverylonglineconsistingofasinglewordthatwontfit plusanotherverylongwordthatwontfitrtrpraSubject: 
 =?utf-8?q?thisisa?=
 =?utf-8?q?verylon?=
 =?utf-8?q?glineco?=
 =?utf-8?q?nsistin?=
 =?utf-8?q?gofasin?=
 =?utf-8?q?gleword?=
 =?utf-8?q?thatwon?=
 =?utf-8?q?tfit_pl?=
 =?utf-8?q?usanoth?=
 =?utf-8?q?erveryl?=
 =?utf-8?q?ongword?=
 =?utf-8?q?thatwon?=
 =?utf-8?q?tfit?=
r�rCrrr�.test_fold_unstructured_with_two_overlong_words�r�z:TestFolding.test_fold_unstructured_with_two_overlong_wordscCr�)Nr� thislongwordislessthanmaxlinelen�#rprz+Subject:
 thislongwordislessthanmaxlinelen
r�rCrrr�.test_fold_unstructured_with_slightly_long_word�s
�z:TestFolding.test_fold_unstructured_with_slightly_long_wordcCr�)Nrz�This header is intended to demonstrate, in a fairly succinct way, that we now do not give a , special treatment in unstructured headers.�<rprz�                Subject: This header is intended to demonstrate, in a fairly
                 succinct way, that we now do not give a , special treatment
                 in unstructured headers.
                 r�rCrrr�"test_fold_unstructured_with_commas�s
�z.TestFolding.test_fold_unstructured_with_commascCs,|�dd�}|�|jtjd�t�d��dS)Nr�z�"Theodore H. Perfect" <yes@man.com>, "My address is very long because my name is long" <foo@bar.com>, "Only A. Friend" <no@yes.com>rz�            To: "Theodore H. Perfect" <yes@man.com>,
             "My address is very long because my name is long" <foo@bar.com>,
             "Only A. Friend" <no@yes.com>
             )r=rBrarrbr�r�rCrrr�test_fold_address_list�s z"TestFolding.test_fold_address_listcCr�)Nr�zSat, 2 Feb 2002 17:00:06 -0800rz&Date: Sat, 02 Feb 2002 17:00:06 -0800
r�rCrrr�test_fold_date_header�r�z!TestFolding.test_fold_date_headercCr�)NzX-Report-Abusez]<https://www.mailitapp.com/report_abuse.php?mid=xxx-xxx-xxxxxxxxxxxxxxxxxxxxxxxx==-xxx-xx-xx>rz�X-Report-Abuse: =?utf-8?q?=3Chttps=3A//www=2Emailitapp=2Ecom/report=5Fabuse?=
 =?utf-8?q?=2Ephp=3Fmid=3Dxxx-xxx-xxxxxxxxxxxxxxxxxxxxxxxx=3D=3D-xxx-xx-xx?=
 =?utf-8?q?=3E?=
r�rCrrr�&test_fold_overlong_words_using_RFC2047�s��z2TestFolding.test_fold_overlong_words_using_RFC2047cCs�|�dd�}|�|jtjjdd�d�d�|�dd�}|�|jtjjdd�d�d�|�dd	�}|�|jtjjd
d�d�d�|�dd�}|�|jtjjdd�d�d
�dS)Nz
Message-IDz+<somemessageidlongerthan@maxlinelength.com>rtrprz8Message-ID: <somemessageidlongerthan@maxlinelength.com>
z1<somemessageidlongerthan@[127.0.0.0.0.0.0.0.0.1]>z>Message-ID: <somemessageidlongerthan@[127.0.0.0.0.0.0.0.0.1]>
u<ईमेल@wők.com>�u$Message-ID: <ईमेल@wők.com>
u"<ईमेलfromMessage@wők.com>u0Message-ID:
 <ईमेलfromMessage@wők.com>
r�rCrrr�$test_message_id_header_is_not_folded�s4������z0TestFolding.test_message_id_header_is_not_foldedN)r%r&r'r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�Ns	


r��__main__)!rzr��unittest�emailrr�
email.messager�test.test_emailrrr�email.headerregistryr	r
�test.supportrr�r�rr:r>r]rpr�r�r�rrrvr�r%�mainrrrr�<module>sT:.(A;'R.f1�

Youez - 2016 - github.com/yon3zu
LinuXploit