#pragma once #include #include #include #include namespace py = pybind11; namespace torch { namespace jit { inline c10::optional as_module(py::handle obj) { if (py::isinstance( obj, py::module::import("torch.jit").attr("ScriptModule"))) { return py::cast(obj.attr("_c")); } return c10::nullopt; } inline c10::optional as_object(py::handle obj) { if (py::isinstance(obj, py::module::import("torch").attr("ScriptObject"))) { return py::cast(obj); } if (py::isinstance( obj, py::module::import("torch.jit").attr("RecursiveScriptClass"))) { return py::cast(obj.attr("_c")); } return c10::nullopt; } } // namespace jit } // namespace torch