| 398 | }; |
| 399 | |
| 400 | py::tuple parse_args(py::tuple args, const PyArgDescs& descs) { |
| 401 | size_t nr_args = args.size(); |
| 402 | size_t nr_items = descs.items.size(); |
| 403 | mgb_assert(nr_args <= nr_items, "too many args"); |
| 404 | if (nr_args == nr_items) { |
| 405 | return args; |
| 406 | } |
| 407 | py::tuple ret(nr_items); |
| 408 | for (size_t i = 0; i < nr_args; ++i) { |
| 409 | ret[i] = args[i]; |
| 410 | } |
| 411 | for (size_t i = nr_args; i < nr_items; ++i) { |
| 412 | ret[i] = descs.items[i].default_value(); |
| 413 | } |
| 414 | return ret; |
| 415 | } |
| 416 | |
| 417 | py::tuple parse_args_and_kwargs( |
| 418 | py::tuple args, py::dict kwargs, const PyArgDescs& descs) { |