+
    Bi7                     j   ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
 ! R R4      t ! R R4      t ! R R]4      t ! R	 R
]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]
P.                  4      t]R8X  d   ]
P4                  ! 4        R# R# )    )_unregister_errorNc                   ,   a  ] tR t^t o R tR tRtV tR# )	PosReturnc                    ^ V n         R# r   Nposselfs   &//usr/lib/python3.14/test/test_codeccallbacks.py__init__PosReturn.__init__   s	        c                    V P                   pTpV^ 8  d   \        VP                  4      V,           pW1P                  8:  d   \        VP                  4      V n         RV3# )r   <?>)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____classdictcell____classdict__s   @r   r   r      s     	 	r   r   c                   0   a  ] tR t^t o RR ltR tRtV tR# )RepeatedPosReturnc                .    Wn         ^ V n        ^ V n        R# r   )replr	   count)r   r&   s   &&r   r   RepeatedPosReturn.__init__   s    	
r   c                    V P                   ^ 8  d2   V ;P                   ^,          un         V P                  V P                  3# V P                  VP                  3# )r   )r'   r&   r	   end)r   r   s   &&r   r   RepeatedPosReturn.handle"   s@    ::>JJ!OJIItxx((		377##r   )r'   r	   r&   N)r   r   r!   s   @r   r$   r$      s     
$ $r   r$   c                   &   a  ] tR t^)t o R tRtV tR# )BadStartUnicodeEncodeErrorc                H    \         P                  V R R^ ^R4       . V n        R# ascii badN)UnicodeEncodeErrorr   r   r
   s   &r   r   #BadStartUnicodeEncodeError.__init__*   s!    ##D'2q!UC
r   )r   Nr   r   r   r   r   r   r    r!   s   @r   r-   r-   )         r   r-   c                   &   a  ] tR t^/t o R tRtV tR# )BadObjectUnicodeEncodeErrorc                H    \         P                  V R R^ ^R4       . V n        R# r/   )r3   r   r   r
   s   &r   r   $BadObjectUnicodeEncodeError.__init__0   s!    ##D'2q!UCr   r   Nr5   r!   s   @r   r8   r8   /         r   r8   c                   &   a  ] tR t^5t o R tRtV tR# )NoEndUnicodeDecodeErrorc                P    \         P                  V R \        R4      ^ ^R4       V =R# r0   r   r2   N)UnicodeDecodeErrorr   	bytearrayr*   r
   s   &r   r    NoEndUnicodeDecodeError.__init__6   s#    ##D'9S>1aOHr    Nr5   r!   s   @r   r>   r>   5         r   r>   c                   &   a  ] tR t^;t o R tRtV tR# )BadObjectUnicodeDecodeErrorc                Z    \         P                  V R \        R4      ^ ^R4       . V n        R# r@   )rA   r   rB   r   r
   s   &r   r   $BadObjectUnicodeDecodeError.__init__<   s%    ##D'9S>1aOr   r;   Nr5   r!   s   @r   rG   rG   ;   r<   r   rG   c                   &   a  ] tR t^At o R tRtV tR# )NoStartUnicodeTranslateErrorc                <    \         P                  V R ^ ^R4       V =R# r1   r2   N)UnicodeTranslateErrorr   r   r
   s   &r   r   %NoStartUnicodeTranslateError.__init__B   s    &&tRAu=Jr   rD   Nr5   r!   s   @r   rK   rK   A   s      r   rK   c                   &   a  ] tR t^Gt o R tRtV tR# )NoEndUnicodeTranslateErrorc                <    \         P                  V R ^ ^R4       V =R# rM   )rN   r   r*   r
   s   &r   r   #NoEndUnicodeTranslateError.__init__H   s    &&tb!Q>Hr   rD   Nr5   r!   s   @r   rQ   rQ   G   rE   r   rQ   c                   &   a  ] tR t^Mt o R tRtV tR# )NoObjectUnicodeTranslateErrorc                <    \         P                  V R ^ ^R4       V =R# rM   )rN   r   r   r
   s   &r   r   &NoObjectUnicodeTranslateError.__init__N   s    &&tRAu=Kr   rD   Nr5   r!   s   @r   rU   rU   M   r6   r   rU   c                   (  a  ] tR t^Rt o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R  t#R! t$R" t%R# t&R$ t'R% t(R& t)R' t*R( t+R) t,R* t-R+ t.R, t/R-t0V t1R.# )/CodecCallbackTestc                    R pV P                  VP                  RR4      R4       V P                  VP                  RR4      R4       R# )u   スパモ änd eggsr0   xmlcharrefreplaces&   &#12473;&#12497;&#12514; &#228;nd eggslatin-1s!   &#12473;&#12497;&#12514; nd eggsNassertEqualencode)r   ss   & r   test_xmlcharrefreplace(CodecCallbackTest.test_xmlcharrefreplaceT   sK     -HHW125	
 	HHY 343	
r   c                   R  p\         P                  ! RV4       RpRpV P                  VP                  RR4      V4       RpV P                  VP                  RR4      V4       RpV P                  VP                  RR4      V4       R	# )
c                    \        V \        4      '       g   \        R V ,          4      h. pV P                  V P                  V P
                    FD  p VP                  R\        P                  P                  \        V4      ,          ,          4       KF  	  RP                  V4      V P
                  3#   \         d&    TP                  R\        T4      ,          4        K  i ; i)don't know how to handle %rz&%s;&#%d;r1   )
