On Wed, Apr 11, 2018 at 12:03:38AM -0500, Eric Blake wrote: > In preparation for adding other optional flag arguments to the > python bindings, start by making the existing 'may_trim' flag > to 'zero' be optional. That is, the plugin need not define > the parameter if it does not make any semantic difference (ie. > if the plugin ignores the hint and never trims); while if the > parameter exists, we now pass it as a keyword argument rather > than as a positional argument. This requires the plugin to > give the parameter a specific name, and works whether or not > the plugin provides a default for the parameter (although we do > now recommend that plugins provide a default value, as it makes > plugins built against newer nbdkit more likely to run even on > older nbdkit, although that's not the direction we typically > guarantee). We can't see through a plugin that used '**kwargs', > but that is less likely. > > If we are super-worried about back-compatibility to older > plugins which hard-coded 4 required parameters, we could also > tweak the introspection to assume that a 'zero' with 4 > parameters and no defaults, where we do not recognize the > fourth parameter name, is an old-style plugin, and call it > with may_trim passed via a positional rather than a keyword > argument. However, I suspect most plugins just copied from > our examples, which means they used the right parameter naming > to just keep working; furthermore, while we have been clear > that backwards API compatibility is essential for C, we have > not made the same guarantee for language plugins. > > The introspection framework here will also make it easy to > probe for future flag additions (support for 'fua' being the > obvious candidate in the short term). > > This patch also fixes failure to check for (unlikely) errors > during creation of 'args' within py_zero(). > > Signed-off-by: Eric Blake <[email protected]> > --- > plugins/python/nbdkit-python-plugin.pod | 35 ++++++++--- > plugins/python/python.c | 108 > +++++++++++++++++++++++++++++--- > plugins/python/example.py | 2 +- > tests/test.py | 2 +- > 4 files changed, 129 insertions(+), 18 deletions(-) >
This patch looked fine to me so ACK. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html _______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
