On Sat, Apr 21, 2012 at 21:02, Eric Snow <[email protected]>wrote:
> It looks like the test suite accommodates a stable import state to
> some extent, but would it be worth having a PEP-405-esque context
> manager to help with this? For example, something along these lines:
>
>
> class ImportState:
> # sys.modules is part of the interpreter state, so
> # repopulate (don't replace)
> def __enter__(self):
> self.path = sys.path[:]
> self.modules = sys.modules.copy()
> self.meta_path = sys.meta_path[:]
> self.path_hooks = sys.path_hooks[:]
> self.path_importer_cache = sys.path_importer_cache.copy()
>
> sys.path = site.getsitepackages()
> sys.modules.clear()
> sys.meta_path = []
> sys.path_hooks = []
> sys.path_importer_cache = {}
>
> def __exit__(self, *args, **kwargs):
> sys.path = self.path
> sys.modules.clear()
> sys.modules.update(self.modules)
> sys.meta_path = self.meta_path
> sys.path_hooks = self.path_hooks
> sys.path_importer_cache = self.path_importer_cache
>
>
>
> # in some unit test:
> with ImportState():
> ... # tests
>
That practically all done for you with a combination of
importlib.test.util.uncache and importlib.test.util.import_state.
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com