???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3
i                @   sf  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#m$Z$ yddl%Z%ddl&Z&W n ek
r>   dZ%dZ&Y nX yddl'Z(W n ek
rf   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
rV   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`dag\Z/G dbd de0Z1G dcd de1Z2G ddd de1Z3G ded dej4Z5ej6dgdgdhZ7dhf djdkdZ8dldm Z9dndo Z:dpd< Z;dqd= Z<f f difdrdZ=dsd8 Z>dZ?dZ@daAdaBdZCdiZDdaEdtd ZFdud ZGdvd ZHdwdx ZIejjJdyr*didzd{ZKd|d} ZLd~d ZMdd ZNdd ZOnejPZLejQZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd" ZVdjdd#ZWdd ZXdd$ ZYdd% ZZdd& Z[dkdd'Z\dZ]dZ^ej_ej`fddIZae]fddJZbddL Zcdd Zded Zedd ZfdnZgdqZhejiejjkdjJddZlejie)dZmejie*dZnejie+dZoejie,dZpejjJdZqejrdZsesdk	otesdkZtejdkretrdndZundZuejvdkrdZwndZwdjxewejy ZwdZzxLdrD ]BZ{yej|ej}e{e{kre~W n e~k
r    Y nX e{ZzP qW ewd Zejdkr6ddlZejdeZej ZdZejvdkrej jdkrewd Zyeje W n ek
r   Y nX edeef  dZnBejdkrydje W n& ek
r   ewdjedƃ ZY nX dZxFdsD ]<Zvyevje W n& ek
r(   ej}ewev ZP Y nX qW ezrDewd ez ZndZej ZdiZdiZej6dtdd̈́Zej6duddτZej6dvddZeed҃rej6ddM ZejjejjeZejjeZejjedԃZdwddZdd Zdd] Zddل Zdddڜdd(ZddK ZG ddބ deZdxddZej6ddT Zej6dedifddZej6ddU ZG dd deZG ddV dVejjZG dd deZG dd) d)eZeeejdZeeejdZeeejdZej6df ddd-Zej6dd Zdd Zdd Zdd Zdd Zej6dd Zdd ZdZdZeed	rHde ZdZed Zd d Zdd ZÐdyZĐdzZŐdd ZƐddW Zǐd	d^ ZȐd{Zde Zde Zde ZejZΐd
d[ ZG dd dZАd|dd5Zѐdd6 ZG dd. d.ZӐdd ZԐdd ZՐdd@ Z֐dd7 Zאd}ddZdaِddA Zڐdd ZېddD 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jrd- Zejdk	oe Zejied.Zd~d/d0Zd0d1 Zd2d3 ZdiZd4dP Zd5dQ Zd6dR Zej6dd8d9Zd:dN Zej6dd;dSZej6d<dY Zej6d=dX Zd>d? Zejeed@dAZdBdC ZdDdE ZG dFdO dOejjZG dGdZ dZeZ dadHd  ZdId1 ZdadJdK ZdLd: ZdMdN ZdOd! Zf dPdQd>Z	df f fdRd?Z
G dSd\ d\ZdTdU ZdVdW Zf fdXdYZg fdZd`Zdad[dF Zej6d\d] Zd^da ZG d_d` d`ZG dadb dbZej6dcdd Zdedf ZdS (  ztest.supportz.support must be imported from the test package    N   )get_test_runnerPIPE_MAX_SIZEverbose
max_memuseuse_resourcesfailfastError
TestFailedTestDidNotRunResourceDeniedimport_moduleimport_fresh_moduleCleanImportunloadforgetrecord_original_stdoutget_original_stdoutcaptured_stdoutcaptured_stdincaptured_stderrTESTFNSAVEDCWDunlinkrmtreetemp_cwdfindfilecreate_empty_filecan_symlinkfs_is_case_insensitiveis_resource_enabledrequiresrequires_freebsd_versionrequires_linux_versionrequires_mac_verrequires_hashdigestcheck_syntax_error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__ rc   rc   -/usr/lib64/python3.6/test/support/__init__.pyr	   |   s   c               @   s   e Zd ZdS )r
   N)r`   ra   rb   rc   rc   rc   rd   r
      s   c               @   s   e Zd ZdS )r   N)r`   ra   rb   rc   rc   rc   rd   r      s   c               @   s   e Zd ZdS )r   N)r`   ra   rb   rc   rc   rc   rd   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)re   rc   rc   rd   _ignore_deprecated_imports   s    
rj   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)rj   	importlibr   ImportErrorsysplatform
startswithtupleunittestSkipTeststr)name
deprecatedrk   msgrc   rc   rd   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.)rn   modules
__import__listrp   )ru   orig_modulesmodnamerc   rc   rd   _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)rn   ry   KeyError)ru   r|   Zsavedrc   rc   rd   _save_and_block_module   s    

r   c             C   s   | r
t jS dd S )Nc             S   s   | S )Nrc   )frc   rc   rd   <lambda>   s    z$anticipate_failure.<locals>.<lambda>)rr   ZexpectedFailure)Z	conditionrc   rc   rd   r:      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_testsrc   rc   rd   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)
rj   r~   r   appendrl   r   rm   itemsrn   ry   )ru   ZfreshZblockedrv   r|   Znames_to_removeZ
fresh_nameZblocked_nameZfresh_moduleZ	orig_namemoduleZname_to_removerc   rc   rd   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AttributeErrorrr   rs   )objru   Z	attributerc   rc   rd   r6     s
    c             C   s   | a d S )N)_original_stdout)stdoutrc   rc   rd   r   0  s    c               C   s
   t ptjS )N)r   rn   r   rc   rc   rc   rd   r   4  s    c             C   s&   yt j| = W n tk
r    Y nX d S )N)rn   ry   r   )ru   rc   rc   rd   r   7  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errrc   rc   rd   
_force_run=  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 )Nrx   gMbP?g      ?r   z)tests may fail, delete still pending for    )
stacklevel)	r   r   splitlistdirtimesleeprf   warnRuntimeWarning)r   pathnamewaitallr   ru   timeoutLrc   rc   rd   _waitforH  s    



r   c             C   s   t tj|  d S )N)r   r   r   )filenamerc   rc   rd   _unlinki  s    r   c             C   s   t tj|  d S )N)r   r   rmdir)r   rc   rc   rd   _rmdirl  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   rn   
__stderr__r   S_ISDIRr   r   r   )r   ru   fullnamemodeexc)_rmtree_innerrc   rd   r   p  s    

z_rmtree.<locals>._rmtree_innerT)r   c             S   s   t | tj| S )N)r   r   r   )prc   rc   rd   r     s    z_rmtree.<locals>.<lambda>)r   )r   rc   )r   rd   _rmtreeo  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   )ctypesrm   Zcreate_unicode_bufferlenwindllkernel32ZGetLongPathNameW)r   r   bufferZlengthrc   rc   rd   	_longpath  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   ru   r   r   )r   rc   rd   r     s    

z_rmtree.<locals>._rmtree_inner)shutilr   r   r   r   )r   rc   )r   rd   r     s    
c             C   s   | S )Nrc   )r   rc   rc   rd   r     s    c             C   s*   yt |  W n ttfk
r$   Y nX d S )N)r   FileNotFoundErrorNotADirectoryError)r   rc   rc   rd   r     s    c             C   s&   yt |  W n tk
r    Y nX d S )N)r   r   )r   rc   rc   rd   r     s    r   c             C   s&   yt |  W n tk
r    Y nX d S )N)r   r   )r   rc   rc   rd   r     s    c             C   sB   t jj| }tjjtjj| }tjj|| d }tj|| |S )Nc)	rl   utilcache_from_sourcer   r   r   abspathr   rename)sourceZpyc_fileZup_oneZ
legacy_pycrc   rc   rd   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   rn   r   r   r   r   rl   r   r   )r}   r   r   optrc   rc   rd   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`   ra   rb   wintypesZBOOLDWORD_fields_rc   )r   rc   rd   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`   ra   rb   r   rc   )r   rc   rd   ProcessSerialNumber  s   r   z#cannot run without OS X gui process)Tk2   z [...]zTk unavailable due to {}: {}))hasattr_is_gui_availabler   rn   ro   rp   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	Exceptionrt   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_stringrc   )r   r   rd   r     sh    

r   c             C   s   t d kp| t kS )N)r   )resourcerc   rc   rd   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   rw   rc   rc   rd   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   rx   z(%s version %s or higher required, not %s)ro   systemreleaser   rq   mapint
ValueErrorr   rt   rr   rs   )r   kwversion_txtversionmin_version_txt)r   min_versionsysnamerc   rd   wrapper=  s    z:_requires_unix_version.<locals>.decorator.<locals>.wrapper)	functoolswrapsr   )r   r   )r   r   )r   rd   	decorator<  s    z)_requires_unix_version.<locals>.decoratorrc   )r   r   r   rc   )r   r   rd   _requires_unix_version5  s    r   c              G   s
   t d| S )NZFreeBSD)r   )r   rc   rc   rd   r"   P  s    c              G   s
   t d| S )NZLinux)r   )r   rc   rc   rd   r#   Y  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   rx   z&Mac OS X %s or higher required, not %s)rn   ro   Zmac_verrq   r   r   r   r   r   rt   rr   rs   )r   r   r   r   r   )r   r   rc   rd   r   j  s    
z4requires_mac_ver.<locals>.decorator.<locals>.wrapper)r   r   r   )r   r   )r   )r   rd   r   i  s    z#requires_mac_ver.<locals>.decoratorrc   )r   r   rc   )r   rd   r$   b  s    c                s    fdd}|S )Nc                s   t j  fdd}|S )Nc                 sX   y&rt d k	rt j  n
tj  W n& tk
rL   tjd  dY nX | |S )Nzhash digest 'z' is not available.)_hashlibnewhashlibr   rr   rs   )r   kwargs)
digestnamer   opensslrc   rd   r     s    z7requires_hashdigest.<locals>.decorator.<locals>.wrapper)r   r   )r   r   )r   r   )r   rd   r     s    z&requires_hashdigest.<locals>.decoratorrc   )r   r   r   rc   )r   r   rd   r%   }  s    z	127.0.0.1z::1c             C   s"   t j | |}t|}|j  ~|S )N)socketrH   close)familyZsocktypeZtempsockportrc   rc   rd   rG     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r~y | jtjtj
dkrft	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_REUSEPORTzHtests 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  r   Z
setsockoptr  bindZgetsockname)sockhostr  rc   rc   rd   rH     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  rr   rs   )r  Zaddrrc   rc   rd   rJ     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  rc   rc   rd   _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)IOErrorrt   rr   rs   )r   r   r   )r   rc   rd   dec  s    
z&system_must_validate_cert.<locals>.dec)r   r   )r   r  rc   )r   rd   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   rf   r   r   getpidr   )r   quietZdir_createdpidrc   rc   rd   temp_dir  s&    


r1  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   rf   r   r   )r   r/  Z	saved_dirrc   rc   rd   
change_cwd	  s    
r4  tempcwdc             c   s:   t | |d$}t||d}|V  W d Q R X W d Q R X d S )N)r   r/  )r/  )r1  r4  )ru   r/  Z	temp_pathZcwd_dirrc   rc   rd   r   $  s    umaskc             c   s&   t j| }z
d V  W d t j| X d S )N)r   r6  )r6  Zoldmaskrc   rc   rd   rK   8  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_DIRrn   exists)r   Zsubdirr   Zdnfnrc   rc   rd   r   I  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   fdrc   rc   rd   r   [  s    c             C   s,   t | j }dd |D }dj|}d| S )Nc             S   s   g | ]}d | qS )z%r: %rrc   ).0Zpairrc   rc   rd   
<listcomp>c  s    zsortdict.<locals>.<listcomp>z, z{%s})sortedr   r   )dictr   Z	reprpairsZ
withcommasrc   rc   rd   r[   `  s    
c              C   s*   t td} z| j S | j  tt X d S )Nwb)r<  r   filenor  r   )r   rc   rc   rd   make_bad_fdg  s
    
rG  )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assertIsNotNonerH  assertEqualrI  )testcaseZ	statementrH  rI  cmr   rc   rc   rd   r&   s  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   )r<  seekr  )r;  r   )r   rQ  r   rc   rd   check_valid_file  s    
z*open_urlresource.<locals>.check_valid_fileZurlfetchz	fetching %s ...)r   Accept-Encodinggzip   )r   zContent-Encoding)ZfileobjrE  zinvalid resource %r)rU  rV  )Zurllib.requestZurllib.parsepopparseZurlparser   r   r   r   TEST_DATA_DIRr:  r   r!   r   r   r   ZrequestZbuild_openerrV  Z
addheadersr   r<  ZheadersgetZGzipFilereadwriter  r
   )Zurlr   r   urllibr   r;  rT  r   openeroutsrc   )r   rQ  r   rd   rI   ~  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_listrc   rc   rd   __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 %rrX  )r   rd  re  r   rf   WarningMessage_WARNING_DETAILSr   )rf  attrrc   rc   rd   __getattr__  s
    zWarningsRecorder.__getattr__c             C   s   | j | jd  S )N)rd  re  )rf  rc   rc   rd   rf     s    zWarningsRecorder.warningsc             C   s   t | j| _d S )N)r   rd  re  )rf  rc   rc   rd   reset  s    zWarningsRecorder.resetN)r`   ra   rb   rg  rk  propertyrf   rl  rc   rc   rc   rd   rc    s   rc  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)recordrf   alwaysFzunhandled warning %sr   z)filter (%r, %s) did not catch any warning)rn   	_getframe	f_globalsr\  clearrf   rg   ry   simplefilterrc  r{   messagerematchrt   I
issubclassr   remover   r`   AssertionError)filtersr/  frameregistrywZreraiseZmissingrw   catseenZwarningrc   rc   rd   _filterwarnings  s0    
r  c              O   s.   |j d}| s$dtff} |d kr$d}t| |S )Nr/  r   T)r\  Warningr  )r{  r   r/  rc   rc   rd   rR     s    

r   c             c   sH   t jdd&}t jd||d d V  |r.t  W d Q R X | j|g  d S )NT)rn  ro  )rt  category)rf   rg   rh   
gc_collectrN  )rO  rt  r  Zforce_gcwarnsrc   rc   rd   check_no_warnings  s    r  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)rn  ro  )r  )rf   rg   rh   ResourceWarningr  rN  )rO  r  rc   rc   rd   rS     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)rn   ry   copyoriginal_modulesr`   )rf  Zmodule_namesZmodule_namer   rc   rc   rd   rg  ?  s    




zCleanImport.__init__c             C   s   | S )Nrc   )rf  rc   rc   rd   	__enter__L  s    zCleanImport.__enter__c             G   s   t jj| j d S )N)rn   ry   r   r  )rf  
ignore_excrc   rc   rd   __exit__O  s    zCleanImport.__exit__N)r`   ra   rb   rg  r  r  rc   rc   rc   rd   r   3  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 )rT   c             C   s   t j| _i | _d S )N)r   environ_environ_changed)rf  rc   rc   rd   rg  X  s    zEnvironmentVarGuard.__init__c             C   s
   | j | S )N)r  )rf  envvarrc   rc   rd   __getitem__\  s    zEnvironmentVarGuard.__getitem__c             C   s*   || j kr| jj|| j |< || j|< d S )N)r  r  r\  )rf  r  valuerc   rc   rd   __setitem___  s    
zEnvironmentVarGuard.__setitem__c             C   s2   || j kr| jj|| j |< || jkr.| j|= d S )N)r  r  r\  )rf  r  rc   rc   rd   __delitem__e  s    

zEnvironmentVarGuard.__delitem__c             C   s
   | j j S )N)r  keys)rf  rc   rc   rd   r  l  s    zEnvironmentVarGuard.keysc             C   s
   t | jS )N)iterr  )rf  rc   rc   rd   __iter__o  s    zEnvironmentVarGuard.__iter__c             C   s
   t | jS )N)r   r  )rf  rc   rc   rd   __len__r  s    zEnvironmentVarGuard.__len__c             C   s   || |< d S )Nrc   )rf  r  r  rc   rc   rd   setu  s    zEnvironmentVarGuard.setc             C   s
   | |= d S )Nrc   )rf  r  rc   rc   rd   unsetx  s    zEnvironmentVarGuard.unsetc             C   s   | S )Nrc   )rf  rc   rc   rd   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  )rf  r  kvrc   rc   rd   r  ~  s    

zEnvironmentVarGuard.__exit__N)r`   ra   rb   rg  r  r  r  r  r  r  r  r  r  r  rc   rc   rc   rd   rT   S  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)rn   r   original_valueoriginal_objectextend)rf  pathsrc   rc   rd   rg    s    zDirsOnSysPath.__init__c             C   s   | S )Nrc   )rf  rc   rc   rd   r    s    zDirsOnSysPath.__enter__c             G   s   | j t_| jtjd d < d S )N)r  rn   r   r  )rf  r  rc   rc   rd   r    s    zDirsOnSysPath.__exit__N)r`   ra   rb   rg  r  r  rc   rc   rc   rd   r    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)rf  r   r   rc   rc   rd   rg    s    zTransientResource.__init__c             C   s   | S )Nrc   )rf  rc   rc   rd   r    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)rx  r   r  r   r   r   r   )rf  Ztype_r  	tracebackrj  Z
attr_valuerc   rc   rd   r    s    
zTransientResource.__exit__)NNN)r`   ra   rb   rg  r  r  rc   rc   rc   rd   r'     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 rc   )r   r  )rA  ru   numrc   rc   rd   rB    s   z&transient_internet.<locals>.<listcomp>c             S   s   g | ]\}}t t||qS rc   )r   r  )rA  ru   r  rc   rc   rd   rB    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gaierrorr_  errorZ	HTTPErrorcodeZURLErrorr   r   rn   stderrr^  r   )r   n)captured_errnosdenied
gai_errnosrc   rd   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   rn   r  r^  r   r   r   r  )	Zresource_namer   r  Zdefault_errnosZdefault_gai_errnosr  Zold_timeoutr   arc   )r  r  r  rd   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   rn   setattrStringIO)Zstream_namer  Zorig_stdoutrc   rc   rd   captured_output  s    
r  c               C   s   t dS )Nr   )r  rc   rc   rc   rd   r     s    c               C   s   t dS )Nr  )r  rc   rc   rc   rd   r   %  s    c               C   s   t dS )Nstdin)r  rc   rc   rc   rd   r   .  s    
c               C   s*   t j  trtjd t j  t j  d S )Ng?)gcZcollectr@   r   r   rc   rc   rc   rd   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_gcrc   rc   rd   
disable_gcK  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   rp   )ZcflagsZ	final_optr   rc   rc   rd   python_is_optimizedV  s    
r  ZnPZ0ngettotalrefcountZ2PZ0Pr  c             C   s   t jt|  t S )N)structcalcsize_header_align)fmtrc   rc   rd   calcobjsizeg  s    r  c             C   s   t jt|  t S )N)r  r  _vheaderr  )r  rc   rc   rd   calcvobjsizej  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)		_testcapirn   	getsizeofr   	__flags___TPFLAGS_HEAPTYPE_TPFLAGS_HAVE_GCZSIZEOF_PYGC_HEADrN  )testosizer  r   rw   rc   rc   rd   check_sizeofq  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   localesrc   rd   inner  s$    



z1run_with_locale.<locals>.decorator.<locals>.inner)r`   __doc__)r   r  )r  r  )r   rd   r     s    z"run_with_locale.<locals>.decoratorrc   )r  r  r   rc   )r  r  rd   rU     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   rr   rs   r   r  )r   r  r  Zorig_tz)r   tzrc   rd   r    s    





z-run_with_tz.<locals>.decorator.<locals>.inner)r`   r  )r   r  )r  )r   rd   r     s    zrun_with_tz.<locals>.decoratorrc   )r  r   rc   )r  rd   r\     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_1Gru  rv  
IGNORECASEVERBOSEr   r   floatgrouplowerreal_max_memuseMAX_Py_ssize_t_2Gr   )limitZsizesr  Zmemlimitrc   rc   rd   rY     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)r0  F)r   r   r.  procfilestarted)rf  rc   rc   rd   rg    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)r<  r
  r   rf   r   r   r   rn   r  flushr   
subprocessPopen
executableZDEVNULLmem_watchdogr  r  )rf  r   r   Zwatchdog_scriptrc   rc   rd   start  s    
z_MemoryWatchdog.startc             C   s   | j r| jj  | jj  d S )N)r  r  Z	terminatewait)rf  rc   rc   rd   stop  s    
z_MemoryWatchdog.stopN)r`   ra   rb   rg  r  r  rc   rc   rc   rd   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  rr   rs   r   r   r   r	  r  r  )rf  r  r  maxsizeZwatchdog)dry_runr   r   rc   rd   r     s*    


z.bigmemtest.<locals>.decorator.<locals>.wrapper)r  r  )r   )r  r  r  )r   r   rd   r     s    zbigmemtest.<locals>.decoratorrc   )r  r  r  r   rc   )r  r  r  rd   r3     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  rr   rs   )rf  )r   rc   rd   r   3  s    z!bigaddrspacetest.<locals>.wrapperrc   )r   r   rc   )r   rd   r4   1  s    c               @   s   e Zd Zdd ZdS )r,   c             C   s   t j }|| |S )N)rr   Z
TestResult)rf  r  r   rc   rc   rd   runD  s    zBasicTestRunner.runN)r`   ra   rb   r  rc   rc   rc   rd   r,   C  s   c             C   s   | S )Nrc   )r   rc   rc   rd   _idI  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   rr   skipr   r    r  r   )r   rc   rc   rd   requires_resourceL  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)rA   _ANDROID_API_LEVELrr   r  r  )levelr   rc   rc   rd   r>   T  s    c             C   s   t dd| S )NT)cpython)impl_detail)r  rc   rc   rd   r5   [  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 )	rB   r  _parse_guardsrC  r  r   r   rr   r  )rw   guardsZ
guardnamesdefaultrc   rc   rd   r!  a  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Queuerm   rr   r  )r  r&  rw   rc   rc   rd   r?   o  s    
c             C   s*   | sddidfS t | j d }| | fS )Nr   TFr   )r{   values)r#  Zis_truerc   rc   rd   r"  ~  s    r"  c              K   s    t | \} }| jtj j |S )N)r"  r\  ro   Zpython_implementationr  )r#  r$  rc   rc   rd   rB     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)rn   r(  settrace)r   r   Zoriginal_trace)r   rc   rd   r     s
    

