HEX
Server: LiteSpeed
System: Linux server.nevid-deploma.com 4.18.0-553.111.1.lve.el8.x86_64 #1 SMP Fri Mar 13 13:42:17 UTC 2026 x86_64
User: smilepac (1037)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/cppython/lib/python3.8/test/support/__pycache__/__init__.cpython-38.opt-2.pyc
U

/D�g���b@s�edkred��ddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl!Z!ddl"Z"ddl#Z#ddl$Z%ddl&Z&ddl'm(Z(zddl)Z*Wnek
�rJdZ*YnXzddl+Z+Wnek
�rrdZ+YnXzddl,Z,Wnek
�r�dZ,YnXzddl-Z-Wnek
�r�dZ-YnXzddl.Z.Wnek
�r�dZ.YnXzddl/Z/Wnek
�rdZ/YnXzddl0Z0Wnek
�r:dZ0YnXdddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdggbZ1Gdhd�de2�Z3Gdid�de3�Z4Gdjd
�d
e3�Z5Gdkd�de#j6�Z7ej8�d�dmdn��Z9dodC�Z:�d�dqdr�dsd�Z;dtdu�Z<dvdw�Z=dxd=�Z>dyd>�Z?�d�dzd�Z@d{d9�ZAdZBdZCdaDdaEdZFdpZGdaHd|d�ZId}d�ZJd~d�ZKdd��ZLej�Md���r�d�d�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRnejSZOejTZPd�d��ZQd�d��ZRd�d�ZSd�d��ZTd�d�ZUd�d��ZVd�d�ZWd�d��ZXd�d"�ZY�d�d�d#�ZZd�d��Z[d�d$�Z\d�d%�Z]d�d&�Z^�d�d�d'�Z_d�Z`d�Zad�Zbejcejdfd�dK�Zee`fd�dL�Zfd�dN�Zgd�d��Zheh�Zid�d��Zjd�Zkd�Zle#�men�od���Md��d��Zpe#�me+d��Zqe#�me,d��Zre#�me-d��Zse#�me.d��Ztej�Md��Zueved��Zwejd�k�rtew�rnd�nd�ZxndZxejyd�k�r�d�Zznd�Zzd��{eze�|��Zzd�Z}dZ~d�D]FZze��e��e��ek�r�e��Wne�k
�r�YnXeZ~�q�q�ezd�Z�ejd�k�rddl�Z�e���d�e��Z�e���Z�dZ�ejyd�k�r�e���jd�k�r�ezd�Z�ze���e��Wne�k
�rnYnXe�d�e�e�f�dZ�nBejd�k�r�zdà�e��Wn&e�k
�r�ezdĠ�e�dšZ�YnXdZ�d�D]BZyzey��e��Wn,e�k
�re��ez�eyZ�Y�qYnX�q�e~�r(ezd�e~Z�ndZ�e���Z�dpZ�dpZ�ej8�d�d�dɄ�Z�ej8�d�d�d˄�Z�ej8�d�d�d��Z�eved΃�r�ej8d�dO��Z�ej���ej���e���Z�ej���e��Z�ej���e�dСZ��d�d�d�Z�d�d�Z�d�d`�Z�d�dՄZ��d�dddלd�d(�Z��d�dddלd�d)�Z�d�dM�Z�Gd�d܄d�e��Z��d�d�dބZ�ej8d�dV��Z�ej8d�e�dpfd�dX��Z�ej8d�dW��Z�Gd�d�de��Z�Gd�dY�dYej�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�d�d�Z�ej8d�dqd�d�d.��Z�ej8d�d��Z�d�d�Z�d�d�Z�d�d�Z�d�d�Z�ej8d�d���Z�d�d��Z�d�Z�d�Z�eved���	rLd�e�Z�d�Z�e�d�Z�d�d��Zǐd�d�ZȐdZɐdZʐd�d�ZːddZ�Z̐dda�Z͐dZΐd	e�Z�d�e�ZАd
e�Z�ej�ZӐdd^�Z�G�d�d
��d
�ZՐd��dd6�Z֐dd7�Z�G�dd/�d/�Zؐd�d�Zِd�d�Zڐdd8�Zېd��d�d�Zܐd�d�ZݐddF�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+d0�Z�d,�d-�Z�eރ�
o�ejd�k�
o�e��d.�Z�e�j�dk	�oe�Z�e#�me�d/�Z�d��d0d1�Z�d1�d2�Z�d3�d4�Z�d5�d6�Z�dpa��d7dR�Z��d8dS�Z��d9dT�Z�ej8�d��d;�d<��Z��d��d=�d>�Z��d?dP�Z�ej8�d��d@dU��Z�ej8�dAd\��Z�ej8�dBd[��Z��dC�dD�Z�e#��eve�dE��dF��Z�dG�dH��Z�dI�dJ��ZG�dKdQ�dQe�j�j��ZG�dLd]�d]e���Zd�a�dMd ��Z	�dNd2��Z
d�a�dOdB��ZG�dP�dQ��dQ��Z
d�a�dR�dS��Z�dTd;��Z�dU�dV��Zd�a�dWdA��Z�dXd!��Zdq�dY��dZd?��Z�d��d[d@��Z�d��d\�d]��ZG�d^d_�d_��Z�d_�d`��Z�da�db��Z�d��dc�dd��Zgf�dedc��Zd�a�dfdH��Zej8�dg�dh���Z�didd��Z G�dj�dk��dk��Z!�dl�dm��Z"G�dn�do��do��Z#G�dp�dq��dq��Z$�e$��Z%e
�j&G�dr�ds��ds���Z'�e'��Z(e
�j&G�dt�du��du���Z)�e)��Z*�dv�dw��Z+e�j,�j-�Z.�dx�dy��Z/G�dz�d{��d{��Z0G�d|�d}��d}��Z1ej8�d~�d���Z2�d��d���Z3ej8�d��d����Z4dS(�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�requires_hashdigest�check_syntax_error�check_syntax_warning�TransientResource�time_out�socket_peer_reset�ioerror_peer_reset�transient_internet�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_unless_bind_unix_socket�skip_if_buggy_ucrt_strfptime�ignore_warnings�	is_jython�
is_android�check_impl_detail�
unix_shell�setswitchinterval�HOST�IPV6_ENABLED�find_unused_port�	bind_port�open_urlresource�bind_unix_socket�
temp_umask�
reap_children�TestHandler�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�LARGEST�SMALLESTc@seZdZdS)r	N��__name__�
__module__�__qualname__�rjrj�4/opt/cppython/lib/python3.8/test/support/__init__.pyr	}sc@seZdZdS)r
Nrfrjrjrjrkr
�sc@seZdZdS)rNrfrjrjrjrkr�sc@seZdZdS)rNrfrjrjrjrkr�sTc	cs8|r.t���t�ddt�dVW5QRXndVdS)N�ignorez.+ (module|package))�warnings�catch_warnings�filterwarnings�DeprecationWarning�rlrjrjrk�_ignore_deprecated_imports�s
�rrcs�fdd�}|S)Ncst�����fdd��}|S)Nc
s>t���,tjd�d��|f|�|�W5QR�SQRXdS)Nrl��category)rmrn�simplefilter)�self�args�kwargs)rt�testrjrk�wrapper�s
z3ignore_warnings.<locals>.decorator.<locals>.wrapper��	functools�wraps)ryrzrs�ryrk�	decorator�sz"ignore_warnings.<locals>.decoratorrj)rtrrjrsrkrA�sFrj)�required_oncCstt|��bzt�|�WW5QR�Stk
rd}z$tj�t|��rF�t�	t
|���W5d}~XYnXW5QRXdS�N)rr�	importlibr
�ImportError�sys�platform�
startswith�tuple�unittest�SkipTest�str)�name�
deprecatedr��msgrjrjrkr
�s	
cCsZ|tjkrt|�tj|=ttj�D]0}||ks>|�|d�r$tj|||<tj|=q$dS)N�.)r��modules�
__import__�listr�)r��orig_modules�modnamerjrjrk�_save_and_remove_module�s
r�cCs>d}ztj|||<Wntk
r.d}YnXdtj|<|S�NTF�r�r��KeyError)r�r�Zsavedrjrjrk�_save_and_block_module�s

r�cCs|r
tjSdd�S)NcSs|Sr�rj��frjrjrk�<lambda>��z$anticipate_failure.<locals>.<lambda>)r�ZexpectedFailure)Z	conditionrjrjrkr;�scCsF|dkr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
���
cCs�t|���i}g}t||�z^z@|D]}	t|	|�q$|D]}
t|
|�s8|�|
�q8t�|�}Wnt	k
rvd}YnXW5|��D]\}}|tj|<q�|D]}tj|=q�X|W5QR�SQRXdSr�)
rrr��itemsr�r�r��appendr�r
r�)r�ZfreshZblockedr�r�Znames_to_removeZ	orig_name�moduleZname_to_removeZ
fresh_nameZblocked_nameZfresh_modulerjrjrkr�s$


cCs>zt||�}Wn&tk
r4t�d||f��YnX|SdS)Nzobject %r has no attribute %r)�getattr�AttributeErrorr�r�)�objr�Z	attributerjrjrkr7,s
cCs|adSr�)�_original_stdout)�stdoutrjrjrkrAscCs
tptjSr�)r�r�r�rjrjrjrkrEscCs&ztj|=Wntk
r YnXdSr�r�)r�rjrjrkrHsc
Gszz
||�WStk
rt}zLtdkrJtd|jj|f�td|j|f�t�|tj�||�WY�Sd}~XYnXdS)N�z%s: %szre-run %s%r)	�OSErrorr�print�	__class__rgr��chmod�stat�S_IRWXU)r��funcrw�errrjrjrk�
_force_runNs
r��wincCs�||�|r|}ntj�|�\}}|p(d}d}|dkrjt�|�}|rJ|sVn||ksVdSt�|�|d9}q.tjd|tdd�dS)Nr�g����MbP?g�?r�z)tests may fail, delete still pending for ���
stacklevel)	r�r��split�listdir�time�sleeprm�warn�RuntimeWarning)r��pathname�waitallr�r��timeout�Lrjrjrk�_waitforYs 



�r�cCsttj|�dSr�)r�r�r��filenamerjrjrk�_unlinkzsr�cCsttj|�dSr�)r�r��rmdir�r�rjrjrk�_rmdir}sr�cs,�fdd��t�|dd�tdd�|�dS)Ncs�t|tj|�D]�}tj�||�}zt�|�j}Wn<tk
rl}ztd||ft	j
d�d}W5d}~XYnXt�|�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��s�
�_rmtree.<locals>._rmtree_innerTr�cSst|tj|�Sr�)r�r�r�)�prjrjrkr��r�z_rmtree.<locals>.<lambda>)r��r�rjr�rk�_rmtree�sr�cCs^zddl}Wntk
r Yn:X|�t|�d�}|jj�||t|��}|rZ|d|�S|S)Nrr�)�ctypesr�Zcreate_unicode_buffer�len�windllZkernel32ZGetLongPathNameW)r�r��buffer�lengthrjrjrk�	_longpath�s�r�csHzt�|�WdStk
r$YnX�fdd���|�t�|�dS)Nc	s�t|tj|�D]l}tj�||�}zt�|�j}Wntk
rHd}YnXt�	|�rl�|�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�rjr�rkr��s
cCs|Sr�rjr�rjrjrkr��sc	Cs*zt|�Wnttfk
r$YnXdSr�)r��FileNotFoundError�NotADirectoryErrorr�rjrjrkr�scCs&zt|�Wntk
r YnXdSr�)r�r�r�rjrjrkr��sr�cCs&zt|�Wntk
r YnXdSr�)r�r�r�rjrjrkr�scCsBtj�|�}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
c
s�ttd�rtjSd}tj�d�r�ddl�ddl�d}d}G�fdd�d�j�}�j	j
}|��}|sj����|�}�j
��}|�||��|���|���|��}|s�����t|j|@�s�d}n�tjdk�rVdd	lm}	m�m}
m}dd
lm}|	�|d��}
|
��dk�rd}nFG�fd
d�d|�}|�}|
|�}|
�|�dk�sR|
�|�dk�rVd}|�s�z.ddlm}|�}|��|� �|�!�Wn\t"k
�r�}z<t#|�}t$|�dk�r�|dd�d}d�%t&|�j'|�}W5d}~XYnX|t_(|t_tjS)N�resultr�rrcs.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)r�rjrk�ProcessSerialNumbers�r�z#cannot run without OS X gui process)�Tk�2z [...]zTk unavailable due to {}: {}))�hasattr�_is_gui_availabler�r�r�r�r�Zctypes.wintypesr�r�Zuser32ZGetProcessWindowStationZWinErrorr�r�ZGetUserObjectInformationWZbyrefZsizeof�boolr�r�r�r�Zctypes.utilr�ZLoadLibraryZCGMainDisplayIDZGetCurrentProcessZSetFrontProcess�tkinterr�Zwithdraw�updateZdestroy�	Exceptionr�r��format�typerg�reason)rZ	UOI_FLAGSZWSF_VISIBLEr��dll�hZuofZneeded�resr�r�r�r�Zapp_servicesr�ZpsnZpsn_pr��root�eZ
err_stringrj)r�r�rkr��sn

���r�cCstdkp|tkSr�)r��resourcerjrjrkr 5scCs<t|�s |dkrd|}t|��|dkr8t�s8ttj��dS)Nz"Use of the %r resource not enabled�gui)r rr�r)r
r�rjrjrkr!=scCs�ddl}d�tt|��}|���dd�d}|��|krtzttt|�d���}Wnt	k
rhd}YqxX||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_versionFs

�rcGs
td|�S)NZFreeBSD�r�rrjrjrkr"ascGs
td|�S)NZLinuxrrrjrjrkr#jscs�fdd�}|S)Ncs"t�����fdd��}�|_|S)Ncsxtjdkrnt��d}zttt|�d���}Wntk
rBYn,X|�krnd�tt	���}t
�d||f���||�S)Nr�rr�z&Mac OS X %s or higher required, not %s)r�r�Zmac_verr�rrr�rr�r�r�r�)rw�kwrrr)r�rrjrkrz{s
��z4requires_mac_ver.<locals>.decorator.<locals>.wrapper)r|r}r�r�rzr�r�rkrzsz#requires_mac_ver.<locals>.decoratorrj)rrrjrrkr$sscs��fdd�}|S)Ncst������fdd��}|S)NcsXz&�rtdk	rt���n
t���Wn&tk
rLt�d��d���YnX�||�S)Nz
hash digest 'z' is not available.)�_hashlib�new�hashlibrr�r�)rwrx)�
digestnamer��opensslrjrkrz�s
�
z7requires_hashdigest.<locals>.decorator.<locals>.wrapperr{r �r%r&r!rkr�sz&requires_hashdigest.<locals>.decoratorrj)r%r&rrjr'rkr%�s
�	localhostz	127.0.0.1z::1c	Cs&t�||��}t|�}W5QRX~|Sr�)�socketrJ)�family�socktypeZtempsock�portrjrjrkrI�s8cCs�|jtjkr�|jtjkr�ttd�r>|�tjtj�dkr>t	d��ttd�r~z |�tjtj
�dkrft	d��Wntk
r|YnXttd�r�|�tjtj
d�|�|df�|��d}|S)N�SO_REUSEADDRrzHtests should never set the SO_REUSEADDR socket option on TCP/IP sockets!�SO_REUSEPORTzHtests should never set the SO_REUSEPORT socket option on TCP/IP sockets!�SO_EXCLUSIVEADDRUSEr)r*r)�AF_INETr�SOCK_STREAMr��
getsockopt�
SOL_SOCKETr-r
r.r��
setsockoptr/�bind�getsockname)�sock�hostr,rjrjrkrJ�s


cCs:z|�|�Wn&tk
r4|��t�d��YnXdS)Nzcannot bind AF_UNIX sockets)r5�PermissionError�closer�r�)r7�addrrjrjrkrLs
cCs`tjr\d}zBz(t�tjtj�}|�tdf�WW�dStk
rHYnXW5|rZ|��XdS)NrTF)r)�has_ipv6r:�AF_INET6r1r5�HOSTv6r�)r7rjrjrk�_is_ipv6_enableds


r?cst����fdd��}|S)Nc
sNz�||�Wn:tk
rH}zdt|�kr6t�d���W5d}~XYnXdS)NZCERTIFICATE_VERIFY_FAILEDz.system does not contain necessary certificates)r�r�r�r�)rwrxrr�rjrk�dec0s
z&system_must_validate_cert.<locals>.decr{)r�r@rjr�rk�system_must_validate_cert.srAi@iZdoubleZIEEEztest requires IEEE 754 doublesz
requires zlibz
requires gzipzrequires bz2z
requires lzma�java�getandroidapilevel�win32z/system/bin/shz/bin/shz$testz@testz	{}_{}_tmpzhttp://www.pythontest.net)�æ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�rHs���s�s��rc
cs�d}|dkr&t��}d}tj�|�}nXzt�|�d}WnDtk
r|}z&|sP�tjd|�d|��t	dd�W5d}~XYnX|r�t�
�}z
|VW5|r�|t�
�kr�t|�XdS)NFTz5tests may fail, unable to create temporary directory �: �r�)�tempfile�mkdtempr�r��realpath�mkdirr�rmr�r��getpidr)r��quietZdir_createdr��pidrjrjrk�temp_dir�s*
�
rSc
cs�t��}zt�tj�|��WnDtk
rb}z&|s6�tjd|�d|��tdd�W5d}~XYnXzt��VW5t�|�XdS)NzBtests may fail, unable to change the current working directory to rJrKr�)	r��getcwd�chdirr�rNr�rmr�r�)r�rQZ	saved_dirr�rjrjrk�
change_cwds
�rV�tempcwdc
cs:t||d��$}t||d��}|VW5QRXW5QRXdS)N)r�rQ)rQ)rSrV)r�rQZ	temp_pathZcwd_dirrjrjrkr:s�umaskc	cs&t�|�}z
dVW5t�|�XdSr�)r�rX)rXZoldmaskrjrjrkrMNs

�datacCsbtj�|�r|S|dk	r&tj�||�}tgtj}|D]&}tj�||�}tj�|�r6|Sq6|Sr�)r�r��isabsr��
TEST_HOME_DIRr��exists)r�Zsubdirr��dn�fnrjrjrkr_s
cCs(t�|tjtjBtjB�}t�|�dSr�)r��open�O_WRONLY�O_CREAT�O_TRUNCr:)r��fdrjrjrkrqscCs,t|���}dd�|D�}d�|�}d|S)NcSsg|]}d|�qS)z%r: %rrj)�.0Zpairrjrjrk�
<listcomp>yszsortdict.<locals>.<listcomp>z, z{%s})�sortedr�r�)�dictr�Z	reprpairsZ
withcommasrjrjrkr^vs
cCs.ttd�}z|��W�S|��tt�XdS)N�wb)r_rr:r�filenor�rjrjrk�make_bad_fd}s

rjr���lineno�offsetc	Csr|�t|��}t|dd�W5QRX|j}|�|j�|dk	rL|�|j|�|�|j�|dk	rn|�|j|�dS)Nz
<test string>�exec)ZassertRaisesRegex�SyntaxError�compile�	exception�assertIsNotNonerl�assertEqualrm)�testcase�	statement�errtextrlrm�cmr�rjrjrkr&�sc	Cs�tjdd��}t�dt�t|dd�W5QRX|�t|�d|�|\}|�t|j	t�|j	�|rt|�
t|j�|�|�|j
d�|�|j�|dk	r�|�|j|�tjdd��$}t�dt�t|||||d�W5QRX|�|g�dS)	NT��record�alwaysz
<testcase>rnr�errorrk)rmrnru�
SyntaxWarningrprsr��
assertTrue�
issubclassrtZassertRegexr��messager�rrrlr&)rtrurvrlrm�warnsr�rjrjrkr'�s&�c	sPddl}ddl}��dd��|j�|�d�d�d}tj�t	|�}���fdd�}tj�
|�r|||�}|dk	rt|St|�td�t
r�td	|t�d
�|j��}tr�|j�d�|j|dd
�}tr�|j�d�dkr�tj|d�}z<t|d��(}	|��}
|
�r|	�|
�|��}
q�W5QRXW5|��X||�}|dk	�r@|Std|��dS)Nr�checkr��/���cs>t|f����}�dkr|S�|�r2|�d�|S|��dSr�)r_�seekr:)r^r��rwr�rrjrk�check_valid_file�s
z*open_urlresource.<locals>.check_valid_fileZurlfetchz	fetching %s ...r�)zAccept-Encoding�gzip�)r�zContent-Encodingr�)�fileobjrhzinvalid resource %r)Zurllib.requestZurllib.parse�pop�parse�urlparser�r�r�r��
TEST_DATA_DIRr\rr!rr�rZrequestZbuild_openerr�Z
addheadersr�r_Zheaders�getZGzipFiler:�read�writer
)Zurlrwr�urllibr�r^r�r��opener�out�srjr�rkrK�s<	



c@s0eZdZdd�Zdd�Zedd��Zdd�Zd	S)
�WarningsRecordercCs||_d|_dSr���	_warnings�_last)rvZ
warnings_listrjrjrk�__init__�szWarningsRecorder.__init__cCsDt|j�|jkr t|jd|�S|tjjkr0dStd||f��dS)Nr�z%r has no attribute %r)r�r�r�r�rm�WarningMessage�_WARNING_DETAILSr�)rv�attrrjrjrk�__getattr__�s
zWarningsRecorder.__getattr__cCs|j|jd�Sr�r��rvrjrjrkrm�szWarningsRecorder.warningscCst|j�|_dSr�)r�r�r�r�rjrjrk�reset�szWarningsRecorder.resetN)rgrhrir�r��propertyrmr�rjrjrjrkr��s

r�c	cs�t�d�}|j�d�}|r"|��tjdd�� }tjd�d�t	|�VW5QRXt
|�}g}|D]j\}}d}	|dd�D]8}|j}
t�
|t|
�tj�r|t|
j|�r|d}	|�|�q||	sd|sd|�||jf�qd|r�td|d	��|r�td
|d	��dS)Nr�Z__warningregistry__TrxrmrzFzunhandled warning %srz)filter (%r, %s) did not catch any warning)r��	_getframe�	f_globalsr��clearrmrnr�rur�r�r�re�matchr��Ir~r��remover�rg�AssertionError)�filtersrQ�frame�registry�wZreraise�missingr��cat�seen�warningrjrjrk�_filterwarnings�s4

��r�cOs.|�d�}|s$dtff}|dkr$d}t||�S)NrQr�T)r��Warningr�)r�rxrQrjrjrkrT s

c	csHtjdd��&}tjd||d�dV|r.t�W5QRX|�|g�dS)NTrxrz)rrt)rmrnro�
gc_collectrs)rtrrt�force_gcr�rjrjrkrV8s�c	cs$t|tdd��dVW5QRXdS)NT)rtr�)rV�ResourceWarning)rtrjrjrkrUPsc@s$eZdZdd�Zdd�Zdd�ZdS)rcGsJtj��|_|D]4}|tjkrtj|}|j|kr<tj|j=tj|=qdSr�)r�r��copy�original_modulesrg)rv�module_names�module_namer�rjrjrkr�ns



zCleanImport.__init__cCs|Sr�rjr�rjrjrk�	__enter__{szCleanImport.__enter__cGstj�|j�dSr�)r�r�rr��rv�
ignore_excrjrjrk�__exit__~szCleanImport.__exit__N�rgrhrir�r�r�rjrjrjrkrbs
c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)rWcCstj|_i|_dSr�)r��environ�_environ�_changedr�rjrjrkr��szEnvironmentVarGuard.__init__cCs
|j|Sr�)r��rv�envvarrjrjrk�__getitem__�szEnvironmentVarGuard.__getitem__cCs*||jkr|j�|�|j|<||j|<dSr��r�r�r��rvr��valuerjrjrk�__setitem__�s
zEnvironmentVarGuard.__setitem__cCs2||jkr|j�|�|j|<||jkr.|j|=dSr�r�r�rjrjrk�__delitem__�s

zEnvironmentVarGuard.__delitem__cCs
|j��Sr�)r��keysr�rjrjrkr��szEnvironmentVarGuard.keyscCs
t|j�Sr�)�iterr�r�rjrjrk�__iter__�szEnvironmentVarGuard.__iter__cCs
t|j�Sr�)r�r�r�rjrjrk�__len__�szEnvironmentVarGuard.__len__cCs|||<dSr�rjr�rjrjrk�set�szEnvironmentVarGuard.setcCs
||=dSr�rjr�rjrjrk�unset�szEnvironmentVarGuard.unsetcCs|Sr�rjr�rjrjrkr��szEnvironmentVarGuard.__enter__cGsF|j��D].\}}|dkr.||jkr8|j|=q
||j|<q
|jt_dSr�)r�r�r�r�r�)rvr��k�vrjrjrkr��s

zEnvironmentVarGuard.__exit__N)rgrhrir�r�r�r�r�r�r�r�r�r�r�rjrjrjrkrW�sc@s$eZdZdd�Zdd�Zdd�ZdS)�
DirsOnSysPathcGs(tjdd�|_tj|_tj�|�dSr�)r�r��original_value�original_object�extend)rv�pathsrjrjrkr��szDirsOnSysPath.__init__cCs|Sr�rjr�rjrjrkr��szDirsOnSysPath.__enter__cGs|jt_|jtjdd�<dSr�)r�r�r�r�r�rjrjrkr��szDirsOnSysPath.__exit__Nr�rjrjrjrkr��sr�c@s&eZdZdd�Zdd�Zddd�ZdS)	r(cKs||_||_dSr�)r��attrs)rvr�rxrjrjrkr��szTransientResource.__init__cCs|Sr�rjr�rjrjrkr��szTransientResource.__enter__NcCsT|dk	rPt|j|�rP|j��D](\}}t||�s4qPt||�|krqPqtd��dS)Nz%an optional resource is not available)r~r�r�r�r�r�r)rvZtype_r��	tracebackr�Z
attr_valuerjrjrkr��s
zTransientResource.__exit__)NNNr�rjrjrjrkr(�s)�errnocCs^tjg}ttd�r|�tj�ttd�r4|�tj�ttd�rJ|�tj�tsZ|�tj�|S)N�ENETUNREACH�
EADDRNOTAVAIL�EHOSTUNREACH)	r��ECONNREFUSEDr�r�r�r�r�rHZEAFNOSUPPORT)�errorsrjrjrk�get_socket_conn_refused_errs�s


r��>@)r��errnosc	
#sjddddddg}ddd	d
dg}td|��|�g��sRd
d�|D��dd�|D�����fdd�}t��}z�z|dk	r�t�|�dVWn�tjk
r�}z$tr�tj�	�j
dd��|�W5d}~XYn�tk
�rT}zj|j
}t|�dk�rt
|dt��r|d}q�t|�dk�r:t
|dt��r:|d}qސq:q�||��W5d}~XYnXW5t�|�XdS)N)r��o)�
ECONNRESET�h)r��q)r��e)�	ETIMEDOUT�n)r��c)�	EAI_AGAIN���)�EAI_FAIL���)�
EAI_NONAME���)�
EAI_NODATA���)Z
WSANO_DATAi�*zResource %r is not availablecSsg|]\}}tt||��qSrj)r�r��rdr��numrjrjrkre!s�z&transient_internet.<locals>.<listcomp>cSsg|]\}}tt||��qSrj)r�r)r�rjrjrkre#s�cs�t|dd�}t|tj�s�t|tj�r,|�ks�t|tjj�rRd|jkrPdks�nt|tjj	�r~d|j
ks�d|j
ks�d|j
ks�|�kr�ts�tj
��jdd��|�dS)	Nr�i�iW�ConnectionRefusedError�TimeoutError�EOFErrorr�
)r��
isinstancer)r��gaierrorr�r{�	HTTPError�code�URLErrorrrr��stderrr�rw)r��n�Zcaptured_errnosZdeniedZ
gai_errnosrjrk�filter_error&s4
����������	z(transient_internet.<locals>.filter_errorrr�rr�)rr)�getdefaulttimeout�setdefaulttimeout�nntplibZNNTPTemporaryErrorrr�r�r�rwr�r�r�)	Z
resource_namer�r�Zdefault_errnosZdefault_gai_errnosrZold_timeoutr��arjr�rkr,sV��	��



c
csFddl}tt|�}tt||���ztt|�VW5tt||�XdSr�)�ior�r��setattr�StringIO)Zstream_namerZorig_stdoutrjrjrk�captured_outputTs
rcCstd�S)Nr��rrjrjrjrkr`scCstd�S)Nr�r	rjrjrjrkriscCstd�S)N�stdinr	rjrjrjrkrrs
cCs*t��trt�d�t��t��dS)Ng�������?)�gcZcollectrBr�r�rjrjrjrkr�s


