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 : see LoadPolicy.

  • @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:

  1. We added in a Future flag - date_microseconds, which prevents floating point problems arisen from cf_units.Unit v3.3.

  2. We pinned dask to <2024.9 to prevent an indexing bug.

📢 Announcements#

  1. Iris is now compliant with NumPy v2. This may affect your scripts. See the full What’s New entry for more details.

✨ Features#

  1. @jrackham-mo added copy() and equality methods to iris.io.format_picker.FormatAgent, as requested in Issue #6108, actioned in PR #6119.

  2. @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.

  3. @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.

  4. @ESadek-MO has updated iris.fileformats.pp_save_rules and iris.fileformats.pp to include the label_surface_fields flag across relevant functions, most notably iris.fileformats.pp.save(). This allows the user to choose whether or not surface fields are recognised and handled appropriately. (Issue #3280, PR #5734)

  5. @ESadek-MO updated to the latest CF Standard Names Table v86 (5 September 2024). (PR #6200)

  6. @trexfeathers added a new Future flag - date_microseconds - which sets whether Iris should use the new microsecond-precision units (see cf_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 the Constraint API). (PR #6260)

🐛 Bugs Fixed#

  1. @rcomer enabled partial collapse of multi-dimensional string coordinates, fixing Issue #3653. (PR #5955)

  2. @bouweandela made further updates to the chunktype of Dask arrays, so it corresponds better with the array content. (PR #5989)

  3. @ukmo-ccbunney improved error handling for malformed cell_method attribute. Also made cell_method string parsing more lenient w.r.t. whitespace. (PR #6083)

  4. @ukmo-ccbunney fixed comparison of cubes with array type attributes; fixes Issue #6027 (PR #6181)

💣 Incompatible Changes#

  1. N/A

🚀 Performance Enhancements#

  1. @bouweandela made the time coordinate categorisation functions in coord_categorisation faster. Anyone using add_categorised_coord() with cftime datetime objects can benefit from the same improvement by adding a type hint to their category funcion. (PR #5999)

  2. @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)

  3. Note that due to the new date_microseconds Future flag, the time coordinate categorisation speedup introduced above will only be available when iris.FUTURE.date_microseconds == True.

🔥 Deprecations#

  1. N/A

🔗 Dependencies#

  1. @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)

  2. @stephenworsley pinned dask to <2024.9 due to an indexing bug. (Issue #6251, PR #6255)

📚 Documentation#

  1. @bouweandela added type hints for Cube. (PR #6037)

  2. @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#

  1. @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)

  2. @trexfeathers adapted Iris to work with Cartopy v0.24. (PR #6171, PR #6172)

  3. @trexfeathers refactored spanning checks in iris.fileformats.cf to reduce code duplication. (PR #6196)