From e3546d3769e63bec6ee6ccb75279fc1832601739 Mon Sep 17 00:00:00 2001 From: Veniamin Petrenko Date: Tue, 27 Oct 2020 05:39:25 +0300 Subject: [PATCH] BUG: fix np.timedelta64('nat').__format__ throwing an exception Closes #17552 --- numpy/core/src/multiarray/scalartypes.c.src | 3 ++- numpy/core/tests/test_datetime.py | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/numpy/core/src/multiarray/scalartypes.c.src b/numpy/core/src/multiarray/scalartypes.c.src index b48fdf0c6378..d6271ba34cf3 100644 --- a/numpy/core/src/multiarray/scalartypes.c.src +++ b/numpy/core/src/multiarray/scalartypes.c.src @@ -275,7 +275,8 @@ gentype_format(PyObject *self, PyObject *args) if (Py_TYPE(self) == &PyBoolArrType_Type) { obj = PyBool_FromLong(PyArrayScalar_VAL(self, Bool)); } - else if (PyArray_IsScalar(self, Integer)) { + else if (PyArray_IsScalar(self, Integer) + && !PyArray_IsScalar(self, Timedelta)) { obj = Py_TYPE(self)->tp_as_number->nb_int(self); } else if (PyArray_IsScalar(self, Floating)) { diff --git a/numpy/core/tests/test_datetime.py b/numpy/core/tests/test_datetime.py index 438d52f97f73..129dd47c651d 100644 --- a/numpy/core/tests/test_datetime.py +++ b/numpy/core/tests/test_datetime.py @@ -429,6 +429,10 @@ def test_timedelta_0_dim_object_array_conversion(self): np.timedelta64) assert_equal(actual, expected) + def test_timedelta_nat_format(self): + # gh-17552 + assert_equal('NaT', '{0}'.format(np.timedelta64('nat'))) + def test_timedelta_scalar_construction_units(self): # String construction detecting units assert_equal(np.datetime64('2010').dtype,