This release extends xarray's support for custom index classes, restores support for reading netCDF3 files with SciPy, updates minimum dependencies, and fixes a number of bugs.
Thanks to the 17 contributors to this release:
Bas Nijholt, Benoit Bovy, Deepak Cherian, Dhruva Kumar Kaushal, Dimitri Papadopoulos Orfanos, Ian Hunt-Isaak, Kai Mühlbauer, Mathias Hauser, Maximilian Roos, Miguel Jimenez, Nick Hodgskin, Scott Henderson, Shuhao Cao, Spencer Clark, Stephan Hoyer, Tom Nicholas and Zsolt Cserna
What's Changed
- new whats-new section by @mathause in #10420
- Fix Pydap tests for numpy 2.3.0 changes (scalar string to unicode) by @kmuehlbauer in #10421
- Fixed color.shape != grid.shape in streamplot when nx != ny by @scaomath in #10411
- Fix
Index._repr_inline_()
signature by @benbovy in #10415 - Clean up backend indexing some more by @dcherian in #10376
- Check and fix chararray string dimension names by @kmuehlbauer in #10395
- Fix reindex on Dataset from MultiIndex DataFrame with RuntimeError by @csernazs in #10381
- Apply new ruff rules by @DimitriPapadopoulos in #10428
- BUG: Fix display with nested NumPy arrays by @basnijholt in #10222
- DOC: Add cf_xarray to ecosystem page by @VeckoTheGecko in #10443
- Expose top-level xarray.indexes in init by @dcherian in #10435
- fix assert_equal for DataTree by @mathause in #10440
- Use a set comprehension by @DimitriPapadopoulos in #10453
- Redundant list comprehension can be replaced using generator by @DimitriPapadopoulos in #10454
- Simplify chained comparison between the operands by @DimitriPapadopoulos in #10447
- Unassigned string statement by @DimitriPapadopoulos in #10452
- Iterate the dictionary directly instead of calling
.keys()
by @DimitriPapadopoulos in #10451 - Unnecessary tuple/list literal by @DimitriPapadopoulos in #10450
- Unreachable code by @DimitriPapadopoulos in #10449
- Appending to dictionary immediately following its definition by @DimitriPapadopoulos in #10448
- Exceptions are overlapping by @DimitriPapadopoulos in #10446
- Enforce ruff/Pylint Warnings (PLW) by @DimitriPapadopoulos in #10458
- Update pre-commit hook pre-commit by @DimitriPapadopoulos in #10461
- Enforce ruff/Pylint Refactor rules (PLR) by @DimitriPapadopoulos in #10459
- Enforce ruff/Pylint Convention rules (PLC) by @DimitriPapadopoulos in #10460
- Switch to using the NumFOCUS Code of Conduct by @shoyer in #10432
- More Pylint issues by @DimitriPapadopoulos in #10463
- More f-strings, less format() by @DimitriPapadopoulos in #10474
- Enforce ruff/flake8-2020 rules (YTT) by @DimitriPapadopoulos in #10467
- assert_equal: ensure check_dim_order=False works for DataTree by @mathause in #10442
- Keyword argument passed twice by @DimitriPapadopoulos in #10473
- Branches of the
if
statement have similar implementation by @DimitriPapadopoulos in #10475 - Enforce ruff/flake8-simplify rules (SIM) by @DimitriPapadopoulos in #10462
- Apply assorted ruff preview rules by @DimitriPapadopoulos in #10465
- Revert "Enforce ruff/flake8-simplify rules (SIM)" by @max-sixty in #10476
- Fix RangeIndex slicing by @benbovy in #10471
- Update error message regex for latest Zarr by @dcherian in #10485
- update dependencies; drop python 3.10 by @dhruvak001 in #10438
- Fix critical
np.timedelta64
encoding bugs by @spencerkclark in #10469 - Prevent pydap (dap4) to change string arrays to unicode type (testing). Fixed upstream by @Mikejmnez in #10482
- Downgrade zarr requests performance expectations for zarr 3.0.9 by @TomNicholas in #10491
- Use add_note() to annotate exceptions when encoding fails by @shoyer in #10464
- Check if zarr store supports consolidated metadata by @TomNicholas in #10457
- Fix Zarr 'number of requests' test by @ianhi in #10492
- Rename toplevel header from Contribute to Development by @scottyhq in #10472
- Release workflows: always check that the built dist is valid. by @dcherian in #10408
- Fix bug with
ci/release_contributors.py
script by @TomNicholas in #10494 - Release notes for v2025.07.0 by @TomNicholas in #10495
New Contributors
- @scaomath made their first contribution in #10411
- @csernazs made their first contribution in #10381
- @basnijholt made their first contribution in #10222
- @dhruvak001 made their first contribution in #10438
Full Changelog: v2025.06.1...v2025.07.0