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