fix(structured outputs): correct schema coercion for inline ref expansion #2025
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changes being requested
Fixes #2024
This PR updates the
_ensure_strict_json_schema
function so that when a$ref
is expanded inline (due to the presence of other fields likedescription
), we recursively re-run the function on the resulting inline object. This ensuresadditionalProperties: false
is correctly applied even if the schema is expanded.Additionally, new test code has been added to confirm that models with nested references and annotated fields (e.g.,
Field(description="...")
) correctly produceadditionalProperties=False
for the inline-expanded objects.Additional context & links
$ref
plus extra properties leads to inline expansion, causing the prior implementation to skip settingadditionalProperties: false
.description
fields do not lose their strict schema configuration after the inline expansion.