Skip to content

String enum values containing ³ character do not get properly sanitized #1327

@j-reisons

Description

@j-reisons

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions