OpenAPITools / openapi-generator

OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
https://openapi-generator.tech
Apache License 2.0
20.51k stars 6.27k forks source link

[BUG] python generated models for py3.11+ should use StrEnum instead of str,Enum #18995

Open stdweird opened 1 week ago

stdweird commented 1 week ago

Bug Report Checklist

As of python 3.11, a generate model class class MyType(str, Enum) should be replaced by class MyType(StrEnum)

Quite annoying, more info https://blog.pecar.me/python-enum

wing328 commented 6 days ago

how critical is it?

we still need to support older versions of python, e.g. 3.9 even though it's reached EOL

wing328 commented 6 days ago

one workaround is to use customized templates (e.g. -t via CLI)

stdweird commented 5 days ago

@wing328 i was not suggesting to drop all older python versions. i am well aware that i spartically impossible. the impact depends on how you use the enums in code: if you keep using the myenum.NAME.value, nothing changes, but if you use the enum stringifictaion, like f"{myenum.NAME}" (and expect the .value string) it is broken.

a solution might be to do something like

try:
    from enum import StrEnum
except:
    class StrEnum(str, Enum):
        ...

and use StrEnum in the generated code ?