Avatar for the koxudaxi user
koxudaxi
datamodel-code-generator
BlogDocsChangelog

fix: TypeError: '<' not supported between instances of 'str' and 'NoneType'

#2380Merged
Comparing
gjcarneiro:bugfix/hash-None-error
(
a0cded2
) with
main
(
e771ada
)
CodSpeed Performance Gauge
0%
Improvements
0
Regressions
0
Untouched
31
New
0
Dropped
0
Ignored
0

Benchmarks

Passed

test_force_optional
tests/main/openapi/test_main_openapi.py::test_force_optional
CodSpeed Performance Gauge
0%
119.2 ms
118.8 ms
test_main
tests/main/openapi/test_main_openapi.py::test_main
CodSpeed Performance Gauge
0%
111.6 ms
111.5 ms
test_main_strict_types
tests/main/jsonschema/test_main_jsonschema.py::test_main_strict_types
CodSpeed Performance Gauge
0%
73.1 ms
73.1 ms
test_main_root_id_jsonschema_self_refs_with_remote_file
tests/main/jsonschema/test_main_jsonschema.py::test_main_root_id_jsonschema_self_refs_with_remote_file
CodSpeed Performance Gauge
0%
80.6 ms
80.6 ms
test_main_collapse_root_models
tests/main/openapi/test_main_openapi.py::test_main_collapse_root_models
CodSpeed Performance Gauge
0%
77.2 ms
77.2 ms
test_main_jsonschema_special_field_name
tests/main/jsonschema/test_main_jsonschema.py::test_main_jsonschema_special_field_name
CodSpeed Performance Gauge
0%
62.7 ms
62.7 ms
test_main_inheritance_forward_ref
tests/main/jsonschema/test_main_jsonschema.py::test_main_inheritance_forward_ref
CodSpeed Performance Gauge
0%
104.2 ms
104.2 ms
test_main_inheritance_forward_ref_keep_model_order
tests/main/jsonschema/test_main_jsonschema.py::test_main_inheritance_forward_ref_keep_model_order
CodSpeed Performance Gauge
0%
102.6 ms
102.6 ms
test_main_jsonschema_complex_any_of
tests/main/jsonschema/test_main_jsonschema.py::test_main_jsonschema_complex_any_of
CodSpeed Performance Gauge
0%
63.7 ms
63.8 ms
test_main_with_snake_case_field
tests/main/openapi/test_main_openapi.py::test_main_with_snake_case_field
CodSpeed Performance Gauge
0%
113.4 ms
113.4 ms
test_main_json_reuse_enum_default_member
tests/main/jsonschema/test_main_jsonschema.py::test_main_json_reuse_enum_default_member
CodSpeed Performance Gauge
0%
74.3 ms
74.4 ms
test_main_nested_directory
tests/main/jsonschema/test_main_jsonschema.py::test_main_nested_directory
CodSpeed Performance Gauge
0%
190.5 ms
190.6 ms
test_main_jsonschema_field_include_all_keys
tests/main/jsonschema/test_main_jsonschema.py::test_main_jsonschema_field_include_all_keys
CodSpeed Performance Gauge
0%
59.9 ms
59.9 ms
test_main_openapi_all_of_required
tests/main/openapi/test_main_openapi.py::test_main_openapi_all_of_required
CodSpeed Performance Gauge
0%
53.3 ms
53.3 ms
test_main_jsonschema_no_empty_collapsed_external_model
tests/main/jsonschema/test_main_jsonschema.py::test_main_jsonschema_no_empty_collapsed_external_model
CodSpeed Performance Gauge
0%
50.1 ms
50.1 ms
test_main_modular
tests/main/openapi/test_main_openapi.py::test_main_modular
CodSpeed Performance Gauge
0%
240.9 ms
241 ms
test_main_all_of_ref
tests/main/jsonschema/test_main_jsonschema.py::test_main_all_of_ref
CodSpeed Performance Gauge
0%
53.2 ms
53.2 ms
test_main_root_id_jsonschema_self_refs_with_local_file
tests/main/jsonschema/test_main_jsonschema.py::test_main_root_id_jsonschema_self_refs_with_local_file
CodSpeed Performance Gauge
0%
80.1 ms
80.2 ms
test_main_openapi_nullable
tests/main/openapi/test_main_openapi.py::test_main_openapi_nullable
CodSpeed Performance Gauge
0%
124 ms
124.1 ms
test_main_jsonschema_nested_deep
tests/main/jsonschema/test_main_jsonschema.py::test_main_jsonschema_nested_deep
CodSpeed Performance Gauge
0%
71 ms
71 ms
test_main_jsonschema_collapsed_external_references
tests/main/jsonschema/test_main_jsonschema.py::test_main_jsonschema_collapsed_external_references
CodSpeed Performance Gauge
0%
76.8 ms
76.9 ms
test_main_autodetect
tests/main/jsonschema/test_main_jsonschema.py::test_main_autodetect
CodSpeed Performance Gauge
0%
62.4 ms
62.5 ms
test_main_strict_types_all_with_field_constraints
tests/main/jsonschema/test_main_jsonschema.py::test_main_strict_types_all_with_field_constraints
CodSpeed Performance Gauge
0%
69.9 ms
70 ms
test_main_yaml
tests/main/test_main_yaml.py::test_main_yaml
CodSpeed Performance Gauge
0%
49.3 ms
49.4 ms
test_main_external_definitions
tests/main/jsonschema/test_main_jsonschema.py::test_main_external_definitions
CodSpeed Performance Gauge
0%
51.8 ms
51.9 ms
test_main_jsonschema_external_files
tests/main/jsonschema/test_main_jsonschema.py::test_main_jsonschema_external_files
CodSpeed Performance Gauge
0%
51.8 ms
51.9 ms
test_main_jsonschema_id
tests/main/jsonschema/test_main_jsonschema.py::test_main_jsonschema_id
CodSpeed Performance Gauge
0%
54.5 ms
54.6 ms
test_main_with_strip_default_none
tests/main/openapi/test_main_openapi.py::test_main_with_strip_default_none
CodSpeed Performance Gauge
0%
109.3 ms
109.5 ms
test_main_jsonschema_multiple_files
tests/main/jsonschema/test_main_jsonschema.py::test_main_jsonschema_multiple_files
CodSpeed Performance Gauge
0%
78.4 ms
78.6 ms
test_main_openapi_nullable_31
tests/main/openapi/test_main_openapi.py::test_main_openapi_nullable_31
CodSpeed Performance Gauge
0%
50.6 ms
50.7 ms
test_use_default
tests/main/openapi/test_main_openapi.py::test_use_default
CodSpeed Performance Gauge
0%
112.1 ms
112.5 ms

