summaryrefslogtreecommitdiff
path: root/as_string.py
diff options
context:
space:
mode:
authorClaudiu Popa <pcmanticore@gmail.com>2013-08-14 14:15:31 +0300
committerClaudiu Popa <pcmanticore@gmail.com>2013-08-14 14:15:31 +0300
commitf0662f4e8ac0f4cb3e1242a4beb6d3d4944f156c (patch)
tree7902668fa07a3761f19c831d4f8b8f06cb6c4577 /as_string.py
parentf365d647f04ad798a231c40e0666bccaa32eb715 (diff)
downloadastroid-git-f0662f4e8ac0f4cb3e1242a4beb6d3d4944f156c.tar.gz
Proper handling of metaclass for class.as_string.
--HG-- branch : metaclass
Diffstat (limited to 'as_string.py')
-rw-r--r--as_string.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/as_string.py b/as_string.py
index fcff19eb..b7e62571 100644
--- a/as_string.py
+++ b/as_string.py
@@ -144,7 +144,17 @@ class AsStringVisitor(object):
"""return an astroid.Class node as string"""
decorate = node.decorators and node.decorators.accept(self) or ''
bases = ', '.join([n.accept(self) for n in node.bases])
- bases = bases and '(%s)' % bases or ''
+ if sys.version_info[0] == 2:
+ bases = bases and '(%s)' % bases or ''
+ else:
+ metaclass = node.metaclass()
+ if metaclass:
+ if bases:
+ bases = '(%s, metaclass=%s)' % (bases, metaclass.name)
+ else:
+ bases = '(metaclass=%s)' % metaclass.name
+ else:
+ bases = bases and '(%s)' % bases or ''
docs = node.doc and '\n%s"""%s"""' % (INDENT, node.doc) or ''
return '\n\n%sclass %s%s:%s\n%s\n' % (decorate, node.name, bases, docs,
self._stmt_list( node.body))