diff --git a/conf/script/src/utils/meta_prog/encapsulation/__init__.py b/conf/script/src/utils/meta_prog/encapsulation/__init__.py new file mode 100644 index 00000000..1cc9d89a --- /dev/null +++ b/conf/script/src/utils/meta_prog/encapsulation/__init__.py @@ -0,0 +1 @@ +from .export import * diff --git a/conf/script/src/utils/meta_prog/encapsulation/export.py b/conf/script/src/utils/meta_prog/encapsulation/export.py new file mode 100644 index 00000000..d7a72a21 --- /dev/null +++ b/conf/script/src/utils/meta_prog/encapsulation/export.py @@ -0,0 +1,22 @@ +import inspect +import typing + +__all__ = ['export'] + + +def export(func: typing.Callable): + attribute_name_all: typing.Final[str] = '__all__' + module_api: list[str] + + module = inspect.getmodule(func) + func_api = func.__qualname__ + + if not hasattr(module, attribute_name_all): + module_api = [] + setattr(module, attribute_name_all, module_api) + else: + module_api = getattr(module, attribute_name_all) + + module_api.append(func_api) + + return func