Releases: pydata/xarray
v2025.06.1
This is quick bugfix release to remove an unintended dependency on typing_extensions
. Apologies for the trouble.
What's Changed
- Guard typing_extension import by @sjperkins in #10413
- (fix): disallow
NumpyExtensionArray
by @ilan-gold in #10334 - (fix):
ndim
accessible asnp.ndim
onPandasExtensionArray
by @ilan-gold in #10414 - Up-to-date instructions for reading & writing to Zarr with Xarray by @alxmrs in #10410
- Release 2025.06.1 by @dcherian in #10416
New Contributors
Full Changelog: v2025.06.0...v2025.06.1
v2025.06.0
This release brings HTML reprs to the documentation, fixes to flexible Xarray indexes, performance optimizations, more ergonomic seasonal grouping and resampling
with new SeasonGrouper and SeasonResampler objects, and bugfixes.
Thanks to the 33 contributors to this release:
Andrecho, Antoine Gibek, Benoit Bovy, Brian Michell, Christine P. Chai, David Huard, Davis Bennett, Deepak Cherian, Dimitri Papadopoulos Orfanos, Elliott Sales de Andrade, Erik, Erik MΓ₯nsson, Giacomo Caria, Ilan Gold, Illviljan, Jesse Rusak, Jonathan Neuhauser, Justus Magin, Kai MΓΌhlbauer, Kimoon Han, Konstantin Ntokas, Mark Harfouche, Michael Niklas, Nick Hodgskin, Niko Sirmpilatze, Pascal Bourgault, Scott Henderson, Simon Perkins, Spencer Clark, Tom Vo, Trevor James Smith, joseph nowak and micguerr-bopen
What's Changed
- Add
xarray-lmfit
extension for curve fitting to ecosystem documentation by @kmnhan in #10262 - Rename Twitter to X by @star1327p in #10283
- Add public typing.py module by @micguerr-bopen in #10215
- Adding xarray-eopf to ecosystem.rst by @konstntokas in #10289
- Add redirect for contributing guide by @scottyhq in #10282
- Add Index.should_add_coord_to_array by @benbovy in #10137
- Fix for scalar detection by @huard in #8821
- DOC: Remove reference to
absolufy-imports
from contributing guide by @VeckoTheGecko in #10290 - Do not rely on np.broadcast_to to perform trivial dimension insertion by @hmaarrfk in #10277
- (fix): remove
PandasExtensionArray
from repr by @ilan-gold in #10291 - Add SeasonGrouper, SeasonResampler by @dcherian in #9524
- dev whats-new by @dcherian in #10294
- Add back getattr for ExtensionArrays by @dcherian in #10278
- (fix): allow upcasting of nans in
as_shared_dtype
for extension arrays by @ilan-gold in #10292 - Fix BinGrouper when labels is not specified by @dcherian in #10295
- (fix): numeric
arrow
dtype deep copies by @ilan-gold in #10315 - Fix rolling mean on bool arrays by @gcaria in #10319
- Alignment of n-dimensional indexes with partially excluded dims by @benbovy in #10293
- FIX: prevent unnecessary type casts in rolling mean by @kmuehlbauer in #10341
- Remove
"Y"
and"M"
fromDatetimeUnitOptions
by @spencerkclark in #10306 - fix roundtripping zero-size timedelta arrays by @kmuehlbauer in #10313
- Implement literal
np.timedelta64
coding by @spencerkclark in #10101 - Set
.conjugate
as alias of.conj
, #10302 by @joneuhauser in #10303 - Fix setuptools deprecation warnings by @gcaria in #10300
- The URL in CONTRIBUTING.md was broken and didn't automatically redirect. by @erik-mansson in #10351
- Disallow standard calendar
np.datetime64
encoding prior to reform by @spencerkclark in #10352 - Docs: User Guide for Complex Numbers by @andrewendlinger in #10235
- Avoid copying vectorized indexes by @jder in #10316
- apply_ufunc: don't modify attrs on input variables by @erik-mansson in #10330
- ruff: default rule set by @DimitriPapadopoulos in #10360
- Fix "a array" misspelling by @DimitriPapadopoulos in #10365
- Apply assorted ruff/flake8-pytest-style rules (PT) by @DimitriPapadopoulos in #10363
- Apply assorted ruff/flake8-simplify rules (SIM) by @DimitriPapadopoulos in #10364
- Ignore ruff/Pyflakes rule F401 more precisely by @DimitriPapadopoulos in #10369
- Enforce ruff/refurb rules (FURB) by @DimitriPapadopoulos in #10367
- Enforce ruff/flake8-implicit-str-concat rules (ISC) by @DimitriPapadopoulos in #10368
- (fix): pandas extension array repr for int64[pyarrow] by @ilan-gold in #10317
- Apply assorted ruff/Pylint rules (PL) / Enforce PLE rules by @DimitriPapadopoulos in #10366
- Enforce ruff/flake8-pyi rules (PYI) by @DimitriPapadopoulos in #10359
- Implement cftime vectorization as discussed in PR #8322 by @antscloud in #8324
- Fix doc typo for caption "Interoperability" by @tomvothecoder in #10374
- use numpy dtype exposed by zarr array instead of metadata.data_type by @d-v-b in #10348
- Pin Mypy to 1.15 by @kmuehlbauer in #10378
- Improve html repr in dark mode (Jupyterlab + Xarray docs) by @benbovy in #10353
- Add missing AbstractWritableDataStore base methods and arguments by @sjperkins in #10343
- Enforce ruff/flynt rules (FLY) by @DimitriPapadopoulos in #10375
- Docs: Add links to getting help mermaid diagram by @scottyhq in #10324
- Grouper tweaks. by @dcherian in #10362
- html repr: improve style for dropdown sections by @benbovy in #10354
- Fix performance regression in interp from #9881 by @dcherian in #10370
- Avoid unsafe casts from float to unsigned int by @QuLogic in #9964
- DOC: Update link to Cartopy reference by @star1327p in #10386
- Update a link in ROMS_ocean_model.ipynb by @star1327p in #10394
- Automatic Dask-Zarr chunk alignment by @josephnowak in #10336
- added movement to Xarray related projects by @niksirbi in #10403
- Update concat for multi-variable indexes. by @dcherian in #10371
- Switch docs to jupyter-execute sphinx extension for HTML reprs by @scottyhq in #10383
- Adds chunk key encoding to kwargs passed to zarr by @BrianMichell in #10274
- Release v2025.06.0 by @dcherian in #10406
New Contributors
- @kmnhan made their first contribution in #10262
- @star1327p made their first contribution in #10283
- @micguerr-bopen made their first contribution in #10215
- @konstntokas made their first contribution in #10289
- @joneuhauser made their first contribution in #10303
- @erik-mansson made their first contribution in #10351
- @jder made their first contribution in #10316
- @sjperkins made their first contribution in #10343
- @niksirbi made their first contribution in #10403
- @BrianMichell made their first contribution in #10274
Full Changelog: v2025.04.0...v2025.06.0
v2025.04.0
This release brings bug fixes, better support for extension arrays including returning a
pandas.IntervalArray
from groupby_bins
, and performance improvements.
Thanks to the 24 contributors to this release:
Alban Farchi, Andrecho, Benoit Bovy, Deepak Cherian, Dimitri Papadopoulos Orfanos, Florian Jetter, Giacomo Caria, Ilan Gold, Illviljan, Joren Hammudoglu, Julia Signell, Kai Muehlbauer, Kai MΓΌhlbauer, Mathias Hauser, Mattia Almansi, Michael Sumner, Miguel Jimenez, Nick Hodgskin (π¦ Vecko), Pascal Bourgault, Philip Chmielowiec, Scott Henderson, Spencer Clark, Stephan Hoyer and Tom Nicholas
What's Changed
- Add new whats-new section by @dcherian in #10190
- DOC: Remove mention of netcdf pypi package by @VeckoTheGecko in #10197
- Apply ruff preview rule RUF046 by @DimitriPapadopoulos in #10199
- Fix sparse dask repr test by @dcherian in #10200
- add
scipy-stubs
as extra[types]
dependency by @jorenham in #10202 - Fix references to core classes in docs by @malmans2 in #10207
- Fixes dimension order in
xarray.Dataset.to_stacked_array
by @aFarchi in #10205 - CI: Automatic PR labelling is back by @VeckoTheGecko in #10201
- Add datatree repr asv by @Illviljan in #10214
DatasetView.map
fixkeep_attrs
by @mathause in #10219- Fix broken Sphinx Roles by @philipc2 in #10225
- Fix doctests by @jsignell in #10230
- Fix mypy failures on main by @jsignell in #10232
- Add RangeIndex by @benbovy in #10076
- opendap / dap4 support for pydap backend by @Mikejmnez in #10182
- Fix: Docs generation create temporary files that are not cleaned up. by @andrewendlinger in #10238
- Remove
test_dask_layers_and_dependencies
by @fjetter in #10242 - Fix mypy, min-versions CI, xfail Zarr tests by @dcherian in #10255
- Switch documentation to pydata-sphinx-theme by @TomNicholas in #8708
- Support extension array indexes by @ilan-gold in #9671
- Update how-to-add-new-backend.rst by @mdsumner in #10240
- Improve alignment checks by @benbovy in #10251
- Avoid stacking when grouping by chunked array by @dcherian in #10254
- BinGrouper: Support setting labels when provided with IntervalIndex by @dcherian in #10259
- Fix infinite recursion when calling
np.fix
by @gcaria in #10248 - Fix benchmarks runners by @dcherian in #10265
- Shorten text repr for
DataTree
by @jsignell in #10139 - Fix reduction by subset of grouper dimensions by @dcherian in #10258
- BinGrouper: reduce indirection by @dcherian in #10270
- Fix convert calendar on non-temporal data in datasets by @aulemahal in #10268
- add return_scalar=False as array_wrap kwarg by @gcaria in #10264
- GroupBy: Finish eagerly_compute_group deprecation by @dcherian in #10253
- (fix): remove
_getattr__
method forPandasExtensionArray
by @ilan-gold in #10250 - Release notes for 2025.04.0 by @dcherian in #10272
New Contributors
- @jorenham made their first contribution in #10202
- @aFarchi made their first contribution in #10205
- @mdsumner made their first contribution in #10240
Full Changelog: v2025.03.1...v2025.04.0
v2025.03.1
This release brings the ability to specify fill_value
and write_empty_chunks
for Zarr V3 stores, and a few bug fixes.
Thanks to the 10 contributors to this release:
Andrecho, Deepak Cherian, Ian Hunt-Isaak, Karl Krauth, Mathias Hauser, Maximilian Roos, Nick Hodgskin (π¦ Vecko), Spencer Clark, Tom Nicholas and wpbonelli.
What's Changed
- Add dev whats-new by @dcherian in #10152
- Fix GitHub Actions badge in README by @spencerkclark in #10155
- Forbid datatree to zarr append dim by @TomNicholas in #10156
- Fix numpy advanced indexing docs link by @wpbonelli in #10160
- Update DataArray.to_zarr to match Dataset.to_zarr. by @Karl-Krauth in #10164
- Preserve label ordering for multi-variable GroupBy by @dcherian in #10151
- Move chunks-related functions to a new file by @max-sixty in #10172
- Move fit computation code to dedicated new file by @max-sixty in #10174
- Fix GroupBy first, last with flox by @dcherian in #10173
- Allow setting
fill_value
on Zarr format 3 arrays by @dcherian in #10161 - DataTree: sel & isel add error context by @mathause in #10154
- DOC: Update docstring to reflect renamed section (modifying Zarr stores) by @VeckoTheGecko in #10180
- Use explicit repo name in upstream wheels by @ianhi in #10181
- Fix: Correct axis labelling with units for FacetGrid plots by @andrewendlinger in #10185
- Vendor pandas to xarray conversion tests by @dcherian in #10187
- Support zarr
write_empty_chunks
for zarr-python 3 and up by @ianhi in #10177 - release 2025.03.1 by @dcherian in #10188
New Contributors
- @wpbonelli made their first contribution in #10160
- @andrewendlinger made their first contribution in #10185
Full Changelog: v2025.03.0...v2025.03.1
v2025.03.0
This release brings tested support for Python 3.13, support for reading Zarr V3 datasets into a :py:class:~xarray.DataTree
,
significant improvements to datetime & timedelta encoding/decoding, and improvements to the :py:class:~xarray.DataTree
API;
in addition to the usual bug fixes and other improvements.
Thanks to the 26 contributors to this release:
Alfonso Ladino, Benoit Bovy, Chuck Daniels, Deepak Cherian, Eni, Florian Jetter, Ian Hunt-Isaak, Jan, Joe Hamman, Josh Kihm, Julia Signell, Justus Magin, Kai MΓΌhlbauer, Kobe Vandelanotte, Mathias Hauser, Max Jones, Maximilian Roos, Oliver Watt-Meyer, Sam Levang, Sander van Rijn, Spencer Clark, Stephan Hoyer, Tom Nicholas, Tom White, Vecko and maddogghoek
What's Changed
- add new section in whats-new.rst by @kmuehlbauer in #10011
- spelling fix: possibilites -> possibilities by @shoyer in #10023
- Duck array ops for
all
andany
by @tomwhite in #9883 map_over_datasets
: fix error message for wrong result type by @mathause in #10016- Use resolution-dependent default units for lazy time encoding by @spencerkclark in #10017
- DOC: Fix 404 on Cubed's documentation by @VeckoTheGecko in #10029
- use mean of min/max years as offset in calculation of datetime64 mean by @kmuehlbauer in #10035
- Fix dataarray drop attrs by @j-haacker in #10030
- Start splitting up
dataset.py
by @max-sixty in #10039 - Upgrade mypy to 1.15 by @max-sixty in #10041
- implement map_over_datasets kwargs by @kmuehlbauer in #10012
- run CI on
python=3.13
by @keewis in #9681 - Add
Coordinates.from_xindex
method (+ refactor API doc) by @benbovy in #10000 - Add types stubs to optional dependencies by @max-sixty in #10048
- Flexible coordinate transform by @benbovy in #9543
- More precisely type
pipe
methods by @chuckwondo in #10038 - Default to phony_dims="access" in h5netcdf-backend by @kmuehlbauer in #10058
- More permissive Index typing by @benbovy in #10067
- Restrict fastpath isel indexes to the case of all PandasIndex by @benbovy in #10066
- deprecate cftime_range() in favor of date_range(use_cftime=True) by @Maddogghoek in #10024
- Generalize lazy backend indexing a little more by @dcherian in #10078
- Another reduction in the size of
dataset.py
by @max-sixty in #10088 - Prune data tree for Isomorphic operations by @kobebryant432 in #10097
- Skip failing array api test. by @dcherian in #10102
- Pass node path to tokenize in
open_datatree
by @slevang in #10100 - Fix false timedelta decoding
SerializationWarning
and improve warning message by @spencerkclark in #10072 - Add typos check to pre-commit hooks by @max-sixty in #10040
- Ensure KeyError raised for zarr datasets missing dim names by @oliverwm1 in #10025
- Improve handling of dtype and NaT when encoding/decoding masked and packaged datetimes and timedeltas by @kmuehlbauer in #10050
- fix and supress some test warnings by @mathause in #10104
- Update asv badge url in README.md by @sjvrijn in #10113
- Fix broken Zarr test by @dcherian in #10109
- Pin pandas stubs by @jsignell in #10119
- Use
to_numpy
in time decoding by @dcherian in #10081 - explicitly cast the dtype of
where
's condition parameter tobool
by @keewis in #10087 - Better
uv
compatibility by @max-sixty in #10124 - Change
python_files
inpyproject.toml
to a list by @max-sixty in #10127 - Don't skip tests when on a
mypy
branch by @max-sixty in #10129 - Fix type issues from pandas stubs by @max-sixty in #10128
- Refactor compatibility modules into xarray.compat package by @max-sixty in #10131
- Refactor modules from
core
intoxarray.computation
by @max-sixty in #10132 - Split
apply_ufunc
out ofcomputation.py
by @max-sixty in #10133 - Refactor concat / combine / merge into
xarray/structure
by @max-sixty in #10134 - Fix test_distributed::test_async by @fjetter in #10138
- Refactor datetime and timedelta encoding for increased robustness by @spencerkclark in #9498
- [docs]
DataTree
cannot be constructed fromDataArray
by @mathause in #10142 - Fix
open_datatree
whendecode_cf=False
by @ianhi in #10141 - Fix version in requires_zarr_v3 fixture by @TomNicholas in #10145
- Adds open_datatree and load_datatree to the tutorial module by @eni-awowale in #10082
- Update flaky pydap test by @dcherian in #10149
- Use flox for grouped first, last. by @dcherian in #10148
- Refactor calendar fixtures by @dcherian in #10150
- Refactoring/fixing zarr-pyhton v3 incompatibilities in xarray datatrees by @aladinor in #10020
- Release 2025.03.0 by @dcherian in #10143
New Contributors
- @j-haacker made their first contribution in #10030
- @chuckwondo made their first contribution in #10038
- @Maddogghoek made their first contribution in #10024
- @kobebryant432 made their first contribution in #10097
- @oliverwm1 made their first contribution in #10025
- @ianhi made their first contribution in #10141
Full Changelog: v2025.01.2...v2025.03.0
v2025.01.2
This release brings non-nanosecond datetime and timedelta resolution to xarray, sharded reading in zarr, suggestion of correct names when trying to access non-existent data variables and bug fixes!
Thanks to the 16 contributors to this release: Deepak Cherian, Elliott Sales de Andrade, Jacob Prince-Bieker, Jimmy Westling, Joe Hamman, Joseph Nowak, Justus Magin, Kai MΓΌhlbauer, Mattia Almansi, Michael Niklas, Roelof Rietbroek, Salaheddine EL FARISSI, Sam Levang, Spencer Clark, Stephan Hoyer and Tom Nicholas
What's Changed
- dev whats-new by @dcherian in #9936
- Remove outdated quantile test. by @dcherian in #9945
- Relax nanosecond datetime restriction in CF time decoding by @kmuehlbauer in #9618
- fix upstream dev issues by @kmuehlbauer in #9953
- Suggest the correct name when no key matches in the dataset by @Illviljan in #9943
- cast type to PDDatetimeUnitOptions by @kmuehlbauer in #9963
- Update time coding tests to assert exact equality by @spencerkclark in #9961
- remove dask-expr from CI runs, fix related tests by @kmuehlbauer in #9971
- Use zarr-fixture to prevent thread leakage errors by @kmuehlbauer in #9967
- fix weighted polyfit for arrays with more than 2 dimensions by @malmans2 in #9974
- Fix test_doc_example on big-endian systems by @QuLogic in #9949
- Remove unnecessary a article by @salahelfarissi in #9980
- Fix some typing by @dcherian in #9988
- Use flox for grouped first, last by @dcherian in #9986
- Add
shards
tovalid_encodings
to enable sharded Zarr writing by @jacobbieker in #9948 - Add shxarray to the xarray ecosystem list by @strawpants in #9995
- Remove repetitive that (replace it with the) by @salahelfarissi in #9994
- Enable
DataTree.to_zarr(compute=False)
by @slevang in #9958 - Add
time_unit
argument toCFTimeIndex.to_datetimeindex
by @spencerkclark in #9965 - fix mean for datetime-like using the respective time resolution unit by @kmuehlbauer in #9977
- Enable passing a
CFTimedeltaCoder
todecode_timedelta
by @spencerkclark in #9966 - Revert "Use flox for grouped first, last (#9986)" by @dcherian in #10001
- Fix infer_freq, check for subdtype "datetime64"/"timedelta64" by @kmuehlbauer in #9999
- Migrate Zarr region="auto" tests to a class by @dcherian in #9990
- Fix the push method when the limit parameter is bigger than the chunk⦠by @josephnowak in #9940
- Use
freq="D"
instead offreq="d"
inpd.timedelta_range
by @spencerkclark in #10004 - cast
numpy
scalars to arrays inNamedArray.from_array
by @keewis in #10008 - remove outdated type-ignores by @kmuehlbauer in #10006
- Preserve order of variables in combine_by_coords by @kmuehlbauer in #9070
- Add FAQ answer about API stability & backwards compatibility by @TomNicholas in #9855
- release notes: 2025.01.2 by @kmuehlbauer in #10007
New Contributors
- @salahelfarissi made their first contribution in #9980
- @jacobbieker made their first contribution in #9948
- @strawpants made their first contribution in #9995
Full Changelog: v2025.01.1...v2025.01.2
v2025.01.1
This is a quick release to bring compatibility with the Zarr V3 release. It also includes an update to the time decoding
infrastructure as a step toward enabling non-nanosecond datetime support.
What's Changed
- split out CFDatetimeCoder, deprecate use_cftime as kwarg by @kmuehlbauer in #9901
- Fix zarr upstream tests by @dcherian in #9927
Full Changelog: v2025.01.0...v2025.01.1
v2025.01.0
This release brings much improved read performance with Zarr arrays (without consolidated metadata), better support for additional array types, as well as bugfixes and performance improvements.
Thanks to the 20 contributors to this release:
Bruce Merry, Davis Bennett, Deepak Cherian, Dimitri Papadopoulos Orfanos, Florian Jetter, Illviljan, Janukan Sivajeyan, Justus Magin, Kai Germaschewski, Kai MΓΌhlbauer, Max Jones, Maximilian Roos, Michael Niklas, Patrick Peglar, Sam Levang, Scott Huberty, Spencer Clark, Stephan Hoyer, Tom Nicholas and Vecko
What's Changed
- Add blank What's New by @Illviljan in #9817
- Upgrade ruff to 0.8.0 by @DimitriPapadopoulos in #9816
- Improved duck array wrapping by @slevang in #9798
- Use compute instead of load in plot by @Illviljan in #9818
- Described default centre argument behaviour in rolling functions by @JanukanS in #9819
- Fix type annotations for
get_axis_num
(GH 9822) by @bmerry in #9827 - Test type annotations for Variable.get_axis_num by @bmerry in #9832
- FIX: gracfully handle missing seaborn dependency by @scott-huberty in #9835
- move ensure_dtype_not_object from conventions to backends by @kmuehlbauer in #9828
- Fixed function links in dataarray.py and dataset.py by @JanukanS in #9850
- Fix seed for random test data. by @dcherian in #9844
- Set
zarr_format
forzarr.consolidate_metadata
by @dcherian in #9848 - Reference ncdata in docs. by @pp-mo in #9847
- Add Pyproject pre-commit hooks by @VeckoTheGecko in #9840
- dask tests: Avoid check for non-copies, xfail pandas comparison by @dcherian in #9857
- Avoid local functions in push by @fjetter in #9856
- Add token to codecov by @max-sixty in #9865
- Remove deprecated behavior for non-dim positional args by @max-sixty in #9864
- Fix/silence upstream tests by @dcherian in #9879
- finalize deprecation of "closed"-parameter by @kmuehlbauer in #9882
- Fix upstream Zarr compatibility by @dcherian in #9884
- Fix interpolation when non-numeric coords are present. by @dcherian in #9887
- Use integers instead of randint by @Illviljan in #9889
- Add "unit"-parameter to date_range, enhance iso time parser to us by @kmuehlbauer in #9885
- Add missing DataTree attributes to docs by @maxrjones in #9876
- move scalar-handling logic into
possibly_convert_objects
by @kmuehlbauer in #9900 - remove unused "type: ignore" comments in test_plot.py by @kmuehlbauer in #9904
- Optimize idxmin, idxmax with dask by @dcherian in #9800
- Cache pre-existing Zarr arrays in Zarr backend by @d-v-b in #9861
- Explicitly configure ReadTheDocs build to use conf.py by @shoyer in #9908
- Skip dask rolling by @Illviljan in #9909
- Rewrite interp to use
apply_ufunc
by @dcherian in #9881 - friendlier error messages for missing chunk managers by @keewis in #9676
- Edit serialization error message by @VeckoTheGecko in #9916
- Enhance and move ISO-8601 parser to coding.times by @kmuehlbauer in #9899
- fix warning from scipy backend guess_can_open on directory by @germasch in #9911
- time coding refactor by @kmuehlbauer in #9906
- Whats-new 2025.01.0 by @dcherian in #9919
New Contributors
- @JanukanS made their first contribution in #9819
- @bmerry made their first contribution in #9827
- @pp-mo made their first contribution in #9847
- @fjetter made their first contribution in #9856
- @d-v-b made their first contribution in #9861
- @germasch made their first contribution in #9911
Full Changelog: v2024.11.0...v2025.01.0
v2024.11.0
What's Changed
- New blank whatsnew after v2024.10.0 by @TomNicholas in #9679
- Fix inadvertent deep-copying of child data in DataTree by @shoyer in #9684
- Raise
ValueError
for unmatching chunks length inDataArray.chunk()
by @lkstrp in #9689 - Typing annotations for arithmetic overrides (e.g., DataArray + Dataset) by @shoyer in #9688
- Add
DataTree.persist
by @slevang in #9682 - Use the same function to floatize coords in polyfit and polyval by @aulemahal in #9691
- Refactor out utility functions from to_zarr by @dcherian in #9695
- update mypy to 1.13 by @headtr1ck in #9687
- add pydap-server dependencies to environment.yml by @kmuehlbauer in #9709
- DOC: mention attribute peculiarities in docs/docstrings by @kmuehlbauer in #9700
- GroupBy(chunked-array) by @dcherian in #9522
- Fix writing of DataTree subgroups to zarr or netCDF by @shoyer in #9677
- Add missing xarray.core.missing import by @shoyer in #9714
- Fix groupby tests by @dcherian in #9716
- Move to micromamba 2 by @kmuehlbauer in #9732
- Enforce ruff/pygrep-hooks rules (PGH) by @DimitriPapadopoulos in #9729
- Apply ruff/flake8-pie rules (PIE) by @DimitriPapadopoulos in #9726
- Apply ruff/flake8-implicit-str-concat rules (ISC) by @DimitriPapadopoulos in #9722
- Apply ruff/flake8-simplify rules (SIM) by @DimitriPapadopoulos in #9727
- support for additional scipy nd interpolants by @hollymandel in #9599
- Fix typos found by codespell by @DimitriPapadopoulos in #9721
- Aplpy ruff rules (RUF) by @DimitriPapadopoulos in #9731
- chmod -x by @DimitriPapadopoulos in #9725
- Apply ruff rule RUF007 by @DimitriPapadopoulos in #9739
- Enforce ruff/Perflint rules (PERF) by @DimitriPapadopoulos in #9730
- Enforce ruff/flake8-comprehensions rules (C4) by @DimitriPapadopoulos in #9724
- Enforce ruff/flake8-pie rules (PIE) by @DimitriPapadopoulos in #9740
- MNT: use new conda-forge package pydap-server by @kmuehlbauer in #9741
- Reorganise ruff rules by @DimitriPapadopoulos in #9738
- pin array-api-strict<=2.1 by @kmuehlbauer in #9751
- Use micromamba 1.5.10 where conda is needed by @kmuehlbauer in #9737
- Apply ruff/flake8-simplify rule SIM401 by @DimitriPapadopoulos in #9749
- Discard useless
!s
conversion in f-string by @DimitriPapadopoulos in #9752 - http:// β https:// by @DimitriPapadopoulos in #9748
- Updates to Dask page in Xarray docs by @scharlottej13 in #9495
- Dispatch to Dask if nanquantile is available by @phofl in #9719
- Compress PNG files by @DimitriPapadopoulos in #9747
- Specify copyright holders in main license file by @TomNicholas in #9756
- CI runs ruff instead of pep8speaks by @DimitriPapadopoulos in #9759
- rewrite the
min_deps_check
script by @keewis in #9754 - unpin array-api-strict as issues are resolved upstream by @kmuehlbauer in #9762
- Fix html repr indexes section by @benbovy in #9768
- Use
map_overlap
for rolling reductions with Dask by @phofl in #9770 - Optimize polyfit by @dcherian in #9766
- Allow wrapping
np.ndarray
subclasses by @slevang in #9760 - fix cf decoding of grid_mapping by @kmuehlbauer in #9765
- Optimize
ffill
,bfill
with dask whenlimit
is specified by @josephnowak in #9771 - add 'User-Agent'-header to pooch.retrieve by @kmuehlbauer in #9782
- Fix open_mfdataset for list of fsspec files by @phofl in #9785
- Add download stats badges by @headtr1ck in #9786
- Buffer types by @headtr1ck in #9787
rolling.construct
: Addsliding_window_view_kwargs
to pipe arguments down tosliding_window_view
by @dcherian in #9720- Add prettier and pygrep hooks to pre-commit hooks by @Armavica in #9644
- Namespace-aware
xarray.ufuncs
by @slevang in #9776 - Bump minimum versions by @dcherian in #9796
- Soft import by @scott-huberty in #9561
- Add utility for opening remote files with
fsspec
by @jrbourbeau in #9797 - Add
GroupBy.shuffle_to_chunks()
by @dcherian in #9320 - Minor format tweak to unrecognized engine error by @jrbourbeau in #9809
- Compatibility with Zarr v3b2 by @dcherian in #9795
- Faster chunk checking for backend datasets by @dcherian in #9808
- Add note on DataTree.map_over_datasets to migration guide by @TomNicholas in #9804
- ListedColormap: don't pass N colors by @mathause in #9811
- release notes for v2024.11.0 by @dcherian in #9794
New Contributors
- @lkstrp made their first contribution in #9689
- @scharlottej13 made their first contribution in #9495
- @scott-huberty made their first contribution in #9561
Full Changelog: v2024.10.0...v2024.11.0
v2024.10.0
This release brings official support for xarray.DataTree
, and compatibility with zarr-python v3!
Aside from these two huge features, it also improves support for vectorised interpolation and fixes various bugs.
Thanks to the 31 contributors to this release:
Alfonso Ladino, DWesl, Deepak Cherian, Eni, Etienne Schalk, Holly Mandel, Ilan Gold, Illviljan, Joe Hamman, Justus Magin, Kai MΓΌhlbauer, Karl Krauth, Mark Harfouche, Martey Dodoo, Matt Savoie, Maximilian Roos, Patrick Hoefler, Peter Hill, Renat Sibgatulin, Ryan Abernathey, Spencer Clark, Stephan Hoyer, Tom Augspurger, Tom Nicholas, Vecko, Virgile Andreani, Yvonne FrΓΆhlich, carschandler, joseph nowak, mgunyho and owenlittlejohns
What's Changed
- New whatsnew section by @owenlittlejohns in #9483
- Update pyproject.toml by @TomAugspurger in #9484
open_groups
for zarr backends by @eni-awowale in #9469- Ensure TreeNode doesn't copy in-place by @TomNicholas in #9482
- Make illegal path-like variable names when constructing a DataTree from a Dataset by @etienneschalk in #9378
- DAS-2155 - Merge datatree documentation into main docs. by @owenlittlejohns in #9033
- Forbid modifying names of DataTree objects with parents by @shoyer in #9494
- Fixed formatting for whats-new.rst and added line for
open_groups
with zarr backends. by @eni-awowale in #9493 - Opt out of floor division for float dtype time encoding by @spencerkclark in #9497
- Stateful test: silence DeprecationWarning from drop_dims by @dcherian in #9508
- Turn off survey banner by @jhamman in #9512
- flox: don't set fill_value where possible by @dcherian in #9433
- Fix pandas datetime decoding with NumPy >= 2.0 for small integer dtypes by @spencerkclark in #9518
- Datatree setitem dataset by @TomNicholas in #9516
- Repo review bugbear by @Armavica in #9505
- Make _replace more lenient. by @dcherian in #9517
- Update
compat
error checking to disallow "minimal" inconcat()
by @VeckoTheGecko in #9525 - (fix):
ExtensionArray
+DataArray
roundtrip by @ilan-gold in #9520 - Improve safe chunk validation by @josephnowak in #9527
- Fix DataTree repr to not repeat inherited coordinates by @shoyer in #9532
- cast
numpy
scalars to arrays inas_compatible_data
by @keewis in #9403 - Add
.rolling_exp
onto.rolling
's 'See also' by @max-sixty in #9534 - Update array signatures with copy by @Illviljan in #9529
- Support vectorized interpolation with more scipy interpolators by @hollymandel in #9526
- Add yet an other CI for numpy 2.1 by @hmaarrfk in #9540
- Update donation links by @martey in #9549
- Remove duplicate coordinates with indexes on sub-trees by @shoyer in #9531
- Typos in pandas.rst by @carschandler in #9551
- Fix NamedArray html repr crashing by @Illviljan in #9553
- allow using
__array_function__
as a fallback for missing Array API functions by @keewis in #9530 - Revert "Improve safe chunk validation" by @shoyer in #9558
- Improve safe chunk validation by @josephnowak in #9559
- DOC/ecosystem: Fix tiny typo by @yvonnefroehlich in #9562
- bump
scientific-python/upload-nightly-action
by @keewis in #9566 - towards new h5netcdf/netcdf4 features by @kmuehlbauer in #9509
- Add missing space between sentences in error message by @shoyer in #9563
- Remove superfluous lines from pyright config by @max-sixty in #9569
- Adjust pip extra dependencies by @max-sixty in #9571
- Add numba constraint by @max-sixty in #9572
- Add
.cumulative
tocumsum
&cumprod
docstrings by @max-sixty in #9533 - Remove unneeded indentation by @max-sixty in #9574
- Disable pyright config? by @max-sixty in #9570
- Stop inheriting non-indexed coordinates for DataTree by @shoyer in #9555
- passing missing arguments when opening zarr, hdf5 and netcdft4 datatrees by @aladinor in #9428
- Remove unvetted DataTree methods by @shoyer in #9585
- Remove out of date comment on DataTree inheritance by @shoyer in #9592
- Add support for coordinate inputs in polyfit. by @Karl-Krauth in #9369
- Implement DataTree.isel and DataTree.sel by @shoyer in #9588
- Datatree deduplicate setitem by @TomNicholas in #9602
- Reimplement DataTree aggregations by @shoyer in #9589
- updating group type annotation for netcdf, hdf5, and zarr open_datatree function by @aladinor in #9614
- Rename inherited -> inherit in DataTree.to_dataset by @shoyer in #9615
- Datatree alignment docs by @TomNicholas in #9501
- pin mypy to 1.11.2 by @kmuehlbauer in #9621
- map_over_subtree -> map_over_datasets by @TomNicholas in #9622
- Reimplement Datatree typed ops by @TomNicholas in #9619
- Migration guide for users of old datatree repo by @TomNicholas in #9598
- docs(groupby): mention deprecation of
squeeze
kwarg by @Sibgatulin in #9625 - Add inherit=False option to DataTree.copy() by @shoyer in #9628
- Bug fixes for DataTree indexing and aggregation by @shoyer in #9626
- Add missing
memo
argument to DataTree.deepcopy by @shoyer in #9631 - Type check datatree tests by @TomNicholas in #9632
- Add zip_subtrees for paired iteration over DataTrees by @shoyer in #9623
- DOC: Clarify error message in open_dataarray by @DWesl in #9637
- Updates to DataTree.equals and DataTree.identical by @shoyer in #9627
- Support alternative names for the root node in DataTree.from_dict by @shoyer in #9638
- Fix error and missing code cell in io.rst by @kmuehlbauer in #9641
- Replace black and blackdoc with ruff-format by @Armavica in #9506
- fix zarr intersphinx by @shoyer in #9652
- Re-implement map_over_datasets using group_subtrees by @shoyer in #9636
- Update Datatree html repr to indicate inheritance by @TomNicholas in #9633
- flox: Properly propagate multiindex by @dcherian in #9649
- Fix multiple grouping with missing groups by @dcherian in #9650
- Change URL for pydap test by @dcherian in #9655
- Add close() method to DataTree and use it to clean-up open files in tests by @shoyer in #9651
- Reduce graph size through writing indexes directly into graph for
map_blocks
by @phofl in #9658 - Update to_dataframe doc to match current behavior by @mgunyho in #9662
- Compatibility for zarr-python 3.x by @TomAugspurger in #9552
- support
chunks
inopen_groups
andopen_datatree
by @keewis in #9660 - implement
dask
methods onDataTree
by @keewis in #9670 - fix(zarr): use inplace array.resize for zarr 2 and 3 by @jhamman in #9673
- Use zarr v3 dimension_names by @rabernat in #9669
- fixing behaviour for group parameter in
open_datatree
by @aladinor in #9666 - drop the length from
numpy
's fixed-width string dtypes by @keewis in #9586 - v2024.10.0 release summary by @TomNicholas in #9678
New Contributors
- @VeckoTheGecko made their first contribution in #9525
- @martey made their first contribution in https://github.com/pydata/...