
    ⾙h              
          d dl Z d dlZd dlZd dlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 dd	lmZ dd
lmZ d dlmZ d dlmZ g dZe j$                  d    dk(  Zerd Znd Z e
j*                  ej                  e       dD  cg c]  }  e  ei |                     c} Zed    eurd ZeD ]  Z e
j*                  ee         G d d      Zdi fdZd Z G d de      Z d Z!d Z" G d d      Z# G d d      Z$ejJ                  ejL                  fejN                  ejP                  fd Z) G d! d"      Z* G d# d$e+      Z, G d% d&      Z-d' Z.i fd(Z/	 	 d_d)Z0 G d* d+      Z1 G d, d-      Z2d`d.Z3 G d/ d0e-      Z4 G d1 d2e-      Z5 G d3 d4e5      Z6 G d5 d6e-      Z7 G d7 d8e-      Z8 G d9 d:e-      Z9 G d; d<e-      Z:d=Z;ese;d>z  Z; e/d?e;      Z< G d@ dAe<      Z= e/dBdC      Z>dDZ?ese?dEz  Z? e/dFe?      Z@ e/dGdH      ZAdIdIdIdJdJdKeA_B         G dL dGeA      ZC G dM dNe*      ZDeDj+                  dOe       eDj+                  dPe       eDj+                  dQej                  e7       eDj+                  dRej                  e5       eDj+                  dSej                  e5       eDj+                  dTej                  e5       eDj+                  dUej                  e5       eDj+                  dVej                  e6        eKedW      reDj+                  dWej                  e8       eDj+                  dXej                  eC       eDj+                  dYee=       eDj+                  dZeNe>       eDj+                  d-e2e:       eDj+                  d[e3e@       eDj+                  d+e1e9       eDj+                  dJe4d\]       eDj+                  dId\^       yc c} w )a    N)
format_exc   )
connection)context)pool)process)	reduction)util)get_context)Queue)	monotonic)BaseManagerSyncManager	BaseProxyToken   c                 Z    t         j                   | j                  | j                         ffS N)arraytypecodetobytesas    M/var/www/Befach/backend/env/lib/python3.12/site-packages/billiard/managers.pyreduce_arrayr   *   s     {{QZZ555    c                 Z    t         j                   | j                  | j                         ffS r   )r   r   tostringr   s    r   r   r   -   s     {{QZZ666r   )itemskeysvaluesc                 &    t         t        |       ffS r   )listobjs    r   rebuild_as_listr&   5   s    d3i]""r   c                   ,    e Zd ZdZdZd Zd Zd Zd Zy)r   z3
    Type to uniquely identify a shared object
    typeidaddressidc                 0    |||c| _         | _        | _        y r   r(   )selfr)   r*   r+   s       r   __init__zToken.__init__E   s    06,dlDGr   c                 H    | j                   | j                  | j                  fS r   r(   r-   s    r   __getstate__zToken.__getstate__H   s    T\\47733r   c                 .    |\  | _         | _        | _        y r   r(   )r-   states     r   __setstate__zToken.__setstate__K   s    /4,dlDGr   c                     | j                   j                  d| j                  d| j                  d| j                  dS )Nz(typeid=z
, address=z, id=))	__class____name__r)   r*   r+   r0   s    r   __repr__zToken.__repr__N   s-    ^^$$dkk4<<J 	Jr   N)	r8   
__module____qualname____doc__	__slots__r.   r1   r4   r9    r   r   r   r   ?   s$     ,IE45Jr   r   r>   c                 x    | j                  ||||f       | j                         \  }}|dk(  r|S t        ||      )zL
    Send a message to manager using connection `c` and return response
    #RETURN)sendrecvconvert_to_error)cr+   
methodnameargskwdskindresults          r   dispatchrJ   W   sB     FFB
D$'(668LD&y
4
((r   c                     | dk(  r|S | dk(  rt        |      t        u sJ t        |      S | dk(  r!t        |      t        u sJ t        d|z        S t        d      S )N#ERROR
#TRACEBACK#UNSERIALIZABLEzUnserializable message: %s
zUnrecognized message type)typestrRemoteError
ValueError)rH   rI   s     r   rC   rC   b   sl    x		F|s"""6""	"	"F|s"""9FBCC566r   c                       e Zd Zd Zy)rQ   c                 >    dt        | j                  d         z   dz   S )NzM
---------------------------------------------------------------------------
r   zK---------------------------------------------------------------------------)rP   rF   r0   s    r   __str__zRemoteError.__str__q   s    &TYYq\)::XEFr   N)r8   r:   r;   rU   r>   r   r   rQ   rQ   o   s    Gr   rQ   c                 |    g }t        |       D ]+  }t        | |      }t        |      s|j                  |       - |S )z4
    Return a list of names of methods of `obj`
    )dirgetattrcallableappend)r%   tempnamefuncs       r   all_methodsr^   y   s=     DCsD!D>KK  Kr   c                 P    t        |       D cg c]  }|d   dk7  s| c}S c c}w )zP
    Return a list of names of methods of `obj` which do not start with '_'
    r   _)r^   )r%   r\   s     r   public_methodsra      s'     )-@TaCD@@@s   ##c                       e Zd ZdZg dZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zeee
dZd Zd Zd Zd Zd Zd Zd Zd Zd Zy)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decrefc                 (   t        |t              sJ || _        t        j                  |      | _        t        |   \  }} ||d      | _        | j                  j                  | _        ddi| _	        i | _
        t        j                         | _        y )N   )r*   backlog0Nr>   )
isinstancebytesregistryr   AuthenticationStringauthkeylistener_clientlistenerr*   	id_to_objid_to_refcount	threadingRLockmutex)r-   rt   r*   rv   
serializerListenerClients          r   r.   zServer.__init__   s}    '5))) 33G<*:6& !"=}},,z* __&
r   c                    t        j                         | _        | t        j                         _        	 t        j                  | j                        }d|_        |j                          	 | j                  j                         s6| j                  j                  d       | j                  j                         s6t        j                  t        j                   k7  rGt#        j$                  d       t        j                   t        _        t        j&                  t        _        t        j*                  d       y# t        t        f$ r Y w xY w# t        j                  t        j                   k7  rGt#        j$                  d       t        j                   t        _        t        j&                  t        _        t        j*                  d       w xY w)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_foreverzServer.serve_forever   s     $//+48!1	 ''t}}=H"HONN//002OO((+ //002
 zzS^^+

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

56 ^^
 ^^
HHQKs+   7E ,AD: :E	E EE A?Gc                     	 	 | j                   j                         }t        j                  | j
                  |f      }d|_        |j                          U# t        $ r Y aw xY w)NTr   rF   )rx   acceptOSErrorr{   r   handle_requestr   r   )r-   rD   ts      r   r   zServer.accepter   sa    MM((*   (;(;1%HAAHGGI   s   A 	A#"A#c                    dx}x}}	 t        j                  || j                         t        j                  || j                         |j	                         }|\  }}}}|| j
                  v s
J d|z         t        | |      }	  ||g|i |}d|f}		 |j                  |	       |j                          y# t        $ r dt               f}	Y :w xY w# t        $ r dt               f}	Y Uw xY w# t        $ rx}
	 |j                  dt               f       n# t        $ r Y nw xY wt        j                  d|	       t        j                  d|       t        j                  d|
       Y d}
~
d}
~
ww xY w)z)
        Handle a new connection
        Nz%r unrecognizedr@   rM   zFailure to send message: %rz ... request was %r ... exception was %r)r   deliver_challengerv   answer_challengerB   publicrX   	Exceptionr   rA   r
   infoclose)r-   rD   funcnamerI   requestignorerF   rG   r]   msgexcs              r   r   zServer.handle_request   sf    '+**6G	*((DLL9''4<<8ffhG+2(FHdDt{{*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[   A;C B7 C- 7CCC*)C*-	E.7DE)	DE)DAE))E.c                    t        j                  dt        j                         j                         |j
                  }|j                  }| j                  }| j                  j                         s	 dx}} |       }|\  }}}	}
||   \  }}}||vrt        d|dt        |      d|      t        ||      }	  ||	i |
}|xr |j                  |d      }|r4| j                  |||      \  }}t        || j                   |      }d||ff}nd|f}	 	 	  |       | j                  j                         syy# t"        $ r}d|f}Y d}~9d}~ww xY w# t        $ rQ d	t%               f}n?	 | j&                  |   } || |g	i 
}d|f}n# t"        $ r d	t%               f}Y nw xY wY t(        $ rJ t        j                  d
t        j                         j                         t+        j,                  d       Y t"        $ r d	t%               f}Y w xY w# t"        $ r  |dt/              f       Y w xY w# t"        $ r}t        j0                  dt        j                         j                         t        j0                  d       t        j0                  d|       |j3                          t+        j,                  d       Y d}~d}~ww xY w)zQ
        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=#PROXYr@   rL   rM   z$got EOF -- exiting thread serving %rr   rN   zexception in thread serving %rz ... message was %rr   r   )r
   r   r{   current_threadr\   rB   rA   ry   r   r   AttributeErrorrO   rX   getre   r   r*   r   r   fallback_mappingEOFErrorr   r   reprr   r   )r-   connrB   rA   ry   rE   r%   r   identrF   rG   exposed	gettypeidfunctionresr)   ridentrexposedtokenr   r   fallback_funcrI   s                          r   serve_clientzServer.serve_client   s    	

9++-22	4 yyyyNN	//((*.3#''
S&07-z4*3E*:'WiW,(&S	7< 
 #3
3/"D1D1C 'J9==T+JF+/;;tVS+I( %fdllF 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   2AE ;D; AE H ;	EEE EE H."FHF)&H(F))H.AH?HHH:6H= 9H::H= =	KBKKc                     |S r   r>   r-   r   r   r%   s       r   fallback_getvaluezServer.fallback_getvalue1  s    
r   c                     t        |      S r   rP   r   s       r   fallback_strzServer.fallback_str4  s    3xr   c                     t        |      S r   )r   r   s       r   fallback_reprzServer.fallback_repr7  s    Cyr   )rU   r9   	#GETVALUEc                      y r   r>   r-   rD   s     r   rj   zServer.dummy@  s    r   c                 r   | j                   5  g }t        | j                  j                               }|j	                          |D ]K  }|dk7  s	|j                  d|d| j                  |   dt        | j                  |   d         dd        M dj                  |      cddd       S # 1 sw Y   yxY w)	zO
        Return some info --- useful to spot problems with refcounting
        rp   z  z:       refcount=z
    r   NK   
)	r}   r#   ry   r    sortrZ   rz   rP   join)r-   rD   rI   r    r   s        r   rh   zServer.debug_infoC  s     ZZ 		%F++-.DIIKC<MM#($*=*=e*D#&t~~e'<Q'?#@"#E#G H 
 99V$		% 		% 		%s   A B-AB--B6c                 2    t        | j                        dz
  S )z*
        Number of shared objects
        r   )lenry   r   s     r   ri   zServer.number_of_objectsR  s     4>>"Q&&r   c                     	 t        j                  d       |j                  d       | j
                  j                          y#  ddl}|j	                          Y 3xY w# | j
                  j                          w xY w)z'
        Shutdown this process
        z!Manager received shutdown messager@   Nr   N)r
   r   rA   	traceback	print_excr   set)r-   rD   r   s      r   rd   zServer.shutdownX  sZ    	"JJ:;FF$%
 OO!		"!OO!s   &A AA A:c                    | j                   5  | j                  |   \  }}}}|t        |      dk(  r|rJ |d   }	n ||i |}	|t        |	      }|*t	        |      t
        u sJ t        |      t        |      z   }dt        |	      z  }
t        j                  d||
       |	t        |      |f| j                  |
<   |
| j                  vrd| j                  |
<   | j                  ||
       |
t        |      fcddd       S # 1 sw Y   yxY w)z>
        Create a new shared object and return its id
        Nr   r   z%xz&%r callable returned object with id %r)r}   rt   r   ra   rO   dictr#   r+   r
   r   r   ry   rz   rk   tuple)r-   rD   r)   rF   rG   rY   r   method_to_typeid	proxytyper%   r   s              r   re   zServer.createe  s    ZZ 	)f% ;Hg/ 4yA~d221g--(-+,-555w-$/?*@@ 2c7NEJJ?O%(#g,8H$IDNN5!D///-.##E* KK5!%.(;	) 	) 	)s   C+DDc                 L    t        | j                  |j                     d         S )zL
        Return the methods of the shared object indicated by token
        r   )r   ry   r+   )r-   rD   r   s      r   rg   zServer.get_methods  s!     T^^EHH-a011r   c                 z    |t        j                         _        |j                  d       | j	                  |       y)z=
        Spawn a new thread to serve this connection
        r   N)r{   r   r\   rA   r   )r-   rD   r\   s      r   rf   zServer.accept_connection  s0     +/	  "'	 !!r   c                 t    | j                   5  | j                  |xx   dz  cc<   d d d        y # 1 sw Y   y xY w)Nr   )r}   rz   r-   rD   r   s      r   rk   zServer.incref  s4    ZZ 	,&!+&	, 	, 	,s   .7c                     | j                   5  | j                  |   dk\  sJ | j                  |xx   dz  cc<   | j                  |   dk(  r0| j                  |= | j                  |= t        j                  d|       d d d        y # 1 sw Y   y xY w)Nr   r   zdisposing of obj with id %r)r}   rz   ry   r
   r   r   s      r   rl   zServer.decref  s    ZZ 	A&&u-222&!+&""5)Q.NN5)4+>+>u+E

8%@	A 	A 	As   A.BBN)r8   r:   r;   r<   r   r.   r   r   r   r   r   r   r   r   rj   rh   ri   rd   re   rg   rf   rk   rl   r>   r   r   rc   rc      s|    NF', DHT  !&%'"!)F2,Ar   rc   c                       e Zd ZdgZdZdZdZy)Statevaluer   r      N)r8   r:   r;   r=   INITIALSTARTEDSHUTDOWNr>   r   r   r   r     s    	IGGHr   r   )pickle	xmlrpclibc                       e Zd ZdZi ZeZ	 	 ddZd Zd Z	d Z
ddZe	 dd       Zd	 Zdd
Zd Zd Zd Zd Zed        Z ed       Ze	 	 dd       Zy)r   z!
    Base class for managers
    Nc                 B   |t        j                         j                  }|| _        t        j                  |      | _        t               | _        t        j                  | j                  _	        || _
        t        |   \  | _        | _        |xs
 t               | _        y r   )r   r   rv   _addressru   _authkeyr   _stater   r   _serializerrw   	_Listener_Clientr   _ctx)r-   r*   rv   r~   ctxs        r   r.   zBaseManager.__init__  sv    ?--/77G44W=g!MM%'6z'B$(;=	r   c                 r    t        |       j                  | j                  | j                  | j                  ffS r   )rO   from_addressr   r   r   r0   s    r   
__reduce__zBaseManager.__reduce__  s3    T
''t/?/?@B 	Br   c                     | j                   j                  t        j                  k(  sJ t	        | j
                  | j                  | j                  | j                        S )zX
        Return server object with serve_forever() method and address attribute
        )	r   r   r   r   rc   	_registryr   r   r   r0   s    r   
get_serverzBaseManager.get_server  sH     {{  EMM111dnndmmmmT%5%57 	7r   c                     t         | j                     \  }} || j                  | j                        }t	        |dd       t
        j                  | j                  _        y)z>
        Connect manager object to the server process
        rv   Nrj   )	rw   r   r   r   rJ   r   r   r   r   )r-   r   r   r   s       r   connectzBaseManager.connect  sI     +4+;+;<&dmmT]];tW%!MMr   c           
         | j                   j                  t        j                  k(  sJ |t	        |      st        d      t        j                  d      \  }}| j                  j                  t        |       j                  | j                  | j                  | j                  | j                  |||f      | _        dj#                  d | j                   j$                  D              }t        |       j&                  dz   |z   | j                   _        | j                   j+                          |j-                          |j/                         | _        |j-                          t        j0                  | j                   _        t3        j4                  | t        |       j6                  | j                   | j                  | j                  | j                   | j8                  fd	
      | _        y)z@
        Spawn a server process for this manager object
        Nzinitializer must be a callableF)duplexr   :c              3   2   K   | ]  }t        |        y wr   r   ).0is     r   	<genexpr>z$BaseManager.start.<locals>.<genexpr>  s     AAQAs   -r   rF   exitpriority)r   r   r   r   rY   	TypeErrorr   Piper   ProcessrO   _run_serverr   r   r   r   _processr   	_identityr8   r\   r   r   rB   r   r
   Finalize_finalize_managerr   rd   )r-   initializerinitargsreaderwriterr   s         r   r   zBaseManager.start  si    {{  EMM111"8K+@<== $6 		)):))..$--""FKC * 

 A)@)@AA!$Z0036> 	 "MM$t*..--++t||-	
r   c                     | ||  | j                  ||||      }|j                  |j                         |j                          t	        j
                  d|j                         |j                          y)z@
        Create a server, report its address and run it
        Nzmanager serving at %r)_ServerrA   r*   r   r
   r   r   )	clsrt   r*   rv   r~   r  r  r  servers	            r   r  zBaseManager._run_server  sd     "" XwD 	FNN# 			)6>>:r   c                 V   | j                   j                  t        j                  k(  sJ d       | j	                  | j
                  | j                        }	 t        |dd|f|z   |      \  }}|j                          t        || j
                  |      |fS # |j                          w xY w)zP
        Create a new shared object; return the token and exposed tuple
        zserver not yet startedr   Nre   )
r   r   r   r   r   r   r   rJ   r   r   )r-   r)   rF   rG   r   r+   r   s          r   _createzBaseManager._create  s     {{  EMM1K3KK1||DMM4==|A	"4x$*9t#3T;KB JJLVT]]B/88 JJLs   B B(c                     | j                   >| j                   j                  |       | j                   j                         sd| _         yyy)zC
        Join the manager process (if it has been spawned)
        N)r  r   is_aliver-   timeouts     r   r   zBaseManager.join(  sA     ==$MMw'==))+ $ , %r   c                     | j                  | j                  | j                        }	 t        |dd      |j	                          S # |j	                          w xY w)zS
        Return some info about the servers shared objects and connections
        r   Nrh   r   r   r   rJ   r   r-   r   s     r   _debug_infozBaseManager._debug_info1  sB     ||DMM4==|A	D$5JJLDJJL   A Ac                     | j                  | j                  | j                        }	 t        |dd      |j	                          S # |j	                          w xY w)z5
        Return the number of shared objects
        r   Nri   r  r  s     r   _number_of_objectszBaseManager._number_of_objects;  sC     ||DMM4==|A	D$(;<JJLDJJLr  c                     | j                   j                  t        j                  k(  r| j	                          | j                   j                  t        j
                  k(  sJ | S r   )r   r   r   r   r   r   r0   s    r   	__enter__zBaseManager.__enter__E  sB    ;;-JJL{{  EMM111r   c                 $    | j                          y r   )rd   r-   exc_typeexc_valexc_tbs       r   __exit__zBaseManager.__exit__K  s    r   c                     | j                          rt        j                  d       	  |||      }	 t        |dd       |j	                          	  | j                  d        | j                          rt        j                  d       t        | d      r_t        j                  d	        | j                           | j                  d
        | j                          rt        j                  d       t        j                  |_        	 t        j                  |= y# |j	                          w xY w# t
        $ r Y w xY w# t        $ r Y yw xY w)zQ
        Shutdown the manager process; will be registered as a finalizer
        z#sending shutdown message to managerr   Nrd   g      ?)r  zmanager still alive	terminatez'trying to `terminate()` manager processg?z#manager still alive after terminate)r  r
   r   rJ   r   r   r   hasattrr*  r   r   r   r   _address_to_localKeyError)r   r*   rv   r3   r   r   s         r   r  zBaseManager._finalize_managerN  s   
 7II;<w8!T44JJL GLL%w!		/07K0IIGH%G%%' GLL-'w'')		"GHnn	++G4! JJL    		s:   
D2 D  D2 E D//D2 2	D>=D>	EEc                     | j                   S r   )r   r0   s    r   <lambda>zBaseManager.<lambda>n  s    DMMr   c                    d| j                   vr| j                  j                         | _        t        |xs t	        dd      }|xs t	        dd      }|rN|j                         D ];  \  }}t        |      t        u s
J d|z         t        |      t        u r3J d|z          |||f| j                  <   |rfd}	|	_        t        | |	       yy)z9
        Register a typeid with the manager type
        r   N	_exposed__method_to_typeid_z%r is not a stringc                 (   t        j                  d        | j                  g|i |\  }} || j                  | | j                  |      }| j                  |j                  | j                        }t        |d d|j                  f       |S )Nz)requesting creation of a shared %r objectmanagerrv   r   r   rl   )	r
   r   r  r   r   r   r*   rJ   r+   )	r-   rF   rG   r   expproxyr   r   r)   s	          r   r[   z"BaseManager.register.<locals>.temp  s    

FO)T\\&@4@4@
s!4++T MM3 ||EMM4==|ItX{;r   )
__dict__r   copy	AutoProxyrX   r   rO   rP   r8   setattr)
r  r)   rY   r   r   r   create_methodkeyr   r[   s
    ` `      r   registerzBaseManager.registerp  s     cll*MM..0CM!IBWYTB  ;I3T: 	
 .446
UCyC'C)=)CC'E{c)G+?%+GG) 7
 g/!
