Ñò
$8Zc           @   s
  g  Z  d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k l Z d  d k l	 Z	 l
 Z
 l Z l Z d  d k l Z l Z l Z d  d k l Z l Z e i d j p e e d ƒ p e d ƒ ‚ n e i d j o2 d  d k Z d  d	 k l Z d
 „  Z d „  Z n d „  Z d „  Z e ƒ  a d „  Z e d ƒ e e e ƒ d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ e i% e i& e# ƒ d d „ Z' d „  Z( d „  Z) e i% e i e( ƒ e i d j o) d „  Z* d „  Z+ e i% e i, e* ƒ n d S(   iÿÿÿÿN(   t   current_process(   t   Popent	   duplicatet   closet   ForkingPickler(   t   register_after_forkt   debugt	   sub_debug(   t   Clientt   Listenert   win32t   recvfds%   pickling of connections not supported(   R
   c         C   sJ   t  i t  i t | ƒ } z  t | | ƒ } |  i | ƒ Wd  t | ƒ Xd  S(   N(   R
   t   OpenProcesst   PROCESS_ALL_ACCESSt   FalseR   t   sendR   (   t   connt   handlet   destination_pidt   process_handlet
   new_handle(    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyt   send_handle'   s    c         C   s
   |  i  ƒ  S(   N(   t   recv(   R   (    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyt   recv_handle1   s    c         C   s   t  i |  i ƒ  | ƒ d  S(   N(   t   _multiprocessingt   sendfdt   fileno(   R   R   R   (    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyR   5   s    c         C   s   t  i |  i ƒ  ƒ S(   N(   R   R   R   (   R   (    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyR   8   s    c         C   s;   x t  D] } t | ƒ q Wt  i ƒ  t i ƒ  a d  a d  S(   N(   t   _cacheR   t   cleart	   threadingt   Lockt   _lockt   Nonet	   _listener(   t   objt   h(    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyt   _resetA   s     
c          C   s†   t  d  j ou t i ƒ  zY t  d  j oH t d ƒ t d t ƒ  i ƒ a  t i	 d t
 ƒ }  t |  _ |  i ƒ  n Wd  t i ƒ  Xn t  S(   Ns0   starting listener and thread for sending handlest   authkeyt   target(   R!   R    R   t   acquireR   R	   R    R%   R   t   Threadt   _servet   Truet   daemont   startt   release(   t   t(    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyt   _get_listenerL   s    

	c          C   s¿   d d k  l }  l } x¢ yS t i ƒ  } | i ƒ  \ } } t i | ƒ t | | | ƒ t	 | ƒ | i	 ƒ  Wq |  ƒ  p8 d d  k
 } | d d d d | i ƒ  d d ƒ q¸ q Xq d  S(   Ni   (   t
   is_exitingt   sub_warningiÿÿÿÿs.   thread for sharing handles raised exception :
t   -iO   s   
(   t   utilR0   R1   R!   t   acceptR   R   t   removeR   R   t	   tracebackt
   format_exc(   R0   R1   R   t   handle_wantedR   R6   (    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyR)   ]   s    

c         C   s]   t  i ƒ  o d  t  i |  ƒ t f St |  ƒ } t i | ƒ t d |  ƒ t	 ƒ  i
 | t f S(   Ns   reducing handle %d(   R   t   thread_is_spawningR    t   duplicate_for_childR*   R   R   t   addR   R/   t   addressR   (   R   t
   dup_handle(    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyt   reduce_handlet   s    c         C   ss   |  \ } } } | o | St  d | ƒ t | d t ƒ  i ƒ} | i | t i ƒ  f ƒ t | ƒ } | i ƒ  | S(   Ns   rebuilding handle %dR%   (	   R   R   R    R%   R   t   ost   getpidR   R   (   t   pickled_dataR<   R   t	   inheritedR   R   (    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyt   rebuild_handle|   s    
c         C   s+   t  |  i ƒ  ƒ } t | |  i |  i f f S(   N(   R>   R   t   rebuild_connectiont   readablet   writable(   R   t   rh(    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyt   reduce_connection‹   s    c         C   s%   t  |  ƒ } t i | d | d | ƒS(   NRE   RF   (   RC   R   t
   Connection(   t   reduced_handleRE   RF   R   (    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyRD      s    i    c         C   sE   t  i |  | | | ƒ } | i t  i  j	 o t  i  d | ƒ } n | S(   Nt   _sock(   t   sockett   fromfdt	   __class__(   t   fdt   familyt   type_t   protot   s(    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyRM   ›   s    c         C   s1   t  |  i ƒ  ƒ } t | |  i |  i |  i f f S(   N(   R>   R   t   rebuild_socketRP   t   typeRR   (   RS   RJ   (    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyt   reduce_socket¡   s    c         C   s/   t  |  ƒ } t | | | | ƒ } t | ƒ | S(   N(   RC   RM   R   (   RJ   RP   RQ   RR   RO   RK   (    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyRT   ¥   s    
c         C   s+   t  |  i ƒ  ƒ } t | |  i |  i f f S(   N(   R>   R   t   rebuild_pipe_connectionRE   RF   (   R   RG   (    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyt   reduce_pipe_connection³   s    c         C   s%   t  |  ƒ } t i | d | d | ƒS(   NRE   RF   (   RC   R   t   PipeConnection(   RJ   RE   RF   R   (    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyRW   ·   s    (-   t   __all__R?   t   sysRL   R   R   t   multiprocessingR    t   multiprocessing.forkingR   R   R   R   t   multiprocessing.utilR   R   R   t   multiprocessing.connectionR   R	   t   platformt   hasattrt   ImportErrort   _subprocessR
   R   R   t   setR   R$   R    R/   R)   R>   RC   RH   RD   t   registerRI   RM   RV   RT   RX   RW   RY   (    (    (    s/   /usr/lib/python2.6/multiprocessing/reduction.pyt   <module>
   sJ   " 	
				
										