Kaydet (Commit) f3776a17 authored tarafından Georg Brandl's avatar Georg Brandl

#3935: properly support list subclasses in the C impl. of bisect.

Patch reviewed by Raymond.
üst 06a13869
......@@ -196,6 +196,17 @@ class TestInsort(unittest.TestCase):
def test_backcompatibility(self):
self.assertEqual(self.module.insort, self.module.insort_right)
def test_listDerived(self):
class List(list):
data = []
def insert(self, index, item):
self.data.insert(index, item)
lst = List()
self.module.insort_left(lst, 10)
self.module.insort_right(lst, 5)
self.assertEqual([5, 10], lst.data)
class TestInsortPython(TestInsort):
module = py_bisect
......
......@@ -20,6 +20,8 @@ Core and Builtins
Library
-------
- Issue #3935: Properly support list subclasses in bisect's C implementation.
- Issue #4014: Don't claim that Python has an Alpha release status, in addition
to claiming it is Mature.
......
......@@ -82,7 +82,7 @@ insort_right(PyObject *self, PyObject *args, PyObject *kw)
index = internal_bisect_right(list, item, lo, hi);
if (index < 0)
return NULL;
if (PyList_Check(list)) {
if (PyList_CheckExact(list)) {
if (PyList_Insert(list, index, item) < 0)
return NULL;
} else {
......@@ -183,7 +183,7 @@ insort_left(PyObject *self, PyObject *args, PyObject *kw)
index = internal_bisect_left(list, item, lo, hi);
if (index < 0)
return NULL;
if (PyList_Check(list)) {
if (PyList_CheckExact(list)) {
if (PyList_Insert(list, index, item) < 0)
return NULL;
} else {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment