Author: Amaury Forgeot d'Arc <amaur...@gmail.com> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit