
    2hhD                     "   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	rS SKJ
r
  S r " S S\R                  5      r " S S\5      r " S S	\R                  5      r " S
 S\R                  5      r\S:X  a  \R&                  " 5         gg)    N)headerregistryc                 H    U R                  5       nUR                  U5        U$ N)copyupdate)base_defaultsdifferencesdefaultss      D/opt/python-3.13.8/usr/lib/python3.13/test/test_email/test_policy.pymake_defaultsr      s!    !!#HOOK O    c                      \ rS rSrSrSSSSSSSS.r\R                  5       r\R                  SS\	R                  R                  R                  S	\	R                  R                  R                  S\	R                  R                  S
.5        \	R                  R                  5       r\	R                  R"                  \" \0 5      \	R                  R&                  \" \0 5      \	R                  R(                  \" \SS05      \	R                  R*                  \" \SSS.5      \	R                  R,                  \" \SSS.5      \	R                  R.                  \" \SS05      \\" \0 5      0r\R                  \\   S'   S rS rS rS rS rS rS rS r S r!S r" " S S5      r# " S S\$5      r%S r&S  r' " S! S"\	R                  R                  5      r(S# r)S$ r*S% r+ " S& S'5      r,S( r-S) r.S* r/S+ r0S, r1S- r2S. r3S/r4g)0PolicyAPITests   TN   
8bitFN)max_line_lengthlinesepcte_typeraise_on_defectmangle_from_message_factoryverify_generated_headerslong)utf8r   header_factoryrefold_sourcecontent_managerr   r   r   z
)r   r   )r   r   r   r   c           
      &   U R                   R                  5        Ha  u  pUR                  5        HH  u  p4U R                  XS9   U R                  [	        X5      USR                  U5      5        S S S 5        MJ     Mc     g ! , (       d  f       M`  = f)Npolicyattrz2change {} docs/docstrings if defaults have changed)policiesitemssubTestassertEqualgetattrformat)selfr"   expectedr#   values        r   test_defaultsPolicyAPITests.test_defaultsC   sq     $ 3 3 5F'~~/\\\;$$WV%:E&./5vf~? <;  0 !6;;s   ,B
Bc           
         U R                   R                  5        H  u  p[        U5       H  nU R                  XS9   UR	                  S5      (       dA  [        [        [        R                  R                  U5      [        R                  5      (       a   S S S 5        Mu  U R                  X2SR                  U5      5         S S S 5        M     M     g ! , (       d  f       M  = f)Nr!   _z{} is not fully tested)r$   r%   dirr&   
startswith
isinstancer(   emailr"   EmailPolicytypesFunctionTypeassertInr)   )r*   r"   r+   r#   s       r   test_all_attributes_covered*PolicyAPITests.test_all_attributes_coveredK   s     $ 3 3 5FF\\\;,,&wu||/G/G'N"'"4"46 6 	 <; d&>&E&Ed&KM <; $ !6;;s   AC !C
C"c                     U R                  [        5       n[        R                  R	                  5         S S S 5        [        WR                  5      nSnU H  nU R                  XB5        M     g ! , (       d  f       N@= f)N)foldfold_binaryheader_fetch_parseheader_source_parseheader_store_parse)assertRaises	TypeErrorr4   r"   Policystr	exceptionr8   )r*   cmmsgabstract_methodsmethods        r   test_abcPolicyAPITests.test_abcW   s^    y)RLL! *",,2
 'FMM&& ' *)s   A//
A=c                 L   U R                   R                  5        Hb  u  pU H1  nU R                  [        US-   5         [	        XS 5        S S S 5        M3     U R                  [        S5         S Ul        S S S 5        Md     g ! , (       d  f       Mo  = f! , (       d  f       M  = f)Nz.*read-onlyzno attribute.*foo)r$   r%   assertRaisesRegexAttributeErrorsetattrfoo)r*   r"   r
   r#   s       r   test_policy_is_immutable'PolicyAPITests.test_policy_is_immutablec   s     $ 3 3 5F ++ND<NOF$/ PO ! ''8KL!
 ML	 !6OOLLs   B-B
B
B#	c                     U R                   R                  5        HL  u  pU Vs0 s H  o3S _M     nnUR                  " S0 UD6nU H  nU R                  [	        XS5      5        M     MN     g s  snf )N )r$   r%   cloneassertIsNoner(   )r*   policyclassr
   r#   testattrdictr"   s         r   !test_set_policy_attrs_when_cloned0PolicyAPITests.test_set_policy_attrs_when_clonedk   sg     &*]]%8%8%:!K3;<84$J8L< &&66F !!'&"78 ! &;<s   A,c                     U R                    HK  nU R                  [        5         U" S S9  S S S 5        U R                  [        5         U" S S9  S S S 5        MM     g ! , (       d  f       N7= f! , (       d  f       Mp  = f)N) this_keyword_should_not_be_valid)newtline)r$   rA   rB   )r*   rW   s     r   *test_reject_non_policy_keyword_when_called9PolicyAPITests.test_reject_non_policy_keyword_when_calledt   sW    ==K""9-TB .""9-T* .- )----s   A	A.
A+	.
A=	c                    U R                   R                  5       n[        R                  R                  R                  SS9n[        R                  R                  R                  SS9nX#-   nUR                  SS9  UR                  5        H   u  pVU R                  [        XE5      U5        M"     X2-   nUR                  SS9  UR                  5        H   u  pVU R                  [        XE5      U5        M"     U[        R                  R                  -   nUR                  5        H   u  pVU R                  [        XE5      U5        M"     g )Nd   r   2   )
policy_defaultsr   r4   r"   defaultrU   r   r%   r'   r(   )r*   r+   p1p2addedr#   r,   s          r   test_policy_addition#PolicyAPITests.test_policy_addition{   s   '',,.\\!!'''<\\!!''';+#>>+KDWU159 ,,#>>+KDWU159 ,,,,#>>+KDWU159 ,r   c                    SnSn[         R                  R                  5       nSnXCS'   [         R                  R                  R                  5       n[         R                  R                  R                  SS9nU R                  UR                  SUS   5      U5        U R                  UR                  SUS   5      U5        U R                  UR                  SU5      U5        U R                  UR                  SU5      U5        g )NSubject: =?utf-8?q?=C3=A1?=
u   Subject: á
   áSubjectT)r   r4   messageEmailMessager"   re   rU   r'   r<   )r*   expected_asciiexpected_utf8rG   sp_asciip_utf8s          r   test_fold_utf8PolicyAPITests.test_fold_utf8   s    8'mm((*I,,&&,,.%%+++6iY@.QYI?Oi3^DY2MBr   c                 ~   Sn[         R                  R                  5       nSUS'   [         R                  R                  R                  SS9n[         R                  R                  R                  S S9nU R                  UR                  SUS   5      U5        U R                  UR                  SUS   5      U5        g )Nrl   rm   rn   r   rb   ro   )r*   r+   rG   rf   rg   s        r   test_fold_zero_max_line_length-PolicyAPITests.test_fold_zero_max_line_length   s    2mm((*I\\!!''':\\!!'''=C	N;XFC	N;XFr   c                 B    " S S5      nU" 5       n[        5       n[        R                  R                  5       nUR	                  X#5        U R                  UR                  U/5        [        5       nUR	                  X%5        U R                  UR                  X5/5        g )Nc                       \ rS rSrS rSrg)2PolicyAPITests.test_register_defect.<locals>.Dummy   c                     / U l         g r   defectsr*   s    r   __init__;PolicyAPITests.test_register_defect.<locals>.Dummy.__init__   s	    !r   r   N__name__
__module____qualname____firstlineno__r   __static_attributes__rT   r   r   Dummyr~      s    "r   r   )objectr4   r"   r5   register_defectr'   r   )r*   r   objdefectr"   defect2s         r   test_register_defect#PolicyAPITests.test_register_defect   s~    	" 	" g))+s+vh/(s,v&78r   c                       \ rS rSrS rSrg)PolicyAPITests.MyObj   c                     / U l         g r   r   r   s    r   r   PolicyAPITests.MyObj.__init__   s	    DLr   r   Nr   rT   r   r   MyObjr      s    	r   r   c                       \ rS rSrSrg)PolicyAPITests.MyDefect   rT   Nr   r   r   r   r   rT   r   r   MyDefectr      s    r   r   c                    U R                  5       nU R                  S5      nU R                  U R                  S5         [        R                  R
                  R                  X5        S S S 5        g ! , (       d  f       g = f)Nthe telly is broken)r   r   rM   r4   r"   stricthandle_defectr*   rP   r   s      r   #test_handle_defect_raises_on_strict2PolicyAPITests.test_handle_defect_raises_on_strict   sV    jjl45##DMM3HILL--c: JIIs   *A11
A?c                    U R                  5       nU R                  S5      n[        R                  R                  R                  X5        U R                  UR                  U/5        U R                  S5      n[        R                  R                  R                  X5        U R                  UR                  X#/5        g Nonetwo)r   r   r4   r"   re   r   r'   r   )r*   rP   defect1r   s       r   #test_handle_defect_registers_defect2PolicyAPITests.test_handle_defect_registers_defect   s    jjl--&**38wi0--&**38w&89r   c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )PolicyAPITests.MyPolicy   Nc                 *   > [         TU ]  " US/ 0UD6  g )Nr   )superr   )r*   argskw	__class__s      r   r    PolicyAPITests.MyPolicy.__init__   s    Gd5B5"5r   c                 :    U R                   R                  U5        g r   )r   append)r*   r   r   s      r   r   'PolicyAPITests.MyPolicy.register_defect   s    LL'r   rT   )	r   r   r   r   r   r   r   r   __classcell__)r   s   @r   MyPolicyr      s    	6	( 	(r   r   c                     U R                  5       nU R                  S5      nU R                  U R                  S5         U R                  SS9R	                  X5        S S S 5        g ! , (       d  f       g = f)Nr   T)r   )r   r   rM   r   r   r   s      r   ,test_overridden_register_defect_still_raises;PolicyAPITests.test_overridden_register_defect_still_raises   sW    jjl45##DMM3HIMM$M/==cJ JIIs   A&&
A4c                    U R                  5       nU R                  S5      nU R                  5       nUR                  X5        U R	                  UR
                  U/5        U R	                  UR
                  / 5        U R                  S5      nUR                  X5        U R	                  UR
                  X$/5        U R	                  UR
                  / 5        g r   )r   r   r   r   r'   r   )r*   rP   r   	my_policyr   s        r   %test_overridden_register_defect_works4PolicyAPITests.test_overridden_register_defect_works   s    jjl--&MMO	-**WI6b)--&-**W,>?b)r   c                    [         R                  R                  R                  SS5      nU R	                  UR
                  S5        U R                  U[        R                  5        U R                  U[        R                  5        g )NTesttest)
r4   r"   re   r   r'   nameassertIsInstancer   UnstructuredHeader
BaseHeader)r*   hs     r   test_default_header_factory*PolicyAPITests.test_default_header_factory   s^    LL  //?(a!B!BCa!:!:;r   c                   @    \ rS rSr\R
                  R                  rSrg)PolicyAPITests.Foo   rT   N)r   r   r   r   r   r   parser   rT   r   r   Foor      s    1177r   r   c                    [         R                  R                  5       n[         R                  R                  5       nUR                  R	                  SU R
                  5        UR                  SS5      nU R                  X0R
                  5        U R                  U[        R                  5        UR                  SS5      nU R                  X0R
                  5        U R                  U[        R                  5        g NrP   r   )
r4   r"   r5   r   map_to_typer   r   assertNotIsInstancer   r   r*   policy1policy2r   s       r   $test_each_Policy_gets_unique_factory3PolicyAPITests.test_each_Policy_gets_unique_factory   s    ,,**,,,**,**5$((;""5&1a*  N$E$EF""5&1  HH-a!B!BCr   c                 `   [         R                  R                  5       nUR                  5       nUR                  R                  SU R                  5        UR	                  SS5      nU R                  X0R                  5        UR	                  SS5      nU R                  X0R                  5        g r   )r4   r"   r5   rU   r   r   r   r   r   s       r   test_clone_copies_factory(PolicyAPITests.test_clone_copies_factory   s    ,,**,--/**5$((;""5&1a*""5&1a*r   c                 <   [         R                  R                  5       nUR                  nU[         R                  R                  -   nU R                  UR                  U5        [         R                  R                  U-   nU R                  UR                  U5        g r   )r4   r"   r5   r   r   r'   )r*   mypolicy	myfactory	newpolicys       r   "test_new_factory_overrides_default1PolicyAPITests.test_new_factory_overrides_default  ss    <<++-++	u||222	119=LL''(2	119=r   c                 &   [         R                  R                  [         R                  R                  -   nU R	                  UR
                  [         R                  R                  R
                  5        U R	                  UR                  SS05        g )Nr   T)r4   r"   re   r   r'   r   r5   __dict__)r*   r   s     r   6test_adding_default_policies_preserves_default_factoryEPolicyAPITests.test_adding_default_policies_preserves_default_factory	  sf    LL((5<<+>+>>	1111@@	B++.?-FGr   c                     [         R                  R                  R                  SS9nUR	                  SS5      nU R                  US5        g )N   rb   rn   u   ąąąąąąąąąąąązSubject: 
 =?utf-8?q?=C4=85?=
 =?utf-8?q?=C4=85?=
 =?utf-8?q?=C4=85?=
 =?utf-8?q?=C4=85?=
 =?utf-8?q?=C4=85?=
 =?utf-8?q?=C4=85?=
 =?utf-8?q?=C4=85?=
 =?utf-8?q?=C4=85?=
 =?utf-8?q?=C4=85?=
 =?utf-8?q?=C4=85?=
 =?utf-8?q?=C4=85?=
 =?utf-8?q?=C4=85?=
)r4   r"   re   rU   r<   r'   )r*   r"   actuals      r   *test_non_ascii_chars_do_not_cause_inf_loop9PolicyAPITests.test_non_ascii_chars_do_not_cause_inf_loop  sE    %%++B+?Y	2)	*r   c                 f   SnS H  nU R                  US9   [        R                  R                  R	                  US9nU R                  [        R                  R                  5         UR                  SU5        S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)Nz;Melt away the pounds with this one simple trick! 1234567890)      	   )maxlenrb   rn   )	r&   r4   r"   re   rU   rA   errorsHeaderParseErrorr<   )r*   subjectr   r"   s       r   test_short_maxlen_error&PolicyAPITests.test_short_maxlen_error  s     PFV,--33F3K&&u||'D'DEKK	73 F -,   FE -,s$   AB!(B;B!
BB!!
B0	c                 b   [         R                  R                  R                  SS9nS Hp  nU R	                  US9   [         R
                  " SUS9n " S S[        5      nUS		 U" U5      US	'   U R                  UR                  5       U S
35        SSS5        Mr     g! , (       d  f       M  = f)z.Turning protection off allows header injectionF)r   )zHeader: Value
Bad: Injection
zHeader: NoNewLine)textzHeader: Value

Bodyr"   c                       \ rS rSrSrS rSrg)CPolicyAPITests.test_verify_generated_headers.<locals>.LiteralHeaderi6  Headerc                     U $ r   rT   )r*   kwargss     r   r<   HPolicyAPITests.test_verify_generated_headers.<locals>.LiteralHeader.fold8  s    #r   rT   N)r   r   r   r   r   r<   r   rT   r   r   LiteralHeaderr   6  s    #D$r   r   r   z
BodyN)	r4   r"   re   rU   r&   message_from_stringrD   r'   	as_string)r*   r"   r   rp   r   s        r   test_verify_generated_headers,PolicyAPITests.test_verify_generated_headers*  s    %%++U+K
D 4(33/!$C $
 H%$1$$7!  %%'fFO )(	
 )(s   AB
B.	rT   )5r   r   r   r   longMessagecompat32_defaultsr   rd   r   r4   r"   r5   r   r   rp   rq   
new_policycompat32r   re   SMTPSMTPUTF8HTTPr   r$   r-   r9   rJ   rQ   rY   r^   ri   rw   rz   r   r   	Exceptionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   rT   r   r   r   r      s#   K %'$($*$)$($($(
 (,,.O$)$)$)LL$<$<$K$K$*$)LL$<$<$L$L$)$)MM$>$>
  ))+J}->CmOR@=*3V)<>}_9?6:.< = 	=5;=A*CD 	]?,=t+DFM/26
