Brett Cannon wrote: > I don't want to move it because this isn't some idea for a new feature > that may or may not be useful; this isn't an "idea", it's needed.
It is needed, but it's only really needed in the test suite. The "sys.modules hackery" needed to get a Python-only version using the existing idiom really isn't that complicated and the associated import behaviour is perfectly well defined (putting a 0 in sys.modules may currently be a bit questionable, but I'd prefer to make sure that is officially supported with the desired effect rather than trying to define a new idiom for the actual library code for handling optional optimised extension modules). So, I'm still not seeing any significant problem with providing a utility function in test.support that hides that hackery and returns the pure Python version of the module. For example, a version that allows any number of extension modules to be suppressed when importing a module (defaulting to the Foo/_Foo naming): import sys def import_python_only(mod_name, *ext_names): if not ext_names: ext_names = (("_" + mod_name),) orig_modules = {} if name in sys.modules: orig_modules[name] = sys.modules[name] del sys.modules[name] try: for name in ext_names: orig_modules[name] = sys.modules[name] sys.modules[name] = 0 py_module = importlib.import_module(mod_name) finally: for name, module in orig_modules.items(): sys.modules[name] = module return py_module Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia --------------------------------------------------------------- _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com