import signal import weakref from functools import wraps __unittest = True class _InterruptHandler(object): def __init__(self, default_handler): self.called = False self.original_handler = default_handler if isinstance(default_handler, int): if default_handler == signal.SIG_DFL: # Pretend it's signal.default_int_handler instead. default_handler = signal.default_int_handler elif default_handler == signal.SIG_IGN: # Not quite the same thing as SIG_IGN, but the closest we # can make it: do nothing. def default_handler(unused_signum, unused_frame): pass else: raise TypeError("expected SIGINT signal handler to be " "signal.SIG_IGN, signal.SIG_DFL, or a " "callable object") self.default_handler = default_handler def __call__(self, signum, frame): installed_handler = signal.getsignal(signal.SIGINT) if installed_handler is not self: # if we aren't the installed handler, then delegate immediately # to the default handler self.default_handler(signum, frame) if self.called: self.default_handler(signum, frame) self.called = True for result in _results.keys(): result.stop() _results = weakref.WeakKeyDictionary() def registerResult(result): _results[result] = 1 def removeResult(result): return bool(_results.pop(result, None)) _interrupt_handler = None def installHandler(): global _interrupt_handler if _interrupt_handler is None: default_handler = signal.getsignal(signal.SIGINT) _interrupt_handler = _InterruptHandler(default_handler) signal.signal(signal.SIGINT, _interrupt_handler) def removeHandler(method=None): if method is not None: @wraps(method) def inner(*args, **kwargs): initial = signal.getsignal(signal.SIGINT) removeHandler() try: return method(*args, **kwargs) finally: signal.signal(signal.SIGINT, initial) return inner global _interrupt_handler if _interrupt_handler is not None: signal.signal(signal.SIGINT, _interrupt_handler.original_handler)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
test | Folder | 0755 |
|
|
.__init__.pyo.40009 | File | 2.97 KB | 0644 |
|
.__main__.pyo.40009 | File | 488 B | 0644 |
|
.case.pyo.40009 | File | 40.66 KB | 0644 |
|
.main.pyo.40009 | File | 7.82 KB | 0644 |
|
.result.pyo.40009 | File | 7.74 KB | 0644 |
|
.runner.pyo.40009 | File | 7.47 KB | 0644 |
|
.signals.pyo.40009 | File | 2.7 KB | 0644 |
|
.suite.pyo.40009 | File | 10.29 KB | 0644 |
|
.util.pyo.40009 | File | 4.41 KB | 0644 |
|
__init__.py | File | 2.72 KB | 0644 |
|
__init__.pyc | File | 2.97 KB | 0644 |
|
__init__.pyo | File | 2.97 KB | 0644 |
|
__main__.py | File | 238 B | 0644 |
|
__main__.pyc | File | 488 B | 0644 |
|
__main__.pyo | File | 488 B | 0644 |
|
case.py | File | 42.89 KB | 0644 |
|
case.pyc | File | 40.66 KB | 0644 |
|
case.pyo | File | 40.66 KB | 0644 |
|
loader.py | File | 13.11 KB | 0644 |
|
loader.pyc | File | 11.06 KB | 0644 |
|
loader.pyo | File | 10.93 KB | 0644 |
|
main.py | File | 8.87 KB | 0644 |
|
main.pyc | File | 7.82 KB | 0644 |
|
main.pyo | File | 7.82 KB | 0644 |
|
result.py | File | 6.16 KB | 0644 |
|
result.pyc | File | 7.74 KB | 0644 |
|
result.pyo | File | 7.74 KB | 0644 |
|
runner.py | File | 6.38 KB | 0644 |
|
runner.pyc | File | 7.47 KB | 0644 |
|
runner.pyo | File | 7.47 KB | 0644 |
|
signals.py | File | 2.35 KB | 0644 |
|
signals.pyc | File | 2.7 KB | 0644 |
|
signals.pyo | File | 2.7 KB | 0644 |
|
suite.py | File | 9.58 KB | 0644 |
|
suite.pyc | File | 10.29 KB | 0644 |
|
suite.pyo | File | 10.29 KB | 0644 |
|
util.py | File | 4.5 KB | 0644 |
|
util.pyc | File | 4.41 KB | 0644 |
|
util.pyo | File | 4.41 KB | 0644 |
|