File tree 3 files changed +15
-2
lines changed 3 files changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -1271,6 +1271,10 @@ class py3_enum {
1271
1271
kwargs[" module" ] = scope.attr (" __module__" );
1272
1272
else if (hasattr (scope, " __name__" ))
1273
1273
kwargs[" module" ] = scope.attr (" __name__" );
1274
+ #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 3
1275
+ if (hasattr (scope, " __qualname__" ))
1276
+ kwargs[" qualname" ] = scope.attr (" __qualname__" ).cast <std::string>() + " ." + name;
1277
+ #endif
1274
1278
}
1275
1279
update ();
1276
1280
}
Original file line number Diff line number Diff line change @@ -54,6 +54,8 @@ enum class Py3EnumNonUnique {
54
54
X = 1
55
55
};
56
56
57
+ class DummyScope {};
58
+
57
59
std::string test_scoped_enum (ScopedEnum z) {
58
60
return " ScopedEnum::" + std::string (z == ScopedEnum::Two ? " Two" : " Three" );
59
61
}
@@ -77,7 +79,8 @@ test_initializer enums([](py::module &m) {
77
79
.export_values ();
78
80
79
81
#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" );
81
84
82
85
py::py3_enum<Py3Enum>(m, " Py3Enum" )
83
86
.value (" A" , Py3Enum::A)
Original file line number Diff line number Diff line change @@ -120,10 +120,12 @@ def test_binary_operators():
120
120
@pytest .requires_py3
121
121
def test_py3_enum ():
122
122
from pybind11_tests import (
123
- Py3Enum , Py3EnumEmpty , Py3EnumScoped ,
123
+ Py3Enum , DummyScope , Py3EnumScoped ,
124
124
make_py3_enum , take_py3_enum , non_unique_py3_enum
125
125
)
126
126
127
+ Py3EnumEmpty = DummyScope .Py3EnumEmpty
128
+
127
129
from enum import IntEnum
128
130
129
131
expected = {
@@ -137,6 +139,10 @@ def test_py3_enum():
137
139
assert sorted (tp .__members__ .items ()) == entries
138
140
assert tp .__module__ == 'pybind11_tests'
139
141
142
+ assert Py3Enum .__qualname__ == 'Py3Enum'
143
+ assert Py3EnumEmpty .__qualname__ == 'DummyScope.Py3EnumEmpty'
144
+ assert Py3EnumScoped .__qualname__ == 'Py3EnumScoped'
145
+
140
146
assert make_py3_enum (True ) is Py3EnumScoped .X
141
147
assert make_py3_enum (False ) is Py3EnumScoped .Y
142
148
You can’t perform that action at this time.
0 commit comments