Viewing File: /opt/alt/python35/lib64/python3.5/site-packages/psutil/tests/__pycache__/__init__.cpython-35.pyc



Cs[aQ@s
dZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl
mZddl
mZddl
mZddl
mZddlZddlmZdd	lmZdd
lmZddlmZddl m!Z!dd
l"m#Z#ddl"m$Z$ddl"m%Z%ddl"m&Z&ej'dkrddl(Z)nddl)Z)yddl)m*Z*Wn?e+k
raej,ej-dddl*Z*WdQRXYnXej'dkrddl.Z.ndZ.dddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZgDZ/ej0d#ppd[dkZ1d^ej2kZ3erdndZ4e5ej6j7d$Z8e5ej6j7dZ9d`Z:dZ;e8se9rdndcZ<ej0ddse1rdendZ=e8se9r)e:d9Z:e<d9Z<dfZ>ej?dgkrGdhZ>ndiZ>ej@jAej@jBejCe>ZDeDeEejFZDeDdjZGeDe$dkZHejIjJdkZKej@jLej@jAej@jMeNdndnZOej@jAeOdoZPej@jLej@jMeNZQeRejSdpZTeRedqZUeoJeZVeRejSdrZWeRejSdsZXeRejSdtZYduejSjZj[kZ\eRejSdvZ]eRejSdwZ^eRejSdxZ_eRejSdyZ`eRedzZaeao
e5ejbZceRed{ZdeRed|Zed}d~ZfefZgehejidZjddekeDZleme
denZoeme
denZpeqZreqZseqZtddZuejvddZwejvddZxGdddejyZzddZ{e{ddd6Z|e{dd8Z}dd7Z~e{dd4Ze{ddZddd5ZddIZddHZGdddenZedejddde<ddddKZedeefddde<ddddddLZededdde<ddddJZddCZddZejddBZdddDZe>d[ddGZGddde)jZee)_ddZdd>Zdd?Zdd=Ze:dd<Zddd:Zddd;ZdddOZejd[ddPZeedddQZe
jddRZdddSZddTZejddUZddNZddMZddVZddWZddXZddZZer	eje>ddYZneje>ddYZdS)z
Test utilities.
)print_functionN)AF_INET)AF_INET6)
SOCK_DGRAM)SOCK_STREAM)MACOS)POSIX)SUNOS)WINDOWS)
supports_ipv6)PY3)u)unicode)which)mockignoreAPPVEYORDEVNULLGLOBAL_TIMEOUTMEMORY_TOLERANCE
NO_RETRIESPYPY
PYTHON_EXEROOT_DIRSCRIPTS_DIRTESTFILE_PREFIXTESTFNTESTFN_UNICODETOXTRAVISVALID_PROC_STATUSES	VERBOSITYHAS_CPU_AFFINITYHAS_CPU_FREQHAS_ENVIRONHAS_PROC_IO_COUNTERS
HAS_IONICEHAS_MEMORY_MAPSHAS_PROC_CPU_NUM
HAS_RLIMITHAS_SENSORS_BATTERYHAS_BATTERYHAS_SENSORS_FANSHAS_SENSORS_TEMPERATURESHAS_MEMORY_FULL_INFOpyrun
reap_childrenget_test_subprocesscreate_zombie_proccreate_proc_children_pairZThreadTaskunittestskip_on_access_deniedskip_on_not_implementedretry_before_failingrun_test_module_by_name	get_suite	run_suiteZinstall_pipZinstall_test_depschdirsafe_rmpath
create_exeZdecode_pathZencode_pathunique_filename
get_winverget_kernel_version
call_untilwait_for_pid
wait_for_filecheck_connection_ntuplecheck_net_address
get_free_portunix_socket_pathbind_socketbind_unix_sockettcp_socketpairunix_socketpaircreate_sockets
reload_moduleimport_module_by_pathwarncopyload_shared_lib
is_namedtuple1trueZ__pypy__
iig?ZSILENTz$testfnjavaz
$psutil-test-z
@psutil-test-z	-internalu-ƒőőasciius-asciiz..scriptsZcpu_affinityZcpu_freqenvironZio_countersZioniceZussmemory_mapsZcpu_numZrlimitthreadssensors_batteryZsensors_fansZsensors_temperaturescCsdd}tr|tjpt|tjjtjpt|tdtjddpt|tj	j
}|std|Stjjtj}tjj|st
||SdS)NcSsJy)tj|dgdtjdtjWntk
rAdSYnX|SdS)Nz-Vstdoutstderr)
subprocess
check_callPIPE	Exception)exerj/__init__.pyattempts#
	z_get_py_exe.<locals>.attemptzpython%s.%srz"can't find python exe real abspath)rsys
executableospathrealpathrversion_infopsutilProcessri
ValueErrorexistsAssertionError)rlrirjrjrk_get_py_exes	#rxzr+cCs.g|]$}|jdrtt|qS)ZSTATUS_)
startswithgetattrrs).0xrjrjrk
<listcomp>s	r}AF_UNIXSOCK_SEQPACKETcCst|dtjdS)Nfile)printrmrd)srjrjrk	logstderrsrcCstdtjxtjtdD]t}t|trNtt}nt}|j	|r*td|yt
|Wq*tk
rtj
Yq*Xq*WxItD]A}td|yt
|Wqtk
rtj
YqXqWdS)Nz.executing cleanup_test_files() atexit function.zremoving temporary test file %r)rrcloserolistdirr

isinstancerrryr?rh	traceback	print_exc_testfiles_created)nameprefixrprjrjrkcleanup_test_filess$




rcCstdtdddS)Nz.executing cleanup_test_procs() atexit function	recursiveT)rr4rjrjrjrkcleanup_test_procss
rc@sjeZdZdZddZddZddZdd	Zd
dZdd
Z	ddZ
dS)
ThreadTaskz6A thread task which does nothing expect staying alive.cCs5tjj|d|_d|_tj|_dS)NFgMbP?)	threadingThread__init___running	_intervalEvent_flag)selfrjrjrkrs		zThreadTask.__init__cCs&|jj}d||jt|fS)Nz<%s running=%s at %#x>)	__class____name__rid)rrrjrjrk__repr__
szThreadTask.__repr__cCs|j|S)N)start)rrjrjrk	__enter__s
zThreadTask.__enter__cOs|jdS)N)stop)rargskwargsrjrjrk__exit__szThreadTask.__exit__cCs6|jrtdtjj||jjdS)zStart thread and keep it running until an explicit
        stop() request. Polls for shutdown every 'timeout' seconds.
        zalready startedN)rrurrrrwait)rrjrjrkrs	zThreadTask.startcCs:d|_|jjx|jr5tj|jqWdS)NT)rrsettimesleepr)rrjrjrkruns	
zThreadTask.runcCs,|jstdd|_|jdS)z8Stop thread execution and and waits until it is stopped.zalready stoppedFN)rrujoin)rrjrjrkr$s		zThreadTask.stopN)r
__module____qualname____doc__rrrrrrrrjrjrjrkrs	rcs%tjfdd}|S)Ncs4y||SWntk
r/tYnXdS)N)rhr4)rr)funrjrkwrapper2s

z&_reap_children_on_err.<locals>.wrapper)	functoolswraps)rrrj)rrk_reap_children_on_err1s!rcKs|jdt|jdt|jdtj|jdtjtr_|jdd|dkrttdt}td	|g}t	j
||}tj|t
td
dddn,t	j
||}tj|t|j|S)
a{Creates a python subprocess which does nothing for 60 secs and
    return it as subprocess.Popen instance.
    If "cmd" is specified that is used instead of python.
    By default stdin and stdout are redirected to /dev/null.
    It also attemps to make sure the process is in a reasonably
    initialized state.
    The process is registered for cleanup on reap_children().
    stdinrccwdenv
creationflagsiNz:from time import sleep;open(r'%s', 'w').close();sleep(60);z-cdeleteTempty)
setdefaultrrogetcwdr_r
r?_TESTFNrrePopen_subprocesses_startedaddrFrEpid)cmdkwdsZpylineZsprocrjrjrkr5<s$




cCstjjtd}tjd|tf}trJt|dd}nt|}t	j
|j}t|dddd}t
|t|}tj|t	j
|}||fS)aCreate a subprocess which creates another one as in:
    A (us) -> B (child) -> C (grandchild).
    Return a (child, grandchild) tuple.
    The 2 processes are fully initialized and will live for 60 secs
    and are registered for cleanup on reap_children().
    2a        import subprocess, os, sys, time
        s = "import os, time;"
        s += "f = open('%s', 'w');"
        s += "f.write(str(os.getpid()));"
        s += "f.close();"
        s += "time.sleep(60);"
        subprocess.Popen(['%s', '-c', s])
        time.sleep(60)
        rrrFr)rorpbasenamertextwrapdedentrr
r3rsrtrrFr?int
_pids_startedr)Z_TESTFN2rsubpZchild1dataZ
child2_pidZchild2rjrjrkr7]s	

cs+tjsttr'tjdtnt}tj	d|}t
jtjtj
}|jt|j||jdt||j\}}zqtj|jgggtt|jd}tj|tj|tfddd|SWd|jXWdQRXdS)	z+Create a zombie process and return its PID.ra        import os, sys, time, socket, contextlib
        child_pid = os.fork()
        if child_pid > 0:
            time.sleep(3000)
        else:
            # this is the zombie process
            s = socket.socket(socket.AF_UNIX)
            with contextlib.closing(s):
                s.connect('%s')
                if sys.version_info < (3, ):
                    pid = str(os.getpid())
                else:
                    pid = bytes(str(os.getpid()), 'ascii')
                s.sendall(pid)
        rZics
jS)N)statusrj)zprocrjrk<lambda>sz$create_zombie_proc.<locals>.<lambda>zret == psutil.STATUS_ZOMBIEN)rsrrwrtempfilemktemprr rr
contextlibclosingsocketr~
settimeoutrbindlistenr3acceptselectfilenorrecvrrrtrDr)Z	unix_filesrcsockconn_Zzpidrj)rrkr6s$





c
Ks|jdd|jddtjdtddddS}tj|j|j||jt	t
|jg|}t|jWdQRX|S)	zeRun python 'src' code string in a separate interpreter.
    Returns a subprocess.Popen instance.
    rcNrdrmodewtrF)
rrNamedTemporaryFilerrrrwriteflushr5rrEr)rrfrrjrjrkr3s	

cKst|ttfrdnd}tr3|r3dnd}|jd||jdtj|jdtj|jdd|jd	|tj||}tj	||j
\}}|jdkrt||rt
||jd
r
|dd
}|S)zUrun cmd in a subprocess and return its output.
    raises RuntimeError on error.
    TFirshellrcrduniversal_newlinesr
NrZ)rstrrr
rrergrrrcommunicate
returncodeRuntimeErrorrRendswith)rrrflagsprcrdrjrjrkshs"!

rFc	'Csdd}|r3ttjjdd}n	t}xtr\tj}tj|jy|j	WnRt
k
r}z2tr|jdkrn|jtj
krWYdd}~XnX|jr|jj|jr|jjz|jr	|jjWdy|jWn:t
k
rW}z|jtjkrEWYdd}~XnXXq?WxXtrtj}ytj|}Wntjk
r||Yq`X|j|q`W|rx4|D],}y|j	Wqtjk
rYqXqWtj|dt\}}xB|D]:}td|y|jWqtjk
rPYqXqWtj|dt\}}|rx|D]}td	|q}Wx|D]}||jqWdS)
a#Terminate and wait() any subprocess started by this test suite
    and ensure that no zombies stick around to hog resources and
    create problems  when looking for refleaks.

    If resursive is True it also tries to terminate and wait()
    all grandchildren started by this process.
    cSstj|st||tjks:t|y,tj|}|jset|Wntjk
r}YnXdstd|dS)Nrzpid %s is not gone)rsZ
pid_existsrwZpidsrtZ
is_running
NoSuchProcess)rrrjrjrkassert_gonesz"reap_children.<locals>.assert_gonerTrXNtimeoutz0couldn't terminate process %r; attempting kill()zprocess %r survived kill())rrsrtchildrenrpoprrr	terminateOSErrorr
errnoZESRCHrcrrdrrZECHILDrZ
wait_procsrrRkill)	rrrrerrrrZgonealiverjrjrkr4sh!			
	
		
	
	

cCststdd}tjd}x4|D],}|jsM|dkrZ||7}q/Pq/W|sutd|d}d}|jd}t|d}t|dkrt|d}t|dkrt|d}|||fS)	z"Return a tuple such as (2, 6, 36).z	not POSIXrUrrzcan't parse %rrrZr)	rNotImplementedErrorrounameisdigitrusplitrlen)rrcminormicroZnumsmajorrjrjrkrC0s&

cCststdtj}t|dr?|jp9d}n:tjd|d}|rst|j	d}nd}|d|d|fS)Nznot WINDOWSservice_pack_majorrz\s\d$rrZ)
r
rrmZgetwindowsversionhasattrrresearchrgroup)ZwvZsprrjrjrkrBHsc@s[eZdZdZedddddddZdd	Zd
dZdd
ZdS)retryzA retry decorator.NgMbP?cCst|dtjS)Nr)rrmrd)rrjrjrkrdszretry.<lambda>cCsI|r|rtd||_||_||_||_||_dS)Nz/timeout and retries args are mutually exclusive)ru	exceptionrretriesintervallogfun)rrrr	r
rrjrjrkr_s				zretry.__init__ccsx|jr=tj|j}xUtj|kr9dVqWn7|jrhx+t|jD]}dVqVWnx	dVqkWdS)N)rrr	range)rstop_atrrjrjrk__iter__ns		zretry.__iter__cCs#|jdk	rtj|jdS)N)r
rr)rrjrjrkrzszretry.sleepcs1tjfdd}|_|S)Ncsd}xyD]q}y||SWq
jk
r}}z4|}jdk	r^j|jw
WYdd}~Xq
Xq
Wtr|ndS)N)rrrr)rrexcr)rrrjrkrs


	zretry.__call__.<locals>.wrapper)rr	decorator)rrrrj)rrrk__call__~s$	zretry.__call__)	rrrrrhrrrrrjrjrjrkr\s
rrrrr
gMbP?cCs$tj|tr tjddS)zWait for pid to show up in the process list then return.
    Used in the test suite to give time the sub process to initialize.
    g{Gz?N)rsrtr
rr)rrjrjrkrEs
Tc	CsKt|d}|j}WdQRX|s7|s7t|rGt||S)z8Wait for a file to be written on disk with some content.rbN)openreadrwr?)ZfnamerrrrrjrjrkrFs
cCs|}t|st|S)zVKeep calling function for timeout secs and exit if eval()
    expression is True.
    )evalrw)rexprretrjrjrkrDs	cCsdd}yltj|}tj|jrHtjtj|}ntjtj|}t	rm|n
||Wn:t
k
r}z|jtjkrWYdd}~XnXdS)z>Convenience function for removing temporary test files or dirscSstjd}xtj|kry|SWqtk
r}zD|}|jtjkrcn!tdt|tjdWYdd}~XqXqW|dS)NrZzignoring %sg{Gz?)rZWindowsErrorrENOENTrRrr)rr
rrrjrjrk	retry_funs$zsafe_rmpath.<locals>.retry_funN)
rostatS_ISDIRst_moderpartialshutilrmtreeremoverrrr)rprstrrrjrjrkr?s
cCsRytj|Wn:tk
rM}z|jtjkr;WYdd}~XnXdS)z-Convenience function for creating a directoryN)romkdirrrEEXIST)dirrrjrjrk
safe_mkdirs
r%ccs7tj}ztj|dVWdtj|XdS)z@Context manager which temporarily changes the current directory.N)rorr>)dirnamecurdirrjrjrkr>s

	cCs"tjj|st||rtds=tdt|tr[tj	d}t|t
svt|tjdddddd	}|j
|Wd
QRXz tjd|jd|gWd
t|jXn?tjt|trtj|}tj||jtjBd
S)z1Creates an executable file in the given location.gcczgcc is not installedz
                #include <unistd.h>
                int main() {
                    pause();
                    return 1;
                }
                suffixz.crFrrNz-o)rorprvrwrrurboolrrrrrrrerfrr?rcopyfilerrrchmodrS_IEXEC)ZoutpathZc_coderr!rjrjrkr@s$		 cCstjd|d|S)Nrr))rr)rr)rjrjrkrAsc@s:eZdZddZeejds6ejjZdS)TestCasecCs d|jj|jj|jfS)Nz%s.%s.%s)rrrZ_testMethodName)rrjrjrk__str__"szTestCase.__str__assertRaisesRegexN)	rrrr/runittestr.ZassertRaisesRegexpr0rjrjrjrkr.sr.cCs0dtjkrdtjd<tjjjdS)NZPSUTIL_TESTINGrV)ror_rsZ_psplatformZcextZset_testingrjrjrjrk_setup_tests1s
r2cCsddtjtD}dtjkr>dd|D}tj}x1|D])}d|}|jtjj|qQW|S)NcSsTg|]J}|jdr|jdr|jdrtjj|dqS)z.pyZtest_Ztest_memory_leaksr)rryrorpsplitext)r{r|rjrjrkr}9s	zget_suite.<locals>.<listcomp>ZWHEELHOUSE_UPLOADER_USERNAMEcSs%g|]}|jds|qS)osxposixlinux)r4r5r6)r)r{r|rjrjrkr}=s		zpsutil.tests.%s)	rorHEREr_r1	TestSuiteaddTestdefaultTestLoaderloadTestsFromName)ZtestmodssuiteZtmrjrjrkr<8s

cCsNttjdtjt}|j}tj|rCdnddS)N	verbosityrrZ)	r2r1TextTestRunnerr%rr<
wasSuccessfulrmexit)resultsuccessrjrjrkr=GscCsttjjtjj|d}tj}|jtjj	|tj
dtj|}|j
}tj|rdnddS)Nrr=rZ)r2rorpr3rr1r8r9r:r;r>r%rr?rmr@)rr<rArBrjrjrkr;Ns"cCstdtddd|S)zZDecorator which runs a test function and retries N times before
    actually failing.
    rrNr	)rrw)r	rjrjrkr:Zscsfdd}|S)z,Decorator to Ignore AccessDenied exceptions.cs(tjfdd}|S)NcsQy||SWn9tjk
rLdk	r9s9tjdYnXdS)Nzraises AccessDenied)rsZAccessDeniedr1SkipTest)rr)ronly_ifrjrkrdsz9skip_on_access_denied.<locals>.decorator.<locals>.wrapper)rr)rr)rD)rrkrcs$	z(skip_on_access_denied.<locals>.decoratorrj)rDrrj)rDrkr8ascsfdd}|S)z3Decorator to Ignore NotImplementedError exceptions.cs(tjfdd}|S)Ncs[y||SWnCtk
rVdk	r6s6dj}tj|YnXdS)Nz4%r was skipped because it raised NotImplementedError)rrr1rC)rrmsg)rrDrjrkrts

z;skip_on_not_implemented.<locals>.decorator.<locals>.wrapper)rr)rr)rD)rrkrss$z*skip_on_not_implemented.<locals>.decoratorrj)rDrrj)rDrkr9qs
z	127.0.0.1cCs]tjtjA}|jtjtjd|j|df|jdSWdQRXdS)zReturn an unused TCP port.rZrN)rrr
setsockopt
SOL_SOCKETSO_REUSEADDRrgetsockname)hostrrjrjrkrIsccsUtjsttd|}z	|VWdytj|Wntk
rOYnXXdS)zaA context manager which returns a non-existent file name
    and tries to delete it on exit.
    r)N)rsrrwrArounlinkr)r)rprjrjrkrJs	
cCs|dkr$|ttfkr$d}tj||}yJ|jtjtjd|j||tjkr{|jd|SWnt	k
r|j
YnXdS)zBinds a generic socket.NrUrrZrY)rUr)rrrrFrGrHrrrrhr)familytypeaddrrrjrjrkrKs



cCstjsttjj|s.t|tjtj|}y-|j||tj	kro|j
dWntk
r|jYnX|S)zBind a UNIX socket.rY)
rsrrwrorprvrr~rrrrhr)rrMrrjrjrkrLs


cCstjtj|t}|j||jd|j}tj|t}yV|j||j}x6|j\}}||kr||fS|j	quWWnt
k
r|j	YnXWdQRXdS)z^Build a pair of TCP sockets connected to each other.
    Return a (server, client) tuple.
    rYN)rrrrrrrIconnectrrr)rLrNZllrZcaddrarjrjrkrMs 





cCstjstd}}yXt|dtj}|jdtjtjtj}|jd|j|WnAt	k
r|dk	r|j
|dk	r|j
YnX||fS)zBuild a pair of UNIX sockets connected to each other through
    the same UNIX file name.
    Return a (server, client) tuple.
    NrMr)rsrrwrLrrsetblockingr~rOrhr)rZserverclientrjrjrkrNs





ccsYg}d}}z|jttjtj|jttjtjtr|jttjtj|jttjtjtrt	rt
j}t
j}t|\}}t
|dtj}x$|||fD]}|j|qW|VWdx|D]}|jqW|dk	r>t||dk	rTt|XdS)z1Open as many socket families / types as possible.NrM)appendrKrrrrrrrHAS_CONNECTIONS_UNIXrJrrNrLrr?)ZsocksZfname1Zfname2s1s2Zs3rrjrjrkrOs,
		

cCsoddl}tr6tr6t|tjs6t||tjkrdd|jdD}t	|dkst|x6|D].}d|kodknst|qWtst
|}|j|n|tjkr&t|t
st|tst
|}|j|nE|tjkr\tjd|dk	skt|ntd	|dS)
z[Check a net address validity. Supported families are IPv4,
    IPv6 and MAC addresses.
    rNcSsg|]}t|qSrj)r)r{r|rjrjrkr}s	z%check_net_address.<locals>.<listcomp>rrz([a-fA-F0-9]{2}[:|\-]?){6}zunknown family %r)	ipaddressenumrrIntEnumrwrrrrrZIPv4AddressrrZIPv6AddressrsZAF_LINKrmatchru)rNrLrXZoctsnumrjrjrkrHs&
,'c(Cst|dkst|t|dk}t|dddk}|d|jksat|d|jkszt|d|jkst|d|jkst|d|jkst|d	|jkst|r|d|j	kst|r|jdkst|t
td
rtry"tj
|j|j|j}WnGtjtfk
r}z|jdtjkrWYdd}~XnHXtj|5|j|jkst|j|jkstWdQRX|jtttfkstt|j|jttfkr|jtkrtj|j|j}tj|cy|j|jddfWn=tjk
r}z|jtjkrWYdd}~XnXWdQRXn0|jtkr|jtjkst|j|jtttfks%tt|j|jtkrU|jtjksUt|jx|j|jfD]}|jttfkrt |t!st||sqht |j"t#st|j"d|j"kodknst|j"t$|j%|jqh|jtkrht |t&sht|qhWt |jt&sXt|d
dt'tD}|j|kst|dS)z*Check validity of a connection namedtuple.rXrfdrZrrrrfromfdNicSs.g|]$}|jdrtt|qS)ZCONN_)ryrzrs)r{r|rjrjrkr}hs	z+check_connection_ntuple.<locals>.<listcomp>)rXrrr)(rrwrzr]rLrMladdrraddrrrrrr
r_errorrrrEBADFrrrrr~reprrZ
EADDRNOTAVAILrsZ	CONN_NONErrrrtupleportrrHZiprr$)rZhas_pidZhas_fdZdupsockrrrNZvalidsrjrjrkrG%sf"- !!!.cCsdy%ddl}t|ds$tWn+tk
rRddl}|j|SYnX|j|SdS)z,Backport of importlib.reload of Python 3.3+.rNreload)	importlibrImportErrorimprg)modulerhrjrjrjrkrPqs

