Skip to content

Duplicated imports with --meta none #939

Closed
@satwell

Description

@satwell

Describe the bug
Running with --meta none prints a bunch of F811 errors from ruff complaining about redefinition of imports. And the resulting output files do have duplicated imports. For example:

$ openapi-python-client generate --meta none --url https://raw.githubusercontent.com/openapi-generators/openapi-python-client/main/end_to_end_tests/baseline_openapi_3.0.json
[...]
models/test_inline_objects_body.py:8:21: F811 Redefinition of unused `UNSET` from line 6
models/test_inline_objects_body.py:8:28: F811 Redefinition of unused `Unset` from line 6
models/test_inline_objects_response_200.py:8:21: F811 Redefinition of unused `UNSET` from line 6
models/test_inline_objects_response_200.py:8:28: F811 Redefinition of unused `Unset` from line 6
Found 640 errors (482 fixed, 158 remaining).

I think this is happening because with --meta none there's no pyproject.toml that turns on isort functionality in ruff. With the other --meta options, ruff gets configured with select = ["F", "I"], and this fixes the duplicate imports.

One solution would be to explicitly include ruff's isort rules when running ruff in the post hooks. I've found that the following config fixes the issue:

post_hooks:
  - "ruff check . --fix --extend-select=I"
  - "ruff format ."

OpenAPI Spec File
This is reproducible with the openapi-python-client test specs, such as https://raw.githubusercontent.com/openapi-generators/openapi-python-client/main/end_to_end_tests/baseline_openapi_3.0.json.

Desktop (please complete the following information):

  • OS: Debian Bookworm
  • Python Version: 3.11.2
  • openapi-python-client version 0.17.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions