g gdZddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl m Z ddlmZmZmZddl mZdd l mZdd l mZdd l mZ dd l mZd Zej1ddZej6ejedDcgc]}eei|c}ZdZeD]Z ej6e e[ [Gdde!Z"difdZ#dZ$Gdde%Z&dZ'dZ(Gdde!Z)Gdde!Z*e jVe jXfe jZe j\fd Z/Gd!d"e!Z0Gd#d$e1Z2Gd%d&e!Z3d'Z4ifd(Z5 dbd)Z6Gd*d+e!Z7Gd,d-e!Z8dcd.Z9Gd/d0e3Z:Gd1d2e3Z;Gd3d4e;Z<Gd5d6e3Z=Gd7d8e3Z>Gd9d:e3Z?Gd;dZAGd?d@eAZBe5dAdBZCdCdDieC_De5dEdFZEe5dGdHZFdIdIdIdDdDdJeF_DGdKdGeFZGGdLdMe0ZHeHj7dNejeHj7dOejeHj7dPeje=eHj7dQeje;eHj7dReje;eHj7dSeje;eHj7dTeje;eHj7dUeje<eHj7dVeje>eHj7dWejeGeHj7dXeReBeHj7dYeSeCeHj7d-e8e@eHj7dZe9eEeHj7d+e7e?eHj7dDe:d[eHj7dId\er!Gd]d^ZTGd_d`e)ZUGdade0ZVyy#e$rdZYwxYwcc}w)d) BaseManager SyncManager BaseProxyTokenN)getpid) format_exc) connection) reductionget_spawning_popen ProcessError)pool)process)util) get_context) shared_memoryTSharedMemoryManagerFcZtj|j|jffSN)arraytypecodetobytes)as ?/opt/alt/python312/lib64/python3.12/multiprocessing/managers.py reduce_arrayr/s ;;QYY[1 11)itemskeysvaluesc&tt|ffSr)listobjs rrebuild_as_listr$4s $s) rc,eZdZdZdZdZdZdZdZy)rz3 Type to uniquely identify a shared object typeidaddressidc0|||c|_|_|_yrr&)selfr'r(r)s r__init__zToken.__init__Ds06,dlDGrcH|j|j|jfSrr&r+s r __getstate__zToken.__getstate__Gs T\\47733rc.|\|_|_|_yrr&r+states r __setstate__zToken.__setstate__Js/4,dlDGrc|jjd|jd|jd|jdS)Nz(typeid=z , address=z, id=)) __class____name__r'r(r)r.s r__repr__zToken.__repr__Ms-''dllDGGM MrN) r7 __module__ __qualname____doc__ __slots__r,r/r3r8rrrr>s$,IE45Mrrr=cx|j||||f|j\}}|dk(r|St||)zL Send a message to manager using connection `c` and return response #RETURN)sendrecvconvert_to_error)cr) methodnameargskwdskindresults rdispatchrIUsBFFB D$ '(668LD& y 4 ((rc |dk(r|S|dvrSt|ts%tdj||t ||dk(rt d|zSt |St dj|S)N#ERROR) #TRACEBACK#UNSERIALIZABLEz.Result {0!r} (kind '{1}') type is {2}, not strrMzUnserializable message: %s zUnrecognized message type {!r}) isinstancestr TypeErrorformattype RemoteError ValueError)rGrHs rrBrB_s x 2 2&#&@GGD$v,01 1 $ $=FG Gv& &:AA$GHHrceZdZdZy)rSc>dt|jdzdzS)NzM --------------------------------------------------------------------------- rzK---------------------------------------------------------------------------)rOrEr.s r__str__zRemoteError.__str__os$s499Q<'886ABrN)r7r9r:rWr=rrrSrSnsCrrSc|g}t|D]+}t||}t|s|j|-|S)z4 Return a list of names of methods of `obj` )dirgetattrcallableappend)r#tempnamefuncs r all_methodsr`vs= DCsD! D> KK  KrcPt|Dcgc] }|ddk7s |c}Scc}w)zP Return a list of names of methods of `obj` which do not start with '_' r_)r`)r#r^s rpublic_methodsrcs-)- @-TaCD- @@ @s ##ceZdZdZgdZdZdZdZdZdZ dZ d Z d Z d Z e e e d Zd ZdZdZdZdZdZdZdZdZy)ServerzM Server class which runs in a process controlled by a manager object ) shutdowncreateaccept_connection get_methods debug_infonumber_of_objectsdummyincrefdecrefczt|ts$tdj|t |||_t j||_t|\}}||d|_ |jj|_ ddi|_ i|_ i|_tj |_y)Nz&Authkey {0!r} is type {1!s}, not bytes)r(backlog0Nr=)rNbytesrPrQrRregistryrAuthenticationStringauthkeylistener_clientlistenerr( id_to_objid_to_refcountid_to_local_proxy_obj threadingLockmutex)r+rur(rw serializerListenerClients rr,zServer.__init__s'5)8??T'],- -! 33G< *:6&!#> }},, z* %'"^^% rctj|_|tj_ tj |j}d|_|j |jjs6|jjd|jjs6tjtj k7rGt#j$dtj t_tj&t_tj*dy#ttf$rYwxYw#tjtj k7rGt#j$dtj t_tj&t_tj*dwxYw)z( Run the server forever )targetTr zresetting stdout, stderrrN)r}Event stop_eventrcurrent_process_manager_serverThreadaccepterdaemonstartis_setwaitKeyboardInterrupt SystemExitsysstdout __stdout__rdebug __stderr__stderrexit)r+rs r serve_foreverzServer.serve_forevers $//+48!1  ''t}}=H"HO NN  //002OO((+//002 zzS^^+ 56 ^^  ^^ HHQK&z2  zzS^^+ 56 ^^  ^^ HHQKs+7E,AD::E  E E  EA?Gc |jj}tj|j |f}d|_|jU#t$rYawxYw)NTrrE)ryacceptOSErrorr}rhandle_requestrr)r+rCts rrzServer.acceptersa MM((*  (;(;1$GAAH GGI  sA A#"A#cd} tj||jtj||j|j }|\}}}}t ||} ||g|i|}d|f} |j| y#t $rdtf} Y*wxYw#t $rdtf} YEwxYw#t $rx} |jdtfn#t $rYnwxYwtjd| tjd|tjd| Yd} ~ yd} ~ wwxYw)Nr?rLzFailure to send message: %rz ... request was %r ... exception was %r) r deliver_challengerwanswer_challengerArZ Exceptionrr@rinfo) r+rCrequestignorefuncnamerErFr_rHmsges r_handle_requestzServer._handle_requests2 *  ( (DLL 9  ' '4<< 8ffhG+2 (FHdD4*D *a/$/$/!&) 2 FF3K  3#Z\2 3  /.C / 2  jl34   II3S 9 II+W 5 II-q 1 1 2s[A#B&( B 9C B#"B#&B>=B> E C'&D=' C30D=2C33AD==Ec |j||jy#t$rYwxYw#|jwxYw)z) Handle a new connection N)rrcloser+conns rrzServer.handle_requests@    & JJL     JJLs$ 0303Ac$tjdtjj|j }|j }|j}|jjs dx}}|}|\}}} } ||\}} } || vrtd|dt|d| t||} || i| }| xr| j|d}|r4|j!|||\}}t#||j$|}d||ff}nd|f} ||jjsyy#t$r.} |j|\}} } n#t$r| wxYwYd} ~ d} ~ wwxYw#t&$r}d|f}Yd}~sd}~wwxYw#t$rQ d t)f}n? |j*|}|||g i }d|f}n#t&$rd t)f}YnwxYwYt,$rKtjd tjjt/j0d Y&t&$rd t)f}Y=wxYw#t&$r|d t)fYUwxYw#t&$r}tj2d tjjtj2dtj2d||j5t/j0dYd}~d}~wwxYw)zQ Handle requests from the proxies in a particular process/thread z$starting server thread to service %rNzmethod z of z object is not in exposed=#PROXYr?rKrLz$got EOF -- exiting thread serving %rrrMzexception in thread serving %rz ... message was %rrr )rrr}current_threadr^rAr@rzrrKeyErrorr|AttributeErrorrRrZgetrgrr(rrfallback_mappingEOFErrorrrrr)r+rrAr@rzrDr#ridentrErFexposed gettypeidkefunctionresr'ridentrexposedtokenrr fallback_funcrHs r serve_clientzServer.serve_clients 9++-22 4yyyyNN //((*5 3#'' S&07-z4!.7.>+C)W,(#T#Y9 #3 3 /"D1D1C'J9==T+JF+/;;tVS+I( %fdllF C'(E):;(#.. <Iw//((* !! 66u=0Wi#! !'0!"!(#Q-C(" ;%'6C;(,(=(=j(I !. $s"59"=A" )&1$;+Z\:;  A$335::<  3#Z\2 3 !<+Z\:;<  :!002779 /5 115   s2F D<-F<E6AFI< E3EE. E&&E.)F.E33F6 F ?FFF  FI)"G  I G$!I#G$$I)AI;III51I84I55I88 LBL  Lc|Srr=r+rrr#s rfallback_getvaluezServer.fallback_getvalue?s rct|SrrOrs r fallback_strzServer.fallback_strBs 3xrct|Sr)reprrs r fallback_reprzServer.fallback_reprEs Cyr)rWr8 #GETVALUEcyrr=r+rCs rrlz Server.dummyNs rc r|j5g}t|jj}|j |D]K}|dk7s |j d|d|j|dt |j|dddMdj|cdddS#1swYyxYw) zO Return some info --- useful to spot problems with refcounting rrz z: refcount=z rNK ) rr!r{rsortr\rOrzjoin)r+rCrHrrs rrjzServer.debug_infoQs ZZF++0023D IIKC<MM#($*=*=e*D#&t~~e' Create a new shared object and return its id Nr z4Without 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)rrurrTrcrNdictrPrQrRr!r)rrrrzr{rmtuple) r+rCr'rErFr[rmethod_to_typeid proxytyper#rs rrgz Server.createusEZZmmF+ ;Hg/CIN$NPP1g--(-+!"2D9#FMM,d3C.DFGGw-$/?*@@2c7NE JJ? O%(#g,8H$IDNN5 !D///-.##E*7: AueGn$$=Zs C7D++D4cLt|j|jdS)zL Return the methods of the shared object indicated by token r )rrzr))r+rCrs rrizServer.get_methodss!T^^EHH-a011rcz|tj_|jd|j |y)z= Spawn a new thread to serve this connection rN)r}rr^r@r)r+rCr^s rrhzServer.accept_connections0+/   "'  ! !rcF|j5 |j|xxdz cc<dddy#t$r\}||jvrBd|j|<|j||j|<t j d|n|Yd}~id}~wwxYw#1swYyxYw)Nr z&Server re-enabled tracking & INCREF %r)rr{rr|rzrr)r+rCrrs rrmz Server.increfs ZZ ##E*a/*Z  D66612D''.2259NN5)JJGOHP Zs,B/ BAB BBBB c l||jvr%||jvrtjd|y|j5|j|dkr6t dj ||j||j||j|xxdzcc<|j|dk(r |j|=ddd||jvrHd|j|<tjd||j5|j|=dddyy#1swY`xYw#1swYyxYw)NzServer DECREF skipping %rrz+Id {0!s} ({1!r}) has refcount {2:n}, not 1+r )Nr=Nzdisposing of obj with id %r)r{r|rrrAssertionErrorrQrz)r+rCrs rrnz Server.decrefs ++ + T// / JJ2E :  ZZ""5)Q.$AHHt~~e4++E2455    &! + &""5)Q.''. ++ + %5DNN5 ! JJ4e <NN5) ,Z$sA?DD*D'*D3N)r7r9r:r;publicr,rrrrrrrrrrlrjrkrfrgrirhrmrnr=rrreresNF&$,2< Ob %   % ( ""%H2 "*rreceZdZdgZdZdZdZy)Statevaluerr N)r7r9r:r<INITIALSTARTEDSHUTDOWNr=rrrrs IGGHrr)pickle xmlrpclibceZdZdZiZeZ ddddZdZdZ ddZ e dd Z d Z dd Zd Zd ZdZdZedZedZe ddZy)rz! Base class for managers Ng?)shutdown_timeoutcP|tjj}||_tj||_t |_t j|j_ ||_ t|\|_ |_ |xs t|_||_yr)rrrw_addressrv_authkeyr_staterr _serializerrx _Listener_Clientr_ctx_shutdown_timeout)r+r(rwrctxrs rr,zBaseManager.__init__s~ ?--/77G 44W= g !MM %'6z'B$ (;= !1rc|jjtjk7r|jjtjk(r t d|jjtj k(r t dt dj|jjt|j|j|j|jS)zX Return server object with serve_forever() method and address attribute Already started serverManager has shut downUnknown state {!r}) rrrrrr rrQre _registryrrrr.s r get_serverzBaseManager.get_servers ;;   -{{  EMM1"#;<<""enn4"#:;;"(// 0A0ABDDdnndmmmmT%5%57 7rct|j\}}||j|j}t |ddt j |j_y)z> Connect manager object to the server process rwNrl) rxrrrrIrrrr)r+rrrs rconnectzBaseManager.connectsI+4+;+;<&dmmT]];tW%!MM rc |jjtjk7r|jjtjk(r t d|jjtj k(r t dt dj|jj|t|s tdtjd\}}|jjt|j|j |j"|j$|j&|||f|_d j+d |j(j,D}t|j.d z|z|j(_|j(j3|j5|j7|_|j5tj|j_t9j:|t|j<|j(|j"|j$|j|j>|j@fd |_!y)z@ Spawn a server process for this manager object rrrNzinitializer must be a callableF)duplexr:c32K|]}t|ywrr).0is r z$BaseManager.start..0sA)@AQ)@s-rrE exitpriority)"rrrrrr rrQr[rPr PiperProcessrR _run_serverrrrr_processr _identityr7r^rrrArFinalize_finalize_managerrrrf)r+ initializerinitargsreaderwriterrs rrzBaseManager.starts ;;   -{{  EMM1"#;<<""enn4"#:;;"(// 0A0ABDD  "8K+@<= =$6 )):))..$--""FKC* A)@)@AA!$Z00C7%?       "MM  $t*..-- t{{,, 6 68  rcTtjtjtj||||j||||}|j |j |j tjd|j |jy)z@ Create a server, report its address and run it Nzmanager serving at %r) signalSIGINTSIG_IGN_Serverr@r(rrrr) clsrur(rwrrrrservers rrzBaseManager._run_serverBsz  fmmV^^4  "  "XwD  FNN#  )6>>:rc|j|j|j} t|dd|f|z|\}}|j t ||j||fS#|j wxYw)zP Create a new shared object; return the token and exposed tuple rNrg)rrrrIrr)r+r'rErFrr)rs r_createzBaseManager._createYsm ||DMM4==|A "4x&4NKB JJLVT]]B/88 JJLs A((A:c|j>|jj||jjsd|_yyy)zC Join the manager process (if it has been spawned) N)rris_aliver+timeouts rrzBaseManager.joinesA == $ MM  w '==))+ $ , %rc|j|j|j} t|dd|j S#|j wxYw)zS Return some info about the servers shared objects and connections rNrjrrrrIrrs r _debug_infozBaseManager._debug_infonsB||DMM4==|A D$ 5 JJLDJJL AAc|j|j|j} t|dd|j S#|j wxYw)z5 Return the number of shared objects rNrkr&rs r_number_of_objectszBaseManager._number_of_objectsxsC||DMM4==|A D$(;< JJLDJJLr(c|jjtjk(r|j |jjtj k7r|jjtjk(r t d|jjtjk(r t dt dj|jj|S)NzUnable to start serverrr) rrrrrrr rrQr.s r __enter__zBaseManager.__enter__s ;;   - JJL ;;   -{{  EMM1"#;<<""enn4"#:;;"(// 0A0ABDD rc$|jyr)rfr+exc_typeexc_valexc_tbs r__exit__zBaseManager.__exit__s  rc|jrtjd |||} t|dd|j  |j ||jrtjdt|drtjd|j|j ||jr7tjd |j|j tj|_ tj|=y#|j wxYw#t $rYwxYw#t$rYywxYw) zQ Shutdown the manager process; will be registered as a finalizer z#sending shutdown message to managerrNrf)r$zmanager still alive terminatez'trying to `terminate()` manager processz#manager still alive after terminate)r"rrrIrrrhasattrr4killrrrr_address_to_localr)rr(rwr2rrrs rrzBaseManager._finalize_managers* 7    II; < w8!T44JJL GLL!1 2w! /07K0IIGH%G%%' GLL)9:'w'') "GH$ $ nn  ++G4%JJL  $   s: E EE.E%EE E"!E"% E10E1c|jSr)rr.s rr(zBaseManager.addresss }}rc\d|jvr|jj|_t|xs t dd}|xs t dd}|r!t |j D]\}}|||f|j<|rfd} | _t|| yy)z9 Register a typeid with the manager type rN _exposed__method_to_typeid_c(tjd|jg|i|\}}||j||j|}|j |j |j}t|dd|jf|S)Nz)requesting creation of a shared %r objectmanagerrwrrrn) rrr rrrr(rIr)) r+rErFrexpproxyrrr's rr]z"BaseManager.register..temps FO)T\\&@4@4@ s!4++T MM3||EMM4==|ItX{; r) __dict__rcopy AutoProxyrZr!rr7setattr) rr'r[rrr create_methodkeyrr]s ` ` rregisterzBaseManager.registers cll *MM..0CM  !IBWY TB+J"9.BDI  "#3#9#9#;< U< g/! f  #DM C & r)NNrNrsr)NNNNT)r7r9r:r;rrerr,rrr classmethodrr rr'r*r,r2 staticmethodrpropertyr(rGr=rrrrsIG>F 2/2 2 7*)V/1, 9%   DEI6:%'%'rrceZdZdZdZy)ProcessLocalSetc2tj|dy)Nc"|jSr)clearr"s rz*ProcessLocalSet.__init__..s 399;r)rregister_after_forkr.s rr,zProcessLocalSet.__init__s   '>?rct|dfSrs)rRr.s r __reduce__zProcessLocalSet.__reduce__sDz2~rN)r7r9r:r,rSr=rrrLrLs @rrLceZdZdZiZej ZdZ ddZ dZ difdZ dZ d Z ed Zd Zd Zd ZdZdZy)rz. A base for proxies of shared objects r Ncntj5tjj|jd}|;t j tf}|tj|j<tj|_ txjdz c_dddd|_ |d|_ ||_ |jj|_||_||_t"|d|_||_|t)j*||_nK|j|jj,|_n#t)j.j0|_|r|j3t j4|tj6y#1swYxYw)Nr r)r_mutexr7rr(rForkAwareLocalrL _next_serial_serial_tls _all_serials_tokenr)_id_managerrrxr_owned_by_managerrrvrrrw_increfrQ _after_fork) r+rrr>rwrrm manager_owned tls_serialss rr,zBaseProxy.__init__sJ   #5599%--NK""113_5FF =H ++EMM:$11DL  " "a ' " N (N ;;>> %&z215 "/  #88ADM ]] & MM22DM#335==DM  LLN   y'<'<=Q s BF**F4ctjdtjj}t j jdk7r$|dt j jzz }|j|jj|j}t|dd|f||j_ y)Nzmaking connection to manager MainThread|rrh)rrrrr^r}rrr\r(rrIrZr )r+r^rs r_connectzBaseProxy._connect&s 12&&(--  # # % * *l : C)224999 9D||DKK//|Gt04':# rr=c |jj}|j|j|||f|j\}}|dk(r|S|dk(r|\}}|jj|jd} |jj |_| ||j"|j|j$|} |j'|j |j$}t)|dd|j*f| St-||#t$r\tjdt j j|j|jj}YawxYw) 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=rNrn)rZr rrrr}rr^rgr@r]rAr^rr'r\r(rrrrIr)rB) r+rDrErFrrGrHrrrr@s r _callmethodzBaseProxy._callmethod/s< (99''D 488Zt45yy{ f 9 M X #NGU // =bAI KK//EMt'' wE<< t}}<ED T4EHH; 7LtV,,- ( JJ< //166 8 MMO99''D  (sDA!E:9E:c$|jdS)z9 Get a copy of the value of the referent rrjr.s r _getvaluezBaseProxy._getvalueMs ,,rc |jr+tjd|jjy|j |jj |j}t|dd|jftjd|jj|jj|j|jxr|jj}tj|t j"|j|j|j||j$|j|j fd|_y)Nz%owned_by_manager skipped INCREF of %rrrmz INCREF %r r )r_rrr\r)rr(rrIr]r[addrYr^rrr_decrefrZ_close)r+rr2s rr`zBaseProxy._increfSs  ! ! JJ>  O ||DKK//|GtX{3 ; / dll+ 6$--"6"6mm )##++t||T]]E))T.. >  rcV|j|||jtjk(rO t j d|j ||j|}t|dd|j fn t j d|j |s\t|drOt j dtjj|jj|`yyy#t$r }t j d|Yd}~d}~wwxYw)Nz DECREF %rrrnz... decref failed %sz%DECREF %r -- manager already shutdownr z-thread %r has no more proxies so closing conn)discardrrrrrr)r(rIrr5r}rr^r r) rserialrwr2tlsidsetrrrs rrqzBaseProxy._decrefgs f =EKK5==8 6 ;1u}}g>tX{; JJ> Il3 JJF //166 8 NN " 4u 6 1155 6sA C?? D(D##D(cd|_ |jy#t$r"}tjd|zYd}~yd}~wwxYw)Nzincref failed: %s)r^r`rrr)r+rs rrazBaseProxy._after_forks<  / LLN / II)A- . . /s AAAc i}t|j|d<t|ddr3|j|d<tt |j |j|ffStt||j |j|ffS)Nrw_isautoFr) r rrZr: RebuildProxyrCr\rrRr+rFs rrSzBaseProxy.__reduce__s   +"mmDO 4E *"nnDO  T-=-=tDF F!$Zd.>.>EG Grc"|jSr)rm)r+memos r __deepcopy__zBaseProxy.__deepcopy__s~~rcrdt|j|jjt |fzS)Nz<%s object, typeid %r at %#x>)rRr7r\r'r)r.s rr8zBaseProxy.__repr__s3.T ##T[[%7%7DBC Crcf |jdS#t$rt|dddzcYSwxYw)zV Return representation of the referent (or a fall-back if that fails) r8Nriz; '__str__()' failed>)rjrrr.s rrWzBaseProxy.__str__s= =##J/ / =:cr?%<< < =s 00NNNTF)r7r9r:r;r7rForkAwareThreadLockrVrXr,rgrjrmr`rIrqrarSrr8rWr=rrrrs| %T % % 'FL26HM*>X$,.B-<- (0/ G C=rrcttjdd}|r||j|jk(rct j d|d|d<|j |jvr0|j|j |j|j <|jddxr ttjdd }|||fd|i|S) z5 Function used for unpickling proxy objects. rNz*Rebuild a proxy owned by manager, token=%rTrbrm _inheritingF) rZrrr(rrr)r|rzpop)r_rrrFrrms rr{r{sW,,.0A4 HF &..EMM1 ?G $_ 88677 7  *  ( ( 2 4  E G++-}e DD  z 9& 9D 99rct|} |||fS#t$rYnwxYwi}|D]}td|d|d|t|tf|}||_||||f<|S)zB Return a proxy type whose methods are given by `exposed` zdef z:(self, /, *args, **kwds): return self._callmethod(z , args, kwds))rrexecrRrr:)r^r_cachedicmeth ProxyTypes r MakeProxyTypersGnG tWo&&     C 6:DBCF HTI<-I!I'FD'? s   cpt|d}|4||j|} t|dd|f}|j|| |j}|t j j}td|jz|} | ||||||} d| _ | S#|jwxYw)z* Return an auto-proxy for `token` r Nrriz AutoProxy[%s])r>rwrmrbT) rxr(rIrrrrrwrr'rz) rrr>rwrrmrbrrrr@s rrCrCs j)!,Gu}}g6 tT=5(CG JJL7.""))+33o >22DIIdODDrN)r7r9r:r,r8r=rrrrs #Errc8eZdZddZdZdZdZeeeZy)Valuec ||_||_yr) _typecode_value)r+rrlocks rr,zValue.__init__s! rc|jSrrr.s rrz Value.gets {{rc||_yrrr+rs rrz Value.sets  rcft|jd|jd|jdS)Nrrr5)rRr7rrr.s rr8zValue.__repr__s!!$Z00$..$++NNrNT) r7r9r:r,rrr8rJrr=rrrrs#O S# Errc.tj||Sr)r)rsequencers rArrayr s ;;x **rc.eZdZdZdZdZdZdZdZy) IteratorProxy)__next__r@throwrc|Srr=r.s r__iter__zIteratorProxy.__iter__ rc&|jd|S)Nrrlr+rEs rrzIteratorProxy.__next__s D11rc&|jd|S)Nr@rlrs rr@zIteratorProxy.sends--rc&|jd|S)Nrrlrs rrzIteratorProxy.throw..rc&|jd|S)Nrrlrs rrzIteratorProxy.closerrN) r7r9r:r:rrr@rrr=rrrrs 6I2.//rrc*eZdZdZddZdZdZdZy) AcquirerProxy)acquirereleaseNc8||fn||f}|jd|SNrrl)r+blockingr$rEs rrzAcquirerProxy.acquire s'%o{Hg3F 400rc$|jdSNrrlr.s rrzAcquirerProxy.release# **rc$|jdSrrlr.s rr,zAcquirerProxy.__enter__%rrc$|jdSrrlr.s rr2zAcquirerProxy.__exit__'rr)TN)r7r9r:r:rrr,r2r=rrrrs&I1+++rrc.eZdZdZddZddZdZddZy) ConditionProxy)rrrnotify notify_allNc(|jd|fSNrrlr#s rrzConditionProxy.wait- 33rc(|jd|fS)Nrrl)r+ns rrzConditionProxy.notify/s1$//rc$|jdS)Nrrlr.s rrzConditionProxy.notify_all1s --rc|}|r|S|tj|z}nd}d}|s<||tjz }|dkr |S|j|}|s<|S)Nr)time monotonicr)r+ predicater$rHendtimewaittimes rwait_forzConditionProxy.wait_for3s~ M  nn&0GGH""T^^%55q=  IIh [F  rr)r )r7r9r:r:rrrrr=rrrr+sFI40.rrc*eZdZdZdZdZdZddZy) EventProxy)rrrOrc$|jdS)Nrrlr.s rrzEventProxy.is_setHs))rc$|jdSNrrlr.s rrzEventProxy.setJ&&rc$|jdS)NrOrlr.s rrOzEventProxy.clearL((rNc(|jd|fSrrlr#s rrzEventProxy.waitNrrr)r7r9r:r:rrrOrr=rrrrFs2I*')4rrcTeZdZdZd dZdZdZedZedZ edZ y) BarrierProxy)__getattribute__rabortresetNc(|jd|fSrrlr#s rrzBarrierProxy.waitTrrc$|jdS)Nrrlr.s rrzBarrierProxy.abortVrrc$|jdS)Nrrlr.s rrzBarrierProxy.resetXrrc&|jddS)Nr)partiesrlr.s rrzBarrierProxy.partiesZs 2LAArc&|jddS)Nr) n_waitingrlr.s rrzBarrierProxy.n_waiting]s 2NCCrc&|jddS)Nr)brokenrlr.s rrzBarrierProxy.broken`s 2K@@rr) r7r9r:r:rrrrJrrrr=rrrrRsR>I4)) BB DD AArrc"eZdZdZdZdZdZy)NamespaceProxy)r __setattr__ __delattr__c~|ddk(rtj||Stj|d}|d|fS)Nrrbrjr)objectrr+rF callmethods r __getattr__zNamespaceProxy.__getattr__gsB q6S=**45 5,,T=A ,sf55rc|ddk(rtj|||Stj|d}|d||fS)Nrrbrjr)rrr)r+rFrrs rrzNamespaceProxy.__setattr__lsE q6S=%%dC7 7,,T=A -#u66rc~|ddk(rtj||Stj|d}|d|fS)Nrrbrjr)rrrrs rrzNamespaceProxy.__delattr__qsA q6S=%%dC0 0,,T=A -#00rN)r7r9r:r:rrrr=rrrresBI6 7 1rrcReZdZdZdZdZeeeZee jZ y) ValueProxy)rrc$|jdS)Nrrlr.s rrzValueProxy.getzrrc(|jd|fSrrlrs rrzValueProxy.set|sx00rN) r7r9r:r:rrrJrrHtypes GenericAlias__class_getitem__r=rrrrxs.I'1 S# E#E$6$67rr BaseListProxy)__add__ __contains__ __delitem__ __getitem____len____mul__ __reversed____rmul__ __setitem__r\countextendindexinsertrremovereverser__imul__ceZdZdZdZy) ListProxyc,|jd|f|S)Nrrlrs r__iadd__zListProxy.__iadd__s E8, rc,|jd|f|S)Nr rlrs rr zListProxy.__imul__s eX. rN)r7r9r:rr r=rrr r s rr  DictProxy)rrrrrrrOrBrrrrpopitem setdefaultrrrIterator ArrayProxy)rrr PoolProxy) apply apply_asyncrimapimap_unorderedrmap map_asyncstarmap starmap_asyncr4 AsyncResult)rrrrrceZdZdZdZy)rc|Srr=r.s rr,zPoolProxy.__enter__rrc$|jyr)r4r.s rr2zPoolProxy.__exit__s  rN)r7r9r:r,r2r=rrrrs rceZdZdZy)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)r7r9r:r;r=rrrrsrrQueue JoinableQueuerr~RLock SemaphoreBoundedSemaphore ConditionBarrierPoolr!rr)rrE)rEc>eZdZdZgfdZdZdZdZdZdZ dZ y ) _SharedMemoryTrackerz+Manages one or more shared memory segments.c ||_||_yrshared_memory_context_name segment_names)r+r^r0s rr,z_SharedMemoryTracker.__init__s.2D +!.D rctjd|dt|jj |y)z6Adds the supplied shared memory block name to tracker.zRegister segment  in pid N)rrrr0r\r+ segment_names rregister_segmentz%_SharedMemoryTracker.register_segments3 JJ*<*:(68*M N    % %l 3rctjd|dt|jj |t j |}|j|jy)zCalls unlink() on the shared memory block with the supplied name and removes it from the list of blocks being tracked.zDestroy segment r2N) rrrr0rr SharedMemoryrunlink)r+r4segments rdestroy_segmentz$_SharedMemoryTracker.destroy_segmentsX JJ),)9&(L M    % %l 3#00>G MMO NN rcN|jddD]}|j|y)zrlsX A    @@*I NN() 2 5;; -4M N4MDd$72t$&'4M N IIy/2 z MFM.&(b) IC)C AF*VF*Z F##Z%6%67)):+?+?@t'&t'tct=t=t:*)+,8<7<: E E F + /I / +I +]6 4 4A9A&1Y1&88o0   +(      <* k, !"  $   +  Wekk* _ekk2 Wiooz: VY^^]; Wioo}= [)"5"5}E ')C)C"$ [)"5"5~F Y 1 1<@ VTYY 2 VT9- VT9- WeZ0 WeZ0 [)^< Z=N ]%8  """"J*k>g k%IOsO;P ;PP