Your IP : 216.73.216.147


Current Path : /opt/alt/python39/lib64/python3.9/test/support/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/support/__pycache__/__init__.cpython-39.opt-2.pyc

a

XC?h���	@s�edkred��ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z	ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZgd�ZdZejdkr�e��d	kr�d
ZdZdZd
Z Gdd�de!�Z"Gdd�de"�Z#Gdd�de#�Z$Gdd�de"�Z%Gdd�dej&�Z'ej(�dydd��Z)dd�Z*�dzdd�d d!�Z+d"d#�Z,d$d%�Z-d&d'�Z.�d{d(d)�Z/d*d+�Z0dZ1dZ2da3da4dZ5dZ6da7d,d-�Z8d.d/�Z9d0d1�Z:d2d3�Z;ej�<d4��r �d|d5d6�Z=d7d8�Z>d9d:�Z?d;d<�Z@d=d>�ZAnejBZ>ejCZ?d?d<�Z@d@d>�ZAdAdB�ZBdCdD�ZCdEdF�ZDdGdH�ZEdIdJ�ZFdKdL�ZGdMdN�ZH�d}dOdP�ZIdQdR�ZJdSdT�ZKdUdV�ZLdWdX�ZMddddY�dZd[�ZN�d~ddddY�d\d]�ZOd^d_�ZPd`ZQdaZRe�SeT�Udb��<dc�dd�ZV�ddfdg�ZW�d�didj�ZX�d�dldm�ZY�d�dodp�ZZej�<dq�Z[e\edr�Z]ejdk�rRe]�rLdsndtZ^ndZ^ej_dqk�rhduZ`ndvZ`dw�ae`e�b��Z`dxZcdyZddzD]DZeze�fe�gee��eek�r�eh�Wneh�y�Yn0eeZd�qΐq�e`d{Ziejd|k�r�ddljZjej�kd}ei�Zie�l�ZmdZnej_d~k�r`e�o�jdk�r�e`d�Znzen�pem�Wneq�yHYn0erd�enemf�dZnn@ejd|k�r�zd��sem�Wn$et�y�e`d��semd��ZnYn0dZud�D]@Z_ze_�sem�Wn*et�y�e�ge`�e_ZuY�q�Yn0�q�ed�r�e`edZvndZvev�pe`Zwe�x�ZydZzdZ{ej(�d�d�d���Z|ej(�d�d�d���Z}ej(�d�d�d���Z~e\ed���rhej(d�d���Zej���ej���e���Z�ej���e��Z�ej���e�d��Z�d�d��Z��d�d�d��Z�d�d��Z�ej(d�d���Z�d�d��Z�d�d��Z��d�ddd��d�d��Z��d�ddd��d�d��Z�d�d��Z�Gd�d��d�e��Z��d�d�d��Z�ej(d�d���Z�ej(dye�dfd�d���Z�ej(d�d���Z�Gd�d��d�e��Z�Gd�d��d�ej�j��Z�Gd�d��d�e��Z�Gd�d��d�e��Z�e�e�ej�d��Z�e�e�ej�d��Z�e�e�ej�d��Z�ej(d�d���Z�d�d��Z�d�d��Z�d�d��Z�d�d��Z�ej(d�d„�Z�d�dĄZ�d�Z�d�Z�e\edǃ�r d�e�Z�d�Z�e�d�Z�d�d̄Z�d�d΄Z�d�Z�d�Z�d�d҄Z�ej(d�dԄ�Z�d�dքZ�d�Z�d�e�Z�de�Z�d�e�Z�ej�Z�d�dۄZ�Gd�d݄d݃Z��d�d�d߄Z�d�d�Z�Gd�d�d�Z�d�d�Z�d�d�Z�d�d�Zd�d�d�Z�d�d�Z�d�d�Z�d�d�Z�d�d�Z�d�d��Z�d�d��Z�da�da�da�d�d��Z�d�d��Zΐd�d�d��Z�d�d��ZАd�d�Zѐd�d�Z�eŃ�otejdk�ote�Ӑd�Z�e�j�du�o�e�Z�e�Se֐d�Zאd��d�d�Zؐd�d	�Zِd
�d�Zڐd�d
�Z�daܐd�d�Zݐd�d�Zސd�d�Z�ej(�d��d�d��Z�d��d�d�Z�d�d�Z�ej(�d��d�d��Z�ej(�d�d��Z�ej(�d�d��Z�d �d!�Z�d"�d#�Z�G�d$�d%��d%e��Z�da�d&�d'�Z�d(�d)�Z�da�d*�d+�Z�G�d,�d-��d-�Z�da�d.�d/�Z�d0�d1�Z�d2�d3�Z�d4�d5�Z�d�d6��d7�d8�Z�d��d9�d:�Z��d��d;�d<�Z�G�d=�d>��d>�Z��d?�d@�Z��dA�dB�Z��d��dC�dD�Z�gf�dE�dF�Z�da��dG�dH�Z�ej(�dI�dJ��Z��dK�dL�Z�G�dM�dN��dN��Z�dO�dP��ZG�dQ�dR��dR��ZG�dS�dT��dT��Z�e��ZG�dU�dV��dV��Z�e��Ze�jG�dW�dX��dX���Z�e��Z	e�jG�dY�dZ��dZ���Z
�e
��Z�d[�d\��Ze�j
�j�Z�d]�d^��ZG�d_�d`��d`��ZG�da�db��db��Zd�dc��dd�de��Z�df�dg��Z�dh�di��Zej(�dj�dk���Z�dl�dm��Zej(�d��do�dp���Z�e�ee��dq��dr�ds��Ze�d�dt��du�dv��Zej(�dw�dx���ZdS(�ztest.supportz.support must be imported from the test package�N�)�get_test_runner)`�
PIPE_MAX_SIZE�verbose�
max_memuse�
use_resources�failfast�Error�
TestFailed�
TestDidNotRun�ResourceDenied�
import_module�import_fresh_module�CleanImport�unload�forget�record_original_stdout�get_original_stdout�captured_stdout�captured_stdin�captured_stderr�TESTFN�SAVEDCWD�unlink�rmtree�temp_cwd�findfile�create_empty_file�can_symlink�fs_is_case_insensitive�is_resource_enabled�requires�requires_freebsd_version�requires_linux_version�requires_mac_ver�check_syntax_error�check_syntax_warning�TransientResource�time_out�socket_peer_reset�ioerror_peer_reset�BasicTestRunner�run_unittest�run_doctest�skip_unless_symlink�
requires_gzip�requires_bz2�
requires_lzma�
bigmemtest�bigaddrspacetest�cpython_only�
get_attribute�requires_IEEE_754�skip_unless_xattr�
requires_zlib�anticipate_failure�load_package_tests�detect_api_mismatch�check__all__�skip_if_buggy_ucrt_strfptime�ignore_warnings�check_sanitizer�skip_if_sanitizer�	is_jython�
is_android�check_impl_detail�
unix_shell�setswitchinterval�open_urlresource�
temp_umask�
reap_children�threading_setup�threading_cleanup�reap_threads�
start_threads�check_warnings�check_no_resource_warning�check_no_warnings�EnvironmentVarGuard�run_with_locale�	swap_item�	swap_attr�Matcher�set_memlimit�SuppressCrashReport�sortdict�run_with_tz�PGO�missing_compiler_executable�fd_count�	ALWAYS_EQ�NEVER_EQ�LARGEST�SMALLEST�LOOPBACK_TIMEOUT�INTERNET_TIMEOUT�
SHORT_TIMEOUT�LONG_TIMEOUTg@�win32ZARM�
gN@g>@g�r@c@seZdZdS)r	N��__name__�
__module__�__qualname__�rjrj�:/opt/alt/python39/lib64/python3.9/test/support/__init__.pyr	vsr	c@seZdZdS)r
Nrfrjrjrjrkr
ysr
cs$eZdZ�fdd�Zdd�Z�ZS)�TestFailedWithDetailscs&||_||_||_t��|||�dS�N)�msg�errors�failures�super�__init__)�selfrnrorp��	__class__rjrkrr~szTestFailedWithDetails.__init__cCs|jSrm�rn�rsrjrjrk�__str__�szTestFailedWithDetails.__str__)rgrhrirrrx�
__classcell__rjrjrtrkrl|srlc@seZdZdS)rNrfrjrjrjrkr�src@seZdZdS)rNrfrjrjrjrkr�srTccsL|rBt���$t�ddt�dVWd�qH1s60YndVdS)N�ignorez.+ (module|package))�warnings�catch_warnings�filterwarnings�DeprecationWarning�rzrjrjrk�_ignore_deprecated_imports�s
�&r�cs�fdd�}|S)Ncst�����fdd��}|S)NcsPt���4tjd�d��|g|�Ri|��Wd�S1sB0YdS)Nrz��category)r{r|�simplefilter)rs�args�kwargs)r��testrjrk�wrapper�s
z3ignore_warnings.<locals>.decorator.<locals>.wrapper��	functools�wraps)r�r�r��r�rk�	decorator�sz"ignore_warnings.<locals>.decoratorrj)r�r�rjr�rkr>�sr>Frj)�required_oncCs�t|��pzt�|�WWd�Styh}z,tj�t|��rF�t�	t
|���WYd}~n
d}~00Wd�n1s~0YdSrm)r��	importlibr
�ImportError�sys�platform�
startswith�tuple�unittest�SkipTest�str)�name�
deprecatedr�rnrjrjrkr
�s	
r
cCsLi}tdd�|D��}ttj�D]&}||vs6|�|�r tj�|�||<q |S)Ncss|]}|dVqdS)�.Nrj)�.0r�rjrjrk�	<genexpr>��z+_save_and_remove_modules.<locals>.<genexpr>)r��listr��modulesr��pop)�names�orig_modules�prefixes�modnamerjrjrk�_save_and_remove_modules�sr�cCs|r
tjSdd�S)NcSs|Srmrj��frjrjrk�<lambda>�r�z$anticipate_failure.<locals>.<lambda>)r�ZexpectedFailure)Z	conditionrjrjrkr9�sr9cCsF|durd}tj�tj�tj�t���}|j|||d�}|�|�|S)Nztest*)Z	start_dirZ
top_level_dir�pattern)�os�path�dirname�__file__ZdiscoverZaddTests)Zpkg_dir�loaderZstandard_testsr�Ztop_dirZ
package_testsrjrjrkr:�s
���
r:c
Cs�t|���t|�}t|�}|h|�|�}t|�}|D]}dtj|<q4z|z|D]}t|�qLWn6ty�YWt|�tj�|�Wd�dS0t�	|�Wt|�tj�|�Wd�St|�tj�|�0Wd�n1�s�0YdSrm)
r�r�r�r�r��
__import__r��updater�r
)r�ZfreshZblockedr�r�r�r�rjrjrkr�s0
�
��rcCs<zt||�}Wn$ty2t�d||f��Yn0|SdS)Nzobject %r has no attribute %r)�getattr�AttributeErrorr�r�)�objr�Z	attributerjrjrkr5!s
r5cCs|adSrm)�_original_stdout)�stdoutrjrjrkr6srcCs
tptjSrm)r�r�r�rjrjrjrkr:srcCs$ztj|=WntyYn0dSrm)r�r��KeyError)r�rjrjrkr=src
Gsxz
||�WStyr}zPtdkrHtd|jj|f�td|j|f�t�|tj�||�WYd}~Sd}~00dS)N�z%s: %szre-run %s%r)	�OSErrorr�printrurgr��chmod�stat�S_IRWXU)r��funcr��errrjrjrk�
_force_runCs
r��wincCs�||�|r|}ntj�|�\}}|p(d}d}|dkrjt�|�}|rJ|sVn||vsVdSt�|�|d9}q.tjd|tdd�dS)Nr����MbP?g�?r�z)tests may fail, delete still pending for ���
stacklevel)	r�r��split�listdir�time�sleepr{�warn�RuntimeWarning)r��pathname�waitallr�r��timeout�Lrjrjrk�_waitforNs



�r�cCsttj|�dSrm)r�r�r��filenamerjrjrk�_unlinkosr�cCsttj|�dSrm)r�r��rmdir�r�rjrjrk�_rmdirrsr�cs,�fdd��t�|dd�tdd�|�dS)Ncs�t|tj|�D]�}tj�||�}zt�|�j}Wn>tyn}z&td||ft	j
d�d}WYd}~n
d}~00t�|�r�t
�|dd�t|tj|�qt|tj|�qdS)Nz-support.rmtree(): os.lstat(%r) failed with %s��filerT�r�)r�r�r�r��join�lstat�st_moder�r�r��
__stderr__r��S_ISDIRr�r�r)r�r��fullname�mode�exc��
_rmtree_innerrjrkr�vs�
�_rmtree.<locals>._rmtree_innerTr�cSst|tj|�Srm)r�r�r�)�prjrjrkr��r�z_rmtree.<locals>.<lambda>)r��r�rjr�rk�_rmtreeusr�cCs\zddl}WntyYn:0|�t|�d�}|jj�||t|��}|rX|d|�S|S)Nrr�)�ctypesr�Zcreate_unicode_buffer�len�windllZkernel32ZGetLongPathNameW)r�r��bufferZlengthrjrjrk�	_longpath�s�r�csNddl}z|�|�WdSty*Yn0�fdd���|�t�|�dS)Nrc	s~t|tj|�D]j}tj�||�}zt�|�j}WntyFd}Yn0t�	|�rj�|�t|tj
|�qt|tj|�qdS�Nr)r�r�r�r�r�r�r�r�r�r�r�r)r�r�r�r�r�rjrkr��s

r�)�shutilrr�r�r�)r�r�rjr�rkr��s
cCs|Srmrjr�rjrjrkr��sc	Cs(zt|�Wnttfy"Yn0dSrm)r��FileNotFoundError�NotADirectoryErrorr�rjrjrkr�srcCs$zt|�WntyYn0dSrm)r�r�r�rjrjrkr��sr�cCs$zt|�WntyYn0dSrm)r�r�r�rjrjrkr�srcCsBtj�|�}tj�tj�|��}tj�||d�}t�||�|S)N�c)	r��util�cache_from_sourcer�r�r��abspathr��rename)�sourceZpyc_fileZup_oneZ
legacy_pycrjrjrk�make_legacy_pyc�s
r�cCsTt|�tjD]@}tj�||d�}t|d�dD]}ttjj||d��q4qdS)Nz.pyr�)�rr�)�optimization)	rr�r�r�r�rr�r�r�)r�r�r��optrjrjrkr�s
rc
sttd�rtjSd}tj�d�r0t��r0d}�nBtj�d�r�ddl�ddl�d}d}G�fdd�d�j	�}�j
j}|��}|s���
��|�}�j��}|�||��|���|���|��}|sƈ�
��t|j|@�s�d}n�tjd	k�rrdd
lm}	m�m}
m	}ddlm}|	�|d��}
|
��dk�r,d
}nFG�fdd�d|�}|�}|
|�}|
�|�dk�sn|
�|�dk�rrd}|�sz.ddlm}|�}|� �|�!�|�"�Wn^t#�y}zDt$|�}t%|�dk�r�|dd�d}d�&t'|�j(|�}WYd}~n
d}~00|t_)|t_tjS)N�resultr�z(gui is not available on Windows IoT Corerrcs.eZdZd�jjfd�jjfd�jjfgZdS)z*_is_gui_available.<locals>.USEROBJECTFLAGSZfInheritZ	fReserved�dwFlagsN)rgrhri�wintypesZBOOL�DWORD�_fields_rj)r�rjrk�USEROBJECTFLAGS�s


�r�z,gui not available (WSF_VISIBLE flag not set)�darwin)�cdll�c_int�pointer�	Structure)�find_libraryZApplicationServicesz0gui tests cannot run without OS X window managercseZdZd�fd�fgZdS)z._is_gui_available.<locals>.ProcessSerialNumberZ
highLongOfPSNZlowLongOfPSNN)rgrhrir�rj)rrjrk�ProcessSerialNumbers�rz#cannot run without OS X gui process)�Tk�2z [...]zTk unavailable due to {}: {})*�hasattr�_is_gui_availabler�r�r�r�Zwin32_is_iotr�Zctypes.wintypesrr�Zuser32ZGetProcessWindowStationZWinErrorr�r�ZGetUserObjectInformationWZbyrefZsizeof�boolr�rrrZctypes.utilrZLoadLibraryZCGMainDisplayIDZGetCurrentProcessZSetFrontProcessZtkinterrZwithdrawr�Zdestroy�	Exceptionr�r��format�typerg�reason)rZ	UOI_FLAGSZWSF_VISIBLEr��dll�hZuofZneeded�resrrrrZapp_servicesrZpsnZpsn_pr�root�eZ
err_stringrj)rr�rkr	�sr

���r	cCstdup|tvSrm)r��resourcerjrjrkr -sr cCs<t|�s |durd|}t|��|dkr8t�s8ttj��dS)Nz"Use of the %r resource not enabled�gui)r rr	r)rrnrjrjrkr!5sr!cCs�ddl}d�tt|��}|���dd�d}|��|krrzttt|�d���}Wnt	yfd}Yqv0||k}nd}t
�||�d|�d|���S)Nrr��-rFz	 version z or higher required, not )r�r��mapr��releaser��systemr��int�
ValueErrorr��skipIf)�sysname�min_versionr��min_version_txt�version_txt�version�skiprjrjrk�_requires_unix_version>s 

��r$cGs
td|�S)NZFreeBSD�r$�rrjrjrkr"Ysr"cGs
td|�S)NZLinuxr%r&rjrjrkr#bsr#cs�fdd�}|S)Ncs"t�����fdd��}�|_|S)Ncsztjdkrlt��d}zttt|�d���}Wnty@Yn,0|�krld�tt	���}t
�d||f���|i|��S)Nr�rr�z&Mac OS X %s or higher required, not %s)r�r�Zmac_verr�rrr�rr�r�r�r�)r��kwr!r"r )r�rrjrkr�ss
��z4requires_mac_ver.<locals>.decorator.<locals>.wrapper)r�r�r�r�r�r&�r�rkr�rsz#requires_mac_ver.<locals>.decoratorrj)rr�rjr&rkr$ksr$��address�memory�ubcCsx|s|s|std��t�d�p d}t�d�p.d}d|vp>d|v}d|vpNd|v}d|vp^d	|v}|rh|pv|rp|pv|ov|S)
Nz3At least one of address, memory, or ub must be TrueZCFLAGSr�ZCONFIG_ARGSz-fsanitize=memoryz--with-memory-sanitizerz-fsanitize=addressz-fsanitize=undefinedz#--with-undefined-behavior-sanitizer)r�	sysconfig�get_config_var)r+r,r-Z_cflagsZ_config_argsZmemory_sanitizerZaddress_sanitizerZub_sanitizerrjrjrkr?�s$�����r?cCs"|sd}t|||d�}t�||�S)Nz"not working with sanitizers activer*)r?r�r)rr+r,r-r#rjrjrkr@�sr@cst����fdd��}|S)Nc
sTz�|i|��Wn<tyN}z$dt|�vr8t�d���WYd}~n
d}~00dS)NZCERTIFICATE_VERIFY_FAILEDz.system does not contain necessary certificates)r�r�r�r�)r�r�rr�rjrk�dec�s
z&system_must_validate_cert.<locals>.decr�)r�r0rjr�rk�system_must_validate_cert�sr1i@iZdoubleZIEEEztest requires IEEE 754 doubles�
requires zlibcCs0zddl}Wnty"d}Yn0t�||�Sr�)�zlibr�r��
skipUnless)rr3rjrjrkr8�s

r8�
requires gzipcCs0zddl}Wnty"d}Yn0t�||�Sr�)�gzipr�r�r4)rr6rjrjrkr/�s

r/�requires bz2cCs0zddl}Wnty"d}Yn0t�||�Sr�)�bz2r�r�r4)rr8rjrjrkr0�s

r0�
requires lzmacCs0zddl}Wnty"d}Yn0t�||�Sr�)�lzmar�r�r4)rr:rjrjrkr1�s

r1�javaZgetandroidapilevelz/system/bin/shz/bin/shz$testz@testz	{}_{}_tmpzhttp://www.pythontest.netr�)�æuİuŁuφuКuאu،uتuก� u€u-àòɘŁğr�ZNFD�ntr�u-共Ł♡ͣ�ztWARNING: The filename %r CAN be encoded by the filesystem encoding (%s). Unicode filename tests may not be effective��s-��surrogateescape)s�w�r?s���s�s��c
cs�ddl}d}|dur.|��}d}tj�|�}nZzt�|�d}WnFty�}z.|sV�tjd|�d|��t	dd�WYd}~n
d}~00|r�t�
�}z"|VW|r�|t�
�kr�t|�n|r�|t�
�kr�t|�0dS)NrFTz5tests may fail, unable to create temporary directory �: �r�)�tempfile�mkdtempr�r��realpath�mkdirr�r{r�r��getpidr)r��quietrCZdir_createdr��pidrjrjrk�temp_dir�s6
���
�rJc
cs�t��}zt�tj�|��WnFtyd}z.|s4�tjd|�d|��tdd�WYd}~n
d}~00zt��VWt�|�nt�|�0dS)NzBtests may fail, unable to change the current working directory to rArBr�)	r��getcwd�chdirr�rEr�r{r�r�)r�rHZ	saved_dirr�rjrjrk�
change_cwd�s 
���rM�tempcwdc	csbt||d��B}t||d��}|VWd�n1s60YWd�n1sT0YdS)N)r�rH)rH)rJrM)r�rHZ	temp_pathZcwd_dirrjrjrkr�sr�umaskc	cs0t�|�}zdVWt�|�nt�|�0dSrm)r�rO)rOZoldmaskrjrjrkrG�s
rG�datacCsXtjdkrdSddl}d}|�d�}|��\}}t|�|d��t|�td|�dS)Nr�rz NOTICE z� may generate "malloc can't allocate region"
warnings on macOS systems. This behavior is known. Do not
report a bug unless tests are also failing. See bpo-40928.r)r�r�r��get_terminal_sizer��center)Z	test_namer�rnZdetailZpadding�_rjrjrk�darwin_malloc_err_warning�s

rTcCsbtj�|�r|S|dur&tj�||�}tgtj}|D]&}tj�||�}tj�|�r6|Sq6|Srm)r�r��isabsr��
TEST_HOME_DIRr��exists)r�Zsubdirr��dn�fnrjrjrkrsrcCs(t�|tjtjBtjB�}t�|�dSrm)r��open�O_WRONLY�O_CREAT�O_TRUNC�close)r��fdrjrjrkrsrc	cs4t�|tj�}z|VWt�|�nt�|�0dSrm)r�rZ�O_RDONLYr^)r��dir_fdrjrjrk�open_dir_fdsrbcCs,t|���}dd�|D�}d�|�}d|S)NcSsg|]}d|�qS)z%r: %rrj)r�Zpairrjrjrk�
<listcomp>(r�zsortdict.<locals>.<listcomp>z, z{%s})�sorted�itemsr�)�dictreZ	reprpairsZ
withcommasrjrjrkrW%s
rWcCs<ttd�}z|��W|��tt�S|��tt�0dS)N�wb)rZr�filenor^rr�rjrjrk�make_bad_fd,s
��ri��lineno�offsetcCs�|�t|��}t|dd�Wd�n1s.0Y|j}|�|j�|dur`|�|j|�|�|j�|dur�|�|j|�dS)Nz
<test string>�exec)ZassertRaisesRegex�SyntaxError�compileZ	exception�assertIsNotNonerk�assertEqualrl)�testcase�	statement�errtextrkrl�cmr�rjrjrkr%9s*r%cCstjdd��(}t�dt�t|dd�Wd�n1s:0Y|�t|�d|�|\}|�t|j	t�|j	�|r�|�
t|j�|�|�|j
d�|�|j�|dur�|�|j|�tjdd��.}t�dt�t|||||d�Wd�n1s�0Y|�|g�dS)	NT��record�alwaysz
<testcase>rmr�errorrj)r{r|r��
SyntaxWarningrorqr��
assertTrue�
issubclassr�ZassertRegexr��messager�rprkr%)rrrsrtrkrl�warnsr�rjrjrkr&Ds$*�$r&cs�ddl}ddl}zddl}Wnty2d}Yn0��dd��|j�|�d�d�d}tj	�
t|�}���fdd�}tj	�|�r�||�}|dur�|St
|�td�tr�td	|t�d
�|j��}	|r�|	j�d�|	j|td�}|�r
|j�d
�dk�r
|j|d�}z\t|d��4}
|��}|�r<|
�|�|��}�q Wd�n1�sR0YW|��n
|��0||�}|du�r�|Std|��dS)Nr�checkr��/���csDt|g��Ri���}�dur"|S�|�r8|�d�|S|��dSr�)rZ�seekr^)rYr��r�rr'rjrk�check_valid_filels
z*open_urlresource.<locals>.check_valid_fileZurlfetchz	fetching %s ...r�)zAccept-Encodingr6�r�zContent-Encodingr6)Zfileobjrgzinvalid resource %r)Zurllib.requestZurllib.parser6r�r��parseZurlparser�r�r�r��
TEST_DATA_DIRrWrr!rr�rZrequestZbuild_openerZ
addheaders�appendrZraZheaders�getZGzipFile�read�writer^r
)Zurlr�r'Zurllibr6r�rYr�r�Zopener�out�srjr�rkrF_sD
	

.
rFc@s0eZdZdd�Zdd�Zedd��Zdd�Zd	S)
�WarningsRecordercCs||_d|_dSr���	_warnings�_last)rsZ
warnings_listrjrjrkrr�szWarningsRecorder.__init__cCsDt|j�|jkr t|jd|�S|tjjvr0dStd||f��dS)Nr�z%r has no attribute %r)r�r�r�r�r{�WarningMessage�_WARNING_DETAILSr�)rs�attrrjrjrk�__getattr__�s
zWarningsRecorder.__getattr__cCs|j|jd�Srmr�rwrjrjrkr{�szWarningsRecorder.warningscCst|j�|_dSrm)r�r�r�rwrjrjrk�reset�szWarningsRecorder.resetN)rgrhrirrr��propertyr{r�rjrjrjrkr��s

r�ccst�d�}|j�d�}|r"|��tjdd��*}tjd�d�t	|�VWd�n1s^0Yt
|�}g}|D]j\}}d}	|dd�D]8}|j}
t�
|t|
�tj�r�t|
j|�r�d}	|�|�q�|	sx|sx|�||jf�qx|r�td|d	��|�rtd
|d	��dS)Nr�Z__warningregistry__Trvr{rxFzunhandled warning %srz)filter (%r, %s) did not catch any warning)r��	_getframe�	f_globalsr��clearr{r|r�r�r�r�r}�re�matchr��Ir|ru�remover�rg�AssertionError)�filtersrH�frame�registry�wZreraiseZmissingrn�cat�seenZwarningrjrjrk�_filterwarnings�s4
(
��r�cOs.|�d�}|s$dtff}|dur$d}t||�S)NrHr�T)r��Warningr�)r�r�rHrjrjrkrM�s

rMccs\tjdd��0}tjd||d�dV|r.t�Wd�n1sB0Y|�|g�dS)NTrvrx)r}r�)r{r|r}�
gc_collectrq)rrr}r��force_gcr~rjrjrkrO�s�$rOccs8t|tdd��dVWd�n1s*0YdS)NT)r�r�)rO�ResourceWarning)rrrjrjrkrNsrNc@s$eZdZdd�Zdd�Zdd�ZdS)rcGsJtj��|_|D]4}|tjvrtj|}|j|kr<tj|j=tj|=qdSrm)r�r��copy�original_modulesrg)rsZmodule_namesZmodule_name�modulerjrjrkrr!s



zCleanImport.__init__cCs|Srmrjrwrjrjrk�	__enter__.szCleanImport.__enter__cGstj�|j�dSrm)r�r�r�r��rs�
ignore_excrjrjrk�__exit__1szCleanImport.__exit__N�rgrhrirrr�r�rjrjrjrkrs
rc@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)rPcCstj|_i|_dSrm)r��environ�_environ�_changedrwrjrjrkrr:szEnvironmentVarGuard.__init__cCs
|j|Srm)r��rs�envvarrjrjrk�__getitem__>szEnvironmentVarGuard.__getitem__cCs*||jvr|j�|�|j|<||j|<dSrm�r�r�r��rsr��valuerjrjrk�__setitem__As
zEnvironmentVarGuard.__setitem__cCs2||jvr|j�|�|j|<||jvr.|j|=dSrmr�r�rjrjrk�__delitem__Gs

zEnvironmentVarGuard.__delitem__cCs
|j��Srm)r��keysrwrjrjrkr�NszEnvironmentVarGuard.keyscCs
t|j�Srm)�iterr�rwrjrjrk�__iter__QszEnvironmentVarGuard.__iter__cCs
t|j�Srm)r�r�rwrjrjrk�__len__TszEnvironmentVarGuard.__len__cCs|||<dSrmrjr�rjrjrk�setWszEnvironmentVarGuard.setcCs
||=dSrmrjr�rjrjrk�unsetZszEnvironmentVarGuard.unsetcCs|Srmrjrwrjrjrkr�]szEnvironmentVarGuard.__enter__cGsF|j��D].\}}|dur.||jvr8|j|=q
||j|<q
|jt_dSrm)r�rer�r�r�)rsr��k�vrjrjrkr�`s

zEnvironmentVarGuard.__exit__N)rgrhrirrr�r�r�r�r�r�r�r�r�r�rjrjrjrkrP5srPc@s$eZdZdd�Zdd�Zdd�ZdS)�
DirsOnSysPathcGs(tjdd�|_tj|_tj�|�dSrm)r�r��original_value�original_object�extend)rs�pathsrjrjrkrrvszDirsOnSysPath.__init__cCs|Srmrjrwrjrjrkr�{szDirsOnSysPath.__enter__cGs|jt_|jtjdd�<dSrm)r�r�r�r�r�rjrjrkr�~szDirsOnSysPath.__exit__Nr�rjrjrjrkr�jsr�c@s&eZdZdd�Zdd�Zddd�ZdS)	r'cKs||_||_dSrm)r��attrs)rsr�r�rjrjrkrr�szTransientResource.__init__cCs|Srmrjrwrjrjrkr��szTransientResource.__enter__NcCsT|durPt|j|�rP|j��D](\}}t||�s4qPt||�|krqPqtd��dS)Nz%an optional resource is not available)r|r�r�rerr�r)rs�type_r��	tracebackr�Z
attr_valuerjrjrkr��s
zTransientResource.__exit__)NNNr�rjrjrjrkr'�sr')�errnoc
csRddl}tt|�}tt||���ztt|�VWtt||�ntt||�0dSr�)�ior�r��setattr�StringIO)Zstream_namer�Zorig_stdoutrjrjrk�captured_output�s
r�cCstd�S)Nr��r�rjrjrjrkr�srcCstd�S)N�stderrr�rjrjrjrkr�srcCstd�S)N�stdinr�rjrjrjrkr�s
rcCs2ddl}|��trt�d�|��|��dS)Nr皙�����?)�gcZcollectrAr�r�)r�rjrjrkr��s

r�ccsBddl}|��}|��zdVW|r>|��n|r<|��0dSr�)r�Z	isenabled�disable�enable)r�Zhave_gcrjrjrk�
disable_gc�s
�r�cCs6t�d�pd}d}|��D]}|�d�r|}q|dvS)NZ	PY_CFLAGSr�z-O)r�z-O0z-Og)r.r/r�r�)ZcflagsZ	final_optr�rjrjrk�python_is_optimized�s
r�ZnPZ0nZ
getobjectsZ2PZ0P�ncCst�t|t�Srm)�struct�calcsize�_header�_align�Zfmtrjrjrk�calcobjsize�sr�cCst�t|t�Srm)r�r��_vheaderr�r�rjrjrk�calcvobjsizesr�i@icCspddl}t�|�}t|�tkr(|jt@sBt|�tkrLt|�jt@rL||j7}dt|�||f}|�|||�dS)Nrz&wrong size for %s: got %d, expected %d)	�_testinternalcapir��	getsizeofr
�	__flags__�_TPFLAGS_HEAPTYPE�_TPFLAGS_HAVE_GCZSIZEOF_PYGC_HEADrq)r��o�sizer�r�rnrjrjrk�check_sizeofs

��
�r�c
gs�z ddl}t||�}|�|�}Wn&ty4�YnBd}}Yn00|D](}z|�||�WqvWqLYqL0qLzdVW|r�|r�|�||�n|r�|r�|�||�0dSr�)�localer��	setlocaler�)ZcatstrZlocalesr�r�Zorig_localeZlocrjrjrkrQs(

�rQcs�fdd�}|S)Ncs"��fdd�}�j|_�j|_|S)Nc	s�z
tj}Wnty&t�d��Yn0dtjvr>tjd}nd}�tjd<|�zH�|i|��W|durttjd=n
|tjd<t��S|tjd<t��n&|dur�tjd=n
|tjd<t��0dS)Nztzset requiredZTZ)r��tzsetr�r�r�r�r�)r��kwdsr�Zorig_tz)r��tzrjrk�inner6s0




�

�

z-run_with_tz.<locals>.decorator.<locals>.inner)rg�__doc__)r�r��r�r)rkr�5szrun_with_tz.<locals>.decoratorrj)r�r�rjr�rkrX4srXi�r�cCs�dttdtd�}t�d|tjtjB�}|dur>td|f��tt|�	d��||�	d��
��}|a|tkrrt}|t
dkr�td|f��|adS)Nr�)r��m�g�tz(\d+(\.\d+)?) (K|M|G|T)b?$zInvalid memory limit %rrrBz$Memory limit %r too low to be useful)�_1M�_1Gr�r��
IGNORECASE�VERBOSErr�float�group�lower�real_max_memuse�MAX_Py_ssize_t�_2Gr)�limitZsizesr�ZmemlimitrjrjrkrU^s"�
�$rUc@s$eZdZdd�Zdd�Zdd�ZdS)�_MemoryWatchdogcCsdjt��d�|_d|_dS)Nz/proc/{pid}/statm)rIF)rr�rG�procfile�startedrwrjrjrkrrxsz_MemoryWatchdog.__init__c
Cs�zt|jd�}WnBtyR}z*t�d�|�t�tj�	�WYd}~dSd}~00|�2t
d�}tjtj
|g|tjd�|_Wd�n1s�0Yd|_dS)N�rz!/proc not available for stats: {}zmemory_watchdog.py)r�r�T)rZrr�r{r�rr�r�r��flushr�
subprocess�Popen�
executableZDEVNULL�mem_watchdogr)rsr�rZwatchdog_scriptrjrjrk�start|s�
�&z_MemoryWatchdog.startcCs|jr|j��|j��dSrm)rrZ	terminate�waitrwrjrjrk�stop�s
z_MemoryWatchdog.stopN)rgrhrirrr
rrjrjrjrkrssrcs���fdd�}|S)Ncs ���fdd����_��_�S)Ncs��j}�j}tsd}n|}ts"�sDt||krDt�d||d��trztrzt�tdj||dd��t�}|�	�nd}z�||�W|r�|�
�Sn|r�|�
�0dS)Ni�'not enough memory: %.1fG minimum needed�@z* ... expected peak memory use: {peak:.1f}G)Zpeak)r��memuserr�r�rr�rrr
r)rsr�r�maxsizeZwatchdog)�dry_runr�r�rjrkr��s<
�
��
�

��z.bigmemtest.<locals>.decorator.<locals>.wrapper)r�rr��rrr��r�r�rkr��szbigmemtest.<locals>.decoratorrj)r�rrr�rjrrkr2�s
!r2cs�fdd�}|S)NcsDttkr8tdkr$tdkr$t�d��q@t�dtd��n�|�SdS)Nl����lz-not enough memory: try a 32-bit build insteadrr)rrr�r�rwr�rjrkr��s���z!bigaddrspacetest.<locals>.wrapperrjrrjr�rkr3�sr3c@seZdZdd�ZdS)r+cCst��}||�|Srm)r�Z
TestResult)rsr�r�rjrjrk�run�szBasicTestRunner.runN)rgrhrirrjrjrjrkr+�sr+cCs|Srmrj)r�rjrjrk�_id�srcCs:|dkrt�st�tj�St|�r&tSt�d�|��SdS)Nrzresource {0!r} is not enabled)r	r�r#rr rrrrjrjrk�requires_resource�s
rcCstdd�|�S)NT)�cpython)�impl_detailr�rjrjrkr4�sr4cKsZtfi|��rtS|durPt|�\}}|r0d}nd}t|���}|�d�|��}t�|�S)Nz*implementation detail not available on {0}z%implementation detail specific to {0}z or )	rCr�
_parse_guardsrdr�rr�r�r#)rn�guardsZ
guardnames�defaultrjrjrkr�srcCs*|sddidfSt|���d}||fS)NrTFr)r��values)rZis_truerjrjrkr�srcKs t|�\}}|�t����|�Srm)rr�r�Zpython_implementationr�)rrrjrjrkrCsrCcs,ttd�s�St����fdd��}|SdS)N�gettracec	s>t��}z$t�d��|i|��Wt�|�St�|�0dSrm)r�r �settrace)r�r�Zoriginal_tracer)rjrkr�s

�zno_tracing.<locals>.wrapper)rr�r�r�r(rjr)rk�
no_tracing
s

r"cCstt|��Srm)r"r4r�rjrjrk�
refcount_testsr#cCsNg}|jD]8}t|tj�r0t||�|�|�q
||�r
|�|�q
||_dSrm)Z_tests�
isinstancer��	TestSuite�
_filter_suiter�)�suiteZpredZnewtestsr�rjrjrkr&(s

r&cCs�ttjttdud�}|�|�}tdur4t�|���|jsD|j	sDt
�|��s�t|j
�dkrp|jsp|j
dd}n4t|j�dkr�|j
s�|jdd}nd}ts�|d7}dd�|j
D�}dd�|jD�}t|||��dS)	N)�	verbosityZcapture_outputrrzmultiple errors occurredz!; run in verbose mode for detailscSsg|]\}}t|�|f�qSrj�r��r�ZtcZexc_strrjrjrkrcIr�z_run_suite.<locals>.<listcomp>cSsg|]\}}t|�|f�qSrjr)r*rjrjrkrcJr�)rr�r�r�junit_xml_listrr�Zget_xml_elementZtestsRunZskippedrZ
wasSuccessfulr�rorprl)r'Zrunnerr�r�rorprjrjrk�
_run_suite4s&�
r,cCstdurdSt|���SdS�NT)�_match_test_func�idr�rjrjrk�
match_testUsr0cCsd|vot�d|�S)Nr�z[?*\[\]])r��search)r�rjrjrk�_is_full_match_test]sr2cs~|durd}|durd}d��|tkr4t|�\}�|tkrHt|�\}�t|�at|�a�dush�durz��fdd�}|adS)Nrjcs*d}d}�r�|�}�r �|�}|o(|S�NTFrj)�test_idZacceptrz�Zaccept_funcZignore_funcrjrk�match_function|sz'set_match_tests.<locals>.match_function)�_accept_test_patterns�_compile_match_function�_ignore_test_patternsr�r.)Zaccept_patternsZignore_patternsr6rjr5rk�set_match_testsgs	r:cs^|sd}d}nHttt|��r(t|�j}n.d�ttj|��}t�	|�j
��fdd�}|}||fS)Nrj�|cs$�|�rdStt�|�d���SdS)NTr�)�anyrr�)r4�Zregex_matchrjrk�match_test_regex�sz1_compile_match_function.<locals>.match_test_regex)�allrr2r��__contains__r��fnmatch�	translater�ror�)Zpatternsr�Zregexr>rjr=rkr8�sr8cGs�tjtjf}t��}|D]`}t|t�rR|tjvrH|�t�tj|��qxt	d��qt||�rh|�|�q|�t�
|��qt|t�t
|�dS)Nz)str arguments must be keys in sys.modules)r�r%ZTestCaser$r�r�r�ZaddTestZ
findTestCasesrZ	makeSuiter&r0r,)�classesZvalid_typesr'�clsrjrjrkr,�s




r,cCsdSrmrjrjrjrjrk�_check_docstrings�srEZWITH_DOC_STRINGSztest requires docstringscCs`ddl}|durt}nd}|j|||d�\}}|rBtd||f��trXtd|j|f�||fS)Nr)r�optionflagsz%d of %d doctests failedz,doctest (%s) ... %d tests with zero failures)�doctestrZtestmodr
r�rg)r�r(rFrGr�r�rjrjrkr-�s�r-cCs(|��D]}td|��tjdd�qdS)NzWarning -- T)r�r)�
splitlinesr�r�r�)rn�linerjrjrk�
print_warning�srJcCstj��fSrm)r�r�r�rjrjrjrk�
modules_setup�srKcCs:dd�tj��D�}tj��tj�|�tj�|�dS)NcSs"g|]\}}|�d�r||f�qS)z
encodings.)r�)r�r�r�rjrjrkrc�s
�z#modules_cleanup.<locals>.<listcomp>)r�r�rer�r�)Z
oldmodulesZ	encodingsrjrjrk�modules_cleanup�s
rLcCst��tj��fSrm)�_thread�_count�	threading�	_danglingr�rjrjrjrkrIsrIc	Gs�d}t|�D]�}t��tjf}||kr*q�|s�da|d}td|d|d�d|d�dt|��d��|D]}td	|���qnd}d}t�	d
�t
�qdS)N�dTrz&threading_cleanup() failed to cleanup rz threads (count: z, dangling: �)zDangling thread: �{�G�z�?)�rangerMrNrOrP�environment_alteredrJr�r�r�r�)Zoriginal_valuesZ
_MAX_COUNT�countrZdangling_threads�threadrjrjrkrJs*���

rJcst����fdd��}|S)Ncs(t�}z�|�Wt|�St|�0dSrm)rIrJ)r��keyr)rjrkr�:s�zreap_threads.<locals>.decoratorr�)r�r�rjr)rkrK6srKccs|durt}t��}z�dVWt��}||}t��}||kr@q�t��|kr�t��|}d||�d|d�d|�d|�d�	}t|��t�d�t�q.n~t��}||}t��}||kr��qt��|k�rt��|}d||�d|d�d|�d|�d�	}t|��t�d�t�q�0dS)Nz!wait_threads() failed to cleanup z threads after �.1fz seconds (count: z
, old count: rRrS)rbrMrNr��	monotonicr�r�r�)r�Z	old_countZ
start_timeZdeadlinerV�dtrnrjrjrk�wait_threads_exitDsN���

����
r\cCs8|durt}|�|�|��r4d|d�d�}t|��dS)Nzfailed to join the thread in rY� seconds)rbr��is_aliver�)rWr�rnrjrjrk�join_threadis
r_cCshttd�rttd�sdSzt�dtj�\}}WntyDYqdYn0|dkrPqdtd|���daqdS)N�waitpid�WNOHANGr�rz%reap_children() reaped child process T)rr�r`rar�rJrU)rI�statusrjrjrkrHus	
rHccsLddl}t|�}g}�z<z |D]}|��|�|�qWn*tr\tdt|�t|�f��Yn0dVWz�|rx|�t��}}t	dd�D]\}|d7}|D]}|�
t|t��d��q�dd�|D�}|s�q�tr�td	t|�|f�q�Wd
d�|D�}|�rR|�t
j�tdt|���n2d
d�|D�}|�rP|�t
j�tdt|���0n�z�|�rb|�t��}}t	dd�D]f}|d7}|D]}|�
t|t��d���q�dd�|D�}|�s��q�t�rxtd	t|�|f��qxWd
d�|D�}|�rF|�t
j�tdt|���n2d
d�|D�}|�rD|�t
j�tdt|���00dS)Nrz/Can't start %d threads, only %d threads startedr��<rScSsg|]}|��r|�qSrj�r^�r�r�rjrjrkrc�r�z!start_threads.<locals>.<listcomp>z7Unable to join %d threads during a period of %d minutescSsg|]}|��r|�qSrjrerfrjrjrkrc�r�zUnable to join %d threads)�faulthandlerr�r
r�rr�r�r�rZrTr��maxZdump_tracebackr�r�r�)ZthreadsZunlockrgrr�ZendtimeZ	starttimer�rjrjrkrL�sz�
�
��
��rLc
cs�t||�rHt||�}t|||�z|VWt|||�q�t|||�0nBt|||�zdVWt||�r�t||�nt||�r�t||�0dSrm)rr�r��delattr)r�r��new_val�real_valrjrjrkrS�s


�
rSc	csn||vr8||}|||<z|VW|||<qj|||<0n2|||<zdVW||vrj||=n||vrh||=0dSrmrj)r��itemrjrkrjrjrkrR�s�rRcCst��Srm)r	Z_args_from_interpreter_flagsrjrjrjrk�args_from_interpreter_flags�srmcCst��Srm)r	Z"_optim_args_from_interpreter_flagsrjrjrjrk�!optim_args_from_interpreter_flags�srnc@s eZdZdZdd�Zdd�ZdS)rT)rnr}cKs:d}|D],}||}|�|�}|�|||�sd}q6q|Sr3)r��match_value)rs�dr�r�r�r��dvrjrjrk�matches	s
zMatcher.matchescCsHt|�t|�krd}n.t|�tus,||jvr6||k}n|�|�dk}|S)NFr)r
r��_partial_matches�find)rsr�rqr�r�rjrjrkro	s
zMatcher.match_valueN)rgrhrirsrrrorjrjrjrkrT�srTc
CsXtdurtStd}zt�t|�d}WntttfyDd}Yn0t�|�|a|S)NrTF)�_can_symlinkrr��symlinkr��NotImplementedErrorr�r�)Zsymlink_path�canrjrjrkr"	s

rcCs t�}d}|r|St�|�|�S)Nz*Requires functional symlink implementation)rr�r#�r��okrnrjrjrkr.1	sr.cCsXddl}tdurBtjdkr>|��ddkr>t��jdkr>dandatrTt�	d�|�S|S)	Nrrdr�cp65001r�TFz!buggy MSVC UCRT strptime/strftime)
r��_buggy_ucrtr�r�Zgetdefaultlocaler��	localtime�tm_zoner�r#)r�r�rjrjrkr=8	s

��r=c@sfeZdZddd�Zejdkr&dd�Zndd�Zdd	�Zd
d�Zdd
�Z	dd�dd�Z
dd�dd�ZdS)�
PythonSymlinkNcCs@|ptj�t�|_g|_tj�tj�|_	g|_
d|_|��dSrm)
r�r�r�r�link�_linkedrEr�r�real�
_also_link�_env�_platform_specific)rsr�rjrjrkrrO	szPythonSymlink.__init__rdc
Csddl}tj�|j�r0tj�|j�s0|�d�|_|�tj�}tj�	|�}tj�	|j
�}|j�|tj�
|tj�|��f�t�tj�
t�|�d��D]&}|j�|tj�
|tj�|��f�q�dd�tjD�|_tj�	|j�|jd<t�d�r�tj�	tj�|jd<dS)Nrzvcruntime*.dllcSsi|]}|��t�|��qSrj)�upperr��getenv)r�r�rjrjrk�
<dictcomp>o	r�z4PythonSymlink._platform_specific.<locals>.<dictcomp>Z
PYTHONHOMETZ
PYTHONPATH)�_winapir�r��lexistsr�rWZGetModuleFileNamer�Z	dllhandler�r�r�r�r��basename�glob�escaper�r�r.Zis_python_buildr�)rsr�rZsrc_dirZdest_dirZruntimerjrjrkr�Z	s&��
z PythonSymlink._platform_specificcCsdSrmrjrwrjrjrkr�t	scCsJt�|j|j�|j�|j�|jD] \}}t�||�|j�|�q$|Srm)r�rvr�r�r�r�r�)rsr�r�rjrjrkr�w	szPythonSymlink.__enter__cCsX|jD]L}zt�|�WqtyP}z tr<td�||��WYd}~qd}~00qdS)Nzfailed to clean up {}: {})r�r�r��IOErrorrr�r)rs�exc_type�	exc_valueZexc_tbr�Zexrjrjrkr�	s
zPythonSymlink.__exit__cCsp|g|�}tj|tjtj|d�}|��}|j|krltr\tt|d��tt|d�tj	d�t
d�|j���|S)N)r�r��envrrr�z'unexpected return code: {0} (0x{0:08X}))r	r
�PIPE�communicate�
returncoderr��reprr�r��RuntimeErrorr)rsZpythonr�r�r��cmdr�rrjrjrk�_call�	s

�

�zPythonSymlink._callr)r�cGs|�|j|d|�Srm)r�r��rsr�r�rjrjrk�	call_real�	szPythonSymlink.call_realcGs|�|j||j|�Srm)r�r�r�r�rjrjrk�	call_link�	szPythonSymlink.call_link)N)rgrhrirrr�r�r�r�r�r�r�r�rjrjrjrkrM	s




rc	Csddl}tdurtSttd�s$d}n�|��}|j|d�\}}z�ttd���}z`t�|dd�t�|dd	�t�|�	�dd�t
��}t�
d
|�}|dup�t|�d��dk}Wnty�d}Yn0Wd�n1s�0YWtt�t|�t|�ntt�t|�t|�0|a|S)
Nr�setxattrF��dirrgs	user.testr�strusted.foos42z
2.6.(\d{1,2})r�')rC�
_can_xattrrr�rDZmkstemprZrr�rhr�rr�r�rr�r�rr�)rCrxZtmp_dirZtmp_fpZtmp_name�fpZkernel_versionr�rjrjrk�	can_xattr�	s4
*
�
r�cCs t�}d}|r|St�|�|�S)Nz(no non-broken extended attribute support)r�r�r#ryrjrjrkr7�	sr7cCs$tpt}d}|r|St�|�|�S)Nz#Not run for (non-extended) PGO task)rY�PGO_EXTENDEDr�r#ryrjrjrk�skip_if_pgo_task�	s
r�c	Cs�ddl}|j|d��n}|j}|��}||kr4|��}ztj�||�WWd�StyrYWd�dS0Wd�n1s�0YdS)Nrr�F)	rCZNamedTemporaryFiler�r�r�r�r��samefiler�)Z	directoryrC�base�	base_pathZ	case_pathrjrjrkr�	srrcCs>tt|��tt|��}|r(|t|�8}tdd�|D��}|S)Ncss&|]}|�d�r|�d�r|VqdS)rS�__N)r��endswith)r�r�rjrjrkr��	s�z&detect_api_mismatch.<locals>.<genexpr>)r�r�)Zref_apiZ	other_apirzZ
missing_itemsrjrjrkr;�	s
r;cCs�|dur|jf}nt|t�r"|f}t|�}t|�D]R}|�d�s2||vrJq2t||�}t|dd�|vszt|d�s2t|tj	�s2|�
|�q2|�|j|�dS)NrSrh)
rgr$r�r�r�r�r�r�types�
ModuleType�addZassertCountEqual�__all__)Z	test_caser�Zname_of_moduleZextraZ	blacklistZexpectedr�r�rjrjrkr<�	s )


�
�r<cCs�zddl}Wnty YdS0|�|j|jB|jB|jB�t|d�r�|j|j	|j
fD]2}|r�|�||j�|�
||j�qZ|�|d�qZdS)Nr�CrtSetReportMode)�msvcrtr��SetErrorModeZSEM_FAILCRITICALERRORSZSEM_NOALIGNMENTFAULTEXCEPT�SEM_NOGPFAULTERRORBOXZSEM_NOOPENFILEERRORBOXr�CRT_WARN�	CRT_ERROR�
CRT_ASSERTr��CRTDBG_MODE_FILE�CrtSetReportFile�CRTDBG_FILE_STDERR)rr�r�rjrjrk�suppress_msvcrt_asserts 
s"���
r�c@s$eZdZdZdZdd�Zdd�ZdS)rVNc		Cs�tj�d�r�zddl}Wnty,YdS0|�|j�|_|�|j|jB�t|d�r�i|_	|j
|j|jfD].}|�
||j�}|�||j�}||f|j	|<qnn�zddl}||_Wnty�d|_Yn0|jdu�r$z2|j�|jj�|_|j�|jjd|jdf�Wnttf�y"Yn0tjdk�r�gd�}tj|tjtjd�}|�|��d}Wd�n1�st0Y|��dk�r�td	d
dd�|S)
Nr�rr�rr�)z/usr/bin/defaultsr�zcom.apple.CrashReporterZ
DialogType)r�r�s	developerz:this test triggers the Crash Reporter, that is intentionalr�T)�endr)r�r�r�r�r�r�r��	old_valuer�	old_modesr�r�r�r�r�r�r�rZ	getrlimit�RLIMIT_CORE�	setrlimitrr�r	r
r�r��stripr�)	rsr��report_type�old_mode�old_filerr��procr�rjrjrkr�>
s\
���
��,�zSuppressCrashReport.__enter__c	Gs�|jdurdStj�d�rfddl}|�|j�|jr�|j��D]$\}\}}|�||�|�	||�q>n:|j
dur�z|j
�|j
j|j�Wnt
tfy�Yn0dS)Nr�r)r�r�r�r�r�r�r�rer�r�rr�r�rr�)rsr�r�r�r�r�rjrjrkr��
s

zSuppressCrashReport.__exit__)rgrhrir�r�r�r�rjrjrjrkrV5
sCrVc	spt���d�z�j��Wn"ttfy>t��d��Yn0d�����fdd�}|�|�t��|�dS)NFTcs �rt����n
t���dSrm)r�rirj�Z
attr_is_local�	attr_name�object_to_patchr�rjrk�cleanup�
szpatch.<locals>.cleanup)r��__dict__r�r�Z
addCleanupr�)Z
test_instancer�r�Z	new_valuer�rjr�rk�patch�
s


r�cCsDzddl}WntyYn0|��r2t�d��ddl}|�|�S)NrzUrun_in_subinterp() cannot be used if tracemalloc module is tracing memory allocations)�tracemallocr��
is_tracingr�r��	_testcapi�run_in_subinterp)�coder�r�rjrjrkr��
s
r�csHG��fdd�d|�}d�|||���|�tt��t�|���dS)NcseZdZ��fdd�ZdS)z%check_free_after_iterating.<locals>.Acs(d�zt��Wnty"Yn0dSr-)�next�
StopIterationrw�Zdone�itrjrk�__del__�
s
z-check_free_after_iterating.<locals>.A.__del__N)rgrhrir�rjr�rjrk�A�
sr�F)ZassertRaisesr�r�r�r{)r�r�rDr�r�rjr�rk�check_free_after_iterating�
s	r�cCs�ddlm}m}m}m}|��}|�|�|jdkrXz|��Wn|j	yVYdS0|j
D]F}|rp||vrpq^t||�}|r�n|s�q^|�|d�dur^|dSq^dS)Nr)�	ccompilerr.�spawnroZmsvc)
Z	distutilsr�r.r�roZnew_compilerZcustomize_compilerZ
compiler_typeZ
initializeZDistutilsPlatformErrorZexecutablesr�Zfind_executable)Z	cmd_namesr�r.r�roZcompilerr�r�rjrjrkrZ�
s$	



rZcCs@d}tr6||kr6tdur.t�ddg���dkatr6|}t�|�S)Ng�h㈵��>Zgetpropzro.kernel.qemu�1)rB�_is_android_emulatorr	Zcheck_outputr�r�rE)ZintervalZminimum_intervalrjrjrkrE�
s��rEc
csXddl}tj��}|��}z$|��dVW|rT|j|dd�n|rR|j|dd�0dS)NrT)r�Zall_threads)rgr�r�rh�
is_enabledr�r�)rgr_r�rjrjrk�disable_faulthandler
s
�r�c	Cs�tj�d�r8zt�d�}t|�dWSty6Yn0d}ttd�rhzt�d�}Wnt	yfYn0d}tjdkr�zddl
}|jWntt
fy�Yn,0i}|j|j|jfD]}|�|d�||<q�z�d}t|�D]\}zt�|�}Wn6t	�y }z|jtjk�r�WYd}~q�d}~00t�|�|d7}q�W|du�r�|j|j|jfD]}|�|||��qRn4|du�r�|j|j|jfD]}|�|||��q�0|S)	N)�linuxZfreebsdz
/proc/self/fdr��sysconf�SC_OPEN_MAXrdr)r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�rT�dupr�ZEBADFr^)	r�ZMAXFDr�r�r�rVr_Zfd2rrjrjrkr[s`



�

��
�r[c@s$eZdZdd�Zdd�Zdd�ZdS)�SaveSignalsc	Cs^ddl}||_|��|_dD]6}zt||�}WntyDYqYn0|j�|�qi|_dS)Nr)�SIGKILL�SIGSTOP)�signal�
valid_signals�signalsr�r�r��handlers)rsr�Zsigname�signumrjrjrkrrcs

zSaveSignals.__init__cCs0|jD]$}|j�|�}|dur q||j|<qdSrm)r�r��	getsignalr��rsr�Zhandlerrjrjrk�saveps

