Description
What happened:
Slicing a DataArray with a CFTime time axis gives an error TypeError: _maybe_cast_slice_bound() missing 1 required positional argument: 'kind'
What you expected to happen:
The slice should return elements 31 to 180
Minimal Complete Verifiable Example:
import xarray as xr
import cftime
import numpy as np
units = 'days since 2000-01-01 00:00'
time_365 = cftime.num2date(np.arange(0, 10 * 365), units, '365_day')
da = xr.DataArray(np.arange(time_365.size), coords = [time_365], dims = 'time')
da.sel(time=slice('2000-02','2000-06'))
Anything else we need to know?:
It appears to be a compatibility issue between Pandas 1.3.0 and Xarray 0.18.2, with Pandas 1.2.5 and Xarray 0.18.2 the slice behaves normally. Possibly there has been an interface change that has broken CFTimeIndex.
Using a pure Pandas time axis works fine
import xarray as xr
import pandas as pd
import numpy as np
time = pd.date_range('20000101','20100101', freq='D')
da = xr.DataArray(np.arange(time.size), coords = [time], dims = 'time')
da.sel(time=slice('2000-02','2000-06'))
Environment:
Output of xr.show_versions()
INSTALLED VERSIONS
commit: None
python: 3.9.5 | packaged by conda-forge | (default, Jun 19 2021, 00:32:32)
[GCC 9.3.0]
python-bits: 64
OS: Linux
OS-release: 4.18.0-305.7.1.el8.nci.x86_64
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en.UTF-8
LOCALE: ('en_US', 'UTF-8')
libhdf5: 1.10.6
libnetcdf: 4.7.4
xarray: 0.18.2
pandas: 1.3.0
numpy: 1.21.0
scipy: 1.7.0
netCDF4: 1.5.6
pydap: installed
h5netcdf: 0.11.0
h5py: 3.3.0
Nio: None
zarr: 2.8.3
cftime: 1.4.1
nc_time_axis: 1.2.0
PseudoNetCDF: None
rasterio: 1.2.6
cfgrib: 0.9.9.0
iris: 2.4.0
bottleneck: 1.3.2
dask: 2021.06.2
distributed: 2021.06.2
matplotlib: 3.4.2
cartopy: 0.19.0.post1
seaborn: 0.11.1
numbagg: None
pint: 0.17
setuptools: 52.0.0.post20210125
pip: 21.1.3
conda: 4.10.3
pytest: 6.2.4
IPython: 7.25.0
sphinx: 4.0.3