You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Todd Lipcon (JIRA)" <ji...@apache.org> on 2009/07/22 02:01:14 UTC
[jira] Updated: (THRIFT-546) Python generated code should give the
ability to convert to/from string names of enums
[ https://issues.apache.org/jira/browse/THRIFT-546?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Todd Lipcon updated THRIFT-546:
-------------------------------
Attachment: thrift-546.txt
This patch adds TO_STRING and FROM_STRING dictionaries to generated code. From the generated code for tutorial.thrift:
{code:python}
class Operation(object):
"""
You can define enums, which are just 32 bit integers. Values are optional
and start at 1 if not supplied, C style again.
"""
ADD = 1
SUBTRACT = 2
MULTIPLY = 3
DIVIDE = 4
TO_STRING = {
1: "ADD",
2: "SUBTRACT",
3: "MULTIPLY",
4: "DIVIDE",
}
FROM_STRING = {
"ADD": 1,
"SUBTRACT": 2,
"MULTIPLY": 3,
"DIVIDE": 4,
}
{code}
This has major downside, which is that you can't name an enum constant "FROM_STRING" or "TO_STRING" - somewhat annoying. Two alternatives:
a) name them something less likely to conflict - eg make them functions "@staticmethod def from_string(i): ...". This is still bad, but I think maybe less bad.
b) It would be sort of nice to do an overhaul of enum handling completely
{code:python}
class Operation(object):
def __init__(self, value, name):
self.value = value
self.name = name
def __str__(self):
return self.name
Operation.ADD = Operation(1, "ADD")
Operation.SUBTRACT = Operation(2, "SUBTRACT")
...
{code}
This would make operation values more "typesafe" though would not be backwards-compatible.
> Python generated code should give the ability to convert to/from string names of enums
> --------------------------------------------------------------------------------------
>
> Key: THRIFT-546
> URL: https://issues.apache.org/jira/browse/THRIFT-546
> Project: Thrift
> Issue Type: New Feature
> Components: Compiler (Python)
> Reporter: Todd Lipcon
> Assignee: Todd Lipcon
> Attachments: thrift-546.txt
>
>
> The current code just generates enums as int constants namespaced within a class. This patch adds dictionaries in that class called TO_STRING and FROM_STRING, so enum values can be nicely printed in log messages, etc.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.