;
Óâ"Ic               @   sž  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z m Z 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 d% a d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z e j ƒ  Z e  j ƒ  Z d „  Z d „  Z  i  Z! e  j ƒ  Z" Gd „  d e# ƒ Z$ d d  „ Z% d! „  Z& d% a' d" „  Z( e j) e( ƒ Gd# „  d e# ƒ Z* Gd$ „  d e j+ ƒ Z, d S(&   i    N(   u   current_processu   active_childrenu	   sub_debugu   debugu   infou   sub_warningu
   get_loggeru   log_to_stderru   get_temp_diru   register_after_forku
   is_exitingu   Finalizeu   ForkAwareThreadLocku   ForkAwareLocali   i
   i   i   u   multiprocessingu+   [%(levelname)s/%(processName)s] %(message)sc             G   s"   t  o t  j t |  | Œ n d  S(   N(   u   _loggeru   logu   SUBDEBUG(   u   msgu   args(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu	   sub_debug'   s    c             G   s"   t  o t  j t |  | Œ n d  S(   N(   u   _loggeru   logu   DEBUG(   u   msgu   args(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   debug+   s    c             G   s"   t  o t  j t |  | Œ n d  S(   N(   u   _loggeru   logu   INFO(   u   msgu   args(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   info/   s    c             G   s"   t  o t  j t |  | Œ n d  S(   N(   u   _loggeru   logu
   SUBWARNING(   u   msgu   args(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   sub_warning3   s    c              C   s   t  p’ d d l }  d d l } t | d ƒ o | j t ƒ | j t ƒ n3 | j j t d i  f ƒ | j j	 t d i  f ƒ t
 ƒ  |  j t ƒ a  n t  S(   u0   
    Returns logger used by multiprocessing
    i    Nu
   unregister(    (    (   u   _loggeru   loggingu   atexitu   hasattru
   unregisteru   _exit_functionu   registeru   _exithandlersu   removeu   appendu   _check_logger_classu	   getLoggeru   LOGGER_NAME(   u   loggingu   atexit(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu
   get_logger7   s    c                 sŠ   d d l  }  t |  d ƒ o d S|  j ƒ  zM |  j ƒ  ‰  t ˆ  d d ƒ p* G‡  f d †  d ˆ  ƒ } |  j | ƒ n Wd |  j ƒ  Xd S(   uB   
    Make sure process name is recorded when loggers are used
    i    Nu   multiprocessingu   _process_awarec                s#   |  Ee  Z d Z ‡  f d  †  Z d S(   c                s(   ˆ  j  |  | | Ž } t ƒ  j | _ | S(   N(   u
   makeRecordu   current_processu   _nameu   processName(   u   selfu   argsu   kwdsu   record(   u   OldLoggerClass(    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu
   makeRecord\   s    NT(   u   __name__u
   __module__u   Trueu   _process_awareu
   makeRecord(   u
   __locals__(   u   OldLoggerClass(    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   ProcessAwareLoggerZ   s   
u   ProcessAwareLoggerF(   u   loggingu   hasattru   _acquireLocku   getLoggerClassu   getattru   Falseu   setLoggerClassu   _releaseLock(   u   loggingu   ProcessAwareLogger(    (   u   OldLoggerClassu1   /mit/python/lib/python3.0/multiprocessing/util.pyu   _check_logger_classM   s    
c             C   sr   d d l  } t ƒ  } | j t ƒ } | j ƒ  } | j | ƒ | j | ƒ |  d k	 o | j |  ƒ n d a
 d S(   uB   
    Turn on logging and add a handler which prints to stderr
    i    NT(   u   loggingu
   get_loggeru	   Formatteru   DEFAULT_LOGGING_FORMATu   StreamHandleru   setFormatteru
   addHandleru   Noneu   setLevelu   Trueu   _log_to_stderr(   u   levelu   loggingu   loggeru	   formatteru   handler(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   log_to_stderrd   s    	c           	   C   sƒ   t  ƒ  j d  k of d d  l }  d d  l } | j d d ƒ } t d | ƒ t d  |  j d | g d d ƒ| t  ƒ  _ n t  ƒ  j S(   Ni    u   prefixu   pymp-u   created temp directory %su   argsu   exitpriorityiœÿÿÿ(	   u   current_processu   _tempdiru   Noneu   shutilu   tempfileu   mkdtempu   infou   Finalizeu   rmtree(   u   shutilu   tempfileu   tempdir(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   get_temp_dirw   s    c              C   s…   t  t j ƒ  ƒ }  |  j ƒ  xb |  D]Z \ \ } } } } y | | ƒ Wq# t k
 o( } z t d | ƒ WYd  d  } ~ Xq# Xq# Wd  S(   Nu    after forker raised exception %s(   u   listu   _afterfork_registryu   itemsu   sortu	   Exceptionu   info(   u   itemsu   indexu   identu   funcu   obju   e(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   _run_after_forkersˆ   s    
 c             C   s#   |  t  t t ƒ t |  ƒ | f <d  S(   N(   u   _afterfork_registryu   nextu   _afterfork_counteru   id(   u   obju   func(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   register_after_fork‘   s    c             B   sM   |  Ee  Z d  Z d d d d „ Z d d „ Z d „  Z d „  Z d „  Z d S(   uA   
    Class which supports object finalization using weakrefs
    c             C   sn   | d  k	 o t j | |  ƒ |  _ n | |  _ | |  _ | p i  |  _ | t t ƒ f |  _	 |  t
 |  j	 <d  S(   N(   u   Noneu   weakrefu   refu   _weakrefu	   _callbacku   _argsu   _kwargsu   nextu   _finalizer_counteru   _keyu   _finalizer_registry(   u   selfu   obju   callbacku   argsu   kwargsu   exitpriority(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   __init__    s    		c             C   s   y t  |  j =Wn t k
 o t d ƒ Yn_ Xt d |  j |  j |  j ƒ |  j |  j |  j Ž  } d |  _ |  _ |  _ |  _ |  _ | Sd S(   uQ   
        Run the callback unless it has already been called or cancelled
        u   finalizer no longer registeredu/   finalizer calling %s with args %s and kwargs %sN(	   u   _finalizer_registryu   _keyu   KeyErroru	   sub_debugu	   _callbacku   _argsu   _kwargsu   Noneu   _weakref(   u   selfu   wru   res(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   __call__¯   s    %c          	   C   sN   y t  |  j =Wn t k
 o Yn' Xd |  _ |  _ |  _ |  _ |  _ d S(   u3   
        Cancel finalization of the object
        N(   u   _finalizer_registryu   _keyu   KeyErroru   Noneu   _weakrefu	   _callbacku   _argsu   _kwargs(   u   self(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   cancel¿   s
    c             C   s   |  j  t k S(   uS   
        Return whether this finalizer is still waiting to invoke callback
        (   u   _keyu   _finalizer_registry(   u   self(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   still_activeË   s    c             C   sæ   y |  j  ƒ  } Wn  t t f k
 o d  } Yn X| d  k o d Sd t |  j d |  j ƒ } |  j o | d t |  j ƒ 7} n |  j o | d t |  j ƒ 7} n |  j	 d d  k	 o | d t |  j	 d ƒ 7} n | d S(	   Nu   <Finalize object, dead>u   <Finalize object, callback=%su   __name__u   , args=u	   , kwargs=i    u   , exitprority=u   >(
   u   _weakrefu   AttributeErroru	   TypeErroru   Noneu   getattru	   _callbacku   _argsu   stru   _kwargsu   _key(   u   selfu   obju   x(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   __repr__Ñ   s    

N(    (	   u   __name__u
   __module__u   __doc__u   Noneu   __init__u   __call__u   cancelu   still_activeu   __repr__(   u
   __locals__(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   Finalizeœ   s   
		c          	      sÖ   ˆ d k o d „  ‰  n ‡ f d †  ‰  ‡  f d †  t t j ƒ  ƒ Dƒ } | j d d ƒ xY | D]Q \ } } t d | ƒ y | ƒ  Wqb t k
 o d d l } | j	 ƒ  Yqb Xqb Wˆ d k o t j
 ƒ  n d S(	   uà   
    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 k	 S(   i    N(   u   None(   u   p(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   <lambda>í   s    c                s'   |  d  d  d k	 o |  d  d  ˆ  k S(   i    N(   u   None(   u   p(   u   minpriority(    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   <lambda>ï   s    c                s,   g  } |  ] } ˆ  | ƒ o | | q
 q
 S(    (    (   u   .0u   _[1]u   x(   u   f(    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu
   <listcomp>ñ   s    u   reverseu
   calling %si    NT(   u   Noneu   listu   _finalizer_registryu   itemsu   sortu   Trueu	   sub_debugu	   Exceptionu	   tracebacku	   print_excu   clear(   u   minpriorityu   itemsu   keyu	   finalizeru	   traceback(    (   u   fu   minpriorityu1   /mit/python/lib/python3.0/multiprocessing/util.pyu   _run_finalizerså   s    " c               C   s   t  p
 t  d k S(   u6   
    Returns true if the process is shutting down
    N(   u   _exitingu   None(    (    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu
   is_exiting  s    c              C   s    t  d ƒ t d ƒ t d ƒ x< t ƒ  D]1 }  |  j o! t  d |  j ƒ |  j j ƒ  q( q( Wx+ t ƒ  D]  }  t  d |  j ƒ |  j ƒ  qg Wt d ƒ t ƒ  d  S(   Nu   process shutting downu2   running all "atexit" finalizers with priority >= 0i    u!   calling terminate() for daemon %su   calling join() for process %su)   running the remaining "atexit" finalizers(	   u   infou   debugu   _run_finalizersu   active_childrenu	   _daemonicu   nameu   _popenu	   terminateu   join(   u   p(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   _exit_function  s    



 

 
c             B   s   |  Ee  Z d  „  Z d S(   c             C   sA   t  j ƒ  |  _ |  j j |  _ |  j j |  _ t |  t j ƒ d  S(   N(   u	   threadingu   Locku   _locku   acquireu   releaseu   register_after_forku   ForkAwareThreadLocku   __init__(   u   self(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   __init__%  s    N(   u   __name__u
   __module__u   __init__(   u
   __locals__(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   ForkAwareThreadLock$  s   
c             B   s    |  Ee  Z d  „  Z d „  Z d S(   c             C   s   t  |  d „  ƒ d  S(   Nc             S   s   |  j  j ƒ  S(    (   u   __dict__u   clear(   u   obj(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   <lambda>-  s    (   u   register_after_fork(   u   self(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   __init__,  s    c             C   s   t  |  ƒ d f S(   N(    (   u   type(   u   self(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu
   __reduce__.  s    N(   u   __name__u
   __module__u   __init__u
   __reduce__(   u
   __locals__(    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   ForkAwareLocal+  s   
	F(-   u	   itertoolsu   weakrefu   atexitu	   threadingu   multiprocessing.processu   current_processu   active_childrenu   __all__u   NOTSETu   SUBDEBUGu   DEBUGu   INFOu
   SUBWARNINGu   LOGGER_NAMEu   DEFAULT_LOGGING_FORMATu   Noneu   _loggeru   Falseu   _log_to_stderru	   sub_debugu   debugu   infou   sub_warningu
   get_loggeru   _check_logger_classu   log_to_stderru   get_temp_diru   WeakValueDictionaryu   _afterfork_registryu   countu   _afterfork_counteru   _run_after_forkersu   register_after_forku   _finalizer_registryu   _finalizer_counteru   objectu   Finalizeu   _run_finalizersu
   is_exitingu   _exitingu   _exit_functionu   registeru   ForkAwareThreadLocku   localu   ForkAwareLocal(    (    (    u1   /mit/python/lib/python3.0/multiprocessing/util.pyu   <module>	   sL   											I		