|
|
@@ -123,13 +123,15 @@ class Timeout(contextlib.ContextDecorator): |
|
|
|
raise TimeoutError(self.timeout_message) |
|
|
|
|
|
|
|
def __enter__(self): |
|
|
|
signal.signal(signal.SIGALRM, self._timeout_handler) # Set handler for SIGALRM |
|
|
|
signal.alarm(self.seconds) # start countdown for SIGALRM to be raised |
|
|
|
if platform.system() != 'Windows': # not supported on Windows |
|
|
|
signal.signal(signal.SIGALRM, self._timeout_handler) # Set handler for SIGALRM |
|
|
|
signal.alarm(self.seconds) # start countdown for SIGALRM to be raised |
|
|
|
|
|
|
|
def __exit__(self, exc_type, exc_val, exc_tb): |
|
|
|
signal.alarm(0) # Cancel SIGALRM if it's scheduled |
|
|
|
if self.suppress and exc_type is TimeoutError: # Suppress TimeoutError |
|
|
|
return True |
|
|
|
if platform.system() != 'Windows': |
|
|
|
signal.alarm(0) # Cancel SIGALRM if it's scheduled |
|
|
|
if self.suppress and exc_type is TimeoutError: # Suppress TimeoutError |
|
|
|
return True |
|
|
|
|
|
|
|
|
|
|
|
class WorkingDirectory(contextlib.ContextDecorator): |