Closed
Description
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
- Minimal example — the example is as focused as reasonably possible to demonstrate the underlying issue in xarray.
- Complete example — the example is self-contained, including all data and the text of any traceback.
- Verifiable example — the example copy & pastes into an IPython prompt or Binder notebook, returning the result.
- New issue — a search of GitHub Issues suggests this is not a duplicate.
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
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