From 4d4148bb90b6e610057ac2bba769893c1a746fe7 Mon Sep 17 00:00:00 2001 From: Koudai Aono Date: Sun, 14 Dec 2025 17:35:57 +0000 Subject: [PATCH] Refactor parent module handling in import logic and add generated __init__.py files --- src/datamodel_code_generator/parser/base.py | 12 +++++++++--- .../definitions/relative/__init__.py | 3 +++ .../definitions/relative/__init__.py | 3 +++ .../nested_package_enum_default/io/__init__.py | 3 +++ .../io/example/__init__.py | 3 +++ 5 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 tests/data/expected/main/jsonschema/nested_directory/definitions/relative/__init__.py create mode 100644 tests/data/expected/main/jsonschema/use_union_operator/definitions/relative/__init__.py create mode 100644 tests/data/expected/main/openapi/nested_package_enum_default/io/__init__.py create mode 100644 tests/data/expected/main/openapi/nested_package_enum_default/io/example/__init__.py diff --git a/src/datamodel_code_generator/parser/base.py b/src/datamodel_code_generator/parser/base.py index 45ef24fd9..4563b6480 100644 --- a/src/datamodel_code_generator/parser/base.py +++ b/src/datamodel_code_generator/parser/base.py @@ -2426,9 +2426,15 @@ class Processed(NamedTuple): imports = module_to_import[module_] = Imports(self.use_exact_imports) init = False if module_: - parent = (*module_[:-1], "__init__.py") - if parent not in results: - results[parent] = Result(body="") + if len(module_) == 1: + parent = ("__init__.py",) + if parent not in results: + results[parent] = Result(body="") + else: + for i in range(1, len(module_)): + parent = (*module_[:i], "__init__.py") + if parent not in results: + results[parent] = Result(body="") if (*module_, "__init__.py") in results: module = (*module_, "__init__.py") init = True diff --git a/tests/data/expected/main/jsonschema/nested_directory/definitions/relative/__init__.py b/tests/data/expected/main/jsonschema/nested_directory/definitions/relative/__init__.py new file mode 100644 index 000000000..4146e0ec1 --- /dev/null +++ b/tests/data/expected/main/jsonschema/nested_directory/definitions/relative/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: external_files_in_directory +# timestamp: 2019-07-26T00:00:00+00:00 diff --git a/tests/data/expected/main/jsonschema/use_union_operator/definitions/relative/__init__.py b/tests/data/expected/main/jsonschema/use_union_operator/definitions/relative/__init__.py new file mode 100644 index 000000000..4146e0ec1 --- /dev/null +++ b/tests/data/expected/main/jsonschema/use_union_operator/definitions/relative/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: external_files_in_directory +# timestamp: 2019-07-26T00:00:00+00:00 diff --git a/tests/data/expected/main/openapi/nested_package_enum_default/io/__init__.py b/tests/data/expected/main/openapi/nested_package_enum_default/io/__init__.py new file mode 100644 index 000000000..9af8d39f5 --- /dev/null +++ b/tests/data/expected/main/openapi/nested_package_enum_default/io/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: nested_package_enum_default.json +# timestamp: 1985-10-26T08:21:00+00:00 diff --git a/tests/data/expected/main/openapi/nested_package_enum_default/io/example/__init__.py b/tests/data/expected/main/openapi/nested_package_enum_default/io/example/__init__.py new file mode 100644 index 000000000..9af8d39f5 --- /dev/null +++ b/tests/data/expected/main/openapi/nested_package_enum_default/io/example/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: nested_package_enum_default.json +# timestamp: 1985-10-26T08:21:00+00:00