From 644f5bdddf74282df909d7eaca477eaed8b52154 Mon Sep 17 00:00:00 2001 From: Thomas Nicholas Date: Mon, 6 Feb 2023 20:33:01 -0500 Subject: [PATCH 1/3] test for error message --- xarray/tests/test_computation.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/xarray/tests/test_computation.py b/xarray/tests/test_computation.py index bfe51c5fcd8..c1be98670cb 100644 --- a/xarray/tests/test_computation.py +++ b/xarray/tests/test_computation.py @@ -1220,6 +1220,25 @@ def func(da): assert_identical(expected.chunk(), actual) +@requires_dask +def test_apply_dask_new_output_sizes_not_supplied_same_dim_names() -> None: + # test for missing output_sizes kwarg sneaking through + # see GH discussion 7503 + + data = np.random.randn(4, 4, 3, 2) + da = xr.DataArray(data=data, dims=("x", "y", "i", "j")).chunk(x=1, y=1) + + with pytest.raises(ValueError, match="output_sizes"): + xr.apply_ufunc( + np.linalg.pinv, + da, + input_core_dims=[["i", "j"]], + output_core_dims=[["i", "j"]], + exclude_dims=set(("i", "j")), + dask="parallelized", + ) + + def pandas_median(x): return pd.Series(x).median() From 017e04bdb1c3093b5e17a3cb9888e1faff0242e9 Mon Sep 17 00:00:00 2001 From: Thomas Nicholas Date: Mon, 6 Feb 2023 20:33:11 -0500 Subject: [PATCH 2/3] fix --- xarray/core/computation.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xarray/core/computation.py b/xarray/core/computation.py index d0ba083cf0c..8fe333e735f 100644 --- a/xarray/core/computation.py +++ b/xarray/core/computation.py @@ -723,7 +723,9 @@ def apply_variable_ufunc( dask_gufunc_kwargs["output_sizes"] = output_sizes_renamed for key in signature.all_output_core_dims: - if key not in signature.all_input_core_dims and key not in output_sizes: + if ( + key not in signature.all_input_core_dims or key in exclude_dims + ) and key not in output_sizes: raise ValueError( f"dimension '{key}' in 'output_core_dims' needs corresponding (dim, size) in 'output_sizes'" ) From bb981732f281bffe7643438e98ac0e97dfa6054c Mon Sep 17 00:00:00 2001 From: Thomas Nicholas Date: Mon, 6 Feb 2023 20:41:17 -0500 Subject: [PATCH 3/3] whatsnew --- doc/whats-new.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/whats-new.rst b/doc/whats-new.rst index 3d1669589f2..daa785dc6af 100644 --- a/doc/whats-new.rst +++ b/doc/whats-new.rst @@ -58,6 +58,9 @@ Bug fixes By `Kai Mühlbauer `_ and `Scott Chamberlin `_. - Handle ``keep_attrs`` option in binary operators of :py:meth:`Dataset` (:issue:`7390`, :pull:`7391`). By `Aron Gergely `_. +- Improve error message when using dask in :py:func:`apply_ufunc` with ``output_sizes`` not supplied. (:pull:`7509`) + By `Tom Nicholas `_. + Documentation ~~~~~~~~~~~~~