summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudiu Popa <pcmanticore@gmail.com>2015-07-01 03:01:58 +0300
committerClaudiu Popa <pcmanticore@gmail.com>2015-07-01 03:01:58 +0300
commitb1a5e534e68324dda2e2fd396e8d91e4daf0ed59 (patch)
treef8d80155c72ff52743b0108013881a2290c4da9d
parent5ca427420e197a29a2fa74e385a5d283e8cbf7b7 (diff)
parentd64f5d2447a7c4d25a72c7cb753e8fd84e595813 (diff)
downloadastroid-b1a5e534e68324dda2e2fd396e8d91e4daf0ed59.tar.gz
Merged in jarradhope/astroid (pull request #73)
add annotations to as_string method of Arguments
-rw-r--r--astroid/as_string.py7
-rw-r--r--astroid/node_classes.py16
2 files changed, 17 insertions, 6 deletions
diff --git a/astroid/as_string.py b/astroid/as_string.py
index eaa839f..b9ec447 100644
--- a/astroid/as_string.py
+++ b/astroid/as_string.py
@@ -268,8 +268,11 @@ class AsStringVisitor(object):
"""return an astroid.Function node as string"""
decorate = node.decorators and node.decorators.accept(self) or ''
docs = node.doc and '\n%s"""%s"""' % (INDENT, node.doc) or ''
- return '\n%sdef %s(%s):%s\n%s' % (decorate, node.name, node.args.accept(self),
- docs, self._stmt_list(node.body))
+ return_annotation = ''
+ if node.returns:
+ return_annotation = ' -> ' + node.returns.name
+ return '\n%sdef %s(%s):%s%s\n%s' % (decorate, node.name, node.args.accept(self),
+ return_annotation, docs, self._stmt_list(node.body))
def visit_genexpr(self, node):
"""return an astroid.GenExpr node as string"""
diff --git a/astroid/node_classes.py b/astroid/node_classes.py
index 312c095..e5a7167 100644
--- a/astroid/node_classes.py
+++ b/astroid/node_classes.py
@@ -316,7 +316,9 @@ class Arguments(NodeNG, AssignTypeMixin):
"""return arguments formatted as string"""
result = []
if self.args:
- result.append(_format_args(self.args, self.defaults))
+ result.append(
+ _format_args(self.args, self.annotations, self.defaults)
+ )
if self.vararg:
result.append('*%s' % self.vararg)
if self.kwarg:
@@ -375,17 +377,23 @@ def _find_arg(argname, args, rec=False):
return None, None
-def _format_args(args, defaults=None):
+def _format_args(args, annotations=None, defaults=None):
values = []
if args is None:
return ''
+ if annotations is None:
+ annotations = []
if defaults is not None:
default_offset = len(args) - len(defaults)
- for i, arg in enumerate(args):
+ for i, (arg, annotation) in enumerate(zip(args, annotations)):
if isinstance(arg, Tuple):
values.append('(%s)' % _format_args(arg.elts))
else:
- values.append(arg.name)
+ argname = arg.name
+ if annotation is not None:
+ argname += ': ' + annotation.name
+ values.append(argname)
+
if defaults is not None and i >= default_offset:
if defaults[i-default_offset] is not None:
values[-1] += '=' + defaults[i-default_offset].as_string()