(self, callable, *args, **kwargs)
| 28 | self._prev_context = None |
| 29 | |
| 30 | def run(self, callable, *args, **kwargs): |
| 31 | if self._prev_context is not None: |
| 32 | raise RuntimeError( |
| 33 | 'cannot enter context: {} is already entered'.format(self)) |
| 34 | |
| 35 | self._prev_context = _get_context() |
| 36 | try: |
| 37 | _set_context(self) |
| 38 | return callable(*args, **kwargs) |
| 39 | finally: |
| 40 | _set_context(self._prev_context) |
| 41 | self._prev_context = None |
| 42 | |
| 43 | def copy(self): |
| 44 | new = Context() |