@@ -5,20 +5,20 @@ def test_no_refs():
55 p1 = core_schema .arguments_parameter ('a' , core_schema .int_schema ())
66 p2 = core_schema .arguments_parameter ('b' , core_schema .int_schema ())
77 schema = core_schema .arguments_schema ([p1 , p2 ])
8- res = gather_schemas_for_cleaning (schema , definitions = {})
8+ res = gather_schemas_for_cleaning (schema , definitions = {}, find_meta_with_keys = None )
99 assert res ['definition_refs' ] == {}
1010 assert res ['recursive_refs' ] == set ()
11- assert res ['deferred_discriminators ' ] == []
11+ assert res ['schemas_with_meta_keys ' ] is None
1212
1313
1414def test_simple_ref_schema ():
1515 schema = core_schema .definition_reference_schema ('ref1' )
1616 definitions = {'ref1' : core_schema .int_schema (ref = 'ref1' )}
1717
18- res = gather_schemas_for_cleaning (schema , definitions )
18+ res = gather_schemas_for_cleaning (schema , definitions , find_meta_with_keys = None )
1919 assert res ['definition_refs' ] == {'ref1' : [schema ]} and res ['definition_refs' ]['ref1' ][0 ] is schema
2020 assert res ['recursive_refs' ] == set ()
21- assert res ['deferred_discriminators ' ] == []
21+ assert res ['schemas_with_meta_keys ' ] is None
2222
2323
2424def test_deep_ref_schema ():
@@ -39,31 +39,31 @@ class Model:
3939 )
4040 definitions = {'ref1' : core_schema .str_schema (ref = 'ref1' ), 'ref2' : core_schema .bytes_schema (ref = 'ref2' )}
4141
42- res = gather_schemas_for_cleaning (schema , definitions )
42+ res = gather_schemas_for_cleaning (schema , definitions , find_meta_with_keys = None )
4343 assert res ['definition_refs' ] == {'ref1' : [ref11 , ref12 ], 'ref2' : [ref2 ]}
4444 assert res ['definition_refs' ]['ref1' ][0 ] is ref11 and res ['definition_refs' ]['ref1' ][1 ] is ref12
4545 assert res ['definition_refs' ]['ref2' ][0 ] is ref2
4646 assert res ['recursive_refs' ] == set ()
47- assert res ['deferred_discriminators ' ] == []
47+ assert res ['schemas_with_meta_keys ' ] is None
4848
4949
5050def test_ref_in_serialization_schema ():
5151 ref = core_schema .definition_reference_schema ('ref1' )
5252 schema = core_schema .str_schema (
5353 serialization = core_schema .plain_serializer_function_ser_schema (lambda v : v , return_schema = ref ),
5454 )
55- res = gather_schemas_for_cleaning (schema , definitions = {'ref1' : core_schema .str_schema ()})
55+ res = gather_schemas_for_cleaning (schema , definitions = {'ref1' : core_schema .str_schema ()}, find_meta_with_keys = None )
5656 assert res ['definition_refs' ] == {'ref1' : [ref ]} and res ['definition_refs' ]['ref1' ][0 ] is ref
5757 assert res ['recursive_refs' ] == set ()
58- assert res ['deferred_discriminators ' ] == []
58+ assert res ['schemas_with_meta_keys ' ] is None
5959
6060
6161def test_recursive_ref_schema ():
6262 ref1 = core_schema .definition_reference_schema ('ref1' )
63- res = gather_schemas_for_cleaning (ref1 , definitions = {'ref1' : ref1 })
63+ res = gather_schemas_for_cleaning (ref1 , definitions = {'ref1' : ref1 }, find_meta_with_keys = None )
6464 assert res ['definition_refs' ] == {'ref1' : [ref1 ]} and res ['definition_refs' ]['ref1' ][0 ] is ref1
6565 assert res ['recursive_refs' ] == {'ref1' }
66- assert res ['deferred_discriminators ' ] == []
66+ assert res ['schemas_with_meta_keys ' ] is None
6767
6868
6969def test_deep_recursive_ref_schema ():
@@ -78,30 +78,37 @@ def test_deep_recursive_ref_schema():
7878 'ref2' : core_schema .union_schema ([ref3 , core_schema .float_schema ()]),
7979 'ref3' : core_schema .union_schema ([ref1 , core_schema .str_schema ()]),
8080 },
81+ find_meta_with_keys = None ,
8182 )
8283 assert res ['definition_refs' ] == {'ref1' : [ref1 ], 'ref2' : [ref2 ], 'ref3' : [ref3 ]}
8384 assert res ['recursive_refs' ] == {'ref1' , 'ref2' , 'ref3' }
8485 assert res ['definition_refs' ]['ref1' ][0 ] is ref1
8586 assert res ['definition_refs' ]['ref2' ][0 ] is ref2
8687 assert res ['definition_refs' ]['ref3' ][0 ] is ref3
87- assert res ['deferred_discriminators ' ] == []
88+ assert res ['schemas_with_meta_keys ' ] is None
8889
8990
90- def test_discriminator_meta ():
91+ def test_find_meta ():
9192 class Model :
9293 pass
9394
9495 ref1 = core_schema .definition_reference_schema ('ref1' )
9596
9697 field1 = core_schema .model_field (core_schema .str_schema ())
97- field1 ['metadata' ] = {'pydantic.internal.union_discriminator ' : 'foobar1' }
98+ field1 ['metadata' ] = {'find_meta1 ' : 'foobar1' , 'unknown' : 'foobar2 ' }
9899
99100 field2 = core_schema .model_field (core_schema .int_schema ())
100- field2 ['metadata' ] = {'pydantic.internal.union_discriminator ' : 'foobar2 ' }
101+ field2 ['metadata' ] = {'find_meta1 ' : 'foobar3' , 'find_meta2' : 'foobar4 ' }
101102
102- schema = core_schema .model_schema (Model , core_schema .model_fields_schema ({'a' : field1 , 'b' : ref1 }))
103- res = gather_schemas_for_cleaning (schema , definitions = {'ref1' : field2 })
103+ schema = core_schema .model_schema (
104+ Model , core_schema .model_fields_schema ({'a' : field1 , 'b' : ref1 , 'c' : core_schema .float_schema ()})
105+ )
106+ res = gather_schemas_for_cleaning (
107+ schema , definitions = {'ref1' : field2 }, find_meta_with_keys = {'find_meta1' , 'find_meta2' }
108+ )
104109 assert res ['definition_refs' ] == {'ref1' : [ref1 ]} and res ['definition_refs' ]['ref1' ][0 ] is ref1
105110 assert res ['recursive_refs' ] == set ()
106- assert res ['deferred_discriminators' ] == [(field1 , 'foobar1' ), (field2 , 'foobar2' )]
107- assert res ['deferred_discriminators' ][0 ][0 ] is field1 and res ['deferred_discriminators' ][1 ][0 ] is field2
111+ assert res ['schemas_with_meta_keys' ] == {'find_meta1' : [field1 , field2 ], 'find_meta2' : [field2 ]}
112+ assert res ['schemas_with_meta_keys' ]['find_meta1' ][0 ] is field1
113+ assert res ['schemas_with_meta_keys' ]['find_meta1' ][1 ] is field2
114+ assert res ['schemas_with_meta_keys' ]['find_meta2' ][0 ] is field2
0 commit comments