def visit_arguments()

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)