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
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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