Author: Armin Rigo <[email protected]>
Branch:
Changeset: r89638:f7660e563f57
Date: 2017-01-17 18:15 +0100
http://bitbucket.org/pypy/pypy/changeset/f7660e563f57/
Log: issue2464: another missing obscure case
diff --git a/pypy/interpreter/typedef.py b/pypy/interpreter/typedef.py
--- a/pypy/interpreter/typedef.py
+++ b/pypy/interpreter/typedef.py
@@ -251,12 +251,11 @@
class GetSetProperty(W_Root):
_immutable_fields_ = ["fget", "fset", "fdel"]
- name = '<generic property>'
w_objclass = None
@specialize.arg(7)
def __init__(self, fget, fset=None, fdel=None, doc=None,
- cls=None, use_closure=False, tag=None):
+ cls=None, use_closure=False, tag=None, name=None):
objclass_getter, cls = make_objclass_getter(tag, fget, cls)
fget = make_descr_typecheck_wrapper((tag, 0), fget,
cls=cls, use_closure=use_closure)
@@ -264,9 +263,11 @@
cls=cls, use_closure=use_closure)
fdel = make_descr_typecheck_wrapper((tag, 2), fdel,
cls=cls, use_closure=use_closure)
- self._init(fget, fset, fdel, doc, cls, objclass_getter, use_closure)
+ self._init(fget, fset, fdel, doc, cls, objclass_getter, use_closure,
+ name)
- def _init(self, fget, fset, fdel, doc, cls, objclass_getter, use_closure):
+ def _init(self, fget, fset, fdel, doc, cls, objclass_getter, use_closure,
+ name):
self.fget = fget
self.fset = fset
self.fdel = fdel
@@ -274,13 +275,13 @@
self.reqcls = cls
self.objclass_getter = objclass_getter
self.use_closure = use_closure
+ self.name = name if name is not None else '<generic property>'
def copy_for_type(self, w_objclass):
if self.objclass_getter is None:
new = instantiate(GetSetProperty)
new._init(self.fget, self.fset, self.fdel, self.doc, self.reqcls,
- None, self.use_closure)
- new.name = self.name
+ None, self.use_closure, self.name)
new.w_objclass = w_objclass
return new
else:
diff --git a/pypy/objspace/std/test/test_typeobject.py
b/pypy/objspace/std/test/test_typeobject.py
--- a/pypy/objspace/std/test/test_typeobject.py
+++ b/pypy/objspace/std/test/test_typeobject.py
@@ -1334,3 +1334,6 @@
assert file.closed.__objclass__ is file
assert type.__dict__['__name__'].__objclass__ is type
assert type.__dict__['__doc__'].__objclass__ is type
+ #
+ assert type.__dict__['__name__'].__name__ == '__name__'
+ assert type.__dict__['__doc__'].__name__ == '__doc__'
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
@@ -958,7 +958,7 @@
__base__ = GetSetProperty(descr__base),
__mro__ = GetSetProperty(descr_get__mro__),
__dict__=GetSetProperty(type_get_dict),
- __doc__ = GetSetProperty(descr__doc, cls=W_TypeObject),
+ __doc__ = GetSetProperty(descr__doc, cls=W_TypeObject, name='__doc__'),
mro = gateway.interp2app(descr_mro),
__flags__ = GetSetProperty(descr__flags),
__module__ = GetSetProperty(descr_get__module, descr_set__module),
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit