Files
wehub-resource-sync 97e91a83f3
Ruff / Ruff (push) Has been cancelled
Test / Core Tests (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.10) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.11) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.12) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.13) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.9) (push) Has been cancelled
Test / Full Coverage (Python 3.11) (push) Has been cancelled
Test / Core Provider Tests (OpenAI) (push) Has been cancelled
Test / Core Provider Tests (Anthropic) (push) Has been cancelled
Test / Core Provider Tests (Google) (push) Has been cancelled
Test / Core Provider Tests (Other) (push) Has been cancelled
Test / Anthropic Tests (push) Has been cancelled
Test / Gemini Tests (push) Has been cancelled
Test / Google GenAI Tests (push) Has been cancelled
Test / Vertex AI Tests (push) Has been cancelled
Test / OpenAI Tests (push) Has been cancelled
Test / Writer Tests (push) Has been cancelled
Test / Auto Client Tests (push) Has been cancelled
ty / type-check (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:36:38 +08:00

69 lines
2.2 KiB
Python

from __future__ import annotations
from unittest.mock import MagicMock
from pydantic import BaseModel
import instructor
from instructor import Mode, Provider
from instructor.cache import AutoCache
from instructor.v2.core.function_calls import ResponseSchema
from instructor.v2.core.response_model import prepare_response_model
from instructor.v2.dsl.iterable import IterableBase
class User(BaseModel):
name: str
def test_prepare_response_model_handles_list_of_basemodel() -> None:
prepared = prepare_response_model(list[User])
assert prepared is not None
assert issubclass(prepared, IterableBase)
def test_prepare_response_model_handles_primitive_str() -> None:
prepared = prepare_response_model(str)
assert prepared is not None
assert issubclass(prepared, ResponseSchema)
def test_patch_prepares_list_response_model_before_cache() -> None:
mock_client = MagicMock()
mock_client.chat.completions.create = MagicMock(
return_value=MagicMock(text='[{"name": "test"}]')
)
patched = instructor.patch(mock_client, mode=Mode.MD_JSON, provider=Provider.GEMINI)
try:
patched.chat.completions.create( # ty: ignore[no-matching-overload]
response_model=list[User],
messages=[{"role": "user", "content": "hi"}],
cache=AutoCache(),
)
except AttributeError as exc:
if "model_json_schema" in str(exc):
raise AssertionError(f"Regression #2374: {exc}") from exc
except Exception:
pass
def test_patch_prepares_str_response_model_before_cache() -> None:
mock_client = MagicMock()
mock_client.chat.completions.create = MagicMock(return_value=MagicMock(text='"hi"'))
patched = instructor.patch(mock_client, mode=Mode.MD_JSON, provider=Provider.GEMINI)
try:
patched.chat.completions.create( # ty: ignore[no-matching-overload]
response_model=str,
messages=[{"role": "user", "content": "hi"}],
cache=AutoCache(),
)
except AttributeError as exc:
if "model_json_schema" in str(exc):
raise AssertionError(f"Regression #2374: {exc}") from exc
except Exception:
pass