r�ccs.t��}t��z
dVW5|r(t��XdSr�)r�	isenabled�disable�enable)Zhave_gcrjrjrk�
disable_gc�s
rcCs6t�d�pd}d}|��D]}|�d�r|}q|dkS)NZ	PY_CFLAGSr�z-O)r�z-O0z-Og)�	sysconfig�get_config_varr�r�)ZcflagsZ	final_optr�rjrjrk�python_is_optimized�s
rZnPZ0nZ
getobjectsZ2PZ0Pr�cCst�t|t�Sr�)�struct�calcsize�_header�_align��fmtrjrjrk�calcobjsize�srcCst�t|t�Sr�)rr�_vheaderrrrjrjrk�calcvobjsize�sri@icCspddl}t�|�}t|�tkr(|jt@sBt|�tkrLt|�jt@rL||j7}dt|�||f}|�|||�dS)Nrz&wrong size for %s: got %d, expected %d)	�	_testcapir��	getsizeofr�	__flags__�_TPFLAGS_HEAPTYPE�_TPFLAGS_HAVE_GCZSIZEOF_PYGC_HEADrs)ry�o�sizerr�r�rjrjrk�check_sizeof�s

��
�r#cs��fdd�}|S)Ncs$���fdd�}�j|_�j|_|S)Nc
s�z ddl}t|��}|�|�}Wn(tk
r6�YnBd}}Yn0X�D](}z|�||�WqxWqNYqNXqNz�||�W�S|r�|r�|�||�XdSr�)�localer��	setlocaler�)rw�kwdsr$rtZorig_locale�loc)�catstrr��localesrjrk�inner�s$

