summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Moore <ewm@redtetrahedron.org>2013-02-15 09:52:16 -0500
committerEric Moore <ewm@redtetrahedron.org>2013-02-15 09:52:16 -0500
commit914294a42ab85966dc4760b35c02cc28f1b021d6 (patch)
tree243435726a7c07759412908f4922c7f2cffff748
parent1d04300248882b207f493c7207f83a8b467be2be (diff)
downloadnumpy-914294a42ab85966dc4760b35c02cc28f1b021d6.tar.gz
FIX: use PyObject_CallMethodObjArgs in array_dot
and make added comments in test_multiarray.py helpful.
-rw-r--r--numpy/core/src/multiarray/methods.c9
-rw-r--r--numpy/core/tests/test_multiarray.py4
2 files changed, 9 insertions, 4 deletions
diff --git a/numpy/core/src/multiarray/methods.c b/numpy/core/src/multiarray/methods.c
index ab3cae113..c5a5fdedb 100644
--- a/numpy/core/src/multiarray/methods.c
+++ b/numpy/core/src/multiarray/methods.c
@@ -1847,7 +1847,7 @@ array_cumprod(PyArrayObject *self, PyObject *args, PyObject *kwds)
static PyObject *
array_dot(PyArrayObject *self, PyObject *args, PyObject *kwds)
{
- PyObject *b, *out = NULL;
+ PyObject *fname, *ret, *b, *out = NULL;
static PyObject *numpycore = NULL;
char * kwords[] = {"b", "out", NULL };
@@ -1863,10 +1863,13 @@ array_dot(PyArrayObject *self, PyObject *args, PyObject *kwds)
return NULL;
}
}
+ fname = PyString_FromString("dot");
if (out == NULL) {
- return PyObject_CallMethod(numpycore, "dot", "OO", self, b);
+ ret = PyObject_CallMethodObjArgs(numpycore, fname, self, b, NULL);
}
- return PyObject_CallMethod(numpycore, "dot", "OOO", self, b, out);
+ ret = PyObject_CallMethodObjArgs(numpycore, fname, self, b, out, NULL);
+ Py_DECREF(fname);
+ return ret;
}
diff --git a/numpy/core/tests/test_multiarray.py b/numpy/core/tests/test_multiarray.py
index 9449046b9..b3c0626dc 100644
--- a/numpy/core/tests/test_multiarray.py
+++ b/numpy/core/tests/test_multiarray.py
@@ -902,10 +902,12 @@ class TestMethods(TestCase):
assert_equal(np.dot(a, b), a.dot(b))
assert_equal(np.dot(np.dot(a, b), c), a.dot(b).dot(c))
- # test changes from gh-2687 (trac 2096)
+ # test passing in an output array
c = np.zeros_like(a)
a.dot(b,c)
assert_equal(c, np.dot(a,b))
+
+ # test keyword args
c = np.zeros_like(a)
a.dot(b=b,out=c)
assert_equal(c, np.dot(a,b))