BlogDocs

Fix validation of `Literal` from JSON keys when used as `dict` key(#1075)

Merged
Merging
fix-literal-from-json-keys
into
main
+16%
IMPROVEMENTS
1
REGRESSIONS
0
UNTOUCHED
139
NEW
0
DROPPED
0
IGNORED
0

Benchmarks

test_build_schema
tests/benchmarks/test_complete_benchmark.py::test_build_schema
0%
3.6 ms
3.6 ms
test_complete_core_error
tests/benchmarks/test_complete_benchmark.py::test_complete_core_error
+4%
9.2 ms
8.9 ms
test_complete_core_isinstance
tests/benchmarks/test_complete_benchmark.py::test_complete_core_isinstance
+4%
8.9 ms
8.6 ms
test_complete_core_json
tests/benchmarks/test_complete_benchmark.py::test_complete_core_json
0%
2.8 ms
2.8 ms
test_complete_core_lax
tests/benchmarks/test_complete_benchmark.py::test_complete_core_lax
0%
993.9 µs
994.4 µs
test_complete_core_strict
tests/benchmarks/test_complete_benchmark.py::test_complete_core_strict
0%
947.9 µs
950.5 µs
test_core_future
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateTime::test_core_future
0%
47.1 µs
47.3 µs
test_core_future_str
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateTime::test_core_future_str
-1%
31.5 µs
31.7 µs
test_core_python
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateTime::test_core_python
-2%
46.7 µs
47.8 µs
test_core_raw
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateTime::test_core_raw
-1%
19.6 µs
19.9 µs
test_core_str
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateTime::test_core_str
0%
31.1 µs
31.2 µs
test_model_core_json
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateTime::test_model_core_json
-2%
64.7 µs
65.8 µs
test_core_future
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateX::test_core_future
-1%
29.2 µs
29.4 µs
test_core_future_str
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateX::test_core_future_str
-1%
26.2 µs
26.5 µs
test_date_from_date
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateX::test_date_from_date
-2%
19.4 µs
19.7 µs
test_date_from_datetime
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateX::test_date_from_datetime
-1%
38.2 µs
38.5 µs
test_date_from_datetime_str
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateX::test_date_from_datetime_str
-1%
29.3 µs
29.5 µs
test_date_from_str
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDateX::test_date_from_str
-1%
26 µs
26.2 µs
test_decimal_from_string_core
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDecimal::test_decimal_from_string_core
-1%
36.1 µs
36.5 µs
test_decimal_from_string_limit
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDecimal::test_decimal_from_string_limit
-1%
25.2 µs
25.4 µs
test_decimal_from_string_pyd
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkDecimal::test_decimal_from_string_pyd
+3%
55 µs
53.6 µs
test_core_json_fs
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkSimpleModel::test_core_json_fs
0%
577.2 µs
576.2 µs
test_core_python_fs
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkSimpleModel::test_core_python_fs
0%
247.1 µs
248.1 µs
test_core_python
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUUID::test_core_python
-1%
47.9 µs
48.3 µs
test_core_raw
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUUID::test_core_raw
-1%
19.5 µs
19.7 µs
test_core_str
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUUID::test_core_str
-1%
55.6 µs
56.2 µs
test_model_core_json
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUUID::test_model_core_json
-1%
87.1 µs
87.6 µs
test_uuid_from_string_core
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUUID::test_uuid_from_string_core
-1%
57 µs
57.6 µs
test_uuid_from_string_pyd
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUUID::test_uuid_from_string_pyd
-2%
93.5 µs
95 µs
test_uuid_from_uuid_core
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUUID::test_uuid_from_uuid_core
-2%
19.4 µs
19.7 µs
test_uuid_from_uuid_pyd
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUUID::test_uuid_from_uuid_pyd
-1%
20.5 µs
20.6 µs
test_smart_union_coerce_core
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUnion::test_smart_union_coerce_core
-1%
24.6 µs
24.8 µs
test_smart_union_core
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUnion::test_smart_union_core
-1%
22.4 µs
22.6 µs
test_strict_union_core
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUnion::test_strict_union_core
-1%
22.9 µs
23.2 µs
test_strict_union_error_core
tests/benchmarks/test_micro_benchmarks.py::TestBenchmarkUnion::test_strict_union_error_core
+3%
53.4 µs
52 µs
test_core_json_fs
tests/benchmarks/test_micro_benchmarks.py::TestModelLarge::test_core_json_fs
0%
777.7 µs
777.6 µs
test_core_python
tests/benchmarks/test_micro_benchmarks.py::TestModelLarge::test_core_python
0%
451.8 µs
451.6 µs
test_arguments
tests/benchmarks/test_micro_benchmarks.py::test_arguments
+1%
43.2 µs
42.8 µs
test_bool_core
tests/benchmarks/test_micro_benchmarks.py::test_bool_core
-1%
49 µs
49.3 µs
test_bytes_core
tests/benchmarks/test_micro_benchmarks.py::test_bytes_core
-1%
19.2 µs
19.4 µs
test_chain_function
tests/benchmarks/test_micro_benchmarks.py::test_chain_function
0%
36.4 µs
36.5 µs
test_chain_list
tests/benchmarks/test_micro_benchmarks.py::test_chain_list
-2%
40.2 µs
41.1 µs
test_chain_nested_functions
tests/benchmarks/test_micro_benchmarks.py::test_chain_nested_functions
0%
46.4 µs
46.4 µs
test_chain_two_functions
tests/benchmarks/test_micro_benchmarks.py::test_chain_two_functions
-1%
48.4 µs
49.1 µs
test_core_root_model
tests/benchmarks/test_micro_benchmarks.py::test_core_root_model
0%
93.2 µs
93.6 µs
test_core_string_lax
tests/benchmarks/test_micro_benchmarks.py::test_core_string_lax
-1%
19.2 µs
19.4 µs
test_core_string_lax_wrong
tests/benchmarks/test_micro_benchmarks.py::test_core_string_lax_wrong
0%
41.2 µs
41.4 µs
test_core_string_strict
tests/benchmarks/test_micro_benchmarks.py::test_core_string_strict
-1%
19.3 µs
19.4 µs
test_core_string_strict_wrong
tests/benchmarks/test_micro_benchmarks.py::test_core_string_strict_wrong
0%
40.7 µs
40.7 µs
test_core_string_strict_wrong_str_e
tests/benchmarks/test_micro_benchmarks.py::test_core_string_strict_wrong_str_e
-1%
74.8 µs
75.5 µs
test_definition_in_tree
tests/benchmarks/test_micro_benchmarks.py::test_definition_in_tree
0%
4.4 ms
4.4 ms
test_definition_model_core
tests/benchmarks/test_micro_benchmarks.py::test_definition_model_core
0%
5.1 ms
5 ms
test_definition_out_of_tree
tests/benchmarks/test_micro_benchmarks.py::test_definition_out_of_tree
0%
7.1 ms
7.1 ms
test_dict_of_any_core
tests/benchmarks/test_micro_benchmarks.py::test_dict_of_any_core
0%
3.6 ms
3.6 ms
test_dict_of_ints_core
tests/benchmarks/test_micro_benchmarks.py::test_dict_of_ints_core
0%
5.2 ms
5.2 ms
test_dict_of_ints_core_json
tests/benchmarks/test_micro_benchmarks.py::test_dict_of_ints_core_json
0%
14.7 ms
14.7 ms
test_dont_raise_error
tests/benchmarks/test_micro_benchmarks.py::test_dont_raise_error
0%
30.2 µs
30.3 µs
test_dont_raise_error_no_info
tests/benchmarks/test_micro_benchmarks.py::test_dont_raise_error_no_info
-1%
26.9 µs
27.1 µs
test_field_function_validator
tests/benchmarks/test_micro_benchmarks.py::test_field_function_validator
0%
1.7 ms
1.7 ms
test_frozenset_of_ints_core
tests/benchmarks/test_micro_benchmarks.py::test_frozenset_of_ints_core
0%
1.1 ms
1.1 ms
test_frozenset_of_ints_duplicates_core
tests/benchmarks/test_micro_benchmarks.py::test_frozenset_of_ints_duplicates_core
0%
762.1 µs
761.6 µs
test_generator_python
tests/benchmarks/test_micro_benchmarks.py::test_generator_python
0%
43.4 µs
43.6 µs
test_generator_rust
tests/benchmarks/test_micro_benchmarks.py::test_generator_rust
0%
32.4 µs
32.4 µs
test_int_error
tests/benchmarks/test_micro_benchmarks.py::test_int_error
0%
79 µs
78.8 µs
test_int_range
tests/benchmarks/test_micro_benchmarks.py::test_int_range
-1%
20.6 µs
20.8 µs
test_int_range_json
tests/benchmarks/test_micro_benchmarks.py::test_int_range_json
0%
21.9 µs
21.9 µs
test_isinstance_json
tests/benchmarks/test_micro_benchmarks.py::test_isinstance_json
0%
33.3 µs
33.5 µs
test_isinstance_string_lax_false
tests/benchmarks/test_micro_benchmarks.py::test_isinstance_string_lax_false
-1%
21.8 µs
21.9 µs
test_isinstance_string_lax_true
tests/benchmarks/test_micro_benchmarks.py::test_isinstance_string_lax_true
-1%
19.4 µs
19.6 µs
test_isinstance_string_strict_false
tests/benchmarks/test_micro_benchmarks.py::test_isinstance_string_strict_false
-1%
21 µs
21.2 µs
test_isinstance_string_strict_true
tests/benchmarks/test_micro_benchmarks.py::test_isinstance_string_strict_true
-1%
19.4 µs
19.6 µs
test_list_of_any_core_py
tests/benchmarks/test_micro_benchmarks.py::test_list_of_any_core_py
0%
185.9 µs
185.7 µs
test_list_of_dict_models_core
tests/benchmarks/test_micro_benchmarks.py::test_list_of_dict_models_core
0%
496.8 µs
494.8 µs
test_list_of_ints_core_json
tests/benchmarks/test_micro_benchmarks.py::test_list_of_ints_core_json
0%
5.5 ms
5.5 ms
test_list_of_ints_core_py
tests/benchmarks/test_micro_benchmarks.py::test_list_of_ints_core_py
0%
2.4 ms
2.4 ms
test_list_of_nullable_core
tests/benchmarks/test_micro_benchmarks.py::test_list_of_nullable_core
0%
493.8 µs
493.9 µs
test_many_models_core_dict
tests/benchmarks/test_micro_benchmarks.py::test_many_models_core_dict
0%
5.2 ms
5.2 ms
test_many_models_core_model
tests/benchmarks/test_micro_benchmarks.py::test_many_models_core_model
0%
15.8 ms
15.8 ms
test_model_instance
tests/benchmarks/test_micro_benchmarks.py::test_model_instance
0%
55.3 µs
55.1 µs
test_model_instance_abc
tests/benchmarks/test_micro_benchmarks.py::test_model_instance_abc
0%
54.9 µs
55.1 µs
test_positional_tuple
tests/benchmarks/test_micro_benchmarks.py::test_positional_tuple
0%
30.7 µs
30.8 µs
test_raise_error_custom
tests/benchmarks/test_micro_benchmarks.py::test_raise_error_custom
0%
67.5 µs
67.6 µs
test_raise_error_value_error
tests/benchmarks/test_micro_benchmarks.py::test_raise_error_value_error
0%
65.8 µs
65.8 µs
test_set_of_ints_core
tests/benchmarks/test_micro_benchmarks.py::test_set_of_ints_core
0%
3.5 ms
3.5 ms
test_set_of_ints_core_duplicates
tests/benchmarks/test_micro_benchmarks.py::test_set_of_ints_core_duplicates
0%
1.8 ms
1.8 ms
test_set_of_ints_core_json
tests/benchmarks/test_micro_benchmarks.py::test_set_of_ints_core_json
0%
6.3 ms
6.3 ms
test_set_of_ints_core_json_duplicates
tests/benchmarks/test_micro_benchmarks.py::test_set_of_ints_core_json_duplicates
0%
4 ms
4 ms
test_set_of_ints_core_length
tests/benchmarks/test_micro_benchmarks.py::test_set_of_ints_core_length
0%
3.6 ms
3.6 ms
test_small_class_core_dict
tests/benchmarks/test_micro_benchmarks.py::test_small_class_core_dict
0%
32.1 µs
32.2 µs
test_small_class_core_model
tests/benchmarks/test_micro_benchmarks.py::test_small_class_core_model
+16%
57.4 µs
49.4 µs
test_strict_int
tests/benchmarks/test_micro_benchmarks.py::test_strict_int
-1%
19.2 µs
19.5 µs
test_tagged_union_int_keys_json
tests/benchmarks/test_micro_benchmarks.py::test_tagged_union_int_keys_json
0%
50.3 µs
50 µs
test_tagged_union_int_keys_python
tests/benchmarks/test_micro_benchmarks.py::test_tagged_union_int_keys_python
-1%
34.1 µs
34.6 µs
test_tuple_many_positional
tests/benchmarks/test_micro_benchmarks.py::test_tuple_many_positional
+1%
33.1 µs
32.9 µs
test_tuple_many_variable
tests/benchmarks/test_micro_benchmarks.py::test_tuple_many_variable
-1%
33.4 µs
33.6 µs
test_validate_literal[json-few_ints]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-few_ints]
-1%
21.4 µs
21.5 µs
test_validate_literal[json-few_large_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-few_large_strings]
0%
25.1 µs
25.1 µs
test_validate_literal[json-few_mixed]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-few_mixed]
-1%
28.7 µs
28.9 µs
test_validate_literal[json-few_small_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-few_small_strings]
0%
23.9 µs
23.9 µs
test_validate_literal[json-few_str_enum]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-few_str_enum]
-1%
32 µs
32.3 µs
test_validate_literal[json-many_ints]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-many_ints]
0%
21.5 µs
21.5 µs
test_validate_literal[json-many_large_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-many_large_strings]
+1%
25.4 µs
25.2 µs
test_validate_literal[json-many_small_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[json-many_small_strings]
0%
24 µs
24 µs
test_validate_literal[python-few_ints]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-few_ints]
-1%
20.4 µs
20.6 µs
test_validate_literal[python-few_large_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-few_large_strings]
0%
20.7 µs
20.8 µs
test_validate_literal[python-few_mixed]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-few_mixed]
0%
26.6 µs
26.8 µs
test_validate_literal[python-few_small_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-few_small_strings]
-1%
20.4 µs
20.6 µs
test_validate_literal[python-few_str_enum]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-few_str_enum]
-1%
24.6 µs
24.9 µs
test_validate_literal[python-many_ints]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-many_ints]
-1%
20.4 µs
20.6 µs
test_validate_literal[python-many_large_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-many_large_strings]
-1%
20.6 µs
20.8 µs
test_validate_literal[python-many_small_strings]
tests/benchmarks/test_micro_benchmarks.py::test_validate_literal[python-many_small_strings]
-1%
20.5 µs
20.6 µs
test_variable_tuple
tests/benchmarks/test_micro_benchmarks.py::test_variable_tuple
0%
31.3 µs
31.3 µs
test_with_default
tests/benchmarks/test_micro_benchmarks.py::test_with_default
+1%
42.2 µs
41.9 µs
test_nested_schema_inlined
tests/benchmarks/test_nested_benchmark.py::test_nested_schema_inlined
0%
96.4 ms
96.4 ms
test_nested_schema_using_defs
tests/benchmarks/test_nested_benchmark.py::test_nested_schema_using_defs
0%
103.5 ms
103.5 ms
test_core_dict
tests/benchmarks/test_serialization_micro.py::TestBenchmarkSimpleModel::test_core_dict
0%
269.9 µs
270.5 µs
test_core_dict_filter
tests/benchmarks/test_serialization_micro.py::TestBenchmarkSimpleModel::test_core_dict_filter
-1%
276 µs
277.8 µs
test_core_json
tests/benchmarks/test_serialization_micro.py::TestBenchmarkSimpleModel::test_core_json
0%
330.9 µs
331.6 µs
test_core_model_json
tests/benchmarks/test_serialization_micro.py::test_core_model_json
-1%
49.9 µs
50.2 µs
test_core_model_json_extra
tests/benchmarks/test_serialization_micro.py::test_core_model_json_extra
0%
58.7 µs
58.9 µs
test_core_model_py
tests/benchmarks/test_serialization_micro.py::test_core_model_py
0%
53 µs
53.1 µs
test_core_model_py_extra
tests/benchmarks/test_serialization_micro.py::test_core_model_py_extra
0%
61.3 µs
61.6 µs
test_date_format
tests/benchmarks/test_serialization_micro.py::test_date_format
0%
99.7 µs
99.4 µs
test_date_format_function
tests/benchmarks/test_serialization_micro.py::test_date_format_function
+1%
102.8 µs
101.9 µs
test_date_format_function_no_info
tests/benchmarks/test_serialization_micro.py::test_date_format_function_no_info
0%
99.7 µs
99.6 µs
test_datetime
tests/benchmarks/test_serialization_micro.py::test_datetime
0%
49.3 µs
49.3 µs
test_filter
tests/benchmarks/test_serialization_micro.py::test_filter
0%
114.1 µs
114.2 µs
test_json_any_list_int
tests/benchmarks/test_serialization_micro.py::test_json_any_list_int
0%
1.3 ms
1.3 ms
test_json_any_list_str
tests/benchmarks/test_serialization_micro.py::test_json_any_list_str
0%
1.3 ms
1.3 ms
test_json_direct_list_int
tests/benchmarks/test_serialization_micro.py::test_json_direct_list_int
0%
745.5 µs
745.5 µs
test_json_direct_list_str
tests/benchmarks/test_serialization_micro.py::test_json_direct_list_str
0%
705.6 µs
706.5 µs
test_model_exclude_unset_false
tests/benchmarks/test_serialization_micro.py::test_model_exclude_unset_false
0%
56.3 µs
56.5 µs
test_model_exclude_unset_true
tests/benchmarks/test_serialization_micro.py::test_model_exclude_unset_true
0%
68.1 µs
68.1 µs
test_model_list_core_json
tests/benchmarks/test_serialization_micro.py::test_model_list_core_json
0%
823 µs
823 µs
test_python_json_list_int
tests/benchmarks/test_serialization_micro.py::test_python_json_list_int
0%
618.9 µs
619 µs
test_python_json_list_none
tests/benchmarks/test_serialization_micro.py::test_python_json_list_none
0%
583.8 µs
584 µs
test_python_json_list_str
tests/benchmarks/test_serialization_micro.py::test_python_json_list_str
0%
630 µs
630.2 µs
test_to_string_direct
tests/benchmarks/test_serialization_micro.py::test_to_string_direct
-1%
30.9 µs
31.2 µs
test_to_string_format
tests/benchmarks/test_serialization_micro.py::test_to_string_format
-3%
38.5 µs
39.7 µs
test_uuid
tests/benchmarks/test_serialization_micro.py::test_uuid
0%
63.6 µs
63.8 µs

Commits

Click on a commit to change the comparison range
base
main
73b1184
-18%
Fix literal from JSON keys
17572db
6 months ago by dmontagu
+34%
adding v3 todo
8ba84cb
6 months ago by sydney-runkle
ResourcesHomePricingDocsBlogGitHub
Copyright © 2024 CodSpeed Technology SAS. All rights reserved.