Ñò
$8Zc           @   s¤  d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k l Z l Z d d d d d d d	 d
 d d d d d d g Z d Z d Z	 d Z
 d Z d Z d Z d Z d a e a d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z e i ƒ  Z e  i ƒ  Z d „  Z d  „  Z h  Z  e  i ƒ  Z! d e" f d! „  ƒ  YZ# d d" „ Z$ d# „  Z% e a& d$ „  Z' e i( e' ƒ d e" f d% „  ƒ  YZ) d e i* f d& „  ƒ  YZ+ d S('   iÿÿÿÿN(   t   current_processt   active_childrent	   sub_debugt   debugt   infot   sub_warningt
   get_loggert   log_to_stderrt   get_temp_dirt   register_after_forkt
   is_exitingt   Finalizet   ForkAwareThreadLockt   ForkAwareLocalt   SUBDEBUGt
   SUBWARNINGi    i   i
   i   i   t   multiprocessings+   [%(levelname)s/%(processName)s] %(message)sc         G   s"   t  o t  i t |  | Œ n d  S(   N(   t   _loggert   logR   (   t   msgt   args(    (    s*   /usr/lib/python2.6/multiprocessing/util.pyR   (   s    c         G   s"   t  o t  i t |  | Œ n d  S(   N(   R   R   t   DEBUG(   R   R   (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyR   ,   s    c         G   s"   t  o t  i t |  | Œ n d  S(   N(   R   R   t   INFO(   R   R   (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyR   0   s    c         G   s"   t  o t  i t |  | Œ n d  S(   N(   R   R   R   (   R   R   (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyR   4   s    c       	   C   sÛ   d d k  }  d d k } |  i ƒ  z§ t pœ |  i t ƒ a d t _ |  i t d ƒ |  i t	 d ƒ t
 | d ƒ o | i t ƒ | i t ƒ qÈ | i i t d h  f ƒ | i i t d h  f ƒ n Wd |  i ƒ  Xt S(	   s0   
    Returns logger used by multiprocessing
    iÿÿÿÿNi    R   R   t
   unregister(    (    (   t   loggingt   atexitt   _acquireLockR   t	   getLoggert   LOGGER_NAMEt	   propagatet   addLevelNameR   R   t   hasattrR   t   _exit_functiont   registert   _exithandlerst   removet   appendt   _releaseLock(   R   R   (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyR   8   s    
	!c         C   sl   d d k  } t ƒ  } | i t ƒ } | i ƒ  } | i | ƒ | i | ƒ |  o | i |  ƒ n t a	 t
 S(   sB   
    Turn on logging and add a handler which prints to stderr
    iÿÿÿÿN(   R   R   t	   Formattert   DEFAULT_LOGGING_FORMATt   StreamHandlert   setFormattert
   addHandlert   setLevelt   Truet   _log_to_stderrR   (   t   levelR   t   loggert	   formattert   handler(    (    s*   /usr/lib/python2.6/multiprocessing/util.pyR   U   s    	c       	   C   sƒ   t  ƒ  i d  j of d d  k }  d d  k } | i d d ƒ } t d | ƒ t d  |  i d | g d d ƒ| t  ƒ  _ n t  ƒ  i S(   Niÿÿÿÿt   prefixs   pymp-s   created temp directory %sR   t   exitpriorityiœÿÿÿ(	   R    t   _tempdirt   Nonet   shutilt   tempfilet   mkdtempR   R   t   rmtree(   R6   R7   t   tempdir(    (    s*   /usr/lib/python2.6/multiprocessing/util.pyR   k   s    c          C   ss   t  t i ƒ  ƒ }  |  i ƒ  xP |  D]H \ \ } } } } y | | ƒ Wq# t j
 o } t d | ƒ q# Xq# Wd  S(   Ns    after forker raised exception %s(   t   listt   _afterfork_registryt   itemst   sortt	   ExceptionR   (   R=   t   indext   identt   funct   objt   e(    (    s*   /usr/lib/python2.6/multiprocessing/util.pyt   _run_after_forkers|   s    
 c         C   s#   |  t  t i ƒ  t |  ƒ | f <d  S(   N(   R<   t   _afterfork_countert   nextt   id(   RC   RB   (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyR	   …   s    c           B   sG   e  Z d  Z d d d d „ Z d d „ Z d „  Z d „  Z d „  Z RS(   sA   
    Class which supports object finalization using weakrefs
    c         C   s©   | d  j p t | ƒ t j p t ‚ | d  j	 o t i | |  ƒ |  _ n | d  j	 p t ‚ | |  _ | |  _ | p h  |  _	 | t
 i ƒ  f |  _ |  t |  i <d  S(   N(   R5   t   typet   intt   AssertionErrort   weakreft   reft   _weakreft	   _callbackt   _argst   _kwargst   _finalizer_counterRG   t   _keyt   _finalizer_registry(   t   selfRC   t   callbackR   t   kwargsR3   (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyt   __init__”   s    '		c         C   s   y t  |  i =Wn t j
 o t d ƒ n_ Xt d |  i |  i |  i ƒ |  i |  i |  i Ž  } d |  _ |  _ |  _ |  _ |  _ | Sd S(   sQ   
        Run the callback unless it has already been called or cancelled
        s   finalizer no longer registereds/   finalizer calling %s with args %s and kwargs %sN(	   RT   RS   t   KeyErrorR   RO   RP   RQ   R5   RN   (   RU   t   wrt   res(    (    s*   /usr/lib/python2.6/multiprocessing/util.pyt   __call__£   s    %c         C   sM   y t  |  i =Wn t j
 o n' Xd |  _ |  _ |  _ |  _ |  _ d S(   s3   
        Cancel finalization of the object
        N(   RT   RS   RY   R5   RN   RO   RP   RQ   (   RU   (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyt   cancel³   s
    c         C   s   |  i  t j S(   sS   
        Return whether this finalizer is still waiting to invoke callback
        (   RS   RT   (   RU   (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyt   still_active¿   s    c         C   så   y |  i  ƒ  } Wn t t f j
 o d  } n X| d  j o d Sd t |  i d |  i ƒ } |  i o | d t |  i ƒ 7} n |  i o | d t |  i ƒ 7} n |  i	 d d  j	 o | d t |  i	 d ƒ 7} n | d S(	   Ns   <Finalize object, dead>s   <Finalize object, callback=%st   __name__s   , args=s	   , kwargs=i    s   , exitprority=t   >(
   RN   t   AttributeErrort	   TypeErrorR5   t   getattrRO   RP   t   strRQ   RS   (   RU   RC   t   x(    (    s*   /usr/lib/python2.6/multiprocessing/util.pyt   __repr__Å   s    

(    N(	   R_   t
   __module__t   __doc__R5   RX   R\   R]   R^   Rf   (    (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyR      s   		c      	      së   ˆ  d j o d „  } n ‡  f d †  } g  } t i ƒ  D] } | | ƒ o | | q: q: ~ } | i d t ƒ xX | D]P \ } } t d | ƒ y | ƒ  Wqx t j
 o d d k } | i ƒ  qx Xqx Wˆ  d j o t i	 ƒ  n d S(   sà   
    Run all finalizers whose exit priority is not None and at least minpriority

    Finalizers with highest priority are called first; finalizers with
    the same priority will be called in reverse order of creation.
    c         S   s   |  d  d  d j	 S(   i    N(   R5   (   t   p(    (    s*   /usr/lib/python2.6/multiprocessing/util.pyt   <lambda>á   s    c            s'   |  d  d  d j	 o |  d  d  ˆ  j S(   i    N(   R5   (   Ri   (   t   minpriority(    s*   /usr/lib/python2.6/multiprocessing/util.pyRj   ã   s    t   reverses
   calling %siÿÿÿÿN(
   R5   RT   R=   R>   R,   R   R?   t	   tracebackt	   print_exct   clear(   Rk   t   ft   _[1]Re   R=   t   keyt	   finalizerRm   (    (   Rk   s*   /usr/lib/python2.6/multiprocessing/util.pyt   _run_finalizersÙ   s    8 c           C   s   t  p
 t  d j S(   s6   
    Returns true if the process is shutting down
    N(   t   _exitingR5   (    (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyR
   ÷   s    c          C   s    t  d ƒ t d ƒ t d ƒ x< t ƒ  D]1 }  |  i o! t  d |  i ƒ |  i i ƒ  q( q( Wx+ t ƒ  D]  }  t  d |  i ƒ |  i ƒ  qg Wt d ƒ t ƒ  d  S(   Ns   process shutting downs2   running all "atexit" finalizers with priority >= 0i    s!   calling terminate() for daemon %ss   calling join() for process %ss)   running the remaining "atexit" finalizers(	   R   R   Rt   R   t	   _daemonict   namet   _popent	   terminatet   join(   Ri   (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyR    ÿ   s    



 

 
c           B   s   e  Z d  „  Z RS(   c         C   sA   t  i ƒ  |  _ |  i i |  _ |  i i |  _ t |  t i ƒ d  S(   N(   t	   threadingt   Lockt   _lockt   acquiret   releaseR	   R   RX   (   RU   (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyRX     s    (   R_   Rg   RX   (    (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyR     s   c           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   t  |  d „  ƒ d  S(   Nc         S   s   |  i  i ƒ  S(    (   t   __dict__Ro   (   RC   (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyRj   !  s    (   R	   (   RU   (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyRX      s    c         C   s   t  |  ƒ d f S(   N(    (   RI   (   RU   (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyt
   __reduce__"  s    (   R_   Rg   RX   R   (    (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyR     s   	(,   t	   itertoolsRL   R   R{   t   multiprocessing.processR    R   t   __all__t   NOTSETR   R   R   R   R   R'   R5   R   t   FalseR-   R   R   R   R   R   R   R   t   WeakValueDictionaryR<   t   countRF   RE   R	   RT   RR   t   objectR   Rt   R
   Ru   R    R!   R   t   localR   (    (    (    s*   /usr/lib/python2.6/multiprocessing/util.pyt   <module>	   sL   										I		