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

68 lines
2.3 KiB
Python

"""Provider-specific tests for Bedrock v2 client factory."""
from __future__ import annotations
import pytest
from instructor import Mode
class TestBedrockClientWithSDK:
"""Tests for Bedrock client factory that require botocore."""
@pytest.fixture
def bedrock_available(self):
"""Check if botocore is available."""
try:
from botocore.client import BaseClient # noqa: F401
return True
except ImportError:
return False
def test_from_bedrock_raises_without_sdk(self, bedrock_available):
"""from_bedrock should raise when botocore is missing."""
if bedrock_available:
pytest.skip(
"botocore is installed" # ty: ignore[too-many-positional-arguments]
)
from instructor.v2.providers.bedrock.client import from_bedrock
from instructor.core.exceptions import ClientError
with pytest.raises(ClientError, match="botocore is not installed"):
from_bedrock(None) # ty: ignore[no-matching-overload]
def test_from_bedrock_with_invalid_client(self, bedrock_available):
"""from_bedrock should reject non-BaseClient objects."""
if not bedrock_available:
pytest.skip(
"botocore not installed" # ty: ignore[too-many-positional-arguments]
)
from instructor.v2.providers.bedrock.client import from_bedrock
from instructor.core.exceptions import ClientError
with pytest.raises(ClientError, match="BaseClient"):
from_bedrock("not a client") # ty: ignore[no-matching-overload]
def test_from_bedrock_with_invalid_mode(self, bedrock_available):
"""from_bedrock should raise for unsupported modes."""
if not bedrock_available:
pytest.skip(
"botocore not installed" # ty: ignore[too-many-positional-arguments]
)
from botocore.client import BaseClient
from instructor.v2.providers.bedrock.client import from_bedrock
from instructor.core.exceptions import ModeError
def _converse(**_kwargs):
return {}
client = BaseClient.__new__(BaseClient)
client.converse = _converse # type: ignore[assignment]
with pytest.raises(ModeError):
from_bedrock(client, mode=Mode.JSON_SCHEMA)