
    h              	          S SK r S SKrS SKrS SKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SSKJ
r
  SS	KJr  SS
KJr  S SKJr  S SKJr  / SQr\ R$                  S    S:H  r\(       a  S rOS r\
R*                  " \R                  \5        S V s/ s H  n \" \" 0 U 5      " 5       5      PM     sn r\S    \La  S r\ H  r\
R*                  " \\5        M      " S S5      rS0 4S jrS r " S S\5      r S r!S r" " S S5      r# " S S5      r$\RJ                  \RL                  4\RN                  \RP                  4S .r) " S! S"5      r* " S# S$\+5      r, " S% S&5      r-S' r.0 4S( jr/  S_S) jr0 " S* S+5      r1 " S, S-5      r2S`S. jr3 " S/ S0\-5      r4 " S1 S2\-5      r5 " S3 S4\55      r6 " S5 S6\-5      r7 " S7 S8\-5      r8 " S9 S:\-5      r9 " S; S<\-5      r:S=r;\(       d  \;S>-  r;\/" S?\;5      r< " S@ SA\<5      r=\/" SBSC5      r>SDr?\(       d  \?SE-  r?\/" SF\?5      r@\/" SGSH5      rASISISISJSJSK.\AlB         " SL SG\A5      rC " SM SN\*5      rD\DR+                  SO\5        \DR+                  SP\5        \DR+                  SQ\R                  \75        \DR+                  SR\R                  \55        \DR+                  SS\R                  \55        \DR+                  ST\R                  \55        \DR+                  SU\R                  \55        \DR+                  SV\R                  \65        \K" \SW5      (       a  \DR+                  SW\R                  \85        \DR+                  SX\R                  \C5        \DR+                  SY\\=5        \DR+                  SZ\N\>5        \DR+                  S-\2\:5        \DR+                  S[\3\@5        \DR+                  S+\1\95        \DR+                  SJ\4S\S]9  \DR+                  SIS\S^9  gs  sn f )a    N)
format_exc   )
connection)context)pool)process)	reduction)util)get_context)Queue)	monotonic)BaseManagerSyncManager	BaseProxyToken   c                 Z    [         R                   U R                  U R                  5       44$ N)arraytypecodetobytesas    9D:\TimeStamps\venv\Lib\site-packages\billiard/managers.pyreduce_arrayr   *   s     {{QZZ555    c                 Z    [         R                   U R                  U R                  5       44$ r   )r   r   tostringr   s    r   r   r   -   s     {{QZZ666r   )itemskeysvaluesc                 &    [         [        U 5      44$ r   )listobjs    r   rebuild_as_listr&   5   s    d3i]""r   c                   4    \ rS rSrSrSrS rS rS rS r	Sr
g	)
r   ?   z+
Type to uniquely identify a shared object
typeidaddressidc                 .    XUsU l         U l        U l        g r   r)   )selfr*   r+   r,   s       r   __init__Token.__init__E   s    06,dlDGr   c                 H    U R                   U R                  U R                  4$ r   r)   r.   s    r   __getstate__Token.__getstate__H   s    T\\47733r   c                 .    Uu  U l         U l        U l        g r   r)   )r.   states     r   __setstate__Token.__setstate__K   s    /4,dlDGr   c                     U R                   R                  < SU R                  < SU R                  < SU R                  < S3$ )Nz(typeid=z
, address=z, id=))	__class____name__r*   r+   r,   r2   s    r   __repr__Token.__repr__N   s-    ^^$$dkk4<<J 	Jr   )r+   r,   r*   N)r<   
__module____qualname____firstlineno____doc__	__slots__r/   r3   r7   r=   __static_attributes__ r   r   r   r   ?   s$     ,IE45Jr   r   rE   c                 r    U R                  XX445        U R                  5       u  pVUS:X  a  U$ [        XV5      e)zD
Send a message to manager using connection `c` and return response
#RETURN)sendrecvconvert_to_error)cr,   
methodnameargskwdskindresults          r   dispatchrQ   W   s:     FFBD'(668LDy
4
((r   c                     U S:X  a  U$ U S:X  a  [        U5      [        L d   e[        U5      $ U S:X  a"  [        U5      [        L d   e[        SU-  5      $ [        S5      $ )N#ERROR
#TRACEBACK#UNSERIALIZABLEzUnserializable message: %s
zUnrecognized message type)typestrRemoteError
ValueError)rO   rP   s     r   rJ   rJ   b   sl    x		F|s"""6""	"	"F|s"""9FBCC566r   c                       \ rS rSrS rSrg)rX   o   c                 >    S[        U R                  S   5      -   S-   $ )NzM
---------------------------------------------------------------------------
r   zK---------------------------------------------------------------------------)rW   rM   r2   s    r   __str__RemoteError.__str__q   s    &TYYq\)::XEFr   rE   N)r<   r?   r@   rA   r]   rD   rE   r   r   rX   rX   o   s    Gr   rX   c                     / n[        U 5       H1  n[        X5      n[        U5      (       d  M   UR                  U5        M3     U$ )z,
Return a list of names of methods of `obj`
)dirgetattrcallableappend)r%   tempnamefuncs       r   all_methodsrg   y   s=     DCs!D>>KK  Kr   c                 X    [        U 5       Vs/ s H  oS   S:w  d  M  UPM     sn$ s  snf )zH
Return a list of names of methods of `obj` which do not start with '_'
r   _)rg   )r%   re   s     r   public_methodsrj      s+     )-@-TaCD-@@@s   ''c                       \ rS rSrSr/ SQrS rS rS rS r	S r
S	 rS
 rS r\\\S.rS rS rS rS rS rS rS rS rS rSrg)Server   zE
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decrefc                 ,   [        U[        5      (       d   eXl        [        R                  " U5      U l        [        U   u  pVU" USS9U l        U R                  R                  U l        SS0U l	        0 U l
        [        R                  " 5       U l        g )N   )r+   backlog0NrE   )
isinstancebytesregistryr   AuthenticationStringauthkeylistener_clientlistenerr+   	id_to_objid_to_refcount	threadingRLockmutex)r.   r~   r+   r   
serializerListenerClients          r   r/   Server.__init__   s|    '5)))) 33G<*:6 !"=}},,z* __&
r   c                    [         R                  " 5       U l        U [        R                  " 5       l         [         R                  " U R                  S9nSUl        UR                  5          U R                  R                  5       (       d<  U R                  R                  S5        U R                  R                  5       (       d  M<  [        R                  [        R                   :w  aH  ["        R$                  " S5        [        R                   [        l        [        R&                  [        l        [        R*                  " S5        g! [        [        4 a     Nf = f! [        R                  [        R                   :w  aH  ["        R$                  " S5        [        R                   [        l        [        R&                  [        l        [        R*                  " S5        f = f)z
Run the server forever
)targetTr   zresetting stdout, stderrr   N)r   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   s     r   serve_foreverServer.serve_forever   s&    $//+48!1	 ''t}}=H"HONN//0022OO((+ //0022
 zzS^^+

56 ^^
 ^^
HHQK &z2  zzS^^+

56 ^^
 ^^
HHQKs+   5E ,AE EE EE BG c                       U R                   R                  5       n[        R                  " U R
                  U4S9nSUl        UR                  5         MT  ! [         a     Mb  f = f)NTr   rM   )r   acceptOSErrorr   r   handle_requestr   r   )r.   rK   ts      r   r   Server.accepter   sa    MM((*   (;(;1%HAAHGGI   s   A 
A$#A$c                    S=n=p4 [         R                  " XR                  5        [         R                  " XR                  5        UR	                  5       nUu  pRpgX R
                  ;   d
   SU-  5       e[        X5      n U" U/UQ70 UD6nSU4n	 UR                  U	5        UR                  5         g! [         a    S[        5       4n	 N;f = f! [         a    S[        5       4n	 NWf = f! [         a|  n
 UR                  S[        5       45        O! [         a     Of = f[        R                  " SU	5        [        R                  " SU5        [        R                  " SU
5         Sn
A
NSn
A
ff = f)z
Handle a new connection
Nz%r unrecognizedrG   rT   zFailure to send message: %rz ... request was %r ... exception was %r)r   deliver_challenger   answer_challengerI   publicra   	Exceptionr   rH   r
   infoclose)r.   rK   funcnamerP   requestignorerM   rN   rf   msgexcs              r   r   Server.handle_request   sX    '+**6	*((LL9''<<8ffhG+2(Fd{{*H,=,HH*4*D*a/$/$/ !&)		4FF3K 	
	  3#Z\23  	/.C	/  	4jl34 II3S9II+W5II-s33	4s[   A9C B4 C, 4CCC)(C),
E27DE-
D E-D  AE--E2c                    [         R                  " S[        R                  " 5       R                  5        UR
                  nUR                  nU R                  nU R                  R                  5       (       d   S=pVU" 5       nUu  ppXH   u  pknX[;  a   [        SU< S[        U5      < SU< 35      e[        Xe5      n U" U	0 U
D6nU=(       a    UR                  US5      nU(       a2  U R                  XU5      u  nn[        XR                   U5      nSUU44nOSU4n   U" W5        U R                  R                  5       (       d  M  gg! ["         a  nSU4n SnAN@SnAff = f! [         aS    Wc  S	[%        5       4n Nc U R&                  U   nU" XWW/W	Q70 W
D6nSU4n N! ["         a    S	[%        5       4n  Nf = f[(         aM    [         R                  " S
[        R                  " 5       R                  5        [*        R,                  " S5         N["         a    S	[%        5       4n GNf = f! ["         a    U" S[/        W5      45         GN+f = f! ["         a  n[         R0                  " S[        R                  " 5       R                  5        [         R0                  " SW5        [         R0                  " SU5        UR3                  5         [*        R,                  " S5         SnAGNSnAff = f)zA
Handle requests from the proxies in a particular process/thread
z$starting server thread to service %rNzmethod z of z object is not in exposed=#PROXYrG   rS   rT   z$got EOF -- exiting thread serving %rr   rU   zexception in thread serving %rz ... message was %rr   r   )r
   r   r   current_threadre   rI   rH   r   r   r   AttributeErrorrV   ra   getro   r   r+   r   r   fallback_mappingEOFErrorr   r   reprr   r   )r.   connrI   rH   r   rL   r%   r   identrM   rN   exposed	gettypeidfunctionresr*   ridentrexposedtokenr   r   fallback_funcrP   s                          r   serve_clientServer.serve_client   s    	

9++-22	4 yyyyNN	//((**.3#''
&07-4*3*:'i,(&S	7< 
 #33/"D1D1C 'J9==T+JF+/;;tS+I( %fllF C'(E):;(#..9Ii //((**$ ! *#S/C* " ;%'6C;(,(=(=j(I!. s"59"=A"  )&1$ ;+Z\:;  

A$335::< 3#Z\23 ! 9+T#Y789 		:#22499;		/5		137

s   9AE)  E AE) E) #H6 
E&E!E) !E&&E) )H3!F((G>H3GAH3H32H36II II 
K7$BK22K7c                     U$ r   rE   r.   r   r   r%   s       r   fallback_getvalueServer.fallback_getvalue1  s    
r   c                     [        U5      $ r   rW   r   s       r   fallback_strServer.fallback_str4  s    3xr   c                     [        U5      $ r   )r   r   s       r   fallback_reprServer.fallback_repr7  s    Cyr   )r]   r=   	#GETVALUEc                     g r   rE   r.   rK   s     r   rt   Server.dummy@  s    r   c                    U R                      / n[        U R                  R                  5       5      nUR	                  5         U HQ  nUS:w  d  M  UR                  SU< SU R                  U   < S[        U R                  U   S   5      SS < 35        MS     SR                  U5      sSSS5        $ ! , (       d  f       g= f)	z?
Return some info --- useful to spot problems with refcounting
rz   z  z:       refcount=z
    r   NK   
)	r   r#   r   r    sortrc   r   rW   join)r.   rK   rP   r    r   s        r   rr   Server.debug_infoC  s     ZZF++-.DIIKC<MM#($*=*=e*D#&t~~e'<Q'?#@"#E#G H 
 99V$ ZZs   ?B4AB44
Cc                 2    [        U R                  5      S-
  $ )z
Number of shared objects
r   )lenr   r   s     r   rs   Server.number_of_objectsR  s     4>>"Q&&r   c                      [         R                  " S5        UR                  S5        U R
                  R                  5         g!   SSKnUR	                  5          N3= f! U R
                  R                  5         f = f)z
Shutdown this process
z!Manager received shutdown messagerG   Nr   N)r
   r   rH   	traceback	print_excr   set)r.   rK   r   s      r   rn   Server.shutdownX  sZ    	"JJ:;FF$%
 OO!		"!OO!s   'A AA A;c                 6   U R                      U R                  U   u  pVpxUc  [        U5      S:X  a  U(       a   eUS   n	OU" U0 UD6n	Uc  [        U	5      nUb+  [	        U5      [
        L d   e[        U5      [        U5      -   nS[        U	5      -  n
[        R                  " SX*5        U	[        U5      U4U R                  U
'   XR                  ;  a  SU R                  U
'   U R                  X5        U
[        U5      4sSSS5        $ ! , (       d  f       g= f)z.
Create a new shared object and return its id
Nr   r   z%xz&%r callable returned object with id %r)r   r~   r   rj   rV   dictr#   r,   r
   r   r   r   r   ru   tuple)r.   rK   r*   rM   rN   rb   r   method_to_typeid	proxytyper%   r   s              r   ro   Server.createe  s	    ZZf% ;H/ 4yA~d221g--(-+,-555w-$/?*@@ 2c7NEJJ?O%(#g,8H$IDNN5!///-.##E* KK!%.(; ZZs   C3D


Dc                 L    [        U R                  UR                     S   5      $ )z<
Return the methods of the shared object indicated by token
r   )r   r   r,   )r.   rK   r   s      r   rq   Server.get_methods  s!     T^^EHH-a011r   c                 |    U[         R                  " 5       l        UR                  S5        U R	                  U5        g)z-
Spawn a new thread to serve this connection
r   N)r   r   re   rH   r   )r.   rK   re   s      r   rp   Server.accept_connection  s0     +/	  "'	 !!r   c                 ~    U R                      U R                  U==   S-  ss'   S S S 5        g ! , (       d  f       g = f)Nr   )r   r   r.   rK   r   s      r   ru   Server.incref  s)    ZZ&!+& ZZs   .
<c                 0   U R                      U R                  U   S:  d   eU R                  U==   S-  ss'   U R                  U   S:X  a1  U R                  U	 U R                  U	 [        R                  " SU5        S S S 5        g ! , (       d  f       g = f)Nr   r   zdisposing of obj with id %r)r   r   r   r
   r   r   s      r   rv   Server.decref  s}    ZZ&&u-222&!+&""5)Q.NN5)4+>+>u+E

8%@ ZZs   A1B
B)r+   r   r   r   r   r   r~   r   N)r<   r?   r@   rA   rB   r   r/   r   r   r   r   r   r   r   r   rt   rr   rs   rn   ro   rq   rp   ru   rv   rD   rE   r   r   rl   rl      s|    NF', DHT  !&%'"!)F2,Ar   rl   c                   &    \ rS rSrS/rSrSrSrSrg)Statei  valuer   r      rE   N)	r<   r?   r@   rA   rC   INITIALSTARTEDSHUTDOWNrD   rE   r   r   r   r     s    	IGGHr   r   )pickle	xmlrpclibc                       \ rS rSrSr0 r\r  SS jrS r	S r
S rSS jr\ SS	 j5       rS
 rSS jrS rS rS rS r\S 5       r\" S 5      r\  SS j5       rSrg)r   i  z
Base class for managers
Nc                 N   Uc  [         R                  " 5       R                  nXl        [         R                  " U5      U l        [        5       U l        [        R                  U R                  l	        X0l
        [        U   u  U l        U l        U=(       d
    [        5       U l        g r   )r   r   r   _addressr   _authkeyr   _stater   r   _serializerr   	_Listener_Clientr   _ctx)r.   r+   r   r   ctxs        r   r/   BaseManager.__init__  sr    ?--/77G44W=g!MM%'6z'B$(;=	r   c                 r    [        U 5      R                  U R                  U R                  U R                  44$ r   )rV   from_addressr  r  r  r2   s    r   
__reduce__BaseManager.__reduce__  s3    T
''t/?/?@B 	Br   c                     U R                   R                  [        R                  :X  d   e[	        U R
                  U R                  U R                  U R                  5      $ )zH
Return server object with serve_forever() method and address attribute
)	r  r   r   r   rl   	_registryr  r  r  r2   s    r   
get_serverBaseManager.get_server  sH     {{  EMM111dnndmmmmT%5%57 	7r   c                     [         U R                     u  pU" U R                  U R                  S9n[	        USS5        [
        R                  U R                  l        g)z.
Connect manager object to the server process
r   Nrt   )	r   r  r  r  rQ   r   r   r  r   )r.   r   r   r   s       r   connectBaseManager.connect  sG     +4+;+;<dmmT]];tW%!MMr   c           
         U R                   R                  [        R                  :X  d   eUb  [	        U5      (       d  [        S5      e[        R                  " SS9u  p4U R                  R                  [        U 5      R                  U R                  U R                  U R                  U R                  XAU4S9U l        SR#                  S U R                   R$                   5       5      n[        U 5      R&                  S-   U-   U R                   l        U R                   R+                  5         UR-                  5         UR/                  5       U l        UR-                  5         [        R0                  U R                   l        [2        R4                  " U [        U 5      R6                  U R                   U R                  U R                  U R                   U R8                  4S	S
9U l        g)z0
Spawn a server process for this manager object
Nzinitializer must be a callableF)duplexr   :c              3   8   #    U  H  n[        U5      v   M     g 7fr   r   ).0is     r   	<genexpr>$BaseManager.start.<locals>.<genexpr>  s     A)@AQ)@s   -r   rM   exitpriority)r  r   r   r   rb   	TypeErrorr   Piper
  ProcessrV   _run_serverr  r  r  r  _processr   	_identityr<   re   r   r   rI   r   r
   Finalize_finalize_managerr	  rn   )r.   initializerinitargsreaderwriterr   s         r   r   BaseManager.start  sh    {{  EMM111"8K+@+@<== $6 		)):))..$--""FC * 

 A)@)@AA!$Z0036> 	 "MM$t*..--++t||-	
r   c                     Ub  U" U6   U R                  XX45      nUR                  UR                  5        UR                  5         [        R
                  " SUR                  5        UR                  5         g)z0
Create a server, report its address and run it
Nzmanager serving at %r)_ServerrH   r+   r   r
   r   r   )	clsr~   r+   r   r   r/  r,  r-  servers	            r   r'  BaseManager._run_server  s`     "" XD 	FNN# 			)6>>:r   c                 N   U R                   R                  [        R                  :X  d   S5       eU R	                  U R
                  U R                  S9n [        USSU4U-   U5      u  pVUR                  5         [        XR
                  U5      U4$ ! UR                  5         f = f)z@
Create a new shared object; return the token and exposed tuple
zserver not yet startedr  Nro   )
r  r   r   r   r	  r  r  rQ   r   r   )r.   r*   rM   rN   r   r,   r   s          r   _createBaseManager._create  s     {{  EMM1K3KK1||DMM4==|A	"4x$*9t#3T;KB JJLV]]B/88 JJLs   B B$c                     U R                   bC  U R                   R                  U5        U R                   R                  5       (       d  SU l         ggg)z3
Join the manager process (if it has been spawned)
N)r(  r   is_aliver.   timeouts     r   r   BaseManager.join(  sD     ==$MMw'==))++ $ , %r   c                     U R                  U R                  U R                  S9n [        USS5      UR	                  5         $ ! UR	                  5         f = f)zC
Return some info about the servers shared objects and connections
r  Nrr   r	  r  r  rQ   r   r.   r   s     r   _debug_infoBaseManager._debug_info1  sB     ||DMM4==|A	D$5JJLDJJL   A Ac                     U R                  U R                  U R                  S9n [        USS5      UR	                  5         $ ! UR	                  5         f = f)z%
Return the number of shared objects
r  Nrs   r?  r@  s     r   _number_of_objectsBaseManager._number_of_objects;  sC     ||DMM4==|A	D$(;<JJLDJJLrC  c                     U R                   R                  [        R                  :X  a  U R	                  5         U R                   R                  [        R
                  :X  d   eU $ r   )r  r   r   r   r   r   r2   s    r   	__enter__BaseManager.__enter__E  sB    ;;-JJL{{  EMM111r   c                 $    U R                  5         g r   )rn   r.   exc_typeexc_valexc_tbs       r   __exit__BaseManager.__exit__K  s    r   c                    U R                   " 5       (       a  [        R                  " S5         U" XS9n [        USS5        UR	                  5         U R                  " SS9  U R                   " 5       (       a  [        R                  " S5        [        U S5      (       ac  [        R                  " S	5        U R                  " 5         U R                  " S
S9  U R                   " 5       (       a  [        R                  " S5        [        R                  Ul         [        R                  U	 g! UR	                  5         f = f! [
         a     Nf = f! [         a     gf = f)zA
Shutdown the manager process; will be registered as a finalizer
z#sending shutdown message to managerr  Nrn   g      ?)r<  zmanager still alive	terminatez'trying to `terminate()` manager processg?z#manager still alive after terminate)r:  r
   r   rQ   r   r   r   hasattrrR  r   r   r   r   _address_to_localKeyError)r   r+   r   r6   r	  r   s         r   r+  BaseManager._finalize_managerN  s   
 II;<w8!T44JJL LL%!!		/07K00IIGH%%'LL-''))		"GHnn	++G4! JJL    		s:   D? D* D? E *D<<D? ?
EE
EEc                     U R                   $ r   )r  r2   s    r   <lambda>BaseManager.<lambda>n  s    DMMr   c                   ^^ SU R                   ;  a  U R                  R                  5       U l        Tc  [        mU=(       d    [	        TSS5      nU=(       d    [	        TSS5      nU(       aQ  UR                  5        H=  u  px[        U5      [        L d
   SU-  5       e[        U5      [        L a  M5   SU-  5       e   X$UT4U R                  T'   U(       a  UU4S jn	TU	l        [        U TU	5        gg)z)
Register a typeid with the manager type
r  N	_exposed__method_to_typeid_z%r is not a stringc                   > [         R                  " ST5        U R                  " T/UQ70 UD6u  p4T" X0R                  U U R                  US9nU R                  UR                  U R                  S9n[        US SUR                  45        U$ )Nz)requesting creation of a shared %r objectmanagerr   r   r  rv   )	r
   r   r7  r  r  r	  r+   rQ   r,   )	r.   rM   rN   r   expproxyr   r   r*   s	          r   rd   "BaseManager.register.<locals>.temp  s    

FO!\\&@4@4@
!++T MM3 ||EMM4==|ItX{;r   )
__dict__r  copy	AutoProxyra   r   rV   rW   r<   setattr)
r3  r*   rb   r   r   r   create_methodkeyr   rd   s
    ` `      r   registerBaseManager.registerp  s     cll*MM..0CM!IBWYTB  ;I3T: 	
 .446
CyC'C)=)CC'E{c)G+?%+GG) 7
 /!
f 	 #DMC& r   )	r	  r  r  r  r
  r(  r  r  rn   )NNr   Nr{   r   )NNNNT)r<   r?   r@   rA   rB   r  rl   r2  r/   r  r  r  r   classmethodr'  r7  r   rA  rE  rH  rO  staticmethodr+  propertyr+   ri  rD   rE   r   r   r   r     s     IG>F
)B7*"
H /1 &9%  > 12GEI6:'' ''r   r   c                        \ rS rSrS rS rSrg)ProcessLocalSeti  c                 4    [         R                  " U S 5        g )Nc                 "    U R                  5       $ r   )clearr$   s    r   rX  *ProcessLocalSet.__init__.<locals>.<lambda>  s
    399;r   )r
   register_after_forkr2   s    r   r/   ProcessLocalSet.__init__  s      '>?r   c                     [        U 5      S4$ r{   )rV   r2   s    r   r  ProcessLocalSet.__reduce__  s    Dz2~r   rE   N)r<   r?   r@   rA   r/   r  rD   rE   r   r   ro  ro    s    @r   ro  c                       \ rS rSrSr0 r\R                  " 5       r  SS jr	S r
S0 4S jrS rS	 r\S
 5       rS rS rS rS rS rSrg)r   i  z&
A base for proxies of shared objects
Nc                     [         R                     [         R                  R                  UR                  S 5      nUc<  [
        R                  " 5       [        5       4nU[         R                  UR                  '   S S S 5        WS   U l        US   U l	        Xl
        U R                  R                  U l        X0l        X l        [        U   S   U l        Ub  ["        R$                  " U5      U l        OMU R                  b  U R                  R&                  U l        O$["        R(                  " 5       R*                  U l        U(       a  U R-                  5         [
        R.                  " U [         R0                  5        g ! , (       d  f       GN
= f)Nr   r   )r   _mutexrT  r   r+   r
   ForkAwareLocalro  _tls_idset_tokenr,   _id_managerr  r   r	  r   r   r  r   r   _increfrt  _after_fork)r.   r   r   r_  r   r   ru   	tls_idsets           r   r/   BaseProxy.__init__  s   !3377tLI  //1?3DD	=F	++EMM:	  aL	
  l;;>>%&z215#88ADM]]& MM22DM#335==DMLLN  y'<'<=? s   A*E>>
Fc                    [         R                  " S5        [        R                  " 5       R                  n[
        R                  " 5       R                  S:w  a%  US[
        R                  " 5       R                  -   -  nU R                  U R                  R                  U R                  S9n[        US SU45        X R                  l        g )Nzmaking connection to manager
MainThread|r  rp   )r
   r   r   r   re   r   r   r	  r~  r+   r  rQ   r|  r   )r.   re   r   s      r   _connectBaseProxy._connect  s    

12&&(--##%**l:C)2249999D||DKK//|Gt04':#		r   rE   c                     U R                   R                  nUR                  U R                  XU45        UR                  5       u  pVUS:X  a  U$ US:X  a  Uu  pxU R                  R                  UR                     S   n	U R                  R                   Ul        U	" XR"                  U R                  U R$                  US9n
U R'                  UR                   U R$                  S9n[)        USSUR*                  45        U
$ [-        XV5      e! [         a^    [        R                  " S[
        R                  " 5       R                  5        U R                  5         U R                   R                  n GN[f = f)	zG
Try to call a method of the referrent and return a copy of the result
z#thread %r does not own a connectionrG   r   r^  r  Nrv   )r|  r   r   r
   r   r   r   re   r  rH   r  rI   r  r  r*   r~  r+   r  r  r	  rQ   r,   rJ   )r.   rL   rM   rN   r   rO   rP   r   r   r   ra  s              r   _callmethodBaseProxy._callmethod  s2   	(99''D 			488Zt45yy{9MX#NG//=bAI KK//EM''wE <<t}}<EDT4EHH;7Lt,,-  	(JJ< //1668MMO99''D		(s   D A$E43E4c                 $    U R                  S5      $ )z)
Get a copy of the value of the referent
r   r  r2   s    r   	_getvalueBaseProxy._getvalue  s     ,,r   c           
      H   U R                  U R                  R                  U R                  S9n[	        US SU R
                  45        [        R                  " SU R                  R                  5        U R                  R                  U R
                  5        U R                  =(       a    U R                  R                  n[        R                  " U [        R                  U R                  U R                  UU R                   U R                  U R                   4SS9U l        g )Nr  ru   z	INCREF %r
   r"  )r	  r~  r+   r  rQ   r  r
   r   r,   r}  addr  r  r*  r   _decrefr|  _close)r.   r   r6   s      r   r  BaseProxy._incref  s    ||DKK//|GtX{3

;/!6$--"6"6mm)##++t}}e))T[[$,,8	
r   c                    UR                  U R                  5        Ub  UR                  [        R                  :X  aM   [
        R                  " SU R                  5        U" U R                  US9n[        US SU R                  45        O![
        R                  " SU R                  5        U(       dc  [        US5      (       aQ  [
        R                  " S[        R                  " 5       R                  5        UR                  R                  5         U?g g g ! [         a!  n[
        R                  " SU5         S nANS nAff = f)Nz	DECREF %rr  rv   z... decref failed %sz%DECREF %r -- manager already shutdownr   z-thread %r has no more proxies so closing conn)discardr,   r   r   r   r
   r   r+   rQ   r   rS  r   r   re   r   r   )r   r   r6   tlsidsetr	  r   r   s           r   r  BaseProxy._decref  s    ehh =EKK5==88

;1u}}g>tX{;
 JJ>I l33JJF //1668NN  "	 4u  8

13778s   AD 
E D<<Ec                     S U l          U R                  5         g ! [         a!  n[        R                  " SU5         S nAg S nAff = f)Nzincref failed: %s)r  r  r   r
   r   )r.   r   s     r   r  BaseProxy._after_fork,  s9    	0LLN 	0II)3//	0s    
AA  Ac                 ,   0 n[         R                  " 5       b  U R                  US'   [        U SS5      (       a3  U R                  US'   [
        [        U R                  U R                  U44$ [
        [        U 5      U R                  U R                  U44$ )Nr   _isautoFr   )
r   get_spawning_popenr  ra   r[  RebuildProxyre  r~  r  rV   r.   rN   s     r   r  BaseProxy.__reduce__4  s    %%'3"mmDO4E**"nnDO T-=-=tDF F !$Zd.>.>EG Gr   c                 "    U R                  5       $ r   )r  )r.   memos     r   __deepcopy__BaseProxy.__deepcopy__A  s    ~~r   c                 r    S[        U 5      R                  U R                  R                  [	        U 5      4-  $ )Nz<%s object, typeid %r at %#x>)rV   r<   r~  r*   r,   r2   s    r   r=   BaseProxy.__repr__D  s3    .T
##T[[%7%7DBC 	Cr   c                 h     U R                  S5      $ ! [         a    [        U 5      SS S-   s $ f = f)zF
Return representation of the referent (or a fall-back if that fails)
r=   Nr  z; '__str__()' failed>)r  r   r   r2   s    r   r]   BaseProxy.__str__H  s=    	=##J// 	=:cr?%<<<	=s    11)	r	  r  r  r  r}  r  r  r|  r~  NNNT)r<   r?   r@   rA   rB   rT  r
   ForkAwareThreadLockrz  r/   r  r  r  r  rl  r  r  r  r  r=   r]   rD   rE   r   r   r   r     ss     %%'F2648!>F$ ,.B -<-
   00G C=r   r   c                 N   [        [        R                  " 5       SS5      nU(       a6  UR                  UR                  :X  a  UR                  UR
                     S   $ UR                  SS5      =(       a%    [        [        R                  " 5       SS5      (       + nU " X4SU0UD6$ )zv
Function used for unpickling proxy objects.

If possible the shared object is returned, or otherwise a proxy for it.
r   Nr   ru   T_inheritingF)ra   r   r   r+   r   r,   pop)rf   r   r   rN   r4  ru   s         r   r  r  V  s     W,,.0A4HF&..EMM1)!,, HHXt$ I//1=%HH 	 E=f===r   c                     [        U5      n X U4   $ ! [         a     Of = f0 nU H  n[        SU< SU< S3U5        M     [        U [        4U5      nXl        XRX4'   U$ )z;
Return an proxy type whose methods are given by `exposed`
zdef z7(self, *args, **kwds):
        return self._callmethod(z, args, kwds))r   rU  execrV   r   r[  )re   r   _cachedicmeth	ProxyTypes         r   MakeProxyTyper  l  s     GnGWo&&  C6:DBCF	H  TI<-I!'D?s    
  c                 h   [         U   S   nUc1  U" U R                  US9n [        USSU 45      nUR                  5         Uc  Ub  UR                  nUc  [
        R                  " 5       R                  n[        SU R                  -  U5      nU" XX#US9n	SU	l
        U	$ ! UR                  5         f = f)z"
Return an auto-proxy for `token`
r   Nr  rq   zAutoProxy[%s])r_  r   ru   T)r   r+   rQ   r   r  r   r   r   r  r*   r  )
r   r   r_  r   r   ru   r	  r   r  ra  s
             r   re  re    s    
 j)!,Gu}}g6	tT=5(CGJJL7.""))+33o<gFIe#%EEML JJLs   B B1c                        \ rS rSrS rS rSrg)	Namespacei  c                 :    U R                   R                  U5        g r   )rc  updater  s     r   r/   Namespace.__init__  s    T"r   c                 <   [        U R                  R                  5       5      n/ nU H5  u  p4UR                  S5      (       a  M  UR	                  U< SU< 35        M7     UR                  5         U R                  R                  < SSR                  U5      < S3$ )Nri   =(, r:   )	r#   rc  r   
startswithrc   r   r;   r<   r   )r.   _itemsrd   re   r   s        r   r=   Namespace.__repr__  sr    dmm))+,!KD??3''tU34 " 			>>22DIIdODDr   rE   N)r<   r?   r@   rA   r/   r=   rD   rE   r   r   r  r    s    #Er   r  c                   B    \ rS rSrSS jrS rS rS r\" \\5      r	Sr
g)	Valuei  c                     Xl         X l        g r   	_typecode_value)r.   r   r   locks       r   r/   Value.__init__  s    !r   c                     U R                   $ r   r  r2   s    r   r   	Value.get  s    {{r   c                     Xl         g r   r  r.   r   s     r   r   	Value.set  s    r   c                 l    [        U 5      R                  < SU R                  < SU R                  < S3$ )Nr  r  r:   )rV   r<   r  r  r2   s    r   r=   Value.__repr__  s&    #Dz22#~~t{{< 	<r   r  NT)r<   r?   r@   rA   r/   r   r   r=   rm  r   rD   rE   r   r   r  r    s$    < S#Er   r  c                 .    [         R                   " X5      $ r   )r   )r   sequencer  s      r   Arrayr    s    ;;x**r   c                   h    \ rS rSr\R
                  S   S:X  a  SrOSrS rS r	S r
S	 rS
 rS rSrg)IteratorProxyi  r   r   )__next__rH   throwr   )r  nextrH   r  r   c                 &    U R                  SU5      $ )Nr  r  r.   rM   s     r   r  IteratorProxy.next  s    ##FD11r   c                     U $ r   rE   r2   s    r   __iter__IteratorProxy.__iter__      r   c                 &    U R                  SU5      $ )Nr  r  r  s     r   r  IteratorProxy.__next__  s    
D11r   c                 &    U R                  SU5      $ )NrH   r  r  s     r   rH   IteratorProxy.send  s    --r   c                 &    U R                  SU5      $ )Nr  r  r  s     r   r  IteratorProxy.throw      ..r   c                 &    U R                  SU5      $ )Nr   r  r  s     r   r   IteratorProxy.close  r  r   rE   N)r<   r?   r@   rA   r   version_info_exposedr[  r  r  r  rH   r  r   rD   rE   r   r   r  r    s=    
a9B		22.//r   r  c                   4    \ rS rSrSrS	S jrS rS rS rSr	g)
AcquirerProxyi  )acquirereleaseNc                 8    Uc  U4OX4nU R                  SU5      $ Nr  r  )r.   blockingr<  rM   s       r   r  AcquirerProxy.acquire  s%    &|X4G	400r   c                 $    U R                  S5      $ Nr  r  r2   s    r   r  AcquirerProxy.release      	**r   c                 $    U R                  S5      $ r  r  r2   s    r   rH  AcquirerProxy.__enter__  r  r   c                 $    U R                  S5      $ r  r  rK  s       r   rO  AcquirerProxy.__exit__  r  r   rE   )TN)
r<   r?   r@   rA   r[  r  r  rH  rO  rD   rE   r   r   r  r    s    &I1+++r   r  c                   8    \ rS rSrSrS	S jrS rS rS	S jrSr	g)
ConditionProxyi  )r  r  r   notify
notify_allNc                 (    U R                  SU45      $ Nr   r  r;  s     r   r   ConditionProxy.wait      
33r   c                 $    U R                  S5      $ )Nr  r  r2   s    r   r  ConditionProxy.notify      ))r   c                 $    U R                  S5      $ )Nr  r  r2   s    r   r  ConditionProxy.notify_all  s    --r   c                     U" 5       nU(       a  U$ Ub  [        5       U-   nOS nS nU(       d:  Ub  U[        5       -
  nUS::  a   U$ U R                  W5        U" 5       nU(       d  M:  U$ )Nr   )r   r   )r.   	predicater<  rP   endtimewaittimes         r   wait_forConditionProxy.wait_for  sv    MkG+GGH""Y[0q=  IIh[F & r   rE   r   )
r<   r?   r@   rA   r[  r   r  r  r  rD   rE   r   r   r  r    s    FI4*.r   r  c                   4    \ rS rSrSrS rS rS rS	S jrSr	g)

EventProxyi  )r   r   rr  r   c                 $    U R                  S5      $ )Nr   r  r2   s    r   r   EventProxy.is_set  r  r   c                 $    U R                  S5      $ Nr   r  r2   s    r   r   EventProxy.set      &&r   c                 $    U R                  S5      $ )Nrr  r  r2   s    r   rr  EventProxy.clear      ((r   Nc                 (    U R                  SU45      $ r  r  r;  s     r   r   EventProxy.wait  r  r   rE   r   )
r<   r?   r@   rA   r[  r   r   rr  r   rD   rE   r   r   r  r    s    2I*')4r   r  c                   ^    \ rS rSrSrSS jrS rS r\S 5       r	\S 5       r
\S	 5       rS
rg)BarrierProxyi"  )__getattribute__r   abortresetNc                 (    U R                  SU45      $ r  r  r;  s     r   r   BarrierProxy.wait%  s    44r   c                 $    U R                  S5      $ )Nr$  r  r2   s    r   r$  BarrierProxy.abort(  r  r   c                 $    U R                  S5      $ )Nr%  r  r2   s    r   r%  BarrierProxy.reset+  r  r   c                 &    U R                  SS5      $ )Nr#  )partiesr  r2   s    r   r-  BarrierProxy.parties.  s     2MBBr   c                 &    U R                  SS5      $ )Nr#  )	n_waitingr  r2   s    r   r0  BarrierProxy.n_waiting2  s     2ODDr   c                 &    U R                  SS5      $ )Nr#  )brokenr  r2   s    r   r3  BarrierProxy.broken6  s     2LAAr   rE   r   )r<   r?   r@   rA   r[  r   r$  r%  rm  r-  r0  r3  rD   rE   r   r   r"  r"  "  sX    >I5)) C C E E B Br   r"  c                   *    \ rS rSrSrS rS rS rSrg)NamespaceProxyi;  )r#  __setattr____delattr__c                 ~    US   S:X  a  [         R                  X5      $ [         R                  U S5      nU" SU45      $ )Nr   ri   r  r#  )objectr#  r.   rh  
callmethods      r   __getattr__NamespaceProxy.__getattr__>  s@    q6S=**455,,T=A
,sf55r   c                     US   S:X  a  [         R                  XU5      $ [         R                  U S5      nU" SX45      $ )Nr   ri   r  r7  )r:  r7  r#  )r.   rh  r   r<  s       r   r7  NamespaceProxy.__setattr__D  sA    q6S=%%d77,,T=A
-#66r   c                 ~    US   S:X  a  [         R                  X5      $ [         R                  U S5      nU" SU45      $ )Nr   ri   r  r8  )r:  r8  r#  r;  s      r   r8  NamespaceProxy.__delattr__J  s?    q6S=%%d00,,T=A
-#00r   rE   N)	r<   r?   r@   rA   r[  r=  r7  r8  rD   rE   r   r   r6  r6  ;  s    BI671r   r6  c                   6    \ rS rSrSrS rS r\" \\5      rSr	g)
ValueProxyiQ  )r   r   c                 $    U R                  S5      $ )Nr   r  r2   s    r   r   ValueProxy.getT  r  r   c                 (    U R                  SU45      $ r  r  r  s     r   r   ValueProxy.setW  s    x00r   rE   N)
r<   r?   r@   rA   r[  r   r   rm  r   rD   rE   r   r   rD  rD  Q  s    I'1S#Er   rD  )__add____contains____delitem____getitem____len____mul____reversed____rmul____setitem__rc   countextendindexinsertr  removereverser   __imul__)__getslice____setslice____delslice__BaseListProxyc                        \ rS rSrS rS rSrg)	ListProxyig  c                 ,    U R                  SU45        U $ )NrS  r  r  s     r   __iadd__ListProxy.__iadd__i  s    E8,r   c                 ,    U R                  SU45        U $ )NrX  r  r  s     r   rX  ListProxy.__imul__m  s    eX.r   rE   N)r<   r?   r@   rA   r`  rX  rD   rE   r   r   r^  r^  g  s    r   r^  	DictProxy)rJ  rK  rL  rM  rQ  rr  rd  r   has_keyr   r    r  popitem
setdefaultr  r!   )rM  rL  rQ  )rY  rZ  
ArrayProxy	PoolProxy)applyapply_asyncr   imapimap_unorderedr   map	map_asyncstarmapstarmap_asyncrR  AsyncResultIterator)rk  ro  rq  rl  rm  c                        \ rS rSrS rS rSrg)ri  i  c                     U $ r   rE   r2   s    r   rH  PoolProxy.__enter__  r  r   c                 $    U R                  5         g r   )rR  )r.   exc_infos     r   rO  PoolProxy.__exit__  s    r   rE   N)r<   r?   r@   rA   rH  rO  rD   rE   r   r   ri  ri    s    r   c                       \ rS rSrSrSrg)r   i  a	  
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 `billiard.Manager()` function creates started instances of
this class.
rE   N)r<   r?   r@   rA   rB   rD   rE   r   r   r   r     s    r   r   r   JoinableQueuer   Lockr   	SemaphoreBoundedSemaphore	ConditionBarrierPoolr#   r   r  F)r   rg  )rg  r  r  )Or   r   r   r   r    r   r   r   r   r	   r
   r   queuer   timer   __all__r  PY3r   ri  rV   ra   
view_typesr#   r&   	view_typer   rQ   rJ   r   rX   rg   rj   rl   r   r   r   XmlListener	XmlClientr   r   r   ro  r   r  r  re  r  r  r  r  r  r  r  r"  r6  rD  _ListProxy_Attributesr\  r^  rd  _ArrayProxy_Attributesrh  BasePoolProxyr\  ri  r   r   r|  r   r}  r~  r  rS  r  r  r   )re   s   0r   <module>r     s                
>	qQ 67 	  5;; - 675$ 72t$&'57
a=#	9o6  J J0 &(b )
7G) G	APA PAn  ""J$5$56((**>*>?]' ]'Hc c= c=T>, )+ , 8<#'<E E $+/I /2+I +"] >4 4 B9 B21Y 1,   MMo/DE  + ( 	  >><)?@
 k , 
 !" $   	+ 	   We $   _e ,   Wiooz :   VY^^] ;   Wioo} =   [)"5"5} E   ')C)C"$   [)"5"5~ F
9i  I$5$5|D   VTYY	 2   VT9 -   VT9 -   WeZ 0   WeZ 0   [)^ <   Z=  N   ]%  8S$7s   O