<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

Yf{                 @   s  d  d d d g Z  d d l Z 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   Z e j e j e  d d   d d d f D Z e d e k	 rJd d   Z x e D] Z e j e e  q0WGd d   d e  Z f  i  d d  Z d d   Z Gd d   d e  Z d  d!   Z d" d#   Z Gd$ d%   d% e  Z Gd& d'   d' e  Z  d( e
 j! e
 j" f d) e
 j# e
 j$ f i Z% Gd* d    d  e  Z& Gd+ d,   d, e'  Z( Gd- d   d e  Z) d. d/   Z* i  d0 d1  Z+ d d d d2 d3 d4  Z, Gd5 d6   d6 e  Z- Gd7 d8   d8 e  Z. d2 d9 d:  Z/ Gd; d<   d< e)  Z0 Gd= d>   d> e)  Z1 Gd? d@   d@ e1  Z2 GdA dB   dB e)  Z3 GdC dD   dD e)  Z4 GdE dF   dF e)  Z5 GdG dH   dH e)  Z6 e+ dI dJ dK dL dM dN dO dP dQ dR dS dT dU dV dW dX dY dZ d[ d\ f  Z7 Gd] d^   d^ e7  Z8 e+ d_ dK dL dM dN dR d` da db dc d d dX dd de df d f  Z9 e+ dg dN dM dR f  Z: e+ dh di dj dk dl dm dn do dp dq dr ds f  Z; dj dt dp dt dr dt dl du dm du i e; _< Gdv dh   dh e;  Z= Gdw d   d e&  Z> e> j dx e j?  e> j dy e j?  e> j dz e j@ e3  e> j d{ e jA e1  e> j d| e jB e1  e> j d} e jC e1  e> j d~ e jD e1  e> j d e jE e2  e> j d e jF e4  e> j d e jG e=  e> j d e e8  e> j d eH e9  e> j d8 e. e6  e> j d: e/ e:  e> j d6 e- e5  e> j du d e0 d d e> j dt d d d S)BaseManagerSyncManager	BaseProxyToken    N)time)
format_exc   )
connection)context)pool)process)	reduction)util)get_contextc             C   s   t  j  |  j |  j   f f S)N)arraytypecodetobytes)a r   =/opt/alt/python35/lib64/python3.5/multiprocessing/managers.pyreduce_array%   s    r   c             C   s(   g  |  ] } t  t i  |      q Sr   )typegetattr).0namer   r   r   
<listcomp>)   s   	 r   itemskeysvaluesc             C   s   t  t  |   f f S)N)list)objr   r   r   rebuild_as_list+   s    r!   c               @   sL   e  Z d  Z d Z d Z d d   Z d d   Z d	 d
   Z d d   Z d S)r   z4
    Type to uniquely indentify a shared object
    typeidaddressidc             C   s!   | | | |  _  |  _ |  _ d  S)N)r"   r#   r$   )selfr"   r#   r$   r   r   r   __init__:   s    zToken.__init__c             C   s   |  j  |  j |  j f S)N)r"   r#   r$   )r%   r   r   r   __getstate__=   s    zToken.__getstate__c             C   s   | \ |  _  |  _ |  _ d  S)N)r"   r#   r$   )r%   stater   r   r   __setstate__@   s    zToken.__setstate__c             C   s#   d |  j  j |  j |  j |  j f S)Nz %s(typeid=%r, address=%r, id=%r))	__class____name__r"   r#   r$   )r%   r   r   r   __repr__C   s    zToken.__repr__N)r"   r#   r$   )	r+   
__module____qualname____doc__	__slots__r&   r'   r)   r,   r   r   r   r   r   4   s   c             C   sN   |  j  | | | | f  |  j   \ } } | d k r; | St | |   d S)zL
    Send a message to manager using connection `c` and return response
    z#RETURNN)sendrecvconvert_to_error)cr$   
methodnameargskwdskindresultr   r   r   dispatchK   s
    r:   c             C   sN   |  d k r | S|  d k r& t  |  S|  d k r@ t  d |  St d  Sd  S)Nz#ERRORz
#TRACEBACKz#UNSERIALIZABLEzUnserializable message: %s
zUnrecognized message type)RemoteError
ValueError)r8   r9   r   r   r   r3   U   s    
r3   c               @   s   e  Z d  Z d d   Z d S)r;   c             C   s)   d d d d t  |  j d  d d S)N
-K   r   )strr6   )r%   r   r   r   __str__b   s    zRemoteError.__str__N)r+   r-   r.   rA   r   r   r   r   r;   a   s   r;   c             C   sI   g  } x< t  |   D]. } t |  |  } t |  r | j |  q W| S)z4
    Return a list of names of methods of `obj`
    )dirr   callableappend)r    tempr   funcr   r   r   all_methodsi   s    rG   c             C   s   d d   t  |   D S)zP
    Return a list of names of methods of `obj` which do not start with '_'
    c             S   s&   g  |  ] } | d  d k r |  q S)r   _r   )r   r   r   r   r   r   x   s   	 z"public_methods.<locals>.<listcomp>)rG   )r    r   r   r   public_methodst   s    rI   c            	   @   s  e  Z d  Z d Z d d d d d d d d	 d
 g	 Z d d   Z d d   Z d d   Z d d   Z d d   Z	 d d   Z
 d d   Z d d   Z d e d e d e
 i Z d d   Z d  d!   Z d" d#   Z d$ d%   Z d& d'   Z d( d)   Z d* d+   Z d, d-   Z d. d/   Z d0 S)1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             C   s   | |  _  t j |  |  _ t | \ } } | d | d d  |  _ |  j j |  _ d d  f  f i |  _ i  |  _ t	 j
   |  _ d  S)Nr#   Zbacklog   0)registryr   AuthenticationStringauthkeylistener_clientlistenerr#   	id_to_objid_to_refcount	threadingRLockmutex)r%   rV   r#   rX   
serializerListenerClientr   r   r   r&      s    		zServer.__init__c             C   s   t  j   |  _ |  t j   _ zq t  j d |  j  } d | _ | j	   y* x# |  j j
   sq |  j j d  qO WWn t t f k
 r Yn XWd t j t j k r t j d  t j t _ t j t _ t j d  Xd S)z(
        Run the server forever
        targetTr   Nzresetting stdout, stderrr   )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%   ri   r   r   r   serve_forever   s     	
	zServer.serve_foreverc             C   sg   x` y |  j  j   } Wn t k
 r- w Yn Xt j d |  j d | f  } d | _ | j   q Wd  S)Nrc   r6   T)rZ   ZacceptOSErrorr]   rh   handle_requestrj   rk   )r%   r4   tr   r   r   ri      s    	zServer.accepterc          '   C   su  d } } } yW t  j | |  j  t  j | |  j  | j   } | \ } } } } t |  |  } Wn! t k
 r d t   f }	 YnG Xy | | | |  } Wn! t k
 r d t   f }	 Yn Xd | f }	 y | j |	  Wn t k
 rf}
 zd y | j d t   f  Wn t k
 r#Yn Xt	 j
 d |	  t	 j
 d |  t	 j
 d |
  WYd d }
 ~
 Xn X| j   d S)z)
        Handle a new connection
        Nz
#TRACEBACKz#RETURNzFailure to send message: %rz ... request was %rz ... exception was %r)r	   Zdeliver_challengerX   Zanswer_challenger2   r   	Exceptionr   r1   r   infoclose)r%   r4   funcnamer9   requestignorer6   r7   rF   msger   r   r   ry      s2    #zServer.handle_requestc          *   C   s%  t  j d t j   j  | j } | j } |  j } x|  j j	   s y,d } } |   } | \ } } }	 }
 | | \ } } } | | k r t
 d | t |  | f   t | |  } y | |	 |
   } Wn1 t k
 r} z d | f } WYd d } ~ Xnp X| o| j | d  } | re|  j | | |  \ } } t | |  j |  } d | | f f } n d | f } Wn t
 k
 r | d k rd t   f } n\ y8 |  j | } | |  | | | |	 |
  } d | f } Wn! t k
 rd t   f } Yn XYnX t k
 r7t  j d t j   j  t j d	  Yn! t k
 rWd t   f } Yn XyM y | |  Wn8 t k
 r} z | d
 t   f  WYd d } ~ Xn XWq7 t k
 r} zU t  j d t j   j  t  j d |  t  j d |  | j   t j d  WYd d } ~ Xq7 Xq7 Wd S)zQ
        Handle requests from the proxies in a particular process/thread
        z$starting server thread to service %rNz+method %r of %r object is not in exposed=%rz#ERRORz#PROXYz#RETURNz
#TRACEBACKz$got EOF -- exiting thread serving %rr   z#UNSERIALIZABLEzexception in thread serving %rz ... message was %rz ... exception was %rr   )r   rs   r]   current_threadr   r2   r1   r[   re   rl   AttributeErrorr   r   r{   getrL   r   r#   r   fallback_mappingEOFErrorrp   rv   r|   r}   )r%   connr2   r1   r[   r5   r    r   identr6   r7   exposedZ	gettypeidZfunctionresr   r   r"   ZridentZrexposedtokenZfallback_funcr9   r   r   r   serve_client   sl    				
		*	
zServer.serve_clientc             C   s   | S)Nr   )r%   r   r   r    r   r   r   fallback_getvalue  s    zServer.fallback_getvaluec             C   s
   t  |  S)N)r@   )r%   r   r   r    r   r   r   fallback_str"  s    zServer.fallback_strc             C   s
   t  |  S)N)repr)r%   r   r   r    r   r   r   fallback_repr%  s    zServer.fallback_reprrA   r,   z	#GETVALUEc             C   s   d  S)Nr   )r%   r4   r   r   r   rQ   .  s    zServer.dummyc             C   s   |  j   g  } t |  j j    } | j   xV | D]N } | d k r6 | j d | |  j | t |  j | d  d d  f  q6 Wd j |  SWd QRXd S)zO
        Return some info --- useful to spot problems with refcounting
        rU   z  %s:       refcount=%s
    %sr   Nr?   r=   )	r_   r   r[   r   sortrD   r\   r@   join)r%   r4   r9   r   r   r   r   r   rO   1  s    

	*zServer.debug_infoc             C   s   t  |  j  d S)z*
        Number of shared objects
        r   )lenr[   )r%   r4   r   r   r   rP   @  s    zServer.number_of_objectsc             C   sX   zC y t  j d  | j d  Wn d d l } | j   Yn XWd |  j j   Xd S)z'
        Shutdown this process
        z!manager received shutdown message#RETURNNr   )r   N)r   rs   r1   	traceback	print_excre   set)r%   r4   r   r   r   r   rK   F  s    zServer.shutdownc             O   s  |  j   |  j | \ } } } } | d k r< | d }	 n | | |   }	 | d k rc t |	  } | d k	 r t |  t |  } d t |	  }
 t j d | |
  |	 t |  | f |  j |
 <|
 |  j	 k r d |  j	 |
 <|  j
 | |
  |
 t |  f SWd QRXd S)z>
        Create a new shared object and return its id
        Nr   z%xz&%r callable returned object with id %r)r_   rV   rI   r   r$   r   rs   r   r[   r\   rR   tuple)r%   r4   r"   r6   r7   rC   r   method_to_typeid	proxytyper    r   r   r   r   rL   S  s     
zServer.createc             C   s   t  |  j | j d  S)zL
        Return the methods of the shared object indicated by token
        r   )r   r[   r$   )r%   r4   r   r   r   r   rN   v  s    zServer.get_methodsc             C   s-   | t  j   _ | j d  |  j |  d S)z=
        Spawn a new thread to serve this connection
        #RETURNN)r   N)r]   r   r   r1   r   )r%   r4   r   r   r   r   rM   |  s    zServer.accept_connectionc             C   s&   |  j   |  j | d 7<Wd  QRXd  S)Nr   )r_   r\   )r%   r4   r   r   r   r   rR     s    
zServer.increfc             C   s]   |  j  M |  j | d 8<|  j | d k rR |  j | =|  j | =t j d |  Wd  QRXd  S)Nr   r   zdisposing of obj with id %r)r_   r\   r[   r   rs   )r%   r4   r   r   r   r   rS     s
    
zServer.decrefN)r+   r-   r.   r/   Zpublicr&   rw   ri   ry   r   r   r   r   r   rQ   rO   rP   rK   rL   rN   rM   rR   rS   r   r   r   r   rJ   ~   s.   
"J#rJ   c               @   s+   e  Z d  Z d g Z d Z d Z d Z d S)Statevaluer   r      N)r+   r-   r.   r0   INITIALSTARTEDSHUTDOWNr   r   r   r   r     s   	r   pickleZ	xmlrpclibc               @   s  e  Z d  Z d Z i  Z e Z d d d d d d  Z d d   Z d d	   Z	 d f  d
 d  Z
 e d f  d d   Z d d   Z d d d  Z d d   Z d d   Z d d   Z d d   Z e d d    Z e d d    Z e d d d d d d d    Z d S)!r   z!
    Base class for managers
    Nr   c             C   s   | d  k r t  j   j } | |  _ t  j |  |  _ t   |  _ t j |  j _	 | |  _
 t | \ |  _ |  _ | p| t   |  _ d  S)N)r   rf   rX   _addressrW   _authkeyr   _stater   r   _serializerrY   Z	_Listener_Clientr   _ctx)r%   r#   rX   r`   Zctxr   r   r   r&     s    		zBaseManager.__init__c             C   s   t  |  j |  j |  j |  j  S)zX
        Return server object with serve_forever() method and address attribute
        )rJ   	_registryr   r   r   )r%   r   r   r   
get_server  s    zBaseManager.get_serverc             C   sN   t  |  j \ } } | |  j d |  j } t | d d  t j |  j _ d S)z>
        Connect manager object to the server process
        rX   NrQ   )	rY   r   r   r   r:   r   r   r   r   )r%   ra   rb   r   r   r   r   connect  s    zBaseManager.connectc             C   sO  | d k	 r% t  |  r% t d   t j d d  \ } } |  j j d t |   j d |  j |  j	 |  j
 |  j | | | f  |  _ d j d d	   |  j j D  } t |   j d
 | |  j _ |  j j   | j   | j   |  _	 | j   t j |  j _ t j |  t |   j d |  j |  j	 |  j
 |  j |  j f d d |  _ d S)z@
        Spawn a server process for this manager object
        Nzinitializer must be a callableZduplexFrc   r6   :c             s   s   |  ] } t  |  Vq d  S)N)r@   )r   ir   r   r   	<genexpr>  s    z$BaseManager.start.<locals>.<genexpr>r>   exitpriorityr   )rC   	TypeErrorr	   ZPiper   ZProcessr   _run_serverr   r   r   r   _processr   Z	_identityr+   r   rk   r}   r2   r   r   r   r   r   Finalize_finalize_managerr   rK   )r%   initializerinitargsreaderwriterr   r   r   r   rk     s&    "

zBaseManager.startc       	      C   si   | d k	 r | |   |  j  | | | |  } | j | j  | j   t j d | j  | j   d S)z@
        Create a server, report its address and run it
        Nzmanager serving at %r)_Serverr1   r#   r}   r   r|   rw   )	clsrV   r#   rX   r`   r   r   r   serverr   r   r   r     s    

zBaseManager._run_serverc             O   sk   |  j  |  j d |  j } z) t | d d | f | |  \ } } Wd | j   Xt | |  j |  | f S)zP
        Create a new shared object; return the token and exposed tuple
        rX   NrL   )r   r   r   r:   r}   r   )r%   r"   r6   r7   r   r$   r   r   r   r   _create  s
    )zBaseManager._createc             C   s;   |  j  d k	 r7 |  j  j |  |  j  j   s7 d |  _  d S)zC
        Join the manager process (if it has been spawned)
        N)r   r   is_alive)r%   timeoutr   r   r   r     s    zBaseManager.joinc          
   C   sA   |  j  |  j d |  j } z t | d d  SWd | j   Xd S)zS
        Return some info about the servers shared objects and connections
        rX   NrO   )r   r   r   r:   r}   )r%   r   r   r   r   _debug_info  s    zBaseManager._debug_infoc          
   C   sA   |  j  |  j d |  j } z t | d d  SWd | j   Xd S)z5
        Return the number of shared objects
        rX   NrP   )r   r   r   r:   r}   )r%   r   r   r   r   _number_of_objects"  s    zBaseManager._number_of_objectsc             C   s#   |  j  j t j k r |  j   |  S)N)r   r   r   r   rk   )r%   r   r   r   	__enter__,  s    
zBaseManager.__enter__c             C   s   |  j    d  S)N)rK   )r%   exc_typeexc_valexc_tbr   r   r   __exit__2  s    zBaseManager.__exit__c             C   s  |  j    r t j d  y8 | | d | } z t | d d  Wd | j   XWn t k
 re Yn X|  j d d  |  j    r t j d  t |  d  r t j d	  |  j   |  j d d
  |  j    r t j d  t	 j
 | _ y t j | =Wn t k
 rYn Xd S)zQ
        Shutdown the manager process; will be registered as a finalizer
        z#sending shutdown message to managerrX   NrK   r   g      ?zmanager still alive	terminatez'trying to `terminate()` manager processg?z#manager still alive after terminate)r   r   r|   r:   r}   r{   r   hasattrr   r   r   r   r   _address_to_localKeyError)r   r#   rX   r(   r   r   r   r   r   r   5  s.    
zBaseManager._finalize_managerc             C   s   |  j  S)N)r   )r%   r   r   r   <lambda>U  s    zBaseManager.<lambda>Tc       
         s   d |  j  k r! |  j j   |  _   d k r3 t   | pH t   d d  } | p` t   d d  } | r x  t | j    D] \ } } q| W| | |   f |  j  <| r    f d d   }	  |	 _ t |   |	  d S)z9
        Register a typeid with the manager type
        r   N	_exposed__method_to_typeid_c          	      s   t  j d   |  j  | |  \ } }   | |  j d |  d |  j d | } |  j | j d |  j } t | d  d | j f  | S)Nz)requesting creation of a shared %r objectmanagerrX   r   rS   )	r   rs   r   r   r   r   r#   r:   r$   )r%   r6   r7   r   Zexpproxyr   )r   r"   r   r   rE   r  s    z"BaseManager.register.<locals>.temp)	__dict__r   copy	AutoProxyr   r   r   r+   setattr)
r   r"   rC   r   r   r   create_methodkeyr   rE   r   )r   r"   r   registerW  s    
	zBaseManager.register)r+   r-   r.   r/   r   rJ   r   r&   r   r   rk   classmethodr   r   r   r   r   r   r   staticmethodr   propertyr#   r   r   r   r   r   r     s*   		$	

 	c               @   s(   e  Z d  Z d d   Z d d   Z d S)ProcessLocalSetc             C   s   t  j |  d d    d  S)Nc             S   s
   |  j    S)N)clear)r    r   r   r   r     s    z*ProcessLocalSet.__init__.<locals>.<lambda>)r   register_after_fork)r%   r   r   r   r&     s    zProcessLocalSet.__init__c             C   s   t  |   f  f S)N)r   )r%   r   r   r   
__reduce__  s    zProcessLocalSet.__reduce__N)r+   r-   r.   r&   r   r   r   r   r   r     s   r   c               @   s   e  Z d  Z d Z i  Z e j   Z d d d d d d  Z d d   Z	 f  i  d d	  Z
 d
 d   Z d d   Z e d d    Z d d   Z d d   Z d d   Z d d   Z d d   Z d S)r   z.
    A base for proxies of shared objects
    NTc          
   C   s*  t  j N t  j j | j d   } | d  k rS t j   t   f } | t  j | j <Wd  QRX| d |  _ | d |  _	 | |  _
 |  j
 j |  _ | |  _ | |  _ t | d |  _ | d  k	 r t j |  |  _ n3 |  j d  k	 r |  j j |  _ n t j   j |  _ | r|  j   t j |  t  j  d  S)Nr   r   )r   _mutexr   r   r#   r   ZForkAwareLocalr   _tls_idset_tokenr$   _id_managerr   rY   r   r   rW   r   rf   rX   _increfr   _after_fork)r%   r   r`   r   rX   r   rR   Z	tls_idsetr   r   r   r&     s(    
			
zBaseProxy.__init__c             C   s   t  j d  t j   j } t j   j d k rH | d t j   j 7} |  j |  j j	 d |  j
 } t | d  d | f  | |  j _ d  S)Nzmaking connection to managerZ
MainThread|rX   rM   )r   rs   r   rf   r   r]   r   r   r   r#   r   r:   r   r	   )r%   r   r   r   r   r   _connect  s    zBaseProxy._connectc             C   sE  y |  j  j } WnA t k
 rS t j d t j   j  |  j   |  j  j } Yn X| j	 |  j
 | | | f  | j   \ } } | d k r | S| d k r2| \ } } |  j j | j d
 }	 |  j j | _ |	 | |  j d |  j d |  j d | }
 |  j | j d |  j } t | d d	 | j f  |
 St | |   d S)zW
        Try to call a method of the referrent and return a copy of the result
        z#thread %r does not own a connectionz#RETURNz#PROXYr   r   rX   r   NrS   )r   r	   r   r   rs   r]   r   r   r   r1   r   r2   r   r   r"   r   r#   r   r   r   r:   r$   r3   )r%   r5   r6   r7   r   r8   r9   r   r   r   r   r   r   r   _callmethod  s,    	
zBaseProxy._callmethodc             C   s   |  j  d  S)z9
        Get a copy of the value of the referent
        z	#GETVALUE)r   )r%   r   r   r   	_getvalue  s    zBaseProxy._getvaluec          
   C   s   |  j  |  j j d |  j } t | d  d |  j f  t j d |  j j  |  j	 j
 |  j  |  j or |  j j } t j |  t j d |  j |  j | |  j |  j	 |  j  f d d |  _ d  S)NrX   rR   z	INCREF %rr6   r   
   )r   r   r#   r   r:   r   r   rs   r$   r   addr   r   r   r   _decrefr   Z_close)r%   r   r(   r   r   r   r     s    zBaseProxy._increfc             C   s  | j  |  j  | d  k s. | j t j k r yE t j d |  j  | |  j d | } t | d  d |  j f  Wq t	 k
 r } z t j d |  WYd  d  } ~ Xq Xn t j d |  j  | rt
 | d  rt j d t j   j  | j j   | ` d  S)Nz	DECREF %rrX   rS   z... decref failed %sz%DECREF %r -- manager already shutdownr	   z-thread %r has no more proxies so closing conn)discardr$   r   r   r   r   rs   r#   r:   r{   r   r]   r   r   r	   r}   )r   rX   r(   ZtlsZidsetr   r   r   r   r   r   r     s    &	zBaseProxy._decrefc             C   sT   d  |  _  y |  j   Wn6 t k
 rO } z t j d |  WYd  d  } ~ Xn Xd  S)Nzincref failed: %s)r   r   r{   r   r|   )r%   r   r   r   r   r     s
    	zBaseProxy._after_forkc             C   s   i  } t  j   d  k	 r% |  j | d <t |  d d  r` |  j | d <t t |  j |  j | f f St t	 |   |  j |  j | f f Sd  S)NrX   _isautoFr   )
r
   Zget_spawning_popenr   r   r   RebuildProxyr   r   r   r   )r%   r7   r   r   r   r     s    zBaseProxy.__reduce__c             C   s
   |  j    S)N)r   )r%   memor   r   r   __deepcopy__"  s    zBaseProxy.__deepcopy__c             C   s&   d t  |   j |  j j t |   f S)Nz<%s object, typeid %r at %#x>)r   r+   r   r"   r$   )r%   r   r   r   r,   %  s    zBaseProxy.__repr__c             C   sB   y |  j  d  SWn* t k
 r= t |   d d  d SYn Xd S)zV
        Return representation of the referent (or a fall-back if that fails)
        r,   Nr   z; '__str__()' failed>r   )r   r{   r   )r%   r   r   r   rA   )  s    zBaseProxy.__str__)r+   r-   r.   r/   r   r   ZForkAwareThreadLockr   r&   r   r   r   r   r   r   r   r   r   r,   rA   r   r   r   r   r     s   "	c             C   s   t  t j   d d  } | rB | j | j k rB | j | j d S| j d d  oj t  t j   d d  } |  | | d | | Sd S)z
    Function used for unpickling proxy objects.

    If possible the shared object is returned, or otherwise a proxy for it.
    rg   Nr   rR   TZ_inheritingF)r   r   rf   r#   r[   r$   pop)rF   r   r`   r7   r   rR   r   r   r   r   6  s    r   c             C   s   t  |  } y | |  | f SWn t k
 r2 Yn Xi  } x% | D] } t d | | f |  q@ Wt |  t f |  } | | _ | | |  | f <| S)zB
    Return a proxy type whose methods are given by `exposed`
    zLdef %s(self, *args, **kwds):
        return self._callmethod(%r, args, kwds))r   r   execr   r   r   )r   r   _cacheZdicmeth	ProxyTyper   r   r   MakeProxyTypeK  s    	r   Tc       
      C   s   t  | d } | d k rY | |  j d | } z t | d d |  f  } Wd | j   X| d k rz | d k	 rz | j } | d k r t j   j } t d |  j	 |  } | |  | d | d | d | }	 d |	 _
 |	 S)	z*
    Return an auto-proxy for `token`
    r   NrX   rN   zAutoProxy[%s]r   rR   T)rY   r#   r:   r}   r   r   rf   rX   r   r"   r   )
r   r`   r   rX   r   rR   r   r   r   r   r   r   r   r   a  s    			r   c               @   s(   e  Z d  Z d d   Z d d   Z d S)	Namespacec             K   s   |  j  j |  d  S)N)r   update)r%   r7   r   r   r   r&     s    zNamespace.__init__c             C   s   t  |  j j    } g  } x: | D]2 \ } } | j d  s" | j d | | f  q" W| j   d |  j j d j |  f S)NrH   z%s=%rz%s(%s)z, )	r   r   r   
startswithrD   r   r*   r+   r   )r%   r   rE   r   r   r   r   r   r,     s    
zNamespace.__repr__N)r+   r-   r.   r&   r,   r   r   r   r   r   ~  s   r   c               @   sR   e  Z d  Z d d d  Z d d   Z d d   Z d d	   Z e e e  Z d
 S)ValueTc             C   s   | |  _  | |  _ d  S)N)	_typecode_value)r%   r   r   lockr   r   r   r&     s    	zValue.__init__c             C   s   |  j  S)N)r   )r%   r   r   r   r     s    z	Value.getc             C   s   | |  _  d  S)N)r   )r%   r   r   r   r   r     s    z	Value.setc             C   s    d t  |   j |  j |  j f S)Nz
%s(%r, %r))r   r+   r   r   )r%   r   r   r   r,     s    zValue.__repr__N)	r+   r-   r.   r&   r   r   r,   r   r   r   r   r   r   r     s
   r   c             C   s   t  j  |  |  S)N)r   )r   Zsequencer   r   r   r   Array  s    r   c               @   sR   e  Z d  Z d Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z d S)IteratorProxy__next__r1   throwr}   c             C   s   |  S)Nr   )r%   r   r   r   __iter__  s    zIteratorProxy.__iter__c             G   s   |  j  d |  S)Nr  )r   )r%   r6   r   r   r   r    s    zIteratorProxy.__next__c             G   s   |  j  d |  S)Nr1   )r   )r%   r6   r   r   r   r1     s    zIteratorProxy.sendc             G   s   |  j  d |  S)Nr  )r   )r%   r6   r   r   r   r    s    zIteratorProxy.throwc             G   s   |  j  d |  S)Nr}   )r   )r%   r6   r   r   r   r}     s    zIteratorProxy.closeN)r  r1   r  r}   )	r+   r-   r.   r   r  r  r1   r  r}   r   r   r   r   r    s   r  c               @   sL   e  Z d  Z d Z d d d d  Z d d   Z d	 d
   Z d d   Z d S)AcquirerProxyacquirereleaseTNc             C   s1   | d  k r | f n	 | | f } |  j  d |  S)Nr  )r   )r%   Zblockingr   r6   r   r   r   r    s    !zAcquirerProxy.acquirec             C   s   |  j  d  S)Nr  )r   )r%   r   r   r   r    s    zAcquirerProxy.releasec             C   s   |  j  d  S)Nr  )r   )r%   r   r   r   r     s    zAcquirerProxy.__enter__c             C   s   |  j  d  S)Nr  )r   )r%   r   r   r   r   r   r   r     s    zAcquirerProxy.__exit__)r  r  )r+   r-   r.   r   r  r  r   r   r   r   r   r   r    s
   r  c               @   sL   e  Z d  Z d Z d d d  Z d	 d
   Z d d   Z d d d  Z d S)ConditionProxyr  r  rm   notify
notify_allNc             C   s   |  j  d | f  S)Nrm   )r   )r%   r   r   r   r   rm     s    zConditionProxy.waitc             C   s   |  j  d  S)Nr	  )r   )r%   r   r   r   r	    s    zConditionProxy.notifyc             C   s   |  j  d  S)Nr
  )r   )r%   r   r   r   r
    s    zConditionProxy.notify_allc             C   s   |   } | r | S| d  k	 r/ t    | } n d  } d  } xF | s | d  k	 rj | t    } | d k rj P|  j |  |   } q> W| S)Nr   )_timerm   )r%   Z	predicater   r9   ZendtimeZwaittimer   r   r   wait_for  s    		zConditionProxy.wait_for)r  r  rm   r	  r
  )r+   r-   r.   r   rm   r	  r
  r  r   r   r   r   r    s
   r  c               @   sI   e  Z d  Z d Z d d   Z d d   Z d	 d
   Z d d d  Z d S)
EventProxyrl   r   r   rm   c             C   s   |  j  d  S)Nrl   )r   )r%   r   r   r   rl     s    zEventProxy.is_setc             C   s   |  j  d  S)Nr   )r   )r%   r   r   r   r     s    zEventProxy.setc             C   s   |  j  d  S)Nr   )r   )r%   r   r   r   r     s    zEventProxy.clearNc             C   s   |  j  d | f  S)Nrm   )r   )r%   r   r   r   r   rm     s    zEventProxy.wait)rl   r   r   rm   )r+   r-   r.   r   rl   r   r   rm   r   r   r   r   r    s
   r  c               @   ss   e  Z d  Z d Z d d d  Z d d	   Z d
 d   Z e d d    Z e d d    Z	 e d d    Z
 d S)BarrierProxy__getattribute__rm   abortresetNc             C   s   |  j  d | f  S)Nrm   )r   )r%   r   r   r   r   rm     s    zBarrierProxy.waitc             C   s   |  j  d  S)Nr  )r   )r%   r   r   r   r    s    zBarrierProxy.abortc             C   s   |  j  d  S)Nr  )r   )r%   r   r   r   r    s    zBarrierProxy.resetc             C   s   |  j  d d  S)Nr  parties)r  )r   )r%   r   r   r   r    s    zBarrierProxy.partiesc             C   s   |  j  d d  S)Nr  	n_waiting)r  )r   )r%   r   r   r   r    s    zBarrierProxy.n_waitingc             C   s   |  j  d d  S)Nr  broken)r  )r   )r%   r   r   r   r    s    zBarrierProxy.broken)r  rm   r  r  )r+   r-   r.   r   rm   r  r  r   r  r  r  r   r   r   r   r    s   r  c               @   s:   e  Z d  Z d Z d d   Z d d   Z d d	   Z d
 S)NamespaceProxyr  __setattr____delattr__c             C   sB   | d d k r  t  j |  |  St  j |  d  } | d | f  S)Nr   rH   r   r  )objectr  )r%   r   
callmethodr   r   r   __getattr__  s    zNamespaceProxy.__getattr__c             C   sH   | d d k r# t  j |  | |  St  j |  d  } | d | | f  S)Nr   rH   r   r  )r  r  r  )r%   r   r   r  r   r   r   r    s    zNamespaceProxy.__setattr__c             C   sB   | d d k r  t  j |  |  St  j |  d  } | d | f  S)Nr   rH   r   r  )r  r  r  )r%   r   r  r   r   r   r    s    zNamespaceProxy.__delattr__N)r  r  r  )r+   r-   r.   r   r  r  r  r   r   r   r   r    s   r  c               @   s=   e  Z d  Z d Z d d   Z d d   Z e e e  Z d S)	
ValueProxyr   r   c             C   s   |  j  d  S)Nr   )r   )r%   r   r   r   r     s    zValueProxy.getc             C   s   |  j  d | f  S)Nr   )r   )r%   r   r   r   r   r   	  s    zValueProxy.setN)r   r   )r+   r-   r.   r   r   r   r   r   r   r   r   r   r    s   r  BaseListProxy__add____contains____delitem____getitem____len____mul____reversed____rmul____setitem__rD   countextendindexinsertr   removereverser   __imul__c               @   s(   e  Z d  Z d d   Z d d   Z d S)	ListProxyc             C   s   |  j  d | f  |  S)Nr'  )r   )r%   r   r   r   r   __iadd__  s    zListProxy.__iadd__c             C   s   |  j  d | f  |  S)Nr,  )r   )r%   r   r   r   r   r,    s    zListProxy.__imul__N)r+   r-   r.   r.  r,  r   r   r   r   r-    s   r-  	DictProxyr   r   r   Zhas_keypopitem
setdefaultr   
ArrayProxy	PoolProxyZapplyZapply_asyncr}   ZimapZimap_unorderedr   mapZ	map_asyncstarmapZstarmap_asyncr   ZAsyncResultIteratorc               @   s(   e  Z d  Z d d   Z d d   Z d S)r3  c             C   s   |  S)Nr   )r%   r   r   r   r   5  s    zPoolProxy.__enter__c             C   s   |  j    d  S)N)r   )r%   r   r   r   r   r   r   r   7  s    zPoolProxy.__exit__N)r+   r-   r.   r   r   r   r   r   r   r3  4  s   c               @   s   e  Z d  Z d Z d S)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 `multiprocessing.Manager()` function creates started instances of
    this class.
    N)r+   r-   r.   r/   r   r   r   r   r   >  s   	QueueZJoinableQueuerd   Lockr^   	SemaphoreBoundedSemaphore	ConditionBarrierPoolr   dictr   r   F)I__all__rp   r]   r   Zqueuer   r  r   r    r	   r
   r   r   r   r   r   r   r   Z
view_typesr   r!   Z	view_typer  r   r:   r3   r{   r;   rG   rI   rJ   r   ra   rb   ZXmlListenerZ	XmlClientrY   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r-  r/  r2  ZBasePoolProxyr   r3  r   r7  rd   r8  r^   r9  r:  r;  r<  r=  r>  r   r   r   r   <module>   s   

 
		
