home *** CD-ROM | disk | FTP | other *** search
/ Freelog 116 / FreelogNo116-JuilletSeptembre2013.iso / Bureautique / gImageReader / gimagereader_0.9-1_win32.exe / bin / unittest / signals.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2011-03-24  |  2KB  |  65 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.7)
  3.  
  4. import signal
  5. import weakref
  6. from functools import wraps
  7. __unittest = True
  8.  
  9. class _InterruptHandler(object):
  10.     
  11.     def __init__(self, default_handler):
  12.         self.called = False
  13.         self.default_handler = default_handler
  14.  
  15.     
  16.     def __call__(self, signum, frame):
  17.         installed_handler = signal.getsignal(signal.SIGINT)
  18.         if installed_handler is not self:
  19.             self.default_handler(signum, frame)
  20.         if self.called:
  21.             self.default_handler(signum, frame)
  22.         self.called = True
  23.         for result in _results.keys():
  24.             result.stop()
  25.         
  26.  
  27.  
  28. _results = weakref.WeakKeyDictionary()
  29.  
  30. def registerResult(result):
  31.     _results[result] = 1
  32.  
  33.  
  34. def removeResult(result):
  35.     return bool(_results.pop(result, None))
  36.  
  37. _interrupt_handler = None
  38.  
  39. def installHandler():
  40.     global _interrupt_handler
  41.     if _interrupt_handler is None:
  42.         default_handler = signal.getsignal(signal.SIGINT)
  43.         _interrupt_handler = _InterruptHandler(default_handler)
  44.         signal.signal(signal.SIGINT, _interrupt_handler)
  45.  
  46.  
  47. def removeHandler(method = None):
  48.     if method is not None:
  49.         
  50.         def inner(*args, **kwargs):
  51.             initial = signal.getsignal(signal.SIGINT)
  52.             removeHandler()
  53.             
  54.             try:
  55.                 return method(*args, **kwargs)
  56.             finally:
  57.                 signal.signal(signal.SIGINT, initial)
  58.  
  59.  
  60.         inner = (wraps(method),)(inner)
  61.         return inner
  62.     if None is not None:
  63.         signal.signal(signal.SIGINT, _interrupt_handler.default_handler)
  64.  
  65.