Author: Ronan Lamy <[email protected]>
Branch: py3.5
Changeset: r88944:7eeb99850b83
Date: 2016-12-07 15:14 +0000
http://bitbucket.org/pypy/pypy/changeset/7eeb99850b83/

Log:    Do not update cls.__qualname__ when cls.__name__ is modified

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
@@ -941,6 +941,22 @@
         else:
             assert False
 
+    def test_qualname(self):
+        A = type('A', (), {'__qualname__': 'B.C'})
+        assert A.__name__ == 'A'
+        assert A.__qualname__ == 'B.C'
+        raises(TypeError, type, 'A', (), {'__qualname__': b'B'})
+        assert A.__qualname__ == 'B.C'
+
+        A.__qualname__ = 'D.E'
+        assert A.__name__ == 'A'
+        assert A.__qualname__ == 'D.E'
+
+        C = type('C', (), {})
+        C.__name__ = 'A'
+        assert C.__name__ == 'A'
+        assert C.__qualname__ == 'C'
+
     def test_compare(self):
         class A(object):
             pass
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
@@ -166,7 +166,7 @@
                  overridetypedef=None, force_new_layout=False):
         self.space = space
         self.name = name
-        self.qualname = None
+        self.qualname = name.decode('utf-8')
         self.bases_w = bases_w
         self.dict_w = dict_w
         self.hasdict = False
@@ -545,7 +545,7 @@
         return result.decode('utf-8')
 
     def getqualname(self, space):
-        return self.qualname or self.getname(space)
+        return self.qualname
 
     def add_subclass(self, w_subclass):
         space = self.space
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to