%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/local/lib/python3.8/multiprocessing/__pycache__/
Upload File :
Create Path :
Current File : //usr/local/lib/python3.8/multiprocessing/__pycache__/managers.cpython-38.pyc

U

qa@sBdddddgZddlZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
d	d
lmZd	dl
mZmZmZd	dlmZd	d
lmZd	dlmZd	dlmZzd	dlmZdZWnek
rdZYnXddZeejedddDZedek	r.ddZeD]ZeeeqGdddeZdifddZ ddZ!Gd d!d!e"Z#d"d#Z$d$d%Z%Gd&d'd'eZ&Gd(d)d)eZ'ej(ej)fej*ej+fd*Z,Gd+ddeZ-Gd,d-d-e.Z/Gd.ddeZ0d/d0Z1ifd1d2Z2dld3d4Z3Gd5d6d6eZ4Gd7d8d8eZ5dmd9d:Z6Gd;d<d<e0Z7Gd=d>d>e0Z8Gd?d@d@e8Z9GdAdBdBe0Z:GdCdDdDe0Z;GdEdFdFe0Z<GdGdHdHe0Z=e2dIdJZ>GdKdLdLe>Z?e2dMdNZ@dOdPie@_Ae2dQdRZBe2dSdTZCdUdUdUdPdPdVeC_AGdWdSdSeCZDGdXdde-ZEeEdYejFeEdZejFeEd[ejGe:eEd\ejHe8eEd]ejIe8eEd^ejJe8eEd_ejKe8eEd`ejLe9eEdaejMe;eEdbejNeDeEdcee?eEddeOe@eEd8e5e=eEd:e6eBeEd6e4e<eEjdPe7ddeeEjdUddfer>GdgdhdhZPGdidjdje&ZQGdkdde-ZRdS)nBaseManagerSyncManager	BaseProxyTokenSharedMemoryManagerN)getpid)
format_exc)
connection)	reductionget_spawning_popenProcessError)pool)process)util)get_context)
shared_memoryTFcCstj|j|ffSN)arraytypecodetobytes)ar4/usr/local/lib/python3.8/multiprocessing/managers.pyreduce_array-srcCsg|]}tti|qSr)typegetattr.0namerrr
<listcomp>1sr )itemskeysvaluescCstt|ffSr)listobjrrrrebuild_as_list3sr'c@s4eZdZdZdZddZddZddZd	d
ZdS)rz3
    Type to uniquely identify a shared object
    typeidaddressidcCs||||_|_|_dSrr()selfr)r*r+rrr__init__BszToken.__init__cCs|j|j|jfSrr(r,rrr__getstate__EszToken.__getstate__cCs|\|_|_|_dSrr(r,staterrr__setstate__HszToken.__setstate__cCsd|jj|j|j|jfS)Nz %s(typeid=%r, address=%r, id=%r))	__class____name__r)r*r+r.rrr__repr__KszToken.__repr__N)	r4
__module____qualname____doc__	__slots__r-r/r2r5rrrrr<srcCs8|||||f|\}}|dkr*|St||dS)zL
    Send a message to manager using connection `c` and return response
    #RETURNN)sendrecvconvert_to_error)cr+
methodnameargskwdskindresultrrrdispatchSs
rDcCsd|dkr|S|dkrRt|ts4td||t||dkrHtd|St|Sntd|SdS)N#ERROR)
#TRACEBACK#UNSERIALIZABLEz.Result {0!r} (kind '{1}') type is {2}, not strrGzUnserializable message: %s
zUnrecognized message type {!r})
isinstancestr	TypeErrorformatrRemoteError
ValueError)rBrCrrrr=]s

r=c@seZdZddZdS)rLcCsdt|jddS)NzM
---------------------------------------------------------------------------
rzK---------------------------------------------------------------------------)rIr@r.rrr__str__mszRemoteError.__str__N)r4r6r7rNrrrrrLlsrLcCs2g}t|D] }t||}t|r||q|S)z4
    Return a list of names of methods of `obj`
    )dirrcallableappend)r&temprfuncrrrall_methodsts
rTcCsddt|DS)zP
    Return a list of names of methods of `obj` which do not start with '_'
    cSsg|]}|ddkr|qS)r_rrrrrr sz"public_methods.<locals>.<listcomp>)rTr%rrrpublic_methodssrVc	@seZdZdZdddddddd	d
g	ZddZd
dZddZddZddZ	ddZ
ddZddZeee
dZ
ddZddZd d!Zd"d#Zd$d%Zd&e_d'd(Zd)d*Zd+d,Zd-d.Zd/S)0ServerzM
    Server class which runs in a process controlled by a manager object
    shutdowncreateaccept_connectionget_methods
debug_infonumber_of_objectsdummyincrefdecrefcCsxt|tstd|t|||_t||_t	|\}}||dd|_
|j
j|_ddi|_i|_
i|_t|_dS)Nz&Authkey {0!r} is type {1!s}, not bytes)r*backlog0Nr)rHbytesrJrKrregistryrAuthenticationStringauthkeylistener_clientlistenerr*	id_to_objid_to_refcountid_to_local_proxy_obj	threadingLockmutex)r,rfr*rh
serializerListenerClientrrrr-s 


zServer.__init__c	Cst|_|t_zVtj|jd}d|_|z|jsL|jdq4Wnttfk
rfYnXW5tjtjkrt	
dtjt_tjt_t
dXdS)z(
        Run the server forever
        zresetting stdout, stderrr)targetTr	N)rnEvent
stop_eventrcurrent_process_manager_serversysstdout
__stdout__rdebug
__stderr__stderrexitThreadaccepterdaemonstartis_setwaitKeyboardInterrupt
SystemExit)r,rrrr
serve_forevers 




zServer.serve_forevercCsNz|j}Wntk
r&YqYnXtj|j|fd}d|_|qdS)Nrtr@T)rjacceptOSErrorrnrhandle_requestrr)r,r>trrrrs
zServer.acceptercCsLd}}}zTt||jt||j|}|\}}}}||jksTtd|t||}Wntk
r~dt	f}	Yn>Xz||f||}Wntk
rdt	f}	Yn
Xd|f}	z|
|	Wnttk
r>}
zTz|
dt	fWntk
rYnXtd|	td|td|
W5d}
~
XYnX|
dS)z)
        Handle a new connection
        Nz%r unrecognizedrFr:zFailure to send message: %rz ... request was %r ... exception was %r)r
deliver_challengerhanswer_challenger<publicAssertionErrorr	Exceptionrr;rinfoclose)r,r>funcnamerCrequestignorer@rArSmsgerrrrs4zServer.handle_requestc
Cstdtj|j}|j}|j}|j	szBd}}|}|\}}}	}
z||\}}}Wn^t
k
r}
z@z|j|\}}}Wn&t
k
r}z|
W5d}~XYnXW5d}
~
XYnX||krtd|t
||ft||}z||	|
}Wn,tk
r"}zd|f}W5d}~XYnPX|o4||d}|rj||||\}}t||j|}d||ff}nd|f}Wntk
r|dkrdtf}nNz,|j|}|||||f|	|
}d|f}Wn tk
rdtf}YnXYnPtk
rtdtjtd	Yn tk
r<dtf}YnXzDz||Wn2tk
r~}z|d
tfW5d}~XYnXWq$tk
r}z@tdtjtd|td
||tdW5d}~XYq$Xq$dS)zQ
        Handle requests from the proxies in a particular process/thread
        z$starting server thread to service %rNz+method %r of %r object is not in exposed=%rrE#PROXYr:rFz$got EOF -- exiting thread serving %rrrGzexception in thread serving %rz ... message was %rrr	)rr|rncurrent_threadrr<r;rkrvrKeyErrorrmAttributeErrorrrrgetrYrr*rfallback_mappingEOFErrorryrrr)r,connr<r;rkr?r&ridentr@rAexposed	gettypeidkeZ	second_kefunctionresrrr)ZridentZrexposedtokenZ
