Fix rec_strict_json_schema to handle numeric constraint keywords#302
Fix rec_strict_json_schema to handle numeric constraint keywords#302yurekami wants to merge 1 commit intomistralai:mainfrom
Conversation
The rec_strict_json_schema function now handles int and float values as terminal types. This fixes issue mistralai#300 where Pydantic models with constraint keywords like min_length, max_length, minItems, maxItems, minimum, maximum, and multipleOf would cause a ValueError. JSON Schema constraint keywords have numeric values (int or float), and these should be preserved without recursion, just like str and bool. Fixes mistralai#300 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
Hi @yurekami, thanks for this fix! I was about to submit the same change after investigating issues #300 and #279. Your solution is clean and correct — adding This PR has been open for ~2 months without review. I'd love to see it merged, as it fixes a real blocker for anyone using Pydantic constraint keywords ( @mistralai team — could someone please review and merge this? It's a one-line fix in |
Summary
rec_strict_json_schemafunction to handleintandfloatvalues as terminal typesmin_length,max_length,minItems,maxItems,minimum,maximum, andmultipleOfwould cause aValueErrorProblem
When using
response_format_from_pydantic_model()with Pydantic models that have constraint keywords (likeField(min_length=1)), therec_strict_json_schema()function was raising aValueErrorbecause it only consideredstrandboolas valid terminal types, but JSON Schema constraint keywords have numeric values (intorfloat).Example that failed:
Solution
Added
intandfloatto the type check inrec_strict_json_schema():Test plan
rec_strict_json_schemawith numeric constraints (minItems,maxItems,minLength,maxLength,minimum,maximum,multipleOf)response_format_from_pydantic_modelwith constrained Pydantic modelsValueErrorFixes #300
🤖 Generated with Claude Code