File size: 1,174 Bytes
a42743f
 
79a70b2
a42743f
 
 
 
 
 
c4e297f
 
 
 
 
 
 
 
 
79a70b2
a42743f
 
b6a47c9
a42743f
 
c4e297f
a42743f
b6a47c9
 
c4e297f
b6a47c9
 
 
c4e297f
b6a47c9
c4e297f
 
 
 
a42743f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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}")