openapi-generators / openapi-generators/openapi-python-client

String enum values containing ³ character do not get properly sanitized

Aberta
#1,327 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Linguagem predominante
Python
Estrelas
2k
Forks
293
Merge médio
34min
PRs com merge (30d)
1

Descrição

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.

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Direção de pesquisa

Comece pela especificação de repro.yaml e execute o comando documentado python3 -m openapi_python_client generate usando o caminho de saída indicado. Inspecione o volume_unit.py gerado e a saída relacionada do ruff; está concluído quando os nomes dos enums derivados de Nm³, e ft³ forem identificadores Python válidos e a geração não produzir mais esses erros.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
python
Domínio
tooling
Tipo de issue
Bug
Dificuldade
3/5
Tempo estimado
1-2 dias
Status de atividade
Estagnada
Clareza
Claramente especificada
Facilidade para iniciantes
48/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.