zno_tracing.<locals>.wrapper)r   rn   r   r   )r   r   rc   )r   rd   
no_tracing  s    
r*  c             C   s   t t| S )N)r*  r5   )r  rc   rc   rd   refcount_test  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  rr   	TestSuite_filter_suiter   )suiteZpredZnewtestsr  rc   rc   rd   r-    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   rn   r   r   junit_xml_listr  r   Zget_xml_elementZtestsRunr   ZwasSuccessfulr   errorsZfailuresr
   )r.  Zrunnerr   r   rc   rc   rd   
_run_suite  s"    
 r2  c             C   s   t d krdS t | j S d S )NT)_match_test_funcid)r  rc   rc   rd   
match_test  s    r5  c             C   s   d| kot jd|  S )Nrx   z[?*\[\]])ru  search)r   rc   rc   rd   _is_full_match_test  s    r7  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 )NTrx   )anyr   r   )Ztest_id)regex_matchrc   rd   match_test_regex  s    z)set_match_tests.<locals>.match_test_regex)_match_test_patternsallr   r7  r  __contains__r   fnmatch	translateru  rM  rv  rq   r3  )Zpatternsr   Zregexr;  rc   )r:  rd   set_match_tests  s    rA  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)rr   r,  ZTestCaser  rt   rn   ry   ZaddTestZfindTestCasesr   Z	makeSuiter-  r5  r2  )classesZvalid_typesr.  clsrc   rc   rd   r-     s    





c               C   s   d S )Nrc   rc   rc   rc   rd   _check_docstrings(  s    rD  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/  rF  rG  r   r  rc   rc   rd   r.   9  s    c               C   s   t jj fS )N)rn   ry   r  rc   rc   rc   rd   modules_setupT  s    rH  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.)rp   )rA  r  r  rc   rc   rd   rB  [  s    z#modules_cleanup.<locals>.<listcomp>)rn   ry   r   rr  r   )Z
oldmodulesZ	encodingsrc   rc   rd   modules_cleanupW  s    
rI  c               C   s"   t rt j tjj fS df fS d S )Nr   )_thread_count	threading	_danglingr  rc   rc   rc   rd   rN   z  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?)rJ  rangerK  rL  rM  r   r   r  )Zoriginal_valuesZ
_MAX_COUNTcountr'  rc   rc   rd   rO     s    
c                s"   t s S tj  fdd}|S )Nc                 s   t  }z |  S t|  X d S )N)rN   rO   )r   key)r   rc   rd   r     s    zreap_threads.<locals>.decorator)rJ  r   r   )r   r   rc   )r   rd   rP     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?)rJ  rK  r   Z	monotonicrz  r   r  )r   Z	old_countZ
start_timeZdeadlinerP  Zdtrw   rc   rc   rd   wait_threads_exit  s    
$
rT  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   rX  )r   r   rU  WNOHANGr   rn   r  )Zany_processr0  Zstatusrc   rc   rd   rL     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 rc   )isAlive)rA  r  rc   rc   rd   rB    s    z!start_threads.<locals>.<listcomp>z7Unable to join %d threads during a period of %d minutesc             S   s   g | ]}|j  r|qS rc   )rX  )rA  r  rc   rc   rd   rB    s    zUnable to join %d threads)r{   r  r   r   r   r   r   rO  r   maxfaulthandlerZdump_tracebackrn   r   rz  )ZthreadsZunlockr  r  ZendtimeZ	starttimer   rc   rc   rd   rQ     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   rj  new_valreal_valrc   rc   rd   rW     s    




c             c   sX   || kr0| | }|| |< z
|V  W d || |< X n$|| |< z
d V  W d || krR| |= X d S )Nrc   )r   itemr\  r]  rc   rc   rd   rV   	  s    

c             C   s   t jdd| j } | S )Ns   \[\d+ refs, \d+ blocks\]\r?\n?    )ru  substrip)r  rc   rc   rd   strip_python_stderr8	  s    rb  Z	getcountsz-types are immortal if COUNT_ALLOCS is definedc               C   s   t j S )N)r  Z_args_from_interpreter_flagsrc   rc   rc   rd   args_from_interpreter_flagsE	  s    rc  c               C   s   t j S )N)r  Z"_optim_args_from_interpreter_flagsrc   rc   rc   rd   !optim_args_from_interpreter_flagsJ	  s    rd  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
rM   c             C   s   t jjj| d || _d S )Nr   )logginghandlersBufferingHandlerrg  matcher)rf  rh  rc   rc   rd   rg  T	  s    zTestHandler.__init__c             C   s   dS )NFrc   )rf  rc   rc   rd   shouldFlush]	  s    zTestHandler.shouldFlushc             C   s   | j | | jj|j d S )N)r   r   r   __dict__)rf  rn  rc   rc   rd   emit`	  s    
zTestHandler.emitc             K   s.   d}x$| j D ]}| jj|f|rd}P qW |S )NFT)r   rh  matches)rf  r   r   drc   rc   rd   rl  d	  s    zTestHandler.matchesN)r`   ra   rb   rg  ri  rk  rl  rc   rc   rc   rd   rM   S	  s   	c               @   s    e Zd ZdZdd Zdd ZdS )	rX   rw   rt  c             K   s<   d}x2|D ]*}|| }|j |}| j|||s
d}P q
W |S )NTF)r\  match_value)rf  rm  r   r   r  r  dvrc   rc   rd   rl  s	  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   rt   _partial_matchesfind)rf  r  ro  r  r   rc   rc   rd   rn  	  s    
zMatcher.match_valueN)rw   rt  )r`   ra   rb   rp  rl  rn  rc   rc   rc   rd   rX   o	  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   ry  )Zsymlink_pathcanrc   rc   rd   r   	  s    

c             C   s    t  }d}|r| S tj|| S )Nz*Requires functional symlink implementation)r   rr   r  )r  okrw   rc   rc   rd   r/   	  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)dirrE  s	   user.testr_  s   trusted.foos   42z2.6.(\d{1,2})r   '   )
_can_xattrr   r   r*  r+  Zmkstempr<  r   rw  rF  ro   r   ru  rv  r   r  r   r   r   )ru  Ztmp_dirZtmp_fpZtmp_namefpZkernel_versionr  rc   rc   rd   	can_xattr	  s,    

r|  c             C   s    t  }d}|r| S tj|| S )Nz(no non-broken extended attribute support)r|  rr   r  )r  rv  rw   rc   rc   rd   r8   	  s    c             C   s$   t  pt}d}|r| S tj|| S )Nz#Not run for (non-extended) PGO task)r]   PGO_EXTENDEDrr   r  )r  rv  rw   rc   rc   rd   skip_if_pgo_task	  s    
r~  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)rx  F)	r*  ZNamedTemporaryFileru   upperr  r   r   samefiler   )Z	directorybase	base_pathZ	case_pathrc   rc   rd   r   	  s    )re   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)rp   endswith)rA  r  rc   rc   rd   	<genexpr>	  s    z&detect_api_mismatch.<locals>.<genexpr>)r  rx  )Zref_apiZ	other_apire   Zmissing_itemsrc   rc   rd   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  ra   )r`   r  rt   r  rx  rp   r   r   types
ModuleTypeaddZassertCountEqual__all__)Z	test_caser   Zname_of_moduleZextraZ	blacklistZexpectedru   r   rc   rc   rd   r=   	  s    )


c               @   s$   e Zd ZdZdZdd Zdd ZdS )rZ   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/defaultsr]  zcom.apple.CrashReporterZ
DialogType)r   r  s	   developerz:this test triggers the Crash Reporter, that is intentionalr   T)endr  ) rn   ro   rp   r   r   r   _k32SetErrorMode	old_valuemsvcrtCrtSetReportModer   rm   	old_modesCRT_WARN	CRT_ERROR
CRT_ASSERTZCRTDBG_MODE_FILECrtSetReportFileZCRTDBG_FILE_STDERRr   Z	getrlimitRLIMIT_CORE	setrlimitr   r   r  r  PIPEZcommunicatera  r   )
rf  r   ZSEM_NOGPFAULTERRORBOXr  report_typeold_modeold_filecmdprocr   rc   rc   rd   r  2
  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  rn   ro   rp   r  r  r  r  r   r  r  r   r  r  r   r   )rf  r  r  r  r  r  rc   rc   rd   r  s
  s    
zSuppressCrashReport.__exit__)r`   ra   rb   r  r  r  r  rc   rc   rc   rd   rZ   )
  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  r[  rc   )attr_is_local	attr_nameobject_to_patchr  rc   rd   cleanup
  s    zpatch.<locals>.cleanup)r   rj  r   r   Z
addCleanupr  )Ztest_instancer  r  Z	new_valuer  rc   )r  r  r  r  rd   patch
  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)tracemallocrm   Z
is_tracingrr   rs   r  run_in_subinterp)r  r  r  rc   rc   rd   r  
  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)rf  )doneitrc   rd   __del__
  s
    z-check_free_after_iterating.<locals>.A.__del__N)r`   ra   rb   r  rc   )r  r  rc   rd   A
  s   r  F)rK  r  r  r  Z
assertTrue)r  r  rC  r   r  rc   )r  r  rd   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compilerru   r  rc   rc   rd   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)rA   _is_android_emulatorr  Zcheck_outputra  rn   rD   )ZintervalZminimum_intervalrc   rc   rd   rD   
  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)rn   r   rF  rZ  
is_enabledr  r  )r@  r  rc   rc   rd   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  )rn   ro   rp   r   r   r   r   r   r  r   r  r  r   rm   r  r  r  rO  dupr  ZEBADFr  )	namesZMAXFDr  r  r  rP  r@  Zfd2r   rc   rc   rd   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  )	signalr{   rO  NSIGsignalsr   r   ry  rf  )rf  r  Zsignamesignumrc   rc   rd   rg  M  s    
zSaveSignals.__init__c             C   s4   x.| j D ]$}| jj|}|d kr"q|| j|< qW d S )N)r  r  	getsignalrf  )rf  r  handlerrc   rc   rd   saveZ  s
    zSaveSignals.savec             C   s*   x$| j j D ]\}}| jj|| qW d S )N)rf  r   r  )rf  r  r  rc   rc   rd   restoref  s    zSaveSignals.restoreN)r`   ra   rb   rg  r  r  rc   rc   rc   rd   r  D  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   )rf  r   rc   rc   rd   rg  n  s    zFakePath.__init__c             C   s   d| j dS )Nz
<FakePath >)r   )rf  rc   rc   rd   __repr__q  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   rx  )rf  rc   rc   rd   
__fspath__t  s
    zFakePath.__fspath__N)r`   ra   rb   rg  r  r  rc   rc   rc   rd   r  k  s   r  c             c   s.   t j }zt j|  d V  W d t j| X d S )N)rn   get_int_max_str_digitsset_int_max_str_digits)Z
max_digitsZcurrentrc   rc   rd   adjust_int_max_str_digits|  s
    

r  c               C   s   dd t ddD dg S )Nc             S   s   g | ]}t |qS rc   )chr)rA  r   rc   rc   rd   rB    s    z)control_characters_c0.<locals>.<listcomp>r       )rO  rc   rc   rc   rd   control_characters_c0  s    r  )T)F)F)N)Ni   i  @ i @ i @  i   i  )r  r  r  r  r  r  r  r  r  r   r!  )r%  r#  r&  r'  r(  )NF)F)r5  F)N)Fi @  i   i   )T)N)Nr   )rR  )N(  r`   rm   collections.abccollections
contextlibZdatetimer  rZ  r?  r   r  r   rl   importlib.utilr  Zlogging.handlersre  r  r   ro   ru  r   r  r   r  r  rn   r  r*  r   r  rr   Zurllib.errorr_  rf   Z
testresultr   rJ  rL  Zmultiprocessing.processr&  zlibrV  bz2Zlzmar   r   r  r   r	   r
   r   rs   r   contextmanagerrj   r   r~   r   r:   r;   r   r6   r   r   r   r  r0  r   r   r   r   r   r   rp   r   r   r   r   r   r   r   r   r   r   r   r    r!   r   r"   r#   r$   r%   rE   r  r  r	  rG   rH   rJ   r  rF   r  r   ZSOCK_MAX_SIZEZ
skipUnlessr  __getformat__r7   r9   r0   r1   r2   r@   r  r  rA   rC   ru   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_NONASCIIr2  r   r]   r}  r1  r4  r   r   rK   r   r   r   r   ZTEST_SUPPORT_DIRr9  r   r[  r   r   r[   rG  r&   rI   objectrc  r  rR   r  r  rS   r   abcMutableMappingrT   r  r'   r   r  r(   r  r)   r*   r+   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  rU   r\   r  r  r  Z_4Gr  r  rY   r	  r3   r4   r,   r  r  r>   r5   r!  r%  r?   r"  rB   r*  r+  r-  r2  r3  r<  r5  r7  rA  r-   rD  ZMISSING_C_DOCSTRINGSr  ZHAVE_DOCSTRINGSZrequires_docstringsr.   rH  rI  Zenvironment_alteredrN   rO   rP   rT  rL   rQ   rW   rV   rb  ZskipIfZrequires_type_collectingrc  rd  rf  rg  rM   rX   rr  r   r/   rz  r|  r8   r~  r   r<   r=   rZ   r  r  r  r^   r  rD   r  r_   r  r  r  r  rc   rc   rc   rd   <module>   s  











2	
!
J			>%	
          
    
%2' 5M		

$
#
0





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

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