
    <eG                         d dl Z d dlZd dlmZ d dlmZ 	 d dlZn# e$ r dZY nw xY w G d de j                  Z	e
dk    r e j                     dS dS )    N)support)import_helperc                      e Zd Zd Zej         ej        edu d          d                         Z	ej         ej        edu d          d                         Z
ej         ej        edu d          d                         Zej         ej        edu d          d                         Zej         ej        edu d          d                         Zej         ej        edu d          d	                         Zej         ej        edu d          d
                         Zej         ej        edu d          d                         ZdS )CAPITestc                     t          j        d           ddlm}m}mm}m}m}m	}m
}m}m}	m}
m}m} d}t!          ||          |f_        _        fd fd} |ddd	                                t(          d
dd            |dd |d                      |dd |d                                          t,                    5   d |d                     d d d            n# 1 swxY w Y    |dd |d           |d                      |dd            |dd            |dd            |dd            |ddd             |d!d"d#            |d$d%d&                    d'                      |d(d)d*            |d+d,d-            |d.d/d*            |d0d1d-            |d2d3d-            |d2d4d-            |d2d5d-d             |d$d6d d&                    d'                      |d7d8d!            |d9d:d!            |d;d<d!            |d=d>d!            |d?d@d!            |dAdBd!            |d=dCd!            |d?dDd!            |dAdEd!            |d7dFd             |d9dGd             |d;dHd             |d7dId!            |d9dJd!            |d;dKd!            |d7dLd!dM            |d9dNd!dM            |d;dOd!dM            |dPdLd dM            |dQdNd dM            |dRdOd dM            |dSdT |dU                      |dVdW |dU                      |dXdY |dZ                      |dXd[ |dZ                      |dXd\ |dZ                      |dXd] |dZ                      |dXd^ |dZ                      |dXd_ |dZ                      |dXd` |dZ                      |dXda |dZ                      |dbdc |dd                      |dbde |	dd                      |dbdf |
dd                      |dbdg |dd                     dhdi ||          z  djz
  z   }| djz
  } |t1          |          d` ||                      |t1          |          d` ||                     dhdi ||
          z  z  djz
  } |t1          |          df |
|                      dk |dl                      |db                    dUdm          dn |dd                      |db                    do          dp |dd                      |db                    dodm          dq |dd                      |db                    drdm                              do          ds |dd                      |db                    dUdm          dt |dd                      |db                    do          du |dd                      |db                    dodm          dv |dd                      |db                    drdm                              do          dw |dd                      |db                    dUdm          dx |dy                      |db                    do          dz |dy                      |db                    dodm          d{ |dy                      |db                    drdm                              do          d| |dy                      |d}d~d            |ddd!d           d} dkd!          }                     |t0                                          ||            ddd          }                     |t0                                          |d            dkdd d          }                     |t0                                          ||            |ddd d            |ddd d            |ddd             |dd            |dd |dU                      |ddd             |dd            |ddd           d S )Nctypesr   )c_char_p	pythonapi	py_objectsizeofc_intc_long
c_longlong	c_ssize_tc_uintc_ulongc_ulonglongc_size_tc_void_pPyUnicode_FromFormatc                 L    t          fd|D                       } | g|R  S )Nc              3   \   K   | ]&}t          |t                    r |          n|V  'd S N)
isinstancestr).0argr   s     2/usr/lib/python3.11/test/test_capi/test_unicode.py	<genexpr>zJCAPITest.test_from_format.<locals>.PyUnicode_FromFormat.<locals>.<genexpr>   sR       ! ! #-S#"6"6?		#C! ! ! ! ! !    )tuple)formatargscargs_PyUnicode_FromFormatr   s      r   r   z7CAPITest.test_from_format.<locals>.PyUnicode_FromFormat   sS     ! ! ! !! ! ! ! !E )(8%8888r    c                 F     |g|R  }                     | |           d S r   )assertEqual)expectedr"   r#   textr   selfs       r   check_formatz/CAPITest.test_from_format.<locals>.check_format!   s7    ''6666DXt,,,,,r    u   ascii=unicodeés	   ascii=%Uu	   unicodeéz^^PyUnicode_FromFormatV\(\) expects an ASCII-encoded format string, got a non-ASCII byte: 0xe9$s   unicode=%sasciiu   ꯍs   %ciͫ  u   􏿿    u   𐀀􀀀s   %c%ci   i   %   %s   %%z%ss   %%sz[%]s   [%%]z%abcs   %%%ss   abcabcs   %.3ss   abcdefu   abc[�s   %.5su   abc[€]utf8z'\u20acABC's   %Au   €ABCz'\u20s   %.5Au	   €ABCDEFu   '€ABC's   %Ru   '€As   %.3Ru   €ABs   %.3Ss   %.3Us   %.3Vs   %.5Vz
repr=  abcs   repr=%5Szrepr=abs	   repr=%.2Sz
repr=   abs
   repr=%5.2Szrepr=   'abc's   repr=%8Rzrepr='abs	   repr=%.3Rz
