OpenAPITools / OpenAPITools/openapi-generator

[PYTHON] Bug generating API: Class names end with DtoDto and file names end in _dto_dto

Open
#9,181 1 comment 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Client: Python
Dominant language
Java
Stars
26.8k
Forks
7.7k
PR merge metrics
PR metrics pending

Description

Description

The openapi-generator is creating import statements and documentation that have duplicate "modelNameSuffix" references in the class name and in the file name. As an example:

  • from sales_openapi.model.error_response_dto_dto import ErrorResponseDtoDto
openapi-generator version

5.1.0 This is a regression from 4.3.1.

OpenAPI declaration file content or url

https://gist.github.com/ben5448/40aa828072214fd2e490708985debfb8

Command line used for generation

Using the 5.1 generator docker image from: "docker pull openapitools/openapi-generator-cli"

docker run --rm -v ${PWD}:/local openapitools/openapi-generator-cli:v5.1.0 generate -i /local/test.yaml -g python -o /local --model-name-suffix Dto

Steps to reproduce

Run the docker command above on the yaml file provided in gist.github.com.

Examine the generated file openapi_client/api/test_api.py. There will be an import like this:

from openapi_client.model.foo_schema_dto_dto import FooSchemaDtoDto

Note: The filename ends in _dto_dto and the imported class name ends in DtoDto.

Note: Running the openapi-generator-cli command without a model-name-suffix will generate a working set of files. However, the maven wrapper around the openapi generator defaults to a modelNameSuffix of "Dto" when no suffix is specified. The interaction between the maven wrapper and openapi generator always generates errant code.

Related issues/PRs
Suggest a fix/enhancement

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the Docker command against the OpenAPI YAML linked in the issue, then inspect openapi_client/api/test_api.py and the generated foo_schema_dto_dto import. Trace how the Python generator applies model-name suffixes, and consider the issue done when generated filenames, class names, and imports contain the Dto suffix only once.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, openapi, python
Domain
api, backend-api-design, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.