fallback_funcrCrrrserve_clients(


$zServer.serve_clientcCs|Srrr,rrr&rrrfallback_getvalue5szServer.fallback_getvaluecCst|SrrIrrrrfallback_str8szServer.fallback_strcCst|Sr)reprrrrr
fallback_repr;szServer.fallback_repr)rNr5	#GETVALUEcCsdSrrr,r>rrrr^DszServer.dummyc
Cs|jtg}t|j}||D]<}|dkr&|d||j|t|j|dddfq&d|W5QRSQRXdS)zO
        Return some info --- useful to spot problems with refcounting
        rcz  %s:       refcount=%s
    %srNK
)	rpr$rlr"sortrQrIrkjoin)r,r>rCr"rrrrr\Gs
zServer.debug_infocCs
t|jS)z*
        Number of shared objects
        )lenrlrrrrr]WszServer.number_of_objectscCsLz:ztd|dWnddl}|YnXW5|jXdS)z'
        Shutdown this process
        z!manager received shutdown messager:NrN)rvsetrr|r;	traceback	print_exc)r,r>rrrrrX^s
zServer.shutdownc	Ost|dkr|^}}}}n|s(tdnd|krDtdt|d|d}t|dkr~|^}}}ddl}|jd	tdd
nFd|krtdt|d|d}|^}}ddl}|jdtdd
t|}|j|j|\}}}}	|dkr|st|dkrt	d
|d}
n
|||}
|dkr2t
|
}|dk	rlt|ts\td
|t|t|t|}dt|
}td|||
t||f|j|<||jkrd|j|<W5QRX||||t|fS)z>
        Create a new shared object and return its id
        z8descriptor 'create' of 'Server' object needs an argumentr)7create expected at least 2 positional arguments, got %dr	rNz2Passing 'typeid' as keyword argument is deprecated)
stacklevelr>z-Passing 'c' as keyword argument is deprecatedz4Without callable, must have one non-keyword argumentz,Method_to_typeid {0!r}: type {1!s}, not dictz%xz&%r callable returned object with id %r)rrJpopwarningswarnDeprecationWarningtuplerprfrMrVrHdictrKrr$r+rr|rrkrlr_)r@rAr,r>r)rrPrmethod_to_typeid	proxytyper&rrrrrYksp











z
Server.createz$($self, c, typeid, /, *args, **kwds)cCst|j|jdS)zL
        Return the methods of the shared object indicated by token
        r	)rrkr+)r,r>rrrrr[szServer.get_methodscCs"|t_|d||dS)z=
        Spawn a new thread to serve this connection
        rN)rnrrr;r)r,r>rrrrrZs

zServer.accept_connectioncCs|jz|j|d7<Wnhtk
r}zJ||jkrrd|j|<|j||j|<|j|\}}}td|n|W5d}~XYnXW5QRXdS)Nr	z&Server re-enabled tracking & INCREF %r)rprlrrmrkrr|)r,r>rrr&rrrrrr_s

z
Server.increfc	Cs||jkr$||jkr$td|dS|jZ|j|dkrXtd||j||j||j|d8<|j|dkr|j|=W5QRX||jkrd|j|<td||j|j|=W5QRXdS)NzServer DECREF skipping %rrz+Id {0!s} ({1!r}) has refcount {2:n}, not 1+r	)NrNzdisposing of obj with id %r)rlrmrr|rprrKrk)r,r>rrrrr`s,


z
Server.decrefN)r4r6r7r8rr-rrrrrrrrr^r\r]rXrY__text_signature__r[rZr_r`rrrrrWs<
"Q
=rWc@seZdZdgZdZdZdZdS)Statevaluerr	rN)r4r6r7r9INITIALSTARTEDSHUTDOWNrrrrrsr)pickle	xmlrpclibc@seZdZdZiZeZd"ddZddZdd	Z	d#ddZ
ed$d
dZddZ
d%ddZddZddZddZddZeddZeddZed&d d!ZdS)'rz!
    Base class for managers
    NrcCs\|dkrtj}||_t||_t|_tj|j_	||_
t|\|_|_
|pTt|_dSr)rrwrh_addressrg_authkeyr_staterr_serializerriZ	_Listener_Clientr_ctx)r,r*rhrqctxrrrr-s

zBaseManager.__init__cCsf|jjtjkrP|jjtjkr&tdn*|jjtjkr>tdntd|jjt|j	|j
|j|jS)zX
        Return server object with serve_forever() method and address attribute
        Already started serverManager has shut downUnknown state {!r})
rrrrrr
rrKrW	_registryrrrr.rrr
get_servers


