σ
O'^c           @@  sW  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l m Z m Z m Z m	 Z	 m
 Z
 m Z m Z m Z m Z m Z m Z m Z m Z d d l m 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 Z d a e  a! d   Z" d   Z# d   Z$ d   Z% d   Z& d    Z' d d!  Z( d"   Z) d S(#   i    (   t   absolute_importN(   t   _afterfork_registryt   _afterfork_countert   _exit_functiont   _finalizer_registryt   _finalizer_countert   Finalizet   ForkAwareLocalt   ForkAwareThreadLockt   get_temp_dirt
   is_exitingt   register_after_forkt   _run_after_forkerst   _run_finalizersi   (   t	   get_errnot	   sub_debugt   debugt   infot   sub_warningt
   get_loggert   log_to_stderrR	   R   R
   R   R   R   t   SUBDEBUGt
   SUBWARNINGi   i
   i   i   i(   t   multiprocessings+   [%(levelname)s/%(processName)s] %(message)sc         O@  s#   t  r t  j t |  | |  n  d  S(   N(   t   _loggert   logR   (   t   msgt   argst   kwargs(    (    s/   /tmp/pip-unpacked-wheel-40MfcW/billiard/util.pyR   :   s    c         O@  s$   t  r  t  j t |  | |  t St S(   N(   R   R   t   DEBUGt   Truet   False(   R   R   R   (    (    s/   /tmp/pip-unpacked-wheel-40MfcW/billiard/util.pyR   ?   s    c         O@  s$   t  r  t  j t |  | |  t St S(   N(   R   R   t   INFOR   R   (   R   R   R   (    (    s/   /tmp/pip-unpacked-wheel-40MfcW/billiard/util.pyR   F   s    c         O@  s$   t  r  t  j t |  | |  t St S(   N(   R   R   R   R   R   (   R   R   R   (    (    s/   /tmp/pip-unpacked-wheel-40MfcW/billiard/util.pyR   M   s    c         O@  s$   t  r  t  j t |  | |  t St S(   N(   R   R   t   ERRORR   R   (   R   R   R   (    (    s/   /tmp/pip-unpacked-wheel-40MfcW/billiard/util.pyt   errorT   s    c          C@  sΛ   d d l  }  |  j   z£ t sΈ |  j t  a d t _ |  j t d  |  j t d  t	 t
 d  r t
 j t  t
 j t  qΈ t
 j j t d i  f  t
 j j t d i  f  n  Wd |  j   Xt S(   s0   
    Returns logger used by multiprocessing
    i    NR   R   t
   unregister(    (    (   t   loggingt   _acquireLockR   t	   getLoggert   LOGGER_NAMEt	   propagatet   addLevelNameR   R   t   hasattrt   atexitR#   R   t   registert   _exithandlerst   removet   appendt   _releaseLock(   R$   (    (    s/   /tmp/pip-unpacked-wheel-40MfcW/billiard/util.pyR   [   s    
	 c         C@  sj   d d l  } t   } | j t  } | j   } | j |  | j |  |  r` | j |   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   setLevelR   t   _log_to_stderrR   (   t   levelR$   t   loggert	   formattert   handler(    (    s/   /tmp/pip-unpacked-wheel-40MfcW/billiard/util.pyR   x   s    	c         @  s"   t  j      f d    } | S(   s&   
    Automatic retry after EINTR.
    c          @  sM   xF y   |  |   SWq t  k
 rD } t |  t j k rE   qE q Xq Wd  S(   N(   t   OSErrorR   t   errnot   EINTR(   R   R   t   exc(   t   func(    s/   /tmp/pip-unpacked-wheel-40MfcW/billiard/util.pyt   wrapped   s    (   t	   functoolst   wraps(   R@   RA   (    (   R@   s/   /tmp/pip-unpacked-wheel-40MfcW/billiard/util.pyt   _eintr_retry   s    (*   t
   __future__R    R=   RB   R+   t   multiprocessing.utilR   R   R   R   R   R   R   R   R	   R
   R   R   R   t   compatR   t   __all__t   NOTSETR   R   R    R   R!   R'   R2   t   NoneR   R   R7   R   R   R   R   R"   R   R   RD   (    (    (    s/   /tmp/pip-unpacked-wheel-40MfcW/billiard/util.pyt   <module>	   s6   X							