<!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>
3
 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"m#Z# yddl$Z$ddl%Z%W n ek
r6   dZ$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 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`g[Z-G dad de.Z/G dbd de/Z0G dcd de/Z1G ddd dej2Z3ej4d\dfdgZ5d]f didjdZ6dkdl Z7dmdn Z8dod; Z9dpd< Z:f f dhfdqdZ;drd7 Z<dZ=dZ>da?da@dZAdhZBdaCdsd ZDdtd ZEdud ZFdvdw ZGejjHdxrd^dydzZId{d| ZJd}d~ ZKdd ZLdd ZMnejNZJejOZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd" ZTd_dd#ZUdd ZVdd$ ZWdd% ZXdd& ZYdZZdZ[ej\ej]fddHZ^eZfddIZ_ddK Z`dd Zaea Zbdd ZcdbZddeZeejfegjhdjHddZiejfe(dZjejfe)dZkejfe*dZlejfe+dZmejjHdZnejodZpepdk	o6epdkZqejdkrTeqrNdndZrndZrejsdkrjdZtndZtdjuetejv ZtdZwxLdfD ]BZxyejyejzexexkre{W n e{k
r   Y nX exZwP qW etd Z|ejdkrddl}Z}e}j~de|Z|ej ZdZejsdkrdej jdkretd Zyeje W n ek
rL   Y nX edeef  dZnBejdkrydje W n& ek
r   etdjedă ZY nX dZxFdgD ]<Zsyesje W n& ek
r   ejzetes ZP Y nX qW ewretd ew ZndZej ZdhZej4dhdd˄Zej4didd̈́Zej4djddZeedЃrfej4ddL ZejjejjeZejjeZejjed҃ZdkddZdd Zdd\ Zddׄ Zddd؜dd'ZddJ ZG dd܄ deZdlddބZej4ddS Zej4ddT ZG dd deZG ddU dUejjZG dd deZG dd( d(eZeeejdZeeejdZeeejdZej4df ddd,Zej4dd Zdd Zdd Zdd Zdd Zej4dd Zdd ZdZdZeedrde ZdZed Zdd Zdd ZdmZdnZdd ZddV Zdd] ZdoZde Zde Zde ZejZȐddZ ZG dd dZʐdpdd4Zːd	d5 ZG d
d- d-Z͐dd Zΐdd Zϐdd? ZАdd6 ZѐdqddZdaӐdd@ ZԐdd ZՐddC Z֐dd Zאdd Zؐdd Zِdd Zdadaܐdd  Zݐd!d" Zސd#d$ Zߐd%d. Zd&d' Zeփ 
oejdk
oejod( Zejdk	
oe Zejfed)Zdrd*d/Zd+d, Zd-d. ZdhZd/dO Zd0dP Zd1dQ Zej4dsd3d4Zd5dM Zej4dtd6dRZej4d7dX Zej4d8dW Zd9d: Zejeed;d<Zd=d> Zd?d@ ZG dAdN dNejjZG dBdY dYeZdadCd  ZdDd0 ZdadEdF ZdGd9 Z dHd! Zf dIdJd=Zdf f fdKd>ZG dLd[ d[ZdMdN ZdOdP Zf fdQdRZg fdSd_Zda	dTdE Z
ej4dUdV ZdWd` ZG dXdY dYZG dZd[ d[ZdS (u  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__requires_android_levelrequires_multiprocessing_queue	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_countc               @   s   e Zd ZdS )r	   N)__name__
__module____qualname__ rb   rb   -/opt/alt/python36/lib64/python3.6/__init__.pyr	   u   s   c               @   s   e Zd ZdS )r
   N)r_   r`   ra   rb   rb   rb   rc   r
   x   s   c               @   s   e Zd ZdS )r   N)r_   r`   ra   rb   rb   rb   rc   r   {   s   c               @   s   e Zd ZdS )r   N)r_   r`   ra   rb   rb   rb   rc   r   ~   s   Tc             c   s8   | r.t j  t jddt d V  W d Q R X nd V  d S )Nignorez.+ (module|package))warningscatch_warningsfilterwarningsDeprecationWarning)rd   rb   rb   rc   _ignore_deprecated_imports   s    
ri   F)required_onc            C   sf   t |T y
tj| S  tk
rV } z&tjjt|r8 tj	t
|W Y d d }~X nX W d Q R X d S )N)ri   	importlibr   ImportErrorsysplatform
startswithtupleunittestSkipTeststr)name
deprecatedrj   msgrb   rb   rc   r      s    	

c             C   s^   | t jkrt|  t j| = x>tt jD ]0}|| ks@|j| d r&t j| ||< t j|= q&W d S )N.)rm   modules
__import__listro   )rt   orig_modulesmodnamerb   rb   rc   _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)rm   rx   KeyError)rt   r{   Zsavedrb   rb   rc   _save_and_block_module   s    

r   c             C   s   | r
t jS dd S )Nc             S   s   | S )Nrb   )frb   rb   rc   <lambda>   s    z$anticipate_failure.<locals>.<lambda>)rq   ZexpectedFailure)Z	conditionrb   rb   rc   r9      s    c             C   sF   |d krd}t jjt jjt jjt}|j| ||d}|j| |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_testsrb   rb   rc   r:      s    
c             C   s   t | i }g }t| | zfyHx|D ]}t|| q&W x |D ]}t||s>|j| q>W tj| }W n tk
r~   d }Y nX W d x|j D ]\}	}
|
tj	|	< qW x|D ]}tj	|= qW X |S Q R X d S )N)
ri   r}   r   appendrk   r   rl   itemsrm   rx   )rt   ZfreshZblockedru   r{   Znames_to_removeZ
fresh_nameZblocked_nameZfresh_moduleZ	orig_namemoduleZname_to_removerb   rb   rc   r      s$    





c             C   s>   yt | |}W n& tk
r4   tjd| |f Y nX |S d S )Nzobject %r has no attribute %r)getattrAttributeErrorrq   rr   )objrt   Z	attributerb   rb   rc   r5     s
    c             C   s   | a d S )N)_original_stdout)stdoutrb   rb   rc   r   )  s    c               C   s
   t ptjS )N)r   rm   r   rb   rb   rb   rc   r   -  s    c             C   s&   yt j| = W n tk
r    Y nX d S )N)rm   rx   r~   )rt   rb   rb   rc   r   0  s    c             G   sn   y|| S  t k
rh } zDtdkrHtd|jj|f  td|j|f  tj| tj || S d }~X nX d S )N   z%s: %szre-run %s%r)	OSErrorr   print	__class__r_   r   chmodstatS_IRWXU)r   funcargserrrb   rb   rc   
_force_run6  s    r   winc             C   s   | | |r|}nt jj|\}}|p(d}d}x<|dk rjt j|}|rJ|n||ksVd S tj| |d9 }q0W tjd| tdd d S )Nrw   gMbP?g      ?r   z)tests may fail, delete still pending for    )
stacklevel)	r   r   splitlistdirtimesleepre   warnRuntimeWarning)r   pathnamewaitallr   rt   timeoutLrb   rb   rc   _waitforA  s    



r   c             C   s   t tj|  d S )N)r   r   r   )filenamerb   rb   rc   _unlinkb  s    r   c             C   s   t tj|  d S )N)r   r   rmdir)r   rb   rb   rc   _rmdire  s    r   c                s,    fdd t  | dd t dd |  d S )Nc                s   xt | tj| D ]}tjj| |}ytj|j}W n< tk
rn } z td||f t	j
d d}W Y d d }~X nX tj|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   rm   
__stderr__r   S_ISDIRr   r   r   )r   rt   fullnamemodeexc)_rmtree_innerrb   rc   r   i  s    

z_rmtree.<locals>._rmtree_innerT)r   c             S   s   t | tj| S )N)r   r   r   )prb   rb   rc   r   x  s    z_rmtree.<locals>.<lambda>)r   )r   rb   )r   rc   _rmtreeh  s    r   c             C   s^   ydd l }W n tk
r    Y n:X |jt| d }|jjj| |t|}|rZ|d | S | S )Nr   r   )ctypesrl   Zcreate_unicode_bufferlenwindllkernel32ZGetLongPathNameW)r   r   bufferZlengthrb   rb   rc   	_longpathz  s    
r   c                sF   yt j|  d S  tk
r"   Y nX  fdd  |  tj|  d S )Nc                s   x~t | tj| D ]l}tjj| |}ytj|j}W n tk
rJ   d}Y nX tj	|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   rt   r   r   )r   rb   rc   r     s    

z_rmtree.<locals>._rmtree_inner)shutilr   r   r   r   )r   rb   )r   rc   r     s    
c             C   s   | S )Nrb   )r   rb   rb   rc   r     s    c             C   s*   yt |  W n ttfk
r$   Y nX d S )N)r   FileNotFoundErrorNotADirectoryError)r   rb   rb   rc   r     s    c             C   s&   yt |  W n tk
r    Y nX d S )N)r   r   )r   rb   rb   rc   r     s    r   c             C   s&   yt |  W n tk
r    Y nX d S )N)r   r   )r   rb   rb   rc   r     s    c             C   sB   t jj| }tjjtjj| }tjj|| d }tj|| |S )Nc)	rk   utilcache_from_sourcer   r   r   abspathr   rename)sourceZpyc_fileZup_oneZ
legacy_pycrb   rb   rc   make_legacy_pyc  s
    r   c             C   s\   t |  xNtjD ]D}tjj|| d }t|d  x dD ]}ttjj||d q8W qW d S )Nz.pyr    r   r   )optimization)r   r   r   )	r   rm   r   r   r   r   rk   r   r   )r|   r   r   optrb   rb   rc   r     s    
c                 s  t tdrtjS d } tjjdrdd ldd ld}d}G fdddj}j	j
}|j }|sjj | }jj }|j||j|j|j|}|sj t|j|@ sd} ntjdkrVdd	lm}	m m}
m} dd
lm} |	j|d}|j dkrd} nFG  fddd|}| }|
|}|j|dk sR|j|dk rVd} | sy.ddlm} | }|j  |j   |j!  W n\ t"k
r } z>t#|}t$|dkr|d d d }dj%t&|j'|} W Y d d }~X 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)r_   r`   ra   wintypesZBOOLDWORD_fields_rb   )r   rb   rc   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)r_   r`   ra   r   rb   )r   rb   rc   ProcessSerialNumber   s   r   z#cannot run without OS X gui process)Tk2   z [...]zTk unavailable due to {}: {}))hasattr_is_gui_availabler   rm   rn   ro   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	Exceptionrs   r   formattyper_   reason)r   Z	UOI_FLAGSZWSF_VISIBLEr   ZdllhZuofZneededresr   r   r   r   Zapp_servicesr   ZpsnZpsn_pr   rooteZ
err_stringrb   )r   r   rc   r     sh    

r   c             C   s   t d kp| t kS )N)r   )resourcerb   rb   rc   r      s    c             C   s>   t | s |d krd|  }t|| dkr:t  r:ttjd S )Nz"Use of the %r resource not enabledgui)r    r   r   r   )r   rv   rb   rb   rc   r!   %  s    c                s    fdd}|S )Nc                s$   t j  fdd}|_|S )Nc                 s   t j krzt j jddd }yttt|jd}W n tk
rL   Y n.X |k rzdjtt	}t
jd||f  | |S )N-r   r   rw   z(%s version %s or higher required, not %s)rn   systemreleaser   rp   mapint
ValueErrorr   rs   rq   rr   )r   kwversion_txtversionmin_version_txt)r   min_versionsysnamerb   rc   wrapper6  s    z:_requires_unix_version.<locals>.decorator.<locals>.wrapper)	functoolswrapsr   )r   r   )r   r   )r   rc   	decorator5  s    z)_requires_unix_version.<locals>.decoratorrb   )r   r   r   rb   )r   r   rc   _requires_unix_version.  s    r   c              G   s
   t d| S )NZFreeBSD)r   )r   rb   rb   rc   r"   I  s    c              G   s
   t d| S )NZLinux)r   )r   rb   rb   rc   r#   R  s    c                 s    fdd}|S )Nc                s"   t j  fdd}|_|S )Nc                 sx   t jdkrntj d }yttt|jd}W n tk
rB   Y n,X |k rndjtt	}t
jd||f  | |S )Nr   r   rw   z&Mac OS X %s or higher required, not %s)rm   rn   Zmac_verrp   r   r   r   r   r   rs   rq   rr   )r   r   r   r   r   )r   r   rb   rc   r   c  s    
z4requires_mac_ver.<locals>.decorator.<locals>.wrapper)r   r   r   )r   r   )r   )r   rc   r   b  s    z#requires_mac_ver.<locals>.decoratorrb   )r   r   rb   )r   rc   r$   [  s    z	127.0.0.1z::1c             C   s"   t j | |}t|}|j  ~|S )N)socketrG   close)familyZsocktypeZtempsockportrb   rb   rc   rF   }  s
    8c             C   s   | j tjkr| jtjkrttdr>| jtjtjdkr>t	dttdrdt
jkry | jtjtjdkrpt	dW n tk
r   Y nX ttdr| jtjtjd | j|df | j 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)sockhostr   rb   rb   rc   rG     s     



c             C   s:   y| j | W n& tk
r4   | j  tjdY nX d S )Nzcannot bind AF_UNIX sockets)r  PermissionErrorr   rq   rr   )r  Zaddrrb   rb   rc   rI     s
    c              C   sZ   t jrVd } z<y"t j t jt j} | jtdf dS  tk
rB   Y nX W d | rT| j  X dS )Nr   TF)r   Zhas_ipv6ZAF_INET6r  r  HOSTv6r   r   )r  rb   rb   rc   _is_ipv6_enabled  s    

r	  c                s   t j  fdd}|S )Nc                 sN   y | | W n: t k
rH } zdt|kr6tjd W Y d d }~X nX d S )NZCERTIFICATE_VERIFY_FAILEDz.system does not contain necessary certificates)IOErrorrs   rq   rr   )r   kwargsr   )r   rb   rc   dec  s    
z&system_must_validate_cert.<locals>.dec)r   r   )r   r  rb   )r   rc   system_must_validate_cert  s    	r  r   i      ZdoubleZIEEEztest requires IEEE 754 doubleszrequires zlibzrequires gzipzrequires bz2zrequires lzmajavaANDROID_API_LEVELwin32z/system/bin/shz/bin/shz$testz@testz	{}_{}_tmp   æ   İ   Ł   φ   К   א   ،   ت   ก       €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   w         r   c             c   s   d}| d kr&t j } d}tjj| } nBytj|  d}W n. tk
rf   |sN tjd|  t	dd Y nX |rttj
 }z
| V  W d |r|tj
 krt|  X d S )NFTz+tests may fail, unable to create temp dir:    )r   )tempfilemkdtempr   r   realpathmkdirr   re   r   r   getpidr   )r   quietZdir_createdpidrb   rb   rc   temp_dir  s&    


r,  c             c   sf   t j }yt j|  W n. tk
rD   |s, tjd|  tdd Y nX zt j V  W d t j| X d S )Nz)tests may fail, unable to change CWD to: r$  )r   )r   getcwdchdirr   re   r   r   )r   r*  Z	saved_dirrb   rb   rc   
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/  )rt   r*  Z	temp_pathZcwd_dirrb   rb   rc   r     s    umaskc             c   s&   t j| }z
d V  W d t j| X d S )N)r   r1  )r1  Zoldmaskrb   rb   rc   rJ     s    

datac             C   sb   t jj| r| S |d k	r&t jj|| } tgtj }x*|D ]"}t jj|| }t jj|r8|S q8W | S )N)r   r   isabsr   TEST_HOME_DIRrm   exists)r   Zsubdirr   Zdnfnrb   rb   rc   r   #  s    
 c             C   s(   t j| t jt jB t jB }t j| d S )N)r   openO_WRONLYO_CREATO_TRUNCr   )r   fdrb   rb   rc   r   5  s    c             C   s,   t | j }dd |D }dj|}d| S )Nc             S   s   g | ]}d | qS )z%r: %rrb   ).0Zpairrb   rb   rc   
<listcomp>=  s    zsortdict.<locals>.<listcomp>z, z{%s})sortedr   r   )dictr   Z	reprpairsZ
withcommasrb   rb   rc   rZ   :  s    
c              C   s*   t td} z| j S | j  tt X d S )Nwb)r7  r   filenor   r   )r   rb   rb   rc   make_bad_fdA  s
    
rB  )linenooffsetc            C   sp   | j t}t|dd W d Q R X |j}| j|j |d k	rJ| j|j| | j|j |d k	rl| j|j| d S )Nz<test string>exec)assertRaisesSyntaxErrorcompileZ	exceptionZassertIsNotNonerC  assertEqualrD  )testcaseZ	statementrC  rD  cmr   rb   rb   rc   r%   M  s    c                sV  dd l }dd l}jdd |jj| d jdd }tjjt	|} fdd}tjj
|r|||}|d k	rt|S t| td trtd	|  t d
 |jj }tr|jjd |j| dd}tr|jjddkrtj|d}zBt|d.}	|j }
x|
r|	j|
 |j }
 qW W d Q R X W d |j  X ||}|d k	rF|S td| d S )Nr   checkr   /r   c                s>   t | f }d kr|S |r2|jd |S |j  d S )Nr   )r7  seekr   )r6  r   )r   rL  r   rb   rc   check_valid_filea  s    
z*open_urlresource.<locals>.check_valid_fileZurlfetchz	fetching %s ...)r   Accept-Encodinggzip   )r   zContent-Encoding)Zfileobjr@  zinvalid resource %r)rP  rQ  )Zurllib.requestZurllib.parsepopparseZurlparser   r   r   r   TEST_DATA_DIRr5  r   r!   r   r   r   ZrequestZbuild_openerrQ  Z
addheadersr   r7  ZheadersgetZGzipFilereadwriter   r
   )Zurlr   r   urllibr   r6  rO  r   openeroutsrb   )r   rL  r   rc   rH   X  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_listrb   rb   rc   __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 )Nr   z%r has no attribute %rrS  )r   r_  r`  r   re   WarningMessage_WARNING_DETAILSr   )ra  attrrb   rb   rc   __getattr__  s
    zWarningsRecorder.__getattr__c             C   s   | j | jd  S )N)r_  r`  )ra  rb   rb   rc   re     s    zWarningsRecorder.warningsc             C   s   t | j| _d S )N)r   r_  r`  )ra  rb   rb   rc   reset  s    zWarningsRecorder.resetN)r_   r`   ra   rb  rf  propertyre   rg  rb   rb   rb   rc   r^    s   r^  c             c   s
  t jd}|jjd}|r"|j  tjdd }t jd jd t	|V  W d Q R X t
|}g }xz| D ]r\}}d}	xH|d d  D ]8}|j}
tj|t|
tjrt|
j|rd}	|j| qW |	 rf| rf|j||jf qfW |rtd|d	  |rtd
|d	  d S )Nr   Z__warningregistry__T)recordre   alwaysFzunhandled warning %sr   z)filter (%r, %s) did not catch any warning)rm   	_getframe	f_globalsrW  clearre   rf   rx   simplefilterr^  rz   messagerematchrs   I
issubclassr   remover   r_   AssertionError)filtersr*  frameregistrywZreraisemissingrv   catseenZwarningrb   rb   rc   _filterwarnings  s0    
r}  c              O   s.   |j d}| s$dtff} |d kr$d}t| |S )Nr*  r   T)rW  Warningr}  )rv  r  r*  rb   rb   rc   rQ     s    

c             c   sB   t jdd }t jdtd d V  t  W d Q R X | j|g  d S )NT)ri  rj  )category)re   rf   rg   ResourceWarning
gc_collectrI  )rJ  Zwarnsrb   rb   rc   rR     s
    c               @   s$   e Zd Zdd Zdd Zdd ZdS )r   c             G   sN   t jj | _x<|D ]4}|t jkrt j| }|j|kr>t j|j= t j|= qW d S )N)rm   rx   copyoriginal_modulesr_   )ra  Zmodule_namesZmodule_namer   rb   rb   rc   rb    s    




zCleanImport.__init__c             C   s   | S )Nrb   )ra  rb   rb   rc   	__enter__  s    zCleanImport.__enter__c             G   s   t jj| j d S )N)rm   rx   r   r  )ra  
ignore_excrb   rb   rc   __exit__  s    zCleanImport.__exit__N)r_   r`   ra   rb  r  r  rb   rb   rb   rc   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 )rS   c             C   s   t j| _i | _d S )N)r   r  _environ_changed)ra  rb   rb   rc   rb    s    zEnvironmentVarGuard.__init__c             C   s
   | j | S )N)r  )ra  envvarrb   rb   rc   __getitem__  s    zEnvironmentVarGuard.__getitem__c             C   s*   || j kr| jj|| j |< || j|< d S )N)r  r  rW  )ra  r  valuerb   rb   rc   __setitem__!  s    
zEnvironmentVarGuard.__setitem__c             C   s2   || j kr| jj|| j |< || jkr.| j|= d S )N)r  r  rW  )ra  r  rb   rb   rc   __delitem__'  s    

zEnvironmentVarGuard.__delitem__c             C   s
   | j j S )N)r  keys)ra  rb   rb   rc   r  .  s    zEnvironmentVarGuard.keysc             C   s
   t | jS )N)iterr  )ra  rb   rb   rc   __iter__1  s    zEnvironmentVarGuard.__iter__c             C   s
   t | jS )N)r   r  )ra  rb   rb   rc   __len__4  s    zEnvironmentVarGuard.__len__c             C   s   || |< d S )Nrb   )ra  r  r  rb   rb   rc   set7  s    zEnvironmentVarGuard.setc             C   s
   | |= d S )Nrb   )ra  r  rb   rb   rc   unset:  s    zEnvironmentVarGuard.unsetc             C   s   | S )Nrb   )ra  rb   rb   rc   r  =  s    zEnvironmentVarGuard.__enter__c             G   sJ   x<| j j D ].\}}|d kr0|| jkr:| j|= q|| j|< qW | jt_d S )N)r  r   r  r   r  )ra  r  kvrb   rb   rc   r  @  s    

zEnvironmentVarGuard.__exit__N)r_   r`   ra   rb  r  r  r  r  r  r  r  r  r  r  rb   rb   rb   rc   rS     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j| d S )N)rm   r   original_valueoriginal_objectextend)ra  pathsrb   rb   rc   rb  V  s    zDirsOnSysPath.__init__c             C   s   | S )Nrb   )ra  rb   rb   rc   r  [  s    zDirsOnSysPath.__enter__c             G   s   | j t_| jtjd d < d S )N)r  rm   r   r  )ra  r  rb   rb   rc   r  ^  s    zDirsOnSysPath.__exit__N)r_   r`   ra   rb  r  r  rb   rb   rb   rc   r  J  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)ra  r   r  rb   rb   rc   rb  h  s    zTransientResource.__init__c             C   s   | S )Nrb   )ra  rb   rb   rc   r  l  s    zTransientResource.__enter__Nc             C   sT   |d k	rPt | j|rPx:| jj D ]$\}}t||s4P t|||kr P q W tdd S )Nz%an optional resource is not available)rs  r   r  r   r   r   r   )ra  Ztype_r  	tracebackre  Z
attr_valuerb   rb   rc   r  o  s    
zTransientResource.__exit__)NNN)r_   r`   ra   rb  r  r  rb   rb   rb   rc   r&   c  s   )errnog      >@)r   errnosc      	      #   sp  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j }zy|d k	rtj| d V  W n tjk
 r } z&trtjj	j
d d  |W Y d d }~X n tk
rZ } zpx^|j
}t|dkrt|d tr|d }n*t|dkr8t|d tr8|d }nP  qW ||  W Y d d }~X nX W d tj| X d S )/NECONNREFUSEDo   
ECONNRESETh   EHOSTUNREACHq   ENETUNREACHe   	ETIMEDOUTn   EADDRNOTAVAILc   	EAI_AGAINr$  EAI_FAILr   
EAI_NONAMEr   
EAI_NODATA   
WSANO_DATA*  zResource %r is not availablec             S   s   g | ]\}}t t||qS rb   )r   r  )r<  rt   numrb   rb   rc   r=    s   z&transient_internet.<locals>.<listcomp>c             S   s   g | ]\}}t t||qS rb   )r   r   )r<  rt   r  rb   rb   rc   r=    s   c                s   t | dd }t| tjst| tjr,|kst| tjjrTd| j  koNdkn  st| tjj	rd| j
ksd| j
ksd| j
ks| krtstjjjd d  | d S )	Nr  i  iW  ConnectionRefusedErrorTimeoutErrorEOFErrorr   
)r   
isinstancer   r   ZgaierrorrZ  errorZ	HTTPErrorcodeZURLErrorr   r   rm   stderrrY  r   )r   n)captured_errnosdenied
gai_errnosrb   rc   filter_error  s    


z(transient_internet.<locals>.filter_errorr   r  r   )r  r  )r  r  )r  r  )r  r  )r  r  )r  r  )r  r  )r  r  )r  r  )r  r  )r  r  )r   r   ZgetdefaulttimeoutZsetdefaulttimeoutnntplibZNNTPTemporaryErrorr   rm   r  rY  r   r   r   r  )	Zresource_namer   r  Zdefault_errnosZdefault_gai_errnosr  Zold_timeoutr   arb   )r  r  r  rc   r*     sP    



c             c   sF   dd l }tt| }tt| |j  ztt| V  W d tt| | X d S )Nr   )ior   rm   setattrStringIO)Zstream_namer  Zorig_stdoutrb   rb   rc   captured_output  s    
r  c               C   s   t dS )Nr   )r  rb   rb   rb   rc   r     s    c               C   s   t dS )Nr  )r  rb   rb   rb   rc   r     s    c               C   s   t dS )Nstdin)r  rb   rb   rb   rc   r     s    
c               C   s*   t j  trtjd t j  t j  d S )Ng?)gcZcollectr?   r   r   rb   rb   rb   rc   r    s
    

r  c           
   c   s.   t j } t j  z
d V  W d | r(t j  X d S )N)r  	isenableddisableenable)Zhave_gcrb   rb   rc   
disable_gc  s    
r  c              C   s:   t jdpd} d}x| j D ]}|jdr|}qW |dkS )N	PY_CFLAGSr   z-O-O0-Og)r   r  r  )	sysconfigget_config_varr   ro   )ZcflagsZ	final_optr   rb   rb   rc   python_is_optimized  s    
r  ZnPZ0ngettotalrefcountZ2PZ0Pr  c             C   s   t jt|  t S )N)structcalcsize_header_align)fmtrb   rb   rc   calcobjsize)  s    r  c             C   s   t jt|  t S )N)r  r  _vheaderr  )r  rb   rb   rc   calcvobjsize,  s    r     	   c             C   sp   dd l }tj|}t|tkr(|jt@ sBt|tkrLt|jt@ rL||j7 }dt|||f }| j||| d S )Nr   z&wrong size for %s: got %d, expected %d)		_testcapirm   	getsizeofr   	__flags___TPFLAGS_HEAPTYPE_TPFLAGS_HAVE_GCZSIZEOF_PYGC_HEADrI  )testosizer  r   rv   rb   rb   rc   check_sizeof3  s    

r  c                s    fdd}|S )Nc                s$    fdd} j |_  j|_|S )Nc                 s   y dd l }t| }|j|}W n( tk
r6    Y nB   d  }}Y n0X x,D ]$}y|j|| P W qP   Y qPX qPW z
| |S |r|r|j|| X d S )Nr   )localer   	setlocaler   )r   kwdsr  r  Zorig_localeloc)catstrr   localesrb   rc   innerD  s$    



z1run_with_locale.<locals>.decorator.<locals>.inner)r_   __doc__)r   r  )r  r  )r   rc   r   C  s    z"run_with_locale.<locals>.decoratorrb   )r  r  r   rb   )r  r  rc   rT   B  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j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 j  X d S )Nztzset requiredZTZ)r   tzsetr   rq   rr   r   r  )r   r  r  Zorig_tz)r   tzrb   rc   r  h  s    





z-run_with_tz.<locals>.decorator.<locals>.inner)r_   r  )r   r  )r  )r   rc   r   g  s    zrun_with_tz.<locals>.decoratorrb   )r  r   rb   )r  rc   r[   f  s    c             C   s   dt tdt d}tjd| tjtjB }|d kr>td| f tt|j	d||j	dj
   }|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_1Grp  rq  
IGNORECASEVERBOSEr   r   floatgrouplowerreal_max_memuseMAX_Py_ssize_t_2Gr   )limitZsizesr  Zmemlimitrb   rb   rc   rX     s    $c               @   s$   e Zd Zdd Zdd Zdd ZdS )_MemoryWatchdogc             C   s   dj tj d| _d| _d S )Nz/proc/{pid}/statm)r+  F)r   r   r)  procfilestarted)ra  rb   rb   rc   rb    s    z_MemoryWatchdog.__init__c             C   s   yt | jd}W n< tk
rL } z tjdj|t tjj	  d S d }~X nX t
d}tjtj|g|tjd| _|j  d| _d S )Nrz!/proc not available for stats: {}zmemory_watchdog.py)r  r  T)r7  r  r   re   r   r   r   rm   r  flushr   
subprocessPopen
executableZDEVNULLmem_watchdogr   r  )ra  r   r   Zwatchdog_scriptrb   rb   rc   start  s    
z_MemoryWatchdog.startc             C   s   | j r| jj  | jj  d S )N)r  r
  Z	terminatewait)ra  rb   rb   rc   stop  s    
z_MemoryWatchdog.stopN)r_   r`   ra   rb  r  r  rb   rb   rb   rc   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$  rFt|| k rFtjd|| d  tr|tr|t  tdj|| d d t }|j	  nd }z
| |S |r|j
  X d S )	Ni  z'not enough memory: %.1fG minimum neededi   r$  z* ... expected peak memory use: {peak:.1f}G)Zpeaki   @i   @)r  memuser  rq   rr   r   r   r   r  r  r  )ra  r  r  maxsizeZwatchdog)dry_runr   r   rb   rc   r     s*    


z.bigmemtest.<locals>.decorator.<locals>.wrapper)r  r  )r   )r  r  r  )r   r   rc   r     s    zbigmemtest.<locals>.decoratorrb   )r  r  r  r   rb   )r  r  r  rc   r2     s    !c                s    fdd}|S )Nc                sD   t tk r8td
kr$t dkr$tjdq@tjdtd  n | S d S )Nr   ?   r      z-not enough memory: try a 32-bit build insteadz'not enough memory: %.1fG minimum neededi   r$  l            l    l        i   @)r   r  rq   rr   )ra  )r   rb   rc   r     s    z!bigaddrspacetest.<locals>.wrapperrb   )r   r   rb   )r   rc   r3     s    c               @   s   e Zd Zdd ZdS )r+   c             C   s   t j }|| |S )N)rq   Z
TestResult)ra  r  r   rb   rb   rc   run  s    zBasicTestRunner.runN)r_   r`   ra   r  rb   rb   rb   rc   r+     s   c             C   s   | S )Nrb   )r   rb   rb   rc   _id  s    r  c             C   s<   | dkrt   rtjt jS t| r(tS tjdj| S d S )Nr   zresource {0!r} is not enabled)r   rq   skipr   r    r  r   )r   rb   rb   rc   requires_resource  s
    r  c             C   s&   t rt| k rtjd|tf S tS d S )Nz%s at Android API level %d)r@   _ANDROID_API_LEVELrq   r  r  )levelr   rb   rb   rc   r=     s    c             C   s   t dd| S )NT)cpython)impl_detail)r  rb   rb   rc   r4     s    c             K   sV   t f |rtS | d krLt|\}}|r,d} nd} t|j }| jdj|} tj| S )Nz*implementation detail not available on {0}z%implementation detail specific to {0}z or )	rA   r  _parse_guardsr>  r  r   r   rq   r  )rv   guardsZ
guardnamesdefaultrb   rb   rc   r  #  s    
r  c             C   sT   t d kr:dd l}y|j  da W n tk
r8   da Y nX d}t rF| S tj|| S )Nr   TFz6requires a functioning shared semaphore implementation)_have_mp_queuemultiprocessingZQueuerl   rq   r  )r  r  rv   rb   rb   rc   r>   1  s    
c             C   s*   | sddidfS t | j d }| | fS )Nr  TFr   )rz   values)r  Zis_truerb   rb   rc   r  @  s    r  c              K   s    t | \} }| jtj j |S )N)r  rW  rn   Zpython_implementationr  )r  r  rb   rb   rc   rA   J  s    c                s,   t tds S tj  fdd}|S d S )Ngettracec                 s.   t j }zt jd   | |S t j| X d S )N)rm   r!  settrace)r   r  Zoriginal_trace)r   rb   rc   r   Z  s
    

zno_tracing.<locals>.wrapper)r   rm   r   r   )r   r   rb   )r   rc   
no_tracingU  s    
r#  c             C   s   t t| S )N)r#  r4   )r  rb   rb   rc   refcount_teste  s    r$  c             C   sR   g }xB| j D ]8}t|tjr2t|| |j| q||r|j| qW || _ d S )N)Z_testsr  rq   	TestSuite_filter_suiter   )suiteZpredZnewtestsr  rb   rb   rc   r&  p  s    
r&  c             C   s   t tjttd k	d}|j| }td k	r4tj|j  |js>t	|j
 st|jdkrl|j rl|jd d }n6t|jdkr|j r|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   rm   r   r   junit_xml_listr  r   Zget_xml_elementZtestsRunr   ZwasSuccessfulr   errorsZfailuresr
   )r'  Zrunnerr   r   rb   rb   rc   
_run_suite|  s"    
 r+  c             C   s   t d krdS t | j S d S )NT)_match_test_funcid)r  rb   rb   rc   
match_test  s    r.  c             C   s   d| kot jd|  S )Nrw   z[?*\[\]])rp  search)r   rb   rb   rc   _is_full_match_test  s    r0  c                sr   | t krd S | sd }f } nHttt| r4t| j}n.djttj| }t	j
|j  fdd}|}t| a |ad S )N|c                s$    | rdS t t | jdS d S )NTrw   )anyr   r   )Ztest_id)regex_matchrb   rc   match_test_regex  s    z)set_match_tests.<locals>.match_test_regex)_match_test_patternsallr   r0  r  __contains__r   fnmatch	translaterp  rH  rq  rp   r,  )Zpatternsr   Zregexr4  rb   )r3  rc   set_match_tests  s    r:  c              G   s   t jt jf}t j }xh| D ]`}t|trT|tjkrJ|jt jtj|  qzt	dqt||rj|j| q|jt j
| qW t|t t| d S )Nz)str arguments must be keys in sys.modules)rq   r%  ZTestCaser  rs   rm   rx   ZaddTestZfindTestCasesr   Z	makeSuiter&  r.  r+  )classesZvalid_typesr'  clsrb   rb   rc   r,     s    





c               C   s   d S )Nrb   rb   rb   rb   rc   _check_docstrings  s    r=  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   r_   )r   r(  r?  r@  r   r  rb   rb   rc   r-     s    c               C   s   t jj fS )N)rm   rx   r  rb   rb   rb   rc   modules_setup  s    rA  c             C   s:   dd t jj D }t jj  t jj| t jj|  d S )Nc             S   s"   g | ]\}}|j d r||fqS )z
encodings.)ro   )r<  r  r  rb   rb   rc   r=    s    z#modules_cleanup.<locals>.<listcomp>)rm   rx   r   rm  r   )Z
oldmodules	encodingsrb   rb   rc   modules_cleanup  s    
rC  c               C   s"   t rt j tjj fS df fS d S )Nr   )_thread_count	threading	_danglingr  rb   rb   rb   rc   rM   <  s    c              G   sJ   t sd S d}x8t|D ],}t j tjf}|| kr2P tjd t  qW d S )Nd   g{Gz?)rD  rangerE  rF  rG  r   r   r  )Zoriginal_valuesZ
_MAX_COUNTcountr   rb   rb   rc   rN   B  s    
c                s"   t s S tj  fdd}|S )Nc                 s   t  }z |  S t|  X d S )N)rM   rN   )r   key)r   rb   rc   r   V  s    zreap_threads.<locals>.decorator)rD  r   r   )r   r   rb   )r   rc   rO   N  s          N@c             c   s   t j }z
d V  W d tj }||  }xjt j }||kr8P tj |kr|tj | }d||  d|dd| d| d	}t|tj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?)rD  rE  r   Z	monotonicru  r   r  )r   Z	old_countZ
start_timeZdeadlinerJ  Zdtrv   rb   rb   rc   wait_threads_exit`  s    
$
rN  c           
   C   sZ   t tdrVd} xFy2tj| tj\}}|dkr.P td| tjd W q   P Y qX qW d S )Nwaitpidr   r   z2Warning -- reap_children() reaped child process %s)r   rS  )r   r   rO  WNOHANGr   rm   r  )Zany_processr+  statusrb   rb   rc   rK     s    
c             c   s*  t | } g }zZy$x| D ]}|j  |j| qW W n*   trVtdt| t|f   Y nX d V  W d z|rt|  tj  }}xltddD ]^}|d7 }x$|D ]}|jt	|tj  d qW dd |D }|sP trtdt||f  qW W d d	d |D }|r"t
jtj td
t| X X d S )Nz/Can't start %d threads, only %d threads startedr   r  <   g{Gz?c             S   s   g | ]}|j  r|qS rb   )isAlive)r<  r  rb   rb   rc   r=    s    z!start_threads.<locals>.<listcomp>z7Unable to join %d threads during a period of %d minutesc             S   s   g | ]}|j  r|qS rb   )rS  )r<  r  rb   rb   rc   r=    s    zUnable to join %d threads)rz   r  r   r   r   r   r   rI  r   maxfaulthandlerZdump_tracebackrm   r   ru  )ZthreadsZunlockr  r  ZendtimeZ	starttimer   rb   rb   rc   rP     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   re  new_valreal_valrb   rb   rc   rV     s    




