<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
     f             ]   @   s@  e d kredddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl!Z"ddl#Z#ddl$m%Z% yddl&Z'W n ek
r:   dZ'Y nX yddl(Z(W n ek
rb   dZ(Y nX yddl)Z)W n ek
r   dZ)Y nX yddl*Z*W n ek
r   dZ*Y nX yddl+Z+W n ek
r   dZ+Y nX yddl,Z,W n ek
r   dZ,Y nX dddd	d
dddddddddddddddddddddd d!d"d#d$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-G dcd de.Z/G ddd de/Z0G ded de/Z1G dfd de j2Z3ej4dedhdiZ5dfdkdldmdZ6dndo Z7dpdq Z8drd; Z9dsd< Z:dgdtdZ;dud7 Z<dZ=dZ>da?da@dZAdjZBdaCdvd ZDdwd ZEdxd ZFdydz ZGejHd{rԐdhd|d}ZId~d ZJdd ZKdd ZLdd ZMnejNZJejOZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd" ZTdidd#ZUdd ZVdd$ ZWdd% ZXdd& ZYdZZdZ[dZ\ej]ej^fddGZ_eZfddHZ`ddJ Zadd Zbeb Zcdd ZddZedZfe gehidHddZje ge(dZke ge)dZle ge*dZme ge+dZnejHdZoepedZqejdkreqrdndZrndZrejsdkr4dZtndZtduetev ZtdZwdZxxJdD ]BZyyeze{eyeykrve|W n e|k
r   Y nX eyZxP qVW etd Z}ejdkrddl~Z~e~de}Z}e ZdZejsdkr0e jdkrretd Zyee W n ek
r   Y nX edeef  dZnBejdkrryde W n& ek
rp   etded ZY nX dZxDdD ]<Zsyese W n& ek
r   e{etes ZP Y nX q|W exretd ex ZndZe ZdjZej4djddZej4dkddĄZej4dlddZepedǃr0ej4ddK ZejejeZejeZejedɡZdmddZdd Zdd[ Zdd΄ ZdddϜdd'ZddI ZG ddӄ deZdnddՄZej4ddR Zej4ddS ZG dd deZG ddT dTejjZG ddۄ deZG dd( d(eZeeejdݍZeeejdݍZeeejdݍZdd߄ Zej4ddkddd,Zej4dd Zdd Zdd Zdd Zdd Zej4dd Zdd ZdZdZepedrde ZdZed Zdd Zdd ZdZdZdd ZddU Zdd\ ZdZde Zde ZƐd e ZejZɐddY ZG dd dZːdodd4Z̐dd5 ZG dd- d-Zΐdd Zϐd	d
 ZАdd6 ZѐdpddZҐdd ZӐddB ZԐdd ZՐdd Z֐dd Zאdd Zdadadaېdd Zܐdd ZݐdqddZސdd  Zߐd!d. Zd"d# Zeԃ 
oRejdk
oRed$ Zejdk	
ode Ze ged%Zdrd&d/Zd'd( Zd)d* Zdjad+dN Zd,dO Zd-dP Zej4dsd/d0Zdtd1d2Zd3dL Zej4dud4dQZej4d5dW Zej4d6dV Zd7d8 Ze eped9d:Zd;d< Zd=d> ZG d?dM dMejjZG d@dX dXeZdadAd  ZdBd0 Zda dCdD ZdEd9 ZdadFd? ZdGd! ZdkdHdId=ZdvdJd>ZG dKdZ dZZdLdM Z	dNdO Z
dwdPdQZg fdRd^ZdadSdD Zej4dTdU ZdVd_ ZG dWdX dXZdYdZ ZG d[d\ d\ZG d]d^ d^Ze Ze	jG d_d` d`Ze Ze	jG dadb dbZe Zej4dcdd ZdS (x  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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   e Zd ZdS )r	   N)__name__
__module____qualname__ rd   rd   :/opt/alt/python37/lib64/python3.7/test/support/__init__.pyr	   s   s   c               @   s   e Zd ZdS )r
   N)ra   rb   rc   rd   rd   rd   re   r
   v   s   c               @   s   e Zd ZdS )r   N)ra   rb   rc   rd   rd   rd   re   r   y   s   c               @   s   e Zd ZdS )r   N)ra   rb   rc   rd   rd   rd   re   r   |   s   Tc          	   c   s8   | r.t   t ddt d V  W d Q R X nd V  d S )Nignorez.+ (module|package))warningscatch_warningsfilterwarningsDeprecationWarning)rf   rd   rd   re   _ignore_deprecated_imports   s    
rk   Frd   )required_onc            C   sf   t |T y
t| S  tk
rV } z$tjt|r8 t	t
|W d d }~X Y nX W d Q R X d S )N)rk   	importlibr   ImportErrorsysplatform
startswithtupleunittestSkipTeststr)name
deprecatedrl   msgrd   rd   re   r      s    	

c             C   s^   | t jkrt|  t j| = x>tt jD ]0}|| ks@|| d r&t j| ||< t j|= q&W d S )N.)ro   modules
__import__listrq   )rv   orig_modulesmodnamerd   rd   re   _save_and_remove_module   s    
r   c             C   s>   d}yt j|  || < W n tk
r.   d}Y nX d t j| < |S )NTF)ro   rz   KeyError)rv   r}   Zsavedrd   rd   re   _save_and_block_module   s    

r   c             C   s   | r
t jS dd S )Nc             S   s   | S )Nrd   )frd   rd   re   <lambda>       z$anticipate_failure.<locals>.<lambda>)rs   ZexpectedFailure)Z	conditionrd   rd   re   r9      s    c             C   sF   |d krd}t jt jt jt}|j| ||d}|| |S )Nztest*)Z	start_dirZtop_level_dirpattern)ospathdirname__file__ZdiscoverZaddTests)Zpkg_dirloaderZstandard_testsr   Ztop_dirZpackage_testsrd   rd   re   r:      s    
c             C   s   t | i }g }t| | zfyHx|D ]}t|| q&W x |D ]}t||s>|| q>W t| }W n tk
r~   d }Y nX W d x| D ]\}	}
|
tj	|	< qW x|D ]}tj	|= qW X |S Q R X d S )N)
rk   r   r   appendrm   r   rn   itemsro   rz   )rv   ZfreshZblockedrw   r}   Znames_to_removeZ
fresh_nameZblocked_nameZfresh_moduleZ	orig_namemoduleZname_to_removerd   rd   re   r      s$    





c             C   s>   yt | |}W n& tk
r4   td| |f Y nX |S d S )Nzobject %r has no attribute %r)getattrAttributeErrorrs   rt   )objrv   Z	attributerd   rd   re   r5     s
    c             C   s   | a d S )N)_original_stdout)stdoutrd   rd   re   r   '  s    c               C   s
   t ptjS )N)r   ro   r   rd   rd   rd   re   r   +  s    c             C   s&   yt j| = W n tk
r    Y nX d S )N)ro   rz   r   )rv   rd   rd   re   r   .  s    c          
   G   sp   y|| S  t k
rj } zDtdkrHtd|jj|f  td|j|f  t| tj || S d }~X Y nX d S )N   z%s: %szre-run %s%r)	OSErrorr   print	__class__ra   r   chmodstatS_IRWXU)r   funcargserrrd   rd   re   
_force_run4  s    r   winc             C   s   | | |r|}nt j|\}}|p(d}d}x>|dk rlt |}|rL|sXn||ksXd S t| |d9 }q0W tjd| tdd d S )Nry   gMbP?g      ?r   z)tests may fail, delete still pending for    )
stacklevel)	r   r   splitlistdirtimesleeprg   warnRuntimeWarning)r   pathnamewaitallr   rv   timeoutLrd   rd   re   _waitfor?  s    