isinstancer3   	TypeErrorr   r   r*   appendhtmlentitiescodepoint2nameordKeyErrorjoinr   lcs   &  r   xmlcharnamereplaceECodecCallbackTest.test_xmlcharnamereplace.<locals>.xmlcharnamereplacef   s    c#566 = CDDAZZ		#''2/HHVdmm&B&B3q6&JJK 3
 GGAJ((   /HHWs1v-./s   A B33,C#"C#ztest.xmlcharnamereplaceu   «ℜ» = 〈ሴ€〉s0   &laquo;&real;&raquo; = &lang;&#4660;&euro;&rang;r0   s$   &real; = &lang;&#4660;&euro;&rang;r\   s   &real; = &lang;&#4660;&rang;iso-8859-15Ncodecsregister_errorr^   r_   )r   rs   sinsouts   &   r   test_xmlcharnamereplace)CodecCallbackTest.test_xmlcharnamereplaceb   s    		) 	%'9	; :BG-FGN<I/HI4P:M3LMtTr   c                   R  p\         P                  ! RV4       RpRpV P                  VP                  RR4      V4       RpV P                  VP                  RR4      V4       RpV P                  VP                  RR4      V4       R	# )
c           
      ^   \        V \        4      '       g   \        R V ,          4      h. pV P                  V P                  V P
                    F9  pVP                  \        P                  ! VR\        V4      ,          4      4       K;  	  RRP                  V4      ,          V P
                  3# )re   z0x%xz
[1m%s[0mz, )rg   r3   rh   r   r   r*   ri   unicodedatanamerm   ro   rp   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[0mr0   sE   [1mETHIOPIC SYLLABLE SEE, EURO SIGN, CJK UNIFIED IDEOGRAPH-8000[0mr\   sA   [1mETHIOPIC SYLLABLE SEE[0m[1mCJK UNIFIED IDEOGRAPH-8000[0mru   Nrv   )r   r   ry   rz   s   &   r   test_uninamereplace%CodecCallbackTest.test_uninamereplace|   s    	@ 	!>	3 'fG-BCTJ`I/DEtLeM3HI4Pr   c                    R pRpV P                  VP                  RR4      V4       RpV P                  VP                  RR4      V4       RpV P                  VP                  RR4      V4       R# )	   a¬ሴ€耀􏿿s!   a\xac\u1234\u20ac\u8000\U0010ffffr0   backslashreplaces   a\u1234\u20ac\u8000\U0010ffffr\   s   a\u1234\u8000\U0010ffffru   Nr]   r   ry   rz   s   &  r   test_backslashescape&CodecCallbackTest.test_backslashescape   sl     28G-?@$G7I/ABDI4M3EFMr   c                    R pRpV P                  VP                  RR4      V4       RpV P                  VP                  RR4      V4       RpV P                  VP                  RR4      V4       R# )	r   s[   a\N{NOT SIGN}\N{ETHIOPIC SYLLABLE SEE}\N{EURO SIGN}\N{CJK UNIFIED IDEOGRAPH-8000}\U0010ffffr0   namereplacesP   a\N{ETHIOPIC SYLLABLE SEE}\N{EURO SIGN}\N{CJK UNIFIED IDEOGRAPH-8000}\U0010ffffr\   sD   a\N{ETHIOPIC SYLLABLE SEE}\N{CJK UNIFIED IDEOGRAPH-8000}\U0010ffffru   Nr]   r   s   &  r   test_nameescape!CodecCallbackTest.test_nameescape   so     2>G];TB>I}=tD>M=A4Hr   c                    R  p\         P                  ! RV4       RpRpV P                  VP                  RR4      V4       RpV P	                  \
        VP                  RR4       R# )c                     \        V \        4      '       g   \        R V ,          4      hV P                  V P                  V P                  ^,            R8X  d   RV P                  ^,           3# V h)re   s    )rg   rA   rh   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   N)rw   rx   r^   decodeassertRaisesrA   )r   r   ry   rz   s   &   r   test_decoding_callbacks)CodecCallbackTest.test_decoding_callbacks   sf    
	 	0+> 9(G-?@$G ",cjj!#5	7r   c                   \        R  R 4       4      pRpRpV P                  \        P                  ! VRV4      ^ ,          V4       RpV P	                  \
        \        P                  VRV4       RV\        R4      &   RpR	pV P                  \        P                  ! VR
V4      ^ ,          V4       RV\        R4      &   V P	                  \        \        P                  VR
V4       R# )c              3   z   "   T F1  p\        V4      \        ^VP                  4       ,          R4      3x  K3  	  R# 5i)   r0   N)rm   bytesupper.0rr   s   & r   	<genexpr>7CodecCallbackTest.test_charmapencode.<locals>.<genexpr>   s*     QjAa	k7 ;<js   9;abcdefghabcs   AABBCCstrictabcAs   XYZ?abcDEFs   AABBCCXYZXYZXYZreplaceXYZN)dictr^   rw   charmap_encoder   UnicodeErrorrm   rh   )r   charmapry   rz   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           	     ~   R  p\         P                  ! RV4       R p\         P                  ! RV4       RpV P                  VP                  RR4      R4       V P                  VP                  RR4      R4       V P                  RP                  R	R4      R
4       V P                  RP                  R	R4      R4       V P                  \         P                  ! RR\        R4      R/4      ^ ,          R4       V P                  RP                  RR4      R4       V P                  RP                  RR4      R4       R# )c                    \        V P                  V P                  4      p\        V \        4      '       d4   V Uu. uF&  pR \        V P                  V,          4      ,          NK(  	  ppMR\        V \        4      '       d+   V Uu. uF  pR V P                  V,          ,          NK  	  ppM\        RV ,          4      hRRP                  V4      ,          V P                  3# u upi u upi )<%d>re   [%s]r1   )
ranger   r*   rg   r3   rm   r   rA   rh   ro   )r   rr	   rq   s   &   r   handler12CodecCallbackTest.test_callbacks.<locals>.handler1   s    cii)A#122>?@asVc#**S/222a@C!3449:;#Vcjjo--; = CDDRWWQZ'11 A;s   ,C #C%ztest.handler1c                 @   \        V \        4      '       g   \        R V ,          4      h\        V P                  V P
                  4       Uu. uF  pRV P                  V,          ,          NK  	  ppRRP                  V4      ,          V P
                  ^,           3# u upi )re   r   r   r1   )rg   rA   rh   r   r   r*   r   ro   )r   r	   rq   s   &  r   handler22CodecCallbackTest.test_callbacks.<locals>.handler2   s|    c#566 = CDD5:399cgg5NO5Nc#**S/))5NAORWWQZ'33 Ps   #Bztest.handler2s    r0   z [<129>][<128>][<255>]z [<129>][<128>]s   \u3042\u3xxxunicode-escapeu   あ[<92><117><51>]xxxs   \u3042\u3xxu   あ[<92><117><51>]xx   abcazzz[<98>][<99>]u   güßrks   g[<252><223>]rku   güßs   g[<252><223>]N)rw   rx   r^   r   charmap_decoderm   r_   )r   r   r   r`   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                   . ROpV F5  p\         P                  ! RV,           \         P                  ! V4      4       K7  	  RpY Uu. uF  pRV,           NK  	  up,          pR Uu. uF  qDV,          NK  	  up F'  pR F  pV F  p VP                  Wb4       K  	  K   	  K)  	  R# u upi u upi   \         d     K;  i ; i)r   ztest.  N)r   ignorer   r[   r   r   )x   あu   aä)r0   r\   
iso-8859-1ru   r   utf-7utf-16utf-32)rw   rx   lookup_errorr_   r   )r   errorserrrq   r`   uniencs   &      r   test_longstrings"CodecCallbackTest.test_longstrings  s    6 C!!'C-1D1DS1IJ V5VcGcMMV55":<":QqSS":<C>!C

3, "> = 6< ( s   B&%B+B00B?	>B?	c                   V P                   ! \        V.VR R O5!   V P                   ! \        V.VR.,           O5!   . ROp\        \        V4      4       F  pV F  p\	        V4      \	        W%,          4      J d   K#  . p\        \        V4      4       F3  pWX8X  d   VP                  V4       K  VP                  W%,          4       K5  	  V P                   ! \        V.VO5!   K  	  K  	  V! V!  p	V P                  \        V	4      V4       R # )Nztoo much)spams   eggss   spam*   g      ?N)r   rh   r   r   typeri   r^   str)
r   exctypeargsmsg	wrongargsiwrongargcallargsjr   s
   &&&&      r   check_exceptionobjectargs+CodecCallbackTest.check_exceptionobjectargs1  s     	)W9tCRy9)WE
|0CE?	s4y!A%>T$']2s4y)At 1 0	 *
 !!)W@x@ & " tnS3'r   c                2   V P                  \        . ROR4       V P                  \        . R	OR4       V P                  \        . R
OR4       V P                  \        . ROR4       V P                  \        . ROR4       V P                  \        . ROR4       R# )r0   z?'ascii' codec can't encode character '\xfc' in position 1: ouchz;'ascii' codec can't encode characters in position 1-3: ouchz?'ascii' codec can't encode character '\xfc' in position 0: ouchzA'ascii' codec can't encode character '\u0100' in position 0: ouchzA'ascii' codec can't encode character '\uffff' in position 0: ouchzE'ascii' codec can't encode character '\U00010000' in position 0: ouchN)r0      gürk   r   ouch)r0   r   r      r   )r0   u   üxr   r   r   )r0   u   Āxr   r   r   )r0   u   ￿xr   r   r   )r0   u   𐀀xr   r   r   )r   r3   r
   s   &r   test_unicodeencodeerror)CodecCallbackTest.test_unicodeencodeerrorJ  s    &&.N	

 	&&.I	

 	&&,N	

 	&&.P	

 	&&.P	

 	&&2T	
r   c                    V P                  \        R \        R4      ^^R.R4       V P                  \        R \        R4      ^^R.R4       R# )r0   s   grkr   z8'ascii' codec can't decode byte 0xfc in position 1: ouchz6'ascii' codec can't decode bytes in position 1-2: ouchN)r   rA   rB   r
   s   &r   test_unicodedecodeerror)CodecCallbackTest.test_unicodedecodeerrorj  sR    &&i
+Q6:F	

 	&&i
+Q6:D	
r   c                    V P                  \        . ROR4       V P                  \        . ROR4       V P                  \        . R	OR4       V P                  \        . R
OR4       V P                  \        . ROR4       R# )r   z4can't translate character '\xfc' in position 1: ouchz6can't translate character '\u0100' in position 1: ouchz6can't translate character '\uffff' in position 1: ouchz:can't translate character '\U00010000' in position 1: ouchz0can't translate characters in position 1-2: ouchN)r   r   r   r   )u   gĀrkr   r   r   )u   g￿rkr   r   r   )u   g𐀀rkr   r   r   )r   r      r   )r   rN   r
   s   &r   test_unicodetranslateerror,CodecCallbackTest.test_unicodetranslateerrorv  s}    &&!%C	

 	&&!'E	

 	&&!'E	

 	&&!+I	

 	&&!%>	
r   c                   V P                  \        \        P                  ^*4       V P                  \        \        P                  \	        R4      4       V P                  \
        \        P                  \        RR^ ^R4      4       V P                  \        \        P                  \        R\        R4      ^ ^R4      4       V P                  \        \        P                  \        R^ ^R4      4       R# )r   r   r0   r      N)	r   rh   rw   strict_errors	Exceptionr3   rA   rB   rN   r
   s   &r   test_badandgoodstrictexceptions1CodecCallbackTest.test_badandgoodstrictexceptions  s      	
 	  f	
 	  w!Q?	

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

 	!  !(Aq&9	
r   c                   V P                  \        \        P                  ^*4       V P                  \        \        P                  \	        R4      4       V P                  \        P                  ! \        RR^^R4      4      R4       V P                  \        P                  ! \        R\        R4      ^^R4      4      R4       V P                  \        P                  ! \        R^^R4      4      R4       R# )r   r   r0      aあb   abN)r1   r   )
r   rh   rw   ignore_errorsr   r^   r3   rA   rB   rN   r
   s   &r   test_badandgoodignoreexceptions1CodecCallbackTest.test_badandgoodignoreexceptions  s    	
 		
 	  "7J1fEG	

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

 	  %j!Q?A	
r   c                   V P                  \        \        P                  ^*4       V P                  \        \        P                  \	        R4      4       V P                  \        \        P                  \        4       4       V P                  \        \        P                  \        4       4       V P                  \        P                  ! \        RR^^R4      4      R4       V P                  \        P                  ! \        R\        R4      ^^R4      4      R4       V P                  \        P                  ! \        R^^R4      4      R4       R# )r   r   r0   r   r   N)r   r   )   �r   )r   rh   rw   replace_errorsr   r8   rG   r^   r3   rA   rB   rN   r
   s   &r    test_badandgoodreplaceexceptions2CodecCallbackTest.test_badandgoodreplaceexceptions  s      	
 	  	

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

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

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

 	!!%j!Q?A	
r   c                   V P                  \        \        P                  ^*4       V P                  \        \        P                  \	        R4      4       V P                  \        \        P                  \        R\        R4      ^ ^R4      4       V P                  \        \        P                  \        R^ ^R4      4       RpVR,          pRP                  R V 4       4      pV P                  \        P                  ! \        RRV,           R,           ^^\        V4      ,           R4      4      RP                  R	 V 4       4      ^\        V4      ,           34       R
# )r   r   r0   r   r   r1   c              3   8   "   T F  p\        V4      x  K  	  R # 5iN)chrr   s   & r   r   OCodecCallbackTest.test_badandgoodxmlcharrefreplaceexceptions.<locals>.<genexpr>  s     'BqCFFBs   r   bc              3   4   "   T F  pR V,          x  K  	  R# 5i)rf   NrD   r   s   & r   r   r    s     -"QWq[["s   N)r   r   	   
   c   d   i  r   i'  '  i 順 i?B @B )i   i  )r   rh   rw   xmlcharrefreplace_errorsr   rA   rB   rN   ro   r^   r3   r   )r   csr`   s   &  r   *test_badandgoodxmlcharrefreplaceexceptions<CodecCallbackTest.test_badandgoodxmlcharrefreplaceexceptions  s$   **	
 	**	
 	++w	'(:Aq&I	

 	++!(Aq&9	

GG'B''++"7C!GcM#$a#a&j&: WW-"--q3q6z:	
r   c                   V P                  \        \        P                  ^*4       V P                  \        \        P                  \	        R4      4       . R
OpV F  w  r#V P                  VR7      ;_uu_ 4        V P                  \        P                  ! \        RRV,           R,           ^^\        V4      ,           R4      4      V^\        V4      ,           34       V P                  \        P                  ! \        RV,           R,           ^^\        V4      ,           R4      4      V^\        V4      ,           34       RRR4       K  	  . ROpV Ft  w  rCV P                  VR7      ;_uu_ 4        V P                  \        P                  ! \        R\        RV,           R	,           4      ^^R4      4      V^34       RRR4       Kv  	  R#   + '       g   i     EK  ; i  + '       g   i     K  ; i)r   r   r   r   r0   r  N   a)r      b))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  r  )   
r  )    r  )r   r  )r   rh   rw   backslashreplace_errorsr   subTestr^   r3   r   rN   rA   rB   )r   testsr`   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   9CG0AG G G1c                   V P                  \        \        P                  ^*4       V P                  \        \        P                  \	        R4      4       V P                  \        \        P                  \        R\        R4      ^ ^R4      4       V P                  \        \        P                  \        R^ ^R4      4       . R	OpV F  w  r#V P                  VR7      ;_uu_ 4        V P                  \        P                  ! \        RRV,           R,           ^^\        V4      ,           R4      4      V^\        V4      ,           34       RRR4       K  	  R#   + '       g   i     K  ; i)
r   r   r0   r   r   r  r   r  N))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   rh   rw   namereplace_errorsr   rA   rB   rN   r)  r^   r3   r   )r   r*  r`   r   s   &   r   $test_badandgoodnamereplaceexceptions6CodecCallbackTest.test_badandgoodnamereplaceexceptionsU  s(   $$	
 	$$	
 	%%w	'(:Aq&I	

 	%%!(Aq&9	

 DA!$$  --*7C!GcM+,a#a&j&BC CF
O	 %$ $$$s   %A$EE(c                   \         P                  ! R 4      pV P                  \        V^*4       V P                  \        V\	        R4      4       V P                  \        V\        R^ ^R4      4       R	 FJ  pV P                  VR7      ;_uu_ 4        V P                  \        V\        RV^ ^R4      4       RRR4       KL  	  V P                  V! \        RR^^R4      4      R
4       V P                  \        V\        R\        R4      ^ ^R4      4       V P                  V! \        R\        R4      ^^R4      4      R4       R#   + '       g   i     K  ; i)surrogateescaper      r  r0   Nu   abr  s   ab)r   u   u   )   r   )r3  r   )rw   r   r   rh   r   rN   r)  r3   r^   rA   rB   )r   surrogateescape_errorsr`   s   &  r   (test_badandgoodsurrogateescapeexceptions:CodecCallbackTest.test_badandgoodsurrogateescapeexceptions  sI   !'!4!45F!G!	
 	!	
 	"!(Aq&9	
 +A!$$!!&*&w1a@ %$ + 	""7J1fEG	

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

 	""7Ii,@!QOQ	
! %$$s   %EEc                   \         P                  ! R 4      pV P                  \        V^*4       V P                  \        V\	        R4      4       V P                  \        V\        R^ ^R4      4       R F}  pV P                  VR7      ;_uu_ 4        V P                  \        V\        VR^ ^R4      4       V P                  \        V\        VRP                  V4      ^ ^R4      4       RRR4       K  	  R FS  pV P                  VR7      ;_uu_ 4        V P                  \        V\        RV^ \        V4      R4      4       RRR4       KU  	  . ROpV F  w  r#rVV P                  W#VR7      ;_uu_ 4        V P                  V! \        VRV,           R	,           ^^\        V4      ,           R4      4      V^\        V4      ,           34       V P                  V! \        V\        R
VRV ,           R,           4      ^^V,           R4      4      VR,          ^V,           34       RRR4       K  	  R#   + '       g   i     EK  ; i  + '       g   i     EK_  ; i  + '       g   i     EK  ; i)surrogatepassr   r!  encodingr   Nr  r0   )r;  r   r   r  r  r  :Nr   N)r   utf-16leutf-16beutf-32leutf-32be)r!  r#  r%  ))r   r!  s   r   )r<  r!  s    r   )r=  r!  s    r   )r>  r!  s      r   )r?  r!  s      r   )r   r#  s   r   )r<  r#  s   r   )r=  r#  s   r   )r>  r#  s     r   )r?  r#  s     r   )r   r%  s   r   )r<  r%  s    r   )r=  r%  s    r   )r>  r%  s        r   )r?  r%  s        r   )rw   r   r   rh   r   rN   r)  r3   rA   r_   r   r^   rB   )r   surrogatepass_errorsr   r`   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=> rUAEN	 <; "G ,++ %$$0 <;;s&   AH..I4B,I.I II*c                  a RpRpV Fv  o\         P                  ! RV3R l4       V F%  pV P                  \        RP                  VR4       K'  	  R F'  w  r4V P                  \        VP
                  VR4       K)  	  Kx  	  R# )r   Nztest.badhandlerc                    < S# r  rD   )r   ress   &r   <lambda>:CodecCallbackTest.test_badhandlerresults.<locals>.<lambda>  s    sr   r   )	r   foo)r   r   r   rI  r   r   rI  NrI  rJ  rK  rL  )r0   r\   r   ru   )r0   r   r   r   )r   s   +x-)rw   rx   r   rh   r_   r   )r   resultsencsr   r   rF  s   &    @r   test_badhandlerresults(CodecCallbackTest.test_badhandlerresults  s~    x@C!!"3]C!!OO%	 !
 !!LL%	! r   c                v   V P                  \        P                  \        P                  ! R 4      4       V P                  \        P                  \        P                  ! R4      4       V P                  \        P                  \        P                  ! R 4      4       V P                  \        P
                  \        P                  ! R4      4       V P                  \        P                  \        P                  ! R4      4       V P                  \        P                  \        P                  ! R4      4       R# )r   r   r[   r   r   N)r^   rw   r   r   r   r  r(  r.  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           
       a V3R  lp\         P                  ! RV4       R FG  w  r#oVP                  VR4      pV P                  VRS,           R,           P                  V4      4       KI  	  R F  w  r#oV P	                  VR7      ;_uu_ 4        V P                  \        4      ;_uu_ 4       pVP                  VR4       RRR4       XP                  pV P                  VP                  ^4       V P                  VP                  ^4       V P                  VP                  V4       RRR4       K  	  R#   + '       g   i     L~; i  + '       g   i     K  ; i)c                 p   < \        V \        4      '       d   SV P                  3# \        R V ,          4      hre   rg   r3   r*   rh   r   r&   s   &r   r   BCodecCallbackTest.test_encode_nonascii_replacement.<locals>.handle"  0    #122cgg&9C?@@r   test.replacing[]r:  N))r0      [¤]r   )r      [€]u   ½¾)ru   r`  u   œŸ))r      []   🐍)r   rb  rc  )r   rb  rc  )rw   rx   r_   r^   r)  r   r3   	exceptionr   r*   r   )r   r   r   inputrF  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%   E,D5?A(E5E EEc           
       a V3R  lp\         P                  ! RV4       R F  w  r#oV P                  VR7      ;_uu_ 4        V P                  \        4      ;_uu_ 4       pVP                  VR4       RRR4       XP                  pV P                  VP                  ^4       V P                  VP                  ^4       V P                  VP                  V4       RRR4       K  	  R#   + '       g   i     L~; i  + '       g   i     K  ; i)c                 p   < \        V \        4      '       d   SV P                  3# \        R V ,          4      hrX  rY  rZ  s   &r   	unencreplHCodecCallbackTest.test_encode_unencodable_replacement.<locals>.unencrepl>  s0    #122cgg& = CDDr   ztest.unencreplhandlerr:  N))r0   r`     ½)r   ra  u   œ)ru   r`  rm  )r   rb     )r   rb  rn  )r   rb  rn  )rw   rx   r)  r   r3   r_   rd  r^   r   r*   r   )r   rk  r   re  rf  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(2A(C;(C83C;;Dc           
     h  a V3R  lp\         P                  ! RV4       R Fy  w  r#oV P                  VR7      ;_uu_ 4        VP                  VR4      pV P	                  VRP                  V4      S,           RP                  V4      ,           4       RRR4       K{  	  R#   + '       g   i     K  ; i)c                 p   < \        V \        4      '       d   SV P                  3# \        R V ,          4      hrX  rY  rZ  s   &r   r   ?CodecCallbackTest.test_encode_bytes_replacement.<locals>.handleV  r\  r   r]  r:  r^  r_  N))r0   r`     )r   ra  rt  )ru   r`  rt  )r   rb  rt  )r<  rb  rt  )r=  rb  rt  )r>  rb     )r?  rb  ru  )rw   rx   r)  r_   r^   )r   r   r   re  rF  r&   s   &    @r   test_encode_bytes_replacement/CodecCallbackTest.test_encode_bytes_replacementU  s    	A 	.7	!
C s++ll3(89  cjjo&<szz#&NO ,+	!
 ,++s   AB  B1c           
       a V3R  lp\         P                  ! RV4       Rp. \        P                  ! RRR.4      O\        P                  ! R	. R
O4      O F  w  poV P	                  VSR7      ;_uu_ 4        V P                  \        4      ;_uu_ 4       pVP                  VR4       RRR4       XP                  pV P                  VP                  ^4       V P                  VP                  ^4       V P                  VP                  V4       V P                  VP                  R4       RRR4       K  	  R#   + '       g   i     L; i  + '       g   i     EK	  ; i)c                 p   < \        V \        4      '       d   SV P                  3# \        R V ,          4      hrX  rY  rZ  s   &r   r   CCodecCallbackTest.test_encode_odd_bytes_replacement.<locals>.handlel  r\  r   r]  rb  r  r   )r;  r&   Nzsurrogates not allowed)r<  r=  )r>  r?  )r  s   abr   s   abcde)rw   rx   	itertoolsproductr)  r   r3   r_   rd  r^   r   r*   r   reason)r   r   re  r   rf  r   r&   s   &     @r   !test_encode_odd_bytes_replacement3CodecCallbackTest.test_encode_odd_bytes_replacementk  s   	A 	.7
7 $f~/
 7>@
IC s66&&'9::bLL&67 ;ll  A.  !,  U3  -EF 76
 ;: 766s%   6ED9'BE9E	EEc                    V P                  \        \        P                  ^*4       V P                  \        \        P                  R^*4       R# )r   z
test.dummyN)r   rh   rw   rx   r
   s   &r   test_badregistercall&CodecCallbackTest.test_badregistercall  s6     	)V%:%:B?)V%:%:L"Mr   c                N    V P                  \        \        P                  4       R # r  )r   rh   rw   r   r
   s   &r   test_badlookupcall$CodecCallbackTest.test_badlookupcall  s     	)V%8%89r   c                P    V P                  \        \        P                  R 4       R# )test.unknownN)r   LookupErrorrw   r   r
   s   &r   test_unknownhandler%CodecCallbackTest.test_unknownhandler  s     	+v':':NKr   c                    RpRP                  V Uu. uF  p\        V4      NK  	  up4      p\        P                  ! R\        P                  4       R F  pR F  pVP                  WE4       K  	  K  	  R# u upi )r   r1   test.xmlcharrefreplaceN)r      r
  2   r  i  r   i  r  iP  r  i  r  )r0   ru   )r[   r  )ro   r  rw   rx   r  r_   )r   vr   r`   r   r   s   &     r   test_xmlcharrefvalues'CodecCallbackTest.test_xmlcharrefvalues  sg    GGQ'QSVQ'(68W8WX+CF" G , (s   A7c           	     f   V P                  \        R P                  RR4       R p\        P                  ! RV4       V P                  \
        R P                  RR4       V P                  \
        RP                  RR4       V P                  \
        RP                  RR4       V P                  \
        RP                  RR4       V P                  \
        R	P                  RR4       V P                  \
        R
P                  RR4       R p\        P                  ! RV4       V P                  \
        R P                  RR4       \        4       p\        P                  ! RVP                  4       RVn        V P                  RP                  RR4      R4       RVn        V P                  RP                  RR4      R4       RVn        V P                  \        RP                  RR4       ^Vn        V P                  RP                  RR4      R4       ^Vn        V P                  RP                  RR4      R4       ^Vn        V P                  \        RP                  RR4       ^Vn        V P                  RP                  RR4      R4        ! R R\        4      pV P                  \        \        P                  R R^R/4       V P                  \        \        P                  R RV! 4       4       V P                  \
        \        P                  R R^\        P                   ^,           /4       R# )r   r0   r  c                     ^*# r   rD   r   s   &r   baddecodereturn1=CodecCallbackTest.test_decodehelper.<locals>.baddecodereturn1      r   ztest.baddecodereturn1   \r      \x0s   \x0ys
   \Uffffeeees   \uyyyyraw-unicode-escapec                     R# r   )r   NrD   r   s   &r   baddecodereturn2=CodecCallbackTest.test_decodehelper.<locals>.baddecodereturn2      r   ztest.baddecodereturn2test.posreturns   0z<?>0z<?><?>r   s   \uyyyy0c                   &   a  ] tR tRt o R tRtV tR# ).CodecCallbackTest.test_decodehelper.<locals>.Di  c                    \         hr  
ValueErrorr   keys   &&r   __getitem__:CodecCallbackTest.test_decodehelper.<locals>.D.__getitem__        r   rD   Nr   r   r   r   r  r   r    r!   s   @r   Dr         ! !r   r  r   Nr   )r   r  r   rw   rx   rh   r   r   r	   r^   
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           	        V P                  \        R P                  RR4       R p\        P                  ! RV4       V P                  \
        R P                  RR4       R p\        P                  ! RV4       V P                  \
        R P                  RR4       \        4       p\        P                  ! RVP                  4       RVn        V P                  RP                  RR4      R	4       RVn        V P                  RP                  RR4      R
4       RVn        V P                  \        RP                  RR4       ^Vn        V P                  RP                  RR4      R	4       ^Vn        V P                  RP                  RR4      R4       ^Vn        V P                  \        RP                  RR4       ^ Vn         ! R R\        4      pR F  pV P                  \        \        P                  R V^R/4       V P                  \        \        P                  R WT! 4       4       V P                  \
        \        P                  R V^R/4       K  	  R# )r  r0   r  c                     ^*# r  rD   r   s   &r   badencodereturn1=CodecCallbackTest.test_encodehelper.<locals>.badencodereturn1  r  r   ztest.badencodereturn1c                     R# r  rD   r   s   &r   badencodereturn2=CodecCallbackTest.test_encodehelper.<locals>.badencodereturn2  r  r   ztest.badencodereturn2r  u   ÿ0s   <?>0s   <?><?>s   <?>c                   &   a  ] tR tRt o R tRtV tR# ).CodecCallbackTest.test_encodehelper.<locals>.Di	  c                    \         hr  r  r  s   &&r   r  :CodecCallbackTest.test_encodehelper.<locals>.D.__getitem__
  r  r   rD   Nr  r!   s   @r   r  r  	  r  r   r  Ni,  r   r  r  )r   r   r[   r   r   r  )r   r  r_   rw   rx   rh   r   r   r	   r^   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                p   \        R 4      p\        P                  ! RVP                  4       . ROpV Fk  w  r4RP	                  V4      V,           pV P                  VR7      ;_uu_ 4        ^2Vn        VP                  VR4      pV P                  VR4       RRR4       Km  	  R#   + '       g   i     K  ; i)r   test.bug36819abcdr:  N)rM  rN  )r=  s   ܀)r?  s     ܀)z
iso-8859-6r   abcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdx)	r$   rw   rx   r   r_   r)  r'   r   r^   )r   r  	testcasesr   r2   re  decodeds   &      r   test_decodehelper_bug36819,CodecCallbackTest.test_decodehelper_bug36819  s    #C(ow~~>
	 "HCMM#&,Es++ ",,sO<  ,7 ,+ "+++s   *,B$$B5c           
     B   \        4       p\        P                  ! R VP                  4       Rp. ROpVR.,          p\        P
                  R8X  d   RR.pRVn        V F  pV P                  VR7      ;_uu_ 4        ^2Vn        V P                  \        4      ;_uu_ 4       pVP                  VR 4       RRR4       XP                  pV P                  VP                  ^4       V P                  VP                  ^4       V P                  VP                   V4       RRR4       K  	  \        P
                  R8X  d   ^2Vn        V P                  \        4      ;_uu_ 4       p\        P"                  ! R	VR 4       RRR4       XP                  pV P                  VP                  ^4       V P                  VP                  ^4       V P                  VP                   V4       R
Vn        V F`  pV P                  VR7      ;_uu_ 4        ^2Vn        VP                  VR 4      pV P                  VP%                  V4      R4       RRR4       Kb  	  \        P
                  R8X  dk   ^2Vn        \        P"                  ! R	VR 4      pV P                  V^ ,          P%                  4       R4       V P                  V^,          \'        V4      4       R# R#   + '       g   i     EL%; i  + '       g   i     EK  ; i  + '       g   i     EL; i  + '       g   i     EK4  ; i)r  u   abcdru   win32mbcsoemrn  r:  Ni  r   )r0   latin1r   r   r   r  )r$   rw   rx   r   r  platformr&   r)  r'   r   r3   r_   rd  r^   r   r*   r   code_page_encoder   r   )r   r  re  	encodingsr   rf  r   encodeds   &       r   test_encodehelper_bug36819,CodecCallbackTest.test_encodehelper_bug36819$  sZ   #%ow~~>D	m_$	<<7"ICs++ "&&'9::bLLo6 ;ll  A.  !,  U3 ,+  <<7"GM""#56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6 ,++s=   ;%K# K3A(K# K8;LK 	K##K58L		Lc                     ! R  R\         4      pV P                  \        RP                  ^\        P
                  ^,           /4       V P                  \        RP                  ^R/4       R# )c                   &   a  ] tR tRt o R tRtV tR# )1CodecCallbackTest.test_translatehelper.<locals>.DiV  c                    \         hr  r  r  s   &&r   r  =CodecCallbackTest.test_translatehelper.<locals>.D.__getitem__W  r  r   rD   Nr  r!   s   @r   r  r  V  r  r   r  r  NrD   )r   r   r  	translater  r  rh   )r   r  s   & r   test_translatehelper&CodecCallbackTest.test_translatehelperP  sR    	! 	! 	*f&6&6s~~a?O8PQ)V%5%5bzBr   c           	         \        R 4      R\        R4      R\        R4      R\        R4      R/pR
 F  pRV,          pVP                  V4       K  	  R	# )&z&amp;<z&lt;>z&gt;"z&quot;zabc<def>ghiN)r   r
  r  r   )rm   r  )r   r   rA  texts   &   r   test_bug828737 CodecCallbackTest.test_bug828737]  sN    HgHfHfHh	
 $A ?DNN7# $r   c                ~   . ROpR p\         P                  ! RV4       V F=  w  r4V P                  \        4      ;_uu_ 4        VP	                  VR4       RRR4       K?  	  R p\         P                  ! RV4       V F'  w  r4V P                  VP	                  VR4      R4       K)  	  R#   + '       g   i     K  ; i)r0   c                 d    \        V \        4      '       d
   ^*V n        R# \        RV ,          4      h)r   re      䉂r   rg   rA   r   rh   r   s   &r   	replacingACodecCallbackTest.test_mutating_decode_handler.<locals>.replacingt  s.    #122
$$ = CDDr   r]  Nc                 d    \        V \        4      '       d
   R V n        R# \        RV ,          4      h)r   re   r  r  r   s   &r   mutating@CodecCallbackTest.test_mutating_decode_handler.<locals>.mutating  s.    #122 
$$ = CDDr   ztest.mutatingr  )rM  )r   s   ++rN  )r   r   )r   r   )r      \u123g)r  r  )rw   rx   r   rh   r   r^   )r   baddatar  r;  datar  s   &     r   test_mutating_decode_handler.CodecCallbackTest.test_mutating_decode_handleri  s    
	E 	.	: 'X""9--H&67 .- !(	E 	ox8 !(XT[[?CXN !( .--s   B++B<c                  a aa \         P                  oV3R  lp\         P                  ! RV4       RRRRRR/oVV 3R lpV! RRR4       V! R	R
R4       V! RRR4       V! RRR4       V! RRR4       V! RRR4       V! \        R4      RR RR4       V! \        R4      RR RR4       V! RRR4       V! RR
R4       V! RRR4       V! \        R4      RR RR4       R# ) c                   < \        V \        4      '       dd   SP                  V P                  R V P                   4      pVe8   V^ ,          V P                  V P                  R  ,           V n        RV^,          3# \        RV ,          4      h)Nu   Єre   )rg   rA   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.mutating2r  s   \x3s   \x5c           	        < SP                  \        4      ;_uu_ 4       pSP                  S! V R 4      V\        V 4      34       RRR4       SP	                  V\        XP                  4      4       R#   + '       g   i     L7; i)r  N)assertWarnsDeprecationWarningr^   r   assertInr   warning)re  expectedr   rf  r   r   s   &&& r   checkLCodecCallbackTest.test_mutating_decode_handler_unicode_escape.<locals>.check  s]    !!"455  /?!@8SQVZBXY 6MM#s2::/ 65s   %A33B	s   \x0n\zu   Є
\zz""\z" is an invalid escape sequences   \x0n\501u   Є
Łz*"\501" is an invalid octal escape sequences   \x0zu   Є\zs   \x3n\zru   Є
\zrs   \x3zru   Є\zrs   \x3z5u   Є\z5s   \x3z5xNs   \x3z5xys   \x5n\zs   \x5n\501s   \x5zs   \x5zy)r  r   )s   xxx\r   )s   x\r   r   r  )rw   unicode_escape_decoderx   
memoryview)r   r  r  r  r   s   f  @@r   +test_mutating_decode_handler_unicode_escape=CodecCallbackTest.test_mutating_decode_handler_unicode_escape  s   --	F 	.9Z][

	0
 	j-)NOl,.[\h%JKk>+PQi'LMi'LMj$Sb)<9^_j%cr*L:_`j-)NOl,.[\h%JKj#CR(+7\]r   c                   R  p\         P                  ! RV4       V P                  RP                  RR4      R4       V P                  RP                  RR4      R4       V P                  RP                  RR4      R	4       V P                  R
P                  RR4      R	4       R p\         P                  ! RV4       V P                  RP                  RR4      R4       V P                  RP                  RR4      R4       R# )c                 |    \        V \        4      '       d   R V P                  ^,           3# \        RV ,          4      h)r   re   )rg   rA   r   rh   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                 |    \        V \        4      '       d   RV n        RV P                  3# \	        RV ,          4      h)r'  r   re   s           )rg   rA   r   r   rh   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   �  N)rw   rx   r^   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                V  a \         P                  \         P                  \         P                  \         P                  \         P
                  \         P                  \         P                  ! R 4      \         P                  ! R4      .p\        \        \        3 F  o ! V3R lR\        4      pV FB  pV P                  VSR7      ;_uu_ 4        V P                  \        W2! 4       4       RRR4       KD  	   ! V3R lR\        4      pV F\  pV P                  VSR7      ;_uu_ 4        V P                  \        V34      ;_uu_ 4        V! V! 4       4       RRR4       RRR4       K^  	  K  	  R#   + '       g   i     K  ; i  + '       g   i     L6; i  + '       g   i     K  ; i)r2  r9  c                      < ] tR tRt Z tRtR# )ACodecCallbackTest.test_fake_error_class.<locals>.FakeUnicodeErrori  rD   Nr   r   r   r   	__class__r   clss   r   FakeUnicodeErrorr        	r   r  )r  error_classNc                      < ] tR tRt Z tRtR# )r  i  rD   Nr  r  s   r   r  r    r  r   )rw   r   r   r   r(  r.  r  r   r3   rA   rN   r   r)  r   rh   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C%%i:J:LM DC $ 9  #\\'s\CC**I7G+HII 0 23 J DC $ Q DCC JI DCCs0   E0	( F	FF	0FFF	F(c                    R F@  pV P                  V4      ;_uu_ 4        V P                  \        \        V4       RRR4       KB  	  R#   + '       g   i     KW  ; i)r   N)r   r   r   r   r   r[   r2  r9  )r)  r   r  _codecs_unregister_error)r   r   s   & r   ,test_reject_unregister_builtin_error_handler>CodecCallbackTest.test_reject_unregister_builtin_error_handler  sF    
D d##!!*.FM $#	
 $##s   A		Ac                P   R  pRpV P                  \        \        P                  V4       \        P                  ! W!4       V P                  \        P                  ! V4      V4       V P                  \        V4      4       V P                  \        \        P                  V4       R# )c                     V hr  rD   r   s   &r   custom_handlerNCodecCallbackTest.test_unregister_custom_error_handler.<locals>.custom_handler  s    Ir   z)test.test_unregister_custom_error_handlerN)r   r  rw   r   rx   assertIs
assertTruer  )r   r$  custom_names   &  r   $test_unregister_custom_error_handler6CodecCallbackTest.test_unregister_custom_error_handler  sx    	 B+v':':KHk:f))+6G0=>+v':':KHr   c                    R pV P                  \        \        P                  V4       V P	                  \        V4      4       V P                  \        \        P                  V4       R# )z1test.test_unregister_custom_unknown_error_handlerN)r   r  rw   r   assertFalser  )r   unknown_names   & r   ,test_unregister_custom_unknown_error_handler>CodecCallbackTest.test_unregister_custom_unknown_error_handler  sK    J+v':':LI1,?@+v':':LIr   rD   N)2r   r   r   r   ra   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r+  r/  r6  rB  rQ  rT  rg  ro  rv  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r)  r.  r   r    r!   s   @r   rY   rY   R   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"^J0
d40N	IJ Jr   rY   __main__)_codecsr   r  rw   html.entitiesrj   r{  rer  r   unittestr   r$   r3   r-   r8   rA   r>   rG   rN   rK   rQ   rU   TestCaserY   r   mainrD   r   r   <module>r7     s    A    	 
   "
$ 
$!3 "4 0 "4 #8 !6 $9 
@J)) @JF& zMMO r   