z1run_with_locale.<locals>.decorator.<locals>.inner�rg�__doc__�r�r*�r(r)r!rkr�sz"run_with_locale.<locals>.decoratorrj)r(r)rrjr.rkrX�scs�fdd�}|S)Ncs"��fdd�}�j|_�j|_|S)Nc	s�z
tj}Wntk
r(t�d��YnXdtjkr@tjd}nd}�tjd<|�z�||�W�S|dkrvtjd=n
|tjd<t��XdS)Nztzset requiredZTZ)r��tzsetr�r�r�r�r�)rwr&r/Zorig_tz)r��tzrjrkr*�s




z-run_with_tz.<locals>.decorator.<locals>.innerr+r-�r0r!rkr�szrun_with_tz.<locals>.decoratorrj)r0rrjr1rkr_�si�r�cCs�dttdtd�}t�d|tjtjB�}|dkr>td|f��tt|�	d��||�	d��
��}|a|tkrrt}|t
dkr�td|f��|adS)Nr2)r��m�g�tz(\d+(\.\d+)?) (K|M|G|T)b?$zInvalid memory limit %rrrKz$Memory limit %r too low to be useful)�_1M�_1Gr�r��
IGNORECASE�VERBOSErr�float�group�lower�real_max_memuse�MAX_Py_ssize_t�_2Gr)�limitZsizesr3�memlimitrjrjrkr\s"�
�$c@s$eZdZdd�Zdd�Zdd�ZdS)�_MemoryWatchdogcCsdjt��d�|_d|_dS)Nz/proc/{pid}/statm)rRF)rr�rP�procfile�startedr�rjrjrkr�,sz_MemoryWatchdog.__init__c
Cs�zt|jd�}WnDtk
rT}z&t�d�|�t�tj�	�WY�dSd}~XYnX|�(t
d�}tjtj
|g|tjd�|_W5QRXd|_dS)N�rz!/proc not available for stats: {}zmemory_watchdog.py)r
r�T)r_rCr�rmr�rr�r�r��flushr�
subprocess�Popen�
executable�DEVNULL�mem_watchdogrD)rvr�rZwatchdog_scriptrjrjrk�start0s�
�z_MemoryWatchdog.startcCs|jr|j��|j��dSr�)rDrK�	terminate�waitr�rjrjrk�stop@s
z_MemoryWatchdog.stopN)rgrhrir�rLrOrjrjrjrkrB'srBcs���fdd�}|S)Ncs ���fdd����_��_�S)Ncs��j}�j}tsd}n|}ts"�sDt||krDt�d||d��trztrzt�tdj||dd��t�}|�	�nd}z�||�W�S|r�|�
�XdS)Ni�'not enough memory: %.1fG minimum needed�@z* ... expected peak memory use: {peak:.1f}G)Zpeak)r"�memuser=r�r�rr�rrBrLrO)rvr"rR�maxsizeZwatchdog)�dry_runr�rzrjrkrzTs2
�
��
�
z.bigmemtest.<locals>.decorator.<locals>.wrapper)r"rRr��rTrRr"�r�rzrkrSszbigmemtest.<locals>.decoratorrj)r"rRrTrrjrUrkr4Fs
!cs�fdd�}|S)NcsDttkr8tdkr$tdkr$t�d��q@t�dtd��n�|�SdS)Nl����lz-not enough memory: try a 32-bit build insteadrPrQ)rr>r�r�r�r�rjrkrzxs���z!bigaddrspacetest.<locals>.wrapperrjrVrjr�rkr5vsc@seZdZdd�ZdS)r-cCst��}||�|Sr�)r�Z
TestResult)rvryr�rjrjrk�run�szBasicTestRunner.runN)rgrhrirWrjrjrjrkr-�scCs|Sr�rj)r�rjrjrk�_id�srXcCs:|dkrt�st�tj�St|�r&tSt�d�|��SdS)Nrzresource {0!r} is not enabled)r�r�rrr rXrrrjrjrk�requires_resource�s
rYcCstdd�|�S)NT)�cpython)�impl_detailr~rjrjrkr6�scKsVtf|�rtS|dkrLt|�\}}|r,d}nd}t|���}|�d�|��}t�|�S)Nz*implementation detail not available on {0}z%implementation detail specific to {0}z or )	rDrX�
_parse_guardsrfr�rr�r�r)r��guardsZ
guardnames�defaultrjrjrkr[�s
r[cCs*|sddidfSt|���d}||fS)NrZTFr)r��values)r]Zis_truerjrjrkr\�sr\cKs t|�\}}|�t����|�Sr�)r\r�r�Zpython_implementationr<)r]r^rjrjrkrD�scs,ttd�s�St����fdd��}|SdS)N�gettracec	s2t��}zt�d��||�W�St�|�XdSr�)r�r`�settrace)rwrxZoriginal_tracer!rjrkrz�s

zno_tracing.<locals>.wrapper)r�r�r|r}r rjr!rk�
no_tracing�s

rbcCstt|��Sr�)rbr6r~rjrjrk�
refcount_test�srccCsNg}|jD]8}t|tj�r0t||�|�|�q
||�r
|�|�q
||_dSr�)Z_testsr�r��	TestSuite�
_filter_suiter�)�suiteZpredZnewtestsryrjrjrkre�s

recCs�ttjttdk	d�}|�|�}tdk	r4t�|���|jsD|j	sDt
�|��s�t|j
�dkrp|jsp|j
dd}n4t|j�dkr�|j
s�|jdd}nd}ts�|d7}t|��dS)N)�	verbosity�capture_outputrrzmultiple errors occurredz!; run in verbose mode for details)rr�r�r�junit_xml_listrWr�Zget_xml_elementZtestsRunZskippedrZ
wasSuccessfulr�r�Zfailuresr
)rfZrunnerr�r�rjrjrk�
_run_suite�s$�
rjcCstdkrdSt|���SdS�NT)�_match_test_func�idr~rjrjrk�
match_testsrncCsd|kot�d|�S)Nr�z[?*\[\]])r��search)r�rjrjrk�_is_full_match_testsrpcs~|dkrd}|dkrd}d��|tkr4t|�\}�|tkrHt|�\}�t|�at|�a�dk	sh�dk	rz��fdd�}|adS)Nrjcs*d}d}�r�|�}�r �|�}|o(|Sr�rj)�test_id�acceptrl�Zaccept_funcZignore_funcrjrk�match_function.sz'set_match_tests.<locals>.match_function)�_accept_test_patterns�_compile_match_function�_ignore_test_patternsr�rl)Zaccept_patterns�ignore_patternsrtrjrsrk�set_match_testss	rycs^|sd}d}nHttt|��r(t|�j}n.d�ttj|��}t�	|�j
��fdd�}|}||fS)Nrj�|cs$�|�rdStt�|�d���SdS)NTr�)�anyrr�)rq�Zregex_matchrjrk�match_test_regexIsz1_compile_match_function.<locals>.match_test_regex)�allrrpr��__contains__r��fnmatch�	translater�rpr�)�patternsr�Zregexr}rjr|rkrv:srvcGs�tjtjf}t��}|D]`}t|t�rR|tjkrH|�t�tj|��qxt	d��qt||�rh|�|�q|�t�
|��qt|t�t
|�dS)Nz)str arguments must be keys in sys.modules)r�rdZTestCaser�r�r�r�ZaddTestZ
findTestCasesrZ	makeSuiterernrj)�classesZvalid_typesrf�clsrjrjrkr.Ys




cCsdSr�rjrjrjrjrk�_check_docstringspsr�ZWITH_DOC_STRINGSztest requires docstringscCs`ddl}|dkrt}nd}|j|||d�\}}|rBtd||f��trXtd|j|f�||fS)Nr)r�optionflagsz%d of %d doctests failedz,doctest (%s) ... %d tests with zero failures)�doctestr�testmodr
r�rg)r�rgr�r�r�r5rjrjrkr/�s�cCs(|��D]}td|��tjdd�qdS)NzWarning -- T)r�rF)�
splitlinesr�r�r�)r��linerjrjrk�
print_warning�sr�cCstj��fSr�)r�r�r�rjrjrjrk�
modules_setup�sr�cCs:dd�tj��D�}tj��tj�|�tj�|�dS)NcSs"g|]\}}|�d�r||f�qS)z
encodings.)r�)rdr�r�rjrjrkre�s
�z#modules_cleanup.<locals>.<listcomp>)r�r�r�r�r)Z
oldmodules�	encodingsrjrjrk�modules_cleanup�s
r�cCst��tj��fSr�)�_thread�_count�	threading�	_danglingr�rjrjrjrkrP�sc	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�?)�ranger�r�r�r��environment_alteredr�r�r�r�r�)Zoriginal_valuesZ
_MAX_COUNT�countr_Zdangling_threads�threadrjrjrkrQ�s0
cst����fdd��}|S)Ncs"t�}z�|�W�St|�XdSr�)rPrQ)rw�keyr!rjrkr�szreap_threads.<locals>.decoratorr{)r�rrjr!rkrR�s�N@ccs�t��}z
dVW5t��}||}t��}||kr6q�t��|krzt��|}d||�d|d�d|�d|�d�	}t|��t�d�t�q$XdS)Nz!wait_threads() failed to cleanup z threads after �.1fz seconds (count: z
, old count: r�r�)r�r�r��	monotonicr�r�r�)r�Z	old_countZ
start_time�deadliner�Zdtr�rjrjrk�wait_threads_exit�s
$
r�cCs,|�|�|��r(d|d�d�}t|��dS)Nzfailed to join the thread in r�z seconds)r��is_aliver�)r�r�r�rjrjrk�join_thread	s
r�cCsjttd�rttd�sdSzt�dtj�\}}Wntk
rFYqfYnX|dkrRqftd|���daqdS)N�waitpid�WNOHANGr�rz%reap_children() reaped child process T)r�r�r�r�r�r�r�)rR�statusrjrjrkrN#	s	
ccs t|�}g}zVz |D]}|��|�|�qWn*trRt
d
t|�t|�f��YnXdVW5z�|rp|�t��}}t	dd�D]\}|d7}|D]}|�
t|t��d��q�dd�|D�}|s�q�tr�t
d	t|�|f�q�W5dd�|D�}|�rt�tj�tdt|���XXdS)NcSsg|]}|��r|�qSrj�r��rdr5rjrjrkre^	sz!start_threads.<locals>.<listcomp>zUnable to join %d threadsr��<r�cSsg|]}|��r|�qSrjr�r�rjrjrkreW	sz7Unable to join %d threads during a period of %d minutesz/Can't start %d threads, only %d threads started)r��faulthandlerZdump_tracebackr�r�r�r�r�r�r�r��maxrr�rLr�)�threadsZunlockrD�endtimeZ	starttimer�r5rjrjrkrS?	sB�

�c
csnt||�r<t||�}t|||�z
|VW5t|||�Xn.t|||�z
dVW5t||�rht||�XdSr�)r�r�r�delattr)r�r��new_val�real_valrjrjrkrZc	s




c	csX||kr0||}|||<z
|VW5|||<Xn$|||<z
dVW5||krR||=XdSr�rj)r��itemr�r�rjrjrkrY�	s

cCst�dd|���}|S)Ns\[\d+ refs, \d+ blocks\]\r?\n?r�)r��sub�strip)r�rjrjrk�strip_python_stderr�	sr�Z	getcountsz-types are immortal if COUNT_ALLOCS is definedcCst��Sr�)rG�_args_from_interpreter_flagsrjrjrjrk�args_from_interpreter_flags�	sr�cCst��Sr�)rG�"_optim_args_from_interpreter_flagsrjrjrjrk�!optim_args_from_interpreter_flags�	sr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
rOcCstjj�|d�||_dSr�)�logging�handlers�BufferingHandlerr��matcher)rvr�rjrjrkr��	szTestHandler.__init__cCsdS�NFrjr�rjrjrk�shouldFlush�	szTestHandler.shouldFlushcCs|�|�|j�|j�dSr�)rr�r��__dict__)rvryrjrjrk�emit�	s
zTestHandler.emitcKs,d}|jD]}|jj|f|�r
d}q(q
|S)NFT)r�r��matches)rvrxr��drjrjrkr��	s
zTestHandler.matchesN)rgrhrir�r�r�r�rjrjrjrkrO�	s	c@s eZdZdZdd�Zdd�ZdS)r[)r�rcKs:d}|D],}||}|�|�}|�|||�sd}q6q|Sr�)r��match_value)rvr�rxr�r�r��dvrjrjrkr��	s
zMatcher.matchescCsHt|�t|�krd}n.t|�tk	s,||jkr6||k}n|�|�dk}|S)NFr)rr��_partial_matches�find)rvr�r�r�r�rjrjrkr��	s
zMatcher.match_valueN)rgrhrir�r�r�rjrjrjrkr[�	sc
CsZtdk	rtStd}zt�t|�d}Wntttfk
rFd}YnXt�|�|a|S)NrTF)�_can_symlinkrr��symlinkr��NotImplementedErrorr�r�)Zsymlink_path�canrjrjrkr�	s

cCs t�}d}|r|St�|�|�S)Nz*Requires functional symlink implementation)rr�r�ry�okr�rjrjrkr0

scCsPtdkr:tjdkr6t��ddkr6t��jdkr6dandatrLt�	d�|�S|S)NrDr�cp65001r�TFz!buggy MSVC UCRT strptime/strftime)
�_buggy_ucrtr�r�r$�getdefaultlocaler��	localtime�tm_zoner�rr~rjrjrkr@
s
��c@sdeZdZddd�Zdd�Zejdkr,dd�Zdd	�Zd
d�Zdd
�Z	dd�dd�Z
dd�dd�ZdS)�
PythonSymlinkNcCs@|ptj�t�|_g|_tj�tj�|_	g|_
d|_|��dSr�)
r�r�r�r�link�_linkedrNr�rI�real�
_also_link�_env�_platform_specific)rvr�rjrjrkr�'
szPythonSymlink.__init__cCsdSr�rjr�rjrjrkr�1
sz PythonSymlink._platform_specificrDc
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)rdr�rjrjrk�
<dictcomp>J
sz4PythonSymlink._platform_specific.<locals>.<dictcomp>Z
PYTHONHOMETZ
PYTHONPATH)�_winapir�r��lexistsr�r\ZGetModuleFileNamer�Z	dllhandler�r�r�r�r��basename�glob�escaper�r�rZis_python_buildr�)rvr�rZsrc_dirZdest_dirZruntimerjrjrkr�5
s&��
cCsJt�|j|j�|j�|j�|jD] \}}t�||�|j�|�q$|Sr�)r�r�r�r�r�r�r�)rvr�r�rjrjrkr�O
szPythonSymlink.__enter__cCsV|jD]J}zt�|�Wqtk
rN}ztr>td�||��W5d}~XYqXqdS)Nzfailed to clean up {}: {})r�r�r��IOErrorrr�r)rv�exc_type�	exc_value�exc_tbr��exrjrjrkr�W
s
zPythonSymlink.__exit__cCsp|f|�}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}))rGrH�PIPE�communicate�
returncoderr��reprr�r��RuntimeErrorr)rvZpythonrwr�r��cmdr�rErjrjrk�_call_
s

�

�zPythonSymlink._callr)r�cGs|�|j|d|�Sr�)r�r��rvr�rwrjrjrk�	call_reall
szPythonSymlink.call_realcGs|�|j||j|�Sr�)r�r�r�r�rjrjrk�	call_linko
szPythonSymlink.call_link)N)rgrhrir�r�r�r�r�r�r�r�r�rjrjrjrkr�%
s



r�c	Cs�tdk	rtSttd�sd}n�t��}tj|d�\}}z�t	td���}z`t�
|dd�t�
|dd�t�
|��dd�t�
�}t�d	|�}|dkp�t|�d
��dk}Wntk
r�d}YnXW5QRXW5tt�t|�t|�X|a|S)N�setxattrF��dirrhs	user.testr�strusted.foos42z
2.6.(\d{1,2})r�')�
_can_xattrr�r�rLrM�mkstemprrr�r_r�rir�rr�r�rr;r�)r�Ztmp_dirZtmp_fpZtmp_name�fpZkernel_versionr3rjrjrk�	can_xattrt
s,

r�cCs t�}d}|r|St�|�|�S)Nz(no non-broken extended attribute support)r�r�rr�rjrjrkr9�
scCs$tpt}d}|r|St�|�|�S)Nz#Not run for (non-extended) PGO task)r`�PGO_EXTENDEDr�rr�rjrjrk�skip_if_pgo_task�
s
r�cCs�ttd�st�d�|�Stdkr�td}t�tj��P}z>z|�|�daWn&t	k
rp}z|aW5d}~XYnXW5t|�XW5QRXtr�dt}t�|�|�S|SdS)N�AF_UNIXzNo UNIX SocketsZcan_bind_unix_socketFz%Requires a functional unix bind(): %s)
r�r)r�r�_bind_nix_socket_errorrr�rr5r�)ryr�r7rr�rjrjrkr?�
s

c
Csxtj|d��b}|j}|��}||kr,|��}ztj�||�WW5QR�Stk
rhYW5QR�dSXW5QRXdS)Nr�F)	rL�NamedTemporaryFiler�r�r<r�r��samefiler�)Z	directory�base�	base_pathZ	case_pathrjrjrkr�
srqcCs>tt|��tt|��}|r(|t|�8}tdd�|D��}|S)Ncss&|]}|�d�r|�d�r|VqdS)�_�__N)r��endswith)rdr3rjrjrk�	<genexpr>�
s

�z&detect_api_mismatch.<locals>.<genexpr>)r�r�)Zref_apiZ	other_apirlZ
missing_itemsrjrjrkr=�
s
cCs�|dkr|jf}nt|t�r"|f}t|�}t|�D]R}|�d�s2||krJq2t||�}t|dd�|kszt|d�s2t|tj	�s2|�
|�q2|�|j|�dS)Nrrh)
rgr�r�r�r�r�r�r��types�
ModuleType�addZassertCountEqual�__all__)Z	test_caser�Zname_of_module�extraZ	blacklistZexpectedr�r�rjrjrkr>�
s )


�
�cCs�zddl}Wntk
r"YdSX|�|j|jB|jB|jB�t|d�r�|j|j	|j
fD]2}|r�|�||j�|�
||j�q\|�|d�q\dS)Nr�CrtSetReportMode)�msvcrtr��SetErrorModeZSEM_FAILCRITICALERRORSZSEM_NOALIGNMENTFAULTEXCEPT�SEM_NOGPFAULTERRORBOXZSEM_NOOPENFILEERRORBOXr��CRT_WARN�	CRT_ERROR�
CRT_ASSERTr	�CRTDBG_MODE_FILE�CrtSetReportFile�CRTDBG_FILE_STDERR)rr
r3rjrjrk�suppress_msvcrt_assertss"���
rc@s$eZdZdZdZdd�Zdd�ZdS)r]Nc	CsVtj�d�r�zddl}Wntk
r.YdSX|�|j�|_|�|j|jB�t|d�r�i|_	|j
|j|jfD].}|�
||j�}|�||j�}||f|j	|<qpn�tdk	r�z*t�tj�|_t�tjd|jdf�Wnttfk
r�YnXtjdk�rRdddd	g}tj|tjtjd
�}|�|��d}W5QRX|��dk�rRtd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)�endrF)r�r�r�r
r�rr�	old_valuer��	old_modesr
rrr	rrrr
Z	getrlimit�RLIMIT_CORE�	setrlimitrr�rGrHr�r�r�r�)rvr
�report_type�old_mode�old_filer��procr�rjrjrkr�*sZ
�������zSuppressCrashReport.__enter__c	Gs�|jdkrdStj�d�rfddl}|�|j�|jr�|j��D]$\}\}}|�||�|�	||�q>n6t
dk	r�zt
�t
j|j�Wnt
tfk
r�YnXdS)Nr�r)rr�r�r�r
rrr�r	rr
rrrr�)rvr�r
rrrrjrjrkr�hs
zSuppressCrashReport.__exit__)rgrhrirrr�r�rjrjrjrkr]!s>c	srt���d�z�j��Wn$ttfk
r@t��d��YnXd�����fdd�}|�|�t��|�dS)NFTcs �rt����n
t���dSr�)rr�rj�Z
attr_is_local�	attr_name�object_to_patchrrjrk�cleanup�szpatch.<locals>.cleanup)r�r�r�r�Z
addCleanupr)Z
test_instancerrZ	new_valuer rjrrk�patch}s


r!cCsFzddl}Wntk
r YnX|��r4t�d��ddl}|�|�S)NrzUrun_in_subinterp() cannot be used if tracemalloc module is tracing memory allocations)�tracemallocr��
is_tracingr�r�r�run_in_subinterp)r�r"rrjrjrkr$�s
r$csHG��fdd�d|�}d�|||���|�tt��t�|���dS)NcseZdZ��fdd�ZdS)z%check_free_after_iterating.<locals>.Acs*d�zt��Wntk
r$YnXdSrk)�next�
StopIterationr���done�itrjrk�__del__�s
z-check_free_after_iterating.<locals>.A.__del__N)rgrhrir*rjr'rjrk�A�sr+F)ZassertRaisesr&r%r�r})ryr�r�rwr+rjr'rk�check_free_after_iterating�s	r,cCsxddlm}m}m}|��}|�|�|jD]F}|r>||kr>q,t||�}|rNn|sTq,|�|d�dkr,|dSq,dS)Nr)�	ccompilerr�spawn)	Z	distutilsr-rr.Znew_compilerZcustomize_compilerZexecutablesr�Zfind_executable)Z	cmd_namesr-rr.Zcompilerr�r�rjrjrkra�s	


cCs@d}tr6||kr6tdkr.t�ddg���dkatr6|}t�|�S)Ng�h㈵��>Zgetpropzro.kernel.qemu�1)rC�_is_android_emulatorrG�check_outputr�r�rF)�intervalZminimum_intervalrjrjrkrF�s��c
cs>tj��}t��}zt��dVW5|r8tj|dd�XdS)NT)r�Zall_threads)r�r�rir��
is_enabledrr
)rcr3rjrjrk�disable_faulthandler�s

r4c	Csvtj�d�r:zt�d�}t|�dWStk
r8YnXd}ttd�rlzt�d�}Wnt	k
rjYnXd}tjdkr�zddl
}|jWntt
fk
r�Yn,Xi}|j|j|jfD]}|�|d�||<q�zld}t|�D]Z}zt�|�}Wn4t	k
�r$}z|jtjk�r�W5d}~XYq�Xt�|�|d7}q�W5|dk	�rp|j|j|jfD]}|�|||��qXX|S)	N)�linuxZfreebsdz
/proc/self/fdr��sysconf�SC_OPEN_MAXrDr)r�r�r�r�r�r�r�r�r7r�r
r	r�r�r
rrr��dupr��EBADFr:)	�names�MAXFDrr
rr�rc�fd2rrjrjrkrb�sT



