[Python-checkins] cpython (merge 3.5 -> default): merge 3.5 (#25731)

benjamin.peterson python-checkins at python.org
Tue Jan 19 00:18:43 EST 2016


https://hg.python.org/cpython/rev/a7953ee29f1c
changeset:   99977:a7953ee29f1c
parent:      99974:2b0c7b67eca5
parent:      99975:3c9512d8ac0d
user:        Benjamin Peterson <benjamin at python.org>
date:        Mon Jan 18 21:18:35 2016 -0800
summary:
  merge 3.5 (#25731)

files:
  Lib/test/test_descr.py |  8 ++++++++
  Misc/NEWS              |  2 ++
  Objects/typeobject.c   |  2 +-
  3 files changed, 11 insertions(+), 1 deletions(-)


diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -4564,6 +4564,14 @@
         self.assertRegex(repr(method),
             r"<bound method qualname of <object object at .*>>")
 
+    def test_deleting_new_in_subclasses(self):
+        class X:
+            def __init__(self, a):
+                pass
+        X.__new__ = None
+        del X.__new__
+        X(1) # should work
+
 
 class DictProxyTests(unittest.TestCase):
     def setUp(self):
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -13,6 +13,8 @@
 - Issue #25791: Trying to resolve a relative import without __spec__ or
   __package__ defined now raises an ImportWarning
 
+- Issue #25731: Fix set and deleting __new__ on a class.
+
 - Issue #25961: Disallowed null characters in the type name.
 
 - Issue #25973: Fix segfault when an invalid nonlocal statement binds a name
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -6791,7 +6791,7 @@
                sanity checks and constructing a new argument
                list.  Cut all that nonsense short -- this speeds
                up instance creation tremendously. */
-            specific = (void *)type->tp_new;
+            specific = (void *)((PyTypeObject *)PyCFunction_GET_SELF(descr))->tp_new;
             /* XXX I'm not 100% sure that there isn't a hole
                in this reasoning that requires additional
                sanity checks.  I'll buy the first person to

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list