[ 
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. If one chooses to enable 
the option, it's almost backwards compatible with existing code due to IntEnum, 
except that the dicts _VALUES_FOR_NAME/_NAMES_FOR_VALUES have been removed (no 
longer necessary, and don't play nicely with the Enum class).

  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 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.

    
> 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. If one chooses to 
> enable the option, it's almost backwards compatible with existing code due to 
> IntEnum, except that the dicts _VALUES_FOR_NAME/_NAMES_FOR_VALUES have been 
> removed (no longer necessary, and don't play nicely with the Enum class).

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

Reply via email to