Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Model named Client causes errors #1045

Open
matteo-zanoni opened this issue May 15, 2024 · 1 comment
Open

Model named Client causes errors #1045

matteo-zanoni opened this issue May 15, 2024 · 1 comment

Comments

@matteo-zanoni
Copy link

Describe the bug
If a model of the Openapi App is called Client this name collides with the client.Client object in imports.

OpenAPI Spec File

{
  "openapi": "3.1.0",
  "info": {
    "title": "FastAPI",
    "version": "0.1.0"
  },
  "paths": {
    "/client": {
      "get": {
        "summary": "Client",
        "operationId": "client_client_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Client"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Client": {
        "properties": {
          "foo": {
            "type": "string",
            "title": "Foo"
          },
          "bar": {
            "type": "integer",
            "title": "Bar"
          }
        },
        "type": "object",
        "required": [
          "foo",
          "bar"
        ],
        "title": "Client"
      }
    }
  }
}

Desktop (please complete the following information):

  • OS: [e.g. Ubuntu 22.04]
  • Python Version: [e.g. 3.10.12]
  • openapi-python-client version [e.g. 0.19.1]

Additional context
The generator outputs:

Generating fast-api-client
Error(s) encountered while generating, client was not created

ruff failed

fast_api_client/api/default/client_client_get.py:8:30: F811 Redefinition of unused `Client` from line 7
Found 16 errors (15 fixed, 1 remaining).

In the relevant code there are two imports:

from ...client import AuthenticatedClient, Client
from ...models.client import Client

As hinted by ruff' error message there are two imports that load a Client object but they are loading different objects.
If you ty to use the generated code:

from fast_api_client import Client
from fast_api_client.api.default import client_client_get

with Client(base_url="http://localhost:8000") as client:
    data = client_client_get.sync(client=client)

print(data)

It will still work properly as the only Client type that is actually used at runtime is the one from models which is imported last (the Client from client is only used for type-hinting).

@matteo-zanoni
Copy link
Author

matteo-zanoni commented May 15, 2024

This could be solved by updating the templates to only from ... import models and then referring to the models with the full qualification (like models.client.Client).

I would be happy to help with some guidance!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant