openapi-generators / openapi-generators/openapi-python-client
Generator fails on type: array without items even though it's valid in JSON Schema 2020-12 / OpenAPI 3.1
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 2k
- Forks
- 293
- Ø Merge
- 34 Min.
- Gemergte PRs (30 T.)
- 1
Beschreibung
Describe the bug
When a schema has "type": "array" without an "items" field, the generator fails to produce a property for it. In JSON Schema 2020-12 (used by OpenAPI 3.1), omitting items is valid and means "array of any type". The generator should treat it as equivalent to "items": {} (i.e., generate a List[Any] property) rather than silently failing.
OpenAPI Spec File
We encountered this in two forms:
Case 1 — bare array with no constraints:
{
"type": "array",
"description": "Array of objects representing a row of metrics data - can be any format."
}
Case 2 — array with maxItems but no items:
{
"anyOf": [
{ "type": "array", "maxItems": 0 },
{ "type": "object", "properties": { "tag": { "type": "array", "items": { "type": "string" } } } }
]
}
In both cases the generator silently skips the schema (or the anyOf branch) without an error. Adding ["items": {}] to each fixes the generation.
Expected behaviour: {"type": "array"} (with or without other constraints like maxItems) should generate a List[Any] property, consistent with how JSON Schema 2020-12 defines it.
Desktop (please complete the following information):
- OS: Ubuntu 24.04.3 LTS
- Python Version: 3.12.3
- openapi-python-client 0.28.1
- OpenAPI version: 3.1.1 (JSON Schema 2020-12)
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit nachzuverfolgen, wie der Generator Array-Schemas und anyOf-Zweige behandelt, wenn items fehlt, und verwende dabei die beiden Schemas aus dem Issue als Eingaben. Füge eine Regressionstestabdeckung für einfache Arrays und Arrays mit maxItems hinzu, führe anschließend den Generator aus und bestätige, dass beide eine List[Any]-Property erzeugen, anstatt übersprungen zu werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- openapi, python
- Bereich
- api, tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 64/100