diff --git a/gen_wrap.py b/gen_wrap.py index d77449a4a9396eb722454ee0dea370b3bbb5a7f9..72c47952c6d5ffeffa6c9d5789bbabe4e7141dfd 100644 --- a/gen_wrap.py +++ b/gen_wrap.py @@ -315,7 +315,6 @@ from __future__ import print_function import six import sys -import signal import logging import threading @@ -432,22 +431,22 @@ class _ManagedCString(object): libc.free(self.data) -class DelayedKeyboardInterrupt(object): - def __enter__(self): - self.signal_received = False - if isinstance(threading.current_thread(), threading._MainThread): - self.old_handler = signal.getsignal(signal.SIGINT) - signal.signal(signal.SIGINT, self.handler) +if _PY3: + class DelayedKeyboardInterrupt(object): + def __enter__(self): + self.previous_switch_interval = sys.getswitchinterval() + sys.setswitchinterval(10000000000000) - def handler(self, signal, frame): - self.signal_received = (signal, frame) - logging.debug('SIGINT received. Delaying KeyboardInterrupt.') + def __exit__(self, type, value, traceback): + sys.setswitchinterval(self.previous_switch_interval) +else: + class DelayedKeyboardInterrupt(object): + def __enter__(self): + self.previous_check_interval = sys.getcheckinterval() + sys.setcheckinterval(10000000000000) - def __exit__(self, type, value, traceback): - if isinstance(threading.current_thread(), threading._MainThread): - signal.signal(signal.SIGINT, self.old_handler) - if self.signal_received: - self.old_handler(*self.signal_received) + def __exit__(self, type, value, traceback): + sys.setcheckinterval(self.previous_check_interval) """ CLASS_MAP = {