summaryrefslogtreecommitdiff
path: root/mako/pyparser.py
diff options
context:
space:
mode:
Diffstat (limited to 'mako/pyparser.py')
-rw-r--r--mako/pyparser.py23
1 files changed, 20 insertions, 3 deletions
diff --git a/mako/pyparser.py b/mako/pyparser.py
index 75301cc..aa2d882 100644
--- a/mako/pyparser.py
+++ b/mako/pyparser.py
@@ -1,5 +1,5 @@
# mako/pyparser.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
#
# This module is part of Mako and is released under
# the MIT License: http://www.opensource.org/licenses/mit-license.php
@@ -214,13 +214,25 @@ if _ast:
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:
- argnames.append(arg_stringname(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
@@ -367,8 +379,13 @@ else:
def visitFunction(self, node, *args):
self.listener.funcname = node.name
- self.listener.argnames = node.argnames
+ self.listener.argnames = list(node.argnames)
+ if node.kwargs:
+ self.listener.kwargnames = [self.listener.argnames.pop()]
+ else:
+ self.listener.kwargnames = []
self.listener.defaults = node.defaults
+ self.listener.kwdefaults = []
self.listener.varargs = node.varargs
self.listener.kwargs = node.kwargs