On 03/25/2013 10:18 AM, Guannan Ren wrote: > When prefixing with string (optional) or optional in the description > of arguments to libvirt C APIs, in python, these arguments will be > set as optional arugments, for example: > > * virDomainSaveFlags: > * @domain: a domain object > * @to: path for the output file > * @dxml: (optional) XML config for adjusting guest xml used on restore > * @flags: bitwise-OR of virDomainSaveRestoreFlags > > the corresponding python APIs is > restoreFlags(self, frm, dxml=None, flags=0) > > The following python APIs are changed to: > blockCommit(self, disk, base, top, bandwidth=0, flags=0) > blockPull(self, disk, bandwidth=0, flags=0) > blockRebase(self, disk, base, bandwidth=0, flags=0) > migrate(self, dconn, flags=0, dname=None, uri=None, bandwidth=0) > migrate2(self, dconn, dxml=None, flags=0, dname=None, uri=None, bandwidth=0) > migrateToURI(self, duri, flags=0, dname=None, bandwidth=0) > migrateToURI2(self, dconnuri=None, miguri=None, dxml=None, flags=0, \ > dname=None, bandwidth=0) > saveFlags(self, to, dxml=None, flags=0) > migrate(self, domain, flags=0, dname=None, uri=None, bandwidth=0) > migrate2(self, domain, dxml=None, flags=0, dname=None, uri=None, bandwidth=0) > restoreFlags(self, frm, dxml=None, flags=0) > --- > python/generator.py | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/python/generator.py b/python/generator.py > index 0237374..7586ffc 100755 > --- a/python/generator.py > +++ b/python/generator.py > @@ -1005,6 +1005,8 @@ functions_int_default_test = "%s == -1" > def is_integral_type (name): > return not re.search ("^(unsigned)? ?(int|long)$", name) is None > > +def is_optional_arg(info): > + return not re.search("^\(?\optional\)?", info) is None Use "is not None" in here, I believe it is described in best practices. > # Functions returning lists which need special rules to check for errors > # and raise exceptions. > functions_list_exception_test = { > @@ -1488,9 +1490,12 @@ def buildWrappers(module): > for arg in args: > if n != index: > classes.write(", %s" % arg[0]) > + if arg[0] == "flags" or is_optional_arg(arg[2]): > + if is_integral_type(arg[1]): > + classes.write("=0") > + else: > + classes.write("=None") > n = n + 1 > - if arg[0] == "flags": > - classes.write("=0") > classes.write("):\n") > writeDoc(module, name, args, ' ', classes) > n = 0 > We have a check for flags being always unsigned long, so I see no place this could make any problems. ACK, Martin -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list