openapi-python-client icon indicating copy to clipboard operation
openapi-python-client copied to clipboard

String enum values containing ³ character do not get properly sanitized

Open j-reisons opened this issue 3 months ago • 0 comments

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.

j-reisons avatar Sep 29 '25 09:09 j-reisons