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

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 rtaycher opened this issue 1 year ago • 0 comments

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

rtaycher avatar May 14 '24 11:05 rtaycher