What’s New in Iris#

v3.8.0.dev66 (04 Dec 2023) [unreleased]#

This document explains the changes made to Iris for this release (View all changes.)

v3.8.0.dev66 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#

  1. @lbdreyer relicensed Iris from LGPL-3 to BSD-3. (:pull: 5577)

✨ Features#

  1. @pp-mo, @lbdreyer and @trexfeathers improved Cube attributes handling to better preserve the distinction between dataset-level and variable-level attributes, allowing file-Cube-file round-tripping of NetCDF attributes. See CubeAttrsDict, NetCDF save() and Future for more. (PR #5152, split attributes project)

  2. @rcomer rewrote broadcast_to_shape() so it now handles lazy data. (PR #5307)

  3. @trexfeathers and @HGWright (reviewer) sub-categorised all Iris’ UserWarnings for richer filtering. The full index of sub-categories can be seen here: iris.exceptions . (PR #5498)

  4. @trexfeathers added the ObliqueMercator and RotatedMercator coordinate systems, complete with NetCDF loading and saving. (PR #5548)

  5. @trexfeathers added the use_year_at_season_start parameter to iris.coord_categorisation.add_season_year(). When use_year_at_season_start==True: seasons spanning the year boundary (e.g. Winter - December to February) will be assigned to the preceding year (e.g. the year of December) instead of the following year (the default behaviour). (PR #5573)

  6. @HGWright added ignore_axis to allow manual intervention preventing guess_coord_axis() from acting on a coordinate. (PR #5551)

  7. @pp-mo, @trexfeathers and @ESadek-MO added more control over NetCDF chunking with the use of the iris.fileformats.netcdf.loader.CHUNK_CONTROL context manager. (PR #5588)

🐛 Bugs Fixed#

  1. @scottrobinson02 fixed the output units when dividing a coordinate by a cube. (Issue #5305, PR #5331)

  2. @ESadek-MO has updated iris.tests.graphics.idiff to stop duplicated file names preventing acceptance. (Issue #5098, PR #5482)

  3. @acchamber and @rcomer modified 2D plots so that time axes and their ticks have more sensible default labels. (Issue #5426, PR #5561)

  4. @rcomer and @trexfeathers (reviewer) added handling for realization coordinates when saving pp files (Issue #4747, PR #5568)

💣 Incompatible Changes#

  1. N/A

🚀 Performance Enhancements#

  1. @stephenworsley improved the speed of AreaWeighted regridding. (PR #5543)

🔥 Deprecations#

  1. N/A

🔗 Dependencies#

  1. @bjlittle enforced the minimum pin of numpy>1.21 in accordance with the NEP29 Drop Schedule. (PR #5525)

📚 Documentation#

  1. @trexfeathers documented the intended use of warnings filtering with Iris. See Filtering Warnings. (PR #5509)

  2. @rcomer updated the Global Average Annual Temperature Maps to show how a colourbar may steal space from multiple axes. (PR #5537)

  3. @tkknight improved the top navgation bar alignment and amount of links shown. Also improved how the warning banner is implemented. (PR #5505 and PR #5508)

  4. @tkknight removed broken git links. (PR #5569)

  5. @ESadek-MO added a phrasebook for synonymous terms used in similar packages. (PR #5564)

  6. @ESadek-MO and @trexfeathers created a technical paper for NetCDF saving and loading, NetCDF I/O Handling in Iris with a section on chunking, and placeholders for further topics. (PR #5588)

💼 Internal#

  1. @trexfeathers and @ESadek-MO (reviewer) performed a suite of fixes and improvements for benchmarking, primarily to get on demand pull request benchmarking working properly. (Main pull request: PR #5437, more detail: PR #5430, PR #5431, PR #5432, PR #5434, PR #5436)

  2. @trexfeathers set a number of memory benchmarks to be on-demand, as they were vulnerable to false positives in CI runs. (PR #5481)

  3. @acchamber and @ESadek-MO resolved several deprecation to reduce number of warnings raised during tests. (PR #5493, PR #5511)

  4. @trexfeathers replaced all uses of the logging.WARNING level, in favour of using Python warnings, following team agreement. (PR #5488)

  5. @trexfeathers adapted benchmarking to work with ASV >=v0.6 by no longer using the --strict argument. (PR #5496)

  6. @fazledyn-or replaced NotImplementedError with NotImplemented as a proper method call. (PR #5544)

  7. @bjlittle corrected various comment spelling mistakes detected by codespell. (PR #5546)

  8. @rcomer reduced the size of the conda environment used for testing. (PR #5606)

  9. @trexfeathers and @pp-mo improved how the conda-forge feedstock release candidate branch is managed, via: Release Do-Nothing Script. (PR #5515)