MCPcopy Create free account
hub / github.com/alibaba/zvec / bind_doc

Method bind_doc

src/binding/python/model/python_doc.cc:49–451  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

47
48
49void ZVecPyDoc::bind_doc(py::module_ &m) {
50 // binding doc
51 py::class_<Doc, Doc::Ptr> doc(m, "_Doc");
52
53 doc.def(py::init([]() { return std::make_shared<Doc>(); }))
54 .def("set_pk", &Doc::set_pk)
55 .def("pk", &Doc::pk)
56 .def("set_score", &Doc::set_score)
57 .def("score", &Doc::score)
58 .def("has_field", &Doc::has)
59 .def("field_names", &Doc::field_names)
60 .def(py::pickle(
61 [](const Doc &d) {
62 std::vector<uint8_t> data = d.serialize();
63 return py::bytes(reinterpret_cast<const char *>(data.data()),
64 data.size());
65 },
66 [](py::bytes b) {
67 py::buffer_info info(py::buffer(b).request());
68 const uint8_t *buf = reinterpret_cast<const uint8_t *>(info.ptr);
69 size_t size = static_cast<size_t>(info.size);
70 Doc::Ptr d = Doc::deserialize(buf, size);
71 if (!d) throw std::runtime_error("Failed to unpickle Doc");
72 return d;
73 }));
74
75
76 // binding doc set field
77 doc.def(
78 "set_any",
79 [](Doc &self, const std::string &field, const FieldSchema &field_schema,
80 const py::object &obj) -> bool {
81 if (obj.is_none()) {
82 if (field_schema.nullable()) {
83 self.set_null(field);
84 return true;
85 }
86 throw py::value_error("Field '" + field +
87 "': expected non-nullable type");
88 }
89 switch (field_schema.data_type()) {
90 // base datatypes
91 case DataType::STRING:
92 return self.set(field,
93 checked_cast<std::string>(obj, field, "STRING"));
94 case DataType::BOOL:
95 return self.set(field, checked_cast<bool>(obj, field, "BOOL"));
96 case DataType::INT32:
97 return self.set(field, checked_cast<int32_t>(obj, field, "INT32"));
98 case DataType::INT64:
99 return self.set(field, checked_cast<int64_t>(obj, field, "INT64"));
100 case DataType::UINT32:
101 return self.set(field,
102 checked_cast<uint32_t>(obj, field, "UINT32"));
103 case DataType::UINT64:
104 return self.set(field,
105 checked_cast<uint64_t>(obj, field, "UINT64"));
106 case DataType::FLOAT:

Callers

nothing calls this directly

Calls 15

initFunction · 0.85
deserializeFunction · 0.85
Float16Class · 0.85
nullableMethod · 0.80
push_backMethod · 0.80
forward_fieldsMethod · 0.80
vector_fieldsMethod · 0.80
serializeMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45
data_typeMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected