+
    Bi                     T   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RI	H
t
 ]
P                  ! R4      tRt]P                  ! R4      t ! R R]P                   4      t ! R R]P                   4      t ! R	 R
]P                   4      t]R8X  d   ]P*                  ! 4        R# R# )    N)import_helper_testlimitedcapiz(bad argument type for built-in operationc                      a  ] tR t^t 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V tR# )CAPIUnicodeTestc                   \         P                  pV P                  V! R\        4      R4       V P                  V! RR4      R4       RpRpV P                  V! V\        4      V4       V P                  V! VR4      V4       V P                  V! VR4      VP	                  R4      4       V P                  \        WR4       V P                  V! VRR4      R4       V P                  V! \        V4      \        4      V4       V P                  V! \        V4      R4      V4       V P                  \        VRR	4       V P                  \        WRR	4       V P                  \        VR\        4       V P                  \        VRR4       V P                  \        V. \        4       V P                  \        V. R4       V P                  \        V\        \        4       V P                  \        V\        R4       R
# )z"Test PyUnicode_FromEncodedObject()   abcabcascii
   a¡你😀
   a¡你😀utf-8latin1replacefooN   a���������)r   unicode_fromencodedobjectassertEqualNULLdecodeassertRaisesUnicodeDecodeError	bytearrayLookupError	TypeErrorSystemError)selffromencodedobjectbss   &   1/usr/lib/python3.14/test/test_capi/test_codecs.pytest_fromencodedobject&CAPIUnicodeTest.test_fromencodedobject#   s   ,FF*648%@*67;UC4#*1d3Q7*1g6:*1h7(9KL,.?GL*1gyA)	+*9Q<>B*9Q<A1E+'8&%H+'8WeL)%6tD)%6wG)%6DA)%6GD+'8$E+'8$H    c                   \         P                  pV P                  V! RR4      R4       V P                  V! RR4      R4       V P                  V! RRR4      R4       V P                  \        VRR4       V P                  V! RRR4      R4       V P                  V! R\
        4      R4       V P                  V! R\
        R4      R4       V P                  \        VR	R
4       V P                  \        VR	RR
4       R# )zTest PyUnicode_Decode()s   [€]r   u   [€]s   []z
iso8859-15strictr   u   [�]   r   N)r   unicode_decoder   r   r   r   r   )r   r   s   & r    test_decodeCAPIUnicodeTest.test_decode<   s    !00 17;ZH	<8*E	<BJO,fiI	7I>
K 148*E	4;ZH+vw>+vwGr#   c                   \         P                  pV P                  V! R\        4      R4       V P                  V! RR4      R4       RpRpV P                  V! V\        4      V4       V P                  V! VR4      V4       V P                  V! RR4      R	4       V P	                  \
        VRR4       V P                  V! VRR
4      R4       V P	                  \        VRR4       V P	                  \        WRR4       V P	                  \        VR\        4       V P	                  \        VRR4       V P	                  \        V. \        4       V P	                  \        V. R4       R# )z Test PyUnicode_AsEncodedString()r	   r   r
   r   r   r      ¡¢r      r   s   a???r   N)r   unicode_asencodedstringr   r   r   UnicodeEncodeErrorr   r   )r   asencodedstringr   r   s   &   r    test_asencodedstring$CAPIUnicodeTest.test_asencodedstringN   s0   *BB5v>8&A#4D115G4a8X>L,oz7SGY?I+uE+7EJ)_fdC)_fgF)_b$?)_b'Br#   c                   \         P                  pR FE  pVP                  R4      pV P                  V! V4      V4       V P                  V! VR4      V4       KG  	  V P	                  \
        VR4       V P	                  \
        VR4       V P	                  \
        VR4       V P	                  \
        VR4       V P                  V! RR4      R4       V P                  V! R	R4      R
4       V P	                  \        VRR4       R# )Test PyUnicode_DecodeUTF8()r   r%               ar      a�   ab   a�b   ar   Nr	   r+      你好u   a😀)r   unicode_decodeutf8encoder   r   r   r   )r   
decodeutf8r   r   s   &   r    test_decodeutf8CAPIUnicodeTest.test_decodeutf8e   s    %88
CA!AZ]A.Z84a8 D
 	,j'B,j'B,j'B,j,GL)<iHM9=zJ+z8UCr#   c                d   \         P                  pR F[  pVP                  R4      pV P                  V! V4      V\	        V4      34       V P                  V! VR4      V\	        V4      34       K]  	  V P                  \        VR4       V P                  \        VR4       V P                  \        VR4       V P                  V! R4      R4       V P                  V! RR4      R4       V P                  \        VR4       V P                  V! RR4      R4       V P                  \        VR	R
4       R# )z#Test PyUnicode_DecodeUTF8Stateful()r   r%   r4   r5   r6   r7   r   r9   r;   r   Nr<   )a   )r:      )r   unicode_decodeutf8statefulr?   r   lenr   r   r   )r   decodeutf8statefulr   r   s   &   r    test_decodeutf8stateful'CAPIUnicodeTest.test_decodeutf8statefuly   s   -HHCA!A/2QAK@/8<q#a&kJ D
 	,.@'J,.@'J,.@'J+L98D+L)DhO,.@-P+M9EW+'98UKr#   c                   \         P                  pR F*  pV P                  V! V4      VP                  R4      4       K,  	  V P	                  \
        VR4       V P	                  \        VR4       V P	                  \        V. 4       R# )zTest PyUnicode_AsUTF8String()r      r   Nr<   )r   unicode_asutf8stringr   r?   r   r.   r   )r   asutf8stringr   s   &  r    test_asutf8string!CAPIUnicodeTest.test_asutf8string   sn    '<<CA\!_ahhw.?@ D 	,lHE)\6:)\26r#   c                v   \         P                  p\        P                  R8X  d   RM^pR F  pVP	                  R4      pV P                  V! ^ V4      W#34       VP	                  R4      pV P                  V! RV4      RV34       V P                  V! ^ RV,           4      RV34       VP	                  R4      pV P                  V! ^V4      ^V34       V P                  V! ^ RV,           4      ^V34       K  	  V P                  \        VRR4       V P                  \        V^R4       V P                  \        V^ R4       V P                  \        V^ R	4       V P                  \        VRR
4       V P                  \        V^R4       V P                  \        V^ R4       V P                  V! RR
R4      R4       V P                  V! ^RR4      R4       V P                  V! ^ RR4      R4       V P                  V! ^ RR4      R4       V P                  V! ^ RR4      R4       V P                  \        VRR4       V P                  \        V^R4       V P                  \        V^ R4       V P                  V! RRR4      R4       V P                  V! ^RR4      R4       V P                  V! ^ RR4      R4       V P                  V! ^ RR4      R4       V P                  V! ^ RR4      R4       V P                  \        VRR
R4       V P                  \        V^RR4       V P                  \        V^ RR4       R# )zTest PyUnicode_DecodeUTF16()littleutf-16utf-16le   utf-16be      as   as   a           r           s   =s   =s   s   =s   =r   Nr<   r_      �rE   ra   r   ra   )	r   unicode_decodeutf16sys	byteorderr?   r   r   r   r   )r   decodeutf16naturalbyteorderr   r   s   &    r    test_decodeutf16 CAPIUnicodeTest.test_decodeutf16   s   &::!$(!:2CA"A[A.1A0EF$A[Q/"a9[KM:RGD$A[A.A7[KM:QFC D 	,k2tD,k1dC,k1lK,k1lK,k2{K,k1kJ,k1kJRi@.QQY?OQY?OQ(;YGXQ(;YGW,k2{K,k1kJ,k1kJRi@.QQY?OQY?OQ(;YGXQ(;YGW+{BUK+{A{EJ+{A{EJr#   c           	        \         P                  p\        P                  R8X  d   RM^pR EF  pVP	                  R4      pV P                  V! ^ V4      W#\        V4      34       VP	                  R4      pV P                  V! RV4      RV\        V4      34       V P                  V! ^ RV,           4      RV\        V4      ^,           34       VP	                  R4      pV P                  V! ^V4      ^V\        V4      34       V P                  V! ^ RV,           4      ^V\        V4      ^,           34       EK  	  V P                  V! RR4      R4       V P                  V! RR4      R4       V P                  V! RR	4      R4       V P                  V! ^R
4      R4       V P                  V! ^R4      R4       V P                  V! ^R4      R4       V P                  V! ^ R4      R4       V P                  V! ^ R4      R4       V P                  \        VRR4       V P                  \        V^R4       V P                  \        V^ R4       V P                  V! RRR4      R4       V P                  V! ^RR4      R 4       V P                  V! ^ RR4      R!4       V P                  V! ^ RR4      R"4       V P                  V! ^ RR4      R#4       V P                  \        VRR4       V P                  V! RRR4      R$4       V P                  \        V^R4       V P                  V! ^RR4      R%4       V P                  \        VRRR4       V P                  \        V^RR4       V P                  \        V^ RR4       R# )&z$Test PyUnicode_DecodeUTF16Stateful()rS   rT   rU   rV   rW   rX   s   a =s   a =s   a = s    as    a=s    a=s   a = s    a=rZ   r[   r\   r   r]   r^   s   =a s   = ar   Nr_   r<   )r_   rD      )rE   rD   rl   r_   rD   rF   rE   rD   rF   )r_   ra   rl   )rE   ra   rl   )r   ra   rl   r_   ra   rF   rE   ra   rF   )r_      �arF   )rE   rq   rF   )
r   unicode_decodeutf16statefulre   rf   r?   r   rH   r   r   r   )r   decodeutf16statefulrh   r   r   s   &    r    test_decodeutf16stateful(CAPIUnicodeTest.test_decodeutf16stateful   sV   .JJ!$(!:2CA"A0A69IcRSf8UV$A0Q7"aQI0KMBRCPQFSTHDUV$A0A6As1vG0KMBQ3q6RS8DTU D 	,RA<P,R1DE|T,R1HI<X,Q@+N,Q0CDkR,Q0GH+V,Q0OPR^_,Q0OPR]^,.A2{S,.A1kR,.A1kR,RiHJ[\,QYGIYZ,QYGIYZ,Q0CYOQbc,Q0CYOQab,.A2GZ[,R1DiPRde,.A1FYZ,Q0CYOQbc+':BUS+':A{ER+':A{ERr#   c                   \         P                  pR F*  pV P                  V! V4      VP                  R4      4       K,  	  V P	                  \
        VR4       V P	                  \        VR4       V P	                  \        V. 4       R# )zTest PyUnicode_AsUTF16String()rT   rM   r   Nr<   )r   unicode_asutf16stringr   r?   r   r.   r   )r   asutf16stringr   s   &  r    test_asutf16string"CAPIUnicodeTest.test_asutf16string   o    (>>CA]1-qxx/AB D 	,mXF)]F;)]B7r#   c                   \         P                  p\        P                  R8X  d   RM^pR F  pVP	                  R4      pV P                  V! ^ V4      W#34       VP	                  R4      pV P                  V! RV4      RV34       V P                  V! ^ RV,           4      RV34       VP	                  R4      pV P                  V! ^V4      ^V34       V P                  V! ^ RV,           4      ^V34       K  	  V P                  \        VRR4       V P                  \        V^R4       V P                  \        V^ R	4       V P                  \        V^ R
4       V P                  \        VRR4       V P                  \        V^R4       V P                  \        V^ R4       V P                  V! RRR4      R4       V P                  V! ^RR4      R4       V P                  V! ^ RR4      R4       V P                  V! ^ RR4      R4       V P                  V! ^ RR4      R4       V P                  \        VRR4       V P                  V! RRR4      R4       V P                  \        V^R4       V P                  V! ^RR4      R4       V P                  \        VRRR4       V P                  \        V^RR4       V P                  \        V^ RR4       R# )r3   rS   utf-32utf-32le     utf-32be        a          a s	     a    s	        a    r                =       =r   Nr_   r<   r`   rb   rc   )	r   unicode_decodeutf32re   rf   r?   r   r   r   r   )r   decodeutf32rh   r   r   s   &    r    test_decodeutf32 CAPIUnicodeTest.test_decodeutf32  s   &::!$(!:2CA"A[A.1A0EF$A[Q/"a9[,?,ABRGL$A[A.A7[,?,ABQFK D 	,k2?VW,k1>UV,k1>ef,k1>ef,k2?RS,k1>QR,k1>QRR)<iH.YQ(;YGWQ(;YGWQ(KYWYghQ(KYWYfg,k2?RSR)<iH.Y,k1>QRQ(;YGW+{B8KUS+{A7JER+{A7JERr#   c           	     &   \         P                  p\        P                  R8X  d   RM^pR EF  pVP	                  R4      pV P                  V! ^ V4      W#\        V4      34       VP	                  R4      pV P                  V! RV4      RV\        V4      34       V P                  V! ^ RV,           4      RV\        V4      ^,           34       VP	                  R4      pV P                  V! ^V4      ^V\        V4      34       V P                  V! ^ RV,           4      ^V\        V4      ^,           34       EK  	  V P                  V! RR4      R4       V P                  V! RR4      R4       V P                  V! RR	4      R4       V P                  V! ^R
4      R4       V P                  V! ^R4      R4       V P                  V! ^R4      R4       V P                  V! ^ R4      R4       V P                  V! ^ R4      R4       R F  pV P                  V! RV4      R4       V P                  V! ^V4      R4       V P                  V! ^ V4      R 4       V P                  V! ^ RV,           4      R!4       V P                  V! ^ RV,           4      R"4       K  	  V P                  \        VRR4       V P                  \        V^R4       V P                  \        V^ R4       V P                  V! RRR4      R#4       V P                  V! ^RR4      R$4       V P                  V! ^ RR4      R%4       V P                  V! ^ RR4      R&4       V P                  V! ^ RR4      R'4       V P                  \        VRR4       V P                  V! RRR4      R#4       V P                  \        V^R4       V P                  V! ^RR4      R$4       V P                  \        VRRR4       V P                  \        V^RR4       V P                  \        V^ RR4       R# )(z$Test PyUnicode_DecodeUTF32Stateful()rS   r}   r~   r   r   r   r   s   a    s   a    r   s      a s      a s     a    s        a r   r   r   r   r   r   r   Nr_   r<   rm   rn   )r_   rD      )rE   rD   r   )r6   s   s   )r_    r   )rE   r   r   )r   r   r   )r_   r   rF   )rE   r   rF   ro   rp   )r   ra   rF   )r_   ra   r   )rE   ra   r   )
r   unicode_decodeutf32statefulre   rf   r?   r   rH   r   r   r   )r   decodeutf32statefulrh   r   r   s   &    r    test_decodeutf32stateful(CAPIUnicodeTest.test_decodeutf32stateful*  s   .JJ!$(!:2CA"A0A69IcRSf8UV$A0Q7"aQI04G4IJRQRTWXYTZ[\T\L]^$A0A6As1vG04G4IJQPQSVWXSYZ[S[L\] D 	,R1HI<X,R1LM|\,R1PQS_`,Q0GH+V,Q0KLkZ,Q0OPR]^,Q0_`bno,Q0_`bmn6A0Q7E0A6
C0A6
C04G4IJKX04G4IJJW 7 	,.A2GZ[,.A1FYZ,.A1FYZ,R1DiPRcd,Q0CYOQab,Q0CYOQab,Q0SU^_ars,Q0SU^_aqr,.A2GZ[,R1DiPRcd,.A1FYZ,Q0CYOQab+':B@SUZ[+':A?RTYZ+':A?RTYZr#   c                   \         P                  pR F*  pV P                  V! V4      VP                  R4      4       K,  	  V P	                  \
        VR4       V P	                  \        VR4       V P	                  \        V. 4       R# )zTest PyUnicode_AsUTF32String()r}   rM   r   Nr<   )r   unicode_asutf32stringr   r?   r   r.   r   )r   asutf32stringr   s   &  r    test_asutf32string"CAPIUnicodeTest.test_asutf32string^  r{   r#   c                    \         P                  pV P                  V! R4      R4       V P                  V! RR4      R4       V P                  V! R4      R4       V P                  V! RR4      R4       R# )zTest PyUnicode_DecodeLatin1()r   r	   r%   r,   r+   N)r   unicode_decodelatin1r   )r   decodelatin1s   & r    test_decodelatin1!CAPIUnicodeTest.test_decodelatin1j  se    '<<f-u5fh7?k2J?k8<jIr#   c                   \         P                  pV P                  V! R4      R4       V P                  V! R4      R4       V P                  \        VR4       V P                  \
        VR4       V P                  \
        V. 4       R# )zTest PyUnicode_AsLatin1String()r	   r   r+   r,      你N)r   unicode_aslatin1stringr   r   r.   r   )r   aslatin1strings   & r    test_aslatin1string#CAPIUnicodeTest.test_aslatin1stringu  sn    )@@.7
3[A,nhG)^V<)^R8r#   c                J   \         P                  pV P                  V! R4      R4       V P                  V! RR4      R4       V P                  \        VR4       V P                  V! RR4      R4       V P                  V! RR4      R	4       V P                  \
        VRR
4       R# )zTest PyUnicode_DecodeASCII()r   r	   r%   r6   s   ar   r8   s   abr:   r   N)r   unicode_decodeasciir   r   r   r   )r   decodeasciis   & r    test_decodeascii CAPIUnicodeTest.test_decodeascii  s    &::V,e4VX6>,k7CXy99EY	:JG+{HeDr#   c                    \         P                  pV P                  V! R4      R4       V P                  \        VR4       V P                  \
        VR4       V P                  \
        V. 4       R# )zTest PyUnicode_AsASCIIString()r	   r      N)r   unicode_asasciistringr   r   r.   r   )r   asasciistrings   & r    test_asasciistring"CAPIUnicodeTest.test_asasciistring  sY    (>>u-v6,mVD)]F;)]B7r#   c                   \         P                  pV P                  V! R^ R^R^R/4      R4       V P                  V! R. RO4      R4       V P                  V! RR4      R4       V P                  V! R. RO4      R4       V P                  V! R. RO4      R	4       V P                  V! R. RO4      R
4       V P                  V! R. RO4      R4       V P                  V! R. RO4      R4       V P                  \        VR/ 4       V P                  \        VR^ R/4       V P                  V! R. ROR4      R4       V P                  V! R\
        4      R4       V P                  \        VR^*4       R# )zTest PyUnicode_DecodeCharmap()    rD   r   cbacs    r	   u   ¢¡£u	   好你世u   😁😀😂bcd    Nr   u   b�cs    u    ÿ)rD   r   r   )   ¡   ¢   £)r   u   好u   世)   😀u   😁u   😂)a   b   c   )r   r   cd)Nr   r   )r   unicode_decodecharmapr   r   r   r   r   )r   decodecharmaps   & r    test_decodecharmap"CAPIUnicodeTest.test_decodecharmap  sN   (>>y1c1c1c2JKUSy/BEJy%8%@y2JK^\y2PQSghy2\]_  	Ay,?Gy/BEJ,mUBG,mUQINy2BINPZ[}d;\J)]E2>r#   c                X   \         P                  pV P                  V! R^a^^b^ ^c^/4      R4       V P                  V! R^^^^ ^^/4      R4       V P                  V! RR^R^ R^/4      R4       V P                  V! RR	^R
^ R^/4      R4       V P                  V! R^a^^bR^cR/4      R4       V P                  \        VR/ 4       V P                  \        VR^aR/4       V P                  \
        VR/ 4       V P                  \
        V. / 4       V P                  \
        VR\        4       R# )z Test PyUnicode_AsCharmapString()r	   r   u   ¡¢£u	   你好世i`O  i}Y  iN  u   😀😁😂i  i i r#   s   spams   spamrD   NrY   )r   unicode_ascharmapstringr   r   r.   r   r   )r   ascharmapstrings   & r    test_ascharmapstring$CAPIUnicodeTest.test_ascharmapstring  s:   *BBQAr10EF	R$4DRS9TUW`a)=6STV\^_?`aclm)IGUVX_abdkmnKopr{|QCW0MNPYZ,osBG,osRJO)_dB?)_b"=)_c4@r#   c                   \         P                  pV P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R	4      R4       V P                  V! R
4      R4       V P                  V! R4      R4       V P                  \        4      ;_uu_ 4        V P                  V! R4      R4       RRR4       R F0  pV P                  \        W4       V P                  \        WR4       K2  	  V P                  V! RR4      R4       V P                  V! RR4      R4       V P                  \        VRR4       R#   + '       g   i     L; i)z$Test PyUnicode_DecodeUnicodeEscape()r   r	      \t\n\r\x0b\x0c\x00\\	
 \s   	
 z	
    \xa1\xa2r+   r,      \u4f60\u597dr=   
   \U0001f600r      \z\zN   \r%   
   x\U0001f60r      x�   x\U0001f60y   x�yr   )r   s   \xa   \u4f6	   \U0001f60)r   unicode_decodeunicodeescaper   assertWarnsDeprecationWarningr   r   r   )r   decodeunicodeescaper   s   &  r    test_decodeunicodeescape(CAPIUnicodeTest.test_decodeunicodeescape  s[   .JJ,V4e<,-EFHXY,-BC^T,\:JG,[9:F,-=>O,^<lK01108%@ 2 :A02EI02E(S : 	,^YGS,_iH*U+':E5I 21s   E99F		c                r   \         P                  pV P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R	4      R
4       V P                  \        VR4       V P                  \        V. 4       R# )z&Test PyUnicode_AsUnicodeEscapeString()r	   r   r   r   r+   r   r=   r   r   r   N)r   unicode_asunicodeescapestringr   r   r   )r   asunicodeescapestrings   & r    test_asunicodeescapestring*CAPIUnicodeTest.test_asunicodeescapestring  s     0 N N.u5v>./?@BZ[.z:LI.~>@PQ.|<nM)%:FC)%:B?r#   c                v   \         P                  pV P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R	4      R
4       V P                  V! R4      R4       V P                  V! R4      R4       R F0  pV P                  \        W4       V P                  \        WR4       K2  	  V P                  V! RR4      R4       V P                  V! RR4      R4       V P                  \
        VRR4       R# )z'Test PyUnicode_DecodeRawUnicodeEscape()r   r	      	
 \r   r,   r+   r   r=   r   r   r   z\xa1\xa2r   r   r   r%   r   r   r   r   r   r   N)r   r   )r   unicode_decoderawunicodeescaper   r   r   r   )r   decoderawunicodeescaper   s   &  r    test_decoderawunicodeescape+CAPIUnicodeTest.test_decoderawunicodeescape  s"   !1!P!P/7?/0ABDTU/<jI/0@A>R/?N/={K/7?)A02HL02HXV * 	/	JIV/KZX+'=}eTr#   c                r   \         P                  pV P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R	4      R
4       V P                  \        VR4       V P                  \        V. 4       R# )z)Test PyUnicode_AsRawUnicodeEscapeString()r	   r   r   r   r+   r,   r=   r   r   r   N)r    unicode_asrawunicodeescapestringr   r   r   )r   asrawunicodeescapestrings   & r    test_asrawunicodeescapestring-CAPIUnicodeTest.test_asrawunicodeescapestring  s    #3#T#T 1%8&A12BCEVW1*={K1.ACST1,?P)%=vF)%=rBr#    N)__name__
__module____qualname____firstlineno__r!   r(   r0   rA   rJ   rP   ri   rt   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes____classdictcell____classdict__s   @r    r   r      s     $I2H$C.D(L.	7(KX(S\	8$SP.[h	8J	9E8?.A"J0@U,C Cr#   r   c                      a  ] tR tRt o R tR t]P                  R 4       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V tR# )
CAPICodecsi  c                    R V n         V P                  \        \        P                  V P                   4       V P                  4        R# )z)test.test_capi.test_codecs.codec_reversedN)encoding_namer   r   codecslookup_create_custom_codecr   s   &r    setUpCAPICodecs.setUp  s7     I 	+v}}d6H6HI!!#r#   c           
     ~  a aaa RR loRR lo ! V3R lR\         P                  4      p ! V3R lR\         P                  4      p ! VV3R lR\         P                  4      p ! VV3R	 lR
\         P                  4      p\         P
                  ! SSVVVVS P                  R7      oVV 3R lpSS n        VS n        R# )r%   c                 h    \        V 4      ! 4       P                  \        V 4      4      \        V 4      3# NtypejoinreversedrH   )merrorss   &&r    codec_encoder6CAPICodecs._create_custom_codec.<locals>.codec_encoder  $    GINN8A;/Q88r#   c                 h    \        V 4      ! 4       P                  \        V 4      4      \        V 4      3# r   r  )r   r  s   &&r    codec_decoder6CAPICodecs._create_custom_codec.<locals>.codec_decoder  r	  r#   c                   2   <a  ] tR tRt o RV3R lltRtV tR# );CAPICodecs._create_custom_codec.<locals>.IncrementalEncoderi"  c                   < S! V4      # r   r   )r   inputfinalr  s   &&&r    r?   BCAPICodecs._create_custom_codec.<locals>.IncrementalEncoder.encode#      $U++r#   r   NF)r   r   r   r   r?   r   r   )r   r  s   @r    IncrementalEncoderr  "       , ,r#   r  c                   2   <a  ] tR tRt o RV3R lltRtV tR# );CAPICodecs._create_custom_codec.<locals>.IncrementalDecoderi&  c                   < S! V4      # r   r   )r   r  r  r  s   &&&r    r   BCAPICodecs._create_custom_codec.<locals>.IncrementalDecoder.decode'  r  r#   r   Nr  )r   r   r   r   r   r   r   )r   r  s   @r    IncrementalDecoderr  &  r  r#   r  c                   B   <a  ] tR tRt o RV3R lltRV3R lltRtV tR# )5CAPICodecs._create_custom_codec.<locals>.StreamReaderi*  c                   < S! WR 7      # r  r   r   r  r  r  s   &&&r    r?   <CAPICodecs._create_custom_codec.<locals>.StreamReader.encode+      $U::r#   c                   < S! WR 7      # r  r   r   r  r  r  s   &&&r    r   <CAPICodecs._create_custom_codec.<locals>.StreamReader.decode.  r#  r#   r   Nr%   r   r   r   r   r?   r   r   r   r   r  r  s   @r    StreamReaderr  *       ;; ;r#   r*  c                   B   <a  ] tR tRt o RV3R lltRV3R lltRtV tR# )5CAPICodecs._create_custom_codec.<locals>.StreamWriteri1  c                   < S! WR 7      # r  r   r!  s   &&&r    r?   <CAPICodecs._create_custom_codec.<locals>.StreamWriter.encode2  r#  r#   c                   < S! WR 7      # r  r   r%  s   &&&r    r   <CAPICodecs._create_custom_codec.<locals>.StreamWriter.decode5  r#  r#   r   Nr'  r(  r)  s   @r    StreamWriterr-  1  r+  r#   r2  )r?   r   streamreaderstreamwriterincrementalencoderincrementaldecodernamec                 .   < V SP                   8X  d   S# R # r   )r   )encodinginfor   s   &r    search_function8CAPICodecs._create_custom_codec.<locals>.search_functionB  s    4---r#   Nr'  )	r   r  r  r*  r2  	CodecInfor   
codec_infor;  )	r   r  r  r*  r2  r;  r  r  r:  s	   f     @@@r    r   CAPICodecs._create_custom_codec  s    	9	9	,!:!: 	,	,!:!: 	,	; 	;6.. 	;	; 	;6.. 	;   %%11##
	
 .r#   c              #  R  "   V P                  \        \        P                  V P                  4       \        P
                  ! V P                  4       R x  \        P                  ! V P                  4       V P                  \        \        P                  V P                  4       R # 5ir   )r   r   r   r   r   registerr;  
unregisterr   s   &r    use_custom_encoderCAPICodecs.use_custom_encoderJ  sf     +v}}d6H6HI,,-$../+v}}d6H6HIs   B%B'c                   V P                   V P                  r!V P                  \        P                  ! V4      4       V P                  \        P                  V P                   4       V P                  \        P                  ! V4      V! V4      4       V P                  \        P                  ! R VR7      R4       \        P                  ! V4       V P                  \        \        P                  V4       R# )123)r9  321N)r;  r   assertIsNone	_testcapicodec_register
addCleanupr   rB  assertIsr   r   r?   r   r   r   r;  r9  s   &  r    test_codec_registerCAPICodecs.test_codec_registerR  s    $($8$8$:L:L)22?CD))4+?+?@fmmH-x/HIux@%H/*+v}}h?r#   c                   V P                   V P                  r!V P                  \        \        P
                  V4       \        P                  ! V4       V P                  \        P                  V P                   4       V P                  \        P
                  ! V4      4       V P                  \        P                  ! V4      4       V P                  \        \        P
                  V4       R # r   )r;  r   r   r   r   r   rA  rK  rB  assertIsNotNonerH  rI  codec_unregisterrM  s   &  r    test_codec_unregister CAPICodecs.test_codec_unregister^  s    $($8$8$:L:L+v}}h?())4+?+?@V]]845)44_EF+v}}h?r#   c                .   V P                  \        \        P                  R 4       V P	                  \
        P                  ! R 4      4       V P	                  \
        P                  ! R4      4       V P	                  \
        P                  ! R4      4       V P                  pV P                  \        \        P                  V4       \        P                  ! V P                  4       V P                  \        P                  V P                  4       VVP                  4       VP                  RR4      3 FJ  pV P                  V4      ;_uu_ 4        V P                  \
        P                  ! V4      4       RRR4       KL  	  R#   + '       g   i     Ka  ; i)zunknown-codecunknown_codeczUNKNOWN-codec_-N)r   r   r   r   assertFalserI  codec_known_encodingr   rA  r;  rK  rB  upperr   subTest
assertTrue)r   r   r7  s   &  r    test_codec_known_encoding$CAPICodecs.test_codec_known_encodingj  s   +v}}oF77HI77HI77HI**+v}}mD,,-))4+?+?@ !!!#s+
D
 d##	 > >t DE $#

 $##s   &FFc                   \         P                  pV P                  V! R R\        4      R4       V P                  V! R RR4      R4       V P                  V! RRR4      R4       V P	                  \
        V\        RR4       V P                  \
        \        4      ;_uu_ 4        V! R \        R4       RRR4       R#   + '       g   i     R# ; i)	rD   r   rY   r%   u   [é]r
   ignores   []N)rI  codec_encoder   r   r   r   assertRaisesRegexBAD_ARGUMENT)r   r?   s   & r    test_codec_encodeCAPICodecs.test_codec_encode~  s    ''Wd3T:Wh7>:EB)VT7HE##I|<<3h' =<<<s   "B;;C	c                   \         P                  pR pVP                  4       pV P                  V! VRR4      V4       V P                  V! VR\        4      V4       V P                  V! VRR4      VP                  R4      4       V P                  \        WRR4       V P                  \        WR\        4       V P                  V! VRR4      R4       V P                  V! RRR4      R	4       V P                  V! R
RR4      R4       V P                  \        V\        RR4       V P                  \        \        4      ;_uu_ 4        V! V\        R4       RRR4       R#   + '       g   i     R# ; i)r   r   r%   r   r
   r   rD   r#   zunknown-error-handlerr   rY   Nr   )rI  codec_decoder?   r   r   r   r   r   r   rc  rd  )r   r   r   r   s   &   r    test_codec_decodeCAPICodecs.test_codec_decode  s/   ''#HHJ7H5q97D1158X68JK,f(K,f$G7I68HI 	W.EFKg/FGM)VT7HE##I|<<1dH% =<<<s   EE/	c           	        \         P                  pV P                  4       ;_uu_ 4        V! V P                  4      pV P	                  W P
                  P                  4       V P                  \        \        4      ;_uu_ 4        V! \        4       R R R 4       R R R 4       R #   + '       g   i     L; i  + '       g   i     R # ; ir   )rI  r  rC  r   rL  r>  r?   rc  r   rd  r   )r   r  encoders   &  r    test_codec_encoderCAPICodecs.test_codec_encoder      !//$$&&#D$6$67GMM'??#9#9:''	<@@d# A	 '& A@	 '&&$   AB5B"	B5"B2-B55C	c           	        \         P                  pV P                  4       ;_uu_ 4        V! V P                  4      pV P	                  W P
                  P                  4       V P                  \        \        4      ;_uu_ 4        V! \        4       R R R 4       R R R 4       R #   + '       g   i     L; i  + '       g   i     R # ; ir   )rI  r  rC  r   rL  r>  r   rc  r   rd  r   )r   r  decoders   &  r    test_codec_decoderCAPICodecs.test_codec_decoder  ro  rp  c           
     "   \         P                  pV P                  4       ;_uu_ 4        V P                  pR \        3 FR  pV P                  V4      ;_uu_ 4        V! W#4      pV P                  W@P                  P                  4       RRR4       KT  	  V P                  \        \        4      ;_uu_ 4        V! \        R 4       RRR4       RRR4       R#   + '       g   i     K  ; i  + '       g   i     L.; i  + '       g   i     R# ; ir%   N)rI  codec_incremental_encoderrC  r   r   r\  assertIsInstancer>  r5  rc  r   rd  )r   rw  r9  r  rl  s   &    r    test_codec_incremental_encoder)CAPICodecs.test_codec_incremental_encoder      $-$G$G!$$&&))H#T*\\&))7IG))'??3U3UV *) +
 ''	<@@)$9 A '& *)) A@ '&&;   1C=.C.C=6C*	C=C'!	C=*C:5C==D	c           
     "   \         P                  pV P                  4       ;_uu_ 4        V P                  pR \        3 FR  pV P                  V4      ;_uu_ 4        V! W#4      pV P                  W@P                  P                  4       RRR4       KT  	  V P                  \        \        4      ;_uu_ 4        V! \        R 4       RRR4       RRR4       R#   + '       g   i     K  ; i  + '       g   i     L.; i  + '       g   i     R# ; irv  )rI  codec_incremental_decoderrC  r   r   r\  rx  r>  r6  rc  r   rd  )r   r~  r9  r  rr  s   &    r    test_codec_incremental_decoder)CAPICodecs.test_codec_incremental_decoder  r{  r|  c           
     N   \         P                  pV P                  4       ;_uu_ 4        V P                  \        P
                  ! 4       r2R \        3 FS  pV P                  V4      ;_uu_ 4        V! W#V4      pV P                  WPP                  P                  4       RRR4       KU  	  V P                  \        \        4      ;_uu_ 4        V! \        VR 4       RRR4       RRR4       R#   + '       g   i     K  ; i  + '       g   i     L.; i  + '       g   i     R# ; irv  )rI  codec_stream_readerrC  r   ioStringIOr   r\  rx  r>  r3  rc  r   rd  )r   r  r9  streamr  writers   &     r    test_codec_stream_reader#CAPICodecs.test_codec_stream_reader      ';;$$&&#112;;=f#T*\\&))06JF))&//2N2NO *) +
 ''	<@@#D&(; A '& *)) A@ '&&<   AD./C,.DD 	D,C=7	D DDD$	c           
     N   \         P                  pV P                  4       ;_uu_ 4        V P                  \        P
                  ! 4       r2R \        3 FS  pV P                  V4      ;_uu_ 4        V! W#V4      pV P                  WPP                  P                  4       RRR4       KU  	  V P                  \        \        4      ;_uu_ 4        V! \        VR 4       RRR4       RRR4       R#   + '       g   i     K  ; i  + '       g   i     L.; i  + '       g   i     R# ; irv  )rI  codec_stream_writerrC  r   r  r  r   r\  rx  r>  r4  rc  r   rd  )r   r  r9  r  r  r  s   &     r    test_codec_stream_writer#CAPICodecs.test_codec_stream_writer  r  r  )r>  r   r;  N)r   r   r   r   r   r   
contextlibcontextmanagerrC  rN  rS  r^  re  ri  rm  rs  ry  r  r  r  r   r   r   s   @r    r   r     sk     	$-/^ J J
@
@F((&2$$::<< <r#   r   c                      a  ] tR tRt o ]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t	R t
R tR	 tR
 tR tR tR tR tR tRtV tR# )CAPICodecErrorsi  c              #     "   \        ^4       FR  p^\        ^V4      ,          p\        V) V^,           4       F$  p\        V) V^,           4       F	  pWV3x  K  	  K&  	  KT  	  R# 5i)   N)rangemax)clsobjlenmaxindstartends   &    r    _generate_exception_args(CAPICodecErrors._generate_exception_args  s\     AhFQ'Fw
3 &&1*5C ,, 6 4 s   A$A&c                    \         ;QJ d"    . R  V P                  4        4       F  NK  	  5# ! R  V P                  4        4       4      # )c              3   R   "   T F  w  rp\        R RV,          W#R4      x  K  	  R# 5i)r   0whyN)r.   .0r  r  r  s   &   r    	<genexpr>9CAPICodecErrors.generate_encode_errors.<locals>.<genexpr>  s.      
&D"s wfe%HH&D   %'tupler  r  s   &r    generate_encode_errors&CAPICodecErrors.generate_encode_errors  F    u 
&)&B&B&D
u 	
u 
&)&B&B&D
 
 	
r#   c                    \         ;QJ d"    . R  V P                  4        4       F  NK  	  5# ! R  V P                  4        4       4      # )c              3   R   "   T F  w  rp\        R RV,          W#R4      x  K  	  R# 5i)r      0r  N)r   r  s   &   r    r  9CAPICodecErrors.generate_decode_errors.<locals>.<genexpr>  s.      
&D"s wvu5II&Dr  r  r  s   &r    generate_decode_errors&CAPICodecErrors.generate_decode_errors  r  r#   c                    \         ;QJ d"    . R  V P                  4        4       F  NK  	  5# ! R  V P                  4        4       4      # )c              3   P   "   T F  w  rp\        R V,          W#R4      x  K  	  R# 5i)r  r  N)UnicodeTranslateErrorr  s   &   r    r  <CAPICodecErrors.generate_translate_errors.<locals>.<genexpr>  s,      
&D"s "#,EBB&Ds   $&r  r  s   &r    generate_translate_errors)CAPICodecErrors.generate_translate_errors  r  r#   c                
   V P                  4       V n        V P                  4       V n        V P	                  4       V n        V P                  V P                  ,           V P
                  ,           V n        \        4       3V n        R # r   )	r  unicode_encode_errorsr  unicode_decode_errorsr  unicode_translate_errorsall_unicode_errors
ValueErrorbad_unicode_errorsr  s   &r    
setUpClassCAPICodecErrors.setUpClass  ss    $'$>$>$@!$'$>$>$@!'*'D'D'F$%%''(**+ 	 L"
r#   c                   ^ RI Hp V P                  \        \        P
                  R4       R p\        P                  ! VR7      p\        P                  ! RV4       V P                  VR4       V P                  \        \        P                  RRRR7       VP                  4        VP                  4        V P                  \        \        P                   RRRR7       VP                  4        R	# )
r   )_unregister_errorcustomc                     V hr   r   )excs   &r    custom_error_handlerGCAPICodecErrors.test_codec_register_error.<locals>.custom_error_handler  s    Ir#   )wraps   ÿr
   r   r6   N)_codecsr  r   r   rI  codec_lookup_errormockMockcodec_register_errorrK  r.   r   r?   assert_called_once
reset_mockr   r   )r   _codecs_unregister_errorr  error_handlers   &   r    test_codec_register_error)CAPICodecErrors.test_codec_register_error  s    I+y'C'CXN	 		(<=&&x?0(;,fmm '( 	 	<((*  ",fmm!78 	 	=((*r#   c                p   \         P                  pV P                  V! \        4      \        P
                  4       V P                  V! R 4      \        P
                  4       V P                  V! R4      \        P                  4       V P                  V! R4      \        P                  4       V P                  V! R4      \        P                  4       V P                  V! R4      \        P                  4       V P                  V! R4      \        P                  4       V P                  \        VR4       R# )r%   ra  r   xmlcharrefreplacebackslashreplacenamereplaceunknownN)rI  r  rL  r   r   strict_errorsignore_errorsreplace_errorsxmlcharrefreplace_errorsbackslashreplace_errorsnamereplace_errorsr   r   )r   r  s   & r    test_codec_lookup_error'CAPICodecErrors.test_codec_lookup_error3  s    &99(.0D0DE(2F4H4HI(2F4H4HI(3V5J5JK()<=v?^?^_();<f>\>\](79R9RS+'99Er#   c                   \         P                  pV P                  V P                  ,            FA  pV P	                  WR 7      ;_uu_ 4        V P                  \        V4      W4       RRR4       KC  	  R#   + '       g   i     KX  ; i)handlerr  N)rI  codec_strict_errorsr  r  r\  r   r  )r   r  r  s   &  r     test_codec_strict_errors_handler0CAPICodecErrors.test_codec_strict_errors_handler>  sc    //**T-D-DDDCg77!!$s)W: 87 E777s   A55Bc                \    \         P                  pV P                  WP                  4       R # r   )rI  codec_ignore_errorsdo_test_codec_errors_handlerr  r   r  s   & r     test_codec_ignore_errors_handler0CAPICodecErrors.test_codec_ignore_errors_handlerD  s!    //))'3J3JKr#   c                \    \         P                  pV P                  WP                  4       R # r   )rI  codec_replace_errorsr  r  r  s   & r    !test_codec_replace_errors_handler1CAPICodecErrors.test_codec_replace_errors_handlerH  s!    00))'3J3JKr#   c                \    \         P                  pV P                  WP                  4       R # r   )rI  codec_xmlcharrefreplace_errorsr  r  r  s   & r    +test_codec_xmlcharrefreplace_errors_handler;CAPICodecErrors.test_codec_xmlcharrefreplace_errors_handlerL  s!    ::))'3M3MNr#   c                \    \         P                  pV P                  WP                  4       R # r   )rI  codec_backslashreplace_errorsr  r  r  s   & r    *test_codec_backslashreplace_errors_handler:CAPICodecErrors.test_codec_backslashreplace_errors_handlerP  s!    99))'3J3JKr#   c                \    \         P                  pV P                  WP                  4       R # r   )r   codec_namereplace_errorsr  r  r  s   & r    %test_codec_namereplace_errors_handler5CAPICodecErrors.test_codec_namereplace_errors_handlerT  s!    ";;))'3M3MNr#   c           	     X  a V P                  \        S4      ^ 4       S F  pV P                  WR7      ;_uu_ 4        V! V4      pV P                  V\        4       V P                  \        V4      ^4       Vw  rVV P                  V\        4       V P                  V\        4       V P                  V^ 4       V P                  V\        VP                  4      4       RRR4       K  	  V P                  \        ;QJ d!    . V3R lV P                   4       F  NK  	  5M! V3R lV P                   4       4      ,            F=  pV P                  RWR7      ;_uu_ 4        V P                  \        W4       RRR4       K?  	  R#   + '       g   i     EKv  ; i  + '       g   i     Ki  ; i)r   r  Nc              3   8   <"   T F  qS9  g   K  Vx  K  	  R # 5ir   r   )r  e
exceptionss   & r    r  ?CAPICodecErrors.do_test_codec_errors_handler.<locals>.<genexpr>h  s     N6!::MAA6s   
zbad type)assertNotEqualrH   r\  rx  r  r   strintassertGreaterEqualassertLessEqualobjectr  r  r   r   )r   r  r  r  resreplacementcontinue_frombad_excs   &&f     r    r  ,CAPICodecErrors.do_test_codec_errors_handlerX  sH   C
OQ/Cg77cl%%c51  S1--0*%%k37%%mS9''q9$$]C

OD 87  ##eNt66NeeNt66NNO O  j'GG!!)W> HGO 877 HGGs   B!FFFF)r   N)r   r   r   r   classmethodr  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   s   @r    r  r    s     - - 
 
 
 
 
 
 
 
+4	F;LLOLO? ?r#   r  __main__)r   r  r  rere   unittestunittest.mockr  rI  test.supportr   import_moduler   r   escaperd  TestCaser   r   r  r   mainr   r#   r    <module>r     s      	 	 
    & ../AB yyCDyCh'' yCz[<"" [<|?h'' ?D zMMO r#   