File tree Expand file tree Collapse file tree 3 files changed +15
-2
lines changed Expand file tree Collapse file tree 3 files changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -1255,6 +1255,10 @@ class py3_enum {
12551255 kwargs[" module" ] = scope.attr (" __module__" );
12561256 else if (hasattr (scope, " __name__" ))
12571257 kwargs[" module" ] = scope.attr (" __name__" );
1258+ #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 3
1259+ if (hasattr (scope, " __qualname__" ))
1260+ kwargs[" qualname" ] = scope.attr (" __qualname__" ).cast <std::string>() + " ." + name;
1261+ #endif
12581262 }
12591263 update ();
12601264 }
Original file line number Diff line number Diff line change @@ -54,6 +54,8 @@ enum class Py3EnumNonUnique {
5454 X = 1
5555};
5656
57+ class DummyScope {};
58+
5759std::string test_scoped_enum (ScopedEnum z) {
5860 return " ScopedEnum::" + std::string (z == ScopedEnum::Two ? " Two" : " Three" );
5961}
@@ -77,7 +79,8 @@ test_initializer enums([](py::module &m) {
7779 .export_values ();
7880
7981#if PY_VERSION_HEX >= 0x03000000
80- py::py3_enum<Py3EnumEmpty>(m, " Py3EnumEmpty" );
82+ auto scope = py::class_<DummyScope>(m, " DummyScope" );
83+ py::py3_enum<Py3EnumEmpty>(scope, " Py3EnumEmpty" );
8184
8285 py::py3_enum<Py3Enum>(m, " Py3Enum" )
8386 .value (" A" , Py3Enum::A)
Original file line number Diff line number Diff line change @@ -120,10 +120,12 @@ def test_binary_operators():
120120@pytest .requires_py3
121121def test_py3_enum ():
122122 from pybind11_tests import (
123- Py3Enum , Py3EnumEmpty , Py3EnumScoped ,
123+ Py3Enum , DummyScope , Py3EnumScoped ,
124124 make_py3_enum , take_py3_enum , non_unique_py3_enum
125125 )
126126
127+ Py3EnumEmpty = DummyScope .Py3EnumEmpty
128+
127129 from enum import IntEnum
128130
129131 expected = {
@@ -137,6 +139,10 @@ def test_py3_enum():
137139 assert sorted (tp .__members__ .items ()) == entries
138140 assert tp .__module__ == 'pybind11_tests'
139141
142+ assert Py3Enum .__qualname__ == 'Py3Enum'
143+ assert Py3EnumEmpty .__qualname__ == 'DummyScope.Py3EnumEmpty'
144+ assert Py3EnumScoped .__qualname__ == 'Py3EnumScoped'
145+
140146 assert make_py3_enum (True ) is Py3EnumScoped .X
141147 assert make_py3_enum (False ) is Py3EnumScoped .Y
142148
You can’t perform that action at this time.
0 commit comments