File tree Expand file tree Collapse file tree 2 files changed +16
-6
lines changed Expand file tree Collapse file tree 2 files changed +16
-6
lines changed Original file line number Diff line number Diff line change @@ -1243,11 +1243,19 @@ class py3_enum {
12431243public:
12441244 using underlying_type = typename std::underlying_type<T>::type;
12451245
1246- py3_enum (handle scope, const char * enum_name )
1247- : name(enum_name ),
1248- parent (scope),
1246+ py3_enum (handle scope, const char * name )
1247+ : name(name ),
1248+ scope (scope),
12491249 ctor(module ::import (" enum" ).attr(" IntEnum" )),
12501250 unique(module ::import (" enum" ).attr(" unique" )) {
1251+ kwargs[" value" ] = cast (name);
1252+ kwargs[" names" ] = entries;
1253+ if (scope) {
1254+ if (hasattr (scope, " __module__" ))
1255+ kwargs[" module" ] = scope.attr (" __module__" );
1256+ else if (hasattr (scope, " __name__" ))
1257+ kwargs[" module" ] = scope.attr (" __name__" );
1258+ }
12511259 update ();
12521260 }
12531261
@@ -1259,14 +1267,15 @@ class py3_enum {
12591267
12601268private:
12611269 const char *name;
1262- handle parent ;
1270+ handle scope ;
12631271 dict entries;
12641272 object ctor;
12651273 object unique;
1274+ dict kwargs;
12661275
12671276 void update () {
1268- object type = unique (ctor (name, entries ));
1269- setattr (parent , name, type);
1277+ object type = unique (ctor (**kwargs ));
1278+ setattr (scope , name, type);
12701279 detail::type_caster<T>::bind (type, entries);
12711280 }
12721281};
Original file line number Diff line number Diff line change @@ -135,6 +135,7 @@ def test_py3_enum():
135135 for tp , entries in expected .items ():
136136 assert issubclass (tp , IntEnum )
137137 assert sorted (tp .__members__ .items ()) == entries
138+ assert tp .__module__ == 'pybind11_tests'
138139
139140 assert make_py3_enum (True ) is Py3EnumScoped .X
140141 assert make_py3_enum (False ) is Py3EnumScoped .Y
You can’t perform that action at this time.
0 commit comments