ó
q™xTc           @   sB   d  d l  m Z d  d l Z d  d l Z d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   divisionNt   keyboard_interrupt_handlerc           B   s/   e  Z d  d „ Z d „  Z d „  Z d „  Z RS(   i   c         C   s1   t  j  t  j |  j ƒ |  _ | |  _ d |  _ d  S(   Ni    (   t   signalt   SIGINTt   __call__t   prev_handlert   max_n_eventst   n_events(   t   selfR   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/python_utils/signal_utils.pyt   __init__   s    	c         C   s"   |  j  d  k	 r t d ƒ ‚ n  d  S(   NsC   Internal error: interrupt not disabled before it goes out of scope.(   R   t   Nonet   RuntimeError(   R   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/python_utils/signal_utils.pyt   __del__   s    c         C   s5   |  j  d  k	 r1 t j t j |  j  ƒ d  |  _  n  d  S(   N(   R   R
   R   R   (   R   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/python_utils/signal_utils.pyt   disable   s    c         C   sÄ   |  j  d 7_  t j j ƒ  t j j ƒ  Hd |  j  GHH|  j  |  j k r\ |  j ƒ  t ‚ n  d GH|  j d k r² |  j |  j  } d | d d g t d t	 | d d ƒ ƒ f GHn  Ht j j ƒ  d  S(   Ni   s   Keyboard interrupt #%d.s+   Continuing to next checkpoint. Please wait.i    s6   To stop immediately send %d more keyboard interrupt%s.t    t   s(
   R   t   syst   stdoutt   flusht   stderrR   R   t   KeyboardInterruptt   maxt   min(   R   t   signumt   framet   n_left(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/python_utils/signal_utils.pyR      s     
	/(   t   __name__t
   __module__R	   R   R   R   (    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/python_utils/signal_utils.pyR      s   		(   t
   __future__R    R   R   t   objectR   (    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/python_utils/signal_utils.pyt   <module>   s   