r   c             C   s   t tj|  d S )N)r   r   r   )filenamerd   rd   re   _unlink`  s    r   c             C   s   t tj|  d S )N)r   r   rmdir)r   rd   rd   re   _rmdirc  s    r   c                s,    fdd t  | dd t dd |  d S )Nc                s   xt | tj| D ]}tj| |}yt|j}W n< tk
rn } ztd||f t	j
d d}W d d }~X Y nX t|rt |dd t |tj| qt |tj| qW d S )Nz-support.rmtree(): os.lstat(%r) failed with %s)filer   T)r   )r   r   r   r   joinlstatst_moder   r   ro   
__stderr__r   S_ISDIRr   r   r   )r   rv   fullnamemodeexc)_rmtree_innerrd   re   r   g  s    

z_rmtree.<locals>._rmtree_innerT)r   c             S   s   t | tj| S )N)r   r   r   )prd   rd   re   r   v  r   z_rmtree.<locals>.<lambda>)r   )r   rd   )r   re   _rmtreef  s    r   c             C   s^   ydd l }W n tk
r    Y n:X |t| d }|jj| |t|}|rZ|d | S | S )Nr   r   )ctypesrn   Zcreate_unicode_bufferlenwindllkernel32ZGetLongPathNameW)r   r   bufferlengthrd   rd   re   	_longpathx  s    
r   c                sF   yt |  d S  tk
r"   Y nX  fdd  |  t|  d S )Nc          	      s   x~t | tj| D ]l}tj| |}yt|j}W n tk
rJ   d}Y nX t	|rn | t | tj
| qt | tj| qW d S )Nr   )r   r   r   r   r   r   r   r   r   r   r   r   )r   rv   r   r   )r   rd   re   r     s    

z_rmtree.<locals>._rmtree_inner)shutilr   r   r   r   )r   rd   )r   re   r     s    
c             C   s   | S )Nrd   )r   rd   rd   re   r     s    c          	   C   s*   yt |  W n ttfk
r$   Y nX d S )N)r   FileNotFoundErrorNotADirectoryError)r   rd   rd   re   r     s    c             C   s&   yt |  W n tk
r    Y nX d S )N)r   r   )r   rd   rd   re   r     s    r   c             C   s&   yt |  W n tk
r    Y nX d S )N)r   r   )r   rd   rd   re   r     s    c             C   sB   t j| }tjtj| }tj|| d }t|| |S )Nc)	rm   utilcache_from_sourcer   r   r   abspathr   rename)sourceZpyc_fileZup_oneZ
legacy_pycrd   rd   re   make_legacy_pyc  s
    r   c             C   s\   t |  xNtjD ]D}tj|| d }t|d  x dD ]}ttjj||d q8W qW d S )Nz.pyr   ) r   r   )optimization)	r   ro   r   r   r   r   rm   r   r   )r~   r   r   optrd   rd   re   r     s    
c           
      s  t tdrtjS d } tjdrdd ldd ld}d}G fdddj}j	j
}| }|sj | }j }||||||}|s t|j|@ sd} ntjdkrVdd	lm}	m m}
m} dd
lm} |	|d}| dkrd} nFG  fddd|}| }|
|}||dk sR||dk rVd} | sy.ddlm} | }|  |   |!  W n\ t"k
r } z<t#|}t$|dkr|d d d }d%t&|j'|} W d d }~X Y nX | t_(|  t_tjS )Nresultr   r   r   c                   s.   e Zd Zd jjfd jjfd jjfgZdS )z*_is_gui_available.<locals>.USEROBJECTFLAGSZfInheritZ	fReserveddwFlagsN)ra   rb   rc   wintypesZBOOLDWORD_fields_rd   )r   rd   re   USEROBJECTFLAGS  s   

r   z,gui not available (WSF_VISIBLE flag not set)darwin)cdllc_intpointer	Structure)find_libraryZApplicationServicesz0gui tests cannot run without OS X window managerc                   s   e Zd Zd fd fgZdS )z._is_gui_available.<locals>.ProcessSerialNumberZhighLongOfPSNZlowLongOfPSNN)ra   rb   rc   r   rd   )r   rd   re   ProcessSerialNumber  s   r   z#cannot run without OS X gui process)Tk2   z [...]zTk unavailable due to {}: {}))hasattr_is_gui_availabler   ro   rp   rq   r   Zctypes.wintypesr   r   Zuser32ZGetProcessWindowStationZWinErrorr   r   ZGetUserObjectInformationWZbyrefZsizeofboolr   r   r   r   Zctypes.utilr   ZLoadLibraryZCGMainDisplayIDZGetCurrentProcessZSetFrontProcessZtkinterr   ZwithdrawupdateZdestroy	Exceptionru   r   formattypera   reason)r   Z	UOI_FLAGSZWSF_VISIBLEr   ZdllhZuofZneededZresr   r   r   r   Zapp_servicesr   ZpsnZpsn_pr   rooteZ
err_stringrd   )r   r   re   r     sh    

r   c             C   s   t d kp| t kS )N)r   )resourcerd   rd   re   r      s    c             C   s<   t | s |d krd|  }t|| dkr8t s8ttjd S )Nz"Use of the %r resource not enabledgui)r    r   r   r   )r   rx   rd   rd   re   r!   #  s    c             C   s   dd l }dtt|}| ddd }| | krtyttt|d}W n t	k
rh   d}Y qxX ||k }nd}t
||  d| d| S )Nr   ry   -r   Fz	 version z or higher required, not )rp   r   mapru   releaser   systemrr   int
ValueErrorrs   skipIf)sysnamemin_versionrp   min_version_txtversion_txtversionskiprd   rd   re   _requires_unix_version,  s    

r   c              G   s
   t d| S )NZFreeBSD)r   )r   rd   rd   re   r"   G  s    c              G   s
   t d| S )NZLinux)r   )r   rd   rd   re   r#   P  s    c                 s    fdd}|S )Nc                s"   t   fdd}|_|S )Nc                 sx   t jdkrnt d }yttt|d}W n tk
rB   Y n,X |k rndtt	}t
d||f  | |S )Nr   r   ry   z&Mac OS X %s or higher required, not %s)ro   rp   Zmac_verrr   r   r   r   r   r   ru   rs   rt   )r   kwr   r   r   )r   r   rd   re   wrappera  s    
z4requires_mac_ver.<locals>.decorator.<locals>.wrapper)	functoolswrapsr   )r   r   )r   )r   re   	decorator`  s    z#requires_mac_ver.<locals>.decoratorrd   )r   r   rd   )r   re   r$   Y  s    Z	localhostz	127.0.0.1z::1c             C   s"   t  | |}t|}|  ~|S )N)socketrF   close)familyZsocktypeZtempsockportrd   rd   re   rE   z  s
    8c             C   s   | j tjkr| jtjkrttdr>| tjtjdkr>t	dttdrdt
