From f225d5c7f36abb767c341e18d8fbd57589616028 Mon Sep 17 00:00:00 2001 From: Jorge Acereda Date: Sat, 10 Feb 2024 21:06:32 +0100 Subject: [PATCH] pynopegl: allow empty argument for list-based parameters --- pynopegl/init_header.py | 4 ++++ tests/py_bindings.py | 2 ++ 2 files changed, 6 insertions(+) diff --git a/pynopegl/init_header.py b/pynopegl/init_header.py index cf4353c82..f61a8eecf 100644 --- a/pynopegl/init_header.py +++ b/pynopegl/init_header.py @@ -195,11 +195,15 @@ def _args_setter(self, cython_setter, param_name, *args): return cython_setter(param_name, args) def _add_nodes(self, param_name, *nodes): + if not nodes: + return 0 if hasattr(nodes[0], "__iter__"): raise Exception(f"add_{param_name}() takes elements as positional arguments, not list") return self._param_add_nodes(param_name, len(nodes), nodes) def _add_f64s(self, param_name, *f64s): + if not f64s: + return 0 if hasattr(f64s[0], "__iter__"): raise Exception(f"add_{param_name}() takes elements as positional arguments, not list") return self._param_add_f64s(param_name, len(f64s), f64s) diff --git a/tests/py_bindings.py b/tests/py_bindings.py index 5c54a6868..62f6f0cdb 100644 --- a/tests/py_bindings.py +++ b/tests/py_bindings.py @@ -80,6 +80,8 @@ def py_bindings_no_param(): def py_bindings_nodes(): + emptygroup = ngl.Group(children=[]) + assert emptygroup.add_children() == 0 group = ngl.Group(children=(ngl.Identity(), ngl.Group())) assert group.add_children(ngl.Group(), ngl.GraphicConfig()) == 0