@@ -661,6 +661,21 @@ struct PyMethodMeta final {
661
661
}
662
662
}
663
663
664
+ size_t num_attributes () const {
665
+ return meta_.num_attributes ();
666
+ }
667
+
668
+ std::unique_ptr<PyTensorInfo> attribute_tensor_meta (size_t index) const {
669
+ const auto result = meta_.attribute_tensor_meta (index);
670
+ THROW_INDEX_IF_ERROR (
671
+ result.error (), " Cannot get attribute tensor meta at %zu" , index);
672
+ if (module_) {
673
+ return std::make_unique<PyTensorInfo>(module_, result.get ());
674
+ } else {
675
+ return std::make_unique<PyTensorInfo>(state_, result.get ());
676
+ }
677
+ }
678
+
664
679
py::str repr () const {
665
680
py::list input_meta_strs;
666
681
for (size_t i = 0 ; i < meta_.num_inputs (); ++i) {
@@ -1641,6 +1656,7 @@ PYBIND11_MODULE(EXECUTORCH_PYTHON_MODULE_NAME, m) {
1641
1656
.def (" name" , &PyMethodMeta::name, call_guard)
1642
1657
.def (" num_inputs" , &PyMethodMeta::num_inputs, call_guard)
1643
1658
.def (" num_outputs" , &PyMethodMeta::num_outputs, call_guard)
1659
+ .def (" num_attributes" , &PyMethodMeta::num_attributes, call_guard)
1644
1660
.def (
1645
1661
" input_tensor_meta" ,
1646
1662
&PyMethodMeta::input_tensor_meta,
@@ -1651,6 +1667,11 @@ PYBIND11_MODULE(EXECUTORCH_PYTHON_MODULE_NAME, m) {
1651
1667
&PyMethodMeta::output_tensor_meta,
1652
1668
py::arg (" index" ),
1653
1669
call_guard)
1670
+ .def (
1671
+ " attribute_tensor_meta" ,
1672
+ &PyMethodMeta::attribute_tensor_meta,
1673
+ py::arg (" index" ),
1674
+ call_guard)
1654
1675
.def (" __repr__" , &PyMethodMeta::repr, call_guard);
1655
1676
1656
1677
m.def (
0 commit comments