mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-15 04:19:08 +00:00
fix(openai): satisfy type-discipline and master-key CI gates
Read ssl_verify through an isinstance-checked helper instead of repeated cast() calls, and use a non-reserved placeholder key in the new tests. Signed-off-by: Raphael Zanarelli <zanarelli.dev@gmail.com>
This commit is contained in:
parent
da4f6974ea
commit
3dca3aee51
2 changed files with 14 additions and 14 deletions
|
|
@ -1,3 +1,4 @@
|
|||
import ssl
|
||||
import time
|
||||
import types
|
||||
from collections.abc import AsyncIterator, Callable, Coroutine, Iterable, Iterator, Mapping
|
||||
|
|
@ -67,6 +68,13 @@ openaiOSeriesConfig: Final = OpenAIOSeriesConfig()
|
|||
openAIGPT5Config: Final = OpenAIGPT5Config()
|
||||
|
||||
|
||||
def _get_ssl_verify(litellm_params: Mapping[str, object] | None) -> VerifyTypes | None:
|
||||
value: Final = litellm_params.get("ssl_verify") if litellm_params else None
|
||||
if isinstance(value, (str, bool, ssl.SSLContext)):
|
||||
return value
|
||||
return None
|
||||
|
||||
|
||||
class MistralEmbeddingConfig:
|
||||
"""
|
||||
Reference: https://docs.mistral.ai/api/#operation/createEmbedding
|
||||
|
|
@ -804,9 +812,7 @@ class OpenAIChatCompletion(BaseLLM, BaseOpenAILLM):
|
|||
headers=headers or {},
|
||||
)
|
||||
if stream is True and fake_stream is False:
|
||||
stream_ssl_verify: VerifyTypes | None = (
|
||||
cast(VerifyTypes | None, litellm_params.get("ssl_verify", None)) if litellm_params else None
|
||||
)
|
||||
stream_ssl_verify: VerifyTypes | None = _get_ssl_verify(litellm_params)
|
||||
return self.streaming(
|
||||
logging_obj=logging_obj,
|
||||
headers=headers,
|
||||
|
|
@ -826,9 +832,7 @@ class OpenAIChatCompletion(BaseLLM, BaseOpenAILLM):
|
|||
else:
|
||||
if not isinstance(max_retries, int):
|
||||
raise OpenAIError(status_code=422, message="max retries must be an int")
|
||||
ssl_verify: VerifyTypes | None = (
|
||||
cast(VerifyTypes | None, litellm_params.get("ssl_verify", None)) if litellm_params else None
|
||||
)
|
||||
ssl_verify: VerifyTypes | None = _get_ssl_verify(litellm_params)
|
||||
openai_client: OpenAI = self._get_openai_client(
|
||||
is_async=False,
|
||||
api_key=api_key,
|
||||
|
|
@ -972,9 +976,7 @@ class OpenAIChatCompletion(BaseLLM, BaseOpenAILLM):
|
|||
)
|
||||
for _ in range(2): # if call fails due to alternating messages, retry with reformatted message
|
||||
try:
|
||||
ssl_verify: VerifyTypes | None = (
|
||||
cast(VerifyTypes | None, litellm_params.get("ssl_verify", None)) if litellm_params else None
|
||||
)
|
||||
ssl_verify: VerifyTypes | None = _get_ssl_verify(litellm_params)
|
||||
openai_aclient: AsyncOpenAI = self._get_openai_client(
|
||||
is_async=True,
|
||||
api_key=api_key,
|
||||
|
|
@ -1162,9 +1164,7 @@ class OpenAIChatCompletion(BaseLLM, BaseOpenAILLM):
|
|||
data.update(self.get_stream_options(stream_options=stream_options, api_base=api_base))
|
||||
for _ in range(2):
|
||||
try:
|
||||
ssl_verify: VerifyTypes | None = (
|
||||
cast(VerifyTypes | None, litellm_params.get("ssl_verify", None)) if litellm_params else None
|
||||
)
|
||||
ssl_verify: VerifyTypes | None = _get_ssl_verify(litellm_params)
|
||||
openai_aclient: AsyncOpenAI = self._get_openai_client(
|
||||
is_async=True,
|
||||
api_key=api_key,
|
||||
|
|
|
|||
|
|
@ -57,12 +57,12 @@ def test_cache_key_differs_by_ssl_verify():
|
|||
Verify cache keys differ when ssl_verify differs to prevent client poisoning across CAs.
|
||||
"""
|
||||
params_ca1 = {
|
||||
"api_key": "sk-1234",
|
||||
"api_key": "sk-test-key",
|
||||
"is_async": True,
|
||||
"ssl_verify": "/path/ca1.pem",
|
||||
}
|
||||
params_ca2 = {
|
||||
"api_key": "sk-1234",
|
||||
"api_key": "sk-test-key",
|
||||
"is_async": True,
|
||||
"ssl_verify": "/path/ca2.pem",
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue