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

feat: Add a enum_value_prefix similar to field_prefix and/or allow enum values that start with a bad chart to still be VALUE_$X

Open
#1,043 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
2k
Forks
293
Avg merge
34m
Merged PRs (30d)
1

Description

Describe the bug
INT enums
enum: [1,10,20]
map to VALUE_1, VALUE_10, VALUE_20 ....
but you can't have mixed str&int enums.

I have some enums in an openapi file that take both numbers and strings. ex: 1,20,noop
So the numbers need to be strings as well.

But since they start with an invalid char ([0-9]) they're renamed VALUE_1, VALUE_2, etc regardless of the int/string value

I think a similar thing happens to strings that start as _.

It's worse then passing in a string(especially since you can't pass in the string/value instead).
Its better to keep the string value after the prefix.

basically I'd like to be able to have

enum: ["200", "10", "_11", "_ABC", "noop"]

map to

class MyEnum(str, Enum):
    VALUE_200 = "200"
    VALUE_10 = "10"
    VALUE_11 = "11"
    VALUE_ABC= "ABC"
    noop = "noop"

    def __str__(self) -> str:
        return str(self.value)

with
enum_value_prefix: V

class MyEnum(str, Enum):
    V_200 = "200"
    V_10 = "10"
    V_11 = "11"
    V_ABC= "ABC"
    noop = "noop"

    def __str__(self) -> str:
        return str(self.value)

OpenAPI Spec File
Openapi doesn't have great support for custom enum naming.
I think this would work better in many cases anyway
https://stackoverflow.com/questions/66465888/how-to-define-enum-mapping-in-openapi

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the requested behavior with the mixed enum values in the issue and review how the generator currently names invalid enum members. Define done as supporting the proposed enum_value_prefix or equivalent naming while preserving the original values, with coverage for numeric and underscore-prefixed strings.

Written by the indexing model from the issue text.

Assessment

Tech stack
openapi, python
Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.