grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ´iǸã@sLgd¢ZddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl m Z ddlmZmZmZddl mZdd l mZdd l mZdd l mZzdd l mZWneyÖd ZYn0dZe d¡dd„Ze eje¡dd„dDƒZedeu�r8dd„ZeD]Ze ee¡�q$Gdd„de ƒZ!difdd„Z"dd„Z#Gdd„de$ƒZ%d d!„Z&d"d#„Z'Gd$d%„d%e ƒZ(Gd&d'„d'e ƒZ)e j*e j+fe j,e j-fd(œZ.Gd)d*„d*e ƒZ/Gd+d,„d,e0ƒZ1Gd-d.„d.e ƒZ2d/d0„Z3ifd1d2„Z4dmd3d4„Z5Gd5d6„d6e ƒZ6Gd7d8„d8e ƒZ7dnd9d:„Z8Gd;d<„d„d>e2ƒZ:Gd?d@„d@e:ƒZ;GdAdB„dBe2ƒZGdGdH„dHe2ƒZ?e4dIdJƒZ@GdKdL„dLe@ƒZAe4dMdNƒZBdOdPieB_Ce4dQdRƒZDe4dSdTƒZEdUdUdUdPdPdVœeE_CGdWdS„dSeEƒZFGdXdY„dYe/ƒZGeG dZejH¡eG d[ejH¡eG d\ejIe<¡eG d]ejJe:¡eG d^ejKe:¡eG d_ejLe:¡eG d`ejMe:¡eG daejNe;¡eG dbejOe=¡eG dcejPeF¡eG ddeeA¡eG deeQeB¡eG d8e7e?¡eG d:e8eD¡eG d6e6e>¡eGjdPe9d df�eGjdUd dg�e�rHGdhdi„diƒZRGdjdk„dke(ƒZSGdld„de/ƒZTdS)o)Ú BaseManagerÚ SyncManagerÚ BaseProxyÚTokenéN)Úgetpid)Ú format_excé)Ú connection)Ú reductionÚget_spawning_popenÚ ProcessError)Úpool)Úprocess)Úutil)Ú get_context)Ú shared_memoryFTÚSharedMemoryManagercCstj|j| ¡ffS©N)ÚarrayÚtypecodeÚtobytes)Úa©rú0/usr/lib64/python3.9/multiprocessing/managers.pyÚ reduce_array/srcCsg|]}tti|ƒƒƒ‘qSr)ÚtypeÚgetattr©Ú.0ÚnamerrrÚ 3ór )ÚitemsÚkeysÚvaluescCstt|ƒffSr)Úlist©ÚobjrrrÚrebuild_as_list5sr(c@s4eZdZdZdZdd„Zdd„Zdd„Zd d „Zd S) rz3 Type to uniquely identify a shared object ©ÚtypeidÚaddressÚidcCs||||_|_|_dSrr))Úselfr*r+r,rrrÚ__init__DszToken.__init__cCs|j|j|jfSrr)©r-rrrÚ __getstate__GszToken.__getstate__cCs|\|_|_|_dSrr)©r-ÚstaterrrÚ __setstate__JszToken.__setstate__cCsd|jj|j|j|jfS)Nz %s(typeid=%r, address=%r, id=%r))Ú __class__Ú__name__r*r+r,r/rrrÚ__repr__MsÿzToken.__repr__N) r5Ú __module__Ú __qualname__Ú__doc__Ú __slots__r.r0r3r6rrrrr>s rrcCs8| ||||f¡| ¡\}}|dkr*|St||ƒ‚dS)zL Send a message to manager using connection `c` and return response ú#RETURNN)ÚsendÚrecvÚconvert_to_error)Úcr,Ú methodnameÚargsÚkwdsÚkindÚresultrrrÚdispatchUs  rEcCsd|dkr |S|dvrRt|tƒs4td ||t|ƒ¡ƒ‚|dkrHtd|ƒSt|ƒSntd |¡ƒSdS)Nú#ERROR)ú #TRACEBACKú#UNSERIALIZABLEz.Result {0!r} (kind '{1}') type is {2}, not strrHzUnserializable message: %s zUnrecognized message type {!r})Ú isinstanceÚstrÚ TypeErrorÚformatrÚ RemoteErrorÚ ValueError)rCrDrrrr>_s  ÿÿ  r>c@seZdZdd„ZdS)rMcCsdt|jdƒdS)NzM --------------------------------------------------------------------------- rzK---------------------------------------------------------------------------)rJrAr/rrrÚ__str__oszRemoteError.__str__N)r5r7r8rOrrrrrMnsrMcCs2g}t|ƒD] }t||ƒ}t|ƒr | |¡q |S)z4 Return a list of names of methods of `obj` )ÚdirrÚcallableÚappend)r'ÚtemprÚfuncrrrÚ all_methodsvs    rUcCsdd„t|ƒDƒS)zP Return a list of names of methods of `obj` which do not start with '_' cSsg|]}|ddkr|‘qS)rÚ_rrrrrr …r!z"public_methods..)rUr&rrrÚpublic_methods�srWc@s¬eZdZdZgd¢Zdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z e e e dœZ dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&S)'ÚServerzM Server class which runs in a process controlled by a manager object ) ÚshutdownÚcreateÚaccept_connectionÚ get_methodsÚ debug_infoÚnumber_of_objectsÚdummyÚincrefÚdecrefcCsxt|tƒstd |t|ƒ¡ƒ‚||_t |¡|_t |\}}||dd�|_ |j j |_ ddi|_ i|_ i|_t ¡|_dS)Nz&Authkey {0!r} is type {1!s}, not bytesé)r+ÚbacklogÚ0©Nr)rIÚbytesrKrLrÚregistryrÚAuthenticationStringÚauthkeyÚlistener_clientÚlistenerr+Ú id_to_objÚid_to_refcountÚid_to_local_proxy_objÚ threadingÚLockÚmutex)r-rgr+riÚ serializerÚListenerÚClientrrrr.’s ÿÿ    zServer.__init__c CsÐt ¡|_|t ¡_z„tj|jd�}d|_|  ¡z|j  ¡sL|j  d¡q4Wnt t fydYn0WtjtjkrŽt d¡tjt_tjt_t d¡n2tjtjkrÀt d¡tjt_tjt_t d¡0dS)z( Run the server forever )ÚtargetTrzresetting stdout, stderrrN)roÚEventÚ stop_eventrÚcurrent_processÚ_manager_serverÚThreadÚaccepterÚdaemonÚstartÚis_setÚwaitÚKeyboardInterruptÚ SystemExitÚsysÚstdoutÚ __stdout__rÚdebugÚ __stderr__ÚstderrÚexit)r-r{rrrÚ serve_forever¤s*      ü  zServer.serve_forevercCsLz|j ¡}Wnty$YqYn0tj|j|fd�}d|_| ¡qdS)N©rurAT)rkÚacceptÚOSErrorrorzÚhandle_requestr|r})r-r?Útrrrr{ºs  zServer.accepterc Cs6d}}}z>t ||j¡t ||j¡| ¡}|\}}}}t||ƒ}Wntyfdtƒf} YnB0z||g|¢Ri|¤Ž}Wntyždtƒf} Yn 0d|f} z| | ¡Wnrt�y(} zXz| dtƒf¡WntyîYn0t   d| ¡t   d|¡t   d| ¡WYd} ~ n d} ~ 00|  ¡dS)z) Handle a new connection NrGr;zFailure to send message: %rz ... request was %rú ... exception was %r) r Údeliver_challengeriÚanswer_challenger=rÚ Exceptionrr<rÚinfoÚclose) r-r?ÚfuncnamerDÚrequestÚignorerArBrTÚmsgÚerrrr�Äs2       "zServer.handle_requestc CsÒt dt ¡j¡|j}|j}|j}|j  ¡�sÎ�z:d}}|ƒ}|\}}} } z||\}} } WnPt y°} z8z|j |\}} } Wnt yš| ‚Yn0WYd} ~ n d} ~ 00|| vrÐt d|t |ƒ| fƒ‚t||ƒ}z|| i| ¤Ž}Wn.t�y}zd|f}WYd}~nXd}~00| �o,|  |d¡}|�rb| |||¡\}}t||j|ƒ}d||ff}nd|f}WnÆt �yè|du�r’dtƒf}nRz2|j|}|||||g| ¢Ri| ¤Ž}d|f}Wnt�yâdtƒf}Yn0YnLt�yt dt ¡j¡t d ¡Ynt�y2dtƒf}Yn0z4z ||ƒWn"t�yd|d tƒfƒYn0Wq$t�yÊ}zHt d t ¡j¡t d |¡t d |¡| ¡t d¡WYd}~q$d}~00q$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=%rrFú#PROXYr;rGz$got EOF -- exiting thread serving %rrrHzexception in thread serving %rz ... message was %rr�r)rr…roÚcurrent_threadrr=r<rlrwr~ÚKeyErrorrnÚAttributeErrorrrr’ÚgetrZrr+rÚfallback_mappingÚEOFErrorr‚rˆr“r”)r-Úconnr=r<rlr@r'r–ÚidentrArBÚexposedÚ gettypeidÚkeÚfunctionÚresr™r˜r*ZridentZrexposedÚtokenZ fallback_funcrDrrrÚ serve_clientæsŽÿ  ÿ    ÿÿ     ÿÿÿ ÿ ÿ  zServer.serve_clientcCs|Srr©r-r¡r¢r'rrrÚfallback_getvalue7szServer.fallback_getvaluecCst|ƒSr©rJrªrrrÚ fallback_str:szServer.fallback_strcCst|ƒSr)ÚreprrªrrrÚ fallback_repr=szServer.fallback_repr)rOr6ú #GETVALUEcCsdSrr©r-r?rrrr_Fsz Server.dummyc Cs�|j�vg}t|j ¡ƒ}| ¡|D]<}|dkr&| d||j|t|j|dƒdd…f¡q&d |¡WdƒS1s‚0YdS)zO Return some info --- useful to spot problems with refcounting rdz %s: refcount=%s %srNéKÚ ) rqr%rmr#ÚsortrRrJrlÚjoin)r-r?rDr#r¢rrrr]Is ÿÿzServer.debug_infocCs t|jƒS)z* Number of shared objects )Úlenrmr±rrrr^YszServer.number_of_objectscCsVzDzt d¡| d¡Wnddl}| ¡Yn0W|j ¡n |j ¡0dS)z' Shutdown this process z!manager received shutdown message©r;NrN)rr…r<Ú tracebackÚ print_excrwÚset)r-r?r¸rrrrY`s zServer.shutdownc Os|j�â|j|\}}}}|durD|s2t|ƒdkr:tdƒ‚|d} n||i|¤Ž} |durbt| ƒ}|dur˜t|tƒsˆtd |t |ƒ¡ƒ‚t |ƒt |ƒ}dt | ƒ} t   d|| ¡| t|ƒ|f|j| <| |jvrÚd|j| <Wdƒn1sî0Y| || ¡| t|ƒfS)z> Create a new shared object and return its id Nrz4Without 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)rqrgr¶rNrWrIÚdictrKrLrr%r,rr…rºrlrmr`Útuple) r-r?r*rArBrQr£Úmethod_to_typeidÚ proxytyper'r¢rrrrZms6ÿ ÿ  ÿÿ  ( z Server.createcCst|j|jdƒS)zL Return the methods of the shared object indicated by token r)r¼rlr,)r-r?r¨rrrr\‘szServer.get_methodscCs"|t ¡_| d¡| |¡dS)z= Spawn a new thread to serve this connection r·N)ror›rr<r©)r-r?rrrrr[—s  zServer.accept_connectionc Cs¬|j�’z|j|d7<Wnjtyˆ}zR||jvrpd|j|<|j||j|<|j|\}}}t d|¡n|‚WYd}~n d}~00Wdƒn1sž0YdS)Nrz&Server re-enabled tracking & INCREF %r)rqrmrœrnrlrr…)r-r?r¢r¥r'r£r¤rrrr`Ÿs  ÿz Server.increfcCsð||jvr$||jvr$t d|¡dS|j�d|j|dkrXtd ||j||j|¡ƒ‚|j|d8<|j|dkr€|j|=Wdƒn1s”0Y||jvrìd|j|<t d|¡|j�|j|=Wdƒn1sâ0YdS)NzServer DECREF skipping %rrz+Id {0!s} ({1!r}) has refcount {2:n}, not 1+r)NrNzdisposing of obj with id %r)rmrnrr…rqÚAssertionErrorrLrl)r-r?r¢rrrra±s* ÿ  þÿ&   z Server.decrefN)r5r7r8r9Úpublicr.r‰r{r�r©r«r­r¯rŸr_r]r^rYrZr\r[r`rarrrrrX‹s. "Qý $rXc@seZdZdgZdZdZdZdS)ÚStateÚvaluerréN)r5r7r8r:ÚINITIALÚSTARTEDÚSHUTDOWNrrrrrÁÑsrÁ)ÚpickleÚ xmlrpclibc@s¢eZdZdZiZeZd"dd„Zdd„Zdd „Z d#d d „Z e d$d d„ƒZ dd„Z d%dd„Zdd„Zdd„Zdd„Zdd„Zedd„ƒZedd„ƒZe d&d d!„ƒZdS)'rz! Base class for managers NrÇcCs\|durt ¡j}||_t |¡|_tƒ|_tj|j_ ||_ t |\|_ |_ |pTtƒ|_dSr)rrxriÚ_addressrhÚ_authkeyrÁÚ_staterÄrÂÚ _serializerrjZ _ListenerÚ_ClientrÚ_ctx)r-r+rirrÚctxrrrr.ës   zBaseManager.__init__cCsf|jjtjkrP|jjtjkr&tdƒ‚n*|jjtjkr>tdƒ‚ntd |jj¡ƒ‚t|j |j |j |j ƒS)zX Return server object with serve_forever() method and address attribute úAlready started serverúManager has shut downúUnknown state {!r}) rËrÂrÁrÄrÅr rÆrLrXÚ _registryrÉrÊrÌr/rrrÚ get_server÷s   ÿ ÿzBaseManager.get_servercCs8t|j\}}||j|jd�}t|ddƒtj|j_dS)z> Connect manager object to the server process ©riNr_) rjrÌrÉrÊrErÁrÅrËrÂ)r-rsrtr¡rrrÚconnects zBaseManager.connectrc Cs4|jjtjkrP|jjtjkr&tdƒ‚n*|jjtjkr>tdƒ‚ntd |jj¡ƒ‚|durht|ƒsht dƒ‚t j dd�\}}|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 rÐrÑrÒNzinitializer must be a callableF)ÚduplexrŠú:css|]}t|ƒVqdSrr¬)rÚirrrÚ (r!z$BaseManager.start..ú-r©rAÚ exitpriority)!rËrÂrÁrÄrÅr rÆrLrQrKr ÚPiperÎÚProcessrÚ _run_serverrÓrÉrÊrÌÚ_processrµÚ _identityr5rr}r”r=rÚFinalizeÚ_finalize_managerrÍrY)r-Ú initializerÚinitargsÚreaderÚwriterr¢rrrr}s>   ÿ  ÿþ     ÿüzBaseManager.startc Cs^t tjtj¡|dur ||Ž| ||||¡}| |j¡| ¡t d|j¡|  ¡dS)z@ Create a server, report its address and run it Nzmanager serving at %r) ÚsignalÚSIGINTÚSIG_IGNÚ_Serverr<r+r”rr“r‰) Úclsrgr+rirrrèråræÚserverrrrrà:s zBaseManager._run_servercOsV|j|j|jd�}z&t|dd|f||ƒ\}}W| ¡n | ¡0t||j|ƒ|fS)zP Create a new shared object; return the token and exposed tuple rÕNrZ)rÍrÉrÊrEr”r)r-r*rArBr¡r,r£rrrÚ_createQs zBaseManager._createcCs*|jdur&|j |¡|j ¡s&d|_dS)zC Join the manager process (if it has been spawned) N)rárµÚis_alive©r-Útimeoutrrrrµ]s   zBaseManager.joincCs8|j|j|jd�}zt|ddƒW| ¡S| ¡0dS)zS Return some info about the servers shared objects and connections rÕNr]©rÍrÉrÊrEr”©r-r¡rrrÚ _debug_infofs  þzBaseManager._debug_infocCs8|j|j|jd�}zt|ddƒW| ¡S| ¡0dS)z5 Return the number of shared objects rÕNr^rórôrrrÚ_number_of_objectsps  þzBaseManager._number_of_objectscCsj|jjtjkr| ¡|jjtjkrf|jjtjkr.temp) Ú__dict__rÓÚcopyÚ AutoProxyrr%r"r5Úsetattr) rír*rQr¾r£r½Ú create_methodÚkeyrÂrSrrrÚregister®s"   ÿÿ  zBaseManager.register)NNrÇN)Nr)Nr)N)NNNNT)r5r7r8r9rÓrXrìr.rÔrÖr}Ú classmethodràrïrµrõrör÷rüÚ staticmethodräÚpropertyr+r rrrrräs4ÿ  +ÿ       ÿrc@seZdZdd„Zdd„ZdS)ÚProcessLocalSetcCst |dd„¡dS)NcSs| ¡Sr)Úclearr&rrrÚÜr!z*ProcessLocalSet.__init__..)rÚregister_after_forkr/rrrr.ÛszProcessLocalSet.__init__cCs t|ƒdfSre)rr/rrrÚ __reduce__ÝszProcessLocalSet.__reduce__N)r5r7r8r.rrrrrrÚsrc@s€eZdZdZiZe ¡Zddd„Zdd„Z d ifd d „Z d d „Z dd„Z e dd„ƒZdd„Zdd„Zdd„Zdd„Zdd„ZdS)rz. A base for proxies of shared objects NTFc Csòtj�Btj |jd¡}|dur:t ¡tƒf}|tj|j<Wdƒn1sN0Y|d|_|d|_ ||_ |j j |_ ||_ ||_t|d|_||_|dur²t |¡|_n"|j durÈ|j j|_n t ¡j|_|rà| ¡t |tj¡dS)Nrr)rÚ_mutexrÿržr+rÚForkAwareLocalrÚ_tlsÚ_idsetÚ_tokenr,Ú_idÚ_managerrÌrjrÍÚ_owned_by_managerrrhrÊrxriÚ_increfrÚ _after_fork) r-r¨rrrrir£r`Ú manager_ownedZ tls_idsetrrrr.ës**      zBaseProxy.__init__cCsdt d¡t ¡j}t ¡jdkr4|dt ¡j7}|j|jj |j d�}t |dd|fƒ||j _ dS)Nzmaking connection to managerÚ MainThreadú|rÕr[)rr…rrxrror›rÍrr+rÊrErr )r-rr¡rrrÚ_connects  zBaseProxy._connectrc Csèz |jj}Wn4ty@t dt ¡j¡| ¡|jj}Yn0|  |j |||f¡|  ¡\}}|dkrn|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;ršéÿÿÿÿrrÕNra)rr r�rr…ror›rr#r<rr=rrÓr*rr+rÌrÊrÍrEr,r>) r-r@rArBr¡rCrDr£r¨r¾rrrrÚ _callmethods0  ÿ   þzBaseProxy._callmethodcCs | d¡S)z9 Get a copy of the value of the referent r°©r%r/rrrÚ _getvalue;szBaseProxy._getvaluec Csœ|jrt d|jj¡dS|j|jj|jd�}t|dd|j fƒt d|jj¡|j   |j ¡|j oj|j j }tj|tj|j|j||j|j |jfdd�|_dS)Nz%owned_by_manager skipped INCREF of %rrÕr`z INCREF %ré rÜ)rrr…rr,rÍr+rÊrErrÚaddrrËrãrÚ_decrefrÚ_close)r-r¡r2rrrrAs  ÿüzBaseProxy._increfc CsÆ| |j¡|dus |jtjkr†z2t d|j¡||j|d�}t|dd|jfƒWq”t y‚}zt d|¡WYd}~q”d}~00nt d|j¡|sÂt |dƒrÂt dt   ¡j ¡|j ¡|`dS)Nz DECREF %rrÕraz... decref failed %sz%DECREF %r -- manager already shutdownr z-thread %r has no more proxies so closing conn)Údiscardr,rÂrÁrÅrr…r+rEr’rþror›rr r”)r¨rir2ZtlsZidsetrÍr¡r™rrrr*Us $ÿ zBaseProxy._decrefc CsJd|_z | ¡Wn2tyD}zt d|¡WYd}~n d}~00dS)Nzincref failed: %s)rrr’rr“)r-r™rrrrns  zBaseProxy._after_forkcCs^i}tƒdur|j|d<t|ddƒrB|j|d<tt|j|j|ffStt|ƒ|j|j|ffSdS)NriÚ_isautoFr£) r rÊrrÚ RebuildProxyr rrÌr©r-rBrrrrvs    ÿÿzBaseProxy.__reduce__cCs| ¡Sr)r')r-ÚmemorrrÚ __deepcopy__ƒszBaseProxy.__deepcopy__cCsdt|ƒj|jjt|ƒfS)Nz<%s object, typeid %r at %#x>)rr5rr*r,r/rrrr6†sÿzBaseProxy.__repr__cCs8z | d¡WSty2t|ƒdd…dYS0dS)zV Return representation of the referent (or a fall-back if that fails) r6Nr$z; '__str__()' failed>)r%r’r®r/rrrrOŠs  zBaseProxy.__str__)NNNTF)r5r7r8r9rÿrÚForkAwareThreadLockrr.r#r%r'rrr*rrr1r6rOrrrrräs"ÿ )   rcCsˆtt ¡ddƒ}|rT|j|jkrTt d|¡d|d<|j|jvrT|j|j|j|j<|  dd¡optt ¡ddƒ }|||fd|i|¤ŽS) z5 Function used for unpickling proxy objects. ryNz*Rebuild a proxy owned by manager, token=%rTr r`Z _inheritingF) rrrxr+rr…r,rnrlÚpop)rTr¨rrrBrîr`rrrr.—s   ÿ  þr.cCsnt|ƒ}z|||fWSty(Yn0i}|D]}td||f|ƒq2t|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))r¼rœÚexecrrr)rr£Ú_cacheZdicÚmethÚ ProxyTyperrrÚ MakeProxyType¬s  ÿÿ r8c Cs t|d}|durJ||j|d�}zt|dd|fƒ}W| ¡n | ¡0|dur`|dur`|j}|durrt ¡j}td|j |ƒ} | ||||||d�} d| _ | S)z* Return an auto-proxy for `token` rNrÕr\z AutoProxy[%s])rrir`r T) rjr+rEr”rÊrrxrir8r*r-) r¨rrrrir£r`r rÍr¡r7rrrrr Âs    ÿr c@seZdZdd„Zdd„ZdS)Ú NamespacecKs|j |¡dSr)rÚupdater/rrrr.àszNamespace.__init__cCsZt|j ¡ƒ}g}|D]$\}}| d¡s| d||f¡q| ¡d|jjd |¡fS)NrVz%s=%rz%s(%s)z, ) r%rr"Ú startswithrRr´r4r5rµ)r-r"rSrrÂrrrr6âs  zNamespace.__repr__N)r5r7r8r.r6rrrrr9ßsr9c@s8eZdZd dd„Zdd„Zdd„Zdd „ZeeeƒZd S) ÚValueTcCs||_||_dSr)Ú _typecodeÚ_value)r-rrÂÚlockrrrr.ìszValue.__init__cCs|jSr©r>r/rrrržïsz Value.getcCs ||_dSrr@©r-rÂrrrrºñsz Value.setcCsdt|ƒj|j|jfS)Nz %s(%r, %r))rr5r=r>r/rrrr6ószValue.__repr__N)T) r5r7r8r.ržrºr6rrÂrrrrr<ës  r<cCs t ||¡Sr)r)rÚsequencer?rrrÚArray÷srCc@s8eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd S) Ú IteratorProxy)Ú__next__r<Úthrowr”cCs|Srrr/rrrÚ__iter__szIteratorProxy.__iter__cGs | d|¡S)NrEr&©r-rArrrrEszIteratorProxy.__next__cGs | d|¡S)Nr<r&rHrrrr<szIteratorProxy.sendcGs | d|¡S)NrFr&rHrrrrFszIteratorProxy.throwcGs | d|¡S)Nr”r&rHrrrr”szIteratorProxy.closeN) r5r7r8rrGrEr<rFr”rrrrrDþs rDc@s2eZdZdZd dd„Zdd„Zdd „Zd d „ZdS) Ú AcquirerProxy)ÚacquireÚreleaseTNcCs"|dur|fn||f}| d|¡S©NrJr&)r-ÚblockingròrArrrrJszAcquirerProxy.acquirecCs | d¡S©NrKr&r/rrrrKszAcquirerProxy.releasecCs | d¡SrLr&r/rrrr÷szAcquirerProxy.__enter__cCs | d¡SrNr&rørrrrüszAcquirerProxy.__exit__)TN)r5r7r8rrJrKr÷rürrrrrI s  rIc@s6eZdZdZd dd„Zd dd„Zdd „Zdd d „ZdS)ÚConditionProxy)rJrKrÚnotifyÚ notify_allNcCs| d|f¡S©Nrr&rñrrrrszConditionProxy.waitrcCs| d|f¡S)NrPr&)r-ÚnrrrrPszConditionProxy.notifycCs | d¡S)NrQr&r/rrrrQszConditionProxy.notify_allcCsd|ƒ}|r|S|dur$t ¡|}nd}d}|s`|durN|t ¡}|dkrNq`| |¡|ƒ}q,|S)Nr)ÚtimeÚ monotonicr)r-Ú predicateròrDÚendtimeÚwaittimerrrÚwait_for!s  zConditionProxy.wait_for)N)r)N)r5r7r8rrrPrQrYrrrrrOs   rOc@s2eZdZdZdd„Zdd„Zdd„Zd d d „ZdS) Ú EventProxy)r~rºrrcCs | d¡S)Nr~r&r/rrrr~6szEventProxy.is_setcCs | d¡S©Nrºr&r/rrrrº8szEventProxy.setcCs | d¡S)Nrr&r/rrrr:szEventProxy.clearNcCs| d|f¡SrRr&rñrrrr<szEventProxy.wait)N)r5r7r8rr~rºrrrrrrrZ4s rZc@sNeZdZdZddd„Zdd„Zdd„Zed d „ƒZed d „ƒZ ed d„ƒZ dS)Ú BarrierProxy)Ú__getattribute__rÚabortÚresetNcCs| d|f¡SrRr&rñrrrrBszBarrierProxy.waitcCs | d¡S)Nr^r&r/rrrr^DszBarrierProxy.abortcCs | d¡S)Nr_r&r/rrrr_FszBarrierProxy.resetcCs | dd¡S)Nr])Úpartiesr&r/rrrr`HszBarrierProxy.partiescCs | dd¡S)Nr])Ú n_waitingr&r/rrrraKszBarrierProxy.n_waitingcCs | dd¡S)Nr])Úbrokenr&r/rrrrbNszBarrierProxy.broken)N) r5r7r8rrr^r_rr`rarbrrrrr\@s   r\c@s(eZdZdZdd„Zdd„Zdd„ZdS) ÚNamespaceProxy)r]Ú __setattr__Ú __delattr__cCs0|ddkrt ||¡St |d¡}|d|fƒS)NrrVr%r])Úobjectr]©r-r Ú callmethodrrrÚ __getattr__Us   zNamespaceProxy.__getattr__cCs4|ddkrt |||¡St |d¡}|d||fƒS)NrrVr%rd)rfrdr])r-r rÂrhrrrrdZs  zNamespaceProxy.__setattr__cCs0|ddkrt ||¡St |d¡}|d|fƒS)NrrVr%re)rfrer]rgrrrre_s   zNamespaceProxy.__delattr__N)r5r7r8rrirdrerrrrrcSsrcc@s4eZdZdZdd„Zdd„ZeeeƒZee j ƒZ dS)Ú ValueProxy)ržrºcCs | d¡S)Nržr&r/rrrržhszValueProxy.getcCs| d|f¡Sr[r&rArrrrºjszValueProxy.setN) r5r7r8rržrºrrÂrÚtypesÚ GenericAliasÚ__class_getitem__rrrrrjfs  rjÚ BaseListProxy)Ú__add__Ú __contains__Ú __delitem__Ú __getitem__Ú__len__Ú__mul__Ú __reversed__Ú__rmul__Ú __setitem__rRÚcountÚextendÚindexÚinsertr3ÚremoveÚreverser´Ú__imul__c@seZdZdd„Zdd„ZdS)Ú ListProxycCs| d|f¡|S)Nryr&rArrrÚ__iadd__xszListProxy.__iadd__cCs| d|f¡|S)Nr~r&rArrrr~{szListProxy.__imul__N)r5r7r8r€r~rrrrrwsrÚ DictProxy)rprqrrrGrsrwrrržr"r#r3ÚpopitemÚ setdefaultr:r$rGÚIteratorÚ ArrayProxy)rsrrrwÚ PoolProxy) ZapplyÚ apply_asyncr”ÚimapÚimap_unorderedrµÚmapÚ map_asyncÚstarmapÚ starmap_asyncrýZ AsyncResult)r‡r‹r�rˆr‰c@seZdZdd„Zdd„ZdS)r†cCs|Srrr/rrrr÷›szPoolProxy.__enter__cCs | ¡dSr)rýrørrrrü�szPoolProxy.__exit__N)r5r7r8r÷rürrrrr†šsc@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)r5r7r8r9rrrrr¤srÚQueueÚ JoinableQueuervrpÚRLockÚ SemaphoreÚBoundedSemaphoreÚ ConditionÚBarrierÚPoolr%r»)r¾r )r c@sLeZdZdZgfdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dS)Ú_SharedMemoryTrackerz+Manages one or more shared memory segments.cCs||_||_dSr©Zshared_memory_context_nameÚ segment_names)r-rr˜rrrr.Ìsz_SharedMemoryTracker.__init__cCs(t d|›dtƒ›�¡|j |¡dS)z6Adds the supplied shared memory block name to tracker.zRegister segment ú in pid N)rr…rr˜rR©r-Ú segment_namerrrÚregister_segmentÐsz%_SharedMemoryTracker.register_segmentcCsBt d|›dtƒ›�¡|j |¡t |¡}| ¡| ¡dS)z‚Calls unlink() on the shared memory block with the supplied name and removes it from the list of blocks being tracked.zDestroy segment r™N) rr…rr˜r|rÚ SharedMemoryr”Úunlink)r-r›ZsegmentrrrÚdestroy_segmentÕs   z$_SharedMemoryTracker.destroy_segmentcCs"|jdd…D]}| |¡qdS)ztdƒ‚ntd |jj¡ƒ‚| |j |j |j |j ¡S)z@Better than monkeypatching for now; merge into Server ultimatelyz"Already started SharedMemoryServerz!SharedMemoryManager has shut downrÒ) rËrÂrÁrÄrÅr rÆrLrìrÓrÉrÊrÌr/rrrrÔ7s   ÿ ÿzSharedMemoryManager.get_serverc CsŽ|j|j|jd��h}tjdd|d�}zt|dd|jfƒWn0tyj}z| ¡|‚WYd}~n d}~00Wdƒn1s€0Y|S)zoReturns a new SharedMemory instance with the specified size in bytes, to be tracked by the manager.rÕNT)rZÚsizer¢) rÍrÉrÊrr�rErÚ BaseExceptionrž)r-r­r¡Zsmsr™rrrr�Ds8z SharedMemoryManager.SharedMemoryc CsŒ|j|j|jd��f}t |¡}zt|dd|jjfƒWn2tyh}z|j  ¡|‚WYd}~n d}~00Wdƒn1s~0Y|S)z�Returns a new ShareableList instance populated with the values from the input sequence, to be tracked by the manager.rÕNr¢) rÍrÉrÊrÚ ShareableListrEZshmrr®rž)r-rBr¡Úslr™rrrr¯Ps  8z!SharedMemoryManager.ShareableListN) r5r7r8r9r¡rìr.r rÔr�r¯rrrrrs    )NNNTF)T)UÚ__all__r‚rorérÚqueuerTrkr¥rr¸rr¬r Úcontextr r r r rrrrÚ ImportErrorZ HAS_SHMEMrRrr Z view_typesr%r(Z view_typerfrrEr>r’rMrUrWrXrÁrsrtÚ XmlListenerÚ XmlClientrjrrºrrr.r8r r9r<rCrDrIrOrZr\rcrjrnrr�rr…Z BasePoolProxyr†rrŽrvrpr�r‘r’r“r”r•r»r–r¡rrrrrÚ sÈ             H  þ w 4 ÿ       ÿ  û   ÿ%-