openapi-generators / openapi-generators/openapi-python-client
String enum values containing ³ character do not get properly sanitized
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
The ³ character in string enum values does not get sanitized out before creating enum names, resulting in invalid generated code.
OpenAPI Spec File
openapi: 3.0.0
info:
title: Test API for Nm³ Enum Issue
version: 1.0.0
description: Minimal API to reproduce enum generation issue with Unicode characters
servers:
- url: https://api.example.com
paths:
/volume:
get:
summary: Get volume measurements
responses:
'200':
description: Volume measurement response
content:
application/json:
schema:
type: object
properties:
unit:
$ref: '#/components/schemas/VolumeUnit'
value:
type: number
components:
schemas:
VolumeUnit:
type: string
enum:
- "Nm³"
- "m³"
- "ft³"
- "normal_value"
description: Volume unit with problematic Unicode superscript characters
On WSL, I checked out the latest version of the generator and ran
pip3 install -e .
python3 -m openapi_python_client generate --path repro.yaml --output-path test_output
Which resulted in the following ./test_output/test_api_for_nm_³_enum_issue_client/models/volume_unit.py (along with a pile of ruff errors)
from enum import Enum
class VolumeUnit(str, Enum):
FT³ = "ft³"
M³ = "m³"
NM³ = "Nm³"
NORMAL_VALUE = "normal_value"
def __str__(self) -> str:
return str(self.value)
Which is not legal python.
Desktop (please complete the following information):
- OS: Microsoft Windows Server 2022, WSL 2.1.5.0, Ubuntu 22.04.5
- Python Version: Python 3.10.12
- openapi-python-client version 0.26.1
Additional context
Add any other context about the problem here.
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 mit der Spezifikation in repro.yaml und führe den dokumentierten Befehl python3 -m openapi_python_client generate mit dem angegebenen Ausgabepfad aus. Untersuche die generierte volume_unit.py und die zugehörige ruff-Ausgabe; abgeschlossen ist die Aufgabe, wenn aus Nm³, m³ und ft³ abgeleitete Enum-Namen gültige Python-Bezeichner sind und die Generierung diese Fehler nicht mehr erzeugt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 48/100