if a.itemsize>1:
self.assertRaises(ValueError, b.fromstring, "x")
- def test_fromarray(self):
- a = array.array(self.typecode, self.example)
- b = array.array(self.typecode, a)
- self.assertEqual(a, b)
-
def test_repr(self):
a = array.array(self.typecode, 2*self.example)
self.assertEqual(a, eval(repr(a), {"array": array.array}))
self.assertRaises(AttributeError, setattr, a, "color", "blue")
- def test_frombytearray(self):
- a = array.array('b', range(10))
- b = array.array(self.typecode, a)
- self.assertEqual(a, b)
-
class SignedNumberTest(NumberTest):
example = [-1, 0, 1, 42, 0x7f]
smallerexample = [-1, 0, 1, 42, 0x7e]
Extension Modules
-----------------
-- Issue #5109: array.array constructor will now use fast code when
- initial data is provided in an array object with correct type.
-
- Issue #7384: If the system readline library is linked against ncurses,
the curses module must be linked against ncurses as well. Otherwise it
is not safe to load both the readline and curses modules in an application.
if (!(initial == NULL || PyList_Check(initial)
|| PyString_Check(initial) || PyTuple_Check(initial)
- || PyTuple_Check(initial)
- || ((c=='u') && PyUnicode_Check(initial))
- || (array_Check(initial)
- && c == ((arrayobject*)initial)->ob_descr->typecode))) {
+ || (c == 'u' && PyUnicode_Check(initial)))) {
it = PyObject_GetIter(initial);
if (it == NULL)
return NULL;
PyObject *a;
Py_ssize_t len;
- if (initial == NULL)
+ if (initial == NULL || !(PyList_Check(initial)
+ || PyTuple_Check(initial)))
len = 0;
- else if (PyList_Check(initial))
- len = PyList_GET_SIZE(initial);
- else if (PyTuple_Check(initial) || array_Check(initial))
- len = Py_SIZE(initial);
else
- len = 0;
+ len = PySequence_Size(initial);
a = newarrayobject(type, len, descr);
if (a == NULL)
return NULL;
- if (len > 0 && !array_Check(initial)) {
+ if (len > 0) {
Py_ssize_t i;
for (i = 0; i < len; i++) {
PyObject *v =
}
#endif
}
- else if (initial != NULL && array_Check(initial)) {
- arrayobject *self = (arrayobject *)a;
- arrayobject *other = (arrayobject *)initial;
- memcpy(self->ob_item, other->ob_item, len * other->ob_descr->itemsize);
- }
if (it != NULL) {
if (array_iter_extend((arrayobject *)a, it) == -1) {
Py_DECREF(it);