epy.lazy_api_imports

epy.lazy_api_imports#

etils.epy.lazy_api_imports(globals_: dict[str, Any], *, error_msg: str | None = None) collections.abc.Iterator[None][source]#

Lazy-import an API (__init__.py).

Usage:

with epy.lazy_api_imports(globals()):
  from my_project import Obj1
  from my_project import OtherObj
  from my_project import my_function

Contrary to epy.lazy_imports() which works on modules (and resolve the imports) during first access. This function is intended to be used on __init__.py files, such as all imported symbols are lazy and only resolved when the symbol is accessed.

Parameters:
  • globals – The module globals(). Will be updated to add a __getattr__

  • error_msg – A additional message to append to the ImportError if the import fails. Can use {symbol_name} dynamic placeholder.

Yields:

None