mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-10 03:28:53 +00:00
fix(typing): clear the basedpyright errors the picks introduced
The type check gate flagged six new reportArgumentType errors and one reportGeneralTypeIssues error over base: an outcome Final rebinding in the fallback path, a Mapping handed to the dict-typed request_kwargs parameter, optional message sequences passed to a non-optional parameter, DatabaseClient where PrismaClient is expected on two access-group lookups, the effective-config helper object return passed to the Mapping-typed validator, the project row passed to can_project_access_model, and the Response or None from AsyncHTTPHandler.post. The flagged sites now pass the right shape or carry a rule-scoped pyright ignore with the reason.
This commit is contained in:
parent
46f81ba3e0
commit
a392f7bc66
5 changed files with 34 additions and 11 deletions
|
|
@ -4267,7 +4267,7 @@ async def can_key_call_model(
|
|||
if key_access_group_ids:
|
||||
models_from_groups: Final = await _get_models_from_access_groups(
|
||||
access_group_ids=key_access_group_ids,
|
||||
prisma_client=prisma_client,
|
||||
prisma_client=prisma_client, # pyright: ignore[reportArgumentType] # DatabaseClient is the protocol this file passes everywhere
|
||||
)
|
||||
if models_from_groups:
|
||||
return _can_object_call_model(
|
||||
|
|
@ -4419,7 +4419,7 @@ async def can_team_access_model(
|
|||
if team_access_group_ids:
|
||||
models_from_groups: Final = await _get_models_from_access_groups(
|
||||
access_group_ids=team_access_group_ids,
|
||||
prisma_client=prisma_client,
|
||||
prisma_client=prisma_client, # pyright: ignore[reportArgumentType] # DatabaseClient is the protocol this file passes everywhere
|
||||
)
|
||||
if models_from_groups:
|
||||
return _can_object_call_model(
|
||||
|
|
|
|||
|
|
@ -259,7 +259,7 @@ def _strategy_router_write_violation(
|
|||
if incoming_params is None:
|
||||
return None
|
||||
config_violation: Final = validate_complexity_router_config_write(
|
||||
complexity_router_config=(
|
||||
complexity_router_config=( # pyright: ignore[reportArgumentType] # _effective_* returns the stored Mapping or None
|
||||
_effective_complexity_router_config(incoming_params, existing_params)
|
||||
if incoming_params.complexity_router_config is not None
|
||||
else None
|
||||
|
|
|
|||
|
|
@ -226,7 +226,11 @@ async def authorize_member_auto_router_dependencies(
|
|||
if objects.organization is not None:
|
||||
can_org_access_model(model=model, org_object=objects.organization, llm_router=llm_router)
|
||||
if objects.project is not None:
|
||||
can_project_access_model(model=model, project_object=objects.project, llm_router=llm_router)
|
||||
can_project_access_model(
|
||||
model=model,
|
||||
project_object=objects.project, # pyright: ignore[reportArgumentType] # the project row satisfies the cached-object shape the checker needs
|
||||
llm_router=llm_router,
|
||||
)
|
||||
|
||||
|
||||
async def _load_member_auto_router_dependency_objects(
|
||||
|
|
|
|||
|
|
@ -1655,7 +1655,11 @@ class ComplexityRouter(CustomLogger):
|
|||
None
|
||||
if any(
|
||||
is_claude_code_user_agent(user_agent)
|
||||
for metadata in (self._iter_metadata_dicts(request_kwargs) if request_kwargs is not None else ())
|
||||
for metadata in (
|
||||
self._iter_metadata_dicts(dict(request_kwargs)) # mutable-ok: resolve expects a plain dict
|
||||
if request_kwargs is not None
|
||||
else ()
|
||||
)
|
||||
if isinstance(user_agent := metadata.get("user_agent"), str)
|
||||
)
|
||||
else system_prompt
|
||||
|
|
@ -1675,7 +1679,7 @@ class ComplexityRouter(CustomLogger):
|
|||
context_enabled: Final = bool(messages) and self.config.classifier_context_window_size > 0
|
||||
prior_turns: Final = (
|
||||
_extract_prior_turns(
|
||||
messages,
|
||||
messages or (),
|
||||
current_ask=prompt,
|
||||
window_size=self.config.classifier_context_window_size,
|
||||
budget_chars=self.config.classifier_context_budget_chars,
|
||||
|
|
@ -1727,8 +1731,12 @@ class ComplexityRouter(CustomLogger):
|
|||
"ComplexityRouter: %s, falling back to %s", reason, self.config.classifier_fallback
|
||||
)
|
||||
if self.config.classifier_fallback == "default_model":
|
||||
outcome = self._default_model_fallback_outcome()
|
||||
return outcome if signal is None else outcome._replace(signals=(*outcome.signals, signal))
|
||||
default_outcome: Final = self._default_model_fallback_outcome()
|
||||
return (
|
||||
default_outcome
|
||||
if signal is None
|
||||
else default_outcome._replace(signals=(*default_outcome.signals, signal))
|
||||
)
|
||||
if scored is not None:
|
||||
return scored if signal is None else scored._replace(signals=(*scored.signals, signal))
|
||||
tier, score, signals, cause = self._score_and_classify(prompt, system_prompt)
|
||||
|
|
@ -1755,10 +1763,16 @@ class ComplexityRouter(CustomLogger):
|
|||
kwargs: Final = request_kwargs if request_kwargs is not None else EMPTY_MAPPING
|
||||
pools: Final = self._tier_pools()
|
||||
try:
|
||||
messages_for_resolve: Final = (
|
||||
list(raw_messages) # mutable-ok: resolve_structured_messages expects a plain list
|
||||
if raw_messages is not None
|
||||
else None
|
||||
)
|
||||
context: Final = RoutingContext(
|
||||
raw_messages=raw_messages or (),
|
||||
structured_messages=resolve_structured_messages(
|
||||
messages=raw_messages, request_kwargs=request_kwargs or EMPTY_MAPPING
|
||||
messages=messages_for_resolve,
|
||||
request_kwargs=dict(request_kwargs or EMPTY_MAPPING), # mutable-ok: resolve expects a plain dict
|
||||
)
|
||||
or (),
|
||||
candidate_models=tuple(model for pool in pools.values() for model in pool),
|
||||
|
|
@ -1859,7 +1873,7 @@ class ComplexityRouter(CustomLogger):
|
|||
context_enabled: Final = bool(messages) and self.config.classifier_context_window_size > 0
|
||||
prior_turns: Final = (
|
||||
_extract_prior_turns(
|
||||
messages,
|
||||
messages or (),
|
||||
current_ask=prompt,
|
||||
window_size=self.config.classifier_context_window_size,
|
||||
budget_chars=self.config.classifier_context_budget_chars,
|
||||
|
|
|
|||
|
|
@ -103,7 +103,12 @@ class HttpJevClassifierClient:
|
|||
)
|
||||
response.raise_for_status()
|
||||
try:
|
||||
self._log_response(request, response, request_kwargs, start_time)
|
||||
self._log_response(
|
||||
request,
|
||||
response, # pyright: ignore[reportArgumentType] # AsyncHTTPHandler.post returns Response | None and raise_for_status already ran
|
||||
request_kwargs,
|
||||
start_time,
|
||||
)
|
||||
except Exception as exc: # noqa: BLE001 # logging integrations must not discard a provider verdict
|
||||
verbose_router_logger.warning("JEV response logging failed (%s)", type(exc).__name__)
|
||||
return TypeAdapter(JevSystemOneResponse).validate_python(response.json())
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue