openapi-generators / openapi-generators/openapi-python-client

Model named `Client` causes errors

Abierto
#1,045 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Python
Estrellas
2k
Forks
293
Merge medio
34 min
PR fusionados (30 d)
1

Descripción

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).

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Reproduce el problema con la especificación OpenAPI proporcionada y, a continuación, inspecciona los imports del archivo generado fast_api_client/api/default/client_client_get.py. La corrección estará completa cuando los tipos de modelo y cliente generados ya no entren en conflicto y ruff se ejecute sin el error F811.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
api, tooling
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
42/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.