v3.5 (27 Apr 2023)#
This document explains the changes made to Iris for this release (View all changes.)
v3.5 Release Highlights
The highlights for this major/minor release of Iris include:
We added support for plugins.
We allowed the usage of Iris objects as weights for cube aggregations.
We made Iris’ use of the netCDF4 library thread-safe.
We improved performance by changing the netCDF loader to fetch data immediately from small netCDF. variables, instead of creating a dask array.
We added notes within docstrings clarifying whether operations maintain lazy data or not.
We’re so proud to fully support @ed-hawkins and #ShowYourStripes ❤️
And finally, get in touch with us on GitHub if you have any issues or feature requests for improving Iris. Enjoy!
📢 Announcements#
Congratulations to @ESadek-MO who has become a core developer for Iris! 🎉
Welcome and congratulations to @HGWright, @scottrobinson02 and @agriyakhetarpal who made their first contributions to Iris! 🎉
✨ Features#
@bsherratt added support for plugins - see the corresponding documentation page for further information. (PR #5144)
@rcomer enabled lazy evaluation of
RMS
calculations with weights. (PR #5017)@schlunma allowed the usage of cubes, coordinates, cell measures, or ancillary variables as weights for cube aggregations (
iris.cube.Cube.collapsed()
,iris.cube.Cube.aggregated_by()
, andiris.cube.Cube.rolling_window()
). This automatically adapts cube units if necessary. (PR #5084)@lbdreyer and @trexfeathers (reviewer) added
iris.plot.hist()
andiris.quickplot.hist()
. (PR #5189)@tinyendian edited
rotate_winds()
to enable lazy computation of rotated wind vector components (Issue #4934, PR #4972)@ESadek-MO updated to the latest CF Standard Names Table v80 (07 February 2023). (PR #5244)
🐛 Bugs Fixed#
@schlunma fixed
iris.cube.CubeList.concatenate()
so that it preserves derived coordinates. (Issue #2478, PR #5096)@trexfeathers and @pp-mo made Iris’ use of the netCDF4 library thread-safe. (PR #5095)
@ESadek-MO removed check and error raise for saving cubes with masked
iris.coords.CellMeasure
. (Issue #5147, PR #5181)@scottrobinson02 fixed
iris.util.new_axis
creating an anonymous new dimension, when the scalar coord provided is already a dim coord. (Issue #4415, PR #5194)@HGWright and @trexfeathers (reviewer) changed the way
CellMethod
are printed to be more CF compliant. (PR #5224)@stephenworsley fixed the way discontiguities were discovered for 2D coords. Previously, the only bounds being compared were the bottom right bound in one cell with the bottom left bound in the cell to its right, and the top left bound in a cell with the bottom left bound in the cell above it. Now all bounds are compared with all adjacent bounds from neighbouring cells. This affects
is_contiguous()
andiris.util.find_discontiguities()
where additional discontiguities may be detected which previously were not.
💣 Incompatible Changes#
N/A
🚀 Performance Enhancements#
🔥 Deprecations#
N/A
🔗 Dependencies#
@trexfeathers introduced the
libnetcdf <4.9
pin. (PR #5242)
📚 Documentation#
@rcomer clarified instructions for updating gallery tests. (PR #5100)
@tkknight unpinned
pydata-sphinx-theme
and set the default to use the light version (not dark) while we make the docs dark mode friendly (PR #5129)@jonseddon updated the citation to a more recent version of Iris. (PR #5116)
@rcomer linked the
PERCENTILE
aggregator from theMEDIAN
docstring, noting that the former handles lazy data. (PR #5128)@trexfeathers updated the WSL link to Microsoft’s latest documentation, and removed an ECMWF link in the
v1.0
What’s New that was failing the linkcheck CI. (PR #5109)@trexfeathers added a new top-level Iris in the Community section, as a one-stop place to find out about getting involved, and how we relate to other projects. (PR #5025)
The Iris community, with help from the Xarray community, produced the Iris ❤️ Xarray page, highlighting the similarities and differences between the two packages. (PR #5025)
@bjlittle added a new section to the README.md to show our support for the outstanding work of @ed-hawkins et al for #ShowYourStripes. (PR #5141)
@Esadek-MO added notes to function docstrings to to clarify if the function preserves laziness or not. (PR #5137)
💼 Internal#
@bouweandela and @trexfeathers (reviewer) modernized and simplified the code of
iris.analysis._Groupby
. (PR #5015)@fnattino changed the order of
ncgen
arguments in the command to create NetCDF files for testing (caused errors on OS X). (PR #5105)@rcomer removed some old infrastructure that printed test timings. (PR #5101)
@lbdreyer and @trexfeathers (reviewer) added coverage testing. This can be enabled by using the “–coverage” flag when running the tests with nox i.e.
nox --session tests -- --coverage
. (PR #4765)@lbdreyer and @trexfeathers (reviewer) removed the
--coding-tests
option from Iris’ test runner. (PR #4765)@lbdreyer removed the Iris TestRunner. Tests are now run via nox or pytest. (PR #5205)
@agriyakhetarpal and @trexfeathers prevented the GitHub action for publishing releases to PyPI from running in forks. (PR #5220, PR #5248)
@trexfeathers moved the benchmark runner conveniences from
noxfile.py
to a dedicatedbenchmarks/bm_runner.py
. (PR #5215)@bjlittle follow-up to PR #4972, enforced
dask>=2022.09.0
minimum pin for first use of dask.array.ma.empty_like and replaced @tinyendian workaround. (PR #5225)@HGWright, @bjlittle and @trexfeathers removed the legacy pin for
numpy
array printing and replaced the test results files to match defaultnumpy
output. (PR #5235)