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

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

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