SF 686323: Minor array module enhancements
Allows use of tuples for the initializer.
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index 204c8d3..c03160e 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -1732,7 +1732,7 @@
 		return NULL;
 
 	if (!(initial == NULL || PyList_Check(initial)
-	      || PyString_Check(initial)
+	      || PyString_Check(initial) || PyTuple_Check(initial)
 	      || (c == 'u' && PyUnicode_Check(initial)))) {
 		PyErr_SetString(PyExc_TypeError,
 		    "array initializer must be list or string");
@@ -1742,10 +1742,12 @@
 		if (descr->typecode == c) {
 			PyObject *a;
 			int len;
-			if (initial == NULL || !PyList_Check(initial))
+
+			if (initial == NULL || !(PyList_Check(initial) 
+				|| PyTuple_Check(initial)))
 				len = 0;
 			else
-				len = PyList_Size(initial);
+				len = PySequence_Size(initial);
 
 			a = newarrayobject(type, len, descr);
 			if (a == NULL)
@@ -1755,7 +1757,7 @@
 				int i;
 				for (i = 0; i < len; i++) {
 					PyObject *v =
-					        PyList_GetItem(initial, i);
+					        PySequence_GetItem(initial, i);
 					if (setarrayitem(a, i, v) != 0) {
 						Py_DECREF(a);
 						return NULL;