MCPcopy Create free account
hub / github.com/pybind/pybind11 / finalize

Method finalize

include/pybind11/detail/native_enum_data.h:185–224  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

183}
184
185inline void native_enum_data::finalize() {
186 disarm_finalize_check("DOUBLE finalize");
187 if (hasattr(parent_scope, enum_name)) {
188 pybind11_fail("pybind11::native_enum<...>(\"" + enum_name_encoded
189 + "\"): an object with that name is already defined");
190 }
191 auto py_enum_type = import_or_getattr(native_type_name, " (native_type_name)");
192 auto py_enum = py_enum_type(enum_name, members);
193 object module_name = get_module_name_if_available(parent_scope);
194 if (module_name) {
195 py_enum.attr("__module__") = module_name;
196 }
197 if (hasattr(parent_scope, "__qualname__")) {
198 const auto parent_qualname = parent_scope.attr("__qualname__").cast<std::string>();
199 py_enum.attr("__qualname__") = str(parent_qualname + "." + enum_name.cast<std::string>());
200 }
201 parent_scope.attr(enum_name) = py_enum;
202 if (export_values_flag) {
203 for (auto member : members) {
204 auto member_name = member[int_(0)];
205 if (hasattr(parent_scope, member_name)) {
206 pybind11_fail("pybind11::native_enum<...>(\"" + enum_name_encoded + "\").value(\""
207 + member_name.cast<std::string>()
208 + "\"): an object with that name is already defined");
209 }
210 parent_scope.attr(member_name) = py_enum[member_name];
211 }
212 }
213 if (!class_doc.empty()) {
214 py_enum.attr("__doc__") = class_doc.c_str();
215 }
216 for (auto doc : member_docs) {
217 py_enum[doc[int_(0)]].attr("__doc__") = doc[int_(1)];
218 }
219
220 py_enum.attr(native_enum_record::attribute_name()) = enum_record;
221 with_internals([&](internals &internals) {
222 internals.native_enum_type_map[enum_type_index] = py_enum.ptr();
223 });
224}
225
226PYBIND11_NAMESPACE_END(detail)
227PYBIND11_NAMESPACE_END(PYBIND11_NAMESPACE)

Callers 2

PYBIND11_MODULEFunction · 0.80
TEST_SUBMODULEFunction · 0.80

Calls 9

hasattrFunction · 0.85
import_or_getattrFunction · 0.85
strClass · 0.85
int_Class · 0.85
with_internalsFunction · 0.85
attrMethod · 0.80
ptrMethod · 0.80
emptyMethod · 0.45

Tested by 1

TEST_SUBMODULEFunction · 0.64