Your IP : 3.22.27.192


Current Path : /opt/alt/python37/lib64/python3.7/test/support/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib64/python3.7/test/support/__pycache__/__init__.cpython-37.opt-2.pyc

B

 f���]@s@
edkred��ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl!Z"ddl#Z#ddl$m%Z%yddl&Z'Wnek
�r:dZ'YnXyddl(Z(Wnek
�rbdZ(YnXyddl)Z)Wnek
�r�dZ)YnXyddl*Z*Wnek
�r�dZ*YnXyddl+Z+Wnek
�r�dZ+YnXyddl,Z,Wnek
�rdZ,YnXdddd	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`dadbg]Z-Gdcd�de.�Z/Gddd�de/�Z0Gded
�d
e/�Z1Gdfd�de j2�Z3ej4�dedhdi��Z5�dfdkdl�dmd�Z6dndo�Z7dpdq�Z8drd;�Z9dsd<�Z:�dgdtd�Z;dud7�Z<dZ=dZ>da?da@dZAdjZBdaCdvd�ZDdwd�ZEdxd�ZFdydz�ZGej�Hd{��rԐdhd|d}�ZId~d�ZJd�d��ZKd�d��ZLd�d��ZMnejNZJejOZKd�d��ZLd�d��ZMd�d�ZNd�d��ZOd�d�ZPd�d��ZQd�d�ZRd�d��ZSd�d"�ZT�did�d#�ZUd�d��ZVd�d$�ZWd�d%�ZXd�d&�ZYd�ZZd�Z[d�Z\ej]ej^fd�dG�Z_eZfd�dH�Z`d�dJ�Zad�d��Zbeb�Zcd�d��Zdd�Zed�Zfe �geh�id���Hd��d��Zje �ge(d��Zke �ge)d��Zle �ge*d��Zme �ge+d��Znej�Hd��Zoeped��Zqejd�k�req�rd�nd�ZrndZrejsd�k�r4d�Ztnd�Ztd��uete�v��Ztd�ZwdZxxJd�D]BZyye�ze�{ey��eyk�rve|�Wne|k
�r�YnXeyZxP�qVWetd�Z}ejd�k�r�ddl~Z~e~�d�e}�Z}e���Z�dZ�ejsd�k�r0e���jd�k�rretd�Z�ye���e��Wne�k
�rYnXe�d�e�e�f�dZ�nBejd�k�rryd���e��Wn&e�k
�rpetd���e�d��Z�YnXdZ�xDd�D]<Zsyes��e��Wn&e�k
�r�e�{et�esZ�PYnX�q|Wex�r�etd�exZ�ndZ�e���Z�djZ�ej4�djd�d„�Z�ej4�dkd�dĄ�Z�ej4�dld�d��Z�epedǃ�r0ej4d�dK��Z�ej���ej���e���Z�ej���e��Z�ej���e�dɡZ��dmd�d�Z�d�d�Z�d�d[�Z�d�d΄Z�dddϜd�d'�Z�d�dI�Z�Gd�dӄd�e��Z��dnd�dՄZ�ej4d�dR��Z�ej4d�dS��Z�Gd�d�de��Z�Gd�dT�dTej�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�ej4d�dkd�d�d,��Z�ej4d�d��Z�d�d�Z�d�d�Z�d�d�Z�d�d�Z�ej4d�d��Z�d�d�Z�d�Z�d�Z�eped��r�d�e�Z�d�Z�e�d�Z�d�d��Z�d�d��Z�d�Z�d�Z�d�d��Z�d�dU�Z�d�d\�Z�d�Z�d�e�Z�d�e�ZƐde�Z�ej�ZɐddY�Z�G�d�d��d�Zːdo�dd4�Z̐dd5�Z�G�dd-�d-�Zΐd�d�Zϐd	�d
�ZАdd6�Zѐdp�d�d
�ZҐd�d�ZӐddB�ZԐd�d�ZՐd�d�Z֐d�d�Zאd�d�Z�da�da�daېd�d�Zܐd�d�Zݐdq�d�d�Zސd�d �Zߐd!d.�Z�d"�d#�Z�eԃ�
oRejd�k�
oRe��d$�Z�e�j�dk	�
ode�Z�e �ge�d%�Z�dr�d&d/�Z�d'�d(�Z�d)�d*�Z�dja�d+dN�Z�d,dO�Z�d-dP�Z�ej4�ds�d/�d0��Z�dt�d1�d2�Z�d3dL�Z�ej4�du�d4dQ��Z�ej4�d5dW��Z�ej4�d6dV��Z�d7�d8�Z�e ��epe�d9��d:�Z��d;�d<�Z��d=�d>�Z�G�d?dM�dMej�j��Z�G�d@dX�dXe��Z�da��dAd �Z��dBd0�Z�d�a�dC�dD��Z�dEd9��Zd�a�dFd?��Z�dGd!��Zdk�dH��dId=��Z�dv�dJd>��ZG�dKdZ�dZ��Z�dL�dM��Z	�dN�dO��Z
�dw�dP�dQ��Zgf�dRd^��Zd�a
�dSdD��Zej4�dT�dU���Z�dVd_��ZG�dW�dX��dX��Z�dY�dZ��ZG�d[�d\��d\��ZG�d]�d^��d^��Z�e��Ze	�jG�d_�d`��d`���Z�e��Ze	�jG�da�db��db���Z�e��Zej4�dc�dd���ZdS(xz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�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�	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�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__�rdrd�:/opt/alt/python37/lib64/python3.7/test/support/__init__.pyr	ssc@seZdZdS)r
N)rarbrcrdrdrdrer
vsc@seZdZdS)rN)rarbrcrdrdrdrerysc@seZdZdS)rN)rarbrcrdrdrdrer|sTc	cs8|r.t���t�ddt�dVWdQRXndVdS)N�ignorez.+ (module|package))�warnings�catch_warnings�filterwarnings�DeprecationWarning)rfrdrdre�_ignore_deprecated_imports�s
rkFrd)�required_oncCsft|��Ty
t�|�Stk
rV}z$tj�t|��r8�t�	t
|���Wdd}~XYnXWdQRXdS)N)rk�	importlibr
�ImportError�sys�platform�
startswith�tuple�unittest�SkipTest�str)�name�
deprecatedrl�msgrdrdrer
�s	

cCs^|tjkrt|�tj|=x>ttj�D]0}||ks@|�|d�r&tj|||<tj|=q&WdS)N�.)ro�modules�
__import__�listrq)rv�orig_modules�modnamerdrdre�_save_and_remove_module�s
rcCs>d}ytj|||<Wntk
r.d}YnXdtj|<|S)NTF)rorz�KeyError)rvr}Zsavedrdrdre�_save_and_block_module�s

r�cCs|r
tjSdd�S)NcSs|S)Nrd)�frdrdre�<lambda>��z$anticipate_failure.<locals>.<lambda>)rsZexpectedFailure)Z	conditionrdrdrer9�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_testsrdrdrer:�s
cCs�t|���i}g}t||�zfyHx|D]}t||�q&Wx |D]}t||�s>|�|�q>Wt�|�}Wntk
r~d}YnXWdx|��D]\}	}
|
tj	|	<q�Wx|D]}tj	|=q�WX|SQRXdS)N)
rkrr��appendrmr
rn�itemsrorz)rvZfreshZblockedrwr}Znames_to_removeZ
fresh_nameZblocked_nameZfresh_moduleZ	orig_name�moduleZname_to_removerdrdrer�s$





cCs>yt||�}Wn&tk
r4t�d||f��YnX|SdS)Nzobject %r has no attribute %r)�getattr�AttributeErrorrsrt)�objrvZ	attributerdrdrer5s
cCs|adS)N)�_original_stdout)�stdoutrdrdrer'scCs
tptjS)N)r�ror�rdrdrdrer+scCs&ytj|=Wntk
r YnXdS)N)rorzr�)rvrdrdrer.sc
Gspy||�Stk
rj}zDtdkrHtd|jj|f�td|j|f�t�|tj�||�Sd}~XYnXdS)N�z%s: %szre-run %s%r)	�OSErrorr�print�	__class__rar��chmod�stat�S_IRWXU)r��func�args�errrdrdre�
_force_run4sr��wincCs�||�|r|}ntj�|�\}}|p(d}d}x>|dkrlt�|�}|rL|sXn||ksXdSt�|�|d9}q0Wtjd|tdd�dS)Nryg����MbP?g�?r�z)tests may fail, delete still pending for �)�
stacklevel)	r�r��split�listdir�time�sleeprg�warn�RuntimeWarning)r��pathname�waitallr�rv�timeout�Lrdrdre�_waitfor?s



r�cCsttj|�dS)N)r�r�r)�filenamerdrdre�_unlink`sr�cCsttj|�dS)N)r�r��rmdir)r�rdrdre�_rmdircsr�cs,�fdd��t�|dd�tdd�|�dS)Ncs�x�t|tj|�D]�}tj�||�}yt�|�j}Wn<tk
rn}ztd||ft	j
d�d}Wdd}~XYnXt�|�r�t
�|dd�t|tj|�qt|tj|�qWdS)Nz-support.rmtree(): os.lstat(%r) failed with %s)�filerT)r�)r�r�r�r��join�lstat�st_moder�r�ro�
__stderr__r��S_ISDIRr�r�r)r�rv�fullname�mode�exc)�
_rmtree_innerrdrer�gs

z_rmtree.<locals>._rmtree_innerT)r�cSst|tj|�S)N)r�r�r�)�prdrdrer�vr�z_rmtree.<locals>.<lambda>)r�)r�rd)r�re�_rmtreefsr�cCs^yddl}Wntk
r Yn:X|�t|�d�}|jj�||t|��}|rZ|d|�S|S)Nrr�)�ctypesrnZcreate_unicode_buffer�len�windll�kernel32ZGetLongPathNameW)r�r��buffer�lengthrdrdre�	_longpathxs
r�csFyt�|�dStk
r"YnX�fdd���|�t�|�dS)Nc	s�x~t|tj|�D]l}tj�||�}yt�|�j}Wntk
rJd}YnXt�	|�rn�|�t|tj
|�qt|tj|�qWdS)Nr)r�r�r�r�r�r�r�r�r�r�r�r)r�rvr�r�)r�rdrer��s

z_rmtree.<locals>._rmtree_inner)�shutilrr�r�r�)r�rd)r�rer��s
cCs|S)Nrd)r�rdrdrer��sc	Cs*yt|�Wnttfk
r$YnXdS)N)r��FileNotFoundError�NotADirectoryError)r�rdrdrer�scCs&yt|�Wntk
r YnXdS)N)r�r�)r�rdrdrer��sr�cCs&yt|�Wntk
r YnXdS)N)r�r�)r�rdrdrer�scCsBtj�|�}tj�tj�|��}tj�||d�}t�||�|S)N�c)	rm�util�cache_from_sourcer�r�r��abspathr��rename)�sourceZpyc_fileZup_oneZ
legacy_pycrdrdre�make_legacy_pyc�s
r�cCs\t|�xNtjD]D}tj�||d�}t|d�x dD]}ttjj||d��q8WqWdS)Nz.pyr�)�rr�)�optimization)	rror�r�r�rrmr�r�)r~r�r��optrdrdrer�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�y.ddlm}|�}|��|� �|�!�Wn\t"k
�r�}z<t#|�}t$|�dk�r�|dd�d}d�%t&|�j'|�}Wdd}~XYnX|t_(|t_tjS)N�resultr�rrcs.eZdZd�jjfd�jjfd�jjfgZdS)z*_is_gui_available.<locals>.USEROBJECTFLAGSZfInheritZ	fReserved�dwFlagsN)rarbrc�wintypesZBOOL�DWORD�_fields_rd)r�rdre�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)rarbrcr�rd)r�rdre�ProcessSerialNumber�sr�z#cannot run without OS X gui process)�Tk�2z [...]zTk unavailable due to {}: {}))�hasattr�_is_gui_availabler�rorprqr�Zctypes.wintypesr�r�Zuser32ZGetProcessWindowStationZWinErrorr�r�ZGetUserObjectInformationWZbyrefZsizeof�boolr�r�r�r�Zctypes.utilr�ZLoadLibraryZCGMainDisplayIDZGetCurrentProcessZSetFrontProcessZtkinterr�Zwithdraw�updateZdestroy�	Exceptionrur��format�typera�reason)r�Z	UOI_FLAGSZWSF_VISIBLEr�Zdll�hZuofZneededZresr�r�r�r�Zapp_servicesr�ZpsnZpsn_pr��root�eZ
err_stringrd)r�r�rer��sh

r�cCstdkp|tkS)N)r)�resourcerdrdrer scCs<t|�s |dkrd|}t|��|dkr8t�s8ttj��dS)Nz"Use of the %r resource not enabled�gui)r rr�r�)r�rxrdrdrer!#scCs�ddl}d�tt|��}|���dd�d}|��|krtyttt|�d���}Wnt	k
rhd}YqxX||k}nd}t
�||�d|�d|���S)Nrry�-rFz	 version z or higher required, not )rpr��mapru�releaser��systemrr�int�
ValueErrorrs�skipIf)�sysname�min_versionrp�min_version_txt�version_txt�version�skiprdrdre�_requires_unix_version,s

r�cGs
td|�S)NZFreeBSD)r�)r�rdrdrer"GscGs
td|�S)NZLinux)r�)r�rdrdrer#Pscs�fdd�}|S)Ncs"t�����fdd��}�|_|S)Ncsxtjdkrnt��d}yttt|�d���}Wntk
rBYn,X|�krnd�tt	���}t
�d||f���||�S)Nr�rryz&Mac OS X %s or higher required, not %s)rorpZmac_verrrr�r�r�r�r�rursrt)r��kwr�r�r�)r�r�rdre�wrapperas
z4requires_mac_ver.<locals>.decorator.<locals>.wrapper)�	functools�wrapsr�)r�r�)r�)r�re�	decorator`sz#requires_mac_ver.<locals>.decoratorrd)r�r�rd)r�rer$YsZ	localhostz	127.0.0.1z::1cCs"t�||�}t|�}|��~|S)N)�socketrF�close)�familyZsocktypeZtempsock�portrdrdrerEzs
8cCs�|jtjkr�|jtjkr�ttd�r>|�tjtj�dkr>t	d��ttd�r�dt
jkr�y |�tjtj�dkrpt	d��Wnt
k
r�YnXttd�r�|�tjtjd�|�|df�|��d}|S)	N�SO_REUSEADDRrzHtests should never set the SO_REUSEADDR socket option on TCP/IP sockets!�SO_REUSEPORTZWITHIN_PYTHON_RPM_BUILDzHtests should never set the SO_REUSEPORT socket option on TCP/IP sockets!�SO_EXCLUSIVEADDRUSEr)rr��AF_INETr��SOCK_STREAMr�Z
getsockoptZ
SOL_SOCKETrr
r��environrr�Z
setsockoptr�bindZgetsockname)�sockZhostrrdrdrerF�s 



