THRIFT-5885 Fix enum generation
Client: py
Patch: Carel Combrink
This closes #3232
diff --git a/compiler/cpp/src/thrift/generate/t_py_generator.cc b/compiler/cpp/src/thrift/generate/t_py_generator.cc
index 06bd17b..f8fb9f8 100644
--- a/compiler/cpp/src/thrift/generate/t_py_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_py_generator.cc
@@ -988,8 +988,8 @@
t_type* type = (*m_iter)->get_type();
if (type->is_enum()) {
out << indent() << "if name == \"" << (*m_iter)->get_name() << "\":" << '\n'
- << indent() << indent_str() << "super().__setattr__(name, value if hasattr(value, 'value') else "
- << type_name(type) << ".__members__.get(value))" << '\n'
+ << indent() << indent_str() << "super().__setattr__(name, value if hasattr(value, 'value') or value is None else "
+ << type_name(type) << "(value))" << '\n'
<< indent() << indent_str() << "return" << '\n';
}
}
diff --git a/test/py/RunClientServer.py b/test/py/RunClientServer.py
index db0814f..278f06c 100755
--- a/test/py/RunClientServer.py
+++ b/test/py/RunClientServer.py
@@ -285,13 +285,8 @@
generated_dirs = []
for gp_dir in options.genpydirs.split(','):
- if gp_dir == 'type_hints':
- # Skip type hints tests -> See THRIFT-5885 (it might be related)
- print('Skipping \'type_hints\' tests')
- continue
- if gp_dir == 'enum':
- # Skip enum tests -> See THRIFT-5885
- print('Skipping \'enum\' tests')
+ if gp_dir == 'type_hints' and (sys.version_info < (3,7)):
+ print('Skipping \'type_hints\' test since python 3.7 or later is required')
continue
generated_dirs.append('gen-py-%s' % (gp_dir))