Author: Amaury Forgeot d'Arc <[email protected]>
Branch: py3.3
Changeset: r75258:6ad0ea075018
Date: 2015-01-08 17:27 +0100
http://bitbucket.org/pypy/pypy/changeset/6ad0ea075018/
Log: Use __qualname__ in type.__repr__
diff --git a/pypy/objspace/std/typeobject.py b/pypy/objspace/std/typeobject.py
--- a/pypy/objspace/std/typeobject.py
+++ b/pypy/objspace/std/typeobject.py
@@ -90,6 +90,7 @@
overridetypedef=None):
w_self.space = space
w_self.name = name
+ w_self.qualname = None
w_self.bases_w = bases_w
w_self.dict_w = dict_w
w_self.nslots = 0
@@ -492,6 +493,9 @@
result = self.name
return result.decode('utf-8')
+ def getqualname(self, space):
+ return self.qualname or self.getname(space)
+
def add_subclass(w_self, w_subclass):
space = w_self.space
if not space.config.translation.rweakref:
@@ -580,7 +584,7 @@
else:
mod = space.unicode_w(w_mod)
if mod is not None and mod != u'builtins':
- return space.wrap(u"<class '%s.%s'>" % (mod, self.getname(space)))
+ return space.wrap(u"<class '%s.%s'>" % (mod,
self.getqualname(space)))
else:
return space.wrap(u"<class '%s'>" % (self.name.decode('utf-8')))
@@ -689,6 +693,16 @@
raise oefmt(space.w_ValueError, "__name__ must not contain null bytes")
w_type.name = name
+def descr_get__qualname__(space, w_type):
+ w_type = _check(space, w_type)
+ return space.wrap(w_type.getqualname(space))
+
+def descr_set__qualname__(space, w_type, w_value):
+ w_type = _check(space, w_type)
+ if not w_type.is_heaptype():
+ raise oefmt(space.w_TypeError, "can't set %N.__qualname__", w_type)
+ w_type.qualname = space.unicode_w(w_value)
+
def descr_get__mro__(space, w_type):
w_type = _check(space, w_type)
return space.newtuple(w_type.mro_w)
@@ -858,6 +872,7 @@
W_TypeObject.typedef = TypeDef("type",
__new__ = gateway.interp2app(descr__new__),
__name__ = GetSetProperty(descr_get__name__, descr_set__name__),
+ __qualname__ = GetSetProperty(descr_get__qualname__,
descr_set__qualname__),
__bases__ = GetSetProperty(descr_get__bases__, descr_set__bases__),
__base__ = GetSetProperty(descr__base),
__mro__ = GetSetProperty(descr_get__mro__),
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit