Index: /issm/trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp
===================================================================
--- /issm/trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp	(revision 14096)
+++ /issm/trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp	(revision 14097)
@@ -23,12 +23,16 @@
 
 	/*return internal value: */
-	if      (PyFloat_Check((PyArrayObject*)py_float))
+	if      (PyFloat_Check(py_float))
 		dscalar=PyFloat_AsDouble(py_float);
-	else if (PyInt_Check((PyArrayObject*)py_float))
+	else if (PyInt_Check(py_float))
 		dscalar=(double)PyInt_AsLong(py_float);
-	else if (PyLong_Check((PyArrayObject*)py_float))
+	else if (PyLong_Check(py_float))
 		dscalar=PyLong_AsDouble(py_float);
-	else if (PyBool_Check((PyArrayObject*)py_float))
+	else if (PyBool_Check(py_float))
 		dscalar=(double)PyLong_AsLong(py_float);
+	else if (PyTuple_Check(py_float) && (int)PyTuple_Size(py_float)==1)
+		FetchData(&dscalar,PyTuple_GetItem(py_float,(Py_ssize_t)0));
+	else if (PyList_Check(py_float) && (int)PyList_Size(py_float)==1)
+		FetchData(&dscalar,PyList_GetItem(py_float,(Py_ssize_t)0));
 	else
 		_error_("unrecognized float type in input!");
@@ -44,12 +48,16 @@
 
 	/*return internal value: */
-	if      (PyInt_Check((PyArrayObject*)py_long))
+	if      (PyInt_Check(py_long))
 		iscalar=(int)PyInt_AsLong(py_long);
-	else if (PyLong_Check((PyArrayObject*)py_long))
+	else if (PyLong_Check(py_long))
 		iscalar=(int)PyLong_AsLong(py_long);
-	else if (PyFloat_Check((PyArrayObject*)py_long))
+	else if (PyFloat_Check(py_long))
 		iscalar=(int)PyFloat_AsDouble(py_long);
-	else if (PyBool_Check((PyArrayObject*)py_long))
+	else if (PyBool_Check(py_long))
 		iscalar=(int)PyLong_AsLong(py_long);
+	else if (PyTuple_Check(py_long) && (int)PyTuple_Size(py_long)==1)
+		FetchData(&iscalar,PyTuple_GetItem(py_long,(Py_ssize_t)0));
+	else if (PyList_Check(py_long) && (int)PyList_Size(py_long)==1)
+		FetchData(&iscalar,PyList_GetItem(py_long,(Py_ssize_t)0));
 	else
 		_error_("unrecognized long type in input!");
@@ -64,13 +72,20 @@
 	bool bscalar;
 
-	/*check this is indeed a subtype of long type: */
-	if(!PyBool_Check(py_boolean))_error_("expecting a boolean in input!");
-
-	/*extract boolean: */
-	bscalar=(bool)PyLong_AsLong(py_boolean);
-
-	/*simple copy: */
+	/*return internal value: */
+	if      (PyBool_Check(py_boolean))
+		bscalar=(bool)PyLong_AsLong(py_boolean);
+	else if (PyInt_Check(py_boolean))
+		bscalar=(bool)PyInt_AsLong(py_boolean);
+	else if (PyLong_Check(py_boolean))
+		bscalar=(bool)PyLong_AsLong(py_boolean);
+	else if (PyTuple_Check(py_boolean) && (int)PyTuple_Size(py_boolean)==1)
+		FetchData(&bscalar,PyTuple_GetItem(py_boolean,(Py_ssize_t)0));
+	else if (PyList_Check(py_boolean) && (int)PyList_Size(py_boolean)==1)
+		FetchData(&bscalar,PyList_GetItem(py_boolean,(Py_ssize_t)0));
+	else
+		_error_("unrecognized boolean type in input!");
+
+	/*output: */
 	*pscalar=bscalar;
-
 }
 /*}}}*/
@@ -132,8 +147,5 @@
 	}
 
-	else if (PyFloat_Check((PyArrayObject*)py_matrix) ||
-			 PyInt_Check((PyArrayObject*)py_matrix) ||
-			 PyLong_Check((PyArrayObject*)py_matrix) ||
-			 PyBool_Check((PyArrayObject*)py_matrix)) {
+	else {
 		M=1;
 		N=1;
@@ -141,7 +153,4 @@
 		FetchData(&(matrix[0]),py_matrix);
 	}
-
-	else
-		_error_("unrecognized array type in input!");
 
 	/*output: */
@@ -208,8 +217,5 @@
 	}
 
-	else if (PyInt_Check((PyArrayObject*)py_matrix) ||
-			 PyLong_Check((PyArrayObject*)py_matrix) ||
-			 PyFloat_Check((PyArrayObject*)py_matrix) ||
-			 PyBool_Check((PyArrayObject*)py_matrix)) {
+	else {
 		M=1;
 		N=1;
@@ -217,7 +223,4 @@
 		FetchData(&(matrix[0]),py_matrix);
 	}
-
-	else
-		_error_("unrecognized array type in input!");
 
 	/*output: */
