v3.11 (11 Nov 2024)#
This document explains the changes made to Iris for this release (View all changes.)
v3.11 Release Highlights
The highlights for this minor release of Iris include:
Iris is now compliant with NumPy v2. See the notes below for how this might affect your scripts.
Loading now supports varying reference fields for hybrid vertical coordinates, e.g. a time-varying orography. This is controlled by the
LOAD_POLICY()
object : seeLoadPolicy
.@bouweandela added type hints for
Cube
.Checkout the significant performance enhancements section for a couple of improvements to the performance of Iris. Special thanks to @bouweandela for these contributions.
We added
colorbar
keyword to allow optional creation of the colorbar in three quickplot methods!
And finally, get in touch with us on GitHub if you have any issues or feature requests for improving Iris. Enjoy!
v3.11.1 (19 Dec 2024)#
v3.12.2 Patches
The patches in this release of Iris include:
We added in a
Future
flag -date_microseconds
, which prevents floating point problems arisen fromcf_units.Unit
v3.3.We pinned dask to <2024.9 to prevent an indexing bug.
📢 Announcements#
Iris is now compliant with NumPy v2. This may affect your scripts. See the full What’s New entry for more details.
✨ Features#
@jrackham-mo added
copy()
and equality methods toiris.io.format_picker.FormatAgent
, as requested in Issue #6108, actioned in PR #6119.@ukmo-ccbunney added
colorbar
keyword to allow optional creation of the colorbar in the following quickplot methods:Requested in Issue #5970, actioned in PR #6169.
@pp-mo and @stephenworsley added support for hybrid coordinates whose references are split across multiple input fields, and
LOAD_POLICY()
to control it, as requested in Issue #5369, actioned in PR #6168.@ESadek-MO has updated
iris.fileformats.pp_save_rules
andiris.fileformats.pp
to include the label_surface_fields flag across relevant functions, most notablyiris.fileformats.pp.save()
. This allows the user to choose whether or not surface fields are recognised and handled appropriately. (Issue #3280, PR #5734)@ESadek-MO updated to the latest CF Standard Names Table v86 (5 September 2024). (PR #6200)
@trexfeathers added a new
Future
flag -date_microseconds
- which sets whether Iris should use the new microsecond-precision units (seecf_units.Unit
, microseconds introduced in version 3.3) when the unit is a time unit. The previous maximum precision was seconds. You should check your code for new floating point problems if activating this (e.g. when using theConstraint
API). (PR #6260)
🐛 Bugs Fixed#
@rcomer enabled partial collapse of multi-dimensional string coordinates, fixing Issue #3653. (PR #5955)
@bouweandela made further updates to the
chunktype
of Dask arrays, so it corresponds better with the array content. (PR #5989)@ukmo-ccbunney improved error handling for malformed cell_method attribute. Also made cell_method string parsing more lenient w.r.t. whitespace. (PR #6083)
@ukmo-ccbunney fixed comparison of cubes with array type attributes; fixes Issue #6027 (PR #6181)
💣 Incompatible Changes#
N/A
🚀 Performance Enhancements#
@bouweandela made the time coordinate categorisation functions in
coord_categorisation
faster. Anyone usingadd_categorised_coord()
with cftimedatetime
objects can benefit from the same improvement by adding a type hint to their category funcion. (PR #5999)@bouweandela made
iris.cube.CubeList.concatenate()
faster if more than two cubes are concatenated with equality checks on the values of auxiliary coordinates, derived coordinates, cell measures, or ancillary variables enabled. In some cases, this may lead to higher memory use. This can be remedied by reducing the number of Dask workers. In rare cases, the new implementation could potentially be slower. This may happen when there are very many or large auxiliary coordinates, derived coordinates, cell measures, or ancillary variables to be checked that span the concatenation axis. This issue can be avoided by disabling the problematic check. (PR #5926 and PR #6187)Note that due to the new
date_microseconds
Future
flag, the time coordinate categorisation speedup introduced above will only be available wheniris.FUTURE.date_microseconds == True
.
🔥 Deprecations#
N/A
🔗 Dependencies#
@trexfeathers adapted the Iris codebase to work with NumPy v2. The NumPy v2 full release notes have the exhaustive details. Notable changes that may affect your Iris scripts are below. (PR #6035)
@stephenworsley pinned dask to <2024.9 due to an indexing bug. (Issue #6251, PR #6255)
📚 Documentation#
@bouweandela added type hints for
Cube
. (PR #6037)@ESadek-MO has updated Iris Handling of PP and Fieldsfiles to include a short description of the new label_surface_fields functionality. (PR #5734)
💼 Internal#
@trexfeathers improved the new
tracemalloc
benchmarking (introduced in Iris v3.10.0, PR #5948) to use the same statistical repeat strategy as timing benchmarks. (PR #5981)@trexfeathers adapted Iris to work with Cartopy v0.24. (PR #6171, PR #6172)
@trexfeathers refactored spanning checks in
iris.fileformats.cf
to reduce code duplication. (PR #6196)