Исходный код EJIO.utils.config.inject
## /utils/config/inject.py
import builtins
from typing import Any, overload
__all__ = [
'inject_to_builtins',
]
@overload
def inject_to_builtins(mapping: dict[str, Any], /) -> None:
...
@overload
def inject_to_builtins(name: str, attribute: Any, /) -> None:
...
[документация]
def inject_to_builtins(first: str | dict[str, Any], second: Any = None, /) -> None:
"""
Универсальная функция для инъекции атрибутов во встроенное пространство имен builtins.
:param first: Словарь с объектами или ключ для регистрации.
:param second: Объект для регистрации в случае, если первый аргумент - ключ.
:raises TypeError: Если первый аргумент не словарь и не строка.
"""
if isinstance(first, dict):
for name, attr in first.items():
setattr(builtins, name, attr)
elif isinstance(first, str):
setattr(builtins, first, second)
else:
raise TypeError("First argument must be a string or a dictionary.")