From 67605bf212ce5696530104c0432e09234bc6ff9a Mon Sep 17 00:00:00 2001 From: aha66 Date: Sun, 4 Apr 2021 09:04:11 +0200 Subject: [PATCH] allow for empty output_core_dims in xr.apply_ufunc --- xarray/core/computation.py | 2 +- xarray/tests/test_computation.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) 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))