On Wed, May 29, 2013 at 11:58 AM, R. David Murray <rdmur...@bitdance.com> wrote: > On Thu, 30 May 2013 00:59:02 +1000, Nick Coghlan <ncogh...@gmail.com> wrote: >> On Thu, May 30, 2013 at 12:47 AM, Brett Cannon <br...@python.org> wrote: >> > I am willing to compromise to module_to_initialize, module_to_init, or >> > module_to_load. Pick one. =) >> >> I see this as *really* similar to a database transaction, and those >> start with "session.begin()". >> >> Could you tolerate "with begin_module_init(name) as m:"? > > But for a transaction, it is 'with session', not 'with begin_session'. > > With 'begin_module_init' I would have no idea what 'm' was. With > Brett's 'module_to_init' I have an intuitive idea about what 'm' is. > And if 'm' isn't a module, then module_manager would be better. > > (Note that I haven't grokked what Brett's context manager is actually > doing/returning, I'm speaking here as an ignorant reader of someone > else's code :)
In case you want to suggest a name, the context manager returns the module that should be initialized/loaded. So typical usage will be:: class Loader: def load_module(self, fullname): with importlib.util.module_to_init(fullname) as module: # Load/initialize the module return module Basically the manager either gets the module from sys.modules if it is already there (a reload) or creates a new module and sticks it into sys.modules so other imports will grab the right module object. If there is an exception and the module was new, it deletes it from sys.modules to prevent stale modules from sticking around. _______________________________________________ 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