github.com/grumpyhome/grumpy@v0.3.1-0.20201208125205-7b775405bdf1/grumpy-runtime-src/third_party/stdlib/unittest_signals.py (about)

     1  # TODO: support signal
     2  # import signal
     3  # import weakref
     4  
     5  # from functools import wraps
     6  import functools
     7  wraps = functools.wraps
     8  
     9  __unittest = True
    10  
    11  
    12  class _InterruptHandler(object):
    13      pass
    14  #    def __init__(self, default_handler):
    15  #         self.called = False
    16  #         self.original_handler = default_handler
    17  #         if isinstance(default_handler, int):
    18  #             print 'signal not supported yet'
    19  #             if default_handler == signal.SIG_DFL:
    20  #                 # Pretend it's signal.default_int_handler instead.
    21  #                 default_handler = signal.default_int_handler
    22  #             elif default_handler == signal.SIG_IGN:
    23  #                 # Not quite the same thing as SIG_IGN, but the closest we
    24  #                 # can make it: do nothing.
    25  #                 def default_handler(unused_signum, unused_frame):
    26  #                     pass
    27  #             else:
    28  #                 raise TypeError("expected SIGINT signal handler to be "
    29  #                                 "signal.SIG_IGN, signal.SIG_DFL, or a "
    30  #                                 "callable object")
    31  #         self.default_handler = default_handler
    32  
    33  #     def __call__(self, signum, frame):
    34  #         installed_handler = signal.getsignal(signal.SIGINT)
    35  #         if installed_handler is not self:
    36  #             # if we aren't the installed handler, then delegate immediately
    37  #             # to the default handler
    38  #             self.default_handler(signum, frame)
    39  
    40  #         if self.called:
    41  #             self.default_handler(signum, frame)
    42  #         self.called = True
    43  #         for result in _results.keys():
    44  #             result.stop()
    45  
    46  # _results = weakref.WeakKeyDictionary()
    47  _results = {}
    48  def registerResult(result):
    49      _results[result] = 1
    50  
    51  def removeResult(result):
    52      return bool(_results.pop(result, None))
    53  
    54  _interrupt_handler = None
    55  def installHandler():
    56      global _interrupt_handler
    57      pass
    58  #     if _interrupt_handler is None:
    59  #         default_handler = signal.getsignal(signal.SIGINT)
    60  #         _interrupt_handler = _InterruptHandler(default_handler)
    61  #         signal.signal(signal.SIGINT, _interrupt_handler)
    62  
    63  
    64  def removeHandler(method=None):
    65      pass
    66  #     if method is not None:
    67  #         # @wraps(method)
    68  #         def inner(*args, **kwargs):
    69  #             initial = signal.getsignal(signal.SIGINT)
    70  #             removeHandler()
    71  #             try:
    72  #                 return method(*args, **kwargs)
    73  #             finally:
    74  #                 signal.signal(signal.SIGINT, initial)
    75  #         inner = wraps(method)(inner)
    76  #         return inner
    77  
    78  #     global _interrupt_handler
    79  #     if _interrupt_handler is not None:
    80  #         signal.signal(signal.SIGINT, _interrupt_handler.original_handler)