openapi-generators / openapi-generators/openapi-python-client
String enum values containing ³ character do not get properly sanitized
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 2k
- Fork
- 293
- Merge medio
- 34m
- PR unite (30g)
- 1
Descrizione
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.
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
Inizia dalla specifica di repro.yaml ed esegui il comando documentato python3 -m openapi_python_client generate usando il percorso di output indicato. Ispeziona il volume_unit.py generato e l'output ruff correlato; l'attività è completata quando i nomi degli enum derivati da Nm³, m³ e ft³ sono identificatori Python validi e la generazione non produce più quegli errori.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- tooling
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 48/100