Ejemplo n.º 1
0
    def get_argument_expressions(self, include_defaults=True):
        """return the argument declarations of this FunctionDecl as a printable
        list."""

        namedecls = []
        defaults = [d for d in self.defaults]
        kwargs = self.kwargs
        varargs = self.varargs
        argnames = [f for f in self.argnames]
        argnames.reverse()
        for arg in argnames:
            default = None
            if kwargs:
                arg = "**" + arg_stringname(arg)
                kwargs = False
            elif varargs:
                arg = "*" + arg_stringname(arg)
                varargs = False
            else:
                default = len(defaults) and defaults.pop() or None
            if include_defaults and default:
                namedecls.insert(0, "%s=%s" %
                                 (arg,
                                  pyparser.ExpressionGenerator(default).value()
                                  )
                                 )
            else:
                namedecls.insert(0, arg)
        return namedecls
Ejemplo n.º 2
0
Archivo: ast.py Proyecto: sixstars/xcat
    def get_argument_expressions(self, include_defaults=True):
        """return the argument declarations of this FunctionDecl as a printable
        list."""

        namedecls = []
        defaults = [d for d in self.defaults]
        kwargs = self.kwargs
        varargs = self.varargs
        argnames = [f for f in self.argnames]
        argnames.reverse()
        for arg in argnames:
            default = None
            if kwargs:
                arg = "**" + arg_stringname(arg)
                kwargs = False
            elif varargs:
                arg = "*" + arg_stringname(arg)
                varargs = False
            else:
                default = len(defaults) and defaults.pop() or None
            if include_defaults and default:
                namedecls.insert(
                    0, "%s=%s" %
                    (arg, pyparser.ExpressionGenerator(default).value()))
            else:
                namedecls.insert(0, arg)
        return namedecls
Ejemplo n.º 3
0
 def visit_FunctionDef(self, node):
     self.listener.funcname = node.name
     argnames = [arg_id(arg) for arg in node.args.args]
     if node.args.vararg:
         argnames.append(arg_stringname(node.args.vararg))
     if node.args.kwarg:
         argnames.append(arg_stringname(node.args.kwarg))
     self.listener.argnames = argnames
     self.listener.defaults = node.args.defaults  # ast
     self.listener.varargs = node.args.vararg
     self.listener.kwargs = node.args.kwarg
Ejemplo n.º 4
0
 def visit_FunctionDef(self, node):
     self.listener.funcname = node.name
     argnames = [arg_id(arg) for arg in node.args.args]
     if node.args.vararg:
         argnames.append(arg_stringname(node.args.vararg))
     if node.args.kwarg:
         argnames.append(arg_stringname(node.args.kwarg))
     self.listener.argnames = argnames
     self.listener.defaults = node.args.defaults  # ast
     self.listener.varargs = node.args.vararg
     self.listener.kwargs = node.args.kwarg
Ejemplo n.º 5
0
    def signature(self, node):
        want_comma = []
        def write_comma():
            if want_comma:
                self.write(', ')
            else:
                want_comma.append(True)

        padding = [None] * (len(node.args) - len(node.defaults))
        for arg, default in zip(node.args, padding + node.defaults):
            write_comma()
            self.visit(arg)
            if default is not None:
                self.write('=')
                self.visit(default)
        if node.vararg is not None:
            write_comma()
            self.write('*' + arg_stringname(node.vararg))
        if node.kwarg is not None:
            write_comma()
            self.write('**' + arg_stringname(node.kwarg))
Ejemplo n.º 6
0
    def signature(self, node):
        want_comma = []

        def write_comma():
            if want_comma:
                self.write(', ')
            else:
                want_comma.append(True)

        padding = [None] * (len(node.args) - len(node.defaults))
        for arg, default in zip(node.args, padding + node.defaults):
            write_comma()
            self.visit(arg)
            if default is not None:
                self.write('=')
                self.visit(default)
        if node.vararg is not None:
            write_comma()
            self.write('*' + arg_stringname(node.vararg))
        if node.kwarg is not None:
            write_comma()
            self.write('**' + arg_stringname(node.kwarg))
Ejemplo n.º 7
0
    def visit_FunctionDef(self, node):
        self.listener.funcname = node.name

        argnames = [arg_id(arg) for arg in node.args.args]
        if node.args.vararg:
            argnames.append(arg_stringname(node.args.vararg))

        if compat.py2k:
            # kw-only args don't exist in Python 2
            kwargnames = []
        else:
            kwargnames = [arg_id(arg) for arg in node.args.kwonlyargs]
        if node.args.kwarg:
            kwargnames.append(arg_stringname(node.args.kwarg))
        self.listener.argnames = argnames
        self.listener.defaults = node.args.defaults  # ast
        self.listener.kwargnames = kwargnames
        if compat.py2k:
            self.listener.kwdefaults = []
        else:
            self.listener.kwdefaults = node.args.kw_defaults
        self.listener.varargs = node.args.vararg
        self.listener.kwargs = node.args.kwarg
Ejemplo n.º 8
0
    def visit_FunctionDef(self, node):
        self.listener.funcname = node.name

        argnames = [arg_id(arg) for arg in node.args.args]
        if node.args.vararg:
            argnames.append(arg_stringname(node.args.vararg))

        if compat.py2k:
            # kw-only args don't exist in Python 2
            kwargnames = []
        else:
            kwargnames = [arg_id(arg) for arg in node.args.kwonlyargs]
        if node.args.kwarg:
            kwargnames.append(arg_stringname(node.args.kwarg))
        self.listener.argnames = argnames
        self.listener.defaults = node.args.defaults  # ast
        self.listener.kwargnames = kwargnames
        if compat.py2k:
            self.listener.kwdefaults = []
        else:
            self.listener.kwdefaults = node.args.kw_defaults
        self.listener.varargs = node.args.vararg
        self.listener.kwargs = node.args.kwarg