[
https://issues.apache.org/jira/browse/THRIFT-2059?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
James Haggerty updated THRIFT-2059:
-----------------------------------
Description:
Currently enums are represented in Python by classes (see [#THRIFT-546]) but
those classes are not referenced by structs. This means that it's impossible to
find out whether something is an enum or an i32 by inspection.
e.g. I want to be able to look at the number 1 and realise it's an
Operation.ADD or similar.
I propose adding an option 'enum' to the generator to support Python 3.4 style
enums (see enum34 package on pypi). Any I32 that should be an enum is
automatically converted into an IntEnum derived object on deserialising, and
constants are also constructed with the correct type. Should be almost
backwards compatible with existing code as it uses IntEnum, except that the
dict pairs _VALUES_FOR_NAME etc. have been removed.
was:
Currently enums are represented in Python by classes (see [#THRIFT-546]) but
those classes are not referenced by structs. This means that it's impossible to
find out whether something is an enum or an i32 by inspection.
e.g. I want to be able to look at the number 1 and realise it's an
Operation.ADD or similar.
I propose adding an option 'enum' to the generator to support Python 3.4 style
enums (see enum34 package on pypi). Any I32 that should be an enum is
automatically converted into a proper IntEnum object on deserialising, and
constants are also constructed with the correct type. Patch attached. Should be
almost backwards compatible with existing code as it uses IntEnum, except that
the dict pairs _VALUES_FOR_NAME etc. have been removed.
> Support for Python 3.4 enums
> ----------------------------
>
> Key: THRIFT-2059
> URL: https://issues.apache.org/jira/browse/THRIFT-2059
> Project: Thrift
> Issue Type: Improvement
> Components: Python - Compiler
> Affects Versions: 0.9
> Reporter: James Haggerty
> Priority: Minor
> Attachments: thrift-0001-Python3.4-style-enum-support.patch
>
>
> Currently enums are represented in Python by classes (see [#THRIFT-546]) but
> those classes are not referenced by structs. This means that it's impossible
> to find out whether something is an enum or an i32 by inspection.
> e.g. I want to be able to look at the number 1 and realise it's an
> Operation.ADD or similar.
> I propose adding an option 'enum' to the generator to support Python 3.4
> style enums (see enum34 package on pypi). Any I32 that should be an enum is
> automatically converted into an IntEnum derived object on deserialising, and
> constants are also constructed with the correct type. Should be almost
> backwards compatible with existing code as it uses IntEnum, except that the
> dict pairs _VALUES_FOR_NAME etc. have been removed.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira