Skip to content

Commit daaa08f

Browse files
committed
add timedelta and deltatime to the test_default_fill_value
1 parent 93b5bc0 commit daaa08f

File tree

3 files changed

+52
-19
lines changed

3 files changed

+52
-19
lines changed

docs/user-guide/arrays.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -625,6 +625,7 @@ Datetime and Timedelta arrays
625625
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
626626
NumPy’s datetime64 (‘M8’) and timedelta64 (‘m8’) dtypes are supported for Zarr arrays, as long as the units are specified. E.g.:
627627

628+
.. code-block:: python
628629
>>> data = np.array(['2007-07-13', '2006-01-13', '2010-08-13'], dtype='M8[D]')
629630
>>> z = zarr.create_array(store='data/example-datetime.zarr', shape=data.shape, dtype=data.dtype)
630631
>>> z[:] = data

src/zarr/core/metadata/v3.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -659,24 +659,24 @@ class DataType(Enum):
659659
float64 = "float64"
660660
complex64 = "complex64"
661661
complex128 = "complex128"
662-
datetime64ns = ("datetime[ns]",)
663-
datetime64ms = ("datetime[ms]",)
664-
datetime64s = ("datetime[s]",)
665-
datetime64m = ("datetime[m]",)
666-
datetime64h = ("datetime[h]",)
667-
datetime64D = ("datetime[D]",)
668-
datetime64W = ("datetime[W]",)
669-
datetime64M = ("datetime[M]",)
670-
datetime64Y = ("datetime[Y]",)
671-
timedelta64ns = ("deltatime[ns]",)
672-
timedelta64ms = ("deltatime[ms]",)
673-
timedelta64s = ("deltatime[s]",)
674-
timedelta64m = ("deltatime[m]",)
675-
timedelta64h = ("deltatime[h]",)
676-
timedelta64D = ("deltatime[D]",)
677-
timedelta64W = ("deltatime[W]",)
678-
timedelta64M = ("deltatime[M]",)
679-
timedelta64Y = ("deltatime[Y]",)
662+
datetime64ns = "datetime64ns"
663+
datetime64ms = "datetime64ms"
664+
datetime64s = "datetime64s"
665+
datetime64m = "datetime64m"
666+
datetime64h = "datetime64h"
667+
datetime64D = "datetime64D"
668+
datetime64W = "datetime64W"
669+
datetime64M = "datetime64M"
670+
datetime64Y = "datetime64Y"
671+
timedelta64ns = "timedelta64ns"
672+
timedelta64ms = "timedelta64ms"
673+
timedelta64s = "timedelta64s"
674+
timedelta64m = "timedelta64m"
675+
timedelta64h = "timedelta64h"
676+
timedelta64D = "timedelta64D"
677+
timedelta64W = "timedelta64W"
678+
timedelta64M = "timedelta64M"
679+
timedelta64Y = "timedelta64Y"
680680
string = "string"
681681
bytes = "bytes"
682682

tests/test_metadata/test_v3.py

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,37 @@
5656
complex_dtypes = ("complex64", "complex128")
5757
vlen_dtypes = ("string", "bytes")
5858

59-
dtypes = (*bool_dtypes, *int_dtypes, *float_dtypes, *complex_dtypes, *vlen_dtypes)
59+
datetime_dtypes = (
60+
"datetime64ns",
61+
"datetime64ms",
62+
"datetime64s",
63+
"datetime64m",
64+
"datetime64h",
65+
"datetime64D",
66+
"datetime64W",
67+
"datetime64M",
68+
"datetime64Y",
69+
)
70+
deltatime_dtypes = (
71+
"timedelta64ns",
72+
"timedelta64ms",
73+
"timedelta64s",
74+
"timedelta64m",
75+
"timedelta64h",
76+
"timedelta64D",
77+
"timedelta64W",
78+
"timedelta64M",
79+
"timedelta64Y",
80+
)
81+
dtypes = (
82+
*bool_dtypes,
83+
*int_dtypes,
84+
*float_dtypes,
85+
*complex_dtypes,
86+
*vlen_dtypes,
87+
*datetime_dtypes,
88+
*deltatime_dtypes,
89+
)
6090

6191

6292
@pytest.mark.parametrize("data", [None, 1, 2, 4, 5, "3"])
@@ -119,6 +149,8 @@ def test_default_fill_value(dtype_str: str) -> None:
119149
assert fill_value == ""
120150
elif dtype == DataType.bytes:
121151
assert fill_value == b""
152+
elif np.dtype(dtype.to_numpy()).kind in "Mm":
153+
assert np.isnat(fill_value.view())
122154
else:
123155
assert fill_value == dtype.to_numpy().type(0)
124156

0 commit comments

Comments
 (0)