mirror of https://github.com/python/cpython
merge
This commit is contained in:
parent
94c3089818
commit
a63897164e
|
@ -477,8 +477,8 @@ or subtracting from an empty counter.
|
|||
|
||||
Insert *x* into the deque at position *i*.
|
||||
|
||||
If the insertion causes a bounded deque to grow beyond *maxlen*, the
|
||||
rightmost element is then removed to restore the size limit.
|
||||
If the insertion would cause a bounded deque to grow beyond *maxlen*,
|
||||
an :exc:`IndexError` is raised.
|
||||
|
||||
.. versionadded:: 3.5
|
||||
|
||||
|
|
|
@ -304,19 +304,20 @@ class TestBasic(unittest.TestCase):
|
|||
s.insert(i, 'Z')
|
||||
self.assertEqual(list(d), s)
|
||||
|
||||
def test_index_bug_26194(self):
|
||||
def test_insert_bug_26194(self):
|
||||
data = 'ABC'
|
||||
for i in range(len(data) + 1):
|
||||
d = deque(data, len(data))
|
||||
d.insert(i, None)
|
||||
s = list(data)
|
||||
s.insert(i, None)
|
||||
s.pop()
|
||||
self.assertEqual(list(d), s)
|
||||
if i < len(data):
|
||||
self.assertIsNone(d[i])
|
||||
d = deque(data, maxlen=len(data))
|
||||
with self.assertRaises(IndexError):
|
||||
d.insert(2, None)
|
||||
|
||||
elements = 'ABCDEFGHI'
|
||||
for i in range(-len(elements), len(elements)):
|
||||
d = deque(elements, maxlen=len(elements)+1)
|
||||
d.insert(i, 'Z')
|
||||
if i >= 0:
|
||||
self.assertEqual(d[i], 'Z')
|
||||
else:
|
||||
self.assertTrue(None not in d)
|
||||
self.assertEqual(d[i-1], 'Z')
|
||||
|
||||
def test_imul(self):
|
||||
for n in (-10, -1, 0, 1, 2, 10, 1000):
|
||||
|
|
|
@ -1085,16 +1085,13 @@ deque_insert(dequeobject *deque, PyObject *args)
|
|||
Py_ssize_t index;
|
||||
Py_ssize_t n = Py_SIZE(deque);
|
||||
PyObject *value;
|
||||
PyObject *oldvalue;
|
||||
PyObject *rv;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "nO:insert", &index, &value))
|
||||
return NULL;
|
||||
if (deque->maxlen == Py_SIZE(deque)) {
|
||||
if (index >= deque->maxlen || Py_SIZE(deque) == 0)
|
||||
Py_RETURN_NONE;
|
||||
oldvalue = deque_pop(deque, NULL);
|
||||
Py_DECREF(oldvalue);
|
||||
PyErr_SetString(PyExc_IndexError, "deque already at its maximum size");
|
||||
return NULL;
|
||||
}
|
||||
if (index >= n)
|
||||
return deque_append(deque, value);
|
||||
|
|
Loading…
Reference in New Issue