| 13 | |
| 14 | |
| 15 | class PropagatingThread(Thread): |
| 16 | def run(self): |
| 17 | self.exc = None |
| 18 | try: |
| 19 | if hasattr(self, '_Thread__target'): |
| 20 | |
| 21 | self.ret = self._Thread__target(*self._Thread__args, **self._Thread__kwargs) |
| 22 | else: |
| 23 | self.ret = self._target(*self._args, **self._kwargs) |
| 24 | except BaseException as e: |
| 25 | self.exc = e |
| 26 | |
| 27 | def join(self, timeout=None): |
| 28 | super(PropagatingThread, self).join(timeout) |
| 29 | if self.exc: |
| 30 | raise self.exc |
| 31 | return self.ret |
| 32 | |
| 33 | |
| 34 | def function_with_timeout(func, args, timeout): |
no outgoing calls
no test coverage detected