fix: resolve language_version in testgen_repair endpoint (#2494)

## Summary
- The `/testgen_repair` endpoint was missed when `language_version`
support was added in #2488
- Clients that stopped sending `python_version`
(codeflash-ai/codeflash#1914) hit `400 - Python version is required`
- Adds `language_version` field and `resolve_python_version` validator
to `TestRepairSchema`, matching the pattern in
`OptimizeSchema`/`TestGenSchema`
- Replaces `python_version=data.python_version` with
`language_version=data.language_version` when constructing
`TestGenSchema` in the repair handler

## Test plan
- [ ] Deploy and verify testgen repair calls no longer return 400
- [ ] Verify old clients sending `python_version` still work (backward
compat via validator)
This commit is contained in:
Kevin Turcios 2026-03-27 17:12:53 -05:00 committed by GitHub
parent 927cc99588
commit 40def05997
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 12 additions and 1 deletions

View file

@ -1,6 +1,9 @@
"""Request/response schemas for the testgen review and repair endpoints.""" """Request/response schemas for the testgen review and repair endpoints."""
from typing import Self
from ninja import Schema from ninja import Schema
from pydantic import model_validator
from aiservice.models.functions_to_optimize import FunctionToOptimize from aiservice.models.functions_to_optimize import FunctionToOptimize
@ -82,6 +85,7 @@ class TestRepairSchema(Schema):
test_timeout: int test_timeout: int
trace_id: str trace_id: str
python_version: str | None = None python_version: str | None = None
language_version: str | None = None
language: str = "python" language: str = "python"
codeflash_version: str | None = None codeflash_version: str | None = None
call_sequence: int | None = None call_sequence: int | None = None
@ -89,6 +93,13 @@ class TestRepairSchema(Schema):
previous_repair_errors: dict[str, str] = {} previous_repair_errors: dict[str, str] = {}
module_source_code: str = "" module_source_code: str = ""
@model_validator(mode="after")
def resolve_python_version(self) -> Self:
"""Resolve python_version from language_version for backward compatibility."""
if self.python_version is None and self.language_version is not None and self.language == "python":
self.python_version = self.language_version
return self
class TestRepairResponseSchema(Schema): class TestRepairResponseSchema(Schema):
generated_tests: str generated_tests: str

View file

@ -191,7 +191,7 @@ async def testgen_repair(
test_framework=data.test_framework, test_framework=data.test_framework,
test_timeout=data.test_timeout, test_timeout=data.test_timeout,
trace_id=data.trace_id, trace_id=data.trace_id,
python_version=data.python_version, language_version=data.language_version,
language=data.language, language=data.language,
codeflash_version=data.codeflash_version, codeflash_version=data.codeflash_version,
) )