Summary
The diagnostics and formulas optional-dependency groups pin arviz>=0.17, but quivers.diagnostics is written against the ArviZ 1.x API. The 1.x rewrite replaced the legacy InferenceData with an xarray.DataTree. On any arviz in [0.17, 1.0) the diagnostics code returns/consumes the wrong container type.
Evidence
pyproject.toml:
diagnostics = [ "arviz>=0.17", "xarray>=2025.1", "netcdf4>=1.7" ]
formulas = [ ..., "arviz>=0.17", "xarray>=2025.1", "netcdf4>=1.7", "formulae>=0.6" ]
src/quivers/diagnostics/arviz_io.py returns xr.DataTree and its docstring states it is "the ArviZ 1.x replacement for the legacy InferenceData container"; comparison.py / predictive_checks.py call az.compare, az.loo, az.loo_pit with the 1.x DataTree contract. On arviz 0.17-0.x, az.from_dict(...) returns InferenceData, not DataTree, and idata.children / DataTree group access does not exist.
Verified working version
The shipped Docker image has arviz 1.2.0, and the full path (to_datatree -> az.loo) works there. The problem is only the declared floor.
Expected
Bump the floor to the first ArviZ release that ships the DataTree API (arviz>=1.0, likely >=1.2), in both the diagnostics and formulas extras.
Summary
The
diagnosticsandformulasoptional-dependency groups pinarviz>=0.17, butquivers.diagnosticsis written against the ArviZ 1.x API. The 1.x rewrite replaced the legacyInferenceDatawith anxarray.DataTree. On anyarvizin[0.17, 1.0)the diagnostics code returns/consumes the wrong container type.Evidence
pyproject.toml:src/quivers/diagnostics/arviz_io.pyreturnsxr.DataTreeand its docstring states it is "the ArviZ 1.x replacement for the legacyInferenceDatacontainer";comparison.py/predictive_checks.pycallaz.compare,az.loo,az.loo_pitwith the 1.x DataTree contract. Onarviz0.17-0.x,az.from_dict(...)returnsInferenceData, notDataTree, andidata.children/ DataTree group access does not exist.Verified working version
The shipped Docker image has
arviz 1.2.0, and the full path (to_datatree->az.loo) works there. The problem is only the declared floor.Expected
Bump the floor to the first ArviZ release that ships the
DataTreeAPI (arviz>=1.0, likely>=1.2), in both thediagnosticsandformulasextras.