|
|
|
@ -30,17 +30,21 @@
|
|
|
|
|
#include "pybind_api/export_flags.h"
|
|
|
|
|
|
|
|
|
|
namespace mindspore {
|
|
|
|
|
static ValuePtr PyArgToValue(const py::object &arg) {
|
|
|
|
|
if (py::isinstance<SignatureEnumKind>(arg) &&
|
|
|
|
|
py::cast<SignatureEnumKind>(arg) == SignatureEnumKind::kKindEmptyDefaultValue) {
|
|
|
|
|
return nullptr;
|
|
|
|
|
}
|
|
|
|
|
return parse::data_converter::PyDataToValue(arg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PrimitivePy::set_signatures(
|
|
|
|
|
std::vector<std::tuple<std::string, SignatureEnumRW, SignatureEnumKind, py::object, SignatureEnumDType>> signatures) {
|
|
|
|
|
signatures_.clear();
|
|
|
|
|
for (auto &signature : signatures) {
|
|
|
|
|
std::string name;
|
|
|
|
|
SignatureEnumRW rw;
|
|
|
|
|
SignatureEnumKind kind;
|
|
|
|
|
py::object default_value;
|
|
|
|
|
SignatureEnumDType dtype;
|
|
|
|
|
std::tie(name, rw, kind, default_value, dtype) = signature;
|
|
|
|
|
signatures_.emplace_back(Signature(name, rw, kind, default_value, dtype));
|
|
|
|
|
auto [name, rw, kind, arg_default, dtype] = signature;
|
|
|
|
|
auto default_value = PyArgToValue(arg_default);
|
|
|
|
|
signatures_.emplace_back(name, rw, kind, default_value, dtype);
|
|
|
|
|
}
|
|
|
|
|
set_has_signature(true);
|
|
|
|
|
}
|
|
|
|
|