diff --git a/xarray/core/computation.py b/xarray/core/computation.py index 027bf29000a..d8d2fca20ac 100644 --- a/xarray/core/computation.py +++ b/xarray/core/computation.py @@ -270,7 +270,7 @@ def apply_dataarray_vfunc( data_vars = [getattr(a, "variable", a) for a in args] result_var = func(*data_vars) - if signature.num_outputs > 1: + if signature.num_outputs != 1: out = tuple( DataArray(variable, coords, name=name, fastpath=True) for variable, coords in zip(result_var, result_coords) diff --git a/xarray/tests/test_computation.py b/xarray/tests/test_computation.py index 4890536a5d7..7f1f1227582 100644 --- a/xarray/tests/test_computation.py +++ b/xarray/tests/test_computation.py @@ -1184,6 +1184,17 @@ def test_vectorize_dask_new_output_dims(): ) +def test_output_empty_tuple(): + variable = xr.DataArray(np.arange(10), dims=["x"]) + + def empty_tuple(x): + return () + + expected = () + actual = apply_ufunc(empty_tuple, variable, output_core_dims=[]) + assert actual == expected + + def test_output_wrong_number(): variable = xr.Variable("x", np.arange(10))