cCs:y|�|�Wn&tk
r4|��t�d��YnXdS)Nzcannot bind AF_UNIX sockets)r	�PermissionErrorrrsrt)r
ZaddrrdrdrerH�s
cCsZtjrVd}z<y"t�tjtj�}|�tdf�dStk
rBYnXWd|rT|��XdS)NrTF)r�Zhas_ipv6ZAF_INET6rr	�HOSTv6r�r)r
rdrdre�_is_ipv6_enabled�s

r
cst����fdd��}|S)Nc
sNy�||�Wn:tk
rH}zdt|�kr6t�d���Wdd}~XYnXdS)NZCERTIFICATE_VERIFY_FAILEDz.system does not contain necessary certificates)r�rursrt)r��kwargsr�)r�rdre�dec�s
z&system_must_validate_cert.<locals>.dec)r�r�)r�rrd)r�re�system_must_validate_cert�s	ri@iZdoubleZIEEEztest requires IEEE 754 doublesz
requires zlibz
requires gzipzrequires bz2z
requires lzma�javaZgetandroidapilevel�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�rs���s�s��r�c
cs�d}|dkr&t��}d}tj�|�}nXyt�|�d}WnDtk
r|}z&|sP�tjd|�d|��t	dd�Wdd}~XYnX|r�t�
�}z
|VWd|r�|t�
�kr�t|�XdS)NFTz5tests may fail, unable to create temporary directory z: �)r�)�tempfile�mkdtempr�r��realpath�mkdirr�rgr�r��getpidr)r��quietZdir_createdr��pidrdrdre�temp_dir�s&

r c
cs|t��}yt�|�WnDtk
rZ}z&|s.�tjd|�d|��tdd�Wdd}~XYnXzt��VWdt�|�XdS)NzBtests may fail, unable to change the current working directory to z: r)r�)r��getcwd�chdirr�rgr�r�)r�rZ	saved_dirr�rdrdre�
change_cwd�s
r#�tempcwdc
cs:t||d��$}t||d��}|VWdQRXWdQRXdS)N)r�r)r)r r#)rvrZ	temp_pathZcwd_dirrdrdrers�umaskc	cs&t�|�}z
dVWdt�|�XdS)N)r�r%)r%ZoldmaskrdrdrerIs

�datacCsbtj�|�r|S|dk	r&tj�||�}tgtj}x*|D]"}tj�||�}tj�|�r8|Sq8W|S)N)r�r��isabsr��
TEST_HOME_DIRro�exists)r�Zsubdirr�Zdn�fnrdrdrer%s
cCs(t�|tjtjBtjB�}t�|�dS)N)r��open�O_WRONLY�O_CREAT�O_TRUNCr)r��fdrdrdrer7scCs,t|���}dd�|D�}d�|�}d|S)NcSsg|]}d|�qS)z%r: %rrd)�.0Zpairrdrdre�
<listcomp>?szsortdict.<locals>.<listcomp>z, z{%s})�sortedr�r�)�dictr�Z	reprpairsZ
withcommasrdrdrerY<s
cCs*ttd�}z|��S|��tt�XdS)N�wb)r+r�filenorr)r�rdrdre�make_bad_fdCs

r6)�lineno�offsetc	Csp|�t��}t|dd�WdQRX|j}|�|j�|dk	rJ|�|j|�|�|j�|dk	rl|�|j|�dS)Nz
<test string>�exec)�assertRaises�SyntaxError�compileZ	exceptionZassertIsNotNoner7�assertEqualr8)�testcaseZ	statementr7r8�cmr�rdrdrer%Osc	sTddl}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��,}	|��}
x|
�r|	�|
�|��}
q�WWdQRXWd|��X||�}|dk	�rD|Std|��dS)Nr�checkr��/���cs>t|f����}�dkr|S�|�r2|�d�|S|��dS)Nr)r+�seekr)r*r�)r�r@r�rdre�check_valid_filecs
z*open_urlresource.<locals>.check_valid_fileZurlfetchz	fetching %s ...)r�)zAccept-Encoding�gzip�)r�zContent-EncodingrE)Zfileobjr4zinvalid resource %r)Zurllib.requestZurllib.parse�pop�parseZurlparser�r�r�r��
TEST_DATA_DIRr)rr!rr�rZrequestZbuild_openerrEZ
addheadersr�r+Zheaders�getZGzipFile�read�writerr
)Zurlr�r��urllibr�r*rDr��opener�out�srd)r�r@r�rerGZs<	



c@s0eZdZdd�Zdd�Zedd��Zdd�Zd	S)
�WarningsRecordercCs||_d|_dS)Nr)�	_warnings�_last)�selfZ
warnings_listrdrdre�__init__�szWarningsRecorder.__init__cCsDt|j�|jkr t|jd|�S|tjjkr0dStd||f��dS)NrBz%r has no attribute %r)r�rRrSr�rg�WarningMessage�_WARNING_DETAILSr�)rT�attrrdrdre�__getattr__�s
zWarningsRecorder.__getattr__cCs|j|jd�S)N)rRrS)rTrdrdrerg�szWarningsRecorder.warningscCst|j�|_dS)N)r�rRrS)rTrdrdre�reset�szWarningsRecorder.resetN)rarbrcrUrY�propertyrgrZrdrdrdrerQ�srQc	cst�d�}|j�d�}|r"|��tjdd�� }tjd�d�t	|�VWdQRXt
|�}g}xv|D]n\}}d}	xH|dd�D]8}|j}
t�
|t|
�tj�r�t|
j|�r�d}	|�|�q�W|	sf|sf|�||jf�qfW|r�td|d	��|�rtd
|d	��dS)Nr�Z__warningregistry__T)�recordrg�alwaysFzunhandled warning %srz)filter (%r, %s) did not catch any warning)ro�	_getframe�	f_globalsrJ�clearrgrhrz�simplefilterrQr|�message�re�matchru�I�
issubclassr��remover�ra�AssertionError)�filtersr�frame�registry�wZreraise�missingrx�cat�seenZwarningrdrdre�_filterwarnings�s0
rpcOs.|�d�}|s$dtff}|dkr$d}t||�S)Nrr�T)rJ�Warningrp)rirrrdrdrerP�s

c	csBtjdd�� }tjdtd�dVt�WdQRX|�|g�dS)NT)r\r])�category)rgrhri�ResourceWarning�
gc_collectr=)r>ZwarnsrdrdrerQ�s
c@s$eZdZdd�Zdd�Zdd�ZdS)rcGsNtj��|_x<|D]4}|tjkrtj|}|j|kr>tj|j=tj|=qWdS)N)rorz�copy�original_modulesra)rTZmodule_namesZmodule_namer�rdrdrerUs




zCleanImport.__init__cCs|S)Nrd)rTrdrdre�	__enter__szCleanImport.__enter__cGstj�|j�dS)N)rorzr�rv)rT�
ignore_excrdrdre�__exit__szCleanImport.__exit__N)rarbrcrUrwryrdrdrdrer�s
c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)rRcCstj|_i|_dS)N)r�r�_environ�_changed)rTrdrdrerUszEnvironmentVarGuard.__init__cCs
|j|S)N)rz)rT�envvarrdrdre�__getitem__ szEnvironmentVarGuard.__getitem__cCs*||jkr|j�|�|j|<||j|<dS)N)r{rzrJ)rTr|�valuerdrdre�__setitem__#s
zEnvironmentVarGuard.__setitem__cCs2||jkr|j�|�|j|<||jkr.|j|=dS)N)r{rzrJ)rTr|rdrdre�__delitem__)s

zEnvironmentVarGuard.__delitem__cCs
|j��S)N)rz�keys)rTrdrdrer�0szEnvironmentVarGuard.keyscCs
t|j�S)N)�iterrz)rTrdrdre�__iter__3szEnvironmentVarGuard.__iter__cCs
t|j�S)N)r�rz)rTrdrdre�__len__6szEnvironmentVarGuard.__len__cCs|||<dS)Nrd)rTr|r~rdrdre�set9szEnvironmentVarGuard.setcCs
||=dS)Nrd)rTr|rdrdre�unset<szEnvironmentVarGuard.unsetcCs|S)Nrd)rTrdrdrerw?szEnvironmentVarGuard.__enter__cGsJx<|j��D].\}}|dkr0||jkr:|j|=q||j|<qW|jt_dS)N)r{r�rzr�r)rTrx�k�vrdrdreryBs

zEnvironmentVarGuard.__exit__N)rarbrcrUr}rr�r�r�r�r�r�rwryrdrdrdrerRsc@s$eZdZdd�Zdd�Zdd�ZdS)�
DirsOnSysPathcGs(tjdd�|_tj|_tj�|�dS)N)ror��original_value�original_object�extend)rT�pathsrdrdrerUXszDirsOnSysPath.__init__cCs|S)Nrd)rTrdrdrerw]szDirsOnSysPath.__enter__cGs|jt_|jtjdd�<dS)N)r�ror�r�)rTrxrdrdrery`szDirsOnSysPath.__exit__N)rarbrcrUrwryrdrdrdrer�Lsr�c@s&eZdZdd�Zdd�Zddd�ZdS)	r&cKs||_||_dS)N)r��attrs)rTr�rrdrdrerUjszTransientResource.__init__cCs|S)Nrd)rTrdrdrerwnszTransientResource.__enter__NcCsT|dk	rPt|j|�rPx:|j��D]$\}}t||�s4Pt||�|kr Pq Wtd��dS)Nz%an optional resource is not available)rfr�r�r�r�r�r)rTZtype_r~�	tracebackrXZ
attr_valuerdrdreryqs
zTransientResource.__exit__)NNN)rarbrcrUrwryrdrdrdrer&es)�errnocCsNtjg}ttd�r|�tj�ttd�r4|�tj�ttd�rJ|�tj�|S)N�ENETUNREACH�
EADDRNOTAVAIL�EHOSTUNREACH)r��ECONNREFUSEDr�r�r�r�r�)�errorsrdrdre�get_socket_conn_refused_errs�s


r��>@)r��errnosc	
#slddddddg}ddd	d
dg}td|��|�g��sRd
d�|D��dd�|D�����fdd�}t��}z�y|dk	r�t�|�dVWn�tjk
r�}z$tr�tj�	�j
dd��|�Wdd}~XYn�tk
�rV}zlx\|j
}t|�dk�rt
|dt��r|d}q�t|�dk�r6t
|dt��r6|d}q�Pq�W||��Wdd}~XYnXWdt�|�XdS)N)r��o)�
ECONNRESET�h)r��q)r��e)�	ETIMEDOUT�n)r��c)Z	EAI_AGAIN���)ZEAI_FAIL���)Z
EAI_NONAME���)Z
EAI_NODATA���)Z
WSANO_DATAi�*zResource %r is not availablecSsg|]\}}tt||��qSrd)r�r�)r0rv�numrdrdrer1�sz&transient_internet.<locals>.<listcomp>cSsg|]\}}tt||��qSrd)r�r�)r0rvr�rdrdrer1�scs�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�ZgaierrorrM�errorZ	HTTPError�codeZURLErrorr�rro�stderrrLr�)r��n)�captured_errnos�denied�
gai_errnosrdre�filter_error�s


z(transient_internet.<locals>.filter_errorrr�rr�)rr�ZgetdefaulttimeoutZsetdefaulttimeout�nntplibZNNTPTemporaryErrorrror�rLr�r�r�r�)	Z
resource_namer�r�Zdefault_errnosZdefault_gai_errnosr�Zold_timeoutr��ard)r�r�r�rer*�sP



c
csFddl}tt|�}tt||���ztt|�VWdtt||�XdS)Nr)�ior�ro�setattr�StringIO)Zstream_namer�Zorig_stdoutrdrdre�captured_output�s
r�cCstd�S)Nr�)r�rdrdrdrer�scCstd�S)Nr�)r�rdrdrdrer�scCstd�S)N�stdin)r�rdrdrdrers
cCs*t��trt�d�t��t��dS)Ng�������?)�gcZcollectr>r�r�rdrdrdrerts


rtccs.t��}t��z
dVWd|r(t��XdS)N)r�Z	isenabled�disable�enable)Zhave_gcrdrdre�
disable_gc"s
r�cCs:t�d�pd}d}x|��D]}|�d�r|}qW|dkS)NZ	PY_CFLAGSr�z-O)r�z-O0z-Og)�	sysconfig�get_config_varr�rq)ZcflagsZ	final_optr�rdrdre�python_is_optimized-s
r�ZnPZ0nZgettotalrefcountZ2PZ0Pr�cCst�t|t�S)N)�struct�calcsize�_header�_align)�fmtrdrdre�calcobjsize>sr�cCst�t|t�S)N)r�r��_vheaderr�)r�rdrdre�calcvobjsizeAsr�i@icCspddl}t�|�}t|�tkr(|jt@sBt|�tkrLt|�jt@rL||j7}dt|�||f}|�|||�dS)Nrz&wrong size for %s: got %d, expected %d)	�	_testcapiro�	getsizeofr��	__flags__�_TPFLAGS_HEAPTYPE�_TPFLAGS_HAVE_GCZSIZEOF_PYGC_HEADr=)�test�o�sizer�r�rxrdrdre�check_sizeofHs

r�cs��fdd�}|S)Ncs$���fdd�}�j|_�j|_|S)Nc
s�y ddl}t|��}|�|�}Wn(tk
r6�YnBd}}Yn0Xx,�D]$}y|�||�PWqPYqPXqPWz
�||�S|r�|r�|�||�XdS)Nr)�localer��	setlocaler�)r��kwdsr�rrZorig_locale�loc)�catstrr��localesrdre�innerYs$



z1run_with_locale.<locals>.decorator.<locals>.inner)ra�__doc__)r�r�)r�r�)r�rer�Xsz"run_with_locale.<locals>.decoratorrd)r�r�r�rd)r�r�rerSWscs�fdd�}|S)Ncs"��fdd�}�j|_�j|_|S)Nc	s�y
tj}Wntk
r(t�d��YnXdtjkr@tjd}nd}�tjd<|�z
�||�S|dkrrtjd=n
|tjd<t��XdS)Nztzset requiredZTZ)r��tzsetr�rsrtr�r)r�r�r�Zorig_tz)r��tzrdrer�}s





z-run_with_tz.<locals>.decorator.<locals>.inner)rar�)r�r�)r�)r�rer�|szrun_with_tz.<locals>.decoratorrd)r�r�rd)r�rerZ{siir�cCs�dttdtd�}t�d|tjtjB�}|dkr>td|f��tt|�	d��||�	d��
��}|a|tkrrt}|t
dkr�td|f��|adS)Ni)r��m�g�tz(\d+(\.\d+)?) (K|M|G|T)b?$zInvalid memory limit %rrrz$Memory limit %r too low to be useful)�_1M�_1Grcrd�
IGNORECASE�VERBOSEr�r��float�group�lower�real_max_memuse�MAX_Py_ssize_t�_2Gr)�limitZsizesr�ZmemlimitrdrdrerW�s$c@s$eZdZdd�Zdd�Zdd�ZdS)�_MemoryWatchdogcCsdjt��d�|_d|_dS)Nz/proc/{pid}/statm)rF)r�r�r�procfile�started)rTrdrdrerU�sz_MemoryWatchdog.__init__c
Cs�yt|jd�}Wn>tk
rN}z t�d�|�t�tj�	�dSd}~XYnXt
d�}tjtj
|g|tjd�|_|��d|_dS)N�rz!/proc not available for stats: {}zmemory_watchdog.py)r�r�T)r+r�r�rgr�r�r�ror��flushr�
subprocess�Popen�
executableZDEVNULL�mem_watchdogrr�)rTr�r�Zwatchdog_scriptrdrdre�start�s
z_MemoryWatchdog.startcCs|jr|j��|j��dS)N)r�r�Z	terminate�wait)rTrdrdre�stop�s
z_MemoryWatchdog.stopN)rarbrcrUr�r�rdrdrdrer��sr�cs���fdd�}|S)Ncs ���fdd����_��_�S)Ncs��j}�j}tsd}n|}ts"�sDt||krDt�d||d��trztrzt�tdj||dd��t�}|�	�nd}z
�||�S|r�|�
�XdS)Niz'not enough memory: %.1fG minimum neededi@z* ... expected peak memory use: {peak:.1f}G)Zpeak)r��memuser�rsrtrr�r�r�r�r�)rTr�r��maxsizeZwatchdog)�dry_runr�r�rdrer��s*

z.bigmemtest.<locals>.decorator.<locals>.wrapper)r�r�)r�)r�r�r�)r�r�rer��szbigmemtest.<locals>.decoratorrd)r�r�r�r�rd)r�r�r�rer2�s
!cs�fdd�}|S)NcsDttkr8tdkr$tdkr$t�d��q@t�dtd��n�|�SdS)Nl����lz-not enough memory: try a 32-bit build insteadz'not enough memory: %.1fG minimum neededi@)rr�rsrt)rT)r�rdrer�
sz!bigaddrspacetest.<locals>.wrapperrd)r�r�rd)r�rer3sc@seZdZdd�ZdS)r+cCst��}||�|S)N)rsZ
TestResult)rTr�r�rdrdre�runszBasicTestRunner.runN)rarbrcr�rdrdrdrer+scCs|S)Nrd)r�rdrdre�_id sr�cCs:|dkrt�st�tj�St|�r&tSt�d�|��SdS)Nr�zresource {0!r} is not enabled)r�rsr�r�r r�r�)r�rdrdre�requires_resource#s
r�cCstdd�|�S)NT)�cpython)�impl_detail)r�rdrdrer4+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 )	r@r��
_parse_guardsr2r�r�r�rsr�)rx�guardsZ
guardnames�defaultrdrdrer�1s
r�cCs*|sddidfSt|���d}||fS)Nr�TFr)r|�values)r�Zis_truerdrdrer�>sr�cKs t|�\}}|�t����|�S)N)r�rJrpZpython_implementationr�)r�rrdrdrer@Hscs,ttd�s�St����fdd��}|SdS)N�gettracec	s.t��}zt�d��||�St�|�XdS)N)ror�settrace)r�rZoriginal_trace)r�rdrer�Xs


zno_tracing.<locals>.wrapper)r�ror�r�)r�r�rd)r�re�
no_tracingSs
rcCstt|��S)N)rr4)r�rdrdre�
refcount_testcsrcCsRg}xB|jD]8}t|tj�r2t||�|�|�q||�r|�|�qW||_dS)N)Z_testsr�rs�	TestSuite�
_filter_suiter�)�suiteZpredZnewtestsr�rdrdrerns
rcCs�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)�	verbosityZcapture_outputrrzmultiple errors occurredz!; run in verbose mode for details)rror�r�junit_xml_listr�r�Zget_xml_elementZtestsRunZskippedrZ
wasSuccessfulr�r�Zfailuresr
)rZrunnerr�r�rdrdre�
_run_suitezs"
rcCstdkrdSt|���SdS)NT)�_match_test_func�id)r�rdrdre�
match_test�srcCsd|kot�d|�S)Nryz[?*\[\]])rc�search)r�rdrdre�_is_full_match_test�srcs~|dkrd}|dkrd}d��|tkr4t|�\}�|tkrHt|�\}�t|�at|�a�dk	sh�dk	rz��fdd�}|adS)Nrdcs*d}d}�r�|�}�r �|�}|o(|S)NTFrd)�test_idZacceptrf)�accept_func�ignore_funcrdre�match_function�sz'set_match_tests.<locals>.match_function)�_accept_test_patterns�_compile_match_function�_ignore_test_patternsrrr)Zaccept_patternsZignore_patternsrrd)rrre�set_match_tests�s	rcs^|sd}d}nHttt|��r(t|�j}n.d�ttj|��}t�	|�j
��fdd�}|}||fS)Nrd�|cs$�|�rdStt�|�d���SdS)NTry)�anyr�r�)r)�regex_matchrdre�match_test_regex�sz1_compile_match_function.<locals>.match_test_regex)�allr�rr��__contains__r��fnmatch�	translatercr<rd)Zpatternsr�Zregexrrd)rrer�srcGs�tjtjf}t��}xh|D]`}t|t�rT|tjkrJ|�t�tj|��qzt	d��qt||�rj|�|�q|�t�
|��qWt|t�t
|�dS)Nz)str arguments must be keys in sys.modules)rsrZTestCaser�rurorzZaddTestZ
findTestCasesr�Z	makeSuiterrr)�classesZvalid_typesr�clsrdrdrer,�s





cCsdS)Nrdrdrdrdre�_check_docstringssr#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)�doctestrZtestmodr
r�ra)r�r	r$r%r�r�rdrdrer-scCstj��fS)N)rorzrurdrdrdre�
modules_setup.sr&cCs:dd�tj��D�}tj��tj�|�tj�|�dS)NcSs"g|]\}}|�d�r||f�qS)z
encodings.)rq)r0r�r�rdrdrer15sz#modules_cleanup.<locals>.<listcomp>)rorzr�r`r�)Z
oldmodules�	encodingsrdrdre�modules_cleanup1s
r(cCst��tj��fS)N)�_thread�_count�	threading�	_danglingrurdrdrdrerLTscGs�d}x�t|�D]�}t��tjf}||kr*P|s�da|d}td|d|d|dt|�ftj	d�x |D]}td|��tj	d�qlWtj	�
�d}d}t�d�t
�qWdS)	N�dTrzUWarning -- threading_cleanup() failed to cleanup %s threads (count: %s, dangling: %s)r)r�zDangling thread: g{�G�z�?)�ranger)r*r+r,�environment_alteredr�r�ror�r�r�r�rt)Zoriginal_valuesZ
_MAX_COUNT�countrZdangling_threads�threadrdrdrerMWs&



cst����fdd��}|S)Ncst�}z�|�St|�XdS)N)rLrM)r��key)r�rdrer�zszreap_threads.<locals>.decorator)r�r�)r�r�rd)r�rerNvs�N@ccs�t��}z
dVWdt��}||}xjt��}||kr8Pt��|kr|t��|}d||�d|d�d|�d|�d�	}t|��t�d�t�q&WXdS)Nz!wait_threads() failed to cleanup z threads after z.1fz seconds (count: z
, old count: �)g{�G�z�?)r)r*r��	monotonicrhr�rt)r�Z	old_countZ
start_timeZdeadliner0Zdtrxrdrdre�wait_threads_exit�s
$
r6cCs,|�|�|��r(d|d�d�}t|��dS)Nzfailed to join the thread in z.1fz seconds)r��is_aliverh)r1r�rxrdrdre�join_thread�s
r8cCspttd�rttd�sdSxRyt�dtj�\}}Wntk
rFPYnX|dkrRPtd|tjd�daqWdS)N�waitpid�WNOHANGrBrz2Warning -- reap_children() reaped child process %s)r�T)	r�r�r9r:r�r�ror�r/)r�statusrdrdrerJ�s	ccs*t|�}g}zZy$x|D]}|��|�|�qWWn*trVtdt|�t|�f��YnXdVWdz�|rt|�t��}}xltdd�D]^}|d7}x$|D]}|�	t
|t��d��q�Wdd�|D�}|s�Ptr�tdt|�|f�q�WWdd	d�|D�}|�r"t�t
j�td
t|���XXdS)Nz/Can't start %d threads, only %d threads startedr��<g{�G�z�?cSsg|]}|��r|�qSrd)r7)r0r�rdrdrer1�sz!start_threads.<locals>.<listcomp>z7Unable to join %d threads during a period of %d minutescSsg|]}|��r|�qSrd)r7)r0r�rdrdrer1�szUnable to join %d threads)r|r�r�rr�r�r�r5r.r��max�faulthandlerZdump_tracebackror�rh)ZthreadsZunlockr�r�ZendtimeZ	starttimer�rdrdrerO�s>


c
csnt||�r<t||�}t|||�z
|VWdt|||�Xn.t|||�z
dVWdt||�rht||�XdS)N)r�r�r��delattr)r�rX�new_val�real_valrdrdrerU�s




c	csX||kr0||}|||<z
|VWd|||<Xn$|||<z
dVWd||krR||=XdS)Nrd)r��itemrArBrdrdrerT	s

cCst�dd|���}|S)Ns\[\d+ refs, \d+ blocks\]\r?\n?r�)rc�sub�strip)r�rdrdre�strip_python_stderr0	srFZ	getcountsz-types are immortal if COUNT_ALLOCS is definedcCst��S)N)r�Z_args_from_interpreter_flagsrdrdrdre�args_from_interpreter_flags=	srGcCst��S)N)r�Z"_optim_args_from_interpreter_flagsrdrdrdre�!optim_args_from_interpreter_flagsB	srHc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
rKcCstjj�|d�||_dS)Nr)�logging�handlers�BufferingHandlerrU�matcher)rTrLrdrdrerUL	szTestHandler.__init__cCsdS)NFrd)rTrdrdre�shouldFlushU	szTestHandler.shouldFlushcCs|�|�|j�|j�dS)N)r�r�r��__dict__)rTr\rdrdre�emitX	s
zTestHandler.emitcKs.d}x$|jD]}|jj|f|�rd}PqW|S)NFT)r�rL�matches)rTrr��drdrdrerP\	szTestHandler.matchesN)rarbrcrUrMrOrPrdrdrdrerKK	s	c@s eZdZdZdd�Zdd�ZdS)rV)rxrbcKs<d}x2|D]*}||}|�|�}|�|||�s
d}Pq
W|S)NTF)rJ�match_value)rTrQrr�r�r��dvrdrdrerPk	s

zMatcher.matchescCsHt|�t|�krd}n.t|�tk	s,||jkr6||k}n|�|�dk}|S)NFr)r�ru�_partial_matches�find)rTr�rSr�r�rdrdrerR|	s
zMatcher.match_valueN)rarbrcrTrPrRrdrdrdrerVg	sc
CsZtdk	rtStd}yt�t|�d}Wntttfk
rFd}YnXt�|�|a|S)NrTF)�_can_symlinkrr��symlinkr��NotImplementedErrorr�rg)Zsymlink_path�canrdrdrer�	s

cCs t�}d}|r|St�|�|�S)Nz*Requires functional symlink implementation)rrsr�)r��okrxrdrdrer.�	sc	Cs�tdk	rtSttd�sd}n�t��}tj|d�\}}z�ttd���}y`t�|dd�t�|dd�t�|�	�dd�t
��}t�
d	|�}|dkp�t|�d
��dk}Wntk
r�d}YnXWdQRXWdtt�t|�t|�X|a|S)N�setxattrF)�dirr4s	user.testr�strusted.foos42z
2.6.(\d{1,2})r�')�
_can_xattrr�r�rrZmkstempr+rr[r5rpr�rcrdr�r�r�rr�)rYZtmp_dirZtmp_fpZtmp_name�fpZkernel_versionr�rdrdre�	can_xattr�	s,

r`cCs t�}d}|r|St�|�|�S)Nz(no non-broken extended attribute support)r`rsr�)r�rZrxrdrdrer7�	scCs�ttd�st�d�|�Stdkr�td}t�tj��P}z>y|�|�daWn&tk
rp}z|aWdd}~XYnXWdt	|�XWdQRXtr�dt}t�|�|�S|SdS)N�AF_UNIXzNo UNIX SocketsZcan_bind_unix_socketFz%Requires a functional unix bind(): %s)
r�r�rsr��_bind_nix_socket_errorrrar	r�r)r�r�r
r�rxrdrdrer=�	s

c	Cs^tj|d��H}|j}|��}||kr,|��}ytj�||�Stk
rNdSXWdQRXdS)N)r\F)	rZNamedTemporaryFilerv�upperr�r�r��samefiler�)Z	directory�base�	base_pathZ	case_pathrdrdrer�	s)rfcCs>tt|��tt|��}|r(|t|�8}tdd�|D��}|S)Ncss&|]}|�d�r|�d�r|VqdS)�_�__N)rq�endswith)r0r�rdrdre�	<genexpr>�	sz&detect_api_mismatch.<locals>.<genexpr>)r�r\)Zref_apiZ	other_apirfZ
missing_itemsrdrdrer;�	s
cCs�|dkr|jf}nt|t�r"|f}t|�}x^t|�D]R}|�d�s4||krLq4t||�}t|dd�|ks|t|d�s4t|tj	�s4|�
|�q4W|�|j|�dS)Nrgrb)
rar�rur�r\rqr�r��types�
ModuleType�addZassertCountEqual�__all__)Z	test_caser�Zname_of_moduleZextraZ	blacklistZexpectedrvr�rdrdrer<�	s)



c@s$eZdZdZdZdd�Zdd�ZdS)rXNc
	Csrtj�d�r�ddl}|jj|_d}|j�|�|_|j�|j|B�yddl	}|j
Wnttfk
rlYnLXi|_
x�|j|j|jgD].}|�
||j�}|�||j�}||f|j
|<q�Wn�tdk	�r
y*t�tj�|_t�tjd|jdf�Wnttfk
�rYnXtjdk�rndddd	g}tj|tjtjd
�}|�|��d}	WdQRX|	��dk�rntdd
dd�|S)Nr�rr�rr�z/usr/bin/defaultsrKzcom.apple.CrashReporterZ
DialogType)r�r�s	developerz:this test triggers the Crash Reporter, that is intentionalr�T)�endr�) rorprqr�r�r��_k32�SetErrorMode�	old_value�msvcrt�CrtSetReportModer�rn�	old_modes�CRT_WARN�	CRT_ERROR�
CRT_ASSERTZCRTDBG_MODE_FILE�CrtSetReportFileZCRTDBG_FILE_STDERRr�Z	getrlimit�RLIMIT_CORE�	setrlimitr�r�r�r��PIPEZcommunicaterEr�)
rTr�ZSEM_NOGPFAULTERRORBOXrs�report_type�old_mode�old_file�cmd�procr�rdrdrerw;
sN




zSuppressCrashReport.__enter__c	Gs�|jdkrdStj�d�rl|j�|j�|jr�ddl}xj|j��D]$\}\}}|�	||�|�
||�qBWn6tdk	r�yt�tj
|j�Wnttfk
r�YnXdS)Nr�r)rrrorprqrprqrursr�rtryr�r{rzr�r�)rTrxrsr}r~rrdrdrery|
s
zSuppressCrashReport.__exit__)rarbrcrrrurwryrdrdrdrerX2
sAc	srt���d�y�j��Wn$ttfk
r@t��d��YnXd�����fdd�}|�|�t��|�dS)NFTcs �rt����n
t���dS)N)r�r@rd)�
attr_is_local�	attr_name�object_to_patchrrrdre�cleanup�
szpatch.<locals>.cleanup)r�rNr�r�Z
addCleanupr�)Z
test_instancer�r�Z	new_valuer�rd)r�r�r�rrre�patch�
s


r�cCsFyddl}Wntk
r YnX|��r4t�d��ddl}|�|�S)NrzUrun_in_subinterp() cannot be used if tracemalloc module is tracing memory allocations)�tracemallocrn�
is_tracingrsrtr��run_in_subinterp)r�r�r�rdrdrer��
s
r�csHG��fdd�d|�}d�|||���|�tt��t�|���dS)NcseZdZ��fdd�ZdS)z%check_free_after_iterating.<locals>.Acs*d�yt��Wntk
r$YnXdS)NT)�next�
StopIteration)rT)�done�itrdre�__del__�
s
z-check_free_after_iterating.<locals>.A.__del__N)rarbrcr�rd)r�r�rdre�A�
sr�F)r:r�r�rtZ
assertTrue)r�r�r"r�r�rd)r�r�re�check_free_after_iterating�
s	r�cCs|ddlm}m}m}|��}|�|�xP|jD]F}|r@||kr@q.t||�}|rPn
|dkrZq.|�|d�dkr.|dSq.WdS)Nr)�	ccompilerr��spawn)	Z	distutilsr�r�r�Znew_compilerZcustomize_compilerZexecutablesr�Zfind_executable)Z	cmd_namesr�r�r�Zcompilerrvr�rdrdrer\�
s	

cCs@d}tr6||kr6tdkr.t�ddg���dkatr6|}t�|�S)Ng�h㈵��>Zgetpropzro.kernel.qemu�1)r?�_is_android_emulatorr�Zcheck_outputrErorB)�intervalZminimum_intervalrdrdrerB�
sc
cs>tj��}t��}zt��dVWd|r8tj|dd�XdS)NT)r�Zall_threads)ror�r5r?�
is_enabledr�r�)r/r�rdrdre�disable_faulthandlers

r�c	Cs�tj�d�r8yt�d�}t|�dStk
r6YnXd}ttd�rjyt�d�}Wnt	k
rhYnXd}tjdkr�yddl
}|jWntt
fk
r�Yn0Xi}x(|j|j|jfD]}|�|d�||<q�Wzpd}xft|�D]Z}yt�|�}Wn4t	k
�r(}z|jtjk�r�Wdd}~XYq�Xt�|�|d7}q�WWd|dk	�rzx*|j|j|jfD]}|�|||��q`WX|S)	N)ZlinuxZfreebsdz
/proc/self/fdr��sysconf�SC_OPEN_MAXrr)rorprqr�r�r�r�r�r�r�rsrtr�rnrvrwrxr.�dupr�ZEBADFr)	�namesZMAXFDrursr}r0r/Zfd2r�rdrdrer]sP





c@s$eZdZdd�Zdd�Zdd�ZdS)�SaveSignalsc	Csjddl}||_ttd|j��|_x>dD]6}yt||�}Wntk
rNw&YnX|j�|�q&Wi|_dS)Nrr)�SIGKILL�SIGSTOP)	�signalr|r.�NSIG�signalsr�r�rgrJ)rTr�Zsigname�signumrdrdrerUVs
zSaveSignals.__init__cCs4x.|jD]$}|j�|�}|dkr"q||j|<qWdS)N)r�r��	getsignalrJ)rTr��handlerrdrdre�savecs
zSaveSignals.savecCs*x$|j��D]\}}|j�||�qWdS)N)rJr�r�)rTr�r�rdrdre�restoreoszSaveSignals.restoreN)rarbrcrUr�r�rdrdrdrer�Ms	
r�cCsddl}|jS)Nr)r�Z
WITH_PYMALLOC)r�rdrdre�
with_pymalloctsr�c@s$eZdZdd�Zdd�Zdd�ZdS)�FakePathcCs
||_dS)N)r�)rTr�rdrdrerU|szFakePath.__init__cCsd|j�d�S)Nz
<FakePath �>)r�)rTrdrdre�__repr__szFakePath.__repr__cCs6t|jt�s$t|jt�r,t|jt�r,|j�n|jSdS)N)r�r��
BaseExceptionr�rf)rTrdrdre�
__fspath__�s
zFakePath.__fspath__N)rarbrcrUr�r�rdrdrdrer�ysr�c@seZdZdd�Zdd�ZdS)�
_ALWAYS_EQcCsdS)NTrd)rT�otherrdrdre�__eq__�sz_ALWAYS_EQ.__eq__cCsdS)NFrd)rTr�rdrdre�__ne__�sz_ALWAYS_EQ.__ne__N)rarbrcr�r�rdrdrdrer��sr�c@seZdZdd�Zdd�ZdS)�_LARGESTcCs
t|t�S)N)r�r�)rTr�rdrdrer��sz_LARGEST.__eq__cCsdS)NFrd)rTr�rdrdre�__lt__�sz_LARGEST.__lt__N)rarbrcr�r�rdrdrdrer��sr�c@seZdZdd�Zdd�ZdS)�	_SMALLESTcCs
t|t�S)N)r�r�)rTr�rdrdrer��sz_SMALLEST.__eq__cCsdS)NFrd)rTr�rdrdre�__gt__�sz_SMALLEST.__gt__N)rarbrcr�r�rdrdrdrer��sr�c	cs.t��}zt�|�dVWdt�|�XdS)N)ro�get_int_max_str_digits�set_int_max_str_digits)Z
max_digitsZcurrentrdrdre�adjust_int_max_str_digits�s


r�)T)F)rdrdF)F)N)NF)F)r$F)N)F)T)N)NN)Nr)r3)r�)N)Nrdrd)rd(rarnZcollections.abc�collections�
contextlibZdatetimer�r?rr�r�rm�importlib.utilr�Zlogging.handlersrIr�r�rprcr�r�r�r�r�ror�rr)r+r�rkrsZurllib.errorrMrgZ
testresultrZmultiprocessing.processZmultiprocessing�zlibrE�bz2Zlzmar�rnr�r	r
rrtr�contextmanagerrkr
rr�r9r:rr5rrrr�r
rr�rrrr�rqr�r�r�r�r�rr�rr�rr�r r!r�r"r#r$rCZHOSTv4rrrrErFrHr
rDrrZ
SOCK_MAX_SIZEZ
skipUnlessr��
__getformat__r6r8r/r0r1r>r�r?rArvrr�rZ
TEST_HTTP_URLZFS_NONASCII�	character�fsdecode�fsencode�UnicodeErrorZTESTFN_UNICODEZunicodedata�	normalize�getfilesystemencodingZTESTFN_ENCODINGZTESTFN_UNENCODABLEZgetwindowsversion�encode�UnicodeEncodeErrorr��decode�UnicodeDecodeErrorZTESTFN_UNDECODABLEZTESTFN_NONASCIIr!rr[r r#rrIr�r�r�r�ZTEST_SUPPORT_DIRr(r�rIrrrYr6r%rG�objectrQrprPrQr�abc�MutableMappingrRr�r&r�r�r'r�r(r)r�r*r�rrrrtr�r�r�r�r�r�r�r�r�r�rSrZr�r�r�Z_4Gr�r�rWr�r2r3r+r�r�r4r�r�r@rrrrrrrrrrrr,r#r�ZMISSING_C_DOCSTRINGSr�ZHAVE_DOCSTRINGSZrequires_docstringsr-r&r(r/rLrMrNr6r8rJrOrUrTrFr�Zrequires_type_collectingrGrHrJrKrKrVrVrr.r^r`r7rbr=rr;r<rXr�r�r�r\r�rBr�r]r�r�r�r�r^�total_orderingr�r_r�r`r�rdrdrdre�<module>s�










2	
!

J			>&	
&2' 5M		

$#

0





!




"

#
	"


:_";'	






?>