diff --git a/codegen.py b/codegen.py index 113d9be..cd32d00 100644 --- a/codegen.py +++ b/codegen.py @@ -127,10 +127,18 @@ def write_comma(): self.visit(default) if node.vararg is not None: write_comma() - self.write('*' + node.vararg) + # python 3.5+ compatibility + if hasattr(node.vararg, 'arg'): + self.write('*' + node.vararg.arg) + else: + self.write('*' + node.vararg) if node.kwarg is not None: write_comma() - self.write('**' + node.kwarg) + # python 3.5+ compatibility + if hasattr(node.kwarg, 'arg'): + self.write('**' + node.kwarg.arg) + else: + self.write('**' + node.kwarg) def decorators(self, node): for decorator in node.decorator_list: @@ -213,11 +221,12 @@ def paren_or_comma(): paren_or_comma() self.write(keyword.arg + '=') self.visit(keyword.value) - if node.starargs is not None: + # python 3.5 removes starargs & kwargs + if getattr(node, 'starargs', None) is not None: paren_or_comma() self.write('*') self.visit(node.starargs) - if node.kwargs is not None: + if getattr(node, 'kwargs', None) is not None: paren_or_comma() self.write('**') self.visit(node.kwargs) @@ -383,11 +392,11 @@ def write_comma(): write_comma() self.write(keyword.arg + '=') self.visit(keyword.value) - if node.starargs is not None: + if getattr(node, 'starargs', None) is not None: write_comma() self.write('*') self.visit(node.starargs) - if node.kwargs is not None: + if getattr(node, 'kwargs', None) is not None: write_comma() self.write('**') self.visit(node.kwargs)