jkry | tjtjdkrpt	dW n tk
r   Y nX ttdr| tjtjd | |df |  d }|S )	NSO_REUSEADDRr   zHtests should never set the SO_REUSEADDR socket option on TCP/IP sockets!SO_REUSEPORTZWITHIN_PYTHON_RPM_BUILDzHtests should never set the SO_REUSEPORT socket option on TCP/IP sockets!SO_EXCLUSIVEADDRUSEr   )r  r   AF_INETr   SOCK_STREAMr   Z
getsockoptZ
SOL_SOCKETr  r
   r   environr  r   Z
setsockoptr  bindZgetsockname)sockZhostr  rd   rd   re   rF     s     



c             C   s:   y|  | W n& tk
r4   |   tdY nX d S )Nzcannot bind AF_UNIX sockets)r	  PermissionErrorr   rs   rt   )r
  Zaddrrd   rd   re   rH     s
    c              C   sZ   t jrVd } z<y"t  t jt j} | tdf dS  tk
rB   Y nX W d | rT|   X dS )Nr   TF)r   Zhas_ipv6ZAF_INET6r  r	  HOSTv6r   r   )r
  rd   rd   re   _is_ipv6_enabled  s    

r  c                s   t   fdd}|S )Nc           
      sN   y | | W n: t k
rH } zdt|kr6td W d d }~X Y nX d S )NZCERTIFICATE_VERIFY_FAILEDz.system does not contain necessary certificates)r   ru   rs   rt   )r   kwargsr   )r   rd   re   dec  s    
z&system_must_validate_cert.<locals>.dec)r   r   )r   r  rd   )r   re   system_must_validate_cert  s    	r  i @ i  ZdoubleZIEEEztest requires IEEE 754 doubleszrequires zlibzrequires gzipzrequires bz2zrequires lzmajavaZgetandroidapilevelwin32z/system/bin/shz/bin/shz$testz@testz	{}_{}_tmpzhttp://www.pythontest.net)   æu   İu   Łu   φu   Кu   אu   ،u   تu   ก    u   €u   -àòɘŁğr   ZNFDntr   u   -共Ł♡ͣztWARNING: The filename %r CAN be encoded by the filesystem encoding (%s). Unicode filename tests may not be effective   s   -surrogateescape)s   wr  s   s   s   r   c          
   c   s   d}| d kr&t  } d}tj| } nXyt|  d}W nD tk
r| } z&|sP tjd| d| t	dd W d d }~X Y nX |rt
 }z
| V  W d |r|t
 krt|  X d S )NFTz5tests may fail, unable to create temporary directory z:    )r   )tempfilemkdtempr   r   realpathmkdirr   rg   r   r   getpidr   )r   quietZdir_createdr   pidrd   rd   re   temp_dir  s&    

r   c          
   c   s|   t  }yt |  W nD tk
rZ } z&|s. tjd| d| tdd W d d }~X Y nX zt  V  W d t | X d S )NzBtests may fail, unable to change the current working directory to z: r  )r   )r   getcwdchdirr   rg   r   r   )r   r  Z	saved_dirr   rd   rd   re   
change_cwd  s    r#  tempcwdc          
   c   s:   t | |d$}t||d}|V  W d Q R X W d Q R X d S )N)r   r  )r  )r   r#  )rv   r  Z	temp_pathZcwd_dirrd   rd   re   r      s    umaskc          	   c   s&   t | }z
d V  W d t | X d S )N)r   r%  )r%  Zoldmaskrd   rd   re   rI     s    

datac             C   sb   t j| r| S |d k	r&t j|| } tgtj }x*|D ]"}t j|| }t j|r8|S q8W | S )N)r   r   isabsr   TEST_HOME_DIRro   exists)r   Zsubdirr   Zdnfnrd   rd   re   r   %  s    
 c             C   s(   t | t jt jB t jB }t | d S )N)r   openO_WRONLYO_CREATO_TRUNCr   )r   fdrd   rd   re   r   7  s    c             C   s,   t |  }dd |D }d|}d| S )Nc             S   s   g | ]}d | qS )z%r: %rrd   ).0Zpairrd   rd   re   
<listcomp>?  s    zsortdict.<locals>.<listcomp>z, z{%s})sortedr   r   )dictr   Z	reprpairsZ
withcommasrd   rd   re   rY   <  s    
c              C   s*   t td} z|  S |   tt X d S )Nwb)r+  r   filenor   r   )r   rd   rd   re   make_bad_fdC  s
    
r6  )linenooffsetc         	   C   sp   |  t}t|dd W d Q R X |j}| |j |d k	rJ| |j| | |j |d k	rl| |j| d S )Nz<test string>exec)assertRaisesSyntaxErrorcompileZ	exceptionZassertIsNotNoner7  assertEqualr8  )testcaseZ	statementr7  r8  cmr   rd   rd   re   r%   O  s    c          	      sT  dd l }dd l}dd |j| d dd }tjt	|} fdd}tj
|r|||}|d k	rt|S t| td trtd	|  t d
 |j }tr|jd |j| dd}tr|jddkrtj|d}z@t|d,}	| }
x|
r|	|
 | }
qW W d Q R X W d |  X ||}|d k	rD|S td| d S )Nr   checkr   /c                s>   t | f }d kr|S |r2|d |S |  d S )Nr   )r+  seekr   )r*  r   )r   r@  r   rd   re   check_valid_filec  s    
z*open_urlresource.<locals>.check_valid_fileZurlfetchz	fetching %s ...)r   )zAccept-Encodinggzip   )r   zContent-EncodingrE  )Zfileobjr4  zinvalid resource %r)Zurllib.requestZurllib.parsepopparseZurlparser   r   r   r   TEST_DATA_DIRr)  r   r!   r   r   r   ZrequestZbuild_openerrE  Z
addheadersr   r+  ZheadersgetZGzipFilereadwriter   r
   )Zurlr   r   urllibr   r*  rD  r   openeroutsrd   )r   r@  r   re   rG   Z  s<    	



c               @   s0   e Zd Zdd Zdd Zedd Zdd Zd	S )
WarningsRecorderc             C   s   || _ d| _d S )Nr   )	_warnings_last)selfZwarnings_listrd   rd   re   __init__  s    zWarningsRecorder.__init__c             C   sD   t | j| jkr t| jd |S |tjjkr0d S td| |f d S )NrB  z%r has no attribute %r)r   rR  rS  r   rg   WarningMessage_WARNING_DETAILSr   )rT  attrrd   rd   re   __getattr__  s
    zWarningsRecorder.__getattr__c             C   s   | j | jd  S )N)rR  rS  )rT  rd   rd   re   rg     s    zWarningsRecorder.warningsc             C   s   t | j| _d S )N)r   rR  rS  )rT  rd   rd   re   reset  s    zWarningsRecorder.resetN)ra   rb   rc   rU  rY  propertyrg   rZ  rd   rd   rd   re   rQ    s   rQ  c          	   c   s  t d}|jd}|r"|  tjdd }t jd d t	|V  W d Q R X t
|}g }xv| D ]n\}}d}	xH|d d  D ]8}|j}
t|t|
tjrt|
j|rd}	|| qW |	sf|sf|||jf qfW |rtd|d	  |rtd
|d	  d S )Nr   Z__warningregistry__T)recordrg   alwaysFzunhandled warning %sr   z)filter (%r, %s) did not catch any warning)ro   	_getframe	f_globalsrJ  clearrg   rh   rz   simplefilterrQ  r|   messagerematchru   I
issubclassr   remover   ra   AssertionError)filtersr  frameregistrywZreraisemissingrx   catseenZwarningrd   rd   re   _filterwarnings  s0    
rp  c              O   s.   | d}| s$dtff} |d kr$d}t| |S )Nr  r   T)rJ  Warningrp  )ri  r  r  rd   rd   re   rP     s    

c          	   c   sB   t jdd }t jdtd d V  t  W d Q R X | |g  d S )NT)r\  r]  )category)rg   rh   ri   ResourceWarning
gc_collectr=  )r>  Zwarnsrd   rd   re   rQ     s
    c               @   s$   e Zd Zdd Zdd Zdd ZdS )r   c             G   sN   t j | _x<|D ]4}|t jkrt j| }|j|kr>t j|j= t j|= qW d S )N)ro   rz   copyoriginal_modulesra   )rT  Zmodule_namesZmodule_namer   rd   rd   re   rU    s    




zCleanImport.__init__c             C   s   | S )Nrd   )rT  rd   rd   re   	__enter__  s    zCleanImport.__enter__c             G   s   t j| j d S )N)ro   rz   r   rv  )rT  
ignore_excrd   rd   re   __exit__  s    zCleanImport.__exit__N)ra   rb   rc   rU  rw  ry  rd   rd   rd   re   r     s   c               @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )rR   c             C   s   t j| _i | _d S )N)r   r  _environ_changed)rT  rd   rd   re   rU    s    zEnvironmentVarGuard.__init__c             C   s
   | j | S )N)rz  )rT  envvarrd   rd   re   __getitem__   s    zEnvironmentVarGuard.__getitem__c             C   s*   || j kr| j|| j |< || j|< d S )N)r{  rz  rJ  )rT  r|  valuerd   rd   re   __setitem__#  s    
zEnvironmentVarGuard.__setitem__c             C   s2   || j kr| j|| j |< || jkr.| j|= d S )N)r{  rz  rJ  )rT  r|  rd   rd   re   __delitem__)  s    

zEnvironmentVarGuard.__delitem__c             C   s
   | j  S )N)rz  keys)rT  rd   rd   re   r  0  s    zEnvironmentVarGuard.keysc             C   s
   t | jS )N)iterrz  )rT  rd   rd   re   __iter__3  s    zEnvironmentVarGuard.__iter__c             C   s
   t | jS )N)r   rz  )rT  rd   rd   re   __len__6  s    zEnvironmentVarGuard.__len__c             C   s   || |< d S )Nrd   )rT  r|  r~  rd   rd   re   set9  s    zEnvironmentVarGuard.setc             C   s
   | |= d S )Nrd   )rT  r|  rd   rd   re   unset<  s    zEnvironmentVarGuard.unsetc             C   s   | S )Nrd   )rT  rd   rd   re   rw  ?  s    zEnvironmentVarGuard.__enter__c             G   sJ   x<| j  D ].\}}|d kr0|| jkr:| j|= q|| j|< qW | jt_d S )N)r{  r   rz  r   r  )rT  rx  kvrd   rd   re   ry  B  s    

zEnvironmentVarGuard.__exit__N)ra   rb   rc   rU  r}  r  r  r  r  r  r  r  rw  ry  rd   rd   rd   re   rR     s   c               @   s$   e Zd Zdd Zdd Zdd ZdS )DirsOnSysPathc             G   s(   t jd d  | _t j| _t j| d S )N)ro   r   original_valueoriginal_objectextend)rT  pathsrd   rd   re   rU  X  s    zDirsOnSysPath.__init__c             C   s   | S )Nrd   )rT  rd   rd   re   rw  ]  s    zDirsOnSysPath.__enter__c             G   s   | j t_| jtjd d < d S )N)r  ro   r   r  )rT  rx  rd   rd   re   ry  `  s    zDirsOnSysPath.__exit__N)ra   rb   rc   rU  rw  ry  rd   rd   rd   re   r  L  s   r  c               @   s&   e Zd Zdd Zdd ZdddZdS )	r&   c             K   s   || _ || _d S )N)r   attrs)rT  r   r  rd   rd   re   rU  j  s    zTransientResource.__init__c             C   s   | S )Nrd   )rT  rd   rd   re   rw  n  s    zTransientResource.__enter__Nc             C   sT   |d k	rPt | j|rPx:| j D ]$\}}t||s4P t|||kr P q W tdd S )Nz%an optional resource is not available)rf  r   r  r   r   r   r   )rT  Ztype_r~  	tracebackrX  Z
attr_valuerd   rd   re   ry  q  s    
zTransientResource.__exit__)NNN)ra   rb   rc   rU  rw  ry  rd   rd   rd   re   r&   e  s   )errnoc              C   sN   t jg} tt dr| t j tt dr4| t j tt drJ| t j | S )NENETUNREACHEADDRNOTAVAILEHOSTUNREACH)r  ECONNREFUSEDr   r   r  r  r  )errorsrd   rd   re   get_socket_conn_refused_errs  s    


r        >@)r   errnosc      	   
   #   sl  ddddddg}ddd	d
dg}t d|  | g  sRdd |D  dd |D  fdd}t }zy|d k	rt| d V  W n tjk
r } z$trtj	j
d d  |W d d }~X Y n tk
rV } zlx\|j
}t|dkrt|d tr|d }qt|dkr6t|d tr6|d }qP qW ||  W d d }~X Y nX W d t| X d S )N)r  o   )
ECONNRESETh   )r  q   )r  e   )	ETIMEDOUTn   )r  c   )Z	EAI_AGAIN)ZEAI_FAIL)Z
EAI_NONAME)Z
EAI_NODATA)Z
WSANO_DATAi*  zResource %r is not availablec             S   s   g | ]\}}t t||qS rd   )r   r  )r0  rv   numrd   rd   re   r1    s   z&transient_internet.<locals>.<listcomp>c             S   s   g | ]\}}t t||qS rd   )r   r   )r0  rv   r  rd   rd   re   r1    s   c                s   t | dd }t| tjst| tjr,|kst| tjjrRd| j  krPdksn t| tjj	r~d| j
ksd| j
ksd| j
ks| krtstjjd d  | d S )	Nr  i  iW  ConnectionRefusedErrorTimeoutErrorEOFErrorr   
)r   
isinstancer   r   ZgaierrorrM  errorZ	HTTPErrorcodeZURLErrorr   r   ro   stderrrL  r   )r   n)captured_errnosdenied
gai_errnosrd   re   filter_error  s    


z(transient_internet.<locals>.filter_errorr   r  r   r   )r   r   ZgetdefaulttimeoutZsetdefaulttimeoutnntplibZNNTPTemporaryErrorr   ro   r  rL  r   r   r   r  )	Zresource_namer   r  Zdefault_errnosZdefault_gai_errnosr  Zold_timeoutr   ard   )r  r  r  re   r*     sP    



c          
   c   sF   dd l }tt| }tt| |  ztt| V  W d tt| | X d S )Nr   )ior   ro   setattrStringIO)Zstream_namer  Zorig_stdoutrd   rd   re   captured_output  s    
r  c               C   s   t dS )Nr   )r  rd   rd   rd   re   r     s    c               C   s   t dS )Nr  )r  rd   rd   rd   re   r     s    c               C   s   t dS )Nstdin)r  rd   rd   rd   re   r     s    
c               C   s*   t   trtd t   t   d S )Ng?)gcZcollectr>   r   r   rd   rd   rd   re   rt    s
    

rt  c              c   s.   t  } t   z
d V  W d | r(t   X d S )N)r  Z	isenableddisableenable)Zhave_gcrd   rd   re   
disable_gc"  s    
r  c              C   s:   t dpd} d}x|  D ]}|dr|}qW |dkS )NZ	PY_CFLAGSr   z-O)r   z-O0z-Og)	sysconfigget_config_varr   rq   )ZcflagsZ	final_optr   rd   rd   re   python_is_optimized-  s    
r  ZnPZ0nZgettotalrefcountZ2PZ0Pr  c             C   s   t t|  t S )N)structcalcsize_header_align)fmtrd   rd   re   calcobjsize>  s    r  c             C   s   t t|  t S )N)r  r  _vheaderr  )r  rd   rd   re   calcvobjsizeA  s    r  i @  i   c             C   sp   dd l }t|}t|tkr(|jt@ sBt|tkrLt|jt@ rL||j7 }dt|||f }| ||| d S )Nr   z&wrong size for %s: got %d, expected %d)		_testcapiro   	getsizeofr   	__flags___TPFLAGS_HEAPTYPE_TPFLAGS_HAVE_GCZSIZEOF_PYGC_HEADr=  )testosizer  r   rx   rd   rd   re   check_sizeofH  s    

r  c                s    fdd}|S )Nc                s$    fdd} j |_  j|_|S )Nc           
      s   y dd l }t| }||}W n( tk
r6    Y nB   d  }}Y n0X x,D ]$}y||| P W qP   Y qPX qPW z
| |S |r|r||| X d S )Nr   )localer   	setlocaler   )r   kwdsr  rr  Zorig_localeloc)catstrr   localesrd   re   innerY  s$    



z1run_with_locale.<locals>.decorator.<locals>.inner)ra   __doc__)r   r  )r  r  )r   re   r   X  s    z"run_with_locale.<locals>.decoratorrd   )r  r  r   rd   )r  r  re   rS   W  s    c                s    fdd}|S )Nc                s"    fdd} j |_  j|_|S )Nc           	      s   y
t j}W n tk
r(   tdY nX dtjkr@tjd }nd }tjd< |  z
 | |S |d krrtjd= n
|tjd< t   X d S )Nztzset requiredZTZ)r   tzsetr   rs   rt   r   r  )r   r  r  Zorig_tz)r   tzrd   re   r  }  s    





z-run_with_tz.<locals>.decorator.<locals>.inner)ra   r  )r   r  )r  )r   re   r   |  s    zrun_with_tz.<locals>.decoratorrd   )r  r   rd   )r  re   rZ   {  s    i   i   r   c             C   s   dt tdt d}td| tjtjB }|d kr>td| f tt|	d||	d
   }|a|tkrrt}|td k rtd| f |ad S )Ni   )r  mgtz(\d+(\.\d+)?) (K|M|G|T)b?$zInvalid memory limit %rr   r  z$Memory limit %r too low to be useful)_1M_1Grc  rd  
IGNORECASEVERBOSEr   r   floatgrouplowerreal_max_memuseMAX_Py_ssize_t_2Gr   )limitZsizesr  Zmemlimitrd   rd   re   rW     s    $c               @   s$   e Zd Zdd Zdd Zdd ZdS )_MemoryWatchdogc             C   s   dj t d| _d| _d S )Nz/proc/{pid}/statm)r  F)r   r   r  procfilestarted)rT  rd   rd   re   rU    s    z_MemoryWatchdog.__init__c          
   C   s   yt | jd}W n> tk
rN } z td|t tj	  d S d }~X Y nX t
d}tjtj|g|tjd| _|  d| _d S )Nrz!/proc not available for stats: {}zmemory_watchdog.py)r  r  T)r+  r  r   rg   r   r   r   ro   r  flushr   
subprocessPopen
executableZDEVNULLmem_watchdogr   r  )rT  r   r   Zwatchdog_scriptrd   rd   re   start  s    
z_MemoryWatchdog.startc             C   s   | j r| j  | j  d S )N)r  r  Z	terminatewait)rT  rd   rd   re   stop  s    
z_MemoryWatchdog.stopN)ra   rb   rc   rU  r  r  rd   rd   rd   re   r    s   r  c                s    fdd}|S )Nc                s     fdd_ _S )Nc                s   j }j}tsd}n|}ts" sDt|| k rDtd|| d  trztrzt  tdj|| d d t }|	  nd }z
| |S |r|
  X d S )Ni  z'not enough memory: %.1fG minimum neededi   @z* ... expected peak memory use: {peak:.1f}G)Zpeak)r  memuser  rs   rt   r   r   r   r  r  r  )rT  r  r  maxsizeZwatchdog)dry_runr   r   rd   re   r     s*    

z.bigmemtest.<locals>.decorator.<locals>.wrapper)r  r  )r   )r  r  r  )r   r   re   r     s    zbigmemtest.<locals>.decoratorrd   )r  r  r  r   rd   )r  r  r  re   r2     s    !c                s    fdd}|S )Nc                sD   t tk r8tdkr$t dkr$tdq@tdtd  n | S d S )Nl    l        z-not enough memory: try a 32-bit build insteadz'not enough memory: %.1fG minimum neededi   @)r   r  rs   rt   )rT  )r   rd   re   r   
  s    z!bigaddrspacetest.<locals>.wrapperrd   )r   r   rd   )r   re   r3     s    c               @   s   e Zd Zdd ZdS )r+   c             C   s   t  }|| |S )N)rs   Z
TestResult)rT  r  r   rd   rd   re   run  s    zBasicTestRunner.runN)ra   rb   rc   r  rd   rd   rd   re   r+     s   c             C   s   | S )Nrd   )r   rd   rd   re   _id   s    r  c             C   s:   | dkrt  stt jS t| r&tS td| S d S )Nr   zresource {0!r} is not enabled)r   rs   r   r   r    r  r   )r   rd   rd   re   requires_resource#  s
    r  c             C   s   t dd| S )NT)cpython)impl_detail)r  rd   rd   re   r4   +  s    c             K   sV   t f |rtS | d krLt|\}}|r,d} nd} t| }| d|} t| S )Nz*implementation detail not available on {0}z%implementation detail specific to {0}z or )	r@   r  _parse_guardsr2  r  r   r   rs   r   )rx   guardsZ
guardnamesdefaultrd   rd   re   r  1  s    
r  c             C   s*   | sddidfS t |  d }| | fS )Nr  TFr   )r|   values)r  Zis_truerd   rd   re   r  >  s    r  c              K   s    t | \} }| t  |S )N)r  rJ  rp   Zpython_implementationr  )r  r   rd   rd   re   r@   H  s    c                s,   t tds S t  fdd}|S d S )Ngettracec           	      s.   t  }zt d   | |S t | X d S )N)ro   r  settrace)r   r  Zoriginal_trace)r   rd   re   r   X  s
    

zno_tracing.<locals>.wrapper)r   ro   r   r   )r   r   rd   )r   re   
no_tracingS  s    
r  c             C   s   t t| S )N)r  r4   )r  rd   rd   re   refcount_testc  s    r  c             C   sR   g }xB| j D ]8}t|tjr2t|| || q||r|| qW || _ d S )N)Z_testsr  rs   	TestSuite_filter_suiter   )suiteZpredZnewtestsr  rd   rd   re   r  n  s    
r  c             C   s   t tjttd k	d}|| }td k	r4t|  |jsD|j	sDt
| st|jdkrp|jsp|jd d }n4t|jdkr|js|jd d }nd}ts|d7 }t|d S )N)	verbosityZcapture_outputr   r   zmultiple errors occurredz!; run in verbose mode for details)r   ro   r   r   junit_xml_listr  r   Zget_xml_elementZtestsRunZskippedr   ZwasSuccessfulr   r  Zfailuresr
   )r  Zrunnerr   r   rd   rd   re   
_run_suitez  s"    
 r  c             C   s   t d krdS t |  S d S )NT)_match_test_funcid)r  rd   rd   re   
match_test  s    r  c             C   s   d| kot d|  S )Nry   z[?*\[\]])rc  search)r   rd   rd   re   _is_full_match_test  s    r  c                s~   | d krd} |d krd}d   | t kr4t| \}  |tkrHt|\}t| a t|a d k	shd k	rz fdd}|ad S )Nrd   c                s*   d}d} r | }r | }|o(| S )NTFrd   )test_idZacceptrf   )accept_funcignore_funcrd   re   match_function  s    z'set_match_tests.<locals>.match_function)_accept_test_patterns_compile_match_function_ignore_test_patternsrr   r  )Zaccept_patternsZignore_patternsr  rd   )r  r  re   set_match_tests  s    	r  c                s^   | sd }d} nHt tt| r(t| j}n.dttj| }t	|j
  fdd}|}| |fS )Nrd   |c                s$    | rdS t t | dS d S )NTry   )anyr   r   )r  )regex_matchrd   re   match_test_regex  s    z1_compile_match_function.<locals>.match_test_regex)allr   r  r  __contains__r   fnmatch	translaterc  r<  rd  )Zpatternsr   Zregexr  rd   )r  re   r    s    r  c              G   s   t jt jf}t  }xh| D ]`}t|trT|tjkrJ|t tj|  qzt	dqt||rj|| q|t 
