in src/vo_wrapper.cpp [103:134]
void bind_vo_union(nb::module_ &m, const char* name) {
using namespace datasketches;
nb::class_<var_opt_union<T>>(m, name)
.def(nb::init<uint32_t>(), nb::arg("max_k"))
.def("__str__", [](const var_opt_union<T>& sk) { return sk.to_string(); },
"Produces a string summary of the sketch")
.def("to_string", &var_opt_union<T>::to_string,
"Produces a string summary of the sketch")
.def("update", (void (var_opt_union<T>::*)(const var_opt_sketch<T>& sk)) &var_opt_union<T>::update, nb::arg("sketch"),
"Updates the union with the given sketch")
.def("get_result", &var_opt_union<T>::get_result,
"Returns a sketch corresponding to the union result")
.def("reset", &var_opt_union<T>::reset,
"Resets the union to the empty state")
.def("get_serialized_size_bytes",
[](const var_opt_union<T>& u, py_object_serde& serde) { return u.get_serialized_size_bytes(serde); },
nb::arg("serde"),
"Computes the size in bytes needed to serialize the current union")
.def("serialize",
[](const var_opt_union<T>& u, py_object_serde& serde) {
auto bytes = u.serialize(0, serde);
return nb::bytes(reinterpret_cast<const char*>(bytes.data()), bytes.size());
}, nb::arg("serde"),
"Serializes the union into a bytes object with the provided serde")
.def_static(
"deserialize",
[](const nb::bytes& bytes, py_object_serde& serde) { return var_opt_union<T>::deserialize(bytes.c_str(), bytes.size(), serde); },
nb::arg("bytes"), nb::arg("serde"),
"Constructs a var opt union from the given bytes using the provided serde")
;
}