zSaveSignals.savecCs&|j��D]\}}|j�||�q
dSrm)r�rer�r�rjrjrk�restore|szSaveSignals.restoreN)rgrhrirrr�r�rjrjrjrkr�Zs	
r�cCsddl}|jSr�)r�Z
WITH_PYMALLOC)r�rjrjrk�
with_pymalloc�sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�FakePathcCs
||_dSrmr�)rsr�rjrjrkrr�szFakePath.__init__cCsd|j�d�S)Nz
<FakePath �>r�rwrjrjrk�__repr__�szFakePath.__repr__cCs6t|jt�s$t|jt�r,t|jt�r,|j�n|jSdSrm)r$r��
BaseExceptionr
r|rwrjrjrk�
__fspath__�s
�
�zFakePath.__fspath__N)rgrhrirrr�r�rjrjrjrkr��sr�c@seZdZdd�Zdd�ZdS)�
_ALWAYS_EQcCsdSr-rj�rs�otherrjrjrk�__eq__�sz_ALWAYS_EQ.__eq__cCsdS�NFrjr�rjrjrk�__ne__�sz_ALWAYS_EQ.__ne__N)rgrhrir�r�rjrjrjrkr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�	_NEVER_EQcCsdSr�rjr�rjrjrkr��sz_NEVER_EQ.__eq__cCsdSr-rjr�rjrjrkr��sz_NEVER_EQ.__ne__cCsdS)Nrrjrwrjrjrk�__hash__�sz_NEVER_EQ.__hash__N)rgrhrir�r�r�rjrjrjrkr��sr�c@seZdZdd�Zdd�ZdS)�_LARGESTcCs
t|t�Srm)r$r�r�rjrjrkr��sz_LARGEST.__eq__cCsdSr�rjr�rjrjrk�__lt__�sz_LARGEST.__lt__N)rgrhrir�r�rjrjrjrkr��sr�c@seZdZdd�Zdd�ZdS)�	_SMALLESTcCs
t|t�Srm)r$r�r�rjrjrkr��sz_SMALLEST.__eq__cCsdSr�rjr�rjrjrk�__gt__�sz_SMALLEST.__gt__N)rgrhrir�r�rjrjrjrkr��sr�cCsddl}|jjSr�)Zasyncio.eventsZeventsZ_event_loop_policy)Zasynciorjrjrk�maybe_get_event_loop_policy�sr�c
Cs�||}}ddl}|����}|��d}t|d�|_|�|�}|d||}||}	||	}
||
}||d|d|||	d|	}t|�t|���fWd�S1s�0YdS)Nrr��r)�decimalZlocalcontext�
bit_lengthrhZprecZDecimalr�Zsqrt)
ZnbinsZnballsr�r�r�ctx�bitsrXZp1emptyZ	meanemptyZoccupiedZ
collisions�varrjrjrk�collision_stats�s


(rc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�catch_unraisable_exceptioncCsd|_d|_dSrm)�
unraisable�	_old_hookrwrjrjrkrrsz#catch_unraisable_exception.__init__cCs
||_dSrm)r)rsrrjrjrk�_hooksz catch_unraisable_exception._hookcCstj|_|jt_|Srm)r��unraisablehookrr	rwrjrjrkr�sz$catch_unraisable_exception.__enter__cGs|jt_|`dSrm)rr�r
r�rs�exc_inforjrjrkr�sz#catch_unraisable_exception.__exit__N�rgrhrirrr	r�r�rjrjrjrkr�src@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�catch_threading_exceptioncCs"d|_d|_d|_d|_d|_dSrm)r�r��
exc_tracebackrWrrwrjrjrkrrBs
z"catch_threading_exception.__init__cCs$|j|_|j|_|j|_|j|_dSrm)r�r�rrW)rsr�rjrjrkr	Iszcatch_threading_exception._hookcCstj|_|jt_|Srm)rO�
excepthookrr	rwrjrjrkr�Osz#catch_threading_exception.__enter__cGs|jt_|`|`|`|`dSrm)rrOrr�r�rrWrrjrjrkr�Ts
z"catch_threading_exception.__exit__Nr
rjrjrjrkr#srr�cCs&tjdkr�ddl}|durt}t��}d}d}t�|tj�\}}|dkrJq�t��|}	|	tkr�zt�||j	�t�|d�Wnt
y�Yn0td|�d|	d�d���t|d	|�}t�
|�q.nt�|d�\}}t�|�}
|
|k�rtd|�d
|
�d|�d���||k�r"td
|�d|����dS)Nr>rr�r�zprocess z is still running after rYr]r�z exited with code z, but exit code z is expectedzpid z != pid )r�r�r�rbr�rZr`ra�killr�r�r��minr��waitstatus_to_exitcode)rIZexitcoder�r�Zt0r�Z	max_sleepZpid2rbr[Z	exitcode2rjrjrk�wait_process\s<

�


�

rcCs ddl}|��}|dddkS)Nr�configZ_use_peg_parser)r�Zget_configs)r�rrjrjrk�use_old_parser�srcCst�t�|�Srm)r�rrrvrjrjrk�skip_if_new_parser�src
cs<tjdd�}zdVW|tjdd�<n|tjdd�<0dSrm)r{r�)Zold_filtersrjrjrk�save_restore_warnings_filters�src
Csdtd�td�}tjdkr`z|jdd�Wn4ty^}zt�d|����WYd}~n
d}~00dS)NZ_multiprocessingzmultiprocessing.synchronizer�)rz broken multiprocessing SemLock: )r
r�r�ZLockr�r�r�)Zsynchronizer�rjrjrk�*skip_if_broken_multiprocessing_synchronize�s
r�Kc	cs8t��}zt�|�dVWt�|�nt�|�0dSrm)r��getrecursionlimit�setrecursionlimit)Z	max_depthZoriginal_depthrjrjrk�infinite_recursion�s

r)r��like�returncCs,t�}tjdt||dt|��d�d�|S)Nrz�
(?#supportrR)r�r�r})�objectr{r}r~r/)r�r�tokenrjrjrk�ignore_deprecations_from�s�r#)�tokensrc	Gs�|std��g}tdd�|D��}tjD]Z\}}}}}|dkrn|turnt|tj�rZ|j}n|p`d}|�	|�rnq(|�
|||||f�q(tj|kr�|tjdd�<t��dS)Nz<Provide token or tokens returned by ignore_deprecations_fromcss|]}dt|��d�VqdS)r rRN)r/)r�r"rjrjrkr��r�z-clear_ignored_deprecations.<locals>.<genexpr>rzr�)rr�r{r�r~r$r��Patternr�r�r��_filters_mutated)	r$Znew_filtersr��actionr}r�r�rkrnrjrjrk�clear_ignored_deprecations�s

r(c	cs8t��}zt�|�dVWt�|�nt�|�0dSrm)r��get_int_max_str_digits�set_int_max_str_digits)Z
max_digitsZcurrentrjrjrk�adjust_int_max_str_digits�s

r+)T)F)rjrjF)F)N)N)r2)r5)r7)r9)NF)F)rNF)N)r�)r�)F)T)N)NN)Nr)N)N)N)Nrjrj)F)rj)r(rgr��collections.abc�collections�
contextlibr�rAr�r�r��importlib.utilr�r�r�r�r�r	r�r.rMrOr�r�r�r{Z
testresultrr�r`�machinerarbrcrr	r
rlrr�r�contextmanagerr�r>r
r�r9r:rr5rrrrr+rr�rrrr�r�r�r�r�r�r�rr�rr�rr	r r!r$r"r#r$r?r@r1rZ
SOCK_MAX_SIZEr4r��
__getformat__r6r8r/r0r1rArrBrDr�ZTESTFN_ASCIIrrGZ
TEST_HTTP_URLZFS_NONASCII�	character�fsdecode�fsencode�UnicodeErrorZTESTFN_UNICODE�unicodedata�	normalize�getfilesystemencodingZTESTFN_ENCODINGZTESTFN_UNENCODABLEZgetwindowsversion�encode�UnicodeEncodeErrorr��decode�UnicodeDecodeErrorZTESTFN_UNDECODABLEZTESTFN_NONASCIIrrKrrYr�rJrMrrGr�r�r�r�ZTEST_SUPPORT_DIRrVr�r�rTrrrbrWrir%r&rFr!r�r�rMr�rOrNr�abc�MutableMappingrPr�r'r�Z	ETIMEDOUTr(Z
ECONNRESETr)r*r�rrrr�r�r�r�r�r�r�r�r�r�r�rQrXr�r�rZ_4GrrrUrr2r3r+rrr4rrrCr"r#r&r,r.r7r9r0r2r:r8r,rEr/ZMISSING_C_DOCSTRINGSr�ZHAVE_DOCSTRINGSZrequires_docstringsr-rJrKrLrUrIrJrKr\r_rHrLrSrRrmrnrTrurr.r|r=rr�r�r7r�rr;r<r�rVr�r�r�rZr�rEr�r[r�r�r�r�r\r�r]�total_orderingr�r^r�r_r��	hash_info�widthZ	NHASHBITSrrrrrrrrrr�r#r(r+rjrjrjrk�<module>s�8	
6	
!

L			�
!
�
�



'


	
6'

 5
		



#0


!����
$$"N�;a";'	

	
	
",95