|
|
|
@ -73,7 +73,7 @@ FuncGraphPtr ConvertToBpropCut(const py::object &obj) {
|
|
|
|
|
namespace {
|
|
|
|
|
bool ConvertTuple(const py::object &obj, ValuePtr *const data, bool use_signature) {
|
|
|
|
|
MS_LOG(DEBUG) << "Converting python tuple";
|
|
|
|
|
py::tuple tuple = obj.cast<py::tuple>();
|
|
|
|
|
auto tuple = obj.cast<py::tuple>();
|
|
|
|
|
std::vector<ValuePtr> value_list;
|
|
|
|
|
for (size_t it = 0; it < tuple.size(); ++it) {
|
|
|
|
|
ValuePtr out = nullptr;
|
|
|
|
@ -91,7 +91,7 @@ bool ConvertTuple(const py::object &obj, ValuePtr *const data, bool use_signatur
|
|
|
|
|
bool ConvertList(const py::object &obj, ValuePtr *const data, bool use_signature) {
|
|
|
|
|
MS_LOG(DEBUG) << "Converting python list";
|
|
|
|
|
|
|
|
|
|
py::list list = obj.cast<py::list>();
|
|
|
|
|
auto list = obj.cast<py::list>();
|
|
|
|
|
std::vector<ValuePtr> value_list;
|
|
|
|
|
for (size_t it = 0; it < list.size(); ++it) {
|
|
|
|
|
ValuePtr out = nullptr;
|
|
|
|
@ -124,7 +124,7 @@ bool ConvertCellList(const py::object &obj, ValuePtr *const data, bool use_signa
|
|
|
|
|
bool ConvertDict(const py::object &obj, ValuePtr *data, bool use_signature) {
|
|
|
|
|
MS_LOG(DEBUG) << "Converting python dict";
|
|
|
|
|
|
|
|
|
|
py::dict dict_values = obj.cast<py::dict>();
|
|
|
|
|
auto dict_values = obj.cast<py::dict>();
|
|
|
|
|
std::vector<std::pair<std::string, ValuePtr>> key_values;
|
|
|
|
|
for (auto item : dict_values) {
|
|
|
|
|
if (!py::isinstance<py::str>(item.first)) {
|
|
|
|
@ -208,7 +208,7 @@ bool ConvertMetaFuncGraph(const py::object &obj, ValuePtr *const data, bool use_
|
|
|
|
|
bool ConvertSlice(const py::object &obj, ValuePtr *const data) {
|
|
|
|
|
MS_LOG(DEBUG) << "Converting slice object";
|
|
|
|
|
|
|
|
|
|
py::slice slice_obj = obj.cast<py::slice>();
|
|
|
|
|
auto slice_obj = obj.cast<py::slice>();
|
|
|
|
|
auto convert_func = [obj](std::string attr) -> ValuePtr {
|
|
|
|
|
auto py_attr = py::getattr(obj, attr.c_str());
|
|
|
|
|
if (py::isinstance<py::none>(py_attr)) {
|
|
|
|
@ -335,7 +335,7 @@ bool ConvertData(const py::object &obj, ValuePtr *const data, bool use_signature
|
|
|
|
|
} else if (py::isinstance<MetaTensor>(obj)) {
|
|
|
|
|
converted = obj.cast<MetaTensorPtr>();
|
|
|
|
|
} else if (py::isinstance<EnvInstance>(obj)) {
|
|
|
|
|
std::shared_ptr<EnvInstance> env = obj.cast<std::shared_ptr<EnvInstance>>();
|
|
|
|
|
auto env = obj.cast<std::shared_ptr<EnvInstance>>();
|
|
|
|
|
converted = env;
|
|
|
|
|
} else if (py::hasattr(obj, PYTHON_CLASS_MEMBER_NAMESPACE)) {
|
|
|
|
|
converted = std::make_shared<NameSpace>(RESOLVE_NAMESPACE_NAME_CLASS_MEMBER, obj);
|
|
|
|
@ -374,7 +374,7 @@ FuncGraphPtr ConvertToFuncGraph(const py::object &obj, const std::string &python
|
|
|
|
|
|
|
|
|
|
data_converter::MakeProperNameToFuncGraph(func_graph, obj_id);
|
|
|
|
|
data_converter::CacheObjectValue(obj_id, func_graph);
|
|
|
|
|
if (obj_key != "") {
|
|
|
|
|
if (!obj_key.empty()) {
|
|
|
|
|
MS_LOG(DEBUG) << "Add graph:" << obj_key << ", func_graph:" << func_graph->ToString();
|
|
|
|
|
data_converter::SetObjGraphValue(obj_key, func_graph);
|
|
|
|
|
}
|
|
|
|
@ -440,7 +440,7 @@ bool IsCellInstance(const py::object &obj) {
|
|
|
|
|
py::object CreatePythonObject(const py::object &type, const py::tuple ¶ms) {
|
|
|
|
|
py::module mod = python_adapter::GetPyModule(PYTHON_MOD_PARSE_MODULE);
|
|
|
|
|
py::object obj;
|
|
|
|
|
if (params.size() == 0) {
|
|
|
|
|
if (params.empty()) {
|
|
|
|
|
obj = python_adapter::CallPyModFn(mod, PYTHON_MOD_CREATE_OBJ_INSTANCE, type);
|
|
|
|
|
} else {
|
|
|
|
|
obj = python_adapter::CallPyModFn(mod, PYTHON_MOD_CREATE_OBJ_INSTANCE, type, params);
|
|
|
|
@ -499,7 +499,7 @@ ClassPtr ParseDataClass(const py::object &cls_obj) {
|
|
|
|
|
ClassAttrVector attributes;
|
|
|
|
|
py::dict names = python_adapter::CallPyModFn(mod, PYTHON_MOD_GET_DATACLASS_ATTRS, cls_obj);
|
|
|
|
|
for (auto &item : names) {
|
|
|
|
|
TypePtr type_value = item.second.cast<TypePtr>();
|
|
|
|
|
auto type_value = item.second.cast<TypePtr>();
|
|
|
|
|
MS_EXCEPTION_IF_NULL(type_value);
|
|
|
|
|
MS_LOG(DEBUG) << "(Name: " << py::cast<std::string>(item.first) << ", type: " << type_value->ToString() << ")";
|
|
|
|
|
attributes.push_back(std::make_pair(py::cast<std::string>(item.first), type_value));
|
|
|
|
@ -508,8 +508,8 @@ ClassPtr ParseDataClass(const py::object &cls_obj) {
|
|
|
|
|
std::unordered_map<std::string, ValuePtr> methods_map;
|
|
|
|
|
py::dict methods = python_adapter::CallPyModFn(mod, PYTHON_MOD_GET_DATACLASS_METHODS, cls_obj);
|
|
|
|
|
for (auto &item : methods) {
|
|
|
|
|
std::string fun_name = item.first.cast<std::string>();
|
|
|
|
|
py::object obj = py::cast<py::object>(item.second);
|
|
|
|
|
auto fun_name = item.first.cast<std::string>();
|
|
|
|
|
auto obj = py::cast<py::object>(item.second);
|
|
|
|
|
std::shared_ptr<PyObjectWrapper> method_obj = std::make_shared<PyObjectWrapper>(obj, fun_name);
|
|
|
|
|
methods_map[fun_name] = method_obj;
|
|
|
|
|
}
|
|
|
|
|