Skip to content

Commit 14e3137

Browse files
Simplify, report all ref names
1 parent 5a58ddb commit 14e3137

File tree

3 files changed

+6
-13
lines changed

3 files changed

+6
-13
lines changed

python/pydantic_core/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,6 @@ class MultiHostHost(_TypedDict):
146146
class GatherResult(_TypedDict):
147147
"""Internal result of gathering schemas for cleaning."""
148148

149-
inlinable_def_refs: dict[str, DefinitionReferenceSchema]
149+
inlinable_def_refs: dict[str, DefinitionReferenceSchema | None]
150150
recursive_refs: set[str]
151151
schemas_with_meta_keys: dict[str, list[CoreSchema]] | None

src/schema_traverse.rs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -193,15 +193,8 @@ pub fn gather_schemas_for_cleaning<'py>(
193193
};
194194
gather_schema(schema.downcast_exact()?, &mut ctx)?;
195195

196-
let inlinable_def_refs = PyDict::new_bound(py);
197-
for (ref_str, def_ref_candidate) in ctx.inline_def_ref_candidates.iter() {
198-
if !def_ref_candidate.is_none() {
199-
inlinable_def_refs.set_item(ref_str, def_ref_candidate)?;
200-
}
201-
}
202-
203196
let res = PyDict::new_bound(py);
204-
res.set_item(intern!(py, "inlinable_def_refs"), inlinable_def_refs)?;
197+
res.set_item(intern!(py, "inlinable_def_refs"), ctx.inline_def_ref_candidates)?;
205198
res.set_item(intern!(py, "recursive_refs"), ctx.recursive_def_refs)?;
206199
res.set_item(intern!(py, "schemas_with_meta_keys"), ctx.meta_with_keys.map(|v| v.0))?;
207200
Ok(res)

tests/test_gather_schemas_for_cleaning.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class Model:
4242
definitions = {'ref1': core_schema.str_schema(ref='ref1'), 'ref2': core_schema.bytes_schema(ref='ref2')}
4343

4444
res = gather_schemas_for_cleaning(schema, definitions, find_meta_with_keys=None)
45-
assert res['inlinable_def_refs'] == {'ref2': ref2} and res['inlinable_def_refs']['ref2'] is ref2
45+
assert res['inlinable_def_refs'] == {'ref1': None, 'ref2': ref2} and res['inlinable_def_refs']['ref2'] is ref2
4646
assert res['recursive_refs'] == set()
4747
assert res['schemas_with_meta_keys'] is None
4848

@@ -61,7 +61,7 @@ def test_ref_in_serialization_schema():
6161
def test_recursive_ref_schema():
6262
ref1 = core_schema.definition_reference_schema('ref1')
6363
res = gather_schemas_for_cleaning(ref1, definitions={'ref1': ref1}, find_meta_with_keys=None)
64-
assert res['inlinable_def_refs'] == {}
64+
assert res['inlinable_def_refs'] == {'ref1': None}
6565
assert res['recursive_refs'] == {'ref1'}
6666
assert res['schemas_with_meta_keys'] is None
6767

@@ -80,7 +80,7 @@ def test_deep_recursive_ref_schema():
8080
},
8181
find_meta_with_keys=None,
8282
)
83-
assert res['inlinable_def_refs'] == {}
83+
assert res['inlinable_def_refs'] == {'ref1': None, 'ref2': None, 'ref3': None}
8484
assert res['recursive_refs'] == {'ref1', 'ref2', 'ref3'}
8585
assert res['schemas_with_meta_keys'] is None
8686

@@ -129,6 +129,6 @@ def test_no_duplicate_ref_instances_gathered():
129129
definitions = {'ref1': schema1, 'ref2': schema2}
130130

131131
res = gather_schemas_for_cleaning(schema3, definitions=definitions, find_meta_with_keys=None)
132-
assert res['inlinable_def_refs'] == {}
132+
assert res['inlinable_def_refs'] == {'ref1': None, 'ref2': None}
133133
assert res['recursive_refs'] == set()
134134
assert res['schemas_with_meta_keys'] is None

0 commit comments

Comments
 (0)