f 	 #DMC& r   )NNr   Nrq   r   )NNNNT)r8   r:   r;   r<   r   rc   r  r.   r   r   r   r   classmethodr  r  r   r  r   r"  r(  staticmethodr  propertyr*   r>  r>   r   r   r   r     s     IG>F
)B7*"
H /1 &9%  > 12GEI6:'' ''r   r   c                       e Zd Zd Zd Zy)ProcessLocalSetc                 2    t        j                  | d        y )Nc                 "    | j                         S r   )clearr$   s    r   r/  z*ProcessLocalSet.__init__.<locals>.<lambda>  s
    399;r   )r
   register_after_forkr0   s    r   r.   zProcessLocalSet.__init__  s      '>?r   c                     t        |       dfS rq   )rO   r0   s    r   r   zProcessLocalSet.__reduce__  s    Dz2~r   N)r8   r:   r;   r.   r   r>   r   r   rC  rC    s    @r   rC  c                       e Zd ZdZi Z ej                         Z	 	 ddZd Z	di fdZ
d Zd Zed	        Zd
 Zd Zd Zd Zd Zy)r   z.
    A base for proxies of shared objects
    Nc                    t         j                  5  t         j                  j                  |j                  d       }|;t        j                         t               f}|t         j                  |j                  <   d d d        d   | _        |d   | _	        || _
        | j                  j                  | _        || _        || _        t        |   d   | _        |t#        j$                  |      | _        nK| j                  | j                  j&                  | _        n#t#        j(                         j*                  | _        |r| j-                          t        j.                  | t         j0                         y # 1 sw Y   xY w)Nr   r   )r   _mutexr,  r   r*   r
   ForkAwareLocalrC  _tls_idset_tokenr+   _id_managerr   rw   r   r   ru   r   r   rv   _increfrG  _after_fork)r-   r   r~   r5  rv   r   rk   	tls_idsets           r   r.   zBaseProxy.__init__  s+    	G!3377tLI  //1?3DD	=F	++EMM:		G aL	
  l;;>>%&z215#88ADM]]& MM22DM#335==DMLLN  y'<'<=?	G 	Gs   A(E55E>c                    t        j                  d       t        j                         j                  }t        j                         j                  dk7  r$|dt        j                         j                  z   z  }| j                  | j                  j                  | j                        }t        |d d|f       || j                  _        y )Nzmaking connection to manager
MainThread|r   rf   )r
   r   r   r   r\   r{   r   r   rO  r*   r   rJ   rM  r   )r-   r\   r   s      r   _connectzBaseProxy._connect  s    

