diff options
author | Claudiu Popa <pcmanticore@gmail.com> | 2015-07-01 03:01:58 +0300 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2015-07-01 03:01:58 +0300 |
commit | b1a5e534e68324dda2e2fd396e8d91e4daf0ed59 (patch) | |
tree | f8d80155c72ff52743b0108013881a2290c4da9d | |
parent | 5ca427420e197a29a2fa74e385a5d283e8cbf7b7 (diff) | |
parent | d64f5d2447a7c4d25a72c7cb753e8fd84e595813 (diff) | |
download | astroid-b1a5e534e68324dda2e2fd396e8d91e4daf0ed59.tar.gz |
Merged in jarradhope/astroid (pull request #73)
add annotations to as_string method of Arguments
-rw-r--r-- | astroid/as_string.py | 7 | ||||
-rw-r--r-- | astroid/node_classes.py | 16 |
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() |