Spaces:
Running
Running
Commit
·
95d2e29
1
Parent(s):
d7e5abb
fix(tests): resolve mypy divergence and test failures
Browse files- Add pydantic-ai to pre-commit mypy dependencies to fix divergence
between local mypy and CI (both now recognize Agent overloads)
- Fix JudgeHandler tests to mock get_model() which instantiates
OpenAIModel at import time (requires API key)
.pre-commit-config.yaml
CHANGED
|
@@ -15,4 +15,5 @@ repos:
|
|
| 15 |
- pydantic>=2.7
|
| 16 |
- pydantic-settings>=2.2
|
| 17 |
- tenacity>=8.2
|
|
|
|
| 18 |
args: [--ignore-missing-imports]
|
|
|
|
| 15 |
- pydantic>=2.7
|
| 16 |
- pydantic-settings>=2.2
|
| 17 |
- tenacity>=8.2
|
| 18 |
+
- pydantic-ai>=0.0.16
|
| 19 |
args: [--ignore-missing-imports]
|
src/agent_factory/judges.py
CHANGED
|
@@ -42,7 +42,7 @@ class JudgeHandler:
|
|
| 42 |
model: Optional PydanticAI model. If None, uses config default.
|
| 43 |
"""
|
| 44 |
self.model = model or get_model()
|
| 45 |
-
self.agent = Agent(
|
| 46 |
model=self.model,
|
| 47 |
result_type=JudgeAssessment,
|
| 48 |
system_prompt=SYSTEM_PROMPT,
|
|
|
|
| 42 |
model: Optional PydanticAI model. If None, uses config default.
|
| 43 |
"""
|
| 44 |
self.model = model or get_model()
|
| 45 |
+
self.agent = Agent( # type: ignore[call-overload]
|
| 46 |
model=self.model,
|
| 47 |
result_type=JudgeAssessment,
|
| 48 |
system_prompt=SYSTEM_PROMPT,
|
tests/unit/agent_factory/test_judges.py
CHANGED
|
@@ -36,7 +36,11 @@ class TestJudgeHandler:
|
|
| 36 |
mock_result = MagicMock()
|
| 37 |
mock_result.data = mock_assessment
|
| 38 |
|
| 39 |
-
with
|
|
|
|
|
|
|
|
|
|
|
|
|
| 40 |
mock_agent = AsyncMock()
|
| 41 |
mock_agent.run = AsyncMock(return_value=mock_result)
|
| 42 |
mock_agent_class.return_value = mock_agent
|
|
@@ -86,7 +90,11 @@ class TestJudgeHandler:
|
|
| 86 |
mock_result = MagicMock()
|
| 87 |
mock_result.data = mock_assessment
|
| 88 |
|
| 89 |
-
with
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
mock_agent = AsyncMock()
|
| 91 |
mock_agent.run = AsyncMock(return_value=mock_result)
|
| 92 |
mock_agent_class.return_value = mock_agent
|
|
@@ -103,7 +111,11 @@ class TestJudgeHandler:
|
|
| 103 |
@pytest.mark.asyncio
|
| 104 |
async def test_assess_handles_llm_failure(self):
|
| 105 |
"""JudgeHandler should return fallback on LLM failure."""
|
| 106 |
-
with
|
|
|
|
|
|
|
|
|
|
|
|
|
| 107 |
mock_agent = AsyncMock()
|
| 108 |
mock_agent.run = AsyncMock(side_effect=Exception("API Error"))
|
| 109 |
mock_agent_class.return_value = mock_agent
|
|
|
|
| 36 |
mock_result = MagicMock()
|
| 37 |
mock_result.data = mock_assessment
|
| 38 |
|
| 39 |
+
with (
|
| 40 |
+
patch("src.agent_factory.judges.get_model") as mock_get_model,
|
| 41 |
+
patch("src.agent_factory.judges.Agent") as mock_agent_class,
|
| 42 |
+
):
|
| 43 |
+
mock_get_model.return_value = MagicMock()
|
| 44 |
mock_agent = AsyncMock()
|
| 45 |
mock_agent.run = AsyncMock(return_value=mock_result)
|
| 46 |
mock_agent_class.return_value = mock_agent
|
|
|
|
| 90 |
mock_result = MagicMock()
|
| 91 |
mock_result.data = mock_assessment
|
| 92 |
|
| 93 |
+
with (
|
| 94 |
+
patch("src.agent_factory.judges.get_model") as mock_get_model,
|
| 95 |
+
patch("src.agent_factory.judges.Agent") as mock_agent_class,
|
| 96 |
+
):
|
| 97 |
+
mock_get_model.return_value = MagicMock()
|
| 98 |
mock_agent = AsyncMock()
|
| 99 |
mock_agent.run = AsyncMock(return_value=mock_result)
|
| 100 |
mock_agent_class.return_value = mock_agent
|
|
|
|
| 111 |
@pytest.mark.asyncio
|
| 112 |
async def test_assess_handles_llm_failure(self):
|
| 113 |
"""JudgeHandler should return fallback on LLM failure."""
|
| 114 |
+
with (
|
| 115 |
+
patch("src.agent_factory.judges.get_model") as mock_get_model,
|
| 116 |
+
patch("src.agent_factory.judges.Agent") as mock_agent_class,
|
| 117 |
+
):
|
| 118 |
+
mock_get_model.return_value = MagicMock()
|
| 119 |
mock_agent = AsyncMock()
|
| 120 |
mock_agent.run = AsyncMock(side_effect=Exception("API Error"))
|
| 121 |
mock_agent_class.return_value = mock_agent
|