
    /hh                     X   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5      r " S S5      r	 " S S\
5      r " S S	\
5      r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\R(                  5      r\S:X  a  \R.                  " 5         gg)    Nc                        \ rS rSrS rS rSrg)	PosReturn
   c                     SU l         g Nr   posselfs    A/opt/python-3.13.8/usr/lib/python3.13/test/test_codeccallbacks.py__init__PosReturn.__init__   s	        c                     U R                   nUnUS:  a  [        UR                  5      U-   nX1R                  ::  a  [        UR                  5      U l         SU4$ )Nr   <?>)r	   lenobjectstart)r   excoldposrealposs       r   handlePosReturn.handle   sN    19#**o/G ii3::DHvr   r   N__name__
__module____qualname____firstlineno__r   r   __static_attributes__ r   r   r   r   
   s    	r   r   c                   $    \ rS rSrSS jrS rSrg)RepeatedPosReturn   c                 ,    Xl         SU l        SU l        g r   )replr	   count)r   r%   s     r   r   RepeatedPosReturn.__init__   s    	
r   c                     U R                   S:  a-  U =R                   S-  sl         U R                  U R                  4$ U R                  UR                  4$ )Nr      )r&   r%   r	   end)r   r   s     r   r   RepeatedPosReturn.handle!   s@    ::>JJ!OJIItxx((		377##r   )r&   r	   r%   N)r   r   r    r   r   r"   r"      s    
$r   r"   c                       \ rS rSrS rSrg)BadStartUnicodeEncodeError(   c                 F    [         R                  U SSSSS5        / U l        g Nascii r   r)   bad)UnicodeEncodeErrorr   r   r
   s    r   r   #BadStartUnicodeEncodeError.__init__)   s!    ##D'2q!UC
r   )r   Nr   r   r   r   r   r   r    r   r   r-   r-   (       r   r-   c                       \ rS rSrS rSrg)BadObjectUnicodeEncodeError.   c                 F    [         R                  U SSSSS5        / U l        g r0   )r4   r   r   r
   s    r   r   $BadObjectUnicodeEncodeError.__init__/   s!    ##D'2q!UCr   r   Nr6   r    r   r   r9   r9   .       r   r9   c                       \ rS rSrS rSrg)NoEndUnicodeDecodeError4   c                 N    [         R                  U S[        S5      SSS5        U ?g Nr1   r   r   r)   r3   )UnicodeDecodeErrorr   	bytearrayr*   r
   s    r   r    NoEndUnicodeDecodeError.__init__5   s#    ##D'9S>1aOHr   r    Nr6   r    r   r   r@   r@   4       r   r@   c                       \ rS rSrS rSrg)BadObjectUnicodeDecodeError:   c                 X    [         R                  U S[        S5      SSS5        / U l        g rC   )rD   r   rE   r   r
   s    r   r   $BadObjectUnicodeDecodeError.__init__;   s%    ##D'9S>1aOr   r=   Nr6   r    r   r   rI   rI   :   r>   r   rI   c                       \ rS rSrS rSrg)NoStartUnicodeTranslateError@   c                 :    [         R                  U SSSS5        U ?g Nr2   r   r)   r3   )UnicodeTranslateErrorr   r   r
   s    r   r   %NoStartUnicodeTranslateError.__init__A   s    &&tRAu=Jr   r    Nr6   r    r   r   rN   rN   @   s    r   rN   c                       \ rS rSrS rSrg)NoEndUnicodeTranslateErrorF   c                 :    [         R                  U SSSS5        U ?g rQ   )rR   r   r*   r
   s    r   r   #NoEndUnicodeTranslateError.__init__G   s    &&tb!Q>Hr   r    Nr6   r    r   r   rU   rU   F   rG   r   rU   c                       \ rS rSrS rSrg)NoObjectUnicodeTranslateErrorL   c                 :    [         R                  U SSSS5        U ?g rQ   )rR   r   r   r
   s    r   r   &NoObjectUnicodeTranslateError.__init__M   s    &&tRAu=Kr   r    Nr6   r    r   r   rZ   rZ   L   r7   r   rZ   c                   
   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+r-g,)-CodecCallbackTestQ   c                     SnU R                  UR                  SS5      S5        U R                  UR                  SS5      S5        g )Nu   スパモ änd eggsr1   xmlcharrefreplaces&   &#12473;&#12497;&#12514; &#228;nd eggslatin-1s!   &#12473;&#12497;&#12514; nd eggsassertEqualencode)r   ss     r   test_xmlcharrefreplace(CodecCallbackTest.test_xmlcharrefreplaceS   sK     -HHW125	
 	HHY 343	
r   c                    S n[         R                  " SU5        SnSnU R                  UR                  SS5      U5        SnU R                  UR                  SS5      U5        SnU R                  UR                  S	S5      U5        g )
Nc                    [        U [        5      (       d  [        SU -  5      e/ nU R                  U R                  U R
                    H<  n UR                  S[        R                  R                  [        U5         -  5        M>     SR                  U5      U R
                  4$ ! [         a!    UR                  S[        U5      -  5         M  f = f)Ndon't know how to handle %rz&%s;&#%d;r2   )
isinstancer4   	TypeErrorr   r   r*   appendhtmlentitiescodepoint2nameordKeyErrorjoinr   lcs      r   xmlcharnamereplaceECodecCallbackTest.test_xmlcharnamereplace.<locals>.xmlcharnamereplacee   s    c#566 = CDDAZZ		#''2/HHVdmm&B&B3q6&JJK 3
 GGAJ((   /HHWs1v-./s   8B&&'CCztest.xmlcharnamereplaceu   «ℜ» = 〈ሴ€〉s0   &laquo;&real;&raquo; = &lang;&#4660;&euro;&rang;r1   s$   &real; = &lang;&#4660;&euro;&rang;rc   s   &real; = &lang;&#4660;&rang;iso-8859-15codecsregister_errorre   rf   )r   rz   sinsouts       r   test_xmlcharnamereplace)CodecCallbackTest.test_xmlcharnamereplacea   s    		) 	%'9	; :BG-FGN<I/HI4P:M3LMtTr   c                    S n[         R                  " SU5        SnSnU R                  UR                  SS5      U5        SnU R                  UR                  SS5      U5        SnU R                  UR                  S	S5      U5        g )
Nc           
      D   [        U [        5      (       d  [        SU -  5      e/ nU R                  U R                  U R
                    H5  nUR                  [        R                  " US[        U5      -  5      5        M7     SSR                  U5      -  U R
                  4$ )Nrl   z0x%xz
[1m%s[0mz, )rn   r4   ro   r   r   r*   rp   unicodedatanamert   rv   rw   s      r   uninamereplace=CodecCallbackTest.test_uninamereplace.<locals>.uninamereplace   s    c#566 = CDDAZZ		#''2))!Vc!f_=> 3&15sww??r   ztest.uninamereplaceu   ¬ሴ€耀sN   [1mNOT SIGN, ETHIOPIC SYLLABLE SEE, EURO SIGN, CJK UNIFIED IDEOGRAPH-8000[0mr1   sE   [1mETHIOPIC SYLLABLE SEE, EURO SIGN, CJK UNIFIED IDEOGRAPH-8000[0mrc   sA   [1mETHIOPIC SYLLABLE SEE[0m[1mCJK UNIFIED IDEOGRAPH-8000[0mr|   r}   )r   r   r   r   s       r   test_uninamereplace%CodecCallbackTest.test_uninamereplace{   s    	@ 	!>	3 'fG-BCTJ`I/DEtLeM3HI4Pr   c                     SnSnU R                  UR                  SS5      U5        SnU R                  UR                  SS5      U5        SnU R                  UR                  SS5      U5        g )	N   a¬ሴ€耀􏿿s!   a\xac\u1234\u20ac\u8000\U0010ffffr1   backslashreplaces   a\u1234\u20ac\u8000\U0010ffffrc   s   a\u1234\u8000\U0010ffffr|   rd   r   r   r   s      r   test_backslashescape&CodecCallbackTest.test_backslashescape   sl     28G-?@$G7I/ABDI4M3EFMr   c                     SnSnU R                  UR                  SS5      U5        SnU R                  UR                  SS5      U5        SnU R                  UR                  SS5      U5        g )	Nr   s[   a\N{NOT SIGN}\N{ETHIOPIC SYLLABLE SEE}\N{EURO SIGN}\N{CJK UNIFIED IDEOGRAPH-8000}\U0010ffffr1   namereplacesP   a\N{ETHIOPIC SYLLABLE SEE}\N{EURO SIGN}\N{CJK UNIFIED IDEOGRAPH-8000}\U0010ffffrc   sD   a\N{ETHIOPIC SYLLABLE SEE}\N{CJK UNIFIED IDEOGRAPH-8000}\U0010ffffr|   rd   r   s      r   test_nameescape!CodecCallbackTest.test_nameescape   so     2>G];TB>I}=tD>M=A4Hr   c                     S n[         R                  " SU5        SnSnU R                  UR                  SS5      U5        SnU R	                  [
        UR                  SS5        g )Nc                     [        U [        5      (       d  [        SU -  5      eU R                  U R                  U R                  S-    S:X  a  SU R                  S-   4$ U e)Nrl      s    )rn   rD   ro   r   r   r   s    r   relaxedutf8>CodecCallbackTest.test_decoding_callbacks.<locals>.relaxedutf8   sX    c#566 = CDDzz#))CIIaK0K?		!,,	r   ztest.relaxedutf8s   a bcüu	   a b cü  utf-8s   )r~   r   re   decodeassertRaisesrD   )r   r   r   r   s       r   test_decoding_callbacks)CodecCallbackTest.test_decoding_callbacks   sf    
	 	0+> 9(G-?@$G ",cjj!#5	7r   c                    [        S S 5       5      nSnSnU R                  [        R                  " USU5      S   U5        SnU R	                  [
        [        R                  USU5        SU[        S	5      '   S
nSnU R                  [        R                  " USU5      S   U5        SU[        S	5      '   U R	                  [        [        R                  USU5        g )Nc              3   r   #    U  H-  n[        U5      [        S UR                  5       -  S5      4v   M/     g7f)r   r1   N)rt   bytesupper.0ry   s     r   	<genexpr>7CodecCallbackTest.test_charmapencode.<locals>.<genexpr>   s*     QjAa	k7 ;<js   57abcdefghabcs   AABBCCstrictr   abcAs   XYZ?abcDEFs   AABBCCXYZXYZXYZreplaceXYZ)dictre   r~   charmap_encoder   UnicodeErrorrt   ro   )r   charmapr   r   s       r   test_charmapencode$CodecCallbackTest.test_charmapencode   s    
 QjQQ..sHgFqI4P,(=(=sHgV"C!..sIwGJDQ!C)V%:%:CGTr   c           	      t   S n[         R                  " SU5        S n[         R                  " SU5        SnU R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  S	R                  S
S5      S5        U R                  SR                  S
S5      S5        U R                  [         R                  " SS[        S5      S05      S   S5        U R                  SR                  SS5      S5        U R                  SR                  SS5      S5        g )Nc                    [        U R                  U R                  5      n[        U [        5      (       a,  U Vs/ s H  nS[        U R                  U   5      -  PM      nnOF[        U [        5      (       a#  U Vs/ s H  nSU R                  U   -  PM     nnO[        SU -  5      eSSR                  U5      -  U R                  4$ s  snf s  snf )N<%d>rl   [%s]r2   )
ranger   r*   rn   r4   rt   r   rD   ro   rv   )r   rr	   rx   s       r   handler12CodecCallbackTest.test_callbacks.<locals>.handler1   s    cii)A#122>?@asVc#**S/22a@C!3449:;#Vcjjo-; = CDDRWWQZ'11 A;s   %C;Cztest.handler1c                    [        U [        5      (       d  [        SU -  5      e[        U R                  U R
                  5       Vs/ s H  nSU R                  U   -  PM     nnSSR                  U5      -  U R
                  S-   4$ s  snf )Nrl   r   r   r2   r)   )rn   rD   ro   r   r   r*   r   rv   )r   r	   rx   s      r   handler22CodecCallbackTest.test_callbacks.<locals>.handler2   sy    c#566 = CDD5:399cgg5NO5Nc#**S/)5NAORWWQZ'33 Ps   Bztest.handler2s    r1   z [<129>][<128>][<255>]z [<129>][<128>]s   \u3042\u3xxxunicode-escapeu   あ[<92><117><51>]xxxs   \u3042\u3xxu   あ[<92><117><51>]xx   abcazr   zz[<98>][<99>]u   güßrks   g[<252><223>]rku   güßs   g[<252><223>])r~   r   re   r   charmap_decodert   rf   )r   r   r   rg   s       r   test_callbacks CodecCallbackTest.test_callbacks   s5   	2 	ox8	4 	ox8#HHWo.+	
 	HHWo. 	

 	$$%5G&	

 	##$4oF%	

 	!!&/CHc?KAN	

 	  /:	

 	w8	
r   c                 d   / SQnU H1  n[         R                  " SU-   [         R                  " U5      5        M3     SnX Vs/ s H  nSU-   PM
     sn-  nS Vs/ s H  oDU-  PM	     sn H'  nS H  nU H  n UR                  Xb5        M     M      M)     g s  snf s  snf ! [         a     M9  f = f)N)r   ignorer   rb   r   r   ztest.  )x   あu   aä)r1   rc   
iso-8859-1r|   r   utf-7utf-16utf-32)r~   r   lookup_errorrf   r   )r   errorserrrx   rg   uniencs          r   test_longstrings"CodecCallbackTest.test_longstrings  s    6 C!!'C-1D1DS1IJ V5VcGcMV55":<":QqS":<C>!C

3, "> = 6< ( s   BB9B!!
B/	.B/	c                    U R                   " [        U/US S Q76   U R                   " [        U/US/-   Q76   / SQn[        [        U5      5       H  nU H~  n[	        U5      [	        X%   5      L a  M  / n[        [        U5      5       H.  nXX:X  a  UR                  U5        M  UR                  X%   5        M0     U R                   " [        U/UQ76   M     M     U" U6 n	U R                  [        U	5      U5        g )Nztoo much)spams   eggss   spam*   g      ?N)r   ro   r   r   typerp   re   str)
r   exctypeargsmsg	wrongargsiwrongargcallargsjr   s
             r   check_exceptionobjectargs+CodecCallbackTest.check_exceptionobjectargs0  s     	)W9tCRy9)WE
|0CE?	s4y!A%>T$']2s4y)At 1 0	 *
 !!)W@x@ & " tnS3'r   c                 0   U R                  [        / SQS5        U R                  [        / SQS5        U R                  [        / SQS5        U R                  [        / SQS5        U R                  [        / S	QS
5        U R                  [        / SQS5        g )N)r1      gürkr)   r   ouchz?'ascii' codec can't encode character '\xfc' in position 1: ouch)r1   r   r)      r   z;'ascii' codec can't encode characters in position 1-3: ouch)r1   u   üxr   r)   r   z?'ascii' codec can't encode character '\xfc' in position 0: ouch)r1   u   Āxr   r)   r   zA'ascii' codec can't encode character '\u0100' in position 0: ouch)r1   u   ￿xr   r)   r   zA'ascii' codec can't encode character '\uffff' in position 0: ouch)r1   u   𐀀xr   r)   r   zE'ascii' codec can't encode character '\U00010000' in position 0: ouch)r   r4   r
   s    r   test_unicodeencodeerror)CodecCallbackTest.test_unicodeencodeerrorI  s    &&.N	

 	&&.I	

 	&&,N	

 	&&.P	

 	&&.P	

 	&&2T	
r   c                     U R                  [        S[        S5      SSS/S5        U R                  [        S[        S5      SSS/S5        g )	Nr1   s   grkr)   r   r   z8'ascii' codec can't decode byte 0xfc in position 1: ouch   z6'ascii' codec can't decode bytes in position 1-2: ouch)r   rD   rE   r
   s    r   test_unicodedecodeerror)CodecCallbackTest.test_unicodedecodeerrori  sR    &&i
+Q6:F	

 	&&i
+Q6:D	
r   c                     U R                  [        / SQS5        U R                  [        / SQS5        U R                  [        / SQS5        U R                  [        / SQS5        U R                  [        / S	QS
5        g )N)r   r)   r   r   z4can't translate character '\xfc' in position 1: ouch)u   gĀrkr)   r   r   z6can't translate character '\u0100' in position 1: ouch)u   g￿rkr)   r   r   z6can't translate character '\uffff' in position 1: ouch)u   g𐀀rkr)   r   r   z:can't translate character '\U00010000' in position 1: ouch)r   r)   r   r   z0can't translate characters in position 1-2: ouch)r   rR   r
   s    r   test_unicodetranslateerror,CodecCallbackTest.test_unicodetranslateerroru  s}    &&!%C	

 	&&!'E	

 	&&!'E	

 	&&!+I	

 	&&!%>	
r   c                    U R                  [        [        R                  S5        U R                  [        [        R                  [	        S5      5        U R                  [
        [        R                  [        SSSSS5      5        U R                  [        [        R                  [        S[        S5      SSS5      5        U R                  [        [        R                  [        SSSS5      5        g )Nr   r   r1   r   r   r)      )	r   ro   r~   strict_errors	Exceptionr4   rD   rE   rR   r
   s    r   test_badandgoodstrictexceptions1CodecCallbackTest.test_badandgoodstrictexceptions  s      	
 	  f	
 	  w!Q?	

 	  w	'(:Aq&I	

 	!  !(Aq&9	
r   c                    U R                  [        [        R                  S5        U R                  [        [        R                  [	        S5      5        U R                  [        R                  " [        SSSSS5      5      S5        U R                  [        R                  " [        S[        S5      SSS5      5      S5        U R                  [        R                  " [        SSSS5      5      S5        g )	Nr   r   r1      aあbr)   r   )r2   r      ab)
r   ro   r~   ignore_errorsr   re   r4   rD   rE   rR   r
   s    r   test_badandgoodignoreexceptions1CodecCallbackTest.test_badandgoodignoreexceptions  s    	
 		
 	  "7J1fEG	

 	  "7Ii,@!QOQ	

 	  %j!Q?A	
r   c                    U R                  [        [        R                  S5        U R                  [        [        R                  [	        S5      5        U R                  [        [        R                  [        5       5        U R                  [        [        R                  [        5       5        U R                  [        R                  " [        SSSSS5      5      S5        U R                  [        R                  " [        S[        S5      SSS5      5      S	5        U R                  [        R                  " [        SSSS5      5      S	5        g )
Nr   r   r1   r   r)   r   )r   r   r   )   �r   )r   ro   r~   replace_errorsr   r9   rI   re   r4   rD   rE   rR   r
   s    r    test_badandgoodreplaceexceptions2CodecCallbackTest.test_badandgoodreplaceexceptions  s      	
 	  	

 	!!')	

 	!!')	
 	!!"7J1fEG	

 	!!"7Ii,@!QOQ	

 	!!%j!Q?A	
r   c                    U R                  [        [        R                  S5        U R                  [        [        R                  [	        S5      5        U R                  [        [        R                  [        S[        S5      SSS5      5        U R                  [        [        R                  [        SSSS5      5        SnUS	-  nS
R                  S U 5       5      nU R                  [        R                  " [        SSU-   S-   SS[        U5      -   S5      5      S
R                  S U 5       5      S[        U5      -   45        g )Nr   r   r1   r   r   r)   r   )r   r)   	   r   c   d   i  r   i'  '  i 順 i?B @B )i   i  r2   c              3   8   #    U  H  n[        U5      v   M     g 7fN)chrr   s     r   r   OCodecCallbackTest.test_badandgoodxmlcharrefreplaceexceptions.<locals>.<genexpr>  s     'BqCFFBs   r   bc              3   ,   #    U  H
  nS U-  v   M     g7f)rm   Nr    r   s     r   r   r    s     -"QWq["s   )r   ro   r~   xmlcharrefreplace_errorsr   rD   rE   rR   rv   re   r4   r   )r   csrg   s      r   *test_badandgoodxmlcharrefreplaceexceptions<CodecCallbackTest.test_badandgoodxmlcharrefreplaceexceptions  s$   **	
 	**	
 	++w	'(:Aq&I	

 	++!(Aq&9	

GG'B''++"7C!GcM#$a#a&j&: WW-"--q3q6z:	
r   c                 b   U R                  [        [        R                  S5        U R                  [        [        R                  [	        S5      5        / SQnU H  u  p#U R                  US9   U R                  [        R                  " [        SSU-   S-   SS[        U5      -   S5      5      US[        U5      -   45        U R                  [        R                  " [        SU-   S-   SS[        U5      -   S5      5      US[        U5      -   45        S S S 5        M     / S	QnU Ha  u  pCU R                  US
9   U R                  [        R                  " [        S[        SU-   S-   5      SSS5      5      US45        S S S 5        Mc     g ! , (       d  f       GMB  = f! , (       d  f       M  = f)Nr   r   ))r   z\u3042)
\x0a)r   \x61r   \x00)   ÿ\xff)u   Āz\u0100)u   ￿z\uffff)u   𐀀z
\U00010000u   􏿿z
\U0010ffff   z\ud800   z\udfff   z\ud800\udfffr   r1   r   r  r)   ))   ar  )   
r  )    r  )r   r   )r   r)     br   )r   ro   r~   backslashreplace_errorsr   subTestre   r4   r   rR   rD   rE   )r   testsrg   r   r  s        r   )test_badandgoodbackslashreplaceexceptions;CodecCallbackTest.test_badandgoodbackslashreplaceexceptions  s   ))	
 	))	

 DA!$  22*7C!GcM+,a#a&j&BC CF
O	   22-cAgm./SVVEF CF
O	 %$ 
 DAA&  22*7IdQho4N+,a9: F	 '& ' %$( '&s   .B&F:AF
F	
F.	c                    U R                  [        [        R                  S5        U R                  [        [        R                  [	        S5      5        U R                  [        [        R                  [        S[        S5      SSS5      5        U R                  [        [        R                  [        SSSS5      5        / SQnU Hp  u  p#U R                  US	9   U R                  [        R                  " [        SS
U-   S-   SS[        U5      -   S5      5      US[        U5      -   45        S S S 5        Mr     g ! , (       d  f       M  = f)Nr   r   r1   r   r   r)   r   ))r   z\N{HIRAGANA LETTER A}r  )u   ﯹzW\N{ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM})u   󠁿z\N{CANCEL TAG}r!  r"  r$  r&  r(  r   r  )r   ro   r~   namereplace_errorsr   rD   rE   rR   r.  re   r4   r   )r   r/  rg   r   s       r   $test_badandgoodnamereplaceexceptions6CodecCallbackTest.test_badandgoodnamereplaceexceptionsT  s"   $$	
 	$$	
 	%%w	'(:Aq&I	

 	%%!(Aq&9	

 DA!$  --*7C!GcM+,a#a&j&BC CF
O	 %$ $$s   AD;;
E
	c                    [         R                  " S5      nU R                  [        US5        U R                  [        U[	        S5      5        U R                  [        U[        SSSS5      5        S H?  nU R                  US9   U R                  [        U[        S	USSS5      5        S S S 5        MA     U R                  U" [        S	S
SSS5      5      S5        U R                  [        U[        S	[        S5      SSS5      5        U R                  U" [        S	[        S5      SSS5      5      S5        g ! , (       d  f       M  = f)Nsurrogateescaper   r      r   r)   )r   u   u   r(  r1   u   abr   )   r   r)  s   ab)r8  r   )r~   r   r   ro   r   rR   r.  r4   re   rD   rE   )r   surrogateescape_errorsrg   s      r   (test_badandgoodsurrogateescapeexceptions:CodecCallbackTest.test_badandgoodsurrogateescapeexceptions  sC   !'!4!45F!G!	
 	!	
 	"!(Aq&9	
 +A!$!!&*&w1a@ %$ + 	""7J1fEG	

 	"w	$AvF	

 	""7Ii,@!QOQ	
! %$s   %D77
E	c                 @   [         R                  " S5      nU R                  [        US5        U R                  [        U[	        S5      5        U R                  [        U[        SSSS5      5        S Hr  nU R                  US9   U R                  [        U[        US	SSS5      5        U R                  [        U[        US	R                  U5      SSS5      5        S S S 5        Mt     S
 HH  nU R                  US9   U R                  [        U[        SUS[        U5      S5      5        S S S 5        MJ     / SQnU H  u  p#pVU R                  X#US9   U R                  U" [        US	U-   S-   SS[        U5      -   S5      5      US[        U5      -   45        U R                  U" [        U[        SUS U -   S-   5      SSU-   S5      5      US S SU-   45        S S S 5        M     g ! , (       d  f       GM  = f! , (       d  f       GM   = f! , (       d  f       M  = f)Nsurrogatepassr   r   r#  r   r)   )r   utf-16leutf-16beutf-32leutf-32beencodingr   )r#  r%  r'  r(  r1   ))r   r#  s   r   )r?  r#  s    r   )r@  r#  s    r   )rA  r#  s      r   )rB  r#  s      r   )r   r%  s   r   )r?  r%  s   r   )r@  r%  s   r   )rA  r%  s     r   )rB  r%  s     r   )r   r'  s   r   )r?  r'  s    r   )r@  r'  s    r   )rA  r'  s        r   )rB  r'  s        r   )rD  r   r   r  r)  r,  )r~   r   r   ro   r   rR   r.  r4   rD   rf   r   re   rE   )r   surrogatepass_errorsr   rg   r/  r  ns          r   &test_badandgoodsurrogatepassexceptions8CodecCallbackTest.test_badandgoodsurrogatepassexceptions  s   %22?C	
 		
 	 !(Aq&9	
 MCs+!!&(&sCAv>
 !!&(&sCJJsOQ6J ,+ M 6A!$!!&(&w1c!ffE %$ 6
" "LCAs;  (*3a#+,a#a&j&BC CF
O	   (*3	$2A,:M0N+,a!eV=> rUAEN	 <; "G ,+ %$0 <;s&   AG(=.G;BH(
G8	;
H	
H	c                   ^ SnSnU Hv  m[         R                  " SU4S j5        U H%  nU R                  [        SR                  US5        M'     S H'  u  p4U R                  [        UR
                  US5        M)     Mx     g )N)	r   foo)r)   r   r   rJ  r)   r   rJ  NrJ  rK  rL  rM  )r1   rc   r   r|   ztest.badhandlerc                    > T$ r  r    )r   ress    r   <lambda>:CodecCallbackTest.test_badhandlerresults.<locals>.<lambda>  s    sr   r   )r1   r   r   r   )r   s   +x-)r~   r   r   ro   rf   r   )r   resultsencsr   r   rO  s        @r   test_badhandlerresults(CodecCallbackTest.test_badhandlerresults  s~    x@C!!"3]C!!OO%	 !
 !!LL%	! r   c                 t   U R                  [        R                  [        R                  " S5      5        U R                  [        R                  [        R                  " S5      5        U R                  [        R                  [        R                  " S5      5        U R                  [        R
                  [        R                  " S5      5        U R                  [        R                  [        R                  " S5      5        U R                  [        R                  [        R                  " S5      5        g )Nr   r   rb   r   r   )re   r~   r   r   r   r  r-  r3  r
   s    r   test_lookupCodecCallbackTest.test_lookup  s    --v/B/B8/LM--v/B/B8/LM--v/B/B8/LM++ 34	
 	** 23	
 	%%.	
r   c                 x  ^ U4S jn[         R                  " SU5        S H?  u  p#mUR                  US5      nU R                  UST-   S-   R                  U5      5        MA     S H  u  p#mU R	                  US9   U R                  [        5       nUR                  US5        S S S 5        WR                  nU R                  UR                  S5        U R                  UR                  S	5        U R                  UR                  U5        S S S 5        M     g ! , (       d  f       N{= f! , (       d  f       M  = f)
Nc                 f   > [        U [        5      (       a  TU R                  4$ [        SU -  5      eNrl   rn   r4   r*   ro   r   r%   s    r   r   BCodecCallbackTest.test_encode_nonascii_replacement.<locals>.handle!  0    #122cgg&9C?@@r   test.replacing))r1      [¤]r   )r      [€]u   ½¾)r|   rc  u   œŸ[]))r      []   🐍)r   rg  rh  )r   rg  rh  rC  r)   r   )r~   r   rf   re   r.  r   r4   	exceptionr   r*   r   )r   r   r   inputrO  cmr   r%   s          @r    test_encode_nonascii_replacement2CodecCallbackTest.test_encode_nonascii_replacement   s	   	A 	.7!
C
 ,,s$45CS3:#3";";C"@A!
!
C
 s+&&'9:bLL&67 ;ll  A.  !,  U3 ,+!
 ;: ,+s%   ;D*D$A(D*
D'#D**
D9	c                   ^ U4S jn[         R                  " SU5        S H  u  p#mU R                  US9   U R                  [        5       nUR                  US5        S S S 5        WR                  nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  U5        S S S 5        M     g ! , (       d  f       N{= f! , (       d  f       M  = f)Nc                 f   > [        U [        5      (       a  TU R                  4$ [        SU -  5      er]  r^  r_  s    r   	unencreplHCodecCallbackTest.test_encode_unencodable_replacement.<locals>.unencrepl=  s0    #122cgg& = CDDr   ztest.unencreplhandler))r1   rc     ½)r   rd  u   œ)r|   rc  rr  )r   rg     )r   rg  rs  )r   rg  rs  rC  r)   r   )r~   r   r.  r   r4   rf   ri  re   r   r*   r   )r   rp  r   rj  rk  r   r%   s         @r   #test_encode_unencodable_replacement5CodecCallbackTest.test_encode_unencodable_replacement<  s    	E
 	5yA!
C s+&&'9:bLL&=> ;ll  A.  !,  U3 ,+!
 ;: ,+s$   C%CA(C%
C"C%%
C4	c           	      <  ^ U4S jn[         R                  " SU5        S Hf  u  p#mU R                  US9   UR                  US5      nU R	                  USR                  U5      T-   SR                  U5      -   5        S S S 5        Mh     g ! , (       d  f       Mz  = f)Nc                 f   > [        U [        5      (       a  TU R                  4$ [        SU -  5      er]  r^  r_  s    r   r   ?CodecCallbackTest.test_encode_bytes_replacement.<locals>.handleU  ra  r   rb  ))r1   rc     )r   rd  ry  )r|   rc  ry  )r   rg  ry  )r?  rg  ry  )r@  rg  ry  )rA  rg     )rB  rg  rz  rC  re  rf  )r~   r   r.  rf   re   )r   r   r   rj  rO  r%   s        @r   test_encode_bytes_replacement/CodecCallbackTest.test_encode_bytes_replacementT  s    	A 	.7	!
C s+ll3(89  cjjo&<szz#&NO ,+	!
 ,+s   A	B
B	c                   ^ U4S jn[         R                  " SU5        Sn/ [        R                  " SSS/5      Q[        R                  " S/ SQ5      Q7 H  u  nmU R	                  UTS	9   U R                  [        5       nUR                  US5        S S S 5        WR                  nU R                  UR                  S
5        U R                  UR                  S5        U R                  UR                  U5        U R                  UR                  S5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)Nc                 f   > [        U [        5      (       a  TU R                  4$ [        SU -  5      er]  r^  r_  s    r   r   CCodecCallbackTest.test_encode_odd_bytes_replacement.<locals>.handlek  ra  r   rb  rg  )r?  r@  r)  r   )rA  rB  )r)  s   abr   s   abcde)rD  r%   r)   r   zsurrogates not allowed)r~   r   	itertoolsproductr.  r   r4   rf   ri  re   r   r*   r   reason)r   r   rj  r   rk  r   r%   s         @r   !test_encode_odd_bytes_replacement3CodecCallbackTest.test_encode_odd_bytes_replacementj  s   	A 	.7
7 $f~/
 7>@
IC s6&&'9:bLL&67 ;ll  A.  !,  U3  -EF 76
 ;: 76s%   ,D7D&BD7&
D40D77
E	c                     U R                  [        [        R                  S5        U R                  [        [        R                  SS5        g )Nr   z
test.dummy)r   ro   r~   r   r
   s    r   test_badregistercall&CodecCallbackTest.test_badregistercall  s6     	)V%:%:B?)V%:%:L"Mr   c                 L    U R                  [        [        R                  5        g r  )r   ro   r~   r   r
   s    r   test_badlookupcall$CodecCallbackTest.test_badlookupcall  s     	)V%8%89r   c                 N    U R                  [        [        R                  S5        g )Ntest.unknown)r   LookupErrorr~   r   r
   s    r   test_unknownhandler%CodecCallbackTest.test_unknownhandler  s     	+v':':NKr   c                     SnSR                  U Vs/ s H  n[        U5      PM     sn5      n[        R                  " S[        R                  5        S H  nS H  nUR                  XE5        M     M     g s  snf )N)r)      r   2   r  i  r   i  r  iP  r  i  r  r2   test.xmlcharrefreplace)r1   r|   )rb   r  )rv   r  r~   r   r  rf   )r   vr   rg   r   r   s         r   test_xmlcharrefvalues'CodecCallbackTest.test_xmlcharrefvalues  sg    GGQ'QSVQ'(68W8WX+CF" G , (s   A7c           	      \   U R                  [        SR                  SS5        S n[        R                  " SU5        U R                  [
        SR                  SS5        U R                  [
        SR                  SS5        U R                  [
        SR                  SS5        U R                  [
        S	R                  SS5        U R                  [
        S
R                  SS5        U R                  [
        SR                  SS5        S n[        R                  " SU5        U R                  [
        SR                  SS5        [        5       n[        R                  " SUR                  5        SUl        U R                  SR                  SS5      S5        SUl        U R                  SR                  SS5      S5        SUl        U R                  [        SR                  SS5        SUl        U R                  SR                  SS5      S5        SUl        U R                  SR                  SS5      S5        SUl        U R                  [        SR                  SS5        SUl        U R                  SR                  SS5      S5         " S S[        5      nU R                  [        [        R                  SSSS 05        U R                  [        [        R                  SSU" 5       5        U R                  [
        [        R                  SSS[        R                   S-   05        g ) Nr   r1   r  c                     gNr   r    r   s    r   baddecodereturn1=CodecCallbackTest.test_decodehelper.<locals>.baddecodereturn1      r   ztest.baddecodereturn1   \r      \x0s   \x0ys
   \Uffffeeees   \uyyyyraw-unicode-escapec                     gN)r   Nr    r   s    r   baddecodereturn2=CodecCallbackTest.test_decodehelper.<locals>.baddecodereturn2      r   ztest.baddecodereturn2test.posreturnr   s   0z<?>0z<?><?>r)   r   r   r      s   \uyyyy0c                       \ rS rSrS rSrg).CodecCallbackTest.test_decodehelper.<locals>.Di  c                     [         er  
ValueErrorr   keys     r   __getitem__:CodecCallbackTest.test_decodehelper.<locals>.D.__getitem__        r   r    Nr   r   r   r   r  r   r    r   r   Dr        !r   r  r      )r   r  r   r~   r   ro   r   r   r	   re   
IndexErrorr   r   r   r  sys
maxunicode)r   r  r  handlerr  s        r   test_decodehelper#CodecCallbackTest.test_decodehelper  s    	+w~~wO	57GH)W^^W>UV)U\\3CE\])W^^5EG^_)X__6FH_`)^%:%:<LNef)Z%6%68LNef	57GH)W^^W>UV+.? 2BCVL 2BCXN *hoow@PQ 2BCVL 2BCUK *hoow@PQ ++,@BRSU[\	! 	! 	,(=(=wSWY]R^_*f&;&;WhPQPST)V%:%:GXPTVYVdVdefVfOghr   c           	         U R                  [        SR                  SS5        S n[        R                  " SU5        U R                  [
        SR                  SS5        S n[        R                  " SU5        U R                  [
        SR                  SS5        [        5       n[        R                  " SUR                  5        S	Ul        U R                  S
R                  SS5      S5        SUl        U R                  S
R                  SS5      S5        SUl        U R                  [        S
R                  SS5        SUl        U R                  S
R                  SS5      S5        SUl        U R                  S
R                  SS5      S5        SUl        U R                  [        S
R                  SS5        SUl         " S S[        5      nS H  nU R                  [        [        R                  SUSS 05        U R                  [        [        R                  SXT" 5       5        U R                  [
        [        R                  SUSS05        M     g )Nr  r1   r  c                     gr  r    r   s    r   badencodereturn1=CodecCallbackTest.test_encodehelper.<locals>.badencodereturn1  r  r   ztest.badencodereturn1c                     gr  r    r   s    r   badencodereturn2=CodecCallbackTest.test_encodehelper.<locals>.badencodereturn2  r  r   ztest.badencodereturn2r  r   u   ÿ0s   <?>0r  s   <?><?>r  r)   r   s   <?>r   r   c                       \ rS rSrS rSrg).CodecCallbackTest.test_encodehelper.<locals>.Di  c                     [         er  r  r  s     r   r  :CodecCallbackTest.test_encodehelper.<locals>.D.__getitem__	  r  r   r    Nr  r    r   r   r  r    r  r   r  )r   r   rb   r   r   r  r  i,  )r   r  rf   r~   r   ro   r   r   r	   re   r  r   r   r   r  )r   r  r  r  r  r   s         r   test_encodehelper#CodecCallbackTest.test_encodehelper  s    	+v}}g~N	57GH)V]]G=TU	57GH)V]]G=TU+.? 1ABGL 1ABIN *gnng?OP 1ABGL 1ABFK *gnng?OP	! 	!IClF,A,A63QUW[P\]j&*?*?acRi)>)>dTW[Y	Ir   c                 L   [        S5      n[        R                  " SUR                  5        / SQnU H\  u  p4SR	                  U5      U-   nU R                  US9   SUl        UR                  US5      nU R                  US5        S S S 5        M^     g ! , (       d  f       Mp  = f)Nr   test.bug36819)rR  rS  )r@  s   ܀)rB  s     ܀)z
iso-8859-6r   abcdrC  r  abcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdx)	r"   r~   r   r   rf   r.  r&   r   re   )r   r  	testcasesr   r3   rj  decodeds          r   test_decodehelper_bug36819,CodecCallbackTest.test_decodehelper_bug36819  s    #C(ow~~>
	 "HCMM#&,Es+ ",,sO<  ,7 ,+ "++s   ,B
B#	c                    [        5       n[        R                  " SUR                  5        Sn/ SQnUS/-  n[        R
                  S:X  a  SS/nSUl        U H  nU R                  US	9   S
Ul        U R                  [        5       nUR                  US5        S S S 5        WR                  nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                   U5        S S S 5        M     [        R
                  S:X  a  S
Ul        U R                  [        5       n[        R"                  " SUS5        S S S 5        WR                  nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                   U5        SUl        U HU  nU R                  US	9   S
Ul        UR                  US5      nU R                  UR%                  U5      S5        S S S 5        MW     [        R
                  S:X  aa  S
Ul        [        R"                  " SUS5      nU R                  US   R%                  5       S5        U R                  US   ['        U5      5        g g ! , (       d  f       GN= f! , (       d  f       GMa  = f! , (       d  f       GNl= f! , (       d  f       GM  = f)Nr  u   abcd)r1   latin1r   r   r   r|   win32mbcsoemrs  rC  r  r   r  i  r   r  r   r)   )r"   r~   r   r   r  platformr%   r.  r&   r   r4   rf   ri  re   r   r*   r   code_page_encoder   r   )r   r  rj  	encodingsr   rk  r   encodeds           r   test_encodehelper_bug36819,CodecCallbackTest.test_encodehelper_bug36819#  sB   #%ow~~>D	m_$	<<7"ICs+ "&&'9:bLLo6 ;ll  A.  !,  U3 ,+  <<7"GM""#56"''UOD 7,,CSYY*SWWa(SZZ/Cs+ !#,,sO<  !4lC ,+  <<7"GM--c5/JGWQZ..0,?WQZU4	 #1 ;: ,+ 76 ,+s=   +J*JA(J*?J=;K
J'"J**
J:	=
K
K	c                      " S S[         5      nU R                  [        SR                  S[        R
                  S-   05        U R                  [        SR                  SS05        g )Nc                       \ rS rSrS rSrg)1CodecCallbackTest.test_translatehelper.<locals>.DiU  c                     [         er  r  r  s     r   r  =CodecCallbackTest.test_translatehelper.<locals>.D.__getitem__V  r  r   r    Nr  r    r   r   r  r  U  r  r   r  r  r  r)   r    )r   r   r  	translater  r  ro   )r   r  s     r   test_translatehelper&CodecCallbackTest.test_translatehelperO  sR    	! 	! 	*f&6&6s~~a?O8PQ)V%5%5bzBr   c           	          [        S5      S[        S5      S[        S5      S[        S5      S0nS	 H  nS
U-  nUR                  U5        M     g )N&z&amp;<z&lt;>z&gt;"z&quot;)r)   r   r  r   zabc<def>ghi)rt   r  )r   r   rF  texts       r   test_bug828737 CodecCallbackTest.test_bug828737\  sN    HgHfHfHh	
 $A ?DNN7# $r   c                 h   / SQnS n[         R                  " SU5        U H5  u  p4U R                  [        5         UR	                  US5        S S S 5        M7     S n[         R                  " SU5        U H'  u  p4U R                  UR	                  US5      S5        M)     g ! , (       d  f       M  = f)N)rR  )r   s   ++rS  )r   r   )r   r   )r      \u123g)r  r  c                 X    [        U [        5      (       a  SU l        g[        SU -  5      e)Nr      䉂r   rl   rn   rD   r   ro   r   s    r   	replacingACodecCallbackTest.test_mutating_decode_handler.<locals>.replacings  s+    #122
$ = CDDr   rb  c                 X    [        U [        5      (       a  SU l        g[        SU -  5      e)Nr   r  rl   r  r   s    r   mutating@CodecCallbackTest.test_mutating_decode_handler.<locals>.mutating  s+    #122 
$ = CDDr   ztest.mutatingr  )r~   r   r   ro   r   re   )r   baddatar  rD  datar  s         r   test_mutating_decode_handler.CodecCallbackTest.test_mutating_decode_handlerh  s    
	E 	.	: 'X""9-H&67 .- !(	E 	ox8 !(XT[[?CXN !( .-s   B""
B1	c                   ^ ^^ [         R                  mU4S jn[         R                  " SU5        SSSS.mUU 4S jnU" SS	S
5        U" SSS5        U" SSS
5        U" SSS
5        U" SSS
5        U" SSS
5        U" [        S5      S S SS
5        U" [        S5      S S SS
5        U" SS	S
5        U" SSS5        U" SSS
5        U" [        S5      S S SS
5        g )Nc                    > [        U [        5      (       aV  TR                  U R                  S U R                   5      nUb+  US   U R                  U R                  S  -   U l        SUS   4$ [        SU -  5      e)Nr   u   Єr)   rl   )rn   rD   getr   r*   AssertionError)r   r   r  s     r   r  OCodecCallbackTest.test_mutating_decode_handler_unicode_escape.<locals>.mutating  sr    #122HHSZZ12=!"1

3778(<!<CJ$ad++ !>!DEEr   test.mutating2)r  r   )s   xxx\r   )s   x\r)   )r  s   \x3s   \x5c                    > TR                  [        5       nTR                  T" U S5      U[        U 5      45        S S S 5        TR	                  U[        WR                  5      5        g ! , (       d  f       N4= f)Nr  )assertWarnsDeprecationWarningre   r   assertInr   warning)rj  expectedr   rk  r   r   s       r   checkLCodecCallbackTest.test_mutating_decode_handler_unicode_escape.<locals>.check  sZ    !!"45  /?!@8SQVZBXY 6MM#s2::/ 65s   %A**
A8s   \x0n\zu   Є
\zzinvalid escape sequence '\z's   \x0n\501u   Є
Łz$invalid octal escape sequence '\501's   \x0zu   Є\zs   \x3n\zru   Є
\zrs   \x3zru   Є\zrs   \x3z5u   Є\z5s   \x3z5xr   s   \x3z5xyr  s   \x5n\zs   \x5n\501s   \x5zs   \x5zy)r~   unicode_escape_decoder   
memoryview)r   r  r  r  r   s   `  @@r   +test_mutating_decode_handler_unicode_escape=CodecCallbackTest.test_mutating_decode_handler_unicode_escape  s    --	F 	.9" 

	0
 	j-)HIl,.UVh%DEk>+JKi'FGi'FGj$Sb)<9XYj%cr*L:YZj-)HIl,.UVh%DEj#CR(+7VWr   c                    S n[         R                  " SU5        U R                  SR                  SS5      S5        U R                  SR                  SS5      S5        U R                  SR                  S	S5      S
5        U R                  SR                  SS5      S
5        S n[         R                  " SU5        U R                  SR                  SS5      S5        U R                  SR                  SS5      S5        g )Nc                 j    [        U [        5      (       a  SU R                  S-   4$ [        SU -  5      e)Nr  r)   rl   )rn   rD   r   ro   r   s    r   forward_shorter_than_endPCodecCallbackTest.test_crashing_decode_handler.<locals>.forward_shorter_than_end  s4    #122 #))A+.. = CDDr   ztest.forward_shorter_than_ends      z	utf-16-leu   ����Ø s      z	utf-16-bes         z	utf-32-leu   ���ᄑ s         z	utf-32-bec                 r    [        U [        5      (       a  SU l        SU R                  4$ [	        SU -  5      e)Ns           r  rl   )rn   rD   r   r   ro   r   s    r   replace_with_longICodecCallbackTest.test_crashing_decode_handler.<locals>.replace_with_long  s7    #122(
 #)),, = CDDr   ztest.replace_with_longr+  r   u   �    r   u   �  )r~   r   re   r   )r   r  r  s      r   test_crashing_decode_handler.CodecCallbackTest.test_crashing_decode_handler  s   	E 	+-E	G 	/66<>.	

 	/66<>.	

 	;BB<>*	

 	;BB<>*	
	E 	68IJNN8%=>$	
 	NN8%=>	
r   c           
        ^ [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  [         R                  " S5      [         R                  " S5      /n[        [        [        4 H  m " U4S jS[        5      nU H7  nU R                  UTS9   U R                  [        X2" 5       5        S S S 5        M9      " U4S jS[        5      nU HI  nU R                  UTS9   U R                  [        U45         U" U" 5       5        S S S 5        S S S 5        MK     M     g ! , (       d  f       M  = f! , (       d  f       N1= f! , (       d  f       M  = f)Nr7  r>  c                      > \ rS rSr Y rSrg)ACodecCallbackTest.test_fake_error_class.<locals>.FakeUnicodeErrori  r    Nr   r   r   r   	__class__r   clss   r   FakeUnicodeErrorr        	r   r  )r  error_classc                      > \ rS rSr Y rSrg)r  i  r    Nr  r  s   r   r  r    r  r   )r~   r   r   r  r-  r3  r  r   r4   rD   rR   r   r.  r   ro   r   )r   handlersr  r  r  s       @r   test_fake_error_class'CodecCallbackTest.test_fake_error_class  s+       !!**%%++ 120	
 &'9;PPC 3  #\\'s\C%%i:J:LM DC $ 9  #\\'s\C**I7G+HI 0 23 J DC $ Q DC JI DCs0   EE4*E#	8E4
E #
E1-E44
Fr    N).r   r   r   r   rh   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r0  r4  r;  rG  rV  rY  rl  rt  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r   r    r   r   r_   r_   Q   s    
U4Q<NI 72U*7
r&(2
@


6
>
<&
P#
J8t,\*
XFP2
"4840P,G2N:
L

#9iv4Zl8$*5XC
$!OF"XJ0
f4r   r_   __main__)r~   html.entitiesrq   r  rer  r   unittestr   r"   r4   r-   r9   rD   r@   rI   rR   rN   rU   rZ   TestCaser_   r   mainr    r   r   <module>r+     s       	 
   "
$ 
$!3 "4 0 "4 #8 !6 $9 
h4)) h4V% zMMO r   