B /G $@sddddgZddlZddlZddlZddlZddlZddlmZddlm Z dd l m Z m Z m Z dd lmZdd lmZdd lmZdd lmZddZe ejedddDZedek rddZxeD]Ze eeqWGdddeZdifddZddZGdddeZddZdd ZGd!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)ddeZ*d*d+Z+ifd,d-Z,ddd/d0Z-Gd1d2d2eZ.Gd3d4d4eZ/ded5d6Z0Gd7d8d8e*Z1Gd9d:d:e*Z2Gd;d<dd>e*Z4Gd?d@d@e*Z5GdAdBdBe*Z6GdCdDdDe*Z7e,dEdFZ8GdGdHdHe8Z9e,dIdJZ:dKdLie:_;e,dMdNZGdTdde'Z?e?dUej@e?dVej@e?dWejAe4e?dXejBe2e?dYejCe2e?dZejDe2e?d[ejEe2e?d\ejFe3e?d]ejGe5e?d^ejHe>e?d_ee9e?d`eIe:e?d4e/e7e?d6e0e<e?d2e.e6e?jdLe1dadbe?jdQdadcdS)f BaseManager SyncManager BaseProxyTokenN) format_exc) connection) reductionget_spawning_popen ProcessError)pool)process)util) get_contextcCstj|j|ffS)N)arraytypecodetobytes)ar;/opt/alt/python37/lib/python3.7/multiprocessing/managers.py reduce_array$srcCsg|]}tti|qSr)typegetattr).0namerrr (sr)itemskeysvaluescCstt|ffS)N)list)objrrrrebuild_as_list*sr!c@s0eZdZdZddZddZddZdd Zd S) r)typeidaddressidcCs||||_|_|_dS)N)r"r#r$)selfr"r#r$rrr__init__9szToken.__init__cCs|j|j|jfS)N)r"r#r$)r%rrr __getstate__<szToken.__getstate__cCs|\|_|_|_dS)N)r"r#r$)r%staterrr __setstate__?szToken.__setstate__cCsd|jj|j|j|jfS)Nz %s(typeid=%r, address=%r, id=%r)) __class____name__r"r#r$)r%rrr__repr__BszToken.__repr__N)r+ __module__ __qualname__ __slots__r&r'r)r,rrrrr3s rcCs8|||||f|\}}|dkr*|St||dS)Nz#RETURN)sendrecvconvert_to_error)cr$ methodnameargskwdskindresultrrrdispatchJs  r9cCsd|dkr |S|dkrRt|ts4td||t||dkrHtd|St|Sntd|SdS)Nz#ERROR)z #TRACEBACKz#UNSERIALIZABLEz.Result {0!r} (kind '{1}') type is {2}, not strz#UNSERIALIZABLEzUnserializable message: %s zUnrecognized message type {!r}) isinstancestr TypeErrorformatr RemoteError ValueError)r7r8rrrr2Ts   r2c@seZdZddZdS)r>cCsdt|jddS)NzM --------------------------------------------------------------------------- rzK---------------------------------------------------------------------------)r;r5)r%rrr__str__dszRemoteError.__str__N)r+r-r.r@rrrrr>csr>cCs6g}x,t|D] }t||}t|r||qW|S)N)dirrcallableappend)r temprfuncrrr all_methodsks  rFcCsddt|DS)NcSsg|]}|ddkr|qS)r_r)rrrrrrzsz"public_methods..)rF)r rrrpublic_methodsvsrHc @seZdZddddddddd g Zd d Zd d ZddZddZddZddZ ddZ ddZ e e e dZ ddZ ddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-S).Servershutdowncreateaccept_connection get_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#Zbacklog0)Nr)r:bytesr<r=rregistryr AuthenticationStringauthkeylistener_clientlistenerr# id_to_objid_to_refcountid_to_local_proxy_obj threadingLockmutex)r%rVr#rX serializerListenerClientrrrr&s     zServer.__init__c Cst|_|t_zZtj|jd}d|_| y x|j sN|j dq6WWnt t fk rjYnXWdtjtjkrtdtjt_tjt_tdXdS)N)targetTrzresetting stdout, stderrr)r^Event stop_eventr current_process_manager_serverThreadaccepterdaemonstartis_setwaitKeyboardInterrupt SystemExitsysstdout __stdout__rdebug __stderr__stderrexit)r%rjrrr serve_forevers       zServer.serve_forevercCsPxJy|j}Wntk r&wYnXtj|j|fd}d|_|qWdS)N)rdr5T)rZZacceptOSErrorr^rihandle_requestrkrl)r%r3trrrrjszServer.accepterc Cs4d}}}y>t||jt||j|}|\}}}}t||}Wntk rhdtf} Yn>Xy||f||}Wntk rdtf} Yn Xd|f} y|| Wnrtk r&} zRy|dtfWntk rYnXt d| t d|t d| Wdd} ~ XYnX| dS)Nz #TRACEBACKz#RETURNzFailure to send message: %rz ... request was %rz ... exception was %r) rZdeliver_challengerXZanswer_challenger1r Exceptionrr0rinfoclose) r%r3funcnamer8requestignorer5r6rEmsgerrrrzs2    zServer.handle_requestc Cstdtj|j}|j}|j}x|j syBd}}|}|\}}} } y||\}} } Wn^t k r} z@y|j |\}} } Wn&t k r}z| Wdd}~XYnXWdd} ~ XYnX|| krt d|t || ft||}y|| | }Wn,tk r&}z d|f}Wdd}~XYnPX| o8| |d}|rn||||\}}t||j|}d||ff}nd|f}Wnt k r|dkrdtf}nNy,|j|}|||||f| | }d|f}Wn tk rdtf}YnXYnPtk r"tdtjtdYn tk r@dtf}YnXyDy ||Wn2tk r}z|d tfWdd}~XYnXWq(tk r}z@td tjtd |td ||td Wdd}~XYq(Xq(WdS)Nz$starting server thread to service %rz+method %r of %r object is not in exposed=%rz#ERRORz#PROXYz#RETURNz #TRACEBACKz$got EOF -- exiting thread serving %rrz#UNSERIALIZABLEzexception in thread serving %rz ... message was %rz ... exception was %rr)rrtr^current_threadrr1r0r[rfrmKeyErrorr]AttributeErrorrrr|getrKrr#rfallback_mappingEOFErrorrqrwr}r~)r%connr1r0r[r4r ridentr5r6exposed gettypeidkeZ second_keZfunctionZresrrr"ZridentZrexposedtokenZ fallback_funcr8rrr serve_clientsx  (        $   zServer.serve_clientcCs|S)Nr)r%rrr rrrfallback_getvalue,szServer.fallback_getvaluecCst|S)N)r;)r%rrr rrr fallback_str/szServer.fallback_strcCst|S)N)repr)r%rrr rrr fallback_repr2szServer.fallback_repr)r@r,z #GETVALUEcCsdS)Nr)r%r3rrrrP;sz Server.dummyc Cs||jlg}t|j}|xD|D]<}|dkr(|d||j|t|j|dddfq(Wd|SQRXdS)NrTz %s: refcount=%s %srK ) r`rr\rsortrCr;r[join)r%r3r8rrrrrrN>s  $zServer.debug_infocCs t|jS)N)lenr\)r%r3rrrrONszServer.number_of_objectscCsLz:ytd|dWnddl}|YnXWd|jXdS)Nz!manager received shutdown message)z#RETURNNr)rrtr0 traceback print_excrfset)r%r3rrrrrJUs zServer.shutdownc Ost|dkr|^}}}}nz|s(tdnld|krDtdt|d|d}t|dkrf|^}}}n.d|krtdt|d|d}|^}}t|}|j|j|\}}}}|dkr|st|dkrtd|d } n |||} |dkrt| }|dk r4t|t s$td |t |t |t |}d t | } td || | t||f|j| <| |jkrxd |j| <WdQRX||| | t|fS) Nz8descriptor 'create' of 'Server' object needs an argumentr"z7create expected at least 2 positional arguments, got %drr3z4Without callable, must have one non-keyword argumentrz,Method_to_typeid {0!r}: type {1!s}, not dictz%xz&%r callable returned object with id %r)rr<poptupler`rVr?rHr:dictr=rrr$rrtrr[r\rQ) r5r6r%r3r"rBrmethod_to_typeid proxytyper rrrrrKbsN             z Server.createcCst|j|jdS)Nr)rr[r$)r%r3rrrrrMszServer.get_methodscCs"|t_|d||dS)N)z#RETURNN)r^rrr0r)r%r3rrrrrLs  zServer.accept_connectionc Cs|jy|j|d7<Wnhtk r}zJ||jkrrd|j|<|j||j|<|j|\}}}td|n|Wdd}~XYnXWdQRXdS)Nrz&Server re-enabled tracking & INCREF %r)r`r\rr]r[rrt)r%r3rrr rrrrrrQs  z Server.increfc Cs||jkr$||jkr$td|dS|jZ|j|dkrXtd||j||j||j|d8<|j|dkr|j|=WdQRX||jkrd|j|<td||j|j|=WdQRXdS)NzServer DECREF skipping %rrz+Id {0!s} ({1!r}) has refcount {2:n}, not 1+r)NrNzdisposing of obj with id %r)r\r]rrtr`AssertionErrorr=r[)r%r3rrrrrRs$       z Server.decrefN)r+r-r.Zpublicr&rxrjrzrrrrrrPrNrOrJrKrMrLrQrRrrrrrIs, "Q 8rIc@seZdZdgZdZdZdZdS)StatevaluerrrN)r+r-r.r/INITIALSTARTEDSHUTDOWNrrrrrsr)pickleZ xmlrpclibc@seZdZiZeZd!ddZddZddZd"d d Z e d#d d Z ddZ d$ddZ ddZddZddZddZeddZeddZe d%dd ZdS)&rNrcCs\|dkrtj}||_t||_t|_tj|j_ ||_ t |\|_ |_ |pTt|_dS)N)r rgrX_addressrW_authkeyr_staterr _serializerrYZ _Listener_Clientr_ctx)r%r#rXraZctxrrrr&s   zBaseManager.__init__cCsf|jjtjkrP|jjtjkr&tdn*|jjtjkr>tdntd|jjt|j |j |j |j S)NzAlready started serverzManager has shut downzUnknown state {!r}) rrrrrr rr=rI _registryrrr)r%rrr get_servers   zBaseManager.get_servercCs8t|j\}}||j|jd}t|ddtj|j_dS)N)rXrP) rYrrrr9rrrr)r%rbrcrrrrconnects zBaseManager.connectrc Cs4|jjtjkrP|jjtjkr&tdn*|jjtjkr>tdntd|jj|dk rht|sht dt j dd\}}|j j t|j|j|j|j|j|||fd|_dd d |jjD}t|jd ||j_|j|||_|tj|j_tj|t|j|j|j|j|j|jfd d |_ dS)NzAlready started serverzManager has shut downzUnknown state {!r}zinitializer must be a callableF)Zduplex)rdr5:css|]}t|VqdS)N)r;)rirrr 1sz$BaseManager.start..-r)r5 exitpriority)!rrrrrr rr=rBr<rZPiperZProcessr _run_serverrrrr_processrZ _identityr+rrlr~r1rFinalize_finalize_managerrrJ)r% initializerinitargsreaderwriterrrrrrls4         zBaseManager.startc CsN|dk r|||||||}||j|td|j|dS)Nzmanager serving at %r)_Serverr0r#r~rr}rx) clsrVr#rXrarrrserverrrrrCs zBaseManager._run_servercOs`|^}}}t|}|j|j|jd}zt|dd|f||\}}Wd|Xt||j||fS)N)rXrK)rrrrr9r~r)r5r6r%r"rr$rrrr_createWs  zBaseManager._createcCs*|jdk r&|j||js&d|_dS)N)rris_alive)r%timeoutrrrrfs   zBaseManager.joincCs.|j|j|jd}z t|ddS|XdS)N)rXrN)rrrr9r~)r%rrrr _debug_infoos zBaseManager._debug_infocCs.|j|j|jd}z t|ddS|XdS)N)rXrO)rrrr9r~)r%rrrr_number_of_objectsys zBaseManager._number_of_objectscCsj|jjtjkr||jjtjkrf|jjtjkr.temp) __dict__rcopy AutoProxyrrrr+setattr) rr"rBrrr create_methodkeyrrDr)rr"rregisters    zBaseManager.register)NNrN)Nr)Nr)N)NNNNT)r+r-r.rrIrr&rrrl classmethodrrrrrrr staticmethodrpropertyr#rrrrrrs(  +      c@seZdZddZddZdS)ProcessLocalSetcCst|dddS)NcSs|S)N)clear)r rrrz*ProcessLocalSet.__init__..)rregister_after_fork)r%rrrr&szProcessLocalSet.__init__cCs t|dfS)Nr)r)r%rrr __reduce__szProcessLocalSet.__reduce__N)r+r-r.r&rrrrrrsrc@s|eZdZiZeZdddZddZdifd d Z d d Z d dZ e ddZ ddZddZddZddZddZdS)rNTFc Cstj8tj|jd}|dkr:ttf}|tj|j<WdQRX|d|_|d|_ ||_ |j j |_ ||_ ||_t|d|_||_|dk rt||_n"|j dk r|j j|_n tj|_|r|t|tjdS)Nrr)r_mutexrrr#rZForkAwareLocalr_tls_idset_tokenr$_id_managerrrYr_owned_by_managerr rWrrgrX_increfr _after_fork) r%rrarrXrrQ manager_ownedZ tls_idsetrrrr&s*      zBaseProxy.__init__cCsdtdtj}tjdkr4|dtj7}|j|jj |j d}t |dd|f||j _ dS)Nzmaking connection to managerZ MainThread|)rXrL)rrtr rgrr^rrrr#rr9rr)r%rrrrr_connects  zBaseProxy._connectrc Csy |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)Nz#thread %r does not own a connectionz#RETURNz#PROXY)rrXr)rXrR)rrrrrtr^rrrr0rr1rrr"rr#rrrr9r$r2) r%r4r5r6rr7r8rrrrrrr _callmethod&s,      zBaseProxy._callmethodcCs |dS)Nz #GETVALUE)r)r%rrr _getvalueDszBaseProxy._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 %r)rXrQz INCREF %r )r5r)rrrtrr$rr#rr9rraddrrrr_decrefrZ_close)r%rr(rrrrJs zBaseProxy._increfc Cs||j|dks |jtjkry2td|j||j|d}t|dd|jfWqt k r}ztd|Wdd}~XYqXntd|j|st |drtdt j |j|`dS)Nz DECREF %r)rXrRz... decref failed %sz%DECREF %r -- manager already shutdownrz-thread %r has no more proxies so closing conn)discardr$rrrrrtr#r9r|rr^rrrr~)rrXr(ZtlsZidsetrrrrrrr^s    zBaseProxy._decrefc CsHd|_y |Wn0tk rB}ztd|Wdd}~XYnXdS)Nzincref failed: %s)rrr|rr})r%rrrrrws  zBaseProxy._after_forkcCs^i}tdk r|j|d<t|ddrB|j|d<tt|j|j|ffStt||j|j|ffSdS)NrX_isautoFr) r rrr RebuildProxyrrrr)r%r6rrrrs    zBaseProxy.__reduce__cCs|S)N)r)r%Zmemorrr __deepcopy__szBaseProxy.__deepcopy__cCsdt|j|jjt|fS)Nz<%s object, typeid %r at %#x>)rr+rr"r$)r%rrrr,szBaseProxy.__repr__cCs4y |dStk r.t|dddSXdS)Nr,rz; '__str__()' failed>)rr|r)r%rrrr@s zBaseProxy.__str__)NNNTF)r+r-r.rrZForkAwareThreadLockrr&rrrrrrrrrr,r@rrrrrs (   cCsttdd}|rT|j|jkrTtd|d|d<|j|jkrT|j|j|j|j<| ddopttdd }|||fd|i|S)Nrhz*Rebuild a proxy owned by manager, token=%rTrrQZ _inheritingF) rr rgr#rrtr$r]r[r)rErrar6rrQrrrrs   rcCsrt|}y |||fStk r(YnXi}x|D]}td||f|q4Wt|tf|}||_||||f<|S)NzLdef %s(self, *args, **kwds): return self._callmethod(%r, args, kwds))rrexecrrr)rr_cacheZdicZmeth ProxyTyperrr MakeProxyTypes   rTc Cst|d}|dkrB||j|d}zt|dd|f}Wd|X|dkrX|dk rX|j}|dkrjtj}td|j |}||||||d} d| _ | S)Nr)rXrMz AutoProxy[%s])rrXrQT) rYr#r9r~rr rgrXrr"r) rrarrXrrQrrrrrrrrs    rc@seZdZddZddZdS) NamespacecKs|j|dS)N)rupdate)r%r6rrrr&szNamespace.__init__cCs^t|j}g}x,|D]$\}}|ds|d||fqW|d|jjd|fS)NrGz%s=%rz%s(%s)z, ) rrr startswithrCrr*r+r)r%rrDrrrrrr,s zNamespace.__repr__N)r+r-r.r&r,rrrrrsrc@s8eZdZd ddZddZddZdd ZeeeZd S) ValueTcCs||_||_dS)N) _typecode_value)r%rrlockrrrr&szValue.__init__cCs|jS)N)r)r%rrrrsz Value.getcCs ||_dS)N)r)r%rrrrrsz Value.setcCsdt|j|j|jfS)Nz %s(%r, %r))rr+rr)r%rrrr,szValue.__repr__N)T) r+r-r.r&rrr,rrrrrrrs  rcCs t||S)N)r)rZsequencerrrrArraysrc@s8eZdZdZddZddZddZdd Zd d Zd S) IteratorProxy)__next__r0throwr~cCs|S)Nr)r%rrr__iter__ szIteratorProxy.__iter__cGs |d|S)Nr)r)r%r5rrrr szIteratorProxy.__next__cGs |d|S)Nr0)r)r%r5rrrr0 szIteratorProxy.sendcGs |d|S)Nr )r)r%r5rrrr szIteratorProxy.throwcGs |d|S)Nr~)r)r%r5rrrr~szIteratorProxy.closeN) r+r-r.rr rr0r r~rrrrrs rc@s2eZdZdZd ddZddZdd Zd d ZdS) AcquirerProxy)acquirereleaseTNcCs"|dkr|fn||f}|d|S)Nr )r)r%Zblockingrr5rrrr szAcquirerProxy.acquirecCs |dS)Nr )r)r%rrrr szAcquirerProxy.releasecCs |dS)Nr )r)r%rrrrszAcquirerProxy.__enter__cCs |dS)Nr )r)r%rrrrrrrszAcquirerProxy.__exit__)TN)r+r-r.rr r rrrrrrr s  r c@s6eZdZdZd ddZd ddZdd Zdd d ZdS)ConditionProxy)r r rnnotify notify_allNcCs|d|fS)Nrn)r)r%rrrrrn$szConditionProxy.waitrcCs|d|fS)Nr)r)r%nrrrr&szConditionProxy.notifycCs |dS)Nr)r)r%rrrr(szConditionProxy.notify_allcCsh|}|r|S|dk r$t|}nd}d}x6|sb|dk rP|t}|dkrPP|||}q.W|S)Nr)timeZ monotonicrn)r%Z predicaterr8ZendtimeZwaittimerrrwait_for*s   zConditionProxy.wait_for)N)r)N)r+r-r.rrnrrrrrrrr"s   rc@s2eZdZdZddZddZddZd d d ZdS) EventProxy)rmrrrncCs |dS)Nrm)r)r%rrrrm?szEventProxy.is_setcCs |dS)Nr)r)r%rrrrAszEventProxy.setcCs |dS)Nr)r)r%rrrrCszEventProxy.clearNcCs|d|fS)Nrn)r)r%rrrrrnEszEventProxy.wait)N)r+r-r.rrmrrrnrrrrr=s rc@sNeZdZdZdddZddZddZed d Zed d Z ed dZ dS) BarrierProxy)__getattribute__rnabortresetNcCs|d|fS)Nrn)r)r%rrrrrnKszBarrierProxy.waitcCs |dS)Nr)r)r%rrrrMszBarrierProxy.abortcCs |dS)Nr)r)r%rrrrOszBarrierProxy.resetcCs |ddS)Nr)parties)r)r%rrrrQszBarrierProxy.partiescCs |ddS)Nr) n_waiting)r)r%rrrrTszBarrierProxy.n_waitingcCs |ddS)Nr)broken)r)r%rrrrWszBarrierProxy.broken)N) r+r-r.rrnrrrrrrrrrrrIs   rc@s(eZdZdZddZddZddZdS) NamespaceProxy)r __setattr__ __delattr__cCs0|ddkrt||St|d}|d|fS)NrrGrr)objectr)r%r callmethodrrr __getattr__^s   zNamespaceProxy.__getattr__cCs4|ddkrt|||St|d}|d||fS)NrrGrr)rrr)r%rrr rrrrcs  zNamespaceProxy.__setattr__cCs0|ddkrt||St|d}|d|fS)NrrGrr)rrr)r%rr rrrrhs   zNamespaceProxy.__delattr__N)r+r-r.rr!rrrrrrr\src@s*eZdZdZddZddZeeeZdS) ValueProxy)rrcCs |dS)Nr)r)r%rrrrqszValueProxy.getcCs|d|fS)Nr)r)r%rrrrrsszValueProxy.setN)r+r-r.rrrrrrrrrr"osr" BaseListProxy)__add__ __contains__ __delitem__ __getitem____len____mul__ __reversed____rmul__ __setitem__rCcountextendindexinsertrremovereverser__imul__c@seZdZddZddZdS) ListProxycCs|d|f|S)Nr.)r)r%rrrr__iadd__szListProxy.__iadd__cCs|d|f|S)Nr3)r)r%rrrrr3szListProxy.__imul__N)r+r-r.r5r3rrrrr4~sr4 DictProxy)r%r&r'r r(r,rrrrrrpopitem setdefaultrrr Iterator ArrayProxy)r(r'r, PoolProxy) Zapply apply_asyncr~imapimap_unorderedrmap map_asyncstarmap starmap_asyncrZ AsyncResult)r<r@rBr=r>c@seZdZddZddZdS)r;cCs|S)Nr)r%rrrrszPoolProxy.__enter__cCs |dS)N)r)r%rrrrrrrszPoolProxy.__exit__N)r+r-r.rrrrrrr;sc@s eZdZdS)rN)r+r-r.rrrrrs QueueZ JoinableQueuerer_RLock SemaphoreBoundedSemaphore ConditionBarrierPoolrrF)rr)r)NNNT)T)J__all__rqr^rZqueuerrrrcontextr r r r r rrrrZ view_typesrr!Z view_typerrr9r2r|r>rFrHrIrrbrcZ XmlListenerZ XmlClientrYrrrrrrrrrrrr rrrrr"r#r4r6rr:Z BasePoolProxyr;rrCrer_rDrErFrGrHrIrrrrr s            \ w 4