v3.13.0.dev102 (14 Jul 2025) [unreleased]#
This document explains the changes made to Iris for this release (View all changes.)
v3.13.0.dev102 Release Highlights
The highlights for this major/minor release of Iris include:
N/A
And finally, get in touch with us on GitHub if you have any issues or feature requests for improving Iris. Enjoy!
📢 Announcements#
✨ Features#
@trexfeathers and @ukmo-ccbunney extended the
iris.loading.LOAD_PROBLEMS
capturing to all NetCDF objects that are added to aCube
during loading, as well as a selection of other objects such asCoordSystem
. Note this includes an improvement to howDimCoord
is ‘gracefully’ converted toAuxCoord
if it is masked - the mask is now preserved when it was not previously. See also: Load Problems. (PR #6465, PR #6529)@ESadek-MO made MeshCoords immutable.
iris.MeshCoord`s are now updated automatically when changing the attached mesh. All changes to the :class:`iris.MeshCoord
should instead be done to the relevantiris.Coord
located on the attachediris.MeshXY
. This change also affects the behaviour when callingiris.MeshCoord.points
andMeshCoord.bounds
, which will return real data but will leave theiris.MeshCoord
(and attached mesh) lazy. (Issue #4757, PR #6405)@pp-mo made it possible for the reference surfaces of derived coordinates, like orography, to be lazy. (:pull: 6517).
@HGWright and @pp-mo enabled correct loading and saving of the bounds of CF parametric coordinates (that is, Iris derived coordinates). This was previously incorrect. However the fix is opt-in, controlled by the
derived_bounds
flag in theiris.FUTURE
object, to avoid breaking existing code. (Issue #3678, PR #6481, PR #6540)@bjlittle extended
zlib
compression ofCube
data payload when saving to NetCDF to also include any auxiliary coordinates and ancillary variables with the sameshape
. (Issue #6539, PR #6552)
🐛 Bugs Fixed#
@HGWright added a new warning to inform users that the boolean coordinate generated by
iris.coord_categorisation.add_season_membership()
is not saveable to netcdf. (PR #6305)@bouweandela changed the
convert_units
method on cubes and coordinates so it also converts the values of the attributes"actual_range"
,"valid_max"
,"valid_min"
, and"valid_range"
. (PR #6416)@ukmo-ccbunney fixed loading and merging of masked data in scalar
AuxCoords
. (Issue #3584, PR #6468)@stephenworsley fixed the html representation of cubes in Jupyter when coordinates share the same name. (PR #6476)
@schlunma fixed loading of netCDF files with coordinates that have non-string units. (Issue #6505, PR #6506)
@ukmo-ccbunney correctly set the
bplon
PP field parameter when saving a cube defined on Limited Area Model (LAM) grid to PP format. Activate this behaviour with the new Futures flagiris.FUTURE.lam_pole_offset=True
. (Issue #3560, PR #6520)@stephenworsley fixed incompatibilities with numpy v2.3 affecting arrays of dates and array printing. (PR #6518)
@stephenworsley fixed a bug which caused
concatenate_cube()
to fail when concatenating over multiple axes. (PR #6533)
💣 Incompatible Changes#
N/A
🚀 Performance Enhancements#
@pp-mo implemented automatic rechunking of hybrid (aka factory/derived) coordinates to avoid excessive memory usage. (Issue #6404, PR #6516)
🔥 Deprecations#
N/A
🔗 Dependencies#
N/A
📚 Documentation#
@trexfeathers and @ukmo-ccbunney added Load Problems to the user guide. (PR #6529)
@trexfeathers and @ukmo-ccbunney added a new user guide page: Iris’ Philosophy, for readers who are interested in why Iris is designed/maintained the way it is. Initial content: Code Maintenance, Loading Invalid File Content, Verbose Warnings. (PR #6529)
@tkknight updated image to ensure it renders correctly using various web browsers on Windows and Linux. (PR #6560)
💼 Internal#
@pp-mo replaced the PR-based linkchecks with a daily scheduled link checker based on lychee. (Issue #4140, PR #6386)
@trexfeathers added a CI workflow to quickly validate that the benchmarking setup is still working. (PR #6496)
@trexfeathers improved the stack trace for errors that occur during benchmark data generation, showing developers the root problem at-a-glance without needing local replication. (PR #6524)