�

�c@s$eZdZdd�Zdd�Zdd�ZdS)�SaveSignalsc	Cs`ddl}||_|��|_dD]8}zt||�}Wntk
rFYqYnX|j�|�qi|_dS)Nr)�SIGKILL�SIGSTOP)�signal�
valid_signals�signalsr�r�r�r�)rvrA�signame�signumrjrjrkr�Bs

zSaveSignals.__init__cCs0|jD]$}|j�|�}|dkr q||j|<qdSr�)rCrA�	getsignalr��rvrE�handlerrjrjrk�saveOs

zSaveSignals.savecCs&|j��D]\}}|j�||�q
dSr�)r�r�rArGrjrjrk�restore[szSaveSignals.restoreN)rgrhrir�rIrJrjrjrjrkr>9s	
r>cCsddl}|jSr�)rZ
WITH_PYMALLOC)rrjrjrk�
with_pymalloc`srKc@s$eZdZdd�Zdd�Zdd�ZdS)�FakePathcCs
||_dSr�r�)rvr�rjrjrkr�hszFakePath.__init__cCsd|j�d�S)Nz
<FakePath �>r�r�rjrjrk�__repr__kszFakePath.__repr__cCs6t|jt�s$t|jt�r,t|jt�r,|j�n|jSdSr�)r�r��
BaseExceptionrr~r�rjrjrk�
__fspath__ns
�
�zFakePath.__fspath__N)rgrhrir�rNrPrjrjrjrkrLesrLc@seZdZdd�Zdd�ZdS)�
_ALWAYS_EQcCsdSrkrj�rv�otherrjrjrk�__eq__{sz_ALWAYS_EQ.__eq__cCsdSr�rjrRrjrjrk�__ne__}sz_ALWAYS_EQ.__ne__N)rgrhrirTrUrjrjrjrkrQwsrQc@seZdZdd�Zdd�ZdS)�_LARGESTcCs
t|t�Sr�)r�rVrRrjrjrkrT�sz_LARGEST.__eq__cCsdSr�rjrRrjrjrk�__lt__�sz_LARGEST.__lt__N)rgrhrirTrWrjrjrjrkrV�srVc@seZdZdd�Zdd�ZdS)�	_SMALLESTcCs
t|t�Sr�)r�rXrRrjrjrkrT�sz_SMALLEST.__eq__cCsdSr�rjrRrjrjrk�__gt__�sz_SMALLEST.__gt__N)rgrhrirTrYrjrjrjrkrX�srXcCstjjSr�)�asyncio�eventsZ_event_loop_policyrjrjrjrk�maybe_get_event_loop_policy�sr\c

Cs�||}}ddl}|����}|��d}t|d�|_|�|�}|d||}||}	||	}
||
}||d|d|||	d|	}t|�t|���fW5QR�SQRXdS)Nrr��r)�decimalZlocalcontext�
bit_lengthr�ZprecZDecimalr:�sqrt)
ZnbinsZnballsr�r�r^�ctx�bitsr]Zp1emptyZ	meanemptyZoccupiedZ
collisions�varrjrjrk�collision_stats�s


(rdc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�catch_unraisable_exceptioncCsd|_d|_dSr�)�
unraisable�	_old_hookr�rjrjrkr��sz#catch_unraisable_exception.__init__cCs
||_dSr�)rf)rvrfrjrjrk�_hook�sz catch_unraisable_exception._hookcCstj|_|jt_|Sr�)r��unraisablehookrgrhr�rjrjrkr��sz$catch_unraisable_exception.__enter__cGs|jt_|`dSr�)rgr�rirf�rv�exc_inforjrjrkr��sz#catch_unraisable_exception.__exit__N�rgrhrir�rhr�r�rjrjrjrkre�srec@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�catch_threading_exceptioncCs"d|_d|_d|_d|_d|_dSr�)r�r��
exc_tracebackr�rgr�rjrjrkr�
s
z"catch_threading_exception.__init__cCs$|j|_|j|_|j|_|j|_dSr�)r�r�rnr�)rvrwrjrjrkrh
szcatch_threading_exception._hookcCstj|_|jt_|Sr�)r��
excepthookrgrhr�rjrjrkr� 
sz#catch_threading_exception.__enter__cGs|jt_|`|`|`|`dSr�)rgr�ror�r�rnr�rjrjrjrkr�%
s
z"catch_threading_exception.__exit__Nrlrjrjrjrkrm�srmc
cs.tjdd�}z
dVW5|tjdd�<XdSr�)rmr�)Zold_filtersrjrjrk�save_restore_warnings_filters-
s
rpc
Csbtd�td�}tjdkr^z|jdd�Wn2tk
r\}zt�d|����W5d}~XYnXdS)N�_multiprocessingzmultiprocessing.synchronizer5)raz broken multiprocessing SemLock: )r
r�r��Lockr�r�r�)�synchronizer�rjrjrk�*skip_if_broken_multiprocessing_synchronize6
s
rtc	cs.t��}zt�|�dVW5t�|�XdSr�)r��get_int_max_str_digits�set_int_max_str_digits)Z
max_digits�currentrjrjrk�adjust_int_max_str_digitsM
s


rx)T)F)rjrjF)F)N)N)NF)F)rWF)N)r�)r�)F)T)N)NN)Nr)r�)r�)N)Nrjrj)F)rj(5rgr�Zasyncio.eventsrZ�collections.abc�collections�
contextlibr�r�r�r|rr�r$r��importlib.utilr$Zlogging.handlersr�rr�r�r�r�r)r�rrGr�rrLr�r�r�rr�Zurllib.errorr�rmZ
testresultrZmultiprocessing.process�multiprocessing�zlibr��bz2�lzmar
r"rrr	r
rr�r�contextmanagerrrrAr
r�r�r;r<rr7rrrr=rirr�rrrr�r�r�r�r�r�r�rr�rr�rr�r r!rr"r#r$r%rGZHOSTv4r>r0r1rIrJrLr?rHrArZ
SOCK_MAX_SIZEZ
skipUnlessr:�
__getformat__r8r:r1r2r3rBr�rCrEr�rrrPZ
TEST_HTTP_URLZFS_NONASCII�	character�fsdecode�fsencode�UnicodeErrorZTESTFN_UNICODE�unicodedata�	normalize�getfilesystemencodingZTESTFN_ENCODINGZTESTFN_UNENCODABLEZgetwindowsversion�encode�UnicodeEncodeErrorr��decode�UnicodeDecodeErrorZTESTFN_UNDECODABLEZTESTFN_NONASCIIrTrr`r�rSrVrrMr�r�r�r�ZTEST_SUPPORT_DIRr[r�r�rrr^rjr&r'rK�objectr�r�rTr�rVrUr�abc�MutableMappingrWr�r(r�r�r)r�r*r+r�r,rrrrr�rrrrrrrr rr#rXr_r6r7r?Z_4GrSr>r\rBr4r5r-rXrYr6r[r\rDrbrcrerjrlrurwrnrpryrvr.r�rZMISSING_C_DOCSTRINGSr,ZHAVE_DOCSTRINGSZrequires_docstringsr/r�r�r�r�rPrQrRr�r�rNrSrZrYr�rZrequires_type_collectingr�r�r�r�rOr[r�rr0r�r@r�r�r�r9r�r�r?rr=r>rr]r!r$r,rar0rFr4rbr>rKrLrQrc�total_orderingrVrdrXrer\�	hash_info�widthZ	NHASHBITSrdrermrprtrxrjrjrjrk�<module>s�






�0
2	
!

J			=%	�
!
�
�

&


2'

 5M
		




$
#


0





!
����



"

#
�	"N
�;\";'	
	
	
",9