openapi-generator icon indicating copy to clipboard operation
openapi-generator copied to clipboard

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

Open stdweird opened this issue 1 year ago • 3 comments

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

stdweird avatar Jun 21 '24 15:06 stdweird

how critical is it?

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

wing328 avatar Jun 22 '24 15:06 wing328

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

wing328 avatar Jun 22 '24 15:06 wing328

@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 ?

stdweird avatar Jun 24 '24 07:06 stdweird