repr=  'abs
   repr=%5.3Rs   repr=%8As	   repr=%.3As
   repr=%5.3As   repr=%5ss	   repr=%.2ss
   repr=%5.2ss   repr=%5Us	   repr=%.2Us
   repr=%5.2Us   repr=%5Vs   123s	   repr=%.2Vs
   repr=%5.2Vz
repr=  123zrepr=12z
repr=   12010s   %03i
   0010s   %0.4iz-123s   %iis   %lis   %llis   %zis   %ds   %lds   %llds   %zd123s   %u{   s   %lus   %llus   %zu         s   %p0s   %010id   s   %100is   %.100iP   s   %100.80is   %010us   %100us   %.100us   %100.80us   %010xi#  s   %100xs   %.100xs   %100.80xz%A:'abc\xe9\uabcd\U0010ffff's   %%A:%Au   abcéꯍ􏿿zrepr=abcs   repr=%Vs   xyzz^0x[a-zA-Z0-9]{3,}$s   %p %p123456z#0x[a-zA-Z0-9]{3,} 0x[a-zA-Z0-9]{3,}u   repr=人民s   人民u   repr=abc�s   abcs   %1%sz%1abcs   %1abcz%+is   %+iz%.%ss   %.%s r    s   %s)r   import_moduler   r	   r
   r   r   r   r   r   r   r   r   r   r   r   getattrargtypesrestypeassertRaisesRegex
ValueErrorassertRaisesOverflowErrorencoder   rjustassertIsInstanceassertRegex)r*   r	   r
   r   r   r   r   r   r   r   r   r   r   namer+   min_longlongmax_longlongmax_ulonglongp_format_regex	p_format1	p_format2	p_format3r   r%   r   s   `                     @@@r   test_from_formatzCAPITest.test_from_format   s   #H---	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>
 & '	4 8 8*2&(1%	9 	9 	9 	9 	9 	9	- 	- 	- 	- 	- 	-
 	,$m	5 	5 	5
 	z2 "3W	> 	> 	> 	XEE&MM	+ 	+ 	+\EE(OO	- 	- 	-}-- 	9 	9  h888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	+eeGnneeHoo	? 	? 	? 	S	 	 	S	 	 	T	 	 	U	 	 	Vf	& 	& 	& 	Ui	) 	) 	)\m226::	< 	< 	<^K	) 	) 	)Xn	. 	. 	.]K	) 	) 	)Zn	. 	. 	.Zn	. 	. 	.Zn	. 	. 	.Znd	4 	4 	4\dM$8$8$@$@	B 	B 	B
 	\ %	) 	) 	)Y!5	* 	* 	*\"E	+ 	+ 	+ 	_ %	) 	) 	)Z!5	* 	* 	*\"E	+ 	+ 	+ 	_ %	) 	) 	)Z!5	* 	* 	*\"E	+ 	+ 	+ 	\ &	* 	* 	*Y!6	+ 	+ 	+\"F	, 	, 	, 	\ %	) 	) 	)Y!5	* 	* 	*\"E	+ 	+ 	+ 	\ %	1 	1 	1Y!5&	2 	2 	2\"E6	3 	3 	3\ $	0 	0 	0Y!4	1 	1 	1\"D&	2 	2 	2 	UeeBii	) 	) 	)VuuRyy	* 	* 	*VEE$KK	) 	) 	)VVVD\\	+ 	+ 	+Vjj..	0 	0 	0VYYt__	. 	. 	. 	VEE$KK	) 	) 	)VVVD\\	+ 	+ 	+Vjj..	0 	0 	0VYYt__	. 	. 	. 	UFF3KK	) 	) 	)UWWS\\	+ 	+ 	+Ukk#..	0 	0 	0UXXc]]	, 	, 	, q66*#5#559:;$}q(S&&jj66	8 	8 	8S&&jj66	8 	8 	8a&&"5"556:S''kk-88	: 	: 	:UHHRLL111 	U[[S))uuSzz	+ 	+ 	+U[[%%uuSzz	+ 	+ 	+U[[c**c

	, 	, 	,U[[S))//44 %%**	. 	. 	. 	U[[S))vvc{{	, 	, 	,U[[%%vvc{{	, 	, 	,U[[c**s	- 	- 	-U[[S))//44 &&++	/ 	/ 	/ 	U[[S))uuU||	- 	- 	-U[[%%uuU||	- 	- 	-U[[c**e	. 	. 	.U[[S))//44 %%,,	0 	0 	0 	4 9	; 	; 	; 	Z	0 	0 	0 0((66	i---N333((8VDD	i---?	A 	A 	A )($GG	i---N333
 	('B	D 	D 	D 	%z	3 	3 	3
 	Tf	& 	& 	&W	 	 	UUU2YY	( 	( 	(Vf	& 	& 	& 	R	 	 	RC	! 	! 	! 	! 	!s   C77C;>C;Nzneed _testcapi modulec                 b   ddl m} t          j        d           ddlm}m}  |dd          \  }}|                     |d           |                     |d            |dd	          \  }}|                     |d	           |                     |d            |dd
          \  }}|                     |d	           |                     |d            |dd          \  }}|                     |d	           |                     |d            |dd          \  }}|                     |d           |                     |d           t          d          } ||          dk    rd	}d}nd}d} |||          \  }}|                     ||           |                     ||dz              d S )Nr   )unicode_aswidecharr   c_wcharr   abcdefr8   abr1         abc r4   abc def      abc def r-   r:    )		_testcapirW   r   rA   r   rY   r   r'   chr)	r*   rW   rY   r   wcharsizenonbmpbuflennchars	            r   test_aswidecharzCAPITest.test_aswidechar  s	    	100000#H---********((155tq!!!%%%((22tq!!!&&&((22tq!!!(((((33tq!!!(((((R88tq!!!---X6'??aFEEFE((88tu%%%.....r    c                    ddl m} t          j        d           ddlm}m}  |d          \  }}|                     |d           |                     |d            |d          \  }}|                     |d	           |                     |d
           t          d          } ||          dk    rd}nd} ||          \  }}|                     ||           |                     ||dz              d S )Nr   )unicode_aswidecharstringr   rX   r1   r\   r^   r_   ra   rb   r-   r8   r:   rc   )	rd   rm   r   rA   r   rY   r   r'   re   )r*   rm   rY   r   rf   rg   rh   rj   s           r   test_aswidecharstringzCAPITest.test_aswidecharstring:  s3    	766666#H---********..u55tq!!!(((..z::tq!!!---X6'??aEEE..v66tu%%%.....r    c           	         ddl m} dD ]c}t          |          }|                      |||d          |dz              |                      |||d          |dz              |                      |||dz   d          |d	z              |                      |||dz   d          |d	z              |                     t
          |||dz
  d           |                     t
          |||d
z
  d           d                    ||g          }|                      ||t          |          d          |dz              |                      ||t          |          d          |dz              ed S )Nr   )unicode_asucs4)r1   u   ¡¢u   你好u   a😀	   abcu   Trc   F   ￿r:   u    ￿r8   )rd   rp   lenr'   rG   SystemErrorjoin)r*   rp   sls       r   test_asucs4zCAPITest.test_asucs4S  s    	-,,,,,5 	K 	KAAA^^Aq$774@@@^^Aq%88!H*EEE^^AqsD991Z<HHH^^AqsE::AjLIIIk>1ac4HHHk>1ac5III		1a&!!A^^As1vvt<<afEEE^^As1vvu==qzJJJJ	K 	Kr    c                 *   ddl m} d}d}t          d          }|                      ||          d           |                      ||          d           |                      ||          d           |                     t
          |d	           d S )
Nr   )unicode_asutf8   Ārr   r-      Ā   ￿   􏿿rq   )rd   rz   re   r'   rG   UnicodeEncodeError)r*   rz   bmpbmp2rh   s        r   test_asutf8zCAPITest.test_asutf8e  s     	-,,,,,X,,k:::--???//1DEEE,n>OPPPPPr    c                 *   ddl m} d}d}t          d          }|                      ||          d           |                      ||          d           |                      ||          d           |                     t
          |d	           d S )
Nr   )unicode_asutf8andsizer{   rr   r-   )r|   r8   )r}   r\   )r~   r]   rq   )rd   r   re   r'   rG   r   )r*   r   r   r   rh   s        r   test_asutf8andsizezCAPITest.test_asutf8andsizet  s     	433333X..s335EFFF..t446JKKK..v668PQQQ,.CEVWWWWWr    c                    ddl m} dD ]}t          |          D ]\  }}|                      ||t	          |          dt          |          d          |           |                      ||t	          |          dt          |          d          |           d}|                      ||ddt          |          d          d           |                      ||ddt          |          d          d           |                      ||t	          d          dt          |          dz   d          d	           |                      ||t	          d          dt          |          dz   d          d	           |                      ||t	          d          ddd          d           |                      ||t	          d          t          |          dd          d           |                      ||t	          d          t          |           dd          d           |                      ||t	          d          t          |           dd          d           d S )
Nr   )unicode_findchar)   ¡u   耀肀u   u   🄀🇱r:   r;   z!>_<!r.   !r]   )rd   r   	enumerater'   ordrs   )r*   r   r   ichs        r   test_findcharzCAPITest.test_findchar  sp    	/.....Q 	U 	UC"3 U U2  !1!1#s2ww3s88Q!O!OQRSSS  !1!1#s2ww3s88R!P!PRSTTTTU ))#xCHHaHH"MMM))#xCHHbII2NNN))#s3xxCHHQJJJANNN))#s3xxCHHQJKKQOOO))#s3xxAqAA2FFF))#s3xxS1aHH"MMM))#s3xx#c((BJJANNN))#s3xx#c((BKKQOOOOOr    c                    ddl m} g d}t          |          D ]\  }}|d |         D ]"}|                     t          ||d|dd           #t          d          D ]I}|                      ||d||d          |||dz                                dd          d|z
  f           Jt          d          D ]I}|                      |||||d          |||dz                                dd          d|z
  f           J|d         }|                     t          ||d|dd           |                     t          ||d|dd           |                     t          ||d|dd           |                     t          ||d|dd           |                     t          ||d|dd           |                     t          ||d|dd           |                     t          ||dd	dd           d S )
Nr   )unicode_copycharacters)abcdeu
   ¡¢£¤¥u   你好世界！u   😀😁😂😃😄   rc      r;   r:   r    )
rd   r   r   rG   rt   ranger'   ljustrJ   
IndexError)	r*   r   stringsidxfrom_to
from_startto_startrv   s	            r   test_copycharacterszCAPITest.test_copycharacters  ss    	544444
 
 
 $G,, 	 	JCdsdm  !!*B5!Q   
 $Ahh  
  **5!UJJJ:jl2399!TBBz\#   
 "!HH    **5(E8QOO8HQJ./55a>>xZ!    AJ*&<aAq!LLL*&<aQ1MMM*&<aAq!LLL*&<aAr1MMM+'=q!Q1MMM+'=q!Q2NNN+'=q!S!QOOOOOr    c                 x   ddl m} dD ]}d}t          d          D ]}|t          |          z  }|                      ||          t          |                                          |dz   z             |                      ||          t          |                                          |dz   z             d S )Nr   )getargs_s_hash)$      i   i r@   r   r:   )rd   r   r   re   r'   rI   )r*   r   krv   r   s        r   test_pep393_utf8_caching_bugz%CAPITest.test_pep393_utf8_caching_bug  s     	-,,,,,, 	O 	OAA1XX 	O 	O SVV   !2!2CFFMMOOq1u4MNNN  !2!2CFFMMOOq1u4MNNNN	O	O 	Or    )__name__
__module____qualname__rU   r   cpython_onlyunittestskipIfrd   rk   rn   rx   r   r   r   r   r    r    r   r   r      s5       A! A! A!H X_Y$&(?@@"/ "/ A@ "/J X_Y$&(?@@/ / A@ /. X_Y$&(?@@K K A@ K  X_Y$&(?@@
Q 
Q A@ 
Q X_Y$&(?@@
X 
X A@ 
X X_Y$&(?@@P P A@ P, X_Y$&(?@@'P 'P A@ 'PR X_Y$&(?@@O O A@ O O Or    r   __main__)r   systestr   test.supportr   rd   ImportErrorTestCaser   r   mainr   r    r   <module>r      s     



       & & & & & &   IIIJO JO JO JO JOx  JO JO JOZ zHMOOOOO s    %%