Skip to content

Commit a813e00

Browse files
Address upstream failures revealed in #11043 (#11050)
* Explicitly set date_range unit in CFTimeIndex resample tests * Explicitly set date_range unit in backend test * Explicitly set date_range unit in conventions tests * Explicitly set date_range unit in iris conversion tests * Adjust formatting tests for new pandas str dtype
1 parent b1c673c commit a813e00

5 files changed

Lines changed: 22 additions & 14 deletions

File tree

xarray/tests/test_backends.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1486,7 +1486,7 @@ def test_encoding_unlimited_dims(self) -> None:
14861486
pass
14871487

14881488
def test_encoding_kwarg_dates(self) -> None:
1489-
ds = Dataset({"t": pd.date_range("2000-01-01", periods=3)})
1489+
ds = Dataset({"t": pd.date_range("2000-01-01", periods=3, unit="ns")})
14901490
units = "days since 1900-01-01"
14911491
kwargs = dict(encoding={"t": {"units": units}})
14921492
with self.roundtrip(ds, save_kwargs=kwargs) as actual:

xarray/tests/test_cftimeindex_resample.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
)
1717
from xarray.coding.cftimeindex import CFTimeIndex
1818
from xarray.core.resample_cftime import CFTimeGrouper
19+
from xarray.core.types import PDDatetimeUnitOptions
1920
from xarray.tests import has_pandas_3
2021

2122
cftime = pytest.importorskip("cftime")
@@ -141,7 +142,7 @@ def test_resample_with_tick_resample_freq(freqs, closed, label, offset) -> None:
141142
origin = "start"
142143

143144
datetime_index = pd.date_range(
144-
start=start, periods=5, freq=_new_to_legacy_freq(initial_freq)
145+
start=start, periods=5, freq=_new_to_legacy_freq(initial_freq), unit="ns"
145146
)
146147
cftime_index = xr.date_range(
147148
start=start, periods=5, freq=initial_freq, use_cftime=True
@@ -178,7 +179,7 @@ def test_resample_with_non_tick_resample_freq(freqs, closed, label) -> None:
178179
origin = "start_day"
179180

180181
datetime_index = pd.date_range(
181-
start=start, periods=5, freq=_new_to_legacy_freq(initial_freq)
182+
start=start, periods=5, freq=_new_to_legacy_freq(initial_freq), unit="ns"
182183
)
183184
cftime_index = xr.date_range(
184185
start=start, periods=5, freq=initial_freq, use_cftime=True
@@ -231,7 +232,9 @@ def test_calendars(calendar: str) -> None:
231232
calendar=calendar,
232233
use_cftime=True,
233234
)
234-
pd_index = pd.date_range(start="2004-01-01T12:07:01", periods=7, freq="3D")
235+
pd_index = pd.date_range(
236+
start="2004-01-01T12:07:01", periods=7, freq="3D", unit="ns"
237+
)
235238
da_cftime = da(xr_index).resample(time=freq, closed=closed, label=label).mean()
236239
da_datetime = da(pd_index).resample(time=freq, closed=closed, label=label).mean()
237240
# TODO (benbovy - flexible indexes): update when CFTimeIndex is a xarray Index subclass
@@ -245,6 +248,7 @@ class DateRangeKwargs(TypedDict):
245248
start: str
246249
periods: int
247250
freq: str
251+
unit: PDDatetimeUnitOptions
248252

249253

250254
@pytest.mark.parametrize("closed", ["left", "right"])
@@ -256,7 +260,9 @@ class DateRangeKwargs(TypedDict):
256260
def test_origin(closed, origin) -> None:
257261
initial_freq, resample_freq = ("3h", "9h")
258262
start = "1969-12-31T12:07:01"
259-
index_kwargs: DateRangeKwargs = dict(start=start, periods=12, freq=initial_freq)
263+
index_kwargs: DateRangeKwargs = dict(
264+
start=start, periods=12, freq=initial_freq, unit="ns"
265+
)
260266
datetime_index = pd.date_range(**index_kwargs)
261267
cftime_index = xr.date_range(**index_kwargs, use_cftime=True)
262268
da_datetimeindex = da(datetime_index)

xarray/tests/test_conventions.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ def test_dataset(self) -> None:
280280
expected = Dataset(
281281
{"foo": ("t", [0, 0, 0], {"units": "bar"})},
282282
{
283-
"t": pd.date_range("2000-01-01", periods=3),
283+
"t": pd.date_range("2000-01-01", periods=3, unit="ns"),
284284
"y": ("t", [5.0, 10.0, np.nan]),
285285
},
286286
)
@@ -422,7 +422,7 @@ def test_decode_cf_with_drop_variables(self) -> None:
422422
)
423423
expected = Dataset(
424424
{
425-
"t": pd.date_range("2000-01-01", periods=3),
425+
"t": pd.date_range("2000-01-01", periods=3, unit="ns"),
426426
"foo": (
427427
("t", "x"),
428428
[[0, 0, 0], [1, 1, 1], [2, 2, 2]],

xarray/tests/test_dataarray.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7002,7 +7002,7 @@ def test_to_and_from_iris(self) -> None:
70027002
# to iris
70037003
coord_dict: dict[Hashable, Any] = {}
70047004
coord_dict["distance"] = ("distance", [-2, 2], {"units": "meters"})
7005-
coord_dict["time"] = ("time", pd.date_range("2000-01-01", periods=3))
7005+
coord_dict["time"] = ("time", pd.date_range("2000-01-01", periods=3, unit="ns"))
70067006
coord_dict["height"] = 10
70077007
coord_dict["distance2"] = ("distance", [0, 1], {"foo": "bar"})
70087008
coord_dict["time2"] = (("distance", "time"), [[0, 1, 2], [2, 3, 4]])
@@ -7073,7 +7073,7 @@ def test_to_and_from_iris_dask(self) -> None:
70737073

70747074
coord_dict: dict[Hashable, Any] = {}
70757075
coord_dict["distance"] = ("distance", [-2, 2], {"units": "meters"})
7076-
coord_dict["time"] = ("time", pd.date_range("2000-01-01", periods=3))
7076+
coord_dict["time"] = ("time", pd.date_range("2000-01-01", periods=3, unit="ns"))
70777077
coord_dict["height"] = 10
70787078
coord_dict["distance2"] = ("distance", [0, 1], {"foo": "bar"})
70797079
coord_dict["time2"] = (("distance", "time"), [[0, 1, 2], [2, 3, 4]])

xarray/tests/test_formatting.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import xarray as xr
1111
from xarray.core import formatting
1212
from xarray.core.indexes import Index
13-
from xarray.tests import requires_cftime, requires_dask, requires_netCDF4
13+
from xarray.tests import has_pandas_3, requires_cftime, requires_dask, requires_netCDF4
1414

1515

1616
class CustomIndex(Index):
@@ -297,6 +297,7 @@ def test_diff_array_repr(self) -> None:
297297
)
298298

299299
byteorder = "<" if sys.byteorder == "little" else ">"
300+
str_dtype = "str" if has_pandas_3 else "object"
300301
expected = dedent(
301302
f"""\
302303
Left and right DataArray objects are not identical
@@ -317,8 +318,8 @@ def test_diff_array_repr(self) -> None:
317318
label (x) int64 16B 1 2
318319
Indexes only on the left object: ['y']
319320
Differing indexes:
320-
L x Index(['a', 'b'], dtype='object', name='x')
321-
R x Index(['a', 'c'], dtype='object', name='x')
321+
L x Index(['a', 'b'], dtype='{str_dtype}', name='x')
322+
R x Index(['a', 'c'], dtype='{str_dtype}', name='x')
322323
Differing attributes:
323324
L units: m
324325
R units: kg
@@ -501,6 +502,7 @@ def test_diff_dataset_repr(self) -> None:
501502
)
502503

503504
byteorder = "<" if sys.byteorder == "little" else ">"
505+
str_dtype = "str" if has_pandas_3 else "object"
504506
expected = dedent(
505507
f"""\
506508
Left and right Dataset objects are not identical
@@ -525,8 +527,8 @@ def test_diff_dataset_repr(self) -> None:
525527
var2 (x) int64 16B 3 4
526528
Indexes only on the left object: ['y']
527529
Differing indexes:
528-
L x Index(['a', 'b'], dtype='object', name='x')
529-
R x Index(['a', 'c'], dtype='object', name='x')
530+
L x Index(['a', 'b'], dtype='{str_dtype}', name='x')
531+
R x Index(['a', 'c'], dtype='{str_dtype}', name='x')
530532
Differing attributes:
531533
L title: mytitle
532534
R title: newtitle

0 commit comments

Comments
 (0)