| qW t|t t| d S )Nz)str arguments must be keys in sys.modules)rs   r  ZTestCaser  ru   ro   rz   ZaddTestZfindTestCasesr   Z	makeSuiter  r  r  )classesZvalid_typesr  clsrd   rd   re   r,     s    





c               C   s   d S )Nrd   rd   rd   rd   re   _check_docstrings  s    r#  ZWITH_DOC_STRINGSztest requires docstringsc             C   s`   dd l }|d krt}nd }|j| ||d\}}|rBtd||f trXtd| j|f  ||fS )Nr   )r   optionflagsz%d of %d doctests failedz,doctest (%s) ... %d tests with zero failures)doctestr   Ztestmodr
   r   ra   )r   r	  r$  r%  r   r  rd   rd   re   r-     s    c               C   s   t j fS )N)ro   rz   ru  rd   rd   rd   re   modules_setup.  s    r&  c             C   s:   dd t j D }t j  t j| t j|  d S )Nc             S   s"   g | ]\}}| d r||fqS )z
encodings.)rq   )r0  r  r  rd   rd   re   r1  5  s    z#modules_cleanup.<locals>.<listcomp>)ro   rz   r   r`  r   )Z
oldmodules	encodingsrd   rd   re   modules_cleanup1  s    
r(  c               C   s   t  tj fS )N)_thread_count	threading	_danglingru  rd   rd   rd   re   rL   T  s    c              G   s   d}xt |D ]}t tjf}|| kr*P |sda|d }td|d | d  |d t|f tj	d x |D ]}td|tj	d qlW tj	
  d }d }td t  qW d S )	Nd   Tr   zUWarning -- threading_cleanup() failed to cleanup %s threads (count: %s, dangling: %s)r   )r   zDangling thread: g{Gz?)ranger)  r*  r+  r,  environment_alteredr   r   ro   r  r  r   r   rt  )Zoriginal_valuesZ
_MAX_COUNTcountr  Zdangling_threadsthreadrd   rd   re   rM   W  s&    



c                s   t   fdd}|S )Nc                 s   t  }z |  S t|  X d S )N)rL   rM   )r   key)r   rd   re   r   z  s    zreap_threads.<locals>.decorator)r   r   )r   r   rd   )r   re   rN   v  s          N@c             c   s   t  }z
d V  W d t }||  }xjt  }||kr8P t |kr|t | }d||  d|dd| d| d	}t|td t  q&W X d S )Nz!wait_threads() failed to cleanup z threads after z.1fz seconds (count: z, old count: )g{Gz?)r)  r*  r   	monotonicrh  r   rt  )r   Z	old_countZ
start_timeZdeadliner0  Zdtrx   rd   rd   re   wait_threads_exit  s    
$
r6  c             C   s,   |  | |  r(d|dd}t|d S )Nzfailed to join the thread in z.1fz seconds)r   is_aliverh  )r1  r   rx   rd   rd   re   join_thread  s    
r8  c              C   sp   t tdrt tdsd S xRytdtj\} }W n tk
rF   P Y nX | dkrRP td|  tjd daqW d S )NwaitpidWNOHANGrB  r   z2Warning -- reap_children() reaped child process %s)r   T)	r   r   r9  r:  r   r   ro   r  r/  )r  statusrd   rd   re   rJ     s    	c             c   s*  t | } g }zZy$x| D ]}|  || qW W n*   trVtdt| t|f   Y nX d V  W d z|rt|  t  }}xltddD ]^}|d7 }x$|D ]}|	t
|t  d qW dd |D }|sP trtdt||f  qW W d d	d |D }|r"ttj td
t| X X d S )Nz/Can't start %d threads, only %d threads startedr      <   g{Gz?c             S   s   g | ]}|  r|qS rd   )r7  )r0  r  rd   rd   re   r1    s    z!start_threads.<locals>.<listcomp>z7Unable to join %d threads during a period of %d minutesc             S   s   g | ]}|  r|qS rd   )r7  )r0  r  rd   rd   re   r1    s    zUnable to join %d threads)r|   r  r   r   r   r   r   r5  r.  r   maxfaulthandlerZdump_tracebackro   r   rh  )ZthreadsZunlockr  r  ZendtimeZ	starttimer   rd   rd   re   rO     s>    


c          
   c   sn   t | |r<t| |}t| || z
|V  W d t| || X n.t| || z
d V  W d t | |rht| | X d S )N)r   r   r  delattr)r   rX  new_valreal_valrd   rd   re   rU     s    




c          	   c   sX   || kr0| | }|| |< z
|V  W d || |< X n$|| |< z
d V  W d || krR| |= X d S )Nrd   )r   itemrA  rB  rd   rd   re   rT   	  s    

c             C   s   t dd|  } | S )Ns   \[\d+ refs, \d+ blocks\]\r?\n?r   )rc  substrip)r  rd   rd   re   strip_python_stderr0	  s    rF  Z	getcountsz-types are immortal if COUNT_ALLOCS is definedc               C   s   t  S )N)r  Z_args_from_interpreter_flagsrd   rd   rd   re   args_from_interpreter_flags=	  s    rG  c               C   s   t  S )N)r  Z"_optim_args_from_interpreter_flagsrd   rd   rd   re   !optim_args_from_interpreter_flagsB	  s    rH  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
rK   c             C   s   t jj| d || _d S )Nr   )logginghandlersBufferingHandlerrU  matcher)rT  rL  rd   rd   re   rU  L	  s    zTestHandler.__init__c             C   s   dS )NFrd   )rT  rd   rd   re   shouldFlushU	  s    zTestHandler.shouldFlushc             C   s   |  | | j|j d S )N)r   r   r   __dict__)rT  r\  rd   rd   re   emitX	  s    
zTestHandler.emitc             K   s.   d}x$| j D ]}| jj|f|rd}P qW |S )NFT)r   rL  matches)rT  r  r   drd   rd   re   rP  \	  s    zTestHandler.matchesN)ra   rb   rc   rU  rM  rO  rP  rd   rd   rd   re   rK   K	  s   	c               @   s    e Zd ZdZdd Zdd ZdS )rV   )rx   rb  c             K   s<   d}x2|D ]*}|| }| |}| |||s
d}P q
W |S )NTF)rJ  match_value)rT  rQ  r  r   r  r  dvrd   rd   re   rP  k	  s    

zMatcher.matchesc             C   sH   t |t |krd}n.t |tk	s,|| jkr6||k}n||dk}|S )NFr   )r   ru   _partial_matchesfind)rT  r  rS  r  r   rd   rd   re   rR  |	  s    
zMatcher.match_valueN)ra   rb   rc   rT  rP  rR  rd   rd   rd   re   rV   g	  s   c           
   C   sZ   t d k	rt S td } ytt|  d}W n tttfk
rF   d}Y nX t|  |a |S )Nr   TF)_can_symlinkr   r   symlinkr   NotImplementedErrorr   rg  )Zsymlink_pathcanrd   rd   re   r   	  s    

c             C   s    t  }d}|r| S t|| S )Nz*Requires functional symlink implementation)r   rs   r   )r  okrx   rd   rd   re   r.   	  s    c           	   C   s   t d k	rt S ttdsd} nt }tj|d\}}zttd}y`t|dd t|dd t|	 dd t
 }td	|}|d kpt|d
dk} W n tk
r   d} Y nX W d Q R X W d tt t| t| X | a | S )NsetxattrF)dirr4  s	   user.testr   s   trusted.foos   42z2.6.(\d{1,2})r   '   )
_can_xattrr   r   r  r  Zmkstempr+  r   r[  r5  rp   r   rc  rd  r   r  r   r   r   )rY  Ztmp_dirZtmp_fpZtmp_namefpZkernel_versionr  rd   rd   re   	can_xattr	  s,    

r`  c             C   s    t  }d}|r| S t|| S )Nz(no non-broken extended attribute support)r`  rs   r   )r  rZ  rx   rd   rd   re   r7   	  s    c             C   s   t tdstd| S td krtd }ttjP}z>y|| daW n& tk
rp } z|aW d d }~X Y nX W d t	| X W d Q R X trdt }t|| S | S d S )NAF_UNIXzNo UNIX SocketsZcan_bind_unix_socketFz%Requires a functional unix bind(): %s)
r   r   rs   r   _bind_nix_socket_errorr   ra  r	  r   r   )r  r   r
  r   rx   rd   rd   re   r=   	  s    

c          	   C   s^   t j| dH}|j}| }||kr,| }ytj||S  tk
rN   dS X W d Q R X d S )N)r\  F)	r  ZNamedTemporaryFilerv   upperr  r   r   samefiler   )Z	directorybase	base_pathZ	case_pathrd   rd   re   r   	  s    )rf   c            C   s>   t t| t t| }|r(|t |8 }t dd |D }|S )Nc             s   s&   | ]}| d r|dr|V  qdS )___N)rq   endswith)r0  r  rd   rd   re   	<genexpr>	  s    z&detect_api_mismatch.<locals>.<genexpr>)r  r\  )Zref_apiZ	other_apirf   Zmissing_itemsrd   rd   re   r;   	  s
    c             C   s   |d kr|j f}nt|tr"|f}t|}x^t|D ]R}|ds4||krLq4t||}t|dd |ks|t|ds4t|tj	s4|
| q4W | |j| d S )Nrg  rb   )ra   r  ru   r  r\  rq   r   r   types
ModuleTypeaddZassertCountEqual__all__)Z	test_caser   Zname_of_moduleZextraZ	blacklistZexpectedrv   r   rd   rd   re   r<   	  s    )



c               @   s$   e Zd ZdZdZdd Zdd ZdS )rX   Nc       
   	   C   sr  t jdrdd l}|jj| _d}| j|| _| j| j|B  ydd l	}|j
 W n ttfk
rl   Y nLX i | _x|j|j|jgD ].}|
||j}|||j}||f| j|< qW ntd k	r
y*ttj| _ttjd| jd f W n ttfk
r   Y nX t jdkrndddd	g}tj|tjtjd
}| | d }	W d Q R X |	 dkrntdddd | S )Nr   r   r   r   r   z/usr/bin/defaultsrK  zcom.apple.CrashReporterZ
DialogType)r   r  s	   developerz:this test triggers the Crash Reporter, that is intentionalr   T)endr  ) ro   rp   rq   r   r   r   _k32SetErrorMode	old_valuemsvcrtCrtSetReportModer   rn   	old_modesCRT_WARN	CRT_ERROR
CRT_ASSERTZCRTDBG_MODE_FILECrtSetReportFileZCRTDBG_FILE_STDERRr   Z	getrlimitRLIMIT_CORE	setrlimitr   r   r  r  PIPEZcommunicaterE  r   )
rT  r   ZSEM_NOGPFAULTERRORBOXrs  report_typeold_modeold_filecmdprocr   rd   rd   re   rw  ;
  sN    




zSuppressCrashReport.__enter__c          	   G   s   | j d krd S tjdrl| j| j  | jrdd l}xj| j D ]$\}\}}|	|| |
|| qBW n6td k	ryttj| j  W n ttfk
r   Y nX d S )Nr   r   )rr  ro   rp   rq   rp  rq  ru  rs  r   rt  ry  r   r{  rz  r   r   )rT  rx  rs  r}  r~  r  rd   rd   re   ry  |
  s    
zSuppressCrashReport.__exit__)ra   rb   rc   rr  ru  rw  ry  rd   rd   rd   re   rX   2
  s   Ac          	      sr   t  d yj W n$ ttfk
r@   t d Y nX d  fdd}| | t| d S )NFTc                  s     rt  n
t d S )N)r  r@  rd   )attr_is_local	attr_nameobject_to_patchrr  rd   re   cleanup
  s    zpatch.<locals>.cleanup)r   rN  r   r   Z
addCleanupr  )Ztest_instancer  r  Z	new_valuer  rd   )r  r  r  rr  re   patch
  s    


r  c             C   sF   ydd l }W n tk
r    Y nX | r4tddd l}|| S )Nr   zUrun_in_subinterp() cannot be used if tracemalloc module is tracing memory allocations)tracemallocrn   
is_tracingrs   rt   r  run_in_subinterp)r  r  r  rd   rd   re   r  
  s    
r  c                sH   G  fddd|}d ||| |  tt t  |   d S )Nc                   s   e Zd Z fddZdS )z%check_free_after_iterating.<locals>.Ac                s*   d yt  W n tk
r$   Y nX d S )NT)nextStopIteration)rT  )doneitrd   re   __del__
  s
    z-check_free_after_iterating.<locals>.A.__del__N)ra   rb   rc   r  rd   )r  r  rd   re   A
  s   r  F)r:  r  r  rt  Z
assertTrue)r  r  r"  r   r  rd   )r  r  re   check_free_after_iterating
  s    	r  c             C   s|   ddl m}m}m} | }|| xP|jD ]F}| r@|| kr@q.t||}| rPn
|d krZq.||d d kr.|d S q.W d S )Nr   )	ccompilerr  spawn)	Z	distutilsr  r  r  Znew_compilerZcustomize_compilerZexecutablesr   Zfind_executable)Z	cmd_namesr  r  r  Zcompilerrv   r  rd   rd   re   r\   
  s    	

c             C   s@   d}t r6| |k r6td kr.tddg dkatr6|} t| S )Ngh㈵>Zgetpropzro.kernel.qemu   1)r?   _is_android_emulatorr  Zcheck_outputrE  ro   rB   )intervalZminimum_intervalrd   rd   re   rB   
  s    c           
   c   s>   t j } t }zt  d V  W d |r8tj| dd X d S )NT)r   Zall_threads)ro   r   r5  r?  
is_enabledr  r  )r/  r  rd   rd   re   disable_faulthandler  s    

r  c        	      C   s  t jdr8ytd} t| d S  tk
r6   Y nX d}ttdrjytd}W n t	k
rh   Y nX d }t jdkrydd l
}|j W n ttfk
r   Y n0X i }x(|j|j|jfD ]}||d||< qW zpd}xft|D ]Z}yt|}W n4 t	k
r( } z|jtjkr W d d }~X Y qX t| |d7 }qW W d |d k	rzx*|j|j|jfD ]}||||  q`W X |S )	N)ZlinuxZfreebsdz/proc/self/fdr      sysconfSC_OPEN_MAXr  r   )ro   rp   rq   r   r   r   r   r   r  r   rs  rt  r   rn   rv  rw  rx  r.  dupr  ZEBADFr   )	namesZMAXFDru  rs  r}  r0  r/  Zfd2r   rd   rd   re   r]     sP    





c               @   s$   e Zd Zdd Zdd Zdd ZdS )SaveSignalsc          	   C   sj   dd l }|| _ ttd|j| _x>dD ]6}yt||}W n tk
rN   w&Y nX | j| q&W i | _d S )Nr   r   )SIGKILLSIGSTOP)	signalr|   r.  NSIGsignalsr   r   rg  rJ  )rT  r  Zsignamesignumrd   rd   re   rU  V  s    
zSaveSignals.__init__c             C   s4   x.| j D ]$}| j|}|d kr"q|| j|< qW d S )N)r  r  	getsignalrJ  )rT  r  handlerrd   rd   re   savec  s
    zSaveSignals.savec             C   s*   x$| j  D ]\}}| j|| qW d S )N)rJ  r   r  )rT  r  r  rd   rd   re   restoreo  s    zSaveSignals.restoreN)ra   rb   rc   rU  r  r  rd   rd   rd   re   r  M  s   	r  c              C   s   dd l } | jS )Nr   )r  ZWITH_PYMALLOC)r  rd   rd   re   with_pymalloct  s    r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )FakePathc             C   s
   || _ d S )N)r   )rT  r   rd   rd   re   rU  |  s    zFakePath.__init__c             C   s   d| j dS )Nz
<FakePath >)r   )rT  rd   rd   re   __repr__  s    zFakePath.__repr__c             C   s6   t | jts$t | jtr,t| jtr,| jn| jS d S )N)r  r   BaseExceptionr   rf  )rT  rd   rd   re   
__fspath__  s
    zFakePath.__fspath__N)ra   rb   rc   rU  r  r  rd   rd   rd   re   r  y  s   r  c               @   s   e Zd Zdd Zdd ZdS )
_ALWAYS_EQc             C   s   dS )NTrd   )rT  otherrd   rd   re   __eq__  s    z_ALWAYS_EQ.__eq__c             C   s   dS )NFrd   )rT  r  rd   rd   re   __ne__  s    z_ALWAYS_EQ.__ne__N)ra   rb   rc   r  r  rd   rd   rd   re   r    s   r  c               @   s   e Zd Zdd Zdd ZdS )_LARGESTc             C   s
   t |tS )N)r  r  )rT  r  rd   rd   re   r    s    z_LARGEST.__eq__c             C   s   dS )NFrd   )rT  r  rd   rd   re   __lt__  s    z_LARGEST.__lt__N)ra   rb   rc   r  r  rd   rd   rd   re   r    s   r  c               @   s   e Zd Zdd Zdd ZdS )	_SMALLESTc             C   s
   t |tS )N)r  r  )rT  r  rd   rd   re   r    s    z_SMALLEST.__eq__c             C   s   dS )NFrd   )rT  r  rd   rd   re   __gt__  s    z_SMALLEST.__gt__N)ra   rb   rc   r  r  rd   rd   rd   re   r    s   r  c          	   c   s.   t  }zt |  d V  W d t | X d S )N)ro   get_int_max_str_digitsset_int_max_str_digits)Z
max_digitsZcurrentrd   rd   re   adjust_int_max_str_digits  s
    

r  )T)F)rd   rd   F)F)N)NF)F)r$  F)N)F)T)N)NN)Nr   )r3  )r  )N)Nrd   rd   )rd   (  ra   rn   Zcollections.abccollections
contextlibZdatetimer  r?  r  r   r  rm   importlib.utilr  Zlogging.handlersrI  r  r   rp   rc  r   r   r   r  r  ro   r  r  r)  r+  r   rk  rs   Zurllib.errorrM  rg   Z
testresultr   Zmultiprocessing.processZmultiprocessingzlibrE  bz2Zlzmar   rn  r   r	   r
   r   rt   r   contextmanagerrk   r   r   r   r9   r:   r   r5   r   r   r   r  r
  r   r   r   r   r   r   rq   r   r   r   r   r   r   r   r   r   r   r   r    r!   r   r"   r#   r$   rC   ZHOSTv4r  r  r  rE   rF   rH   r  rD   r  r   ZSOCK_MAX_SIZEZ
skipUnlessr  __getformat__r6   r8   r/   r0   r1   r>   r   r?   rA   rv   r   r   r  ZTEST_HTTP_URLZFS_NONASCII	characterfsdecodefsencodeUnicodeErrorZTESTFN_UNICODEZunicodedata	normalizegetfilesystemencodingZTESTFN_ENCODINGZTESTFN_UNENCODABLEZgetwindowsversionencodeUnicodeEncodeErrorr   decodeUnicodeDecodeErrorZTESTFN_UNDECODABLEZTESTFN_NONASCIIr!  r   r[   r   r#  r   rI   r   r   r   r   ZTEST_SUPPORT_DIRr(  r   rI  r   r   rY   r6  r%   rG   objectrQ  rp  rP   rQ   r   abcMutableMappingrR   r  r&   r   r  r'   r  r(   r)   r  r*   r  r   r   r   rt  r  r  r  r  r  r  r  r  r  r  rS   rZ   r  r  r  Z_4Gr  r  rW   r  r2   r3   r+   r  r  r4   r  r  r@   r  r  r  r  r  r  r  r  r  r  r  r,   r#  r  ZMISSING_C_DOCSTRINGSr  ZHAVE_DOCSTRINGSZrequires_docstringsr-   r&  r(  r/  rL   rM   rN   r6  r8  rJ   rO   rU   rT   rF  r   Zrequires_type_collectingrG  rH  rJ  rK  rK   rV   rV  r   r.   r^  r`  r7   rb  r=   r   r;   r<   rX   r  r  r  r\   r  rB   r  r]   r  r  r  r  r^   total_orderingr  r_   r  r`   r  rd   rd   rd   re   <module>   s  










2	
!
J			>&	
&2' 5M		
$#

0




!




"

#
	"

 :_";'	




