summaryrefslogtreecommitdiff
path: root/astroid
diff options
context:
space:
mode:
authorAlex Hall <alex.mojaki@gmail.com>2019-10-18 11:17:10 +0200
committerClaudiu Popa <pcmanticore@gmail.com>2019-10-18 11:17:10 +0200
commit8cb02857852d6c1b024d322e54288e57b56359e3 (patch)
treec7a02fb663b0ad58407f8b6964865007ec7b7594 /astroid
parent476d1b84025e6a980cc11fb2287426241c59977e (diff)
downloadastroid-git-8cb02857852d6c1b024d322e54288e57b56359e3.tar.gz
Fix ClassDef.as_string() with keyword arguments, especially the metaclass (#707)
* Failing test for ClassDef.as_string involving keyword arguments * Fix construction of keyword arguments in ClassDef as_string
Diffstat (limited to 'astroid')
-rw-r--r--astroid/as_string.py16
1 files changed, 6 insertions, 10 deletions
diff --git a/astroid/as_string.py b/astroid/as_string.py
index 3cd6e0d2..222b6199 100644
--- a/astroid/as_string.py
+++ b/astroid/as_string.py
@@ -153,20 +153,16 @@ class AsStringVisitor:
def visit_classdef(self, node):
"""return an astroid.ClassDef node as string"""
decorate = node.decorators.accept(self) if node.decorators else ""
- bases = ", ".join(n.accept(self) for n in node.bases)
- metaclass = node.metaclass()
- if metaclass and not node.has_metaclass_hack():
- if bases:
- bases = "(%s, metaclass=%s)" % (bases, metaclass.name)
- else:
- bases = "(metaclass=%s)" % metaclass.name
- else:
- bases = "(%s)" % bases if bases else ""
+ args = [n.accept(self) for n in node.bases]
+ if node._metaclass and not node.has_metaclass_hack():
+ args.append("metaclass=" + node._metaclass.accept(self))
+ args += [n.accept(self) for n in node.keywords]
+ args = "(%s)" % ", ".join(args) if args else ""
docs = self._docs_dedent(node.doc) if node.doc else ""
return "\n\n%sclass %s%s:%s\n%s\n" % (
decorate,
node.name,
- bases,
+ args,
docs,
self._stmt_list(node.body),
)