H" .8-F-FHZ)*?
M
'"9+: C"
G9 9 ;:(5<<++ (K
*<8 8	D+>H*4&r   r   c                       \ rS rSrSrg)TestExceptioniH  rT   Nr   rT   r   r   r  r  H  s    r   r  c                       \ rS rSr " S S\R
                  R                  5      rS rS r	S r
S rS rS	 rSS jrS rS rS rS rSrg
)TestPolicyPropagationiK  c                   .    \ rS rSrS r\=r=rr\=rr	Sr
g)TestPolicyPropagation.MyPolicyiP  c                     [        S5      e)Nr   )r  )r*   r   r   s      r   	badmethod(TestPolicyPropagation.MyPolicy.badmethodQ  s    ''r   rT   N)r   r   r   r   r  r<   r=   header_fetch_parserr?   r@   r   rT   r   r   r   r  P  s#    	(3<<<{03<<0r   r   c                     U R                  [        S5         [        R                  " SU R                  S9  S S S 5        g ! , (       d  f       g = f)N^test$Subject: test

r   )rM   r  r4   r   r   r   s    r   test_message_from_string.TestPolicyPropagation.test_message_from_stringV  s6    ##M8<%%&9-1]]< =<<    A  
Ac                     U R                  [        S5         [        R                  " SU R                  S9  S S S 5        g ! , (       d  f       g = f)Nr     Subject: test

r   )rM   r  r4   message_from_bytesr   r   s    r   test_message_from_bytes-TestPolicyPropagation.test_message_from_bytes[  s6    ##M8<$$%9,0MM; =<<r  c                     [         R                  " S5      nU R                  [        S5         [        R
                  " XR                  S9  S S S 5        g ! , (       d  f       g = f)Nr  r  r   )ioStringIOrM   r  r4   message_from_filer   r*   fs     r   test_message_from_file,TestPolicyPropagation.test_message_from_file`  s?    KK+,##M8<##Amm< =<<   A
A#c                     [         R                  " S5      nU R                  [        S5         [        R
                  " XR                  S9  S S S 5        g ! , (       d  f       g = f)Nr  r  r   )r"  BytesIOrM   r  r4   message_from_binary_filer   r%  s     r   test_message_from_binary_file3TestPolicyPropagation.test_message_from_binary_filee  s?    JJ+,##M8<**1]]C =<<r)  c                     [         R                  R                  U R                  S9nU R	                  [
        S5         UR                  S5        S S S 5        g ! , (       d  f       g = f)Nr   r  r  )r4   parserParserr   rM   r  parsestrr*   ps     r   test_parser!TestPolicyPropagation.test_parserl  sF    LLt}}5##M8<JJ*+ =<<   A
A'c                     [         R                  R                  U R                  S9nU R	                  [
        S5         UR                  S5        S S S 5        g ! , (       d  f       g = f)Nr   r  r  )r4   r0  BytesParserr   rM   r  
parsebytesr3  s     r   test_bytes_parser'TestPolicyPropagation.test_bytes_parserq  sF    LL$$DMM$:##M8<LL-. =<<r7  Nc                     Uc(  [         R                  R                  R                  5       OUU l        [         R                  " XR                  S9$ )Nr   )r4   r"   re   rU   r   )r*   sourcer"   s      r   	_make_msgTestPolicyPropagation._make_msgz  s7    6<nell**002&((DDr   c                 p    U R                  5       nU R                  UR                  U R                  5        g r   )r?  assertIsr"   r*   rG   s     r   (test_parser_propagates_policy_to_message>TestPolicyPropagation.test_parser_propagates_policy_to_message~  s$    nncjj$++.r   c                     U R                  [        R                  " S5      5      nUR                  5        H)  nU R	                  UR
                  U R
                  5        M+     g )Na+              Subject: mime test
            MIME-Version: 1.0
            Content-Type: multipart/mixed, boundary="XXX"

            --XXX
            Content-Type: text/plain

            test
            --XXX
            Content-Type: text/plain

            test2
            --XXX--
            )r?  textwrapdedentwalkrB  r"   )r*   rG   parts      r   -test_parser_propagates_policy_to_sub_messagesCTestPolicyPropagation.test_parser_propagates_policy_to_sub_messages  sH    nnX__ .   HHJDMM$++t{{3 r   c                 8   U R                  S[        R                  R                  R	                  SS9S9n[
        R                  " 5       n[        R                  R                  U5      nUR                  U5        U R                  UR                  5       S5        g NzSubject: test
To: foo

X)r   r   zSubject: testXTo: fooXX)r?  r4   r"   re   rU   r"  r#  	generator	Generatorflattenr'   getvalue)r*   rG   rt   gs       r   +test_message_policy_propagates_to_generatorATestPolicyPropagation.test_message_policy_propagates_to_generator  su    nn9$)LL$8$8$>$>s$>$K  MKKMOO%%a(			#'@Ar   c                     U R                  S[        R                  R                  R	                  SS9S9nU R                  UR                  5       S5        g rN  )r?  r4   r"   re   rU   r'   r  rC  s     r   %test_message_policy_used_by_as_string;TestPolicyPropagation.test_message_policy_used_by_as_string  sK    nn9$)LL$8$8$>$>s$>$K  M*CDr   r   )r  N)r   r   r   r   r4   r"   rC   r   r  r  r'  r-  r5  r;  r?  rD  rK  rU  rX  r   rT   r   r   r  r  K  sS    
=5<<&& =<
;
=
D,
/E/4&BEr   r  c                       \ rS rSrS rSrg)TestConcretePoliciesi  c                     [         R                  R                  5       nU R                  [        UR
                  SS5        g )NFromzspam
egg@foo.py)r4   r"   r5   rA   
ValueErrorr@   )r*   instances     r   (test_header_store_parse_rejects_newlines=TestConcretePolicies.test_header_store_parse_rejects_newlines  s3    <<++-*"55 "4	6r   rT   N)r   r   r   r   r`  r   rT   r   r   r[  r[    s    6r   r[  __main__)r"  r6   rG  unittestemail.errorsr4   email.policyemail.parseremail.generatoremail.messager   r   TestCaser   r  r  r  r[  r   mainrT   r   r   <module>rk     s    	          
pX&& pn		I 	UEH-- UEp68,, 6 zMMO r   