Attempted to generate duplicate models with name "TypenameFieldnameItem"
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 55/100
Rechercherichtung
Beginne damit, openapi-python-client generate --path=example.yaml --overwrite mit den beiden Schemas aus dem Issue auszuführen, und verfolge dann den Einstiegspunkt für die Modellgenerierung, der das Inline-Array-Element und das referenzierte Modell verarbeitet. Als abgeschlossen gilt die Änderung, wenn die Inline-Form nicht mehr das doppelte ResultAThingsItem-Modell meldet und die GET-Antwort im generierten Client erhalten bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Describe the bug
I stumbled on a weirdly specific bug that causes the generator to attempt to generate duplicate models.
Apparently we need:
- a OneOf type (A), which references an Object type (B)
- An object type (B) with an array-of-object field
- An Object type (C) for the array-of-object field
- array-of-C and C must be declared inline inside B
OpenAPI Spec File
This works
openapi: 3.0.3
info:
title: Minimal example for error "Attempted to generate duplicate models"
version: 1.0.0
components:
schemas:
Result:
oneOf:
- $ref: "#/components/schemas/ResultA"
discriminator:
propertyName: type
mapping:
"A": "#/components/schemas/ResultA"
ResultA:
type: object
properties:
things:
type: array
items:
$ref: "#/components/schemas/ResultAThingsItem"
ResultAThingsItem:
type: object
properties:
name:
type: string
paths:
/something:
get:
summary: Returns a list of users.
responses:
'200':
description: A successful response returning the list of users.
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
This should be the same, but doesn't work:
openapi: 3.0.3
info:
title: Minimal example for error "Attempted to generate duplicate models"
version: 1.0.0
components:
schemas:
Result:
oneOf:
- $ref: "#/components/schemas/ResultA"
discriminator:
propertyName: type
mapping:
"A": "#/components/schemas/ResultA"
ResultA:
type: object
properties:
things:
type: array
items:
type: object
properties:
name:
type: string
paths:
/something:
get:
summary: Returns a list of users.
responses:
'200':
description: A successful response returning the list of users.
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
Output:
$ pipx run openapi-python-client generate --path=example.yaml --overwrite
Generating <...>/minimal-example-for-error-attempted-to-generate-duplicate-models-client
Warning(s) encountered while generating. Client was generated, but some pieces may be missing
WARNING parsing GET /something within default.
Cannot parse response for status code 200 (Could not find reference in parsed models or enums), response will be omitted from generated client
Reference(ref='#/components/schemas/Result')
Unable to process schema /components/schemas/Result:
Attempted to generate duplicate models with name "ResultAThingsItem"
Failure to process schema has resulted in the removal of:
/components/schemas/ResultA
/components/schemas/Result
Schema(title=None, multipleOf=None, maximum=None, exclusiveMaximum=None, minimum=None, exclusiveMinimum=None, maxLength=None, minLength=None, pattern=None, maxItems=None, minItems=None, uniqueItems=None, maxProperties=None, minProperties=None, required=None, enum=None, const=None, type=<DataType.OBJECT: 'object'>, allOf=[], oneOf=[], anyOf=[], schema_not=None, items=None, prefixItems=[], properties={'name': Schema(title=None, multipleOf=None, maximum=None, exclusiveMaximum=None, minimum=None, exclusiveMinimum=None, maxLength=None, minLength=None, pattern=None, maxItems=None, minItems=None, uniqueItems=None, maxProperties=None, minProperties=None, required=None, enum=None, const=None, type=<DataType.STRING: 'string'>, allOf=[], oneOf=[], anyOf=[], schema_not=None, items=None, prefixItems=[], properties=None, additionalProperties=None, description=None, schema_format=None, default=None, nullable=False, discriminator=None, readOnly=None, writeOnly=None, xml=None, externalDocs=None, example=None, deprecated=None)}, additionalProperties=None, description=None, schema_format=None, default=None, nullable=False, discriminator=None, readOnly=None, writeOnly=None, xml=None, externalDocs=None, example=None, deprecated=None)
If you believe this was a mistake or this tool is missing a feature you need, please open an issue at https://github.com/openapi-generators/openapi-python-client/issues/new/choose
**Desktop (please complete the following information):**
- OS: Ubuntu 25.04
- Python Version: 3.12.3
- openapi-python-client version: 0.28.0
- Vorherrschende Sprache
- Python
- Sterne
- 2k
- Forks
- 293
- Ø Merge
- 34 Min.
- Gemergte PRs (30 T.)
- 1
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus openapi-generators/openapi-python-client
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 72/100
openapi-generators/openapi-python-client#1451 · 1 Kommentar ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 52/100
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 64/100
openapi-generators/openapi-python-client#1435 · 1 Kommentar ·
Alle Issues in openapi-generators/openapi-python-client
Ähnliche Issues
-
essnmx good first issue
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 95/100
-
[Feature] 奇物选择添加优先级 Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
syfoud/Simulated_Scepter#174 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Giskard-AI/giskard-oss#2840 · 1 Kommentar ·
-
A claim comment carrying the issue number is silently declined while the workflow reports success Offenarea: repo bug perceived difficulty: 2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
yeti-platform/yeti#1380 ·