OpenAPITools / openapi-generator

OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
https://openapi-generator.tech
Apache License 2.0
21.95k stars 6.59k forks source link

Python generator produces unnecessary imports to __init__.py #18144

Open fingon opened 8 months ago

fingon commented 8 months ago

Is your feature request related to a problem? Please describe.

In Python, speed of imports of larger codebases is quite crucial. Therefore, minimising the number of imports makes sense. Currently the generated Python code includes every sub-module in the __init__.py (for both main module, as well as api/ and models/) sub directories).

Describe the solution you'd like

The extra imports should be an option (if we want to be backwards compatible, by default on).

Describe alternatives you've considered

My current alternative is horrifying - post-processor step which does:

    echo > X/openapi_client/__init__.py
    echo > X/openapi_client/api/__init__.py
    echo > X/openapi_client/models/__init__.py

(where X is where I'm generating them)

Additional context

By doing ^ the import speed for tools which e.g. import ApiClient and use only one API over doubled. This is for project with few api/models to boot - with more, it gets even faster (in relation).

lawrence-witt commented 3 days ago

This issue has almost rendered the library unusable for our team's use case targeting resource-restricted environments. We have overridden the templates for __init__.py using the templateDir feature provided by openapi-generator config but this still feels like a hack. Even still we are unable to override models/__init__.py because the current implementation for ApiClient seems to depend on the models package exporting its entire contents.