openapi-generators / openapi-generators/openapi-python-client
String enum values containing ³ character do not get properly sanitized
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 2k
- フォーク
- 293
- 平均マージ
- 34分
- マージ済み PR(30日)
- 1
説明
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.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
repro.yaml の仕様から始め、指定された出力パスを使用して、ドキュメントに記載された python3 -m openapi_python_client generate コマンドを実行します。生成された volume_unit.py と関連する ruff の出力を確認します。Nm³、m³、ft³ から派生した enum 名が有効な Python 識別子になり、生成時にこれらのエラーが発生しなくなれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- tooling
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- 明確に書かれている
- 初心者へのやさしさ
- 48/100