Loader Utility¶
The loader utility detecting and dynamically loading of class modules during runtime. Detection can be limited to classes inheriting from a specified class.
Warning
The loader utility only works with new style classes which inherit at least
from object.
Note
The loader utility works best with Python modules or packages containing only Python modules, and not sub-packages (recursive search does not properly work).
Detect Class Modules¶
-
xobox.utils.loader.detect_class_modules(mod, parent=<class 'object'>)[source]¶ Detect available class modules or packages and return a dictionary of valid class names, referring to the module they are contained within.
Parameters: - mod (str) – the module or package to be scanned for classes
- parent – the class potential candidates must be derived off
Returns: dictionary of detected classes, mapping the class name to the module name in which the class has been detected
Example:
>>> from xobox.utils.loader import detect_class_modules
>>> detect_class_modules('queue', object)
{'deque': 'queue', 'Queue': 'queue', 'Empty': 'queue', 'PriorityQueue': 'queue', 'Full': 'queue', 'LifoQueue': 'queue'}
>>> detect_class_modules('zlib', object)
{'error': 'zlib'}
>>> detect_class_modules('math', object)
{}
Load Member¶
-
xobox.utils.loader.load_member(mod, member)[source]¶ Load a member (function, class, …) from a module and return it
Parameters: Returns: reference to the loaded member (i. e. class or function pointer)
Example:
>>> from xobox.utils.loader import load_member
>>> f = load_member('math', 'ceil')
>>> f(1.4)
2