Commit ef859c88

Alex Protsyk <Craq@users.noreply.github.com>
2024-08-08 21:33:53
fix(json schema): support recursive BaseModels in Pydantic v1 (#1623)
1 parent a9b8aa8
Changed files (2)
src
openai
tests
src/openai/lib/_pydantic.py
@@ -62,6 +62,11 @@ def _ensure_strict_json_schema(
         for def_name, def_schema in defs.items():
             _ensure_strict_json_schema(def_schema, path=(*path, "$defs", def_name))
 
+    definitions = json_schema.get("definitions")
+    if is_dict(definitions):
+        for definition_name, definition_schema in definitions.items():
+            _ensure_strict_json_schema(definition_schema, path=(*path, "definitions", definition_name))
+
     return json_schema
 
 
tests/lib/test_pydantic.py
@@ -130,6 +130,7 @@ def test_most_types() -> None:
                             "type": "object",
                             "properties": {"column_name": {"title": "Column Name", "type": "string"}},
                             "required": ["column_name"],
+                            "additionalProperties": False,
                         },
                         "Condition": {
                             "title": "Condition",
@@ -147,6 +148,7 @@ def test_most_types() -> None:
                                 },
                             },
                             "required": ["column", "operator", "value"],
+                            "additionalProperties": False,
                         },
                         "OrderBy": {
                             "title": "OrderBy",