refactor(repositories): import proxy helpers inside the methods that use them (#45781)

Part of LIT-9423
This commit is contained in:
nate-berri 2026-10-10 12:07:53 -07:00 • committed by GitHub
parent 0fc6d4d16d
commit d1c4d0666f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 26 additions and 23 deletions

View file

@ -10,7 +10,6 @@ from collections.abc import Mapping, Sequence
from typing import TYPE_CHECKING, Any, Final, Protocol, TypeAlias
from litellm.models.credentials import CredentialItem
from litellm.proxy.common_utils.config_sync_pubsub import wrap_table_actions_for_config_sync
from litellm.repositories.base_repository import DbRecord, record_to_dict
from litellm.repositories.prisma_protocols import TableActions
@ -45,6 +44,8 @@ class CredentialsRepository:
@property
def table(self) -> "_CredentialsTable":
from litellm.proxy.common_utils.config_sync_pubsub import wrap_table_actions_for_config_sync
return wrap_table_actions_for_config_sync(
actions=self.prisma_client.db.litellm_credentialstable,
table_name="litellm_credentialstable",

View file

@ -10,8 +10,6 @@ from typing_extensions import assert_never
from litellm import constants
from litellm._logging import verbose_proxy_logger
from litellm.proxy.db.db_span import db_span
from litellm.proxy.db.prisma_query_span import sql_relation
from litellm.repositories.chunked_in import find_many_in
from litellm.repositories.daily_activity_sql import (
ExportCursor,
@ -146,6 +144,9 @@ class DailyActivityRepository:
self._proxy_reads = proxy_reads
async def _query(self, query: SqlQuery) -> tuple[Mapping[str, object], ...]:
from litellm.proxy.db.db_span import db_span
from litellm.proxy.db.prisma_query_span import sql_relation
first_line: Final = query.sql.lstrip().splitlines()[0].lstrip("(").strip()
verbose_proxy_logger.debug("DailyActivityRepository query: %s", first_line)
async with db_span("daily_activity_query", sql_relation(query.sql)):

View file

@ -9,10 +9,6 @@ from typing import TYPE_CHECKING, Final
from pydantic import ConfigDict, TypeAdapter
from litellm.models.model import LiteLLM_ProxyModelTable
from litellm.proxy.common_utils.encrypt_decrypt_utils import (
decrypt_value_helper,
encrypt_value_helper,
)
from litellm.repositories.base_repository import BaseRepository, DbRecord, record_to_dict
from litellm.repositories.prisma_protocols import TableActions
from litellm.repositories.table_repositories import PrismaTableRepository
@ -44,6 +40,8 @@ class ModelRepository(BaseRepository[LiteLLM_ProxyModelTable]):
def _encrypt_litellm_params(self, litellm_params: Mapping[str, object]) -> Mapping[str, object]:
"""Encrypt sensitive values in litellm_params."""
from litellm.proxy.common_utils.encrypt_decrypt_utils import encrypt_value_helper
encrypted: Final = {}
for key, value in litellm_params.items():
if isinstance(value, str):
@ -54,6 +52,8 @@ class ModelRepository(BaseRepository[LiteLLM_ProxyModelTable]):
def _decrypt_litellm_params(self, litellm_params: Mapping[str, object]) -> Mapping[str, object]:
"""Decrypt sensitive values in litellm_params."""
from litellm.proxy.common_utils.encrypt_decrypt_utils import decrypt_value_helper
decrypted: Final = {}
for key, value in litellm_params.items():
if isinstance(value, str):

View file

@ -9,7 +9,6 @@ methods; richer repositories live in their own modules.
from typing import TYPE_CHECKING, Any, Final, Generic
from litellm.proxy.common_utils.config_sync_pubsub import wrap_table_actions_for_config_sync
from litellm.repositories.prisma_protocols import RowT_co, TableActions
if TYPE_CHECKING:
@ -33,6 +32,8 @@ class PrismaTableRepository(Generic[RowT_co]):
@property
def table(self) -> TableActions[RowT_co]:
from litellm.proxy.common_utils.config_sync_pubsub import wrap_table_actions_for_config_sync
actions: Final[TableActions[RowT_co]] = getattr(
self.prisma_client.writer_db if self._use_writer else self.prisma_client.db, self.table_name
)

View file

@ -417,11 +417,11 @@ class TestModelRepository:
@pytest.mark.asyncio
@patch(
"litellm.repositories.model_repository.encrypt_value_helper",
"litellm.proxy.common_utils.encrypt_decrypt_utils.encrypt_value_helper",
side_effect=lambda v, **kw: f"encrypted_{v}",
)
@patch(
"litellm.repositories.model_repository.decrypt_value_helper",
"litellm.proxy.common_utils.encrypt_decrypt_utils.decrypt_value_helper",
side_effect=lambda v, **kw: v,
)
async def test_create_model_encrypts_params(self, mock_decrypt, mock_encrypt, repo):
@ -435,11 +435,11 @@ class TestModelRepository:
@pytest.mark.asyncio
@patch(
"litellm.repositories.model_repository.encrypt_value_helper",
"litellm.proxy.common_utils.encrypt_decrypt_utils.encrypt_value_helper",
side_effect=lambda v, **kw: f"encrypted_{v}",
)
@patch(
"litellm.repositories.model_repository.decrypt_value_helper",
"litellm.proxy.common_utils.encrypt_decrypt_utils.decrypt_value_helper",
side_effect=lambda v, **kw: v,
)
async def test_create_model_all_fields(self, mock_decrypt, mock_encrypt, repo):
@ -459,11 +459,11 @@ class TestModelRepository:
@pytest.mark.asyncio
@patch(
"litellm.repositories.model_repository.encrypt_value_helper",
"litellm.proxy.common_utils.encrypt_decrypt_utils.encrypt_value_helper",
side_effect=lambda v, **kw: f"encrypted_{v}",
)
@patch(
"litellm.repositories.model_repository.decrypt_value_helper",
"litellm.proxy.common_utils.encrypt_decrypt_utils.decrypt_value_helper",
side_effect=lambda v, **kw: v,
)
async def test_update_model_all_fields(self, mock_decrypt, mock_encrypt, repo):
@ -485,7 +485,7 @@ class TestModelRepository:
@pytest.mark.asyncio
@patch(
"litellm.repositories.model_repository.decrypt_value_helper",
"litellm.proxy.common_utils.encrypt_decrypt_utils.decrypt_value_helper",
side_effect=lambda v, **kw: v,
)
async def test_find_all(self, mock_decrypt, repo):
@ -508,7 +508,7 @@ class TestModelRepository:
@pytest.mark.asyncio
@patch(
"litellm.repositories.model_repository.decrypt_value_helper",
"litellm.proxy.common_utils.encrypt_decrypt_utils.decrypt_value_helper",
side_effect=lambda v, **kw: v,
)
async def test_find_unblocked(self, mock_decrypt, repo):
@ -525,7 +525,7 @@ class TestModelRepository:
@pytest.mark.asyncio
@patch(
"litellm.repositories.model_repository.decrypt_value_helper",
"litellm.proxy.common_utils.encrypt_decrypt_utils.decrypt_value_helper",
side_effect=lambda v, **kw: v,
)
async def test_find_by_name(self, mock_decrypt, repo):
@ -541,11 +541,11 @@ class TestModelRepository:
@pytest.mark.asyncio
@patch(
"litellm.repositories.model_repository.encrypt_value_helper",
"litellm.proxy.common_utils.encrypt_decrypt_utils.encrypt_value_helper",
side_effect=lambda v, **kw: v,
)
@patch(
"litellm.repositories.model_repository.decrypt_value_helper",
"litellm.proxy.common_utils.encrypt_decrypt_utils.decrypt_value_helper",
side_effect=lambda v, **kw: v,
)
async def test_update_model(self, mock_decrypt, mock_encrypt, repo):
@ -564,7 +564,7 @@ class TestModelRepository:
@pytest.mark.asyncio
@patch(
"litellm.repositories.model_repository.decrypt_value_helper",
"litellm.proxy.common_utils.encrypt_decrypt_utils.decrypt_value_helper",
side_effect=lambda v, **kw: v,
)
async def test_delete_model(self, mock_decrypt, repo):
@ -578,11 +578,11 @@ class TestModelRepository:
@pytest.mark.asyncio
@patch(
"litellm.repositories.model_repository.encrypt_value_helper",
"litellm.proxy.common_utils.encrypt_decrypt_utils.encrypt_value_helper",
side_effect=lambda v, **kw: v,
)
@patch(
"litellm.repositories.model_repository.decrypt_value_helper",
"litellm.proxy.common_utils.encrypt_decrypt_utils.decrypt_value_helper",
side_effect=lambda v, **kw: v,
)
async def test_block_unblock_model(self, mock_decrypt, mock_encrypt, repo):
@ -2012,7 +2012,7 @@ class TestModelRepositoryExtended:
@pytest.mark.asyncio
@patch(
"litellm.repositories.model_repository.decrypt_value_helper",
"litellm.proxy.common_utils.encrypt_decrypt_utils.decrypt_value_helper",
side_effect=lambda value, **kw: value,
)
async def test_find_by_team_id(self, mock_decrypt, repo):