cCstjjtjj|d}tjddkrQddl}|j||Stjdddkrddlm	}|||j
Sddl}|jj
||}|jj|}|jj||SdS)Nrrrr)SourceFileLoader)rr)rorpr3rrmrrrjZload_sourceZimportlib.machineryrlload_moduleimportlib.utilutilspec_from_file_locationmodule_from_specloaderexec_module)rprrjrlrhspecmodrjrjrkrQ~s"cCstj|tdS)zRaise a warning msg.N)warningsrRUserWarning)rErjrjrkrRscCswt|}|j}t|dks7|dtkr;dSt|dd}t|ts`dStdd|DS)z-Check if object is an instance of namedtuple.rZrF_fieldsNcss!|]}t|tkVqdS)N)rMr)r{nrjrjrk	<genexpr>sz is_namedtuple.<locals>.<genexpr>)rM	__bases__rrerzrall)r|tbrrjrjrkrTs	"c#sdtjd|d}fddtjjD}tj|}tj||zt	j
||VWdt|XdS)zCtx manager which picks up a random shared CO lib used
        by this process, copies it in another location and loads it
        in memory via ctypes. Return the new absolutized path.
        z.sorr)csMg|]C}tjj|jdkrd|jjkr|jqS)rZpython)rorpr3lower)r{r|)extrjrkr}s	z'copyload_shared_lib.<locals>.<listcomp>N)rrrsrtr`randomchoicerr+ctypesZCDLLr?)
dst_prefixdstlibsrrj)rrkrSs%
	c	#sddlm}ddlm}dtjd|d}fddtjjD}tj	|}t
j||d	}ztj|}|VWd	|d	k	rtj
jj}|jg|_||j}|dkr|t|Xd	S)
zCtx manager which picks up a random shared DLL lib used
        by this process, copies it in another location and loads it
        in memory via ctypes.
        Return the new absolutized, normcased path.
        r)wintypes)WinErrorz.dllrr)cstg|]j}tjj|jdjkrdtjj|jjkrd|jjkr|jqS)rZrZwow64)rorpr3rr)r{r|)rrjrkr}s	%!z'copyload_shared_lib.<locals>.<listcomp>N)rrrrrrsrtr`rrrr+ZWinDLLZwindllZkernel32FreeLibraryZHMODULEZargtypes_handler?)	rrrrrrcfilerrrj)rrkrSs$%	)rr)rr)rVrW)rXrri)r\r])rUr)rZ
__future__ratexitrrrrrorrrrrrrermrrrrrrvrrrrrsrrr	r
Zpsutil._commonrZpsutil._compatrr
rrrrZ	unittest2r1rricatch_warningssimplefilterrY__all__getenvr"builtin_module_namesrZ	WIN_VISTAr*r_getr#rrrrr%rrrprrqrr rgetpidrr!getfilesystemencodingrZASCII_FSabspathr&__file__rrr7rrtr&r'rTr(r)r*Zmemory_full_inforxr2r+r,r-ZHAS_THREADSr.rbr/r0r1rxrrdevnullrr$r$rzobjectr~rrrrrrregisterrrrrrr5r7r6r3rr4rCrBrrrEEnvironmentErrorrwrFrDr?r%contextmanagerr>r@rAr.r2r<r=r;r:r8r9rIrJrKrLrMrNrOrHrGrPrQrRrTrSrjrjrjrk<module>	s\


				
!

	'
0
				0 #%a:#			L

Back to Directory File Manager