xarray
xarray copied to clipboard
better warning filter for assert_*
In #4864 I added a a decorator for the xarray.testing.assert_*
functions to ensure warnings that were to errors (pytest.mark.filterwarnings("error")
) do not error in assert_*
(see https://github.com/pydata/xarray/pull/4760#issuecomment-774101639). As a solution I added
https://github.com/pydata/xarray/blob/5470d933452d88deb17cc9294a164c4a03f55dec/xarray/testing.py#L32
However, this is sub-optimal because this now removes all ignore
filters! As dask stuff only gets evaluated in assert_*
filters like warnings.filterwarnings("ignore", "Mean of empty slice")
don't work for dask arrays!
I thought of setting
warnings.simplefilter("ignore")
but this could suppress warnings we want to keep.
So now I remove all "error"
warning filters and keep the rest. Note that the original filters get restored after with warnings.catch_warnings():
. ().
I am not sure I expressed myself very clearly... let me know and I can try again. @keewis you had a look at #4864 maybe you can review this PR as well?