(self)
| 69 | self.entered = None |
| 70 | |
| 71 | def __enter__(self): |
| 72 | if self.entered is not None: |
| 73 | raise RuntimeError("Context is not reentrant") |
| 74 | self.entered = deque() |
| 75 | vars = [] |
| 76 | try: |
| 77 | for mgr in self.managers: |
| 78 | vars.append(mgr.__enter__()) |
| 79 | self.entered.appendleft(mgr) |
| 80 | except: |
| 81 | if not self.__exit__(*sys.exc_info()): |
| 82 | raise |
| 83 | return vars |
| 84 | |
| 85 | def __exit__(self, *exc_info): |
| 86 | # Behave like nested with statements |