zBaseManager.get_servercCs8t|j\}}||j|jd}t|ddtj|j_dS)z>
        Connect manager object to the server process
        rhNr^)	rirrrrDrrrr)r,rrrsrrrrconnectszBaseManager.connectrc	Cs4|jjtjkrP|jjtjkr&tdn*|jjtjkr>tdntd|jj|dk	rht|sht	dt
jdd\}}|jj
t|j|j|j|j|j|||fd|_d	d
d|jjD}t|jd||j_|j|||_|tj|j_tj|t|j|j|j|j|j|jfd
d|_ dS)z@
        Spawn a server process for this manager object
        rrrNzinitializer must be a callableF)duplexr:css|]}t|VqdSrr)rirrr	<genexpr>Asz$BaseManager.start.<locals>.<genexpr>-rr@exitpriority)!rrrrrr
rrKrPrJr
PiperProcessr_run_serverrrrr_processr	_identityr4rrrr<rFinalize_finalize_managerrrX)r,initializerinitargsreaderwriterrrrrr(sH




zBaseManager.startc	Cs^ttjtj|dk	r |||||||}||j|td|j|	dS)z@
        Create a server, report its address and run it
        Nzmanager serving at %r)
signalSIGINTSIG_IGN_Serverr;r*rrrr)	clsrfr*rhrqrrrserverrrrrSszBaseManager._run_servercOsd|jjtjkstd|j|j|jd}zt	|dd|f||\}}W5|Xt
||j||fS)zP
        Create a new shared object; return the token and exposed tuple
        zserver not yet startedrNrY)rrrrrrrrrrDr)r,r)r@rArr+rrrr_createjs
zBaseManager._createcCs*|jdk	r&|j||js&d|_dS)zC
        Join the manager process (if it has been spawned)
        N)rris_aliver,timeoutrrrrvs

zBaseManager.joincCs2|j|j|jd}zt|ddWS|XdS)zS
        Return some info about the servers shared objects and connections
        rNr\rrrrrDr,rrrr_debug_infoszBaseManager._debug_infocCs2|j|j|jd}zt|ddWS|XdS)z5
        Return the number of shared objects
        rNr]rrrrr_number_of_objectsszBaseManager._number_of_objectscCsj|jjtjkr||jjtjkrf|jjtjkr<tdn*|jjtjkrTtdntd|jj|S)NzUnable to start serverrr)	rrrrrrr
rrKr.rrr	__enter__s

zBaseManager.__enter__cCs|dSr)rXr,exc_typeexc_valexc_tbrrr__exit__szBaseManager.__exit__cCs|rtdz,|||d}zt|ddW5|XWntk
rRYnX|jdd|rtdt|drtd	||jd
d|rtdt	j
|_ztj
|=Wntk
rYnXdS)zQ
        Shutdown the manager process; will be registered as a finalizer
        z#sending shutdown message to managerrNrXg?)rzmanager still alive	terminatez'trying to `terminate()` manager processg?z#manager still alive after terminate)rrrrrDrrhasattrrrrrr_address_to_localr)rr*rhr1rrrrrrs.




zBaseManager._finalize_managercCs|jSr)rr.rrrr*szBaseManager.addressTc
sd|jkr|j|_dkr"t|p0tdd}|p@tdd}|rt|D]8\}}t|tksrt	d|t|tksRt	d|qR|||f|j<|r‡fdd}	|	_
t||	dS)z9
        Register a typeid with the manager type
        rN	_exposed__method_to_typeid_z%r is not a stringcs`td|jf||\}}||j||j|d}|j|j|jd}t|dd|jf|S)Nz)requesting creation of a shared %r objectmanagerrhrrr`)	rr|rrrrr*rDr+)r,r@rArexpproxyrrr)rrrRsz"BaseManager.register.<locals>.temp)__dict__rcopy	AutoProxyrr$r!rrIrr4setattr)
rr)rPrrr
create_methodkeyrrRrr
rregisters*



zBaseManager.register)NNrN)Nr)Nr)N)NNNNT)r4r6r7r8rrWrr-rrrclassmethodrrrrrrrstaticmethodrpropertyr*rrrrrrs8
	
+
	




c@seZdZddZddZdS)ProcessLocalSetcCst|dddS)NcSs|Sr)clearr%rrr<lambda>z*ProcessLocalSet.__init__.<locals>.<lambda>)rregister_after_forkr.rrrr-szProcessLocalSet.__init__cCst|dfSrd)rr.rrr
__reduce__szProcessLocalSet.__reduce__N)r4r6r7r-rrrrrrsrc@seZdZdZiZeZdddZddZ	d	ifd
dZ
dd
ZddZe
ddZddZddZddZddZddZdS)rz.
    A base for proxies of shared objects
    NTFc		Cstj8tj|jd}|dkr:ttf}|tj|j<W5QRX|d|_|d|_	||_
|j
j|_||_
||_t|d|_||_|dk	rt||_n"|j
dk	r|j
j|_ntj|_|r|t|tjdS)Nrr	)r_mutexrrr*rForkAwareLocalr_tls_idset_tokenr+_id_managerrrir_owned_by_managerrrgrrwrh_increfr_after_fork)	r,rrqr
rhrr_
manager_ownedZ	tls_idsetrrrr-s*



zBaseProxy.__init__cCsdtdtj}tjdkr4|dtj7}|j|jj	|j
d}t|dd|f||j_
dS)Nzmaking connection to manager
MainThread|rrZ)rr|rrwrrnrrr"r*rrDr r
)r,rrrrr_connect-s

zBaseProxy._connectrcCsz|jj}Wn6tk
rBtdtj||jj}YnX|	|j
|||f|\}}|dkrp|S|dkr|\}}|jj
|jd}	|jj|_|	||j|j|j|d}
|j|j|jd}t|dd|jf|
St||dS)	zV
        Try to call a method of the referent and return a copy of the result
        z#thread %r does not own a connectionr:rr	rNr`)r r
rrr|rnrrr+r;r#r<r$rr)r"r*rrrrDr+r=)r,r?r@rArrBrCrrrrrrr_callmethod6s6
zBaseProxy._callmethodcCs
|dS)z9
        Get a copy of the value of the referent
        rr-r.rrr	_getvalueTszBaseProxy._getvaluec	Cs|jrtd|jjdS|j|jj|jd}t|dd|j	ftd|jj|j
|j	|joj|jj
}tj|tj|j|j||j|j
|jfdd|_dS)Nz%owned_by_manager skipped INCREF of %rrr_z	INCREF %r
r)r%rr|r"r+rr*rrDr#r!addr$rrr_decrefr _close)r,rr1rrrr&Zs$
zBaseProxy._increfc
Cs||j|dks |jtjkrz2td|j||j|d}t|dd|jfWqt	k
r}ztd|W5d}~XYqXntd|j|st
|drtdtj
|j|`dS)Nz	DECREF %rrr`z... decref failed %sz%DECREF %r -- manager already shutdownr
z-thread %r has no more proxies so closing conn)discardr+rrrrr|r*rDrrrnrrr
r)rrhr1ZtlsZidsetrrrrrrr2ns 
zBaseProxy._decrefc
CsHd|_z|Wn0tk
rB}ztd|W5d}~XYnXdS)Nzincref failed: %s)r$r&rrr)r,rrrrr's
zBaseProxy._after_forkcCs^i}tdk	r|j|d<t|ddrB|j|d<tt|j|j|ffStt||j|j|ffSdS)Nrh_isautoFr)	rrrrRebuildProxyrr"rrr,rArrrrs


zBaseProxy.__reduce__cCs|Sr)r/)r,memorrr__deepcopy__szBaseProxy.__deepcopy__cCsdt|j|jjt|fS)Nz<%s object, typeid %r at %#x>)rr4r"r)r+r.rrrr5szBaseProxy.__repr__cCs:z|dWStk
r4t|dddYSXdS)zV
        Return representation of the referent (or a fall-back if that fails)
        r5Nr,z; '__str__()' failed>)r-rrr.rrrrNszBaseProxy.__str__)NNNTF)r4r6r7r8rrForkAwareThreadLockrr-r+r-r/r&rr2r'rr9r5rNrrrrrs(
)	

cCsttdd}|rT|j|jkrTtd|d|d<|j|jkrT|j|j|j|j<|	ddopttdd}|||fd|i|S)	z5
    Function used for unpickling proxy objects.
    rxNz*Rebuild a proxy owned by manager, token=%rTr(r_Z_inheritingF)
rrrwr*rr|r+rmrkr)rSrrqrArr_rrrr6s

r6cCspt|}z|||fWStk
r*YnXi}|D]}td||f|q4t|tf|}||_||||f<|S)zB
    Return a proxy type whose methods are given by `exposed`
    zOdef %s(self, /, *args, **kwds):
        return self._callmethod(%r, args, kwds))rrexecrrr)rr_cacheZdicmeth	ProxyTyperrr
MakeProxyTypes r?c
Cst|d}|dkrB||j|d}zt|dd|f}W5|X|dkrX|dk	rX|j}|dkrjtj}td|j	|}||||||d}	d|	_
|	S)z*
    Return an auto-proxy for `token`
    r	Nrr[z
AutoProxy[%s])r
rhr_T)rir*rrDrrrwrhr?r)r5)
rrqr
rhrr_rrr>rrrrrs 


rc@seZdZddZddZdS)	NamespacecKs|j|dSr)rupdater7rrrr-szNamespace.__init__cCsZt|j}g}|D]$\}}|ds|d||fq|d|jjd|fS)NrUz%s=%rz%s(%s)z, )	r$rr!
startswithrQrr3r4r)r,r!rRrrrrrr5s
zNamespace.__repr__N)r4r6r7r-r5rrrrr@sr@c@s8eZdZdddZddZddZdd	ZeeeZd
S)ValueTcCs||_||_dSr)	_typecode_value)r,rrlockrrrr-szValue.__init__cCs|jSrrEr.rrrrsz	Value.getcCs
||_dSrrGr,rrrrr
sz	Value.setcCsdt|j|j|jfS)Nz
%s(%r, %r))rr4rDrEr.rrrr5szValue.__repr__N)T)	r4r6r7r-rrr5rrrrrrrCs

rCcCst||Sr)r)rsequencerFrrrArraysrJc@s8eZdZdZddZddZddZdd	Zd
dZdS)

IteratorProxy)__next__r;throwrcCs|Srrr.rrr__iter__szIteratorProxy.__iter__cGs|d|S)NrLr.r,r@rrrrLszIteratorProxy.__next__cGs|d|S)Nr;r.rOrrrr;szIteratorProxy.sendcGs|d|S)NrMr.rOrrrrMszIteratorProxy.throwcGs|d|S)Nrr.rOrrrr!szIteratorProxy.closeN)	r4r6r7rrNrLr;rMrrrrrrKsrKc@s2eZdZdZdddZddZdd	Zd
dZdS)

AcquirerProxy)acquirereleaseTNcCs"|dkr|fn||f}|d|SNrQr.)r,blockingrr@rrrrQ'szAcquirerProxy.acquirecCs
|dSNrRr.r.rrrrR*szAcquirerProxy.releasecCs
|dSrSr.r.rrrr,szAcquirerProxy.__enter__cCs
|dSrUr.rrrrr.szAcquirerProxy.__exit__)TN)r4r6r7rrQrRrrrrrrrP%s

