diff options
author | Eric Wieser <wieser.eric@gmail.com> | 2020-08-28 09:46:51 +0100 |
---|---|---|
committer | Eric Wieser <wieser.eric@gmail.com> | 2020-08-28 13:55:13 +0100 |
commit | d3e4792a6ef9532825d481586dc38c0e2e1eb53b (patch) | |
tree | f01e97430ba8ef09afa331b2ace701f2f1653f68 | |
parent | 80701dda0fd7b16ecccc2243e9a0c5f00194fef6 (diff) | |
download | numpy-d3e4792a6ef9532825d481586dc38c0e2e1eb53b.tar.gz |
ENH: Allow μs as an alias for us
This is motivated primarily as a proof that the datetime API is now unicode-safe, and generally seems harmless.
-rw-r--r-- | doc/source/reference/arrays.datetime.rst | 2 | ||||
-rw-r--r-- | numpy/core/src/multiarray/datetime.c | 4 | ||||
-rw-r--r-- | numpy/core/tests/test_datetime.py | 9 |
3 files changed, 14 insertions, 1 deletions
diff --git a/doc/source/reference/arrays.datetime.rst b/doc/source/reference/arrays.datetime.rst index 9ce77424a..c5947620e 100644 --- a/doc/source/reference/arrays.datetime.rst +++ b/doc/source/reference/arrays.datetime.rst @@ -218,7 +218,7 @@ And here are the time units: m minute +/- 1.7e13 years [1.7e13 BC, 1.7e13 AD] s second +/- 2.9e11 years [2.9e11 BC, 2.9e11 AD] ms millisecond +/- 2.9e8 years [ 2.9e8 BC, 2.9e8 AD] - us microsecond +/- 2.9e5 years [290301 BC, 294241 AD] +us / μs microsecond +/- 2.9e5 years [290301 BC, 294241 AD] ns nanosecond +/- 292 years [ 1678 AD, 2262 AD] ps picosecond +/- 106 days [ 1969 AD, 1970 AD] fs femtosecond +/- 2.6 hours [ 1969 AD, 1970 AD] diff --git a/numpy/core/src/multiarray/datetime.c b/numpy/core/src/multiarray/datetime.c index 941af0bf9..f2225809a 100644 --- a/numpy/core/src/multiarray/datetime.c +++ b/numpy/core/src/multiarray/datetime.c @@ -1717,6 +1717,10 @@ parse_datetime_unit_from_string(char const *str, Py_ssize_t len, char const *met return NPY_FR_as; } } + else if (len == 3 && !strncmp(str, "\xce\xbcs", 3)) { + /* greek small letter mu, utf8-encoded */ + return NPY_FR_us; + } else if (len == 7 && !strncmp(str, "generic", 7)) { return NPY_FR_GENERIC; } diff --git a/numpy/core/tests/test_datetime.py b/numpy/core/tests/test_datetime.py index a546daa58..f725091c5 100644 --- a/numpy/core/tests/test_datetime.py +++ b/numpy/core/tests/test_datetime.py @@ -26,6 +26,7 @@ class TestDateTime: def test_datetime_dtype_creation(self): for unit in ['Y', 'M', 'W', 'D', 'h', 'm', 's', 'ms', 'us', + 'μs', # alias for us 'ns', 'ps', 'fs', 'as']: dt1 = np.dtype('M8[750%s]' % unit) assert_(dt1 == np.dtype('datetime64[750%s]' % unit)) @@ -2397,3 +2398,11 @@ class TestDateTimeData: dt = np.datetime64('2000', b'5ms') assert np.datetime_data(dt.dtype) == ('ms', 5) + + def test_non_ascii(self): + # μs is normalized to μ + dt = np.datetime64('2000', ('μs', 5)) + assert np.datetime_data(dt.dtype) == ('us', 5) + + dt = np.datetime64('2000', '5μs') + assert np.datetime_data(dt.dtype) == ('us', 5) |