+
    BiD                     (   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t^ RIH
t
 R t ! R R]P                  4      t ! R R]4      t ! R R	]P                  4      t ! R
 R]P                  4      t]R8X  d   ]P&                  ! 4        R# R# )    N)headerregistryc                 H    V P                  4       pVP                  V4       V# N)copyupdate)base_defaultsdifferencesdefaultss   && 2/usr/lib/python3.14/test/test_email/test_policy.pymake_defaultsr      s!    !!#HOOK O    c                   ,  a  ] tR t^t o RtR^NRRRRRRR	RR
RRR/t]P                  4       t]P                  RRRRR]	P                  P                  P                  RRR]	P                  P                  P                  R	RR
]	P                  P                  /4       ]	P                  P                  4       t]	P                  P"                  ]! ]/ 4      ]	P                  P&                  ]! ]/ 4      ]	P                  P(                  ]! ]RR/4      ]	P                  P*                  ]! ]RRRR/4      ]	P                  P,                  ]! ]RRRR/4      ]	P                  P.                  ]! ]RR/4      ]]! ]/ 4      /t]P                  ]],          R&   R tR tR tR tR tR tR tR t R t!R t" ! R R4      t# ! R R ]$4      t%R! t&R" t' ! R# R$]	P                  P                  4      t(R% t)R& t*R' t+ ! R( R)4      t,R* t-R+ t.R, t/R- t0R. t1R/ t2R0 t3R1t4V t5R# )2PolicyAPITestsTmax_line_lengthlinesep
cte_type8bitraise_on_defectFmangle_from_message_factoryNverify_generated_headersutf8header_factoryrefold_sourcelongcontent_managerz
c                B   V P                   P                  4        Fl  w  rVP                  4        FS  w  r4V P                  WR 7      ;_uu_ 4        V P                  \	        W4      VRP                  V4      4       RRR4       KU  	  Kn  	  R#   + '       g   i     Kn  ; i)policyattrz2change {} docs/docstrings if defaults have changedN)policiesitemssubTestassertEqualgetattrformat)selfr    expectedr!   values   &    r   test_defaultsPolicyAPITests.test_defaultsC   sw     $ 3 3 5F'~~/\\\;;$$WV%:E&./5vf~? <;  0 !6;;;s   ,B	Bc                   V P                   P                  4        F  w  r\        V4       F  pV P                  WR 7      ;_uu_ 4        VP	                  R4      '       gC   \        \        \        P                  P                  V4      \        P                  4      '       d    RRR4       K  V P                  W2RP                  V4      4        RRR4       K  	  K  	  R#   + '       g   i     K  ; i)r   _Nz{} 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!	!C2c                   V P                  \        4      ;_uu_ 4       p\        P                  P	                  4        R R R 4       \        XP                  4      pRpV F  pV P                  WB4       K  	  R #   + '       g   i     LC; i)N)foldfold_binaryheader_fetch_parseheader_source_parseheader_store_parse)assertRaises	TypeErrorr2   r    Policystr	exceptionr6   )r(   cmmsgabstract_methodsmethods   &    r   test_abcPolicyAPITests.test_abcW   sa    y))RLL! *",,2
 'FMM&& ' *)s   A88B	c           	     ~   V P                   P                  4        Fv  w  rV F=  pV P                  \        VR ,           4      ;_uu_ 4        \	        WR4       RRR4       K?  	  V P                  \        R4      ;_uu_ 4        RVn        RRR4       Kx  	  R#   + '       g   i     K  ; i  + '       g   i     K  ; i)z.*read-onlyNz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OF$/ PO ! ''8KLL!
 ML	 !6OOOLLLs   