Commits

Click on a commit to change the comparison range
Base
main
e771ada
0%
fix: TypeError: '<' not supported between instances of 'str' and 'NoneType' I'm afraid I don't know exactly what triggers this, but in my big openapi spec this gets triggered: ``` Traceback (most recent call last): File "/home/gjc/.cache/uv/archive-v0/zrUKlPLuGJsfxDV0Mede0/lib/python3.12/site-packages/datamodel_code_generator/__main__.py", line 458, in main generate( File "/home/gjc/.cache/uv/archive-v0/zrUKlPLuGJsfxDV0Mede0/lib/python3.12/site-packages/datamodel_code_generator/__init__.py", line 492, in generate results = parser.parse() ^^^^^^^^^^^^^^ File "/home/gjc/.cache/uv/archive-v0/zrUKlPLuGJsfxDV0Mede0/lib/python3.12/site-packages/datamodel_code_generator/parser/base.py", line 1311, in parse self.__reuse_model(models, require_update_action_models) File "/home/gjc/.cache/uv/archive-v0/zrUKlPLuGJsfxDV0Mede0/lib/python3.12/site-packages/datamodel_code_generator/parser/base.py", line 868, in __reuse_model model_key = tuple(to_hashable(v) for v in (model.render(class_name="M"), model.imports)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/gjc/.cache/uv/archive-v0/zrUKlPLuGJsfxDV0Mede0/lib/python3.12/site-packages/datamodel_code_generator/parser/base.py", line 868, in <genexpr> model_key = tuple(to_hashable(v) for v in (model.render(class_name="M"), model.imports)) ^^^^^^^^^^^^^^ File "/home/gjc/.cache/uv/archive-v0/zrUKlPLuGJsfxDV0Mede0/lib/python3.12/site-packages/datamodel_code_generator/parser/base.py", line 76, in to_hashable return tuple(sorted(to_hashable(i) for i in item)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: '<' not supported between instances of 'str' and 'NoneType' ``` The objects in question look like: ``` Import(from_="typing", import_="Annotated", alias=None, reference_path=None) ``` Which are transformed into: ``` ( ("alias", None), ("from_", "typing"), ("import_", "Annotated"), ("reference_path", None), ), ``` Now, those `None`s will cause `sorted()` to raise that TypeError. The simple fix is to transform None into "": this is only used as key in a cache, so it doesn't really matter as long as the value is predictable and hashable.
a0cded2
2 days ago
by gjcarneiro
© 2025 CodSpeed Technology
Home Terms PrivacyDocs