12&&(--##%**l:C)2249999D||DKK//|Gt04':#		r   r>   c                    	 | j                   j                  }|j                  | j                  |||f       |j                         \  }}|dk(  r|S |dk(  r|\  }}| j                  j                  |j                     d   }	| j                  j                   |_         |	|| j"                  | j                  | j$                  |      }
| j'                  |j                   | j$                        }t)        |dd|j*                  f       |
S t-        ||      # t        $ r\ t        j                  dt        j                         j                         | j                          | j                   j                  }Y aw xY w)	zW
        Try to call a method of the referrent and return a copy of the result
        z#thread %r does not own a connectionr@   r   r4  r   Nrl   )rM  r   r   r
   r   r{   r   r\   rX  rA   rP  rB   rQ  r   r)   rO  r*   r   r   r   rJ   r+   rC   )r-   rE   rF   rG   r   rH   rI   r   r   r   r7  s              r   _callmethodzBaseProxy._callmethod  s<   	(99''D 			488Zt45yy{f9MX#NGU//=bAI KK//EMt''wE <<t}}<EDT4EHH;7LtV,,-  	(JJ< //1668MMO99''D		(s   D A!E:9E:c                 $    | j                  d      S )z9
        Get a copy of the value of the referent
        r   r[  r0   s    r   	_getvaluezBaseProxy._getvalue  s     ,,r   c           
      F   | j                  | j                  j                  | j                        }t	        |d d| j
                  f       t        j                  d| j                  j                         | j                  j                  | j
                         | j                  xr | j                  j                  }t        j                  | t        j                  | j                  | j                  || j                   | j                  | j                   fd      | _        y )Nr   rk   z	INCREF %r
   r  )r   rO  r*   r   rJ   rP  r
   r   r+   rN  addrQ  r   r
  r   _decrefrM  _close)r-   r   r3   s      r   rR  zBaseProxy._incref  s    ||DKK//|GtX{3

;/!6$--"6"6mm)##++t}}e))T[[$,,8	
r   c                 j   |j                  | j                         ||j                  t        j                  k(  rO	 t        j                  d| j                          || j                  |      }t        |d d| j                  f       n t        j                  d| j                         |s\t        |d      rOt        j                  dt        j                         j                         |j                  j                          |`y y y # t        $ r }t        j                  d|       Y d }~d }~ww xY w)Nz	DECREF %rr   rl   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*   rJ   r   r+  r{   r   r\   r   r   )r   rv   r3   tlsidsetr   r   r   s           r   rb  zBaseProxy._decref  s    ehh =EKK5==88

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

13778s   AD	 		D2D--D2c                     d | _         	 | j                          y # t        $ r }t        j                  d|       Y d }~y d }~ww xY w)Nzincref failed: %s)rQ  rR  r   r
   r   )r-   r   s     r   rS  zBaseProxy._after_fork,  s9    	0LLN 	0II)3//	0s    	A>Ac                    i }t        j                         | j                  |d<   t        | dd      r3| j                  |d<   t
        t        | j                  | j                  |ffS t
        t        |       | j                  | j                  |ffS )Nrv   _isautoFr   )
r   get_spawning_popenr   rX   r1  RebuildProxyr:  rO  r   rO   r-   rG   s     r   r   zBaseProxy.__reduce__4  s    %%'3"mmDO4E*"nnDO T-=-=tDF F !$Zd.>.>EG Gr   c                 "    | j                         S r   )r^  )r-   memos     r   __deepcopy__zBaseProxy.__deepcopy__A  s    ~~r   c                 r    dt        |       j                  | j                  j                  t	        |       fz  S )Nz<%s object, typeid %r at %#x>)rO   r8   rO  r)   r+   r0   s    r   r9   zBaseProxy.__repr__D  s3    .T
##T[[%7%7DBC 	Cr   c                 f    	 | j                  d      S # t        $ r t        |       dd dz   cY S w xY w)zV
        Return representation of the referent (or a fall-back if that fails)
        r9   NrZ  z; '__str__()' failed>)r[  r   r   r0   s    r   rU   zBaseProxy.__str__H  s=    	=##J// 	=:cr?%<<<	=s    00NNNT)r8   r:   r;   r<   r,  r
   ForkAwareThreadLockrK  r.   rX  r[  r^  rR  r@  rb  rS  r   rp  r9   rU   r>   r   r   r   r     su     %T%%'F2648!>F$ ,.B -<-
   00G C=r   r   c                 .   t        t        j                         dd      }|r5|j                  |j                  k(  r|j                  |j
                     d   S |j                  dd      xr  t        t        j                         dd       } | ||fd|i|S )z
    Function used for unpickling proxy objects.

    If possible the shared object is returned, or otherwise a proxy for it.
    r   Nr   rk   T_inheritingF)rX   r   r   r*   ry   r+   pop)r]   r   r~   rG   r  rk   s         r   rl  rl  V  s     W,,.0A4HF&..EMM1)!,, HHXt$ I//1=%HH 	 E:=f===r   c                     t        |      }	 || |f   S # t        $ r Y nw xY wi }|D ]  }t        d|d|d|        t        | t        f|      }||_        ||| |f<   |S )zC
    Return an proxy type whose methods are given by `exposed`
    zdef z7(self, *args, **kwds):
        return self._callmethod(z, args, kwds))r   r-  execrO   r   r1  )r\   r   _cachedicmeth	ProxyTypes         r   MakeProxyTyper~  l  s     GnGtWo&&  C6:DBCF	H  TI<-I!I'FD'?s    	  c                 n   t         |   d   }|4 || j                  |      }	 t        |dd| f      }|j                          |||j                  }|t        j                         j                  }t        d| j                  z  |      } || ||||      }	d|	_
        |	S # |j                          w xY w)z*
    Return an auto-proxy for `token`
    r   Nr   rg   zAutoProxy[%s])r5  rv   rk   T)rw   r*   rJ   r   r   r   r   rv   r~  r)   rj  )
r   r~   r5  rv   r   rk   r   r   r}  r7  s
             r   r:  r:    s    
 j)!,Gu}}g6	tT=5(CGJJL7.""))+33o<gFIeZ'#%EEML JJLs   B" "B4c                       e Zd Zd Zd Zy)	Namespacec                 :    | j                   j                  |       y r   )r8  updaterm  s     r   r.   zNamespace.__init__  s    T"r   c                 &   t        | j                  j                               }g }|D ]-  \  }}|j                  d      r|j	                  |d|       / |j                          | j                  j                  ddj                  |      dS )Nr`   =(, r6   )	r#   r8  r   
