Avatar for the pydantic user
pydantic
pydantic-core
BlogDocsChangelog

Allow non-scalar values as tagged union keys

#655Merged
Comparing
tagged-union-enum
(
83c2ceb
) with
main
(
d2f4226
)
CodSpeed Performance Gauge
+72%
Improvements
4
Regressions
0
Untouched
121
New
0
Dropped
0
Ignored
0

Benchmarks

Improved

test_validate_literal[json-many_small_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-many_small_strings]
CodSpeed Performance Gauge
+72%
26.7 µs
15.5 µs
test_validate_literal[json-many_large_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-many_large_strings]
CodSpeed Performance Gauge
+26%
19.9 µs
15.7 µs
test_validate_literal[json-few_large_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-few_large_strings]
CodSpeed Performance Gauge
+26%
19.7 µs
15.6 µs
test_validate_literal[json-few_small_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-few_small_strings]
CodSpeed Performance Gauge
+26%
19.3 µs
15.4 µs

Passed

test_tagged_union_int_keys_json
tests/benchmarks/test_micro_benchmarks.py::test_tagged_union_int_keys_json
CodSpeed Performance Gauge
+5%
32.3 µs
30.8 µs
test_tagged_union_int_keys_python
tests/benchmarks/test_micro_benchmarks.py::test_tagged_union_int_keys_python
CodSpeed Performance Gauge
+4%
25.5 µs
24.5 µs
test_validate_literal[json-many_ints]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-many_ints]
CodSpeed Performance Gauge
+3%
14.7 µs
14.2 µs
test_validate_literal[json-few_ints]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-few_ints]
CodSpeed Performance Gauge
+3%
14.7 µs
14.2 µs
test_isinstance_json
tests/benchmarks/test_micro_benchmarks.py::test_isinstance_json
CodSpeed Performance Gauge
+3%
22.1 µs
21.4 µs
test_core_future
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateX::test_core_future
CodSpeed Performance Gauge
+3%
20.7 µs
20.2 µs
test_model_instance_abc
tests/benchmarks/test_micro_benchmarks.py::test_model_instance_abc
CodSpeed Performance Gauge
+2%
39 µs
38.2 µs
test_build_schema
tests/benchmarks/test_complete_benchmark.py::test_build_schema
CodSpeed Performance Gauge
+2%
1.1 ms
1 ms
test_strict_union_error_core
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUnion::test_strict_union_error_core
CodSpeed Performance Gauge
+2%
31.2 µs
30.6 µs
test_complete_core_json
tests/benchmarks/test_complete_benchmark.py::test_complete_core_json
CodSpeed Performance Gauge
+2%
854.5 µs
840.5 µs
test_core_future_str
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateX::test_core_future_str
CodSpeed Performance Gauge
+2%
19.2 µs
18.9 µs
test_complete_core_isinstance
tests/benchmarks/test_complete_benchmark.py::test_complete_core_isinstance
CodSpeed Performance Gauge
+1%
2.1 ms
2.1 ms
test_core_string_lax_wrong
tests/benchmarks/test_micro_benchmarks.py::test_core_string_lax_wrong
CodSpeed Performance Gauge
+1%
28.7 µs
28.3 µs
test_chain_function
tests/benchmarks/test_micro_benchmarks.py::test_chain_function
CodSpeed Performance Gauge
+1%
28.6 µs
28.2 µs
test_core_model_py
tests/benchmarks/test_serialization_micro.py::test_core_model_py
CodSpeed Performance Gauge
+1%
32 µs
31.6 µs
test_list_of_any_core_py
tests/benchmarks/test_micro_benchmarks.py::test_list_of_any_core_py
CodSpeed Performance Gauge
+1%
104.6 µs
103.3 µs
test_int_range_json
tests/benchmarks/test_micro_benchmarks.py::test_int_range_json
CodSpeed Performance Gauge
+1%
16 µs
15.8 µs
test_many_models_core_dict
tests/benchmarks/test_micro_benchmarks.py::test_many_models_core_dict
CodSpeed Performance Gauge
+1%
1.3 ms
1.3 ms
test_validate_literal[python-few_str_enum]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-few_str_enum]
CodSpeed Performance Gauge
+1%
17 µs
16.8 µs
test_many_models_core_model
tests/benchmarks/test_micro_benchmarks.py::test_many_models_core_model
CodSpeed Performance Gauge
+1%
3.2 ms
3.1 ms
test_core_string_strict_wrong
tests/benchmarks/test_micro_benchmarks.py::test_core_string_strict_wrong
CodSpeed Performance Gauge
+1%
28.4 µs
28.1 µs
test_complete_core_error
tests/benchmarks/test_complete_benchmark.py::test_complete_core_error
CodSpeed Performance Gauge
+1%
2.1 ms
2.1 ms
test_int_error
tests/benchmarks/test_micro_benchmarks.py::test_int_error
CodSpeed Performance Gauge
+1%
45.3 µs
44.8 µs
test_raise_error_value_error
tests/benchmarks/test_micro_benchmarks.py::test_raise_error_value_error
CodSpeed Performance Gauge
+1%
38.8 µs
38.4 µs
test_raise_error_custom
tests/benchmarks/test_micro_benchmarks.py::test_raise_error_custom
CodSpeed Performance Gauge
+1%
39 µs
38.6 µs
test_definition_model_core
tests/benchmarks/test_micro_benchmarks.py::test_definition_model_core
CodSpeed Performance Gauge
+1%
586.1 µs
580.8 µs
test_smart_union_coerce_core
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUnion::test_smart_union_coerce_core
CodSpeed Performance Gauge
+1%
16.7 µs
16.5 µs
test_small_class_core_model
tests/benchmarks/test_micro_benchmarks.py::test_small_class_core_model
CodSpeed Performance Gauge
+1%
35.3 µs
35 µs
test_model_core_json
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateTime::test_model_core_json
CodSpeed Performance Gauge
+1%
39.1 µs
38.8 µs
test_list_of_ints_core_py
tests/benchmarks/test_micro_benchmarks.py::test_list_of_ints_core_py
CodSpeed Performance Gauge
+1%
638.5 µs
633.5 µs
test_chain_two_functions
tests/benchmarks/test_micro_benchmarks.py::test_chain_two_functions
CodSpeed Performance Gauge
+1%
33.2 µs
33 µs
test_list_of_dict_models_core
tests/benchmarks/test_micro_benchmarks.py::test_list_of_dict_models_core
CodSpeed Performance Gauge
+1%
144.5 µs
143.5 µs
test_isinstance_string_strict_false
tests/benchmarks/test_micro_benchmarks.py::test_isinstance_string_strict_false
CodSpeed Performance Gauge
+1%
13.5 µs
13.5 µs
test_core_root_model
tests/benchmarks/test_micro_benchmarks.py::test_core_root_model
CodSpeed Performance Gauge
+1%
42.8 µs
42.6 µs
test_date_format
tests/benchmarks/test_serialization_micro.py::test_date_format
CodSpeed Performance Gauge
+1%
50.1 µs
49.8 µs
test_core_json_fs
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkSimpleModel::test_core_json_fs
CodSpeed Performance Gauge
0%
258.8 µs
257.6 µs
test_core_string_strict_wrong_str_e
tests/benchmarks/test_micro_benchmarks.py::test_core_string_strict_wrong_str_e
CodSpeed Performance Gauge
0%
45.9 µs
45.7 µs
test_core_json
tests/benchmarks/test_serialization_micro.py::TestBenchmarkSimpleModel::test_core_json
CodSpeed Performance Gauge
0%
117.9 µs
117.5 µs
test_core_python
tests/benchmarks/test_micro_benchmarks.py::TestModelLarge::test_core_python
CodSpeed Performance Gauge
0%
164.8 µs
164.3 µs
test_generator_rust
tests/benchmarks/test_micro_benchmarks.py::test_generator_rust
CodSpeed Performance Gauge
0%
22.1 µs
22 µs
test_json_direct_list_str
tests/benchmarks/test_serialization_micro.py::test_json_direct_list_str
CodSpeed Performance Gauge
0%
255.6 µs
254.8 µs
test_core_dict
tests/benchmarks/test_serialization_micro.py::TestBenchmarkSimpleModel::test_core_dict
CodSpeed Performance Gauge
0%
100.9 µs
100.6 µs
test_chain_list
tests/benchmarks/test_micro_benchmarks.py::test_chain_list
CodSpeed Performance Gauge
0%
28.3 µs
28.2 µs
test_variable_tuple
tests/benchmarks/test_micro_benchmarks.py::test_variable_tuple
CodSpeed Performance Gauge
0%
21.9 µs
21.8 µs
test_core_python
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateTime::test_core_python
CodSpeed Performance Gauge
0%
31.8 µs
31.7 µs
test_isinstance_string_lax_false
tests/benchmarks/test_micro_benchmarks.py::test_isinstance_string_lax_false
CodSpeed Performance Gauge
0%
13.9 µs
13.8 µs
test_strict_union_core
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUnion::test_strict_union_core
CodSpeed Performance Gauge
0%
16 µs
15.9 µs
test_date_format_function
tests/benchmarks/test_serialization_micro.py::test_date_format_function
CodSpeed Performance Gauge
0%
53.4 µs
53.4 µs
test_arguments
tests/benchmarks/test_micro_benchmarks.py::test_arguments
CodSpeed Performance Gauge
0%
29.7 µs
29.7 µs
test_python_json_list_int
tests/benchmarks/test_serialization_micro.py::test_python_json_list_int
CodSpeed Performance Gauge
0%
223.9 µs
223.8 µs
test_with_default
tests/benchmarks/test_micro_benchmarks.py::test_with_default
CodSpeed Performance Gauge
0%
25.7 µs
25.7 µs
test_json_any_list_str
tests/benchmarks/test_serialization_micro.py::test_json_any_list_str
CodSpeed Performance Gauge
0%
370.3 µs
370.2 µs
test_frozenset_of_ints_duplicates_core
tests/benchmarks/test_micro_benchmarks.py::test_frozenset_of_ints_duplicates_core
CodSpeed Performance Gauge
0%
226.4 µs
226.3 µs
test_python_json_list_str
tests/benchmarks/test_serialization_micro.py::test_python_json_list_str
CodSpeed Performance Gauge
0%
228 µs
228 µs
test_smart_union_core
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUnion::test_smart_union_core
CodSpeed Performance Gauge
0%
14.7 µs
14.7 µs
test_definition_out_of_tree
tests/benchmarks/test_micro_benchmarks.py::test_definition_out_of_tree
CodSpeed Performance Gauge
0%
2 ms
2 ms
test_validate_literal[python-many_ints]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-many_ints]
CodSpeed Performance Gauge
0%
13.4 µs
13.5 µs
test_definition_in_tree
tests/benchmarks/test_micro_benchmarks.py::test_definition_in_tree
CodSpeed Performance Gauge
0%
1.3 ms
1.3 ms
test_chain_nested_functions
tests/benchmarks/test_micro_benchmarks.py::test_chain_nested_functions
CodSpeed Performance Gauge
0%
33.1 µs
33.1 µs
test_list_of_nullable_core
tests/benchmarks/test_micro_benchmarks.py::test_list_of_nullable_core
CodSpeed Performance Gauge
0%
175.2 µs
175.4 µs
test_set_of_ints_core_duplicates
tests/benchmarks/test_micro_benchmarks.py::test_set_of_ints_core_duplicates
CodSpeed Performance Gauge
0%
512.5 µs
513 µs
test_bool_core
tests/benchmarks/test_micro_benchmarks.py::test_bool_core
CodSpeed Performance Gauge
0%
24.2 µs
24.2 µs
test_python_json_list_none
tests/benchmarks/test_serialization_micro.py::test_python_json_list_none
CodSpeed Performance Gauge
0%
196.9 µs
197.1 µs
test_frozenset_of_ints_core
tests/benchmarks/test_micro_benchmarks.py::test_frozenset_of_ints_core
CodSpeed Performance Gauge
0%
320.4 µs
320.8 µs
test_tuple_many_positional
tests/benchmarks/test_micro_benchmarks.py::test_tuple_many_positional
CodSpeed Performance Gauge
0%
22.5 µs
22.5 µs
test_date_format_function_no_info
tests/benchmarks/test_serialization_micro.py::test_date_format_function_no_info
CodSpeed Performance Gauge
0%
51.5 µs
51.7 µs
test_validate_literal[python-few_ints]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-few_ints]
CodSpeed Performance Gauge
0%
13.4 µs
13.4 µs
test_model_list_core_json
tests/benchmarks/test_serialization_micro.py::test_model_list_core_json
CodSpeed Performance Gauge
0%
247.3 µs
248 µs
test_core_model_json_extra
tests/benchmarks/test_serialization_micro.py::test_core_model_json_extra
CodSpeed Performance Gauge
0%
34.3 µs
34.4 µs
test_small_class_core_dict
tests/benchmarks/test_micro_benchmarks.py::test_small_class_core_dict
CodSpeed Performance Gauge
0%
21.7 µs
21.7 µs
test_core_python_fs
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkSimpleModel::test_core_python_fs
CodSpeed Performance Gauge
0%
116 µs
116.4 µs
test_to_string_format
tests/benchmarks/test_serialization_micro.py::test_to_string_format
CodSpeed Performance Gauge
0%
26 µs
26.1 µs
test_generator_python
tests/benchmarks/test_micro_benchmarks.py::test_generator_python
CodSpeed Performance Gauge
0%
30.8 µs
30.9 µs
test_tuple_many_variable
tests/benchmarks/test_micro_benchmarks.py::test_tuple_many_variable
CodSpeed Performance Gauge
0%
21.5 µs
21.6 µs
test_json_direct_list_int
tests/benchmarks/test_serialization_micro.py::test_json_direct_list_int
CodSpeed Performance Gauge
0%
231.7 µs
232.7 µs
test_core_str
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateTime::test_core_str
CodSpeed Performance Gauge
0%
20.9 µs
21 µs
test_core_string_lax
tests/benchmarks/test_micro_benchmarks.py::test_core_string_lax
CodSpeed Performance Gauge
0%
12.4 µs
12.5 µs
test_json_any_list_int
tests/benchmarks/test_serialization_micro.py::test_json_any_list_int
CodSpeed Performance Gauge
0%
342.6 µs
344.2 µs
test_strict_int
tests/benchmarks/test_micro_benchmarks.py::test_strict_int
CodSpeed Performance Gauge
0%
12.4 µs
12.4 µs
test_date_from_datetime_str
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateX::test_date_from_datetime_str
CodSpeed Performance Gauge
0%
21 µs
21.1 µs
test_filter
tests/benchmarks/test_serialization_micro.py::test_filter
CodSpeed Performance Gauge
-1%
47.6 µs
47.9 µs
test_core_dict_filter
tests/benchmarks/test_serialization_micro.py::TestBenchmarkSimpleModel::test_core_dict_filter
CodSpeed Performance Gauge
-1%
105.2 µs
105.8 µs
test_model_exclude_unset_true
tests/benchmarks/test_serialization_micro.py::test_model_exclude_unset_true
CodSpeed Performance Gauge
-1%
40.6 µs
40.8 µs
test_core_model_json
tests/benchmarks/test_serialization_micro.py::test_core_model_json
CodSpeed Performance Gauge
-1%
29.2 µs
29.4 µs
test_dont_raise_error_no_info
tests/benchmarks/test_micro_benchmarks.py::test_dont_raise_error_no_info
CodSpeed Performance Gauge
-1%
17.3 µs
17.4 µs
test_isinstance_string_lax_true
tests/benchmarks/test_micro_benchmarks.py::test_isinstance_string_lax_true
CodSpeed Performance Gauge
-1%
12.6 µs
12.6 µs
test_core_future_str
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateTime::test_core_future_str
CodSpeed Performance Gauge
-1%
21.3 µs
21.5 µs
test_dont_raise_error
tests/benchmarks/test_micro_benchmarks.py::test_dont_raise_error
CodSpeed Performance Gauge
-1%
19.4 µs
19.6 µs
test_complete_core_strict
tests/benchmarks/test_complete_benchmark.py::test_complete_core_strict
CodSpeed Performance Gauge
-1%
403.9 µs
407 µs
test_core_json_fs
tests/benchmarks/test_micro_benchmarks.py::TestModelLarge::test_core_json_fs
CodSpeed Performance Gauge
-1%
240.8 µs
242.7 µs
test_dict_of_ints_core_json
tests/benchmarks/test_micro_benchmarks.py::test_dict_of_ints_core_json
CodSpeed Performance Gauge
-1%
3.3 ms
3.3 ms
test_date_from_date
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateX::test_date_from_date
CodSpeed Performance Gauge
-1%
12.8 µs
12.9 µs
test_core_raw
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateTime::test_core_raw
CodSpeed Performance Gauge
-1%
12.6 µs
12.7 µs
test_isinstance_string_strict_true
tests/benchmarks/test_micro_benchmarks.py::test_isinstance_string_strict_true
CodSpeed Performance Gauge
-1%
12.5 µs
12.6 µs
test_int_range
tests/benchmarks/test_micro_benchmarks.py::test_int_range
CodSpeed Performance Gauge
-1%
15.3 µs
15.4 µs
test_validate_literal[json-few_mixed]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-few_mixed]
CodSpeed Performance Gauge
-1%
18.7 µs
18.9 µs
test_date_from_str
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateX::test_date_from_str
CodSpeed Performance Gauge
-1%
18.8 µs
19 µs
test_bytes_core
tests/benchmarks/test_micro_benchmarks.py::test_bytes_core
CodSpeed Performance Gauge
-1%
12.4 µs
12.5 µs
test_core_string_strict
tests/benchmarks/test_micro_benchmarks.py::test_core_string_strict
CodSpeed Performance Gauge
-1%
12.3 µs
12.5 µs
test_core_model_py_extra
tests/benchmarks/test_serialization_micro.py::test_core_model_py_extra
CodSpeed Performance Gauge
-2%
35.2 µs
35.8 µs
test_dict_of_any_core
tests/benchmarks/test_micro_benchmarks.py::test_dict_of_any_core
CodSpeed Performance Gauge
-2%
1 ms
1 ms
test_model_instance
tests/benchmarks/test_micro_benchmarks.py::test_model_instance
CodSpeed Performance Gauge
-2%
33.6 µs
34.2 µs
test_validate_literal[json-few_str_enum]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-few_str_enum]
CodSpeed Performance Gauge
-2%
21.1 µs
21.5 µs
test_to_string_direct
tests/benchmarks/test_serialization_micro.py::test_to_string_direct
CodSpeed Performance Gauge
-2%
20.6 µs
21 µs
test_model_exclude_unset_false
tests/benchmarks/test_serialization_micro.py::test_model_exclude_unset_false
CodSpeed Performance Gauge
-2%
33.4 µs
34.1 µs
test_positional_tuple
tests/benchmarks/test_micro_benchmarks.py::test_positional_tuple
CodSpeed Performance Gauge
-2%
21.3 µs
21.8 µs
test_validate_literal[python-few_mixed]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-few_mixed]
CodSpeed Performance Gauge
-3%
17.2 µs
17.7 µs
test_dict_of_ints_core
tests/benchmarks/test_micro_benchmarks.py::test_dict_of_ints_core
CodSpeed Performance Gauge
-3%
1.3 ms
1.4 ms
test_complete_core_lax
tests/benchmarks/test_complete_benchmark.py::test_complete_core_lax
CodSpeed Performance Gauge
-3%
398.8 µs
411.2 µs
test_validate_literal[python-few_large_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-few_large_strings]
CodSpeed Performance Gauge
-3%
13.2 µs
13.7 µs
test_validate_literal[python-many_small_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-many_small_strings]
CodSpeed Performance Gauge
-3%
13.2 µs
13.6 µs
test_validate_literal[python-few_small_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-few_small_strings]
CodSpeed Performance Gauge
-3%
13.2 µs
13.6 µs
test_set_of_ints_core_json_duplicates
tests/benchmarks/test_micro_benchmarks.py::test_set_of_ints_core_json_duplicates
CodSpeed Performance Gauge
-4%
1.2 ms
1.2 ms
test_core_future
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateTime::test_core_future
CodSpeed Performance Gauge
-4%
28.6 µs
29.7 µs
test_list_of_ints_core_json
tests/benchmarks/test_micro_benchmarks.py::test_list_of_ints_core_json
CodSpeed Performance Gauge
-4%
1.3 ms
1.4 ms
test_set_of_ints_core_length
tests/benchmarks/test_micro_benchmarks.py::test_set_of_ints_core_length
CodSpeed Performance Gauge
-4%
871 µs
911.7 µs
test_set_of_ints_core
tests/benchmarks/test_micro_benchmarks.py::test_set_of_ints_core
CodSpeed Performance Gauge
-5%
857.9 µs
899.3 µs
test_datetime
tests/benchmarks/test_serialization_micro.py::test_datetime
CodSpeed Performance Gauge
-5%
31.4 µs
33 µs
test_validate_literal[python-many_large_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-many_large_strings]
CodSpeed Performance Gauge
-5%
13.2 µs
13.9 µs
test_set_of_ints_core_json
tests/benchmarks/test_micro_benchmarks.py::test_set_of_ints_core_json
CodSpeed Performance Gauge
-6%
1.5 ms
1.6 ms
test_date_from_datetime
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateX::test_date_from_datetime
CodSpeed Performance Gauge
-6%
24.5 µs
26 µs

Commits

Click on a commit to change the comparison range
Base
main
d2f4226
0%
Fix tagged union for non-scalar enum values
f0af6ed
2 years ago
by adriangb
0%
remove clone
40be16c
2 years ago
by adriangb
0%
fix pypy
fda02f2
2 years ago
by adriangb
0%
fix pypy
093f6c5
2 years ago
by adriangb
-26%
Re-use literal validator logic for tagged unions
89e89f4
2 years ago
by adriangb
0%
Re-use literal validator logic for tagged unions
cca08c4
2 years ago
by adriangb
0%
Update src/validators/literal.rs Co-authored-by: Samuel Colvin <s@muelcolvin.com>
fe90d7a
2 years ago
by adriangb
0%
Revert change to strict_int
e9c7331
2 years ago
by adriangb
0%
Allow non-scalar values as tagged union keys
9075107
2 years ago
by adriangb
+98%
Allow non-scalar values as tagged union keys
83c2ceb
2 years ago
by adriangb
© 2025 CodSpeed Technology
Home Terms Privacy Docs