Skip to content

Generation fails with IndexError: tuple out of range #2953

@SimonDeBroyer

Description

@SimonDeBroyer

Describe the bug

Generating fails with error IndexError: tuple index out of range

To Reproduce

Example schema:

components:
    schemas:
        Collection-Wrapper:
            description: Generic response wrapper containing a collection of items and pagination metadata.
            type: object
            required:
                - data
                - pagination
            properties:
                data:
                    description: Array of items in the collection.
                    type: array
                    items:
                        type: object
                pagination:
                    description: Pagination metadata for the collection.
                    $ref: "#/components/schemas/Metadata"
        DataType:
            type: object
            required:
                - id
            properties:
                property_1:
                    type: string
                    format: uuid
                    readOnly: true
                    description: Unique identifier for the installation.
                property_2:
                    type: string
                    description: Description of the installation.
                property_3:
                    type: string
                    format: date-time
                    readOnly: true
                    description: Timestamp when the installation was created.

        PaginatedDataTypeList:
            allOf:
                - properties:
                      data:
                          type: array
                          items:
                              $ref: "#/components/schemas/DataType"
                - $ref: "#/components/schemas/Collection-Wrapper"
        Metadata:
            type: object
            required:
                - limit
                - page
            properties:
                limit:
                    type: integer
                    minimum: 1
                    maximum: 100
                    description: Number of data types returned in this response
                    example: 20
                page:
                    type: integer
                    minimum: 1
                    description: The page number to retrieve
                    example: 2

Used commandline:

$ datamodel-codegen

used pyproject.toml configuration

[tool.datamodel-codegen]
input = "openapi.yaml"
output = "src/views/models.py"
output-model-type = "pydantic_v2.BaseModel"
input-file-type = "openapi"
formatters = ["ruff-check", "ruff-format"]
reuse-model = true
reuse-scope = "tree"

Expected behavior
If the combination of config options is not allowed, I expected to get a warning/error message, otherwise I expected generation to work.

Version:

  • OS: Windows 11 Pro
  • Python version: 3.13.11
  • datamodel-code-generator version: 0.52.2

Additional context

Full error traceback

Traceback (most recent call last):
  File "C:\Users\SimonDeBroyer\Documents\Projects\platform\.venv\Lib\site-packages\datamodel_code_generator\__main__.py", line 1363, in main
    run_generate_from_config(
    ~~~~~~~~~~~~~~~~~~~~~~~~^
        config=config,
        ^^^^^^^^^^^^^^
    ...<8 lines>...
        default_value_overrides=default_value_overrides,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\SimonDeBroyer\Documents\Projects\platform\.venv\Lib\site-packages\datamodel_code_generator\__main__.py", line 938, in run_generate_from_config
    result = generate(
        input_=input_,
    ...<125 lines>...
        default_value_overrides=default_value_overrides,
    )
  File "C:\Users\SimonDeBroyer\Documents\Projects\platform\.venv\Lib\site-packages\datamodel_code_generator\__init__.py", line 764, in generate
    results = parser.parse(
        settings_path=config.settings_path,
    ...<3 lines>...
        module_split_mode=config.module_split_mode,
    )
  File "C:\Users\SimonDeBroyer\Documents\Projects\platform\.venv\Lib\site-packages\datamodel_code_generator\parser\base.py", line 3172, in parse
    ) = self._build_module_structure(sorted_data_models, require_update_action_models, module_split_mode)
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\SimonDeBroyer\Documents\Projects\platform\.venv\Lib\site-packages\datamodel_code_generator\parser\base.py", line 2920, in _build_module_structure
    shared_module_entry = self.__reuse_model_tree_scope(module_models, require_update_action_models)
  File "C:\Users\SimonDeBroyer\Documents\Projects\platform\.venv\Lib\site-packages\datamodel_code_generator\parser\base.py", line 1751, in __reuse_model_tree_scope
    self.__validate_shared_module_name(module_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
  File "C:\Users\SimonDeBroyer\Documents\Projects\platform\.venv\Lib\site-packages\datamodel_code_generator\parser\base.py", line 1658, in __validate_shared_module_name
    existing_module_names = {module[0] for module, _ in module_models}
                             ~~~~~~^^^
IndexError: tuple index out of range

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions