Nick Coghlan wrote: > With the new abstract base classes in Py3k, I can see it being > worthwhile to have a standard mechanism to allow callbacks to be > registered for execution when particular modules are first imported. > > For example, to handle the commented out case above: > > @imp.imported('decimal') > def register(decimal): > Inexact.register(decimal.Decimal)
Your proposed hook is a post import hook. Could we use a pre import hook that is called before the module is loaded? I can think of several use cases: * modify the search path sys.path dynamically * issue deprecation warnings * modify the name of the module which is going to be imported * return a different module def preImportHook(name: str) -> (None, str, ModuleType instance): """The pre import hook is run before the module is loaded and inserted into sys modules Return values:: * None No special treatment * string: new_name The module "new_name" is loaded instead of the module "name" * module object The module object is inserted into sys.modules and returned by the import statement. * raise Exception The import is stopped and a chained ImportError is raised """ The pre import hook could be useful for http://www.python.org/dev/peps/pep-0364/. The pre import hook can probably be implemented in pure Python with a meta path hook as described in http://www.python.org/dev/peps/pep-0302/. I see the pre import hook as a lightweight meta path hook with an easy to use interface. Christian _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com