Mirrowel
feat(model-info): ✨ add provider priority system and enhanced model metadata
c4e297f
from typing import TYPE_CHECKING, Dict, Type
from .client import RotatingClient
# For type checkers (Pylint, mypy), import PROVIDER_PLUGINS statically
# At runtime, it's lazy-loaded via __getattr__
if TYPE_CHECKING:
from .providers import PROVIDER_PLUGINS
from .providers.provider_interface import ProviderInterface
from .model_info_service import ModelInfoService, ModelInfo, ModelMetadata
__all__ = [
"RotatingClient",
"PROVIDER_PLUGINS",
"ModelInfoService",
"ModelInfo",
"ModelMetadata",
]
def __getattr__(name):
"""Lazy-load PROVIDER_PLUGINS and ModelInfoService to speed up module import."""
if name == "PROVIDER_PLUGINS":
from .providers import PROVIDER_PLUGINS
return PROVIDER_PLUGINS
if name == "ModelInfoService":
from .model_info_service import ModelInfoService
return ModelInfoService
if name == "ModelInfo":
from .model_info_service import ModelInfo
return ModelInfo
if name == "ModelMetadata":
from .model_info_service import ModelMetadata
return ModelMetadata
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")