summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Harris <charlesr.harris@gmail.com>2012-03-24 14:49:07 -0600
committerCharles Harris <charlesr.harris@gmail.com>2012-03-30 05:46:38 -0600
commit960a86be3539f67ea5200d6fe22ae0e82324af30 (patch)
tree55a9dc759b2b719c4c97395d0c53390f29d3a88b
parent2dc81ff91a16b4fb1e555d5c3898b7eb9e2a08b3 (diff)
downloadnumpy-960a86be3539f67ea5200d6fe22ae0e82324af30.tar.gz
BUG: ticket #2086, make datetime and timedelta recognize byte order.
The descriptor construction of these types was ignoring the byteorder character.
-rw-r--r--numpy/core/src/multiarray/descriptor.c9
-rw-r--r--numpy/core/tests/test_datetime.py2
2 files changed, 10 insertions, 1 deletions
diff --git a/numpy/core/src/multiarray/descriptor.c b/numpy/core/src/multiarray/descriptor.c
index 3aaa7843c..4e61d5b26 100644
--- a/numpy/core/src/multiarray/descriptor.c
+++ b/numpy/core/src/multiarray/descriptor.c
@@ -1269,7 +1269,14 @@ PyArray_DescrConverter(PyObject *obj, PyArray_Descr **at)
/* Check for datetime format */
if (is_datetime_typestr(type, len)) {
*at = parse_dtype_from_datetime_typestr(type, len);
- return (*at) ? NPY_SUCCEED : NPY_FAIL;
+ if (*at == NULL) {
+ return NPY_FAIL;
+ }
+ /* *at has byte order '=' at this point */
+ if (!PyArray_ISNBO(endian)) {
+ (*at)->byteorder = endian;
+ }
+ return NPY_SUCCEED;
}
/* A typecode like 'd' */
diff --git a/numpy/core/tests/test_datetime.py b/numpy/core/tests/test_datetime.py
index 07dc86203..a0519612e 100644
--- a/numpy/core/tests/test_datetime.py
+++ b/numpy/core/tests/test_datetime.py
@@ -25,6 +25,7 @@ class TestDateTime(TestCase):
np.dtype("<M8") == np.dtype("M8"))
assert_(np.dtype(">M8[D]") == np.dtype("M8[D]") or
np.dtype("<M8[D]") == np.dtype("M8[D]"))
+ assert_(np.dtype(">M8") != np.dtype("<M8"))
assert_equal(np.dtype("=m8"), np.dtype("m8"))
assert_equal(np.dtype("=m8[s]"), np.dtype("m8[s]"))
@@ -32,6 +33,7 @@ class TestDateTime(TestCase):
np.dtype("<m8") == np.dtype("m8"))
assert_(np.dtype(">m8[D]") == np.dtype("m8[D]") or
np.dtype("<m8[D]") == np.dtype("m8[D]"))
+ assert_(np.dtype(">m8") != np.dtype("<m8"))
# Check that the parser rejects bad datetime types
assert_raises(TypeError, np.dtype, 'M8[badunit]')