From 36b3f75cc10d25716279e6921640e86db3d2c35f Mon Sep 17 00:00:00 2001 From: Eric Yang Date: Mon, 6 May 2024 14:22:24 -0700 Subject: [PATCH] Remove `pybind11_abseil` from convert_wrapper PiperOrigin-RevId: 631184467 --- src/builtin-adapter/WORKSPACE | 4 +- .../python/convert_wrapper/BUILD | 3 +- .../python/convert_wrapper/convert_wrapper.cc | 77 +++++++++++++------ src/builtin-adapter/tools/load_opdefs.h | 4 + 4 files changed, 60 insertions(+), 28 deletions(-) diff --git a/src/builtin-adapter/WORKSPACE b/src/builtin-adapter/WORKSPACE index 43842c7b..0998b23a 100644 --- a/src/builtin-adapter/WORKSPACE +++ b/src/builtin-adapter/WORKSPACE @@ -13,9 +13,9 @@ http_archive( ], ) -TENSORFLOW_COMMIT = "8b5370df5655da95b113362e18a9cd850ded7973" +TENSORFLOW_COMMIT = "7b26bb0c266f8b122932904b5f1216818429709d" -TENSORFLOW_SHA256 = "b0366cb1eef7bdc18f9e733c082115894f0147f87bf764d0474bd97f686d5d12" +TENSORFLOW_SHA256 = "418bd874023857039ffbadd7ecd95dd191a750aaa9da1170ae71e03946c4a4c0" http_archive( name = "org_tensorflow", diff --git a/src/builtin-adapter/python/convert_wrapper/BUILD b/src/builtin-adapter/python/convert_wrapper/BUILD index 4f623dff..64e1eff4 100644 --- a/src/builtin-adapter/python/convert_wrapper/BUILD +++ b/src/builtin-adapter/python/convert_wrapper/BUILD @@ -16,10 +16,9 @@ pybind_extension( "_pywrap_convert_wrapper.pyi", ], deps = [ + "@com_google_absl//absl/status:statusor", "@com_google_absl//absl/strings:string_view", "@pybind11", - "@pybind11_abseil//pybind11_abseil:import_status_module", - "@pybind11_abseil//pybind11_abseil:status_casters", "//:direct_flatbuffer_to_json_graph_convert", "//:direct_saved_model_to_json_graph_convert", "//:model_json_graph_convert", diff --git a/src/builtin-adapter/python/convert_wrapper/convert_wrapper.cc b/src/builtin-adapter/python/convert_wrapper/convert_wrapper.cc index ac57d628..e93a6c4c 100644 --- a/src/builtin-adapter/python/convert_wrapper/convert_wrapper.cc +++ b/src/builtin-adapter/python/convert_wrapper/convert_wrapper.cc @@ -13,10 +13,12 @@ See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ +#include +#include + +#include "absl/status/statusor.h" #include "absl/strings/string_view.h" #include "pybind11/pybind11.h" -#include "pybind11_abseil/import_status_module.h" -#include "pybind11_abseil/status_casters.h" // IWYU pragma : keep #include "direct_flatbuffer_to_json_graph_convert.h" #include "direct_saved_model_to_json_graph_convert.h" #include "model_json_graph_convert.h" @@ -27,8 +29,6 @@ using tooling::visualization_client::VisualizeConfig; namespace pybind11 { PYBIND11_MODULE(_pywrap_convert_wrapper, m) { - pybind11::google::ImportStatusModule(); - class_(m, "VisualizeConfig") .def(init<>()) .def_readwrite("const_element_count_limit", @@ -36,58 +36,87 @@ PYBIND11_MODULE(_pywrap_convert_wrapper, m) { m.def( "ConvertSavedModelToJson", - [](const VisualizeConfig& config, absl::string_view model_path) { - return ::tooling::visualization_client::ConvertSavedModelToJson( - config, model_path); + [](const VisualizeConfig& config, + absl::string_view model_path) -> std::string { + const absl::StatusOr json_or_status = + ::tooling::visualization_client::ConvertSavedModelToJson( + config, model_path); + if (!json_or_status.ok()) { + throw std::runtime_error(json_or_status.status().ToString()); + } + return json_or_status.value(); }, R"pbdoc( Converts a SavedModel to visualizer JSON string through tf dialect MLIR - module if succeeded, otherwise raises `StatusNotOk` exception. + module if succeeded, otherwise raises `RuntimeError` exception. )pbdoc"); m.def( "ConvertFlatbufferToJson", [](const VisualizeConfig& config, absl::string_view model_path, - bool is_modelpath) { - return ::tooling::visualization_client::ConvertFlatbufferToJson( - config, model_path, is_modelpath); + bool is_modelpath) -> std::string { + const absl::StatusOr json_or_status = + ::tooling::visualization_client::ConvertFlatbufferToJson( + config, model_path, is_modelpath); + if (!json_or_status.ok()) { + throw std::runtime_error(json_or_status.status().ToString()); + } + return json_or_status.value(); }, R"pbdoc( Converts a Flatbuffer to visualizer JSON string through tfl dialect MLIR - module if succeeded, otherwise raises `StatusNotOk` exception. + module if succeeded, otherwise raises `RuntimeError` exception. )pbdoc"); m.def( "ConvertFlatbufferDirectlyToJson", - [](const VisualizeConfig& config, absl::string_view model_path) { - return ::tooling::visualization_client::ConvertFlatbufferDirectlyToJson( - config, model_path); + [](const VisualizeConfig& config, + absl::string_view model_path) -> std::string { + const absl::StatusOr json_or_status = + ::tooling::visualization_client::ConvertFlatbufferDirectlyToJson( + config, model_path); + if (!json_or_status.ok()) { + throw std::runtime_error(json_or_status.status().ToString()); + } + return json_or_status.value(); }, R"pbdoc( Converts a Flatbuffer directly to visualizer JSON string without MLIR or - execution. Raises `StatusNotOk` exception if failed. + execution. Raises `RuntimeError` exception if failed. )pbdoc"); m.def( "ConvertSavedModelDirectlyToJson", - [](const VisualizeConfig& config, absl::string_view model_path) { - return ::tooling::visualization_client::ConvertSavedModelDirectlyToJson( - config, model_path); + [](const VisualizeConfig& config, + absl::string_view model_path) -> std::string { + const absl::StatusOr json_or_status = + ::tooling::visualization_client::ConvertSavedModelDirectlyToJson( + config, model_path); + if (!json_or_status.ok()) { + throw std::runtime_error(json_or_status.status().ToString()); + } + return json_or_status.value(); }, R"pbdoc( Converts a SavedModel directly to visualizer JSON string without MLIR or - execution. Raises `StatusNotOk` exception if failed. + execution. Raises `RuntimeError` exception if failed. )pbdoc"); m.def( "ConvertGraphDefDirectlyToJson", - [](const VisualizeConfig& config, absl::string_view model_path) { - return ::tooling::visualization_client::ConvertGraphDefDirectlyToJson( - config, model_path); + [](const VisualizeConfig& config, + absl::string_view model_path) -> std::string { + const absl::StatusOr json_or_status = + ::tooling::visualization_client::ConvertGraphDefDirectlyToJson( + config, model_path); + if (!json_or_status.ok()) { + throw std::runtime_error(json_or_status.status().ToString()); + } + return json_or_status.value(); }, R"pbdoc( Converts a GraphDef directly to visualizer JSON string without MLIR or - execution. Raises `StatusNotOk` exception if failed. + execution. Raises `RuntimeError` exception if failed. )pbdoc"); } diff --git a/src/builtin-adapter/tools/load_opdefs.h b/src/builtin-adapter/tools/load_opdefs.h index 6f326543..4fd1f496 100644 --- a/src/builtin-adapter/tools/load_opdefs.h +++ b/src/builtin-adapter/tools/load_opdefs.h @@ -12,6 +12,10 @@ namespace visualization_client { struct OpMetadata { std::vector arguments; std::vector results; + + OpMetadata(const std::vector& arguments, + const std::vector& results) + : arguments(arguments), results(results) {} }; absl::flat_hash_map LoadTfliteOpdefs();