Skip to content

Commit afc07ed

Browse files
Lazy load types.proxy.management_endpoints.ui_sso and types.secret_managers.main imports
- Make DefaultTeamSSOParams and LiteLLM_UpperboundKeyGenerateParams lazy-loaded via __getattr__ - Make KeyManagementSystem lazy-loaded via __getattr__ - Keep KeyManagementSettings as direct import (needed for _key_management_settings initialization) - Add TYPE_CHECKING imports for type annotations - Significantly reduces import-time memory usage
1 parent f8b80bc commit afc07ed

File tree

1 file changed

+24
-6
lines changed

1 file changed

+24
-6
lines changed

litellm/__init__.py

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,17 +74,14 @@
7474
DEFAULT_SOFT_BUDGET,
7575
DEFAULT_ALLOWED_FAILS,
7676
)
77-
from litellm.types.secret_managers.main import (
78-
KeyManagementSystem,
79-
KeyManagementSettings,
80-
)
8177
from litellm.types.utils import LlmProviders, PriorityReservationSettings
8278
if TYPE_CHECKING:
8379
from litellm.integrations.custom_logger import CustomLogger
8480
from litellm.types.llms.bedrock import COHERE_EMBEDDING_INPUT_TYPES
8581
from litellm.types.guardrails import GuardrailItem
8682
from litellm.types.utils import CredentialItem, BudgetConfig, PriorityReservationDict, StandardKeyGenerationConfig, LlmProviders, PriorityReservationSettings
8783
from litellm.types.proxy.management_endpoints.ui_sso import DefaultTeamSSOParams, LiteLLM_UpperboundKeyGenerateParams
84+
from litellm.types.secret_managers.main import KeyManagementSystem, KeyManagementSettings
8885
import httpx
8986
import dotenv
9087
from litellm.llms.custom_httpx.async_client_cleanup import register_async_client_cleanup
@@ -440,8 +437,11 @@ def __getattr__(self, name: str) -> Any:
440437
None # list of instantiated key management clients - e.g. azure kv, infisical, etc.
441438
)
442439
_google_kms_resource_name: Optional[str] = None
443-
_key_management_system: Optional[KeyManagementSystem] = None
444-
_key_management_settings: KeyManagementSettings = KeyManagementSettings()
440+
_key_management_system: Optional["KeyManagementSystem"] = None
441+
# _key_management_settings is lazy-loaded but needs to be initialized early
442+
# Import KeyManagementSettings here to avoid circular import issues
443+
from litellm.types.secret_managers.main import KeyManagementSettings
444+
_key_management_settings: "KeyManagementSettings" = KeyManagementSettings()
445445
#### PII MASKING ####
446446
output_parse_pii: bool = False
447447
#############################################
@@ -1818,6 +1818,21 @@ def _lazy_import_ui_sso(name: str) -> Any:
18181818
raise AttributeError(f"UI SSO lazy import: unknown attribute {name!r}")
18191819

18201820

1821+
def _lazy_import_secret_managers(name: str) -> Any:
1822+
"""Lazy import for types.secret_managers.main module - imports only the requested item by name."""
1823+
if name == "KeyManagementSystem":
1824+
from litellm.types.secret_managers.main import KeyManagementSystem as _KeyManagementSystem
1825+
globals()["KeyManagementSystem"] = _KeyManagementSystem
1826+
return _KeyManagementSystem
1827+
1828+
if name == "KeyManagementSettings":
1829+
from litellm.types.secret_managers.main import KeyManagementSettings as _KeyManagementSettings
1830+
globals()["KeyManagementSettings"] = _KeyManagementSettings
1831+
return _KeyManagementSettings
1832+
1833+
raise AttributeError(f"Secret managers lazy import: unknown attribute {name!r}")
1834+
1835+
18211836
def __getattr__(name: str) -> Any:
18221837
"""Lazy import for cost_calculator, litellm_logging, and utils functions."""
18231838
if name in {"completion_cost", "response_cost_calculator", "cost_per_token"}:
@@ -1870,6 +1885,9 @@ def __getattr__(name: str) -> Any:
18701885
if name in {"DefaultTeamSSOParams", "LiteLLM_UpperboundKeyGenerateParams"}:
18711886
return _lazy_import_ui_sso(name)
18721887

1888+
if name in {"KeyManagementSystem", "KeyManagementSettings"}:
1889+
return _lazy_import_secret_managers(name)
1890+
18731891
if name == "provider_list":
18741892
provider_list_val = list(LlmProviders)
18751893
globals()["provider_list"] = provider_list_val

0 commit comments

Comments
 (0)