rPc@s6eZdZdZdddZd
ddZdd	Zdd
dZdS)ConditionProxy)rQrRrnotify
notify_allNcCs|d|fSNrr.rrrrr4szConditionProxy.waitr	cCs|d|fS)NrWr.)r,nrrrrW6szConditionProxy.notifycCs
|dS)NrXr.r.rrrrX8szConditionProxy.notify_allcCsd|}|r|S|dk	r$t|}nd}d}|s`|dk	rN|t}|dkrNq`|||}q,|S)Nr)time	monotonicr)r,	predicaterrCendtimewaittimerrrwait_for:s
zConditionProxy.wait_for)N)r	)N)r4r6r7rrrWrXr`rrrrrV2s


rVc@s2eZdZdZddZddZddZdd	d
ZdS)
EventProxy)rrrrcCs
|dS)Nrr.r.rrrrOszEventProxy.is_setcCs
|dSNrr.r.rrrrQszEventProxy.setcCs
|dS)Nrr.r.rrrrSszEventProxy.clearNcCs|d|fSrYr.rrrrrUszEventProxy.wait)N)r4r6r7rrrrrrrrrraMs
rac@sNeZdZdZdddZddZddZed	d
ZeddZ	ed
dZ
dS)BarrierProxy)__getattribute__rabortresetNcCs|d|fSrYr.rrrrr[szBarrierProxy.waitcCs
|dS)Nrer.r.rrrre]szBarrierProxy.abortcCs
|dS)Nrfr.r.rrrrf_szBarrierProxy.resetcCs|ddS)Nrd)partiesr.r.rrrrgaszBarrierProxy.partiescCs|ddS)Nrd)	n_waitingr.r.rrrrhdszBarrierProxy.n_waitingcCs|ddS)Nrd)brokenr.r.rrrrigszBarrierProxy.broken)N)r4r6r7rrrerfrrgrhrirrrrrcYs


rcc@s(eZdZdZddZddZddZdS)	NamespaceProxy)rd__setattr____delattr__cCs0|ddkrt||St|d}|d|fS)NrrUr-rd)objectrdr,r
callmethodrrr__getattr__nszNamespaceProxy.__getattr__cCs4|ddkrt|||St|d}|d||fS)NrrUr-rk)rmrkrd)r,rrrorrrrksszNamespaceProxy.__setattr__cCs0|ddkrt||St|d}|d|fS)NrrUr-rl)rmrlrdrnrrrrlxszNamespaceProxy.__delattr__N)r4r6r7rrprkrlrrrrrjlsrjc@s*eZdZdZddZddZeeeZdS)
ValueProxy)rrcCs
|dS)Nrr.r.rrrrszValueProxy.getcCs|d|fSrbr.rHrrrrszValueProxy.setN)r4r6r7rrrrrrrrrrqsrq
BaseListProxy)__add____contains____delitem____getitem____len____mul____reversed____rmul____setitem__rQcountextendindexinsertrremovereverser__imul__c@seZdZddZddZdS)	ListProxycCs|d|f|S)Nr}r.rHrrr__iadd__szListProxy.__iadd__cCs|d|f|S)Nrr.rHrrrrszListProxy.__imul__N)r4r6r7rrrrrrrsr	DictProxy)rtrurvrNrwr{rrrr!r"rpopitem
setdefaultrAr#rNIterator
ArrayProxy)rwrvr{	PoolProxy)Zapplyapply_asyncrimapimap_unorderedrmap	map_asyncstarmap
starmap_asyncrZAsyncResult)rrrrrc@seZdZddZddZdS)rcCs|Srrr.rrrrszPoolProxy.__enter__cCs|dSr)rrrrrrszPoolProxy.__exit__N)r4r6r7rrrrrrrsc@seZdZdZdS)ra(
    Subclass of `BaseManager` which supports a number of shared object types.

    The types registered are those intended for the synchronization
    of threads, plus `dict`, `list` and `Namespace`.

    The `multiprocessing.Manager()` function creates started instances of
    this class.
    N)r4r6r7r8rrrrrsQueue
JoinableQueueruroRLock	SemaphoreBoundedSemaphore	ConditionBarrierPoolr$r)rr)rc@sLeZdZdZgfddZddZddZdd	Zd
dZdd
Z	ddZ
dS)_SharedMemoryTrackerz+Manages one or more shared memory segments.cCs||_||_dSrZshared_memory_context_name
segment_names)r,rrrrrr-sz_SharedMemoryTracker.__init__cCs(td|dt|j|dS)z6Adds the supplied shared memory block name to tracker.zRegister segment  in pid N)rr|rrrQr,segment_namerrrregister_segmentsz%_SharedMemoryTracker.register_segmentcCsBtd|dt|j|t|}||dS)zCalls unlink() on the shared memory block with the supplied name
            and removes it from the list of blocks being tracked.zDestroy segment rN)	rr|rrrrSharedMemoryrunlink)r,rZsegmentrrrdestroy_segments

z$_SharedMemoryTracker.destroy_segmentcCs"|jddD]}||qdS)z<Calls destroy_segment() on all tracked shared memory blocks.N)rrrrrrrsz_SharedMemoryTracker.unlinkcCs(td|jjdt|dS)NzCall z.__del__ in )rr|r3r4rrr.rrr__del__sz_SharedMemoryTracker.__del__cCs|j|jfSrrr.rrrr/sz!_SharedMemoryTracker.__getstate__cCs|j|dSr)r-r0rrrr2sz!_SharedMemoryTracker.__setstate__N)r4r6r7r8r-rrrrr/r2rrrrrs	rc@sReZdZejdddgZddZddZde_d	d
ZddZ	d
dZ
ddZdS)SharedMemoryServer
track_segmentrelease_segment
list_segmentscOsZtj|f|||j}t|tr,t|}td|dt|_	t
dtdS)NZshm_rUz"SharedMemoryServer started by pid )rWr-r*rHreosfsdecoderrshared_memory_contextrr|)r,r@kwargsr*rrrr-
s

zSharedMemoryServer.__init__cOstt|dkr|d}n4d|kr(|d}n"|s6tdntdt|dttj|ddrhtj|d	<tj||S)
zCreate a new distributed-shared object (not backed by a shared
            memory block) and return its id to be used in a Proxy Object.rrr)zDdescriptor 'create' of 'SharedMemoryServer' object needs an argumentrr	r,Z_shared_memory_proxyr)rrJrr,rfrrWrY)r@rZtypeodr)rrrrYs




zSharedMemoryServer.createz&($self, c, typeid, /, *args, **kwargs)cCs|jt||S)zACall unlink() on all tracked shared memory, terminate the Server.)rrrWrXrrrrrX)s
zSharedMemoryServer.shutdowncCs|j|dS)z?Adds the supplied shared memory block name to Server's tracker.N)rrr,r>rrrrr.sz SharedMemoryServer.track_segmentcCs|j|dS)zCalls unlink() on the shared memory block with the supplied name
            and removes it from the tracker instance inside the Server.N)rrrrrrr2sz"SharedMemoryServer.release_segmentcCs|jjS)zbReturns a list of names of shared memory blocks that the Server
            is currently tracking.)rrrrrrr7sz SharedMemoryServer.list_segmentsN)r4r6r7rWrr-rYrrXrrrrrrrrs
rc@s<eZdZdZeZddZddZddZdd	Z	d
dZ
dS)
raLike SyncManager but uses SharedMemoryServer instead of Server.

        It provides methods for creating and returning SharedMemory instances
        and for creating a list-like object (ShareableList) backed by shared
        memory.  It also provides methods that create and return Proxy Objects
        that support synchronization across processes (i.e. multi-process-safe
        locks and semaphores).
        cOsNtjdkrddlm}|tj|f||t|j	j
dtdS)Nposixr	)resource_trackerz created by pid )rrrZensure_runningrr-rr|r3r4r)r,r@rrrrrr-Is

zSharedMemoryManager.__init__cCst|jjdtdS)Nz.__del__ by pid )rr|r3r4rr.rrrrUszSharedMemoryManager.__del__cCsh|jjtjkrP|jjtjkr&tdn*|jjtjkr>tdntd|jj||j	|j
|j|jS)z@Better than monkeypatching for now; merge into Server ultimatelyz"Already started SharedMemoryServerz!SharedMemoryManager has shut downr)
rrrrrr
rrKrrrrrr.rrrrYs

zSharedMemoryManager.get_servercCsx|j|j|jd\}tjdd|d}zt|dd|jfWn.tk
rh}z||W5d}~XYnXW5QRX|S)zoReturns a new SharedMemory instance with the specified size in
            bytes, to be tracked by the manager.rNT)rYsizer)	rrrrrrDr
BaseExceptionr)r,rrZsmsrrrrrfs z SharedMemoryManager.SharedMemorycCsv|j|j|jdZ}t|}zt|dd|jjfWn0tk
rf}z|j	|W5d}~XYnXW5QRX|S)zReturns a new ShareableList instance populated with the values
            from the input sequence, to be tracked by the manager.rNr)
rrrr
ShareableListrDZshmrrr)r,rIrslrrrrrrs

 z!SharedMemoryManager.ShareableListN)r4r6r7r8rrr-rrrrrrrrr=s	
)NNNT)T)S__all__ryrnrrqueuer[rrrrrr
contextrrr
rrrrrZ	HAS_SHMEMImportErrorrrZ
view_typesr$r'Z	view_typermrrDr=rrLrTrVrWrrrrsXmlListener	XmlClientrirrrrr6r?rr@rCrJrKrPrVrarcrjrqrrrrrrZ
BasePoolProxyrrrrurorrrrrrrrrrrrrr<module>s


c

	w
4


	
	




%8

Zerion Mini Shell 1.0