startswithrZ   r   r7   r8   r   )r-   _itemsr[   r\   r   s        r   r9   zNamespace.__repr__  sq    dmm))+,!KD%??3'tU34 " 			>>22DIIdODDr   N)r8   r:   r;   r.   r9   r>   r   r   r  r    s    #Er   r  c                   8    e Zd ZddZd Zd Zd Z eee      Zy)Valuec                      || _         || _        y r   )	_typecode_value)r-   r   r   locks       r   r.   zValue.__init__  s    !r   c                     | j                   S r   r  r0   s    r   r   z	Value.get  s    {{r   c                     || _         y r   r  r-   r   s     r   r   z	Value.set  s	    r   c                 f    t        |       j                  d| j                  d| j                  dS )Nr  r  r6   )rO   r8   r  r  r0   s    r   r9   zValue.__repr__  s&    #Dz22#~~t{{< 	<r   NT)	r8   r:   r;   r.   r   r   r9   rA  r   r>   r   r   r  r    s$    < S#Er   r  c                 .    t        j                   | |      S r   )r   )r   sequencer  s      r   Arrayr    s    ;;x**r   c                   ^    e Zd Zej                  d   dk(  rdZndZd Zd Zd Z	d Z
d	 Zd
 Zy)IteratorProxyr   r   )__next__rA   throwr   )r  nextrA   r  r   c                 &    | j                  d|      S )Nr  r]  r-   rF   s     r   r  zIteratorProxy.next  s    ##FD11r   c                     | S r   r>   r0   s    r   __iter__zIteratorProxy.__iter__      r   c                 &    | j                  d|      S )Nr  r]  r  s     r   r  zIteratorProxy.__next__  s    
D11r   c                 &    | j                  d|      S )NrA   r]  r  s     r   rA   zIteratorProxy.send  s    --r   c                 &    | j                  d|      S )Nr  r]  r  s     r   r  zIteratorProxy.throw      ..r   c                 &    | j                  d|      S )Nr   r]  r  s     r   r   zIteratorProxy.close  r  r   N)r8   r:   r;   r   version_info_exposedr1  r  r  r  rA   r  r   r>   r   r   r  r    s=    
a9B		22.//r   r  c                   *    e Zd ZdZddZd Zd Zd Zy)AcquirerProxy)acquirereleaseNc                 8    ||fn||f}| j                  d|      S Nr  r]  )r-   blockingr  rF   s       r   r  zAcquirerProxy.acquire  s'    &|Xw4G	400r   c                 $    | j                  d      S Nr  r]  r0   s    r   r  zAcquirerProxy.release      	**r   c                 $    | j                  d      S r  r]  r0   s    r   r"  zAcquirerProxy.__enter__  r  r   c                 $    | j                  d      S r  r]  r$  s       r   r(  zAcquirerProxy.__exit__  r  r   )TN)r8   r:   r;   r1  r  r  r"  r(  r>   r   r   r  r    s    &I1+++r   r  c                   ,    e Zd ZdZddZd Zd ZddZy)ConditionProxy)r  r  r   notify
notify_allNc                 (    | j                  d|f      S Nr   r]  r  s     r   r   zConditionProxy.wait      
33r   c                 $    | j                  d      S )Nr  r]  r0   s    r   r  zConditionProxy.notify      ))r   c                 $    | j                  d      S )Nr  r]  r0   s    r   r  zConditionProxy.notify_all  s    --r   c                      |       }|r|S |t               |z   }nd }d }|s2||t               z
  }|dk  r	 |S | j                          |       }|s2|S )Nr   )r   r   )r-   	predicater  rI   endtimewaittimes         r   wait_forzConditionProxy.wait_for  st    MkG+GGH""Y[0q=  IIh[F  r   r   )r8   r:   r;   r1  r   r  r  r  r>   r   r   r  r    s    FI4*.r   r  c                   *    e Zd ZdZd Zd Zd ZddZy)
EventProxy)r   r   rF  r   c                 $    | j                  d      S )Nr   r]  r0   s    r   r   zEventProxy.is_set  r  r   c                 $    | j                  d      S Nr   r]  r0   s    r   r   zEventProxy.set      &&r   c                 $    | j                  d      S )NrF  r]  r0   s    r   rF  zEventProxy.clear      ((r   Nc                 (    | j                  d|f      S r  r]  r  s     r   r   zEventProxy.wait  r  r   r   )r8   r:   r;   r1  r   r   rF  r   r>   r   r   r  r    s    2I*')4r   r  c                   T    e Zd ZdZd	dZd Zd Zed        Zed        Z	ed        Z
y)
BarrierProxy)__getattribute__r   abortresetNc                 (    | j                  d|f      S r  r]  r  s     r   r   zBarrierProxy.wait%  s    44r   c                 $    | j                  d      S )Nr  r]  r0   s    r   r  zBarrierProxy.abort(  r  r   c                 $    | j                  d      S )Nr  r]  r0   s    r   r  zBarrierProxy.reset+  r  r   c                 &    | j                  dd      S )Nr  )partiesr]  r0   s    r   r  zBarrierProxy.parties.  s     2MBBr   c                 &    | j                  dd      S )Nr  )	n_waitingr]  r0   s    r   r  zBarrierProxy.n_waiting2  s     2ODDr   c                 &    | j                  dd      S )Nr  )brokenr]  r0   s    r   r  zBarrierProxy.broken6  s     2LAAr   r   )r8   r:   r;   r1  r   r  r  rA  r  r  r  r>   r   r   r  r  "  sX    >I5)) C C E E B Br   r  c                   "    e Zd ZdZd Zd Zd Zy)NamespaceProxy)r  __setattr____delattr__c                 ~    |d   dk(  rt         j                  | |      S t         j                  | d      } |d|f      S )Nr   r`   r[  r  )objectr  r-   r=  
callmethods      r   __getattr__zNamespaceProxy.__getattr__>  sB    q6S=**455,,T=A
,sf55r   c                     |d   dk(  rt         j                  | ||      S t         j                  | d      } |d||f      S )Nr   r`   r[  r  )r  r  r  )r-   r=  r   r  s       r   r  zNamespaceProxy.__setattr__D  sE    q6S=%%dC77,,T=A
-#u66r   c                 ~    |d   dk(  rt         j                  | |      S t         j                  | d      } |d|f      S )Nr   r`   r[  r  )r  r  r  r  s      r   r  zNamespaceProxy.__delattr__J  sA    q6S=%%dC00,,T=A
-#00r   N)r8   r:   r;   r1  r  r  r  r>   r   r   r  r  ;  s    BI671r   r  c                   .    e Zd ZdZd Zd Z eee      Zy)
ValueProxy)r   r   c                 $    | j                  d      S )Nr   r]  r0   s    r   r   zValueProxy.getT  r  r   c                 (    | j                  d|f      S r  r]  r  s     r   r   zValueProxy.setW  s    x00r   N)r8   r:   r;   r1  r   r   rA  r   r>   r   r   r  r  Q  s    I'1S#Er   r  )__add____contains____delitem____getitem____len____mul____reversed____rmul____setitem__rZ   countextendindexinsertrw  removereverser   __imul__)__getslice____setslice____delslice__BaseListProxyc                       e Zd Zd Zd Zy)	ListProxyc                 ,    | j                  d|f       | S )Nr  r]  r  s     r   __iadd__zListProxy.__iadd__i  s    E8,r   c                 ,    | j                  d|f       | S )Nr  r]  r  s     r   r  zListProxy.__imul__m  s    eX.r   N)r8   r:   r;   r  r  r>   r   r   r   r   g  s    r   r   	DictProxy)r  r  r  r  r  rF  r9  r   has_keyr   r    rw  popitem
setdefaultr  r!   )r  r  r  )r  r  
ArrayProxy	PoolProxy)applyapply_asyncr   imapimap_unorderedr   map	map_asyncstarmapstarmap_asyncr*  AsyncResultIterator)r  r  r  r  r  c                       e Zd Zd Zd Zy)r	  c                     | S r   r>   r0   s    r   r"  zPoolProxy.__enter__  r  r   c                 $    | j                          y r   )r*  )r-   exc_infos     r   r(  zPoolProxy.__exit__  s    r   N)r8   r:   r;   r"  r(  r>   r   r   r	  r	    s    r   c                       e Zd ZdZy)r   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.
    N)r8   r:   r;   r<   r>   r   r   r   r     s    r   r   r   JoinableQueuer   Lockr|   	SemaphoreBoundedSemaphore	ConditionBarrierPoolr#   r   r  F)r   r<  )r<  rs  r  )Or   r{   r   r   r    r   r   r   r   r	   r
   r   queuer   timer   __all__r  PY3r   r>  rO   rX   
view_typesr#   r&   	view_typer   rJ   rC   r   rQ   r^   ra   rc   r   r   r   XmlListener	XmlClientrw   r   r   rC  r   rl  r~  r:  r  r  r  r  r  r  r  r  r  r  _ListProxy_Attributesr  r   r  _ArrayProxy_Attributesr  BasePoolProxyr2  r	  r   r   r  r|   r  r  r  r+  r  r  r   )r\   s   0r   <module>r,     s                
>	qQ 67 	  5;; - 67 $72t$&' 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