<!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   s~   |  d k r | S|  d k r> t  |  t k s4 t  t |  S|  d k rp t  |  t k sb t  t d |  St d  Sd  S)Nz#ERRORz
#TRACEBACKz#UNSERIALIZABLEzUnserializable message: %s
zUnrecognized message type)r   strAssertionError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   )r;   r6   )r%   r   r   r   __str__b   s    zRemoteError.__str__N)r+   r-   r.   rB   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    rH   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>)rH   )r    r   r   r   public_methodst   s    rJ   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  | t  s t  | |  _ t j |  |  _ t | \ } } | d | d d  |  _ |  j j	 |  _	 d d  f  f i |  _
 i  |  _ t j   |  _ d  S)Nr#   Zbacklog   0)
isinstancebytesr<   registryr   AuthenticationStringauthkeylistener_clientlistenerr#   	id_to_objid_to_refcount	threadingRLockmutex)r%   rY   r#   r[   
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%   rl   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)Nrf   r6   T)r]   ZacceptOSErrorr`   rk   handle_requestrm   rn   )r%   r4   tr   r   r   rl      s    	zServer.accepterc          '   C   s  d } } } yv t  j | |  j  t  j | |  j  | j   } | \ } } } } | |  j k st t d |   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
 r}
 zd y | j
 d t	   f  Wn t k
 rBYn Xt j d |	  t j d |  t j d |
  WYd d }
 ~
 Xn X| j   d S)z)
        Handle a new connection
        Nz%r unrecognizedz
#TRACEBACKz#RETURNzFailure to send message: %rz ... request was %rz ... exception was %r)r	   Zdeliver_challenger[   Zanswer_challenger2   publicr<   r   	Exceptionr   r1   r   infoclose)r%   r4   funcnamer9   requestignorer6   r7   rG   msger   r   r   r|      s4    #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   rv   r`   current_threadr   r2   r1   r^   rh   ro   AttributeErrorr   r   r   getrM   r   r#   r   fallback_mappingEOFErrorrs   ry   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_reprrB   r,   z	#GETVALUEc             C   s   d  S)Nr   )r%   r4   r   r   r   rR   .  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
        rV   z  %s:       refcount=%s
    %sr   NrA   r?   )	rb   r   r^   r   sortrE   r_   r;   join)r%   r4   r9   r   r   r   r   r   rP   1  s    

	*zServer.debug_infoc             C   s   t  |  j  d S)z*
        Number of shared objects
        r   )lenr^   )r%   r4   r   r   r   rQ   @  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   rv   r1   	traceback	print_excrh   set)r%   r4   r   r   r   r   rL   F  s    zServer.shutdownc             O   sB  |  j  2|  j | \ } } } } | d k r[ t |  d k rH | sN t  | d }	 n | | |   }	 | d k r t |	  } | d k	 r t |  t k s t  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   r   z%xz&%r callable returned object with id %r)rb   rY   r   r<   rJ   r   dictr   r$   r   rv   r   r^   r_   rS   tuple)r%   r4   r"   r6   r7   rD   r   method_to_typeid	proxytyper    r   r   r   r   rM   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   rO   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   rN   |  s    zServer.accept_connectionc             C   s&   |  j   |  j | d 7<Wd  QRXd  S)Nr   )rb   r_   )r%   r4   r   r   r   r   rS     s    
zServer.increfc             C   sv   |  j  f |  j | d k s# t  |  j | d 8<|  j | d k rk |  j | =|  j | =t j d |  Wd  QRXd  S)Nr   r   zdisposing of obj with id %r)rb   r_   r<   r^   r   rv   )r%   r4   r   r   r   r   rT     s    
zServer.decrefN)r+   r-   r.   r/   r~   r&   rz   rl   r|   r   r   r   r   r   rR   rP   rQ   rL   rM   rO   rN   rS   rT   r   r   r   r   rK   ~   s.   
"J#rK   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   ri   r[   _addressrZ   _authkeyr   _stater   r   _serializerr\   Z	_Listener_Clientr   _ctx)r%   r#   r[   rc   Zctxr   r   r   r&     s    		zBaseManager.__init__c             C   s:   |  j  j t j k s t  t |  j |  j |  j |  j	  S)zX
        Return server object with serve_forever() method and address attribute
        )
r   r   r   r   r<   rK   	_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
        r[   NrR   )	r\   r   r   r   r:   r   r   r   r   )r%   rd   re   r   r   r   r   connect  s    zBaseManager.connectc             C   sj  |  j  j t j k s t  | 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duplexFrf   r6   :c             s   s   |  ] } t  |  Vq d  S)N)r;   )r   ir   r   r   	<genexpr>  s    z$BaseManager.start.<locals>.<genexpr>r@   exitpriorityr   )r   r   r   r   r<   rD   	TypeErrorr	   ZPiper   ZProcessr   _run_serverr   r   r   r   _processr   Z	_identityr+   r   rn   r   r2   r   r   Finalize_finalize_managerr   rL   )r%   initializerinitargsreaderwriterr   r   r   r   rn     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   rz   )	clsrY   r#   r[   rc   r   r   r   serverr   r   r   r     s    

zBaseManager._run_serverc             O   s   |  j  j t j k s! t d   |  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
        zserver not yet startedr[   NrM   )r   r   r   r   r<   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
        r[   NrP   )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
        r[   NrQ   )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   |  j  j t j k s: t  |  S)N)r   r   r   r   rn   r   r<   )r%   r   r   r   	__enter__,  s    
zBaseManager.__enter__c             C   s   |  j    d  S)N)rL   )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 managerr[   NrL   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#   r[   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 xd t | j    D]P \ } } t |  t k s t	 d |   t |  t k s| t	 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_z%r is not a stringc          	      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managerr[   r   rT   )	r   rv   r   r   r   r   r#   r:   r$   )r%   r6   r7   r   Zexpproxyr   )r   r"   r   r   rF   r  s    z"BaseManager.register.<locals>.temp)__dict__r   copy	AutoProxyr   r   r   r   r;   r<   r+   setattr)
r   r"   rD   r   r   r   create_methodkeyr   rF   r   )r   r"   r   registerW  s     "&
	zBaseManager.register)r+   r-   r.   r/   r   rK   r   r&   r   r   rn   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   r\   r   r   rZ   r   ri   r[   _increfr   _after_fork)r%   r   rc   r   r[   r   rS   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|r[   rN   )r   rv   r   ri   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   r[   r   NrT   )r   r	   r   r   rv   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)Nr[   rS   z	INCREF %rr6   r   
   )r   r   r#   r   r:   r   r   rv   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 %rr[   rT   z... decref failed %sz%DECREF %r -- manager already shutdownr	   z-thread %r has no more proxies so closing conn)discardr$   r   r   r   r   rv   r#   r:   r   r   r`   r   r   r	   r   )r   r[   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)Nr[   _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   rB   )  s    zBaseProxy.__str__)r+   r-   r.   r/   r   r   ZForkAwareThreadLockr   r&   r   r   r   r   r   r   r   r   r   r,   rB   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.
    rj   Nr   rS   TZ_inheritingF)r   r   ri   r#   r^   r$   pop)rG   r   rc   r7   r   rS   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   Nr[   rO   zAutoProxy[%s]r   rS   T)r\   r#   r:   r   r   r   ri   r[   r   r"   r   )
r   rc   r   r[   r   rS   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)NrI   z%s=%rz%s(%s)z, )	r   r   r   
startswithrE   r   r*   r+   r   )r%   r   rF   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  rp   notify
notify_allNc             C   s   |  j  d | f  S)Nrp   )r   )r%   r   r   r   r   rp     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   )_timerp   )r%   Z	predicater   r9   ZendtimeZwaittimer   r   r   wait_for  s    		zConditionProxy.wait_for)r  r  rp   r  r  )r+   r-   r.   r   rp   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)
EventProxyro   r   r   rp   c             C   s   |  j  d  S)Nro   )r   )r%   r   r   r   ro     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)Nrp   )r   )r%   r   r   r   r   rp     s    zEventProxy.wait)ro   r   r   rp   )r+   r-   r.   r   ro   r   r   rp   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__rp   abortresetNc             C   s   |  j  d | f  S)Nrp   )r   )r%   r   r   r   r   rp     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  rp   r  r  )r+   r-   r.   r   rp   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   rI   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   rI   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   rI   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__rE   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)Nr1  )r   )r%   r   r   r   r   r1    s    zListProxy.__imul__N)r+   r-   r.   r3  r1  r   r   r   r   r2    s   r2  	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)r8  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   r8  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JoinableQueuerg   Lockra   	SemaphoreBoundedSemaphore	ConditionBarrierPoolr   r   r   r   F)I__all__rs   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=   rH   rJ   rK   r   rd   re   ZXmlListenerZ	XmlClientr\   r   r   r   r   r   r   r   r   r  r  r  r
  r  r  r  r  r   r!  r2  r4  r7  ZBasePoolProxyr   r8  r   r<  rg   r=  ra   r>  r?  r@  rA  rB  r   r   r   r   r   <module>   s   

 
		
