What happened?
On upgrading from xarray 2022.3.0 to 2022.6.0, f-string formatting of sparse-backed DataArray raises an exception.
What did you expect to happen?
- Code does not error, or
- A breaking change is listed in the “Breaking changes” section of the docs.
Minimal Complete Verifiable Example
import pandas as pd
import xarray as xr
s = pd.Series(
range(4),
index=pd.MultiIndex.from_product([list("ab"), list("cd")]),
)
da = xr.DataArray.from_series(s, sparse=True)
print(f"{da}")
MVCE confirmation
Relevant log output
# xarray 2022.3.0:
<xarray.DataArray (level_0: 2, level_1: 2)>
<COO: shape=(2, 2), dtype=float64, nnz=4, fill_value=nan>
Coordinates:
* level_0 (level_0) object 'a' 'b'
* level_1 (level_1) object 'c' 'd'
# xarray 2022.6.0:
Traceback (most recent call last):
File "/home/khaeru/bug.py", line 11, in <module>
print(f"{da}")
File "/home/khaeru/.local/lib/python3.10/site-packages/xarray/core/common.py", line 168, in __format__
return self.values.__format__(format_spec)
File "/home/khaeru/.local/lib/python3.10/site-packages/xarray/core/dataarray.py", line 685, in values
return self.variable.values
File "/home/khaeru/.local/lib/python3.10/site-packages/xarray/core/variable.py", line 527, in values
return _as_array_or_item(self._data)
File "/home/khaeru/.local/lib/python3.10/site-packages/xarray/core/variable.py", line 267, in _as_array_or_item
data = np.asarray(data)
File "/home/khaeru/.local/lib/python3.10/site-packages/sparse/_sparse_array.py", line 229, in __array__
raise RuntimeError(
RuntimeError: Cannot convert a sparse array to dense automatically. To manually densify, use the todense method.
Anything else we need to know?
Along with the versions below, I have confirmed the error occurs with both sparse 0.12 and sparse 0.13.
Environment
Details
INSTALLED VERSIONS
------------------
commit: None
python: 3.10.4 (main, Jun 29 2022, 12:14:53) [GCC 11.2.0]
python-bits: 64
OS: Linux
OS-release: 5.15.0-41-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_CA.UTF-8
LOCALE: ('en_CA', 'UTF-8')
libhdf5: 1.10.7
libnetcdf: 4.8.1
xarray: 2022.6.0
pandas: 1.4.2
numpy: 1.22.4
scipy: 1.8.0
netCDF4: 1.5.8
pydap: None
h5netcdf: 0.12.0
h5py: 3.6.0
Nio: None
zarr: None
cftime: 1.5.2
nc_time_axis: None
PseudoNetCDF: None
rasterio: None
cfgrib: None
iris: None
bottleneck: 1.3.2
dask: 2022.01.0+dfsg
distributed: 2022.01.0+ds.1
matplotlib: 3.5.1
cartopy: 0.20.2
seaborn: 0.11.2
numbagg: None
fsspec: 2022.01.0
cupy: None
pint: 0.18
sparse: 0.13.0
flox: None
numpy_groupies: None
setuptools: 62.1.0
pip: 22.0.2
conda: None
pytest: 6.2.5
IPython: 7.31.1
sphinx: 4.5.0
What happened?
On upgrading from xarray 2022.3.0 to 2022.6.0, f-string formatting of sparse-backed DataArray raises an exception.
What did you expect to happen?
Minimal Complete Verifiable Example
MVCE confirmation
Relevant log output
Anything else we need to know?
Along with the versions below, I have confirmed the error occurs with both sparse 0.12 and sparse 0.13.
Environment
Details
INSTALLED VERSIONS ------------------ commit: None python: 3.10.4 (main, Jun 29 2022, 12:14:53) [GCC 11.2.0] python-bits: 64 OS: Linux OS-release: 5.15.0-41-generic machine: x86_64 processor: x86_64 byteorder: little LC_ALL: None LANG: en_CA.UTF-8 LOCALE: ('en_CA', 'UTF-8') libhdf5: 1.10.7 libnetcdf: 4.8.1xarray: 2022.6.0
pandas: 1.4.2
numpy: 1.22.4
scipy: 1.8.0
netCDF4: 1.5.8
pydap: None
h5netcdf: 0.12.0
h5py: 3.6.0
Nio: None
zarr: None
cftime: 1.5.2
nc_time_axis: None
PseudoNetCDF: None
rasterio: None
cfgrib: None
iris: None
bottleneck: 1.3.2
dask: 2022.01.0+dfsg
distributed: 2022.01.0+ds.1
matplotlib: 3.5.1
cartopy: 0.20.2
seaborn: 0.11.2
numbagg: None
fsspec: 2022.01.0
cupy: None
pint: 0.18
sparse: 0.13.0
flox: None
numpy_groupies: None
setuptools: 62.1.0
pip: 22.0.2
conda: None
pytest: 6.2.5
IPython: 7.31.1
sphinx: 4.5.0