-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Labels
Description
What happened?
In old versions of Xarray, Dataset.map handled non-DataArray outputs by casting them into DataArrays, using the xarray.Dataset constructor.
This is no longer the case after #10602. Now a mysterious error is raised instead.
What did you expect to happen?
I'm not sure this is exactly a bug, because this behavior is not documented (and apparently not tested, either!). Nonetheless, some users were relying on it.
We should either continue to support non-DataArray outputs, or raise an informative error if the return value of func is not a DataArray.
Minimal Complete Verifiable Example
# /// script
# requires-python = ">=3.11"
# dependencies = [
# "xarray[complete]@git+https://github.com/pydata/xarray.git@main",
# ]
# ///
#
# This script automatically imports the development branch of xarray to check for issues.
import xarray as xr
xr.show_versions()
ds = xr.Dataset({'foo': ('x', [1, 2, 3])})
ds.map(lambda x: 1)Steps to reproduce
Here's the error message:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
[/tmp/ipython-input-563895862.py](https://localhost:8080/#) in <cell line: 0>()
2
3 ds = xarray.Dataset({'foo': ('x', [1, 2, 3])})
----> 4 ds.map(lambda x: 1)
[/usr/local/lib/python3.12/dist-packages/xarray/core/dataset.py](https://localhost:8080/#) in map(self, func, keep_attrs, args, **kwargs)
6937 }
6938 coord_vars, indexes = merge_coordinates_without_align(
-> 6939 [v.coords for v in variables.values()]
6940 )
6941 coords = Coordinates._construct_direct(coords=coord_vars, indexes=indexes)
AttributeError: 'int' object has no attribute 'coords'
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.
- Recent environment — the issue occurs with the latest version of xarray and its dependencies.
Relevant log output
Anything else we need to know?
No response