in lib/ramble/spack/util/unparse/unparser.py [0:0]
def visit_arguments(self, node):
first = True
# normal arguments
all_args = getattr(node, 'posonlyargs', []) + node.args
defaults = [None] * (len(all_args) - len(node.defaults)) + node.defaults
for index, elements in enumerate(zip(all_args, defaults), 1):
a, d = elements
if first:
first = False
else:
self.write(", ")
self.dispatch(a)
if d:
self.write("=")
self.dispatch(d)
if index == len(getattr(node, 'posonlyargs', ())):
self.write(", /")
# varargs, or bare '*' if no varargs but keyword-only arguments present
if node.vararg or getattr(node, "kwonlyargs", False):
if first:
first = False
else:
self.write(", ")
self.write("*")
if node.vararg:
if hasattr(node.vararg, 'arg'):
self.write(node.vararg.arg)
if node.vararg.annotation:
self.write(": ")
self.dispatch(node.vararg.annotation)
else:
self.write(node.vararg)
if getattr(node, 'varargannotation', None):
self.write(": ")
self.dispatch(node.varargannotation)
# keyword-only arguments
if getattr(node, "kwonlyargs", False):
for a, d in zip(node.kwonlyargs, node.kw_defaults):
if first:
first = False
else:
self.write(", ")
self.dispatch(a),
if d:
self.write("=")
self.dispatch(d)
# kwargs
if node.kwarg:
if first:
first = False
else:
self.write(", ")
if hasattr(node.kwarg, 'arg'):
self.write("**" + node.kwarg.arg)
if node.kwarg.annotation:
self.write(": ")
self.dispatch(node.kwarg.annotation)
else:
self.write("**" + node.kwarg)
if getattr(node, 'kwargannotation', None):
self.write(": ")
self.dispatch(node.kwargannotation)