more optional output arg support
This commit is contained in:
parent
c20c85b474
commit
1c1f7a205a
@ -159,12 +159,23 @@ def _call_base(name, required, optional, self = None, option_string = None):
|
|||||||
not x.flags & enm.REQUIRED and
|
not x.flags & enm.REQUIRED and
|
||||||
not x.isset}
|
not x.isset}
|
||||||
|
|
||||||
|
# and the names of all optional output args ... we use "x = True"
|
||||||
|
# in args to mean add that to output
|
||||||
|
optional_output = {x.name: x for x in args if x.flags & enm.OUTPUT and
|
||||||
|
not x.flags & enm.REQUIRED}
|
||||||
|
|
||||||
# set optional input args
|
# set optional input args
|
||||||
for key in optional.keys():
|
for key in optional.keys():
|
||||||
if not key in optional_input:
|
if key in optional_input:
|
||||||
|
optional_input[key].set_value(optional[key])
|
||||||
|
elif key in optional_output:
|
||||||
|
# must be a literal True value
|
||||||
|
if optional[key] is not True:
|
||||||
|
raise Error('Optional output argument must be True.',
|
||||||
|
'Argument %s should equal True.' % key)
|
||||||
|
else:
|
||||||
raise Error('Unknown argument.',
|
raise Error('Unknown argument.',
|
||||||
'Operator %s has no argument %s' % (name, key))
|
'Operator %s has no argument %s' % (name, key))
|
||||||
optional_input[key].set_value(optional[key])
|
|
||||||
|
|
||||||
# call
|
# call
|
||||||
op2 = Vips.cache_operation_build(op)
|
op2 = Vips.cache_operation_build(op)
|
||||||
@ -188,13 +199,9 @@ def _call_base(name, required, optional, self = None, option_string = None):
|
|||||||
if x.flags & enm.INPUT and x.flags & enm.MODIFY:
|
if x.flags & enm.INPUT and x.flags & enm.MODIFY:
|
||||||
out.append(x.get_value())
|
out.append(x.get_value())
|
||||||
|
|
||||||
# find all optional output args
|
|
||||||
optional_output = [x.name for x in args if x.flags & enm.OUTPUT and
|
|
||||||
not x.flags & enm.REQUIRED]
|
|
||||||
|
|
||||||
for x in optional.keys():
|
for x in optional.keys():
|
||||||
if x in optional_output:
|
if x in optional_output:
|
||||||
out.append(x.get_value())
|
out.append(optional_output[x].get_value())
|
||||||
|
|
||||||
if len(out) == 1:
|
if len(out) == 1:
|
||||||
out = out[0]
|
out = out[0]
|
||||||
|
Loading…
Reference in New Issue
Block a user