]{@sddddgZddlZddlZddlZddlZddlmZddlmZdd l m Z dd l m Z dd l m Z dd l m Z dd l mZddl mZddl mZddZejejedddddfDZedek rJddZxeD]Zejeeq0WGdddeZfiddZddZGdddeZd d!Zd"d#ZGd$d%d%eZGd&d'd'eZ d(e j!e j"fd)e j#e j$fiZ%Gd*ddeZ&Gd+d,d,e'Z(Gd-ddeZ)d.d/Z*id0d1Z+dddd2d3d4Z,Gd5d6d6eZ-Gd7d8d8eZ.d2d9d:Z/Gd;d<d<e)Z0Gd=d>d>e)Z1Gd?d@d@e1Z2GdAdBdBe)Z3GdCdDdDe)Z4GdEdFdFe)Z5GdGdHdHe)Z6e+dIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\fZ7Gd]d^d^e7Z8e+d_dKdLdMdNdRd`dadbdcdddXdddedfdfZ9e+dgdNdMdRfZ:e+dhdidjdkdldmdndodpdqdrdsf Z;djdtdpdtdrdtdldudmduie;_<Gdvdhdhe;Z=Gdwdde&Z>e>jdxej?e>jdyej?e>jdzej@e3e>jd{ejAe1e>jd|ejBe1e>jd}ejCe1e>jd~ejDe1e>jdejEe2e>jdejFe4e>jde jGe=e>jdee8e>jdeHe9e>jd8e.e6e>jd:e/e:e>jd6e-e5e>jdude0dde>jdtdddS) BaseManager SyncManager BaseProxyTokenN)time) format_exc) connection)context)pool)process) reduction)util) get_contextcCstj|j|jffS)N)arraytypecodetobytes)ar-/opt/alt/python35/lib64/python3.5/managers.py reduce_array%srcCs(g|]}tti|qSr)typegetattr).0namerrr )s ritemskeysvaluescCstt|ffS)N)list)objrrrrebuild_as_list+sr!c@sFeZdZd ZddZddZdd Zd d Zd S)rtypeidaddressidcCs!||||_|_|_dS)N)r"r#r$)selfr"r#r$rrr__init__:szToken.__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__cCs#d|jj|j|j|jfS)Nz %s(typeid=%r, address=%r, id=%r)) __class____name__r"r#r$)r%rrr__repr__CszToken.__repr__N)r"r#r$)r+ __module__ __qualname__ __slots__r&r'r)r,rrrrr4s    cCsN|j||||f|j\}}|dkr;|St||dS)Nz#RETURN)sendrecvconvert_to_error)cr$ methodnameargskwdskindresultrrrdispatchKs  r9cCsN|dkr|S|dkr&t|S|dkr@td|StdSdS)Nz#ERRORz #TRACEBACKz#UNSERIALIZABLEzUnserializable message: %s zUnrecognized message type) RemoteError ValueError)r7r8rrrr2Us    r2c@seZdZddZdS)r:cCs)ddddt|jdddS)N -Kr)strr5)r%rrr__str__bszRemoteError.__str__N)r+r-r.r@rrrrr:as r:cCsIg}x<t|D].}t||}t|r|j|qW|S)N)dirrcallableappend)r temprfuncrrr all_methodsis  rFcCsddt|DS)NcSs&g|]}|ddkr|qS)r_r)rrrrrrxs z"public_methods..)rF)r rrrpublic_methodstsrHc @seZdZddddddddd g Zd d Zd d ZddZddZddZddZ ddZ ddZ de de de iZ ddZ dd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/S)0Servershutdowncreateaccept_connection get_methods debug_infonumber_of_objectsdummyincrefdecrefcCs||_tj||_t|\}}|d|dd|_|jj|_ddffi|_i|_t j |_ dS)Nr#backlog0) registryr AuthenticationStringauthkeylistener_clientlistenerr# id_to_objid_to_refcount threadingRLockmutex)r%rVr#rX serializerListenerClientrrrr&s  zServer.__init__cCstj|_|tj_zqtjd|j}d|_|j y*x#|jj sq|jj dqOWWnt t fk rYnXWdtjtjkrtjdtjt_tjt_tjdXdS)NtargetTrzresetting stdout, stderrr)r]Event stop_eventr current_process_manager_serverThreadaccepterdaemonstartis_setwaitKeyboardInterrupt SystemExitsysstdout __stdout__rdebug __stderr__stderrexit)r%rirrr serve_forevers       zServer.serve_foreverc Csgx`y|jj}Wntk r-wYnXtjd|jd|f}d|_|jqWdS)Nrcr5T)rZacceptOSErrorr]rhhandle_requestrjrk)r%r3trrrris  zServer.accepterc 'Csud}}}yWtj||jtj||j|j}|\}}}}t||}Wn!tk rdtf} YnGXy||||}Wn!tk rdtf} Yn Xd|f} y|j| Wntk rf} zdy|jdtfWntk r#YnXt j d| t j d|t j d| WYdd} ~ XnX|j dS)Nz #TRACEBACKz#RETURNzFailure to send message: %rz ... request was %rz ... exception was %r) r deliver_challengerXanswer_challenger1r Exceptionrr0rinfoclose) r%r3funcnamer8requestignorer5r6rEmsgerrrrzs2     #zServer.handle_requestc*Cs%tjdtjj|j}|j}|j}x|jj s y,d}}|}|\}}} } ||\}} } || krt d|t || ft ||} y| | | }Wn1t k r}zd|f}WYdd}~XnpX| o| j|d}|re|j|||\}}t||j|}d||ff}n d|f}Wnt k r|dkrdtf}n\y8|j|}|||||| | }d|f}Wn!t k rdtf}YnXYnXtk r7tjdtjjtjdYn!t k rWdtf}YnXyMy||Wn8t k r}z|d tfWYdd}~XnXWq7t k r}zUtjd tjjtjd |tjd ||jtjd WYdd}~Xq7Xq7WdS)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)rrsr]current_threadrr1r0r[rerlAttributeErrorrrr~getrKrr#rfallback_mappingEOFErrorrprvrr)r%connr1r0r[r4r ridentr5r6exposedZ gettypeidfunctionresrrr"ZridentZrexposedtokenZ fallback_funcr8rrr serve_clientsl              *  zServer.serve_clientcCs|S)Nr)r%rrr rrrfallback_getvalueszServer.fallback_getvaluecCs t|S)N)r?)r%rrr rrr fallback_str"szServer.fallback_strcCs t|S)N)repr)r%rrr rrr fallback_repr%szServer.fallback_reprr@r,z #GETVALUEcCsdS)Nr)r%r3rrrrP.sz Server.dummycCs|jg}t|jj}|jxV|D]N}|dkr6|jd||j|t|j|dddfq6Wdj|SWdQRXdS)NrUz %s: refcount=%s %srr>r<) r_rr[rsortrCr\r?join)r%r3r8rrrrrrN1s      *zServer.debug_infocCst|jdS)Nr)lenr[)r%r3rrrrO@szServer.number_of_objectscCsXzCytjd|jdWnddl}|jYnXWd|jjXdS)Nz!manager received shutdown message#RETURNr)rN)rrsr0 traceback print_excreset)r%r3rrrrrJFs  zServer.shutdownc Os |j|j|\}}}}|dkr<|d} n|||} |dkrct| }|dk rt|t|}dt| } tjd|| | t||f|j| <| |j krd|j | <|j || | t |fSWdQRXdS)Nrz%xz&%r callable returned object with id %r) r_rVrHrr$rrsrr[r\rQtuple) r%r3r"r5r6rBrmethod_to_typeid proxytyper rrrrrKSs        z Server.createcCst|j|jdS)Nr)rr[r$)r%r3rrrrrMvszServer.get_methodscCs-|tj_|jd|j|dS)N#RETURN)rN)r]rrr0r)r%r3rrrrrL|s zServer.accept_connectionc Cs&|j|j|d7sz$BaseManager.start..r= exitpriorityr)rB TypeErrorr PiperProcessr _run_serverrrrr_processr _identityr+rrkrr1rrrrrFinalize_finalize_managerrrJ)r% initializerinitargsreaderwriterrrrrrks&  "   zBaseManager.startc Csi|dk r|||j||||}|j|j|jtjd|j|jdS)Nzmanager serving at %r)_Serverr0r#rrrrw) clsrVr#rXr`rrrserverrrrrs   zBaseManager._run_serverc Osk|j|jd|j}z)t|dd|f||\}}Wd|jXt||j||fS)NrXrK)rrrr9rr)r%r"r5r6rr$rrrr_creates ) zBaseManager._createcCs;|jdk r7|jj||jjs7d|_dS)N)rris_alive)r%timeoutrrrrszBaseManager.joinc CsA|j|jd|j}zt|ddSWd|jXdS)NrXrN)rrrr9r)r%rrrr _debug_infoszBaseManager._debug_infoc CsA|j|jd|j}zt|ddSWd|jXdS)NrXrO)rrrr9r)r%rrrr_number_of_objects"szBaseManager._number_of_objectscCs#|jjtjkr|j|S)N)rrrrrk)r%rrr __enter__,s zBaseManager.__enter__cCs|jdS)N)rJ)r%exc_typeexc_valexc_tbrrr__exit__2szBaseManager.__exit__cCs|jrtjdy8||d|}zt|ddWd|jXWntk reYnX|jdd|jrtjdt|drtjd|j|jdd |jrtjd t j |_ yt j |=Wntk r YnXdS) Nz#sending shutdown message to managerrXrJrg?zmanager still alive terminatez'trying to `terminate()` manager processg?z#manager still alive after terminate)rrrr9rr~rhasattrrrrrr_address_to_localKeyError)r r#rXr(rrrrrr5s.           zBaseManager._finalize_managercCs|jS)N)r)r%rrrUszBaseManager.Tc sd|jkr!|jj|_dkr3t|pHtdd}|p`tdd}|rx t|jD] \}}q|W|||f|j<|rfdd} | _t|| dS)Nr _exposed__method_to_typeid_c stjd|j||\}}||jd|d|jd|}|j|jd|j}t|dd|jf|S)Nz)requesting creation of a shared %r objectmanagerrXrrR) rrsrrrrr#r9r$)r%r5r6rexpproxyr)rr"rrrDrsz"BaseManager.register..temp) __dict__rcopy AutoProxyrrrr+setattr) rr"rBrrr create_methodkeyrrDr)rr"rregisterWs  zBaseManager.register)r+r-r.rrIrr&rrrk classmethodrrrrrrr staticmethodrpropertyr#rrrrrrs(    $     c@s(eZdZddZddZdS)ProcessLocalSetcCstj|dddS)NcSs |jS)N)clear)r rrrrsz*ProcessLocalSet.__init__..)rregister_after_fork)r%rrrr&szProcessLocalSet.__init__cCst|ffS)N)r)r%rrr __reduce__szProcessLocalSet.__reduce__N)r+r-r.r&rrrrrrs  rc@seZdZiZejZddddddZddZfiddZ d d Z d d Z e d dZ ddZddZddZddZddZdS)rNTc Cs*tjNtjj|jd}|dkrStjtf}|tj|j)rr+rr"r$)r%rrrr,%szBaseProxy.__repr__c CsBy|jdSWn*tk r=t|dddSYnXdS)Nr,rz; '__str__()' failed>r)rr~r)r%rrrr@)s zBaseProxy.__str__)r+r-r.rrForkAwareThreadLockrr&rrrrrrrrrr,r@rrrrrs  "      cCsttjdd}|rB|j|jkrB|j|jdS|jddojttjdd }|||d||SdS)NrgrrQTZ _inheritingF)rr rfr#r[r$pop)rErr`r6rrQrrrr6s rc Cst|}y|||fSWntk r2YnXi}x%|D]}td||f|q@Wt|tf|}||_||||f<|S)NzLdef %s(self, *args, **kwds): return self._callmethod(%r, args, kwds))rrexecrrr)rr_cacheZdicmeth ProxyTyperrr MakeProxyTypeKs    rTc Cst|d}|dkrY||jd|}zt|dd|f}Wd|jX|dkrz|dk rz|j}|dkrtjj}td|j |}|||d|d|d|} d| _ | S)NrrXrMz AutoProxy[%s]rrQT) rYr#r9rrr rfrXrr"r) rr`rrXrrQrrrrrrrras      rc@s(eZdZddZddZdS) NamespacecKs|jj|dS)N)rupdate)r%r6rrrr&szNamespace.__init__cCst|jj}g}x:|D]2\}}|jds"|jd||fq"W|jd|jjdj|fS)NrGz%s=%rz%s(%s)z, ) rrr startswithrCrr*r+r)r%rrDrrrrrr,s zNamespace.__repr__N)r+r-r.r&r,rrrrr ~s  r c@sReZdZdddZddZddZdd ZeeeZd S) ValueTcCs||_||_dS)N) _typecode_value)r%rrlockrrrr&s zValue.__init__cCs|jS)N)r)r%rrrrsz Value.getcCs ||_dS)N)r)r%rrrrrsz Value.setcCs dt|j|j|jfS)Nz %s(%r, %r))rr+r r)r%rrrr,szValue.__repr__N) r+r-r.r&rrr,rrrrrrr s    r cCstj||S)N)r)rZsequencerrrrArraysrc@sReZdZdZddZddZd d Zd d Zd dZdS) IteratorProxy__next__r0throwrcCs|S)Nr)r%rrr__iter__szIteratorProxy.__iter__cGs|jd|S)Nr)r)r%r5rrrrszIteratorProxy.__next__cGs|jd|S)Nr0)r)r%r5rrrr0szIteratorProxy.sendcGs|jd|S)Nr)r)r%r5rrrrszIteratorProxy.throwcGs|jd|S)Nr)r)r%r5rrrrszIteratorProxy.closeN)rr0rr) r+r-r.rrrr0rrrrrrrs     rc@sLeZdZd ZddddZddZd d Zd d ZdS) AcquirerProxyacquirereleaseTNcCs1|dkr|fn ||f}|jd|S)Nr)r)r%blockingrr5rrrrs!zAcquirerProxy.acquirecCs |jdS)Nr)r)r%rrrrszAcquirerProxy.releasecCs |jdS)Nr)r)r%rrrrszAcquirerProxy.__enter__cCs |jdS)Nr)r)r%rrrrrrrszAcquirerProxy.__exit__)rr)r+r-r.rrrrrrrrrrs   rc@sLeZdZdZdddZd d Zd d Zdd dZdS)ConditionProxyrrrmnotify notify_allNcCs|jd|fS)Nrm)r)r%rrrrrmszConditionProxy.waitcCs |jdS)Nr)r)r%rrrrszConditionProxy.notifycCs |jdS)Nr)r)r%rrrrszConditionProxy.notify_allcCs|}|r|S|dk r/t|}n d}d}xF|s|dk rj|t}|dkrjP|j||}q>W|S)Nr)_timerm)r% predicaterr8endtimewaittimerrrwait_fors        zConditionProxy.wait_for)rrrmrr)r+r-r.rrmrrr rrrrrs   rc@sIeZdZdZddZddZd d Zd d d Zd S) EventProxyrlrrrmcCs |jdS)Nrl)r)r%rrrrlszEventProxy.is_setcCs |jdS)Nr)r)r%rrrrszEventProxy.setcCs |jdS)Nr)r)r%rrrrszEventProxy.clearNcCs|jd|fS)Nrm)r)r%rrrrrmszEventProxy.wait)rlrrrm)r+r-r.rrlrrrmrrrrr!s    r!c@sseZdZdZdddZdd Zd d Zed d ZeddZ eddZ dS) BarrierProxy__getattribute__rmabortresetNcCs|jd|fS)Nrm)r)r%rrrrrmszBarrierProxy.waitcCs |jdS)Nr$)r)r%rrrr$szBarrierProxy.abortcCs |jdS)Nr%)r)r%rrrr%szBarrierProxy.resetcCs|jddS)Nr#parties)r&)r)r%rrrr&szBarrierProxy.partiescCs|jddS)Nr# n_waiting)r')r)r%rrrr'szBarrierProxy.n_waitingcCs|jddS)Nr#broken)r()r)r%rrrr(szBarrierProxy.broken)r#rmr$r%) r+r-r.rrmr$r%rr&r'r(rrrrr"s   r"c@s:eZdZd ZddZddZdd Zd S) NamespaceProxyr# __setattr__ __delattr__cCsB|ddkr tj||Stj|d}|d|fS)NrrGrr#)objectr#)r%r callmethodrrr __getattr__szNamespaceProxy.__getattr__cCsH|ddkr#tj|||Stj|d}|d||fS)NrrGrr*)r,r*r#)r%rrr-rrrr*szNamespaceProxy.__setattr__cCsB|ddkr tj||Stj|d}|d|fS)NrrGrr+)r,r+r#)r%rr-rrrr+szNamespaceProxy.__delattr__N)r#r*r+)r+r-r.rr.r*r+rrrrr)s   r)c@s=eZdZdZddZddZeeeZdS) ValueProxyrrcCs |jdS)Nr)r)r%rrrrszValueProxy.getcCs|jd|fS)Nr)r)r%rrrrr szValueProxy.setN)rr)r+r-r.rrrrrrrrrr/s   r/ BaseListProxy__add__ __contains__ __delitem__ __getitem____len____mul__ __reversed____rmul__ __setitem__rCcountextendindexinsertrremovereverser__imul__c@s(eZdZddZddZdS) ListProxycCs|jd|f|S)Nr;)r)r%rrrr__iadd__szListProxy.__iadd__cCs|jd|f|S)Nr@)r)r%rrrrr@szListProxy.__imul__N)r+r-r.rBr@rrrrrAs  rA DictProxyrrrZhas_keypopitem setdefaultr  ArrayProxy PoolProxyZapplyZ apply_asyncrimapZimap_unorderedrmapZ map_asyncstarmapZ starmap_asyncrZ AsyncResultIteratorc@s(eZdZddZddZdS)rGcCs|S)Nr)r%rrrr5szPoolProxy.__enter__cCs|jdS)N)r)r%rrrrrrr7szPoolProxy.__exit__N)r+r-r.rrrrrrrG4s  c@seZdZdS)rN)r+r-r.rrrrr>s Queue JoinableQueuerdLockr^ SemaphoreBoundedSemaphore ConditionBarrierPoolrdictrrF)I__all__rpr]rqueuerrrrr r r r r rrrrZ view_typesrr!Z view_typer,rr9r2r~r:rFrHrIrrarb XmlListener XmlClientrYrrrrrrrr r rrrrr!r"r)r/r0rArCrFZ BasePoolProxyrrGrrLrdrNr^rOrPrQrRrSrTrrrr s