Temporarily replace a module in sys.modules with an empty namespace
| 57 | |
| 58 | |
| 59 | class _TempModule(object): |
| 60 | """Temporarily replace a module in sys.modules with an empty namespace""" |
| 61 | |
| 62 | def __init__(self, mod_name): |
| 63 | self.mod_name = mod_name |
| 64 | self.module = types.ModuleType(mod_name) |
| 65 | self._saved_module = [] |
| 66 | |
| 67 | def __enter__(self): |
| 68 | mod_name = self.mod_name |
| 69 | try: |
| 70 | self._saved_module.append(sys.modules[mod_name]) |
| 71 | except KeyError: |
| 72 | pass |
| 73 | sys.modules[mod_name] = self.module |
| 74 | return self |
| 75 | |
| 76 | def __exit__(self, *args): |
| 77 | if self._saved_module: |
| 78 | sys.modules[self.mod_name] = self._saved_module[0] |
| 79 | else: |
| 80 | del sys.modules[self.mod_name] |
| 81 | self._saved_module = [] |
| 82 | |
| 83 | |
| 84 | class _ModifiedArgv0(object): |
no outgoing calls
no test coverage detected