\begin{methoddesc}[array]{insert}{i, x}
Insert a new item with value \var{x} in the array before position
-\var{i}.
+\var{i}. Negative values are treated as being relative to the end
+of the array.
\end{methoddesc}
\begin{methoddesc}[array]{pop}{\optional{i}}
self.assertRaises(TypeError, a.insert, None)
self.assertRaises(TypeError, a.insert, 0, None)
+ a = array.array(self.typecode, self.example)
+ a.insert(-1, self.example[0])
+ self.assertEqual(
+ a,
+ array.array(
+ self.typecode,
+ self.example[:-1] + self.example[:1] + self.example[-1:]
+ )
+ )
+
+ a = array.array(self.typecode, self.example)
+ a.insert(-1000, self.example[0])
+ self.assertEqual(
+ a,
+ array.array(self.typecode, self.example[:1] + self.example)
+ )
+
+ a = array.array(self.typecode, self.example)
+ a.insert(1000, self.example[0])
+ self.assertEqual(
+ a,
+ array.array(self.typecode, self.example + self.example[:1])
+ )
+
def test_tofromfile(self):
a = array.array(self.typecode, 2*self.example)
self.assertRaises(TypeError, a.tofile)
Extension modules
-----------------
+- array.array.insert() now treats negative indices as being relative
+ to the end of the array, just like list.insert() does. (SF bug #739313)
+
- The datetime module classes datetime, time, and timedelta are now
properly subclassable.
PyErr_NoMemory();
return -1;
}
- if (where < 0)
- where = 0;
+ if (where < 0) {
+ where += self->ob_size;
+ if (where < 0)
+ where = 0;
+ }
if (where > self->ob_size)
where = self->ob_size;
memmove(items + (where+1)*self->ob_descr->itemsize,