+
    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	# )   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
# )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# )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# )r	   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# )r	   r   r%   r3   r4   r5   r6   r   r8   r:   r   Nr;   )a   )r9      )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# )r	   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# )littleutf-16utf-16le   utf-16be      as   as   a           r           s   =s   =s   s   =s   =r   Nr;   r^      �rD   r`   r   r`   )	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# )%rR   rS   rT   rU   rV   rW   s   a =s   a =s   a = s    as    a=s    a=s   a = s    a=rY   rZ   r[   r   r\   r]   s   =a s   = ar   Nr^   r;   )r^   rC      )rD   rC   rk   r^   rC   rE   rD   rC   rE   )r^   r`   rk   )rD   r`   rk   )r   r`   rk   r^   r`   rE   rD   r`   rE   )r^      �arE   )rD   rp   rE   )
r   unicode_decodeutf16statefulrd   re   r>   r   rG   r   r   r   )r   decodeutf16statefulrg   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# )r	   rS   rL   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# )rR   utf-32utf-32le     utf-32be        a          a s	     a    s	        a    r                =       =r   Nr^   r;   r_   ra   rb   )	r   unicode_decodeutf32rd   re   r>   r   r   r   r   )r   decodeutf32rg   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# )'rR   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;   rl   rm   )r^   rC      )rD   rC   r   )r5   s   s   )r^    r   )rD   r   r   )r   r   r   )r^   r   rE   )rD   r   rE   rn   ro   )r   r`   rE   )r^   r`   r   )rD   r`   r   )
r   unicode_decodeutf32statefulrd   re   r>   r   rG   r   r   r   )r   decodeutf32statefulrg   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# )r	   r|   rL   r   Nr;   )r   unicode_asutf32stringr   r>   r   r.   r   )r   asutf32stringr   s   &  r    test_asutf32string"CAPIUnicodeTest.test_asutf32string^  rz   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# )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# )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
# )r   r	   r%   r5   s   ar   r7   s   abr9   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# )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# )    rC   r   cbacs    r	   u   ¢¡£u	   好你世u   😁😀😂bcd    Nr   u   b�cs    u    ÿ)rC   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# )r	   r   u   ¡¢£u	   你好世i`O  i}Y  iN  u   😀😁😂i  i i r#   s   spams   spamrC   NrX   )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)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
# )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# )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
# )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   r@   rI   rO   rh   rs   rx   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reversedrG   )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#   r1  )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)  r1  	CodecInfor   
codec_infor:  )	r   r  r  r)  r1  r:  r
  r  r9  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)r8  321N)r:  r   assertIsNone	_testcapicodec_register
addCleanupr   rA  assertIsr   r   r>   r   r   r   r:  r8  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   r@  rJ  rA  assertIsNotNonerG  rH  codec_unregisterrL  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   assertFalserH  codec_known_encodingr   r@  r:  rJ  rA  upperr   subTest
assertTrue)r   r   r6  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)	rC   r   rX   r%   u   [é]r
   ignores   []N)rH  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   rC   r#   zunknown-error-handlerr   rX   Nr   )rH  codec_decoder>   r   r   r   r   r   r   rb  rc  )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   )rH  r  rB  r   rK  r=  r>   rb  r   rc  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   )rH  r
  rB  r   rK  r=  r   rb  r   rc  r   )r   r
  decoders   &  r    test_codec_decoderCAPICodecs.test_codec_decoder  rn  ro  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)rH  codec_incremental_encoderrB  r   r   r[  assertIsInstancer=  r4  rb  r   rc  )r   rv  r8  r  rk  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ru  )rH  codec_incremental_decoderrB  r   r   r[  rw  r=  r5  rb  r   rc  )r   r}  r8  r  rq  s   &    r    test_codec_incremental_decoder)CAPICodecs.test_codec_incremental_decoder  rz  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ru  )rH  codec_stream_readerrB  r   ioStringIOr   r[  rw  r=  r2  rb  r   rc  )r   r  r8  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ru  )rH  codec_stream_writerrB  r   r  r  r   r[  rw  r=  r3  rb  r   rc  )r   r  r8  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contextmanagerrB  rM  rR  r]  rd  rh  rl  rr  rx  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  r5   N)_codecsr  r   r   rH  codec_lookup_errormockMockcodec_register_errorrJ  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%   r`  r   xmlcharrefreplacebackslashreplacenamereplaceunknownN)rH  r  rK  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)rH  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   )rH  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   )rH  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   )rH  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   )rH  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)assertNotEqualrG   r[  rw  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  rerd   unittestunittest.mockr  rH  test.supportr   import_moduler   r   escaperc  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#   