openapi-generators / openapi-generators/openapi-python-client
Model named `Client` causes errors
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 2k
- Fork
- 293
- Merge medio
- 34m
- PR unite (30g)
- 1
Descrizione
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).
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Riproduci il problema con la specifica OpenAPI fornita, quindi esamina gli import nel file generato fast_api_client/api/default/client_client_get.py. La correzione è completa quando i tipi di modello e client generati non entrano più in conflitto e ruff passa senza l'errore F811.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- api, tooling
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 42/100