+
    Bi                         ^ RI t ^ RIHtHt ^ RIt^ RIHt ^ RIHt ^ RI	H
t
Ht ] ! R R]4      4       t] ! R R	]4      4       t]R
8X  d   ] P                  ! 4        R# R# )    N)TestEmailBaseparameterize)policy)EmailMessage)ContentManagerraw_data_managerc                   0  a  ] tR t^	t o ]P
                  t]tRR RR!RR"/tR t	R t
R t ! R R]4      t] R	,           R
,           t ! R R]4      t] R	,           R,           tR^ ]3R^]3RR#RR$R^]3R^]3RR%RR&R^]3RR'RR(RR)/tR tR tR tR tR tRtV tR# )*TestContentManager	full_typemaintype_onlynull_keyc                    RR lp\        4       pVP                  W#4       V P                  4       pRVR&   RVR&   V P                  VP	                  VRR7      R	4       R # )
Nc                     V R ,          pW3# X-Bar-Header )msgfoobars   && :/usr/lib/python3.14/test/test_email/test_contentmanager.py
foo_getterATestContentManager.get_key_as_get_content_key.<locals>.foo_getter   s    n%C8O    
text/plainContent-Typer   r   r   r   N)r   r   )r   add_get_handler_make_messageassertEqualget_content)selforderkeyr   cmms   &&&   r   get_key_as_get_content_key-TestContentManager.get_key_as_get_content_key   s^    	 
3+ (.!.u5~Fr   c                @   R  pR p\        4       pVP                  W$4       V P                  P                  4        F  w  rbWa8  g   K  VP                  W#4       K   	  V P	                  4       pRVR&   RVR&   RVR&   V P                  VP                  V4      R4       R# )	c                     V R ,          # r   r   r   s   &r   
bar_getterGTestContentManager.get_key_as_get_content_key_order.<locals>.bar_getter!       ~&&r   c                     V R ,          # )X-Foo-Headerr   r+   s   &r   r   GTestContentManager.get_key_as_get_content_key_order.<locals>.foo_getter#   r.   r   r   r   r   r   r   r0   N)r   r   get_key_paramsvaluesr   r    r!   )r"   r#   r$   r,   r   r%   
precedencer&   s   &&&     r    get_key_as_get_content_key_order3TestContentManager.get_key_as_get_content_key_order    s    	'	'
3+#2299;OJ!""33  <  (.!.!.*U4r   c                    \        4       pV P                  4       pR VR&   V P                  \        R 4      ;_uu_ 4        VP	                  V4       RRR4       R#   + '       g   i     R# ; i)r   r   N)r   r   assertRaisesRegexKeyErrorr!   r"   r%   r&   s   &  r   :test_get_content_raises_if_unknown_mimetype_and_no_defaultMTestContentManager.test_get_content_raises_if_unknown_mimetype_and_no_default0   sP     (.##Hl;;NN1 <;;;s   AA+	c                       ] tR t^7tRtR# )TestContentManager.BaseThingr   N__name__
__module____qualname____firstlineno____static_attributes__r   r   r   	BaseThingr>   7       r   rE   .r>   c                       ] tR t^:tRtR# )TestContentManager.Thingr   Nr?   r   r   r   ThingrI   :   rF   r   rJ   rI   type	full_pathqualnamename	base_typebase_full_pathbase_qualname	base_namestr_typestr_full_pathstr_nameNc                   RR lp\        4       pVP                  W#4       V P                  4       pV P                  4       pVP	                  WVRR7       V P                  VR,          R4       V P                  VP                  4       V4       R # )Nc                 0    W R &   V P                  V4       R# )r0   Nset_payload)r   objr   s   &&&r   
foo_setterATestContentManager.set_key_as_set_content_key.<locals>.foo_setterN   s    "%OOC r   r   r   r0   r   )r   add_set_handlerr   rJ   set_contentr    get_payload)r"   r#   r$   r[   r%   r&   msg_objs   &&&    r   set_key_as_set_content_key-TestContentManager.set_key_as_set_content_keyM   ss    	! 
3+ **,
qu->*E2'2r   c                   R  pR p\        4       pVP                  W#4       V P                  P                  4        F  w  rbWa8  g   K  VP                  W$4       K   	  V P	                  4       pV P                  4       pVP                  Wx4       V P                  VR,          R4       V P                  VP                  4       V4       R# )c                 2    R V R&   V P                  V4       R# )r   X-FooBar-HeaderNrX   r   rZ   s   &&r   r[   GTestContentManager.set_key_as_set_content_key_order.<locals>.foo_setterZ   s    %*C!"OOC r   c                     R V R&   R# )r   re   Nr   rf   s   &&r   
bar_setterGTestContentManager.set_key_as_set_content_key_order.<locals>.bar_setter]   s    %*C!"r   re   r   N)	r   r]   r2   r3   r   rJ   r^   r    r_   )	r"   r#   r$   r[   ri   r%   r4   r&   r`   s	   &&&      r    set_key_as_set_content_key_order3TestContentManager.set_key_as_set_content_key_orderY   s    	!	+
3+#2299;OJ!""33  <  **,
q",-u5'2r   c                   \        4       pV P                  4       pV P                  4       pV P                  \        V P
                  4      ;_uu_ 4        VP                  W#4       R R R 4       R #   + '       g   i     R # ; ir   )r   r   rJ   r8   r9   testobject_full_pathr^   )r"   r%   r&   r`   s   &   r   6test_set_content_raises_if_unknown_type_and_no_defaultITestContentManager.test_set_content_raises_if_unknown_type_and_no_defaultj   sX     **,##Hd.G.GHHNN1& IHHHs   A//B 	c                    \        4       pV P                  4       pR VR&   V P                  \        4      ;_uu_ 4        VP	                  VR4       RRR4       R#   + '       g   i     R# ; i)zmultipart/foor   testN)r   r   assertRaises	TypeErrorr^   r:   s   &  r   .test_set_content_raises_if_called_on_multipartATestContentManager.test_set_content_raises_if_called_on_multipartq   sP     +.y))NN1f% *)))s   AA+	c                   V P                  4       pR VR&   RVR&   RVR&   VP                  R4       \        4       pVP                  \        R 4       VP                  RVR	7       V P                  VR,          4       V P                  VR,          4       V P                  VR,          R4       V P                  VP                  4       4       R
# )r   zContent-Fooz	text/htmlr   rr   Toabcc                      R # r   r   )argskws   *,r   <lambda>ITestContentManager.test_set_content_calls_clear_content.<locals>.<lambda>   s    Dr   xyz)content_managerN)	r   rY   r   r]   strr^   assertIsNoner    r_   )r"   r&   r%   s   &  r   $test_set_content_calls_clear_content7TestContentManager.test_set_content_calls_clear_contentx   s      -'.$	e
3 89	eR0!M*+!N+,4&)!--/*r   r   )   r   )   text)    )r   rI   )r   rJ   )   r>   )   rE   )	   zbuiltins.str)
   r   )   N)r@   rA   rB   rC   r   defaultr   messager2   r'   r5   r;   r   rE   baseobject_full_pathrJ   rn   set_key_paramsra   rk   ro   ru   r   rD   __classdictcell____classdict__s   @r   r
   r
   	   s      ^^FG 	.LH
N	G5 C #c>,JJ	 #c>,FF 	QLQ!57=NQ,Q!57A.QJ1LK
N
33"'&+ +r   r
   c                     a  ] tR t^t o ]P
                  P                  ^<]R7      t]t	R t
R tR tR tR tR tR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R t%R t&R t'R  t(R! t)R" t*R# t+R$ t,R% t-R& t.R' t/R( t0R) t1R* t2R+ t3R, t4R- t5R. t6R/ t7R0 t8R1 t9R2 t:R3R@R4RAR5RBR6RCR7]	! 4       R>3R8]	! 4       RD3/t;R9 t<R: t=R; t>R< t?R= t@R>tAV tBR?# )ETestRawDataManager)max_line_lengthr   c                    V P                  \        P                  ! R 4      4      pV P                  \        P
                  ! V4      R4       R# )J            Content-Type: text/plain

            Basic text.
            zBasic text.
N_str_msgtextwrapdedentr    r   r!   r"   r&   s   & r   test_get_text_plain&TestRawDataManager.test_get_text_plain   s>    MM(// +  
 	)55a8/Jr   c                    V P                  \        P                  ! R 4      4      pV P                  \        P
                  ! V4      R4       R# )zP            Content-Type: text/html

            <p>Basic text.</p>
            z<p>Basic text.</p>
Nr   r   s   & r   test_get_text_html%TestRawDataManager.test_get_text_html   sA    MM(// +  
 	)55a8/	1r   c                    V P                  \        P                  ! R 4      P                  R4      4      pV P	                  \
        P                  ! V4      R4       R# )u\               Content-Type: text/plain; charset=latin1

            Basìc tëxt.
            latin1   Basìc tëxt.
N)
_bytes_msgr   r   encoder    r   r!   r   s   & r   test_get_text_plain_latin1-TestRawDataManager.test_get_text_plain_latin1   sK    OOHOO -  !	#
 	)55a8:KLr   c                    V P                  \        P                  ! R 4      4      pV P                  \        P
                  ! V4      R4       R# )z            Content-Type: text/plain; charset="latin-1"
            Content-Transfer-Encoding: quoted-printable

            Bas=ECc t=EBxt.
            r   Nr   r   s   & r   +test_get_text_plain_latin1_quoted_printable>TestRawDataManager.test_get_text_plain_latin1_quoted_printable   ?    MM(// +   	)55a8:KLr   c                    V P                  \        P                  ! R 4      4      pV P                  \        P
                  ! V4      R4       R# )z            Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: base64

            QmFzw6xjIHTDq3h0Lgo=
            r   Nr   r   s   & r   test_get_text_plain_utf8_base642TestRawDataManager.test_get_text_plain_utf8_base64   r   r   c                    V P                  \        P                  ! R 4      4      pV P                  \        P
                  ! V4      R4       R# )            Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: quoted-printable

            Bas=c3=acc t=c3=abxt=fd.
            u   Basìc tëxt�.
Nr   r   s   & r   -test_get_text_plain_bad_utf8_quoted_printable@TestRawDataManager.test_get_text_plain_bad_utf8_quoted_printable   s?    MM(// +   	)55a8:NOr   c                    V P                  \        P                  ! R 4      4      pV P                  \        P
                  ! VRR7      R4       R# )r   ignoreerrorsr   Nr   r   s   & r   ;test_get_text_plain_bad_utf8_quoted_printable_ignore_errorsNTestRawDataManager.test_get_text_plain_bad_utf8_quoted_printable_ignore_errors   C    MM(// +   	)55aI*	,r   c                    V P                  \        P                  ! R 4      4      pV P                  \        P
                  ! VRR7      R4       R# )u               Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: base64

            QmFzw6xjIHTDq3h0Lgoÿ=
            r   r   r   Nr   r   s   & r   8test_get_text_plain_utf8_base64_recoverable_bad_CTE_dataKTestRawDataManager.test_get_text_plain_utf8_base64_recoverable_bad_CTE_data   r   r   c                    V P                  \        P                  ! R 4      4      pV P                  \        4      ;_uu_ 4        \
        P                  ! VRR7       RRR4       R#   + '       g   i     R# ; i)r   r   r   Nr   r   r   rs   rt   r   r!   r   s   & r   test_get_text_invalid_keyword0TestRawDataManager.test_get_text_invalid_keyword   sR    MM(// +  
 y))((9 *)))   A&&A7	c           	     h   \         P                  ! R 4      pRP                  4        Fs  pV P                  VR7      ;_uu_ 4        V P	                  VP                  VR,           4      4      pV P                  \        P                  ! V4      R4       RRR4       Ku  	  R#   + '       g   i     K  ; i)zu            Content-Type: {}
            Content-Transfer-Encoding: base64

            Ym9ndXMgZGF0YQ==
            zaudio image video application)maintypez/foos
   bogus dataN)	r   r   splitsubTestr   formatr    r   r!   )r"   templater   r&   s   &   r   test_get_non_text$TestRawDataManager.test_get_non_text   s    ?? $  8==?Hx00MM(//(6/"BC  !1!=!=a!@-P 10 @000s   AB  B1c                    V P                  \        P                  ! R 4      4      pV P                  \        4      ;_uu_ 4        \
        P                  ! VRR7       RRR4       R#   + '       g   i     R# ; i)z|            Content-Type: image/jpg
            Content-Transfer-Encoding: base64

            Ym9ndXMgZGF0YQ==
            r   r   Nr   r   s   & r   !test_get_non_text_invalid_keyword4TestRawDataManager.test_get_non_text_invalid_keyword   sR    MM(// +   y))((8< *)))r   c                    V P                  \        P                  ! R 4      4      pV P                  \        4      ;_uu_ 4        \
        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)zm            Content-Type: multipart/mixed; boundary="==="

            --===
            --===--
            N)r   r   r   rs   r9   r   r!   r   s   & r   test_get_raises_on_multipart/TestRawDataManager.test_get_raises_on_multipart   sP    MM(// +   x((((+ )(((s   A$$A5	c                X   \         P                  ! R 4      pRP                  4        F  pV P                  VR7      ;_uu_ 4        V P	                  VP                  V4      4      p\        P                  ! V4      pV P                  W@P                  4       V P                  \        P                  ! V4      R4       V P                  VR,          R4       V P                  VR,          P                  ^ ,          P                  R4       RRR4       K  	  R#   + '       g   i     EK  ; i)	z            Content-Type: message/{}

            To: foo@example.com
            From: bar@example.com
            Subject: example

            an example message
            rfc822 external-bodysubtypezan example message
tofoo@example.comfromr   N)r   r   r   r   r   r   r   r!   assertIsInstancer   r    	addressesusername)r"   r   r   r&   sub_msgs   &    r   )test_get_message_rfc822_and_external_body<TestRawDataManager.test_get_message_rfc822_and_external_body  s    ?? $  .335Gg..MM(//'":;*66q9%%g||<  !1!=!=g!F!79  0AB  !:!:1!=!F!FN /. 6...s   CDD)c                    V P                  \        P                  ! R 4      4      pV P                  \        P
                  ! V4      R4       R# )z            Content-Type: message/partial

            To: foo@example.com
            From: bar@example.com
            Subject: example

            The real body is in another message.
            s
   To: foo@exN)r   r   r   assertStartsWithr   r!   r   s   & r   9test_get_message_non_rfc822_or_external_body_yields_bytesLTestRawDataManager.test_get_message_non_rfc822_or_external_body_yields_bytes  s>    MM(// +   	.::1=}Mr   c                V   V P                  4       pR p\        P                  ! W4       V P                  \	        V4      \
        P                  ! R4      4       V P                  VP                  RR7      P                  R4      V4       V P                  VP                  4       V4       R# )Simple message.
z            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 7bit

            Simple message.
            Tdecodeutf-8N
r   r   r^   r    r   r   r   r_   r   r!   r"   r&   contents   &  r   test_set_text_plain&TestRawDataManager.test_set_text_plain%  s     %$$Q0Q 2 " 	 	d3::7CWM'2r   c                V   V P                  4       pR p\        P                  ! W4       V P                  \	        V4      \
        P                  ! R4      4       V P                  VP                  RR7      P                  R4      R4       V P                  VP                  4       R4       R# )r   zp            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 7bit


            Tr   r   
Nr   r   s   &  r   test_set_text_plain_null+TestRawDataManager.test_set_text_plain_null2  s     $$Q0Q 2 " 	 	d3::7CTJ$/r   c                Z   V P                  4       pR p\        P                  ! WRR7       V P                  \	        V4      \
        P                  ! R4      4       V P                  VP                  RR7      P                  R4      V4       V P                  VP                  4       V4       R# )z<p>Simple message.</p>
htmlr   z            Content-Type: text/html; charset="utf-8"
            Content-Transfer-Encoding: 7bit

            <p>Simple message.</p>
            Tr   r   Nr   r   s   &  r   test_set_text_html%TestRawDataManager.test_set_text_html?  s     ,$$Q@Q 2 " 	 	d3::7CWM'2r   c                Z   V P                  4       pR p\        P                  ! WRR7       V P                  \	        V4      \
        P                  ! R4      4       V P                  VP                  RR7      P                  R4      V4       V P                  VP                  4       V4       R# )r   latin-1charsetz            Content-Type: text/plain; charset="iso-8859-1"
            Content-Transfer-Encoding: 7bit

            Simple message.
            Tr   r   Nr   r   s   &  r   test_set_text_charset_latin_10TestRawDataManager.test_set_text_charset_latin_1L  s     %$$QCQ 2 " 	 	d3::7CWM'2r   c                V   V P                  4       pR p\        P                  ! W4       V P                  \	        V4      \
        P                  ! R4      4       V P                  VP                  RR7      P                  R4      V4       V P                  VP                  4       V4       R# )zTSimple but long message that is over 78 characters long to force transfer encoding.
z            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: quoted-printable

            Simple but long message that is over 78 characters long to =
            force transfer encoding.
            Tr   r   Nr   r   s   &  r   (test_set_text_plain_long_line_heuristics;TestRawDataManager.test_set_text_plain_long_line_heuristicsY  s     9$$Q0Q 2 " 	 	d3::7CWM'2r   c                t   V P                  4       pR p\        P                  ! W4       V P                  \	        V4      \
        P                  ! R4      P                  R4      4       V P                  VP                  RR7      P                  R4      V4       V P                  VP                  4       V4       R# )u7   et là il est monté sur moi et il commence à m'éto.
u               Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 8bit

            et là il est monté sur moi et il commence à m'éto.
            r   Tr   Nr   r   r^   r    bytesr   r   r   r_   r   r!   r   s   &  r   5test_set_text_short_line_minimal_non_ascii_heuristicsHTestRawDataManager.test_set_text_short_line_minimal_non_ascii_heuristicsh  s     L$$Q0q8?? 4 $
 	" 	d3::7CWM'2r   c                t   V P                  4       pR p\        P                  ! W4       V P                  \	        V4      \
        P                  ! R4      P                  R4      4       V P                  VP                  RR7      P                  R4      V4       V P                  VP                  4       V4       R# )us   j'ai un problème de python. il est sorti de son vivarium.  et là il est monté sur moi et il commence à m'éto.
a*              Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: quoted-printable

            j'ai un probl=C3=A8me de python. il est sorti de son vivari=
            um.  et l=C3=A0 il est mont=C3=A9 sur moi et il commence =
            =C3=A0 m'=C3=A9to.
            r   Tr   Nr  r   s   &  r   4test_set_text_long_line_minimal_non_ascii_heuristicsGTestRawDataManager.test_set_text_long_line_minimal_non_ascii_heuristicsu  s     # 	$$Q0q8?? 4 $ 	" 	d3::7CWM'2r   c                t   V P                  4       pRp\        P                  ! W4       V P                  \	        V4      \
        P                  ! R4      P                  R4      4       V P                  VP                  RR7      P                  R4      V4       V P                  VP                  4       V4       R# )r   r   Tr   Nu}   









j'ai un problème de python. il est sorti de son vivarium.  et là il est monté sur moi et il commence à m'éto.
a@              Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: quoted-printable
            










            j'ai un probl=C3=A8me de python. il est sorti de son vivari=
            um.  et l=C3=A0 il est mont=C3=A9 sur moi et il commence =
            =C3=A0 m'=C3=A9to.
            r  r   s   &  r   =test_set_text_11_lines_long_line_minimal_non_ascii_heuristicsPTestRawDataManager.test_set_text_11_lines_long_line_minimal_non_ascii_heuristics  s     # 	$$Q0q8?? 4 $ 	" 	d3::7CWM'2r   c                t   V P                  4       pR p\        P                  ! W4       V P                  \	        V4      \
        P                  ! R4      P                  R4      4       V P                  VP                  RR7      P                  R4      V4       V P                  VP                  4       V4       R# )   áàäéèęöő.
u               Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 8bit

            áàäéèęöő.
            r   Tr   Nr  r   s   &  r   *test_set_text_maximal_non_ascii_heuristics=TestRawDataManager.test_set_text_maximal_non_ascii_heuristics  s     '$$Q0q8?? 4 $
 	" 	d3::7CWM'2r   c                t   V P                  4       pRp\        P                  ! W4       V P                  \	        V4      \
        P                  ! R4      P                  R4      4       V P                  VP                  RR7      P                  R4      V4       V P                  VP                  4       V4       R# )r   r   Tr   Nu   









áàäéèęöő.
u               Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 8bit
            










            áàäéèęöő.
            r  r   s   &  r   3test_set_text_11_lines_maximal_non_ascii_heuristicsFTestRawDataManager.test_set_text_11_lines_maximal_non_ascii_heuristics  s     1$$Q0q8?? 4 $
 	" 	d3::7CWM'2r   c                t   V P                  4       pR p\        P                  ! W4       V P                  \	        V4      \
        P                  ! R4      P                  R4      4       V P                  VP                  RR7      P                  R4      V4       V P                  VP                  4       V4       R# )u   áàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöő.
a              Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: base64

            w6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOgw6TDqcOoxJnD
            tsWRw6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOgw6TDqcOo
            xJnDtsWRw6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOgw6TD
            qcOoxJnDtsWRw6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOg
            w6TDqcOoxJnDtsWRLgo=
            r   Tr   Nr  r   s   &  r   4test_set_text_long_line_maximal_non_ascii_heuristicsGTestRawDataManager.test_set_text_long_line_maximal_non_ascii_heuristics  s     Y 	$$Q0q8?? 	4 	$ 		" 	d3::7CWM'2r   c                v   V P                  4       pRp\        P                  ! VR4       V P                  \	        V4      \
        P                  ! R4      P                  R4      4       V P                  VP                  RR7      P                  R4      V4       V P                  VP                  4       V4       R# )r   r   Tr   Nu   









áàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöő.
ak              Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: quoted-printable
            










            =C3=A1=C3=A0=C3=A4=C3=A9=C3=A8=C4=99=C3=B6=C5=91=C3=A1=C3=
            =A0=C3=A4=C3=A9=C3=A8=C4=99=C3=B6=C5=91=C3=A1=C3=A0=C3=A4=
            =C3=A9=C3=A8=C4=99=C3=B6=C5=91=C3=A1=C3=A0=C3=A4=C3=A9=C3=
            =A8=C4=99=C3=B6=C5=91=C3=A1=C3=A0=C3=A4=C3=A9=C3=A8=C4=99=
            =C3=B6=C5=91=C3=A1=C3=A0=C3=A4=C3=A9=C3=A8=C4=99=C3=B6=C5=
            =91=C3=A1=C3=A0=C3=A4=C3=A9=C3=A8=C4=99=C3=B6=C5=91=C3=A1=
            =C3=A0=C3=A4=C3=A9=C3=A8=C4=99=C3=B6=C5=91=C3=A1=C3=A0=C3=
            =A4=C3=A9=C3=A8=C4=99=C3=B6=C5=91=C3=A1=C3=A0=C3=A4=C3=A9=
            =C3=A8=C4=99=C3=B6=C5=91=C3=A1=C3=A0=C3=A4=C3=A9=C3=A8=C4=
            =99=C3=B6=C5=91=C3=A1=C3=A0=C3=A4=C3=A9=C3=A8=C4=99=C3=B6=
            =C5=91.
            r  r   s   &  r   =test_set_text_11_lines_long_line_maximal_non_ascii_heuristicsPTestRawDataManager.test_set_text_11_lines_long_line_maximal_non_ascii_heuristics  s      Y 	$$Q )n 	o 	q8?? 4 $ 	"  	d3::7CWM'2r   c                    V P                  4       pV P                  \        4      ;_uu_ 4        \        P                  ! VR RR7       RRR4       R#   + '       g   i     R# ; i)r  7bitcteNr   rs   UnicodeErrorr   r^   r   s   & r   ,test_set_text_non_ascii_with_cte_7bit_raises?TestRawDataManager.test_set_text_non_ascii_with_cte_7bit_raises  sC     |,,((+@fM -,,,   AA#	c                    V P                  4       pV P                  \        4      ;_uu_ 4        \        P                  ! VR RR7       RRR4       R#   + '       g   i     R# ; i)r  asciir   Nr  r   s   & r   1test_set_text_non_ascii_with_charset_ascii_raisesDTestRawDataManager.test_set_text_non_ascii_with_charset_ascii_raises  sC     |,,((+@'R -,,,r   c           	         V P                  4       pV P                  \        4      ;_uu_ 4        \        P                  ! VR RRR7       RRR4       R#   + '       g   i     R# ; i)r  r  r"  )r  r   Nr  r   s   & r   >test_set_text_non_ascii_with_cte_7bit_and_charset_ascii_raisesQTestRawDataManager.test_set_text_non_ascii_with_cte_7bit_and_charset_ascii_raises  sF     |,,((+@fV]^ -,,,s   AA$	c                r   V P                  4       pR VR&   V P                  4       pRVR&   RVR&   RVR&   VP                  R4       \        P                  ! W4       V P                  \	        V4      \
        P                  ! R4      4       VP                  ^ 4      pV P                  W0P                  4       V P                  \	        V4      \	        V4      4       V P                  VP                  4       V P                  4       V P                  \	        VP                  4       4      \	        V4      4       R	# )
zForwarded messageSubjectzpython@vivarium.orgrx   police@monty.orgFromzget back in your boxzOr face the comfy chair.a              Subject: Forwarded message
            Content-Type: message/rfc822
            Content-Transfer-Encoding: 8bit

            To: python@vivarium.org
            From: police@monty.org
            Subject: get back in your box
            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 7bit
            MIME-Version: 1.0

            Or face the comfy chair.
            N)r   r^   r   r    r   r   r   r_   r   r   r!   )r"   r&   r   payloads   &   r   test_set_message#TestRawDataManager.test_set_message  s     *)$$&-,3	67$$Q0Q 2 " 	 --"g||4Ws7|4ammot||<Q]]_-s7|<r   c                   V P                  4       pR VR&   V P                  4       pRVR&   RVR&   RVR&   VP                  R4       \        P                  ! W4       V P                  \	        V4      \
        P                  ! R4      P                  R	4      4       V P                  VP                  V P                  P                  R
7      \
        P                  ! R4      4       V P                  VP                  4       V P                  4       V P                  \        VP                  4       4      \        V4      4       R# )zEscape reportr)  r*  rx   zvictim@monty.orgr+  Helpu:   j'ai un problème de python. il est sorti de son vivarium.u              Subject: Escape report
            Content-Type: message/rfc822
            Content-Transfer-Encoding: 8bit

            To: police@monty.org
            From: victim@monty.org
            Subject: Help
            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 8bit
            MIME-Version: 1.0

            j'ai un problème de python. il est sorti de son vivarium.
            r   )maxheaderlena              Subject: Escape report
            Content-Type: message/rfc822
            Content-Transfer-Encoding: 8bit

            To: police@monty.org
            From: victim@monty.org
            Subject: Help
            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: base64
            MIME-Version: 1.0

            aidhaSB1biBwcm9ibMOobWUgZGUgcHl0aG9uLiBpbCBlc3Qgc29ydGkgZGUgc29uIHZpdmFyaXVt
            Lgo=
            N)r   r^   r   r    r  r   r   r   	as_stringr   r   r   r!   r   r   r   s   &  r   4test_set_message_with_non_ascii_and_coercion_to_7bitGTestRawDataManager.test_set_message_with_non_ascii_and_coercion_to_7bit  s    &)$$&*,#	 ) 	*$$Q0q8?? 4 $ 	"& 	$++2M2MN! * 	  	ammot||<Q]]_-s7|<r   c                   V P                  4       pV P                  4       pR P                  4        F  pRP                  4        F  pV P                  W4R7      ;_uu_ 4        V P                  \        4      ;_uu_ 4       pVP                  W$VR7       RRR4       \        XP                  4      pV P                  W64       V P                  WF4       RRR4       K  	  K  	  RpRP                  4        F  pV P                  W4R7      ;_uu_ 4        V P                  \        4      ;_uu_ 4       pVP                  W$VR7       RRR4       \        XP                  4      pV P                  W64       V P                  WF4       RRR4       K  	  R#   + '       g   i     EL; i  + '       g   i     EKr  ; i  + '       g   i     L~; i  + '       g   i     K  ; i)zquoted-printable base64r   )r  r   r  Nexternal-bodyz8bit binary)	r   r   r   rs   
ValueErrorr^   r   	exceptionassertIn)r"   r&   r   r  r   arexcs   &      r   #test_set_message_invalid_cte_raises6TestRawDataManager.test_set_message_invalid_cte_raises@  sY    $$&,224C1779\\c\;;**:66"gC@ 7bll+CMM#+MM'/ <; : 5 " &&(C#77&&z22bMM'M< 3",,'c'g+ 87 ) 766 <;; 32 877sH   !F$	?F?F$	G/F9?GF!	F$	$F69G	GGc           	        R \        R 4      \        R 4      3 F  pV P                  VR7      ;_uu_ 4        V P                  4       p\        P
                  ! W!RR4       V P                  \        V4      \        P                  ! R4      4       V P                  VP                  RR7      V4       V P                  VP                  4       V4       RRR4       K  	  R#   + '       g   i     K  ; i)s   bogus content)r   imagejpegz                    Content-Type: image/jpeg
                    Content-Transfer-Encoding: base64

                    Ym9ndXMgY29udGVudA==
                    Tr   N)	bytearray
memoryviewr   r   r   r^   r    r   r   r   r_   r!   )r"   r   r&   s   &  r   test_set_image_jpg%TestRawDataManager.test_set_image_jpgT  s    (!"23"#346G g..&&( ,,Q&I  Q : *    d!;WE  ': /.6 /..s   BCC.c                T   V P                  4       pR
pVP                  VRRRR7       V P                  \        V4      \        P
                  ! R4      P                  R4      4       V P                  VP                  RR7      V4       V P                  VP                  4       V4       R	# )   bgus	con
tent audioaifzquoted-printabler  a              Content-Type: audio/aif
            Content-Transfer-Encoding: quoted-printable
            MIME-Version: 1.0

            b=FFgus=09con=0At=0Dent=20zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz=
            zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzr   Tr   Nt   bgus	con
tent zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz	r   r^   r    r  r   r   r   r_   r!   r   s   &  r   ,test_set_audio_aif_with_quoted_printable_cte?TestRawDataManager.test_set_audio_aif_with_quoted_printable_cted  s      6	gw3EFq8?? 4C $D EKF9DU	W 	d3W='2r   c                p   V P                  4       pRpVP                  VRRRR7       V P                  \        V4      \        P
                  ! R4      P                  R4      R,           R,           4       V P                  VP                  R	R
7      V4       V P                  VP                  4       V4       R# )rF  videompegbinaryr  z~            Content-Type: video/mpeg
            Content-Transfer-Encoding: binary
            MIME-Version: 1.0

            r"  s7   bgus	con
t
ent zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzs=   zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzTr   NrI  rJ  r   s   &  r   #test_set_video_mpeg_with_binary_cte6TestRawDataManager.test_set_video_mpeg_with_binary_ctez  s     6	gwH=q8?? 4 $
  M$M M	$M 		N 	d3W='2r   c                p   V P                  4       pRpVP                  VRRRR7       V P                  \        V4      \        P
                  ! R4      P                  R4      R,           R,           4       V P                  VP                  R	R
7      V4       V P                  VP                  4       V4       R# )s   bgus	con
tent
applicationoctet-stream8bitr  z            Content-Type: application/octet-stream
            Content-Transfer-Encoding: 8bit
            MIME-Version: 1.0

            r"  s   bgus	con
t
ent
s=   zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Tr   NsM   bgus	con
tent
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
rJ  r   s   &  r   /test_set_application_octet_stream_with_8bit_cteBTestRawDataManager.test_set_application_octet_stream_with_8bit_cte  s      >	g}n&Iq8?? 4 $
 &$' N$N 	O 	d3W='2r   c           
        V P                  4       pR pV P                  P                  p\        P                  ! WV! RR4      V! RR4      V! RR4      3R7       V P                  \        V4      \        P                  ! R4      4       R# )	r   rx   r   r+  r)  zI'm talking to myself.headersz            Content-Type: text/plain; charset="utf-8"
            To: foo@example.com
            From: foo@example.com
            Subject: I'm talking to myself.
            Content-Transfer-Encoding: 7bit

            Simple message.
            N)	r   r   header_factoryr   r^   r    r   r   r   r"   r&   r   r\  s   &   r   $test_set_headers_from_header_objects7TestRawDataManager.test_set_headers_from_header_objects  s     %33$$Q4!236#459&>?:A 	B 	Q 2 " 	r   c                    V P                  4       pR p\        P                  ! WRR7       V P                  \	        V4      \
        P                  ! R4      4       R# )r   rZ  z            Content-Type: text/plain; charset="utf-8"
            X-Foo-Header: foo
            X-Bar-Header: bar
            Content-Transfer-Encoding: 7bit

            Simple message.
            N)zX-Foo-Header: foozX-Bar-Header: bar)r   r   r^   r    r   r   r   r   s   &  r   test_set_headers_from_strings0TestRawDataManager.test_set_headers_from_strings  sP     %$$Q :" 	# 	Q 2 " 	r   c                    V P                  4       pR pV P                  \        R4      ;_uu_ 4        \        P                  ! WRR7       RRR4       R#   + '       g   i     R# ; i)r   r   rZ  N)zContent-Type: foo/bar)r   r8   r7  r   r^   r   s   &  r   <test_set_headers_with_invalid_duplicate_string_header_raisesOTestRawDataManager.test_set_headers_with_invalid_duplicate_string_header_raises  sM     %##J??(( >*  @???s   AA%	c           
        V P                  4       pR pV P                  P                  pV P                  \        R4      ;_uu_ 4        \
        P                  ! WV! RR4      3R7       RRR4       R#   + '       g   i     R# ; i)r   r   z foo/barrZ  N)r   r   r\  r8   r7  r   r^   r]  s   &   r   <test_set_headers_with_invalid_duplicate_header_header_raisesOTestRawDataManager.test_set_headers_with_invalid_duplicate_header_header_raises  sf     %33##J??((~z:>=  @???s   !A22B	c                   V P                  4       pR pV P                  \        R4      ;_uu_ 4        \        P                  ! WRR7       \        VR,          P                  4       RRR4       R#   + '       g   i     R# ; i)r   a@fairly@@invalid@addressrZ  rx   N)zTo: a@fairly@@invalid@address)r   r8   r7  r   r^   printdefectsr   s   &  r   4test_set_headers_with_defective_string_header_raisesGTestRawDataManager.test_set_headers_with_defective_string_header_raises  s`     %##J0KLL(( >2  !D'//"	 MLLLs   5A00B	c           
     D   V P                  4       pR pV P                  P                  pV P                  \        R4      ;_uu_ 4        \
        P                  ! WV! RR4      3R7       \        VR,          P                  4       RRR4       R#   + '       g   i     R# ; i)r   rj  rx   rZ  N)	r   r   r\  r8   r7  r   r^   rk  rl  r]  s   &   r   4test_set_headers_with_defective_header_header_raisesGTestRawDataManager.test_set_headers_with_defective_header_header_raises  s{     %33##J0KLL((t%@A>D  !D'//"	 MLLLs   =BB	c                ~    V P                  4       pVP                  R RR7       V P                  VR,          R4       R# )r   inlinedispositionContent-DispositionNr   r^   r    r   s   & r   test_set_disposition_inline.TestRawDataManager.test_set_disposition_inline  s6     	e2018<r   c                ~    V P                  4       pVP                  R RR7       V P                  VR,          R4       R# )r   
attachmentrt  rv  Nrw  r   s   & r   test_set_disposition_attachment2TestRawDataManager.test_set_disposition_attachment  s6     	e601<@r   c                ~    V P                  4       pVP                  R R R7       V P                  VR,          R 4       R# )r   rt  rv  Nrw  r   s   & r   test_set_disposition_foo+TestRawDataManager.test_set_disposition_foo  s6     	e/0159r   c                ~    V P                  4       pVP                  R RR7       V P                  VR,          R4       R# )r   bar.txtfilenamerv  zattachment; filename="bar.txt"Nrw  r   s   & r   test_set_filename$TestRawDataManager.test_set_filename  s9     	ei0019	;r   c                    V P                  4       pVP                  R RRR7       V P                  VR,          R4       R# )r   rs  r  )ru  r  rv  zinline; filename="bar.txt"Nrw  r   s   & r   (test_set_filename_and_disposition_inline;TestRawDataManager.test_set_filename_and_disposition_inline  s9     	eIF013OPr   c                    V P                  4       pVP                  R RR7       V P                  \        V4      \        P
                  ! R4      P                  R4      4       R# )r   u   ábárî.txtr  a              Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 7bit
            Content-Disposition: attachment;
             filename*=utf-8''%C3%A1b%C3%A1r%C3%AE.txt
            MIME-Version: 1.0

            foo
            r"  N)r   r^   r    r  r   r   r   r   s   & r   test_set_non_ascii_filename.TestRawDataManager.test_set_non_ascii_filename  sO     	en5q8?? 4 $ 	"r   c                    V P                  4       pVP                  R RRRR7       V P                  \        V4      \        P
                  ! R4      4       R# )s   ASCII-only message.
rT  rU  r  )r   r   r  z            Content-Type: application/octet-stream
            Content-Transfer-Encoding: 7bit
            MIME-Version: 1.0

            ASCII-only message.
            N)r   r^   r    r   r   r   r   s   & r   test_set_content_bytes_cte_7bit2TestRawDataManager.test_set_content_bytes_cte_7bit  sP     	."N 	 	HQ 2 " 	r   
text_plain	text_htmlapplication_octet_stream
image_jpegmessage_rfc822message_external_bodyc                    V P                  4       pVP                  ! V.VO5R R/  V P                  VR,          R4       V P                  VR,          R4       R# )r[  r   r   r   zbar@simple.netN)zTo: foo@example.comzFrom: bar@simple.netrw  r"   rZ   mimetyper&   s   &&& r   !content_object_as_header_receiver4TestRawDataManager.content_object_as_header_receiver!  s[     	c 	%H 	% /$ 	% 	4"346$45r   c                    V P                  4       pVP                  ! V.VO5R R/  V P                  VR,          R4       R# )ru  rs  rv  Nrw  r  s   &&& r   -content_object_as_disposition_inline_receiver@TestRawDataManager.content_object_as_disposition_inline_receiver)  s<     	c;H;(;018<r   c                   V P                  4       pVP                  ! V.VO5R RRR/  V P                  VR,          R4       V P                  VP                  4       R4       V P                  VR,          P                  R,          R4       R# )ru  rs  r  u   bár.txtrv  u   inline; filename="bár.txt"N)r   r^   r    get_filenameparamsr  s   &&& r   -content_object_as_non_ascii_filename_receiver@TestRawDataManager.content_object_as_non_ascii_filename_receiver.  sz     	cPHP(PZP013PQ):60188DjQr   c                    V P                  4       pVP                  ! V.VO5R R/  V P                  VR,          R4       R# )cidsome_random_stuffz
Content-IDNrw  r  s   &&& r   content_object_as_cid_receiver1TestRawDataManager.content_object_as_cid_receiver5  s<     	c>H>*=><*=>r   c                    V P                  4       pR RRR/pVP                  ! V.VO5RV/  \        V\        4      '       d   RVR&   V P	                  VR,          P
                  V4       R# )	r   u   bárry   r   r  r   r   r   N)r   r^   
isinstancer   r    r  )r"   rZ   r  r&   r  s   &&&  r   !content_object_as_params_receiver4TestRawDataManager.content_object_as_params_receiver:  sf     .	c4H4V4c3 'F9>*116:r   r   N)r   r   )r   )r   )   content)rT  octet_stream)r  )r?  r@  )r6  )Cr@   rA   rB   rC   r   r   cloner   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-  r3  r<  rC  rK  rQ  rW  r^  ra  rd  rg  rm  rp  rx  r|  r  r  r  r  r  content_object_paramsr  r  r  r  r  rD   r   r   s   @r   r   r      s     ^^!!"2B " DFGK1MMMP,,:
Q=,O(
N3033333"3$333&3>N
S
_
=:.=`,(; 3,3"3"$##=
A
:;Q
"
 	o+" %F579b/')-?!@
6=
R?
; ;r   r   __main__)unittesttest.test_emailr   r   r   emailr   email.messager   email.contentmanagerr   r   r
   r   r@   mainr   r   r   <module>r     sm     7   & A z+ z+ z+z x
; x
; x
;v zMMO r   