ó
O'—^c           @@  s˜  d  Z  d d l m Z d d l Z d d l Z d d l Z d d l Z y d d l Z	 Wn e
 k
 ro d Z	 n Xd d l m Z d d l m Z e j d" k  rº e Z e j Z e j Z n e	 pÃ e Z e j Z e j Z e j d d	 k rş d d
 l m Z n8 y d d l m Z Wn! e
 k
 r5d d l m Z n Xd Z d# Z d$ Z e g Z e d „ Z d „  Z d „  Z e e d „ Z  d  e! f d! „  ƒ  YZ" d S(%   se   
This module contains utilities added by billiard, to keep
"non-core" functionality out of ``.util``.i    (   t   absolute_importNi   (   t   RestartFreqExceeded(   t	   monotonici   i   i   (   t   BytesIO(   t   StringIOiF   t   SIGHUPt   SIGQUITt   SIGTERMt   SIGUSR1t   SIGUSR2t   SIGTRAPt   SIGABRTt   SIGEMTt   SIGSYSt   SIGPIPEt   SIGALRMt   SIGXCPUt   SIGXFSZt	   SIGVTALRMt   SIGPROFc         C@  s   | t  |  ƒ ƒ S(   N(   R   (   t   st   load(    (    s1   /tmp/pip-unpacked-wheel-40MfcW/billiard/common.pyt   pickle_loadsK   s    c         C@  s8   y t  j  |  | ƒ Wn t t t t f k
 r3 n Xd  S(   N(   t   signalt   OSErrort   AttributeErrort
   ValueErrort   RuntimeError(   t   signumt   handler(    (    s1   /tmp/pip-unpacked-wheel-40MfcW/billiard/common.pyt   maybe_setsignalP   s    c         C@  sJ   t  d r t j t ƒ n  t |  t j ƒ t t  d <t j	 d |  ƒ d  S(   Ni    i   (
   t   _should_have_exitedt   ost   _exitt   EX_SOFTWARER   R   t   SIG_DFLt   Truet   syst   exit(   R   t   frame(    (    s1   /tmp/pip-unpacked-wheel-40MfcW/billiard/common.pyt   _shutdown_cleanupW   s
    

c         C@  s‚   x{ | r t  n t D]g } y t t | ƒ } Wn t k
 r? q Xt j | ƒ } | d  k	 r | t j k r t | |  ƒ q q Wd  S(   N(	   t   TERMSIGS_FULLt   TERMSIGS_DEFAULTt   getattrR   R   t	   getsignalt   Nonet   SIG_IGNR   (   R   t   fullt   sigR   t   current(    (    s1   /tmp/pip-unpacked-wheel-40MfcW/billiard/common.pyt   reset_signalsb   s    t   restart_statec           B@  s#   e  Z e Z d  „  Z d d „ Z RS(   c         C@  s)   | | |  _  |  _ d \ |  _ |  _ d  S(   Ni    (   i    N(   t   maxRt   maxTR-   t   Rt   T(   t   selfR4   R5   (    (    s1   /tmp/pip-unpacked-wheel-40MfcW/billiard/common.pyt   __init__q   s    c         C@  sÖ   | d  k r t ƒ  n | } |  j } |  j rY | |  j |  j k rY | d |  _ |  _ nO |  j r¨ |  j |  j k r¨ |  j r¨ d |  _ |  j d | |  j f ƒ ‚ q¨ n  |  j d  k rÃ | |  _ n  |  j d 7_ d  S(   Ni    s	   %r in %rsi   (   R-   R   R6   R7   R5   R4   R   (   R8   t   nowR6   (    (    s1   /tmp/pip-unpacked-wheel-40MfcW/billiard/common.pyt   stepu   s    			"N(   t   __name__t
   __module__R   R9   R-   R;   (    (    (    s1   /tmp/pip-unpacked-wheel-40MfcW/billiard/common.pyR3   n   s   	(   i   i   (   R   R   R   R   R	   (   R   R   R
   R   R   R   R   R   R   R   R   R   R   R   R	   (#   t   __doc__t
   __future__R    R    R   R%   t   picklet   pypicklet   cPicklet   cpicklet   ImportErrorR-   t
   exceptionsR   t   fiveR   t   version_infoR   t   pickle_loadt   loadsR   t   ioR   t	   cStringIOR   R"   R*   R)   t   FalseR   R   R(   R2   t   objectR3   (    (    (    s1   /tmp/pip-unpacked-wheel-40MfcW/billiard/common.pyt   <module>   sf   
			                  			