File: //proc/self/root/proc/3/root/usr/lib/python2.4/ihooks.pyc
mς
=5Dc @ sH d Z d k Z d k Z d k Z d k Z d d d d d d d d g Z d
Z d k l Z l Z l Z d k l
Z
l Z l Z e
Z
e Z d
f d YZ d e f d YZ d e f d YZ d e f d YZ d e f d YZ d e f d YZ d e f d YZ d Z d a d d Z d Z d S( s, Import hook support.
Consistent use of this module will make it possible to change the
different mechanisms involved in loading modules independently.
While the built-in module imp exports interfaces to the built-in
module searching and loading algorithm, and it is possible to replace
the built-in function __import__ in order to change the semantics of
the import statement, until now it has been difficult to combine the
effect of different __import__ hacks, like loading modules from URLs
by rimport.py, or restricted execution by rexec.py.
This module defines three new concepts:
1) A "file system hooks" class provides an interface to a filesystem.
One hooks class is defined (Hooks), which uses the interface provided
by standard modules os and os.path. It should be used as the base
class for other hooks classes.
2) A "module loader" class provides an interface to search for a
module in a search path and to load it. It defines a method which
searches for a module in a single directory; by overriding this method
one can redefine the details of the search. If the directory is None,
built-in and frozen modules are searched instead.
Two module loader class are defined, both implementing the search
strategy used by the built-in __import__ function: ModuleLoader uses
the imp module's find_module interface, while HookableModuleLoader
uses a file system hooks class to interact with the file system. Both
use the imp module's load_* interfaces to actually load the module.
3) A "module importer" class provides an interface to import a
module, as well as interfaces to reload and unload a module. It also
provides interfaces to install and uninstall itself instead of the
default __import__ and reload (and unload) functions.
One module importer class is defined (ModuleImporter), which uses a
module loader instance passed in (by default HookableModuleLoader is
instantiated).
The classes defined here should be used as base classes for extended
functionality along those lines.
If a module importer class supports dotted names, its import_module()
must return a different value depending on whether it is called on
behalf of a "from ... import ..." statement or not. (This is caused
by the way the __import__ hook is used by the Python interpreter.) It
would also do wise to install a different version of reload().
Nt BasicModuleLoadert Hookst ModuleLoadert FancyModuleLoadert BasicModuleImportert ModuleImportert installt uninstalli ( s C_EXTENSIONs PY_SOURCEs PY_COMPILED( s C_BUILTINs PY_FROZENs
PKG_DIRECTORYt _Verbosec B s8 t Z e d Z d Z d Z d Z d Z RS( Nc C s
| | _ d S( N( t verboset self( R
R ( ( t /usr/lib/python2.4/ihooks.pyt __init__I s c C s | i S( N( R
R ( R
( ( R t get_verboseL s c C s
| | _ d S( N( R R
( R
R ( ( R t set_verboseO s c G s | i o | i | n d S( N( R
R t messaget args( R
R ( ( R t noteT s
c G s | o
| | GHn | GHd S( N( R t format( R
R R ( ( R R X s
( t __name__t
__module__t VERBOSER R
R R R ( ( ( R R G s
c B s>