IPython Documentation

Table Of Contents

Previous topic


Next topic


This Page


Module: lib.deepreload

A module to change reload() so that it acts recursively. To enable it type:

import __builtin__, deepreload
__builtin__.reload = deepreload.reload

You can then disable it with:

__builtin__.reload = deepreload.original_reload

Alternatively, you can add a dreload builtin alongside normal reload with:

__builtin__.dreload = deepreload.reload

This code is almost entirely based on knee.py, which is a Python re-implementation of hierarchical module import.


IPython.lib.deepreload.add_submodule(mod, submod, fullname, subname)

mod.{subname} = submod

IPython.lib.deepreload.deep_import_hook(name, globals=None, locals=None, fromlist=None, level=-1)

Replacement for __import__()


Replacement for reload().

IPython.lib.deepreload.ensure_fromlist(mod, fromlist, buf, recursive)

Handle ‘from module import a, b, c’ imports.

IPython.lib.deepreload.get_parent(globals, level)

Return the package that an import is being performed in. If globals comes from the module foo.bar.bat (not itself a package), this returns the sys.modules entry for foo.bar. If globals is from a package’s __init__.py, the package’s entry in sys.modules is returned.

If globals doesn’t come from a package or a module in a package, or a corresponding entry is not found in sys.modules, None is returned.

IPython.lib.deepreload.import_submodule(mod, subname, fullname)
IPython.lib.deepreload.load_next(mod, altmod, name, buf)

altmod is either None or same as mod

IPython.lib.deepreload.reload(module, exclude=['sys', 'os.path', '__builtin__', '__main__'])

Recursively reload all modules used in the given module. Optionally takes a list of modules to exclude from reloading. The default exclude list contains sys, __main__, and __builtin__, to prevent, e.g., resetting display, exception, and io hooks.

IPython.lib.deepreload.replace_import_hook(*args, **kwds)