Python bindings: Give a detailed error message when passing non-existent name.

List all valid names in the error message.

Fix an off-by-one error when accessing elements by numeric index (rather than name).

PiperOrigin-RevId: 457702283
Change-Id: I6e4f1518b4ecd9ca91ac9b0bf6b0963fc0a9bd18
This commit is contained in:
Nimrod Gileadi
2022-06-28 05:05:52 -07:00
committed by Copybara-Service
parent a077db1b91
commit e14cf7ddf1
4 changed files with 105 additions and 28 deletions
+5 -4
View File
@@ -1479,7 +1479,8 @@ This is useful for example when the MJB is not available as a file on disk.)"));
#field, [](MjModelWrapper& m, std::string_view name) -> auto& { \
return m.indexer().field##_by_name(name); \
}, \
py::return_value_policy::reference_internal);
py::return_value_policy::reference_internal, py::arg_v("name", ""));
MJMODEL_VIEW_GROUPS
#undef XGROUP
@@ -1493,7 +1494,7 @@ This is useful for example when the MJB is not available as a file on disk.)"));
#altname, [](MjModelWrapper& m, std::string_view name) -> auto& { \
return m.indexer().field##_by_name(name); \
}, \
py::return_value_policy::reference_internal);
py::return_value_policy::reference_internal, py::arg_v("name", ""));
MJMODEL_VIEW_GROUPS_ALTNAMES
#undef XGROUP
@@ -1752,7 +1753,7 @@ This is useful for example when the MJB is not available as a file on disk.)"));
#field, [](MjDataWrapper& d, std::string_view name) -> auto& { \
return d.indexer().field##_by_name(name); \
}, \
py::return_value_policy::reference_internal);
py::return_value_policy::reference_internal, py::arg_v("name", ""));
MJDATA_VIEW_GROUPS
#undef XGROUP
@@ -1766,7 +1767,7 @@ This is useful for example when the MJB is not available as a file on disk.)"));
#altname, [](MjDataWrapper& d, std::string_view name) -> auto& { \
return d.indexer().field##_by_name(name); \
}, \
py::return_value_policy::reference_internal);
py::return_value_policy::reference_internal, py::arg_v("name", ""));
MJDATA_VIEW_GROUPS_ALTNAMES
#undef XGROUP