A pytest-regressions plugin for identifying regressions in Xarray objects.
[!WARNING]
xarray-regressionsis in early development and might have breaking changes.
Install
pip install xarray-regressions
Usage
[!TIP] If you're unfamiliar with
pytest-regressions, check out their documentation first.
Once installed, this package registers a test fixture xarray_regression for detecting regressions in the data or metadata of xr.DataArray and xr.Dataset objects.
Say you have a function make_dataarray that should always return the same output:
import xarray as xr
def make_dataarray(name: str) -> xr.DataArray:
"""A dummy method that needs to be tested."""
return xr.DataArray(
np.full((2, 4, 3), 1),
dims=["variable", "y", "x"],
coords={
"variable": ["var1", "var2"],
"y": [1, 2, 3, 4],
"x": [1, 2, 3],
},
name=name,
attrs={"foo": "bar"},
)
Add the xarray_regression fixture to a new test and call the check method on the returned data array:
from xarray_regressions import XarrayRegressionFixture # Only used for type annotation
def test_make_dataarray(xarray_regression: XarrayRegressionFixture):
"""Test that the function always returns an identical xr.DataArray."""
da = make_dataarray(name="test_array")
xarray_regression.check(
da,
check_name=True,
check_attrs=True,
)
Running the test once will write da to a local NetCDF1, and future test runs will compare da with the stored result. Values, dimensions, and coordinates are checked using xr.testing.assert_allclose to allow for minor floating point differences between systems, but can be tested for exact equality by specifying rtol=0 and atol=0. Names and attributes are checked separately. Encodings are not currently checked.
If make_dataarray(name="test_array") returns a different result in the future, the test will fail:
AssertionError: DataArray names are different. L: foo, R: test_array
Testing multiple objects
To test multiple objects in the same test, you can pass an obj_id argument to the check method. This will be appended to the basename (by default, the name of the test) so that each object is saved to a separate file.
def test_make_dataarray(xarray_regression: XarrayRegressionFixture):
"""Test that the function always returns an identical xr.DataArray."""
da1 = make_dataarray(name="test_array_1")
da2 = make_dataarray(name="test_array_2")
xarray_regression.check(da1, obj_id="da1", check_name=True)
xarray_regression.check(da2, obj_id="da2", check_name=True)
When adding new tests with multiple objects, the --regen-all flag can be helpful to avoid pytest-regressions aborting on the first missing file.
-
Because results are stored in NetCDF, all tested objects must be serializable. ↩
Metadata
Release files for xarray-regressions 0.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xarray_regressions-0.0.3.tar.gz | 48.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xarray_regressions-0.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 54.5 kB
Release files / xarray_regressions-0.0.3.tar.gz
| Download URL | xarray_regressions-0.0.3.tar.gz |
|---|---|
| Size | 48.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b989b81f80f6e05aa2952d27cda44fb21970acda8dae4159b9c706a68135d42a
|
|
BLAKE2b-256 checksum How to use checksums |
825b8f51036464398f5f55f8e20dee6a4b57791fb3080650cac5aca105c9a9da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 30, 2025.
Transparency logRelease files / xarray_regressions-0.0.3-py3-none-any.whl
| Download URL | xarray_regressions-0.0.3-py3-none-any.whl |
|---|---|
| Size | 6.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
752e00b340680c26428a625df2daa66a676b5d2386358a724026912eaaafda03
|
|
BLAKE2b-256 checksum How to use checksums |
93f03b681f530bd9f38cd32ed7a9233f7ac9a2278672ea4cd0582d90b8fa2a44
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 30, 2025.
Transparency log