c             c   sX   || kr0| | }|| |< z
|V  W d || |< X n$|| |< z
d V  W d || krR| |= X d S )Nrb   )r   itemrW  rX  rb   rb   rc   rU     s    

c             C   s   t jdd| j } | S )Ns   \[\d+ refs, \d+ blocks\]\r?\n?    )rp  substrip)r  rb   rb   rc   strip_python_stderr  s    r]  Z	getcountsz-types are immortal if COUNT_ALLOCS is definedc               C   s   t j S )N)r  Z_args_from_interpreter_flagsrb   rb   rb   rc   args_from_interpreter_flags	  s    r^  c               C   s   t j S )N)r  Z"_optim_args_from_interpreter_flagsrb   rb   rb   rc   !optim_args_from_interpreter_flags	  s    r_  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
rL   c             C   s   t jjj| d || _d S )Nr   )logginghandlersBufferingHandlerrb  matcher)ra  rc  rb   rb   rc   rb  	  s    zTestHandler.__init__c             C   s   dS )NFrb   )ra  rb   rb   rc   shouldFlush	  s    zTestHandler.shouldFlushc             C   s   | j | | jj|j d S )N)r   r   r   __dict__)ra  ri  rb   rb   rc   emit"	  s    
zTestHandler.emitc             K   s.   d}x$| j D ]}| jj|f|rd}P qW |S )NFT)r   rc  matches)ra  r  r   drb   rb   rc   rg  &	  s    zTestHandler.matchesN)r_   r`   ra   rb  rd  rf  rg  rb   rb   rb   rc   rL   	  s   	c               @   s    e Zd ZdZdd Zdd ZdS )	rW   rv   ro  c             K   s<   d}x2|D ]*}|| }|j |}| j|||s
d}P q
W |S )NTF)rW  match_value)ra  rh  r  r   r  r  dvrb   rb   rc   rg  5	  s    

zMatcher.matchesc             C   sH   t |t |krd}n.t |tk	s,|| jkr6||k}n|j|dk}|S )NFr   )r   rs   _partial_matchesfind)ra  r  rj  r  r   rb   rb   rc   ri  F	  s    
zMatcher.match_valueN)rv   ro  )r_   r`   ra   rk  rg  ri  rb   rb   rb   rc   rW   1	  s   c              C   sZ   t d k	rt S td } ytjt|  d}W n tttfk
rF   d}Y nX tj|  |a |S )Nr   TF)_can_symlinkr   r   symlinkr   NotImplementedErrorr   rt  )Zsymlink_pathcanrb   rb   rc   r   T	  s    

c             C   s    t  }d}|r| S tj|| S )Nz*Requires functional symlink implementation)r   rq   r  )r  okrv   rb   rb   rc   r.   c	  s    c              C   s   t d k	rt S ttdsd} ntj }tj|d\}}zttd}y`tj|dd tj|dd tj|j	 dd t
j }tjd	|}|d kpt|j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)dirr@  s	   user.testrZ  s   trusted.foos   42z2.6.(\d{1,2})r   '   )
_can_xattrr   r   r%  r&  Zmkstempr7  r   rr  rA  rn   r   rp  rq  r   r  r   r   r   )rp  Ztmp_dirZtmp_fpZtmp_namefpZkernel_versionr  rb   rb   rc   	can_xattrj	  s,    

rw  c             C   s    t  }d}|r| S tj|| S )Nz(no non-broken extended attribute support)rw  rq   r  )r  rq  rv   rb   rb   rc   r7   	  s    c             C   s^   t j| dH}|j}|j }||kr,|j }ytjj||S  tk
rN   dS X W d Q R X d S )N)rs  F)	r%  ZNamedTemporaryFilert   upperr  r   r   samefiler   )Z	directorybase	base_pathZ	case_pathrb   rb   rc   r   	  s    )rd   c            C   s>   t t| t t| }|r(|t |8 }t dd |D }|S )Nc             s   s(   | ] }|j d  s|jdr|V  qdS )___N)ro   endswith)r<  r  rb   rb   rc   	<genexpr>	  s    z&detect_api_mismatch.<locals>.<genexpr>)r  rs  )Zref_apiZ	other_apird   Zmissing_itemsrb   rb   rc   r;   	  s
    c             C   s   |d kr|j f}nt|tr"|f}t|}xbt|D ]V}|jds4||krLq4t||}t|dd |kst|d r4t|tj	 r4|j
| q4W | j|j| d S )Nr|  r`   )r_   r  rs   r  rs  ro   r   r   types
ModuleTypeaddZassertCountEqual__all__)Z	test_caser   Zname_of_moduleZextraZ	blacklistZexpectedrt   r   rb   rb   rc   r<   	  s    )


c               @   s$   e Zd ZdZdZdd Zdd ZdS )rY   Nc       
      C   sr  t jjdrdd l}|jj| _d}| jj|| _| 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}|j||j}||f| j|< qW ntd k	r
y*tjtj| _tj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
}| |j d }	W d Q R X |	j dkrntdddd | S )Nr   r   r   r   r   z/usr/bin/defaultsrX  zcom.apple.CrashReporterZ
DialogType)r   r  s	   developerz:this test triggers the Crash Reporter, that is intentionalr   T)endr  ) rm   rn   ro   r   r   r   _k32SetErrorMode	old_valuemsvcrtCrtSetReportModer   rl   	old_modesCRT_WARN	CRT_ERROR
CRT_ASSERTZCRTDBG_MODE_FILECrtSetReportFileZCRTDBG_FILE_STDERRr   Z	getrlimitRLIMIT_CORE	setrlimitr   r   r  r  PIPEZcommunicater\  r   )
ra  r   ZSEM_NOGPFAULTERRORBOXr  report_typeold_modeold_filecmdprocr   rb   rb   rc   r  	  sN    




zSuppressCrashReport.__enter__c             G   s   | j d krd S tjjdrl| jj| j  | jrdd l}xj| jj D ]$\}\}}|j	|| |j
|| qBW n6td k	rytjtj| j  W n ttfk
r   Y nX d S )Nr   r   )r  rm   rn   ro   r  r  r  r  r   r  r  r   r  r  r   r   )ra  r  r  r  r  r  rb   rb   rc   r  0
  s    
zSuppressCrashReport.__exit__)r_   r`   ra   r  r  r  r  rb   rb   rb   rc   rY   	  s   Ac                sr   t  d yj W n$ ttfk
r@   t d Y nX d  fdd}| j| t| d S )NFTc                  s     rt  n
t d S )N)r  rV  rb   )attr_is_local	attr_nameobject_to_patchr  rb   rc   cleanup[
  s    zpatch.<locals>.cleanup)r   re  r   r~   Z
addCleanupr  )Ztest_instancer  r  Z	new_valuer  rb   )r  r  r  r  rc   patchE
  s    


r  c             C   sF   ydd l }W n tk
r    Y nX |j r4tjddd l}|j| S )Nr   zUrun_in_subinterp() cannot be used if tracemalloc module is tracing memory allocations)tracemallocrl   Z
is_tracingrq   rr   r  run_in_subinterp)r  r  r  rb   rb   rc   r  g
  s    
r  c                sH   G  fddd|}d ||| | j tt t  | j  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)ra  )doneitrb   rc   __del__}
  s
    z-check_free_after_iterating.<locals>.A.__del__N)r_   r`   ra   r  rb   )r  r  rb   rc   A|
  s   r  F)rF  r  r  r  Z
assertTrue)r  r  r<  r   r  rb   )r  r  rc   check_free_after_iterating{
  s    	r  c             C   s|   ddl m}m}m} |j }|j| xP|jD ]F}| r@|| kr@q.t||}| rPn
|d krZq.|j|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compilerrt   r  rb   rb   rc   r]   
  s    	

c             C   s@   d}t r6| |k r6td kr.tjddgj dkatr6|} tj| S )Ngh㈵>Zgetpropzro.kernel.qemu   1)r@   _is_android_emulatorr  Zcheck_outputr\  rm   rC   )intervalZminimum_intervalrb   rb   rc   rC   
  s    c              c   s>   t jj } tj }ztj  d V  W d |r8tj| dd X d S )NT)r   Zall_threads)rm   r   rA  rU  
is_enabledr  r  )r;  r  rb   rb   rc   disable_faulthandler
  s    

r  c        	   /   C   s  t jjd
r8ytjd} t| d S  tk
r6   Y nX d}ttdrjytj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 ]}|j|d	||< qW zpd	}xft|D ]Z}ytj|}W n4 t	k
r( } z|jtjkr W Y d d }~X qX tj| |d7 }qW W d |d k	rzx*|j|j|jfD ]}|j|||  q`W X |S )Nlinuxfreebsdz/proc/self/fdr      sysconfSC_OPEN_MAXr  r   )r  r  )rm   rn   ro   r   r   r   r   r   r  r   r  r  r   rl   r  r  r  rI  dupr  ZEBADFr   )	namesZMAXFDr  r  r  rJ  r;  Zfd2r   rb   rb   rc   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j| q&W i | _d S )Nr   r   SIGKILLSIGSTOP)r  r  )	signalrz   rI  NSIGsignalsr   r   rt  ra  )ra  r  Zsignamesignumrb   rb   rc   rb  
  s    
zSaveSignals.__init__c             C   s4   x.| j D ]$}| jj|}|d kr"q|| j|< qW d S )N)r  r  	getsignalra  )ra  r  handlerrb   rb   rc   save  s
    zSaveSignals.savec             C   s*   x$| j j D ]\}}| jj|| qW d S )N)ra  r   r  )ra  r  r  rb   rb   rc   restore#  s    zSaveSignals.restoreN)r_   r`   ra   rb  r  r  rb   rb   rb   rc   r    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   )ra  r   rb   rb   rc   rb  +  s    zFakePath.__init__c             C   s   d| j dS )Nz
<FakePath >)r   )ra  rb   rb   rc   __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   rs  )ra  rb   rb   rc   
__fspath__1  s
    zFakePath.__fspath__N)r_   r`   ra   rb  r  r  rb   rb   rb   rc   r  (  s   r  )T)F)F)Ni   i  @ i @ i @  i   i  )r  r  r  r  r  r  r  r  r  r  r  )r   r  r!  r"  r#  )NF)F)r0  F)N)Fi @  i   i   )T)N)Nr   )rL  )N(  r_   rl   collections.abccollections
contextlibZdatetimer  rU  r8  r   r  rk   importlib.utilr  Zlogging.handlersr`  r  r   rn   rp  r   r   r   r  r  rm   r  r%  r   r  rq   Zurllib.errorrZ  re   Z
testresultr   rD  rF  Zmultiprocessing.processr  zlibrQ  bz2Zlzmar   r  r   r	   r
   r   rr   r   contextmanagerri   r   r}   r   r9   r:   r   r5   r   r   r   r  r)  r   r   r   r   r   r   ro   r   r   r   r   r   r   r   r   r   r   r   r    r!   r   r"   r#   r$   rD   r  r  r  rF   rG   rI   r	  rE   r  r   ZSOCK_MAX_SIZEZ
skipUnlessr  __getformat__r6   r8   r/   r0   r1   r?   r  r  r@   rB   rt   r   r   r)  Z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   r   rJ   r   r   r   r   ZTEST_SUPPORT_DIRr4  r   rV  r   r   rZ   rB  r%   rH   objectr^  r}  rQ   rR   r   abcMutableMappingrS   r  r&   r   r  r'   r  r(   r)   r*   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  rT   r[   r  r  r   Z_4Gr  r  rX   r  r2   r3   r+   r  r  r=   r4   r  r  r>   r  rA   r#  r$  r&  r+  r,  r5  r.  r0  r:  r,   r=  ZMISSING_C_DOCSTRINGSr  ZHAVE_DOCSTRINGSZrequires_docstringsr-   rA  rC  Zenvironment_alteredrM   rN   rO   rN  rK   rP   rV   rU   r]  ZskipIfZrequires_type_collectingr^  r_  ra  rb  rL   rW   rm  r   r.   ru  rw  r7   r   r;   r<   rY   r  r  r  r]   r  rC   r  r^   r  r  rb   rb   rb   rc   <module>   s  










2	
!
J			>&	
          
    
%2' 5M		

$
#
0





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

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