B	B+B(+B<c                    V P                   P                  4        FK  w  rV Uu/ uF  q3R bK  	  ppVP                  ! R/ VB pV F  pV P                  \	        WS4      4       K  	  KM  	  R # u upi )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                6   V P                    Fa  pV P                  \        4      ;_uu_ 4        V! R R7       R R R 4       V P                  \        4      ;_uu_ 4        V! R R7       R R R 4       Kc  	  R #   + '       g   i     LE; i  + '       g   i     K  ; i)N) this_keyword_should_not_be_valid)newtline)r"   r?   r@   )r(   rU   s   & r   *test_reject_non_policy_keyword_when_called9PolicyAPITests.test_reject_non_policy_keyword_when_calledt   s`    ==K""9--TB .""9--T* .- )-----s   
A4
B4BBc                   V P                   P                  4       p\        P                  P                  P                  ^dR7      p\        P                  P                  P                  ^2R7      pW#,           pVP                  ^2R7       VP                  4        F   w  rVV P                  \        WE4      V4       K"  	  W2,           pVP                  ^dR7       VP                  4        F   w  rVV P                  \        WE4      V4       K"  	  V\        P                  P                  ,           pVP                  4        F   w  rVV P                  \        WE4      V4       K"  	  R# )d   r   N)
policy_defaultsr   r2   r    defaultrS   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                &   R pRp\         P                  P                  4       pRpWCR&   \         P                  P                  P                  4       p\         P                  P                  P                  RR7      pV P                  VP                  RVR,          4      V4       V P                  VP                  RVR,          4      V4       V P                  VP                  RV4      V4       V P                  VP                  RV4      V4       R# )Subject: =?utf-8?q?=C3=A1?=
u   Subject: á
   áSubjectT)r   Nr2   messageEmailMessager    rb   rS   r%   r:   )r(   expected_asciiexpected_utf8rE   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                   R p\         P                  P                  4       pRVR&   \         P                  P                  P                  ^ R7      p\         P                  P                  P                  RR7      pV P                  VP                  RVR,          4      V4       V P                  VP                  RVR,          4      V4       R# )ri   rj   rk   r`   Nrl   )r(   r)   rE   rc   rd   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                D    ! R  R4      pV! 4       p\        4       p\        P                  P                  4       pVP	                  W#4       V P                  VP                  V.4       \        4       pVP	                  W%4       V P                  VP                  W5.4       R# )c                   &   a  ] tR t^t o R tRtV tR# )2PolicyAPITests.test_register_defect.<locals>.Dummyc                    . V n         R # r   defectsr(   s   &r   __init__;PolicyAPITests.test_register_defect.<locals>.Dummy.__init__   s	    !r   r}   N__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classdict__s   @r   Dummyr{      s     " "r   r   N)objectr2   r    r3   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                   &   a  ] tR t^t o R tRtV tR# )PolicyAPITests.MyObjc                    . V n         R # r   r}   r   s   &r   r   PolicyAPITests.MyObj.__init__   s	    DLr   r}   Nr   r   s   @r   MyObjr      s     	 	r   r   c                       ] tR t^tRtR# )PolicyAPITests.MyDefectrR   Nr   r   r   r   r   rR   r   r   MyDefectr      s    r   r   c                   V P                  4       pV P                  R 4      pV P                  V P                  R 4      ;_uu_ 4        \        P                  P
                  P                  W4       RRR4       R#   + '       g   i     R# ; i)the telly is brokenN)r   r   rK   r2   r    stricthandle_defectr(   rN   r   s   &  r   #test_handle_defect_raises_on_strict2PolicyAPITests.test_handle_defect_raises_on_strict   s\    jjl45##DMM3HIILL--c: JIIIs   *A::B	c                   V P                  4       pV P                  R 4      p\        P                  P                  P                  W4       V P                  VP                  V.4       V P                  R4      p\        P                  P                  P                  W4       V P                  VP                  W#.4       R# onetwoN)r   r   r2   r    rb   r   r%   r~   )r(   rN   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                   <   a a ] tR t^t oRtV 3R ltR tRtVtV ;t	# )PolicyAPITests.MyPolicyNc                ,   < \         SV `  ! VR . /VB  R# )r~   N)superr   )r(   argskw	__class__s   &*,r   r    PolicyAPITests.MyPolicy.__init__   s    Gd5B5"5r   c                <    V P                   P                  V4       R # r   )r~   append)r(   r   r   s   &&&r   r   'PolicyAPITests.MyPolicy.register_defect   s    LL'r   rR   )
r   r   r   r   r~   r   r   r   r   __classcell__)r   r   s   @@r   MyPolicyr      s     	6	( 	(r   r   c                   V P                  4       pV P                  R 4      pV P                  V P                  R 4      ;_uu_ 4        V P                  RR7      P	                  W4       RRR4       R#   + '       g   i     R# ; i)r   T)r   N)r   r   rK   r   r   r   s   &  r   ,test_overridden_register_defect_still_raises;PolicyAPITests.test_overridden_register_defect_still_raises   s]    jjl45##DMM3HIIMM$M/==cJ JIIIs   "A22B	c                   V P                  4       pV P                  R 4      pV P                  4       pVP                  W4       V P	                  VP
                  V.4       V P	                  VP
                  . 4       V P                  R4      pVP                  W4       V P	                  VP
                  W$.4       V P	                  VP
                  . 4       R# r   )r   r   r   r   r%   r~   )r(   rN   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                   \         P                  P                  P                  R R4      pV P	                  VP
                  R 4       V P                  V\        P                  4       V P                  V\        P                  4       R# )TesttestN)
r2   r    rb   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                   B    ] tR t^t]P
                  P                  tRtR# )PolicyAPITests.FoorR   N)r   r   r   r   r   r   parser   rR   r   r   Foor      s    1177r   r   c                   \         P                  P                  4       p\         P                  P                  4       pVP                  P	                  R V P
                  4       VP                  R R4      pV P                  W0P
                  4       V P                  V\        P                  4       VP                  R R4      pV P                  W0P
                  4       V P                  V\        P                  4       R# rN   r   N)
r2   r    r3   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                b   \         P                  P                  4       pVP                  4       pVP                  P                  R V P                  4       VP	                  R R4      pV P                  W0P                  4       VP	                  R R4      pV P                  W0P                  4       R# r   )r2   r    r3   rS   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                N   \         P                  P                  4       pVP                  pV\         P                  P                  ,           pV P                  VP                  V4       \         P                  P                  V,           pV P                  VP                  V4       R # r   )r2   r    r3   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                0   \         P                  P                  \         P                  P                  ,           pV P	                  VP
                  \         P                  P                  P
                  4       V P	                  VP                  R R/4       R# )r   TN)r2   r    rb   r   r%   r   r3   __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                    \         P                  P                  P                  ^R7      pVP	                  RR4      pV P                  VR4       R# )   r`   rk   Nu   ąąąąąąąąąąąą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?=
)r2   r    rb   rS   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           
        R pR F  pV P                  VR7      ;_uu_ 4        \        P                  P                  P	                  VR7      pV P                  \        P                  P                  4      ;_uu_ 4        VP                  RV4       RRR4       RRR4       K  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)z;Melt away the pounds with this one simple trick! 1234567890)maxlenr`   rk   N)      	   )	r$   r2   r    rb   rS   r?   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EKK	73 F -,   FE -,,s$   AB:>B'B:'B72B::Cc                   \         P                  P                  P                  RR7      pR F~  pV P	                  VR7      ;_uu_ 4        \         P
                  ! RVR7      p ! R R\        4      pVR V! V4      VR&   V P                  VP                  4       V R	24       R
R
R
4       K  	  R
#   + '       g   i     K  ; i)z.Turning protection off allows header injectionF)r   )textzHeader: Value

Bodyr    c                   *   a  ] tR tRt o RtR tRtV tR# )CPolicyAPITests.test_verify_generated_headers.<locals>.LiteralHeaderi6  Headerc                    V # r   rR   )r(   kwargss   &,r   r:   HPolicyAPITests.test_verify_generated_headers.<locals>.LiteralHeader.fold8  s    #r   rR   N)r   r   r   r   r   r:   r   r   r   s   @r   LiteralHeaderr   6  s     #D$ $r   r   r   z
BodyN)zHeader: Value
Bad: Injection
zHeader: NoNewLine)	r2   r    rb   rS   r$   message_from_stringrB   r%   	as_string)r(   r    r   rm   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B11CrR   )6r   r   r   r   longMessagecompat32_defaultsr   ra   r   r2   r    r3   r   r   rm   rn   
new_policycompat32r   rb   SMTPSMTPUTF8HTTPr   r"   r+   r7   rH   rO   rW   r\   rf   rt   rw   r   r   	Exceptionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   @r   r   r      sO    K 	BDFEDD"D
 (,,.OEEELL$<$<$K$KFELL$<$<$L$LEEMM$>$>
  ))+J}->CmOR@=*3V)<>}_.7.4d.< = 	=*3V*;T*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                       ] tR tRtRtR# )TestExceptioniH  rR   Nr   rR   r   r   r  r  H  s    r   r  c                      a  ] tR tRt o  ! R R]P
                  P                  4      tR tR t	R t
R tR tR	 tRR ltR tR tR tR tRtV tR
# )TestPolicyPropagationiK  c                   :   a  ] tR tRt o R t];t;tt];tt	Rt
V tR# )TestPolicyPropagation.MyPolicyiP  c                    \        R 4      h)r   )r  )r(   r   r   s   &*,r   	badmethod(TestPolicyPropagation.MyPolicy.badmethodQ  s    ''r   rR   N)r   r   r   r   r  r:   r;   header_fetch_parserr=   r>   r   r   r   s   @r   r   r  P  s&     	(3<<<{03<<0r   r   c                    V P                  \        R 4      ;_uu_ 4        \        P                  ! RV P                  R7       RRR4       R#   + '       g   i     R# ; i)^test$Subject: test

r   N)rK   r  r2   r   r   r   s   &r   test_message_from_string.TestPolicyPropagation.test_message_from_stringV  s<    ##M8<<%%&9-1]]< =<<<   #AA	c                    V P                  \        R 4      ;_uu_ 4        \        P                  ! RV P                  R7       RRR4       R#   + '       g   i     R# ; i)r     Subject: test

r   N)rK   r  r2   message_from_bytesr   r   s   &r   test_message_from_bytes-TestPolicyPropagation.test_message_from_bytes[  s<    ##M8<<$$%9,0MM; =<<<r  c                    \         P                  ! R 4      pV P                  \        R4      ;_uu_ 4        \        P
                  ! WP                  R7       RRR4       R#   + '       g   i     R# ; i)r  r  r   N)ioStringIOrK   r  r2   message_from_filer   r(   fs   & r   test_message_from_file,TestPolicyPropagation.test_message_from_file`  sE    KK+,##M8<<##Amm< =<<<   "A!!A2	c                    \         P                  ! R 4      pV P                  \        R4      ;_uu_ 4        \        P
                  ! WP                  R7       RRR4       R#   + '       g   i     R# ; i)r  r  r   N)r  BytesIOrK   r  r2   message_from_binary_filer   r   s   & r   test_message_from_binary_file3TestPolicyPropagation.test_message_from_binary_filee  sE    JJ+,##M8<<**1]]C =<<<r$  c                    \         P                  P                  V P                  R 7      pV P	                  \
        R4      ;_uu_ 4        VP                  R4       RRR4       R#   + '       g   i     R# ; i)r   r  r  N)r2   parserParserr   rK   r  parsestrr(   ps   & r   test_parser!TestPolicyPropagation.test_parserl  sL    LLt}}5##M8<<JJ*+ =<<<   	A%%A6	c                    \         P                  P                  V P                  R 7      pV P	                  \
        R4      ;_uu_ 4        VP                  R4       RRR4       R#   + '       g   i     R# ; i)r   r  r  N)r2   r+  BytesParserr   rK   r  
parsebytesr.  s   & r   test_bytes_parser'TestPolicyPropagation.test_bytes_parserq  sL    LL$$DMM$:##M8<<LL-. =<<<r2  Nc                    Vf)   \         P                  P                  P                  4       MTV n        \         P                  ! WP                  R7      # )Nr   )r2   r    rb   rS   r   )r(   sourcer    s   &&&r   	_make_msgTestPolicyPropagation._make_msgz  s7    6<nell**002&((DDr   c                r    V P                  4       pV P                  VP                  V P                  4       R # r   )r:  assertIsr    r(   rE   s   & r   (test_parser_propagates_policy_to_message>TestPolicyPropagation.test_parser_propagates_policy_to_message~  s$    nncjj$++.r   c                    V P                  \        P                  ! R 4      4      pVP                  4        F)  pV P	                  VP
                  V P
                  4       K+  	  R# )a+              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--
            N)r:  textwrapdedentwalkr=  r    )r(   rE   parts   &  r   -test_parser_propagates_policy_to_sub_messagesCTestPolicyPropagation.test_parser_propagates_policy_to_sub_messages  sH    nnX__ .   HHJDMM$++t{{3 r   c                F   V P                  R \        P                  P                  P	                  RR7      R7      p\
        P                  ! 4       p\        P                  P                  V4      pVP                  V4       V P                  VP                  4       R4       R# zSubject: test
To: foo

X)r   r   zSubject: testXTo: fooXXN)r:  r2   r    rb   rS   r  r  	generator	Generatorflattenr%   getvalue)r(   rE   rq   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                    V P                  R \        P                  P                  P	                  RR7      R7      pV P                  VP                  4       R4       R# rI  )r:  r2   r    rb   rS   r%   r   r>  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   r2   r    rA   r   r  r  r"  r(  r0  r6  r:  r?  rF  rP  rS  r   r   r   s   @r   r
  r
  K  s\     
=5<<&& =<
;
=
D,
/E/4&BE Er   r
  c                   &   a  ] tR tRt o R tRtV tR# )TestConcretePoliciesi  c                    \         P                  P                  4       pV P                  \        VP
                  R R4       R# )Fromzspam
egg@foo.pyN)r2   r    r3   r?   
ValueErrorr>   )r(   instances   & r   (test_header_store_parse_rejects_newlines=TestConcretePolicies.test_header_store_parse_rejects_newlines  s3    <<++-*"55 "4	6r   rR   N)r   r   r   r   r[  r   r   r   s   @r   rV  rV    s     6 6r   rV  __main__)r  r4   rB  unittestemail.errorsr2   email.policyemail.parseremail.generatoremail.messager   r   TestCaser   r  r  r
  rV  r   mainrR   r   r   <module>rf     s    	          
pX&& pn		I 	UEH-- UEp68,, 6 zMMO r   