From 69b006cf019c10a677531abcc68a0a6a5cc80069 Mon Sep 17 00:00:00 2001 From: yyouretoast Date: Fri, 16 Oct 2026 18:54:31 +0300 Subject: [PATCH] fix(openrouter): annotate untyped arguments to eliminate basedpyright breaches --- litellm/llms/openrouter/chat/transformation.py | 4 ++-- litellm/llms/openrouter/data_residency.py | 10 +++++----- litellm/main.py | 8 +++++--- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/litellm/llms/openrouter/chat/transformation.py b/litellm/llms/openrouter/chat/transformation.py index 5af09cffbe1..ead80615979 100644 --- a/litellm/llms/openrouter/chat/transformation.py +++ b/litellm/llms/openrouter/chat/transformation.py @@ -68,8 +68,8 @@ class OpenrouterConfig(OpenAIGPTConfig): resolved_base: Final = resolve_openrouter_api_base( api_base=api_base, region=self.region, - litellm_params=litellm_params, - optional_params=optional_params, + litellm_params=litellm_params, # pyright: ignore[reportUnknownArgumentType] # overrides untyped OpenAIGPTConfig signature + optional_params=optional_params, # pyright: ignore[reportUnknownArgumentType] # overrides untyped OpenAIGPTConfig signature ).rstrip("/") endpoint: Final = "chat/completions" if endpoint in resolved_base: diff --git a/litellm/llms/openrouter/data_residency.py b/litellm/llms/openrouter/data_residency.py index 3c23ec7552b..8b7ec94187f 100644 --- a/litellm/llms/openrouter/data_residency.py +++ b/litellm/llms/openrouter/data_residency.py @@ -39,8 +39,8 @@ _OPENROUTER_REGIONAL_HOSTNAMES: Final[Mapping[str, str]] = MappingProxyType( _DEFAULT_OPENROUTER_API_BASE: Final[str] = "https://openrouter.ai/api/v1" -def _extract_region_value(params: object) -> str | None: - if not isinstance(params, Mapping): +def _extract_region_value(params: Mapping[str, object] | None) -> str | None: + if params is None: return None for key in ("region", "region_name", "data_residency"): val: object = params.get(key) @@ -51,9 +51,9 @@ def _extract_region_value(params: object) -> str | None: def resolve_openrouter_api_base( api_base: str | None = None, - region: object = None, - litellm_params: object = None, - optional_params: object = None, + region: str | None = None, + litellm_params: Mapping[str, object] | None = None, + optional_params: Mapping[str, object] | None = None, ) -> str: """ Resolve the OpenRouter API base URL based on custom api_base, explicit region, or environment. diff --git a/litellm/main.py b/litellm/main.py index cd0c7171919..84a164caa43 100644 --- a/litellm/main.py +++ b/litellm/main.py @@ -3417,8 +3417,9 @@ def _complete_openrouter(ctx: CompletionDispatchContext) -> _CompletionDispatchR api_base=api_base, region=getattr(ctx.provider_config, "region", None) or getattr(litellm.OpenrouterConfig, "region", None), litellm_params=litellm_params, - optional_params=optional_params, + optional_params=optional_params, # pyright: ignore[reportUnknownArgumentType] # untyped optional_params in dispatch context ) + litellm_params["api_base"] = api_base litellm_params["data_residency"] = infer_openrouter_data_residency("openrouter", api_base) @@ -6791,9 +6792,10 @@ def embedding( api_base = resolve_openrouter_api_base( # rebind-ok: regional endpoint resolution for openrouter api_base=api_base, region=getattr(litellm.OpenrouterConfig, "region", None), - litellm_params=litellm_params_dict, - optional_params=optional_params, + litellm_params=litellm_params_dict, # pyright: ignore[reportUnknownArgumentType] # untyped litellm_params in embedding + optional_params=optional_params, # pyright: ignore[reportUnknownArgumentType] # untyped optional_params in embedding ) + litellm_params_dict["api_base"] = api_base litellm_params_dict["data_residency"] = infer_openrouter_data_residency("openrouter", api_base)