Module mpython.utils
Classes
class DelayedImport-
Expand source code
class DelayedImport: """A utility to delay the import of modules or variables. Until they are imported, import paths are wrapped in a `DelayedImportElement` object. The first time an element is accessed, it triggers the underlying import and assign the imported module or object into the `DelayedImport` child class, while getting rid of the `DelayedImportElement` wrapper. Thereby, the next time the element is accessed, the module is directly obtained. This strategy minimizes overhead on subsequent calls (no need to test whether the module has already been imported or not). Example ------- ```python # module_with_definitions.py class _imports(DelayedImport): Array = 'mpython.array.Array' Cell = 'mpython.cell.Cell' def foo(): Array = _imports.Array Cell = _imports.Cell ``` """ def __init_subclass__(cls): for key, val in cls.__dict__.items(): if key.startswith("__"): continue setattr(cls, key, DelayedImportElement(key, val))A utility to delay the import of modules or variables.
Until they are imported, import paths are wrapped in a
DelayedImportElementobject. The first time an element is accessed, it triggers the underlying import and assign the imported module or object into theDelayedImportchild class, while getting rid of theDelayedImportElementwrapper. Thereby, the next time the element is accessed, the module is directly obtained. This strategy minimizes overhead on subsequent calls (no need to test whether the module has already been imported or not).Example
# module_with_definitions.py class _imports(DelayedImport): Array = 'mpython.array.Array' Cell = 'mpython.cell.Cell' def foo(): Array = _imports.Array Cell = _imports.CellSubclasses
- mpython.array._imports
- mpython.core.base_types._imports
- mpython.core.delayed_types._imports
- mpython.core.mixin_types._imports
- mpython.core.wrapped_types._imports
- mpython.struct._imports
class DelayedImportElement (name, import_path=None)-
Expand source code
def __get__(self, instance, owner): assert instance is None imported = self._import() setattr(owner, self.name, imported) return imported