#pragma once #include #include #include namespace torch::functionalization { // Creates the default bindings for `ViewMeta` specializations. // // Defines a constructor using the types in `SerializableTuple`, as well // as pickle methods. template void create_binding_with_pickle(py::module m) { py::class_, at::functionalization::ViewMeta>( m, T::name()) .def(py::init()) .def( "as_tuple", [](const std::shared_ptr& meta) { return meta->to_serializable_tuple(); }) .def(py::pickle( [](const std::shared_ptr& meta) { return meta->to_serializable_tuple(); }, [](const typename T::SerializableTuple& tpl) { return std::make_shared(tpl); })); } void initModule(PyObject* module); void initGenerated(PyObject* module); } // namespace torch::functionalization