refactor: read lazy attributes with getattr instead of a TypedDict wrapper (#50543)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
Mateo Wang 2026-11-07 10:56:30 -08:00 • committed by GitHub
parent 268bc0345c
commit cdbb487926
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -6,8 +6,6 @@ from collections.abc import Callable, Mapping
from types import MappingProxyType, ModuleType
from typing import TYPE_CHECKING, Final
from typing_extensions import ReadOnly, TypedDict
from ._lazy_imports_registry import LITELLM_ATTRIBUTES, UTILS_ATTRIBUTES
if TYPE_CHECKING:
@ -61,22 +59,14 @@ def _cache(namespace: str, name: str, value: object) -> object:
return value
class _AttributeView(TypedDict):
value: ReadOnly[object]
def _module_attribute(module: ModuleType, attr_name: str) -> object:
attribute: Final[_AttributeView] = {"value": getattr(module, attr_name)}
return attribute["value"]
def _import(namespace: str, name: str, location: tuple[str, str]) -> object:
cached: Final = _cached(namespace, name)
if cached is not _NOT_LOADED:
return cached
module_path, attr_name = location
module: Final[ModuleType] = importlib.import_module(module_path, package="litellm")
return _cache(namespace, name, _module_attribute(module, attr_name))
attribute: Final[object] = getattr(module, attr_name)
return _cache(namespace, name, attribute)
def _instance_of(class_name: str) -> Callable[[], object]: