You are viewing the latest unreleased documentation 3.1.0.dev453. You can switch to a stable version.

What’s New in Iris#

v3.1.0.dev453 (16 Feb 2024) [unreleased]#

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

v3.1.0.dev453 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. (PR #5577)

  2. @HGWright, @bjlittle and @trexfeathers (reviewers) added a CITATION.cff file to Iris and updated the citation documentation , to help users cite Iris in their work. (PR #5483)

✨ 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)

  5. @ESadek-MO has updated iris.fileformats._nc_load_rules.helpers to lessen warning duplication. (Issue #5536, PR #5685)

💣 Incompatible Changes#

  1. N/A

🚀 Performance Enhancements#

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

  2. @bouweandela made iris.util.array_equal() faster when comparing lazy data from file. This will also speed up coordinate comparison. (PR #5610)

  3. @bouweandela changed iris.coords.Coord.cell() so it does not realize all coordinate data and only loads a single cell instead. (PR #5693)

  4. @rcomer and @trexfeathers (reviewer) modified pearsonr() so it preserves lazy data in all cases and also runs a little faster. (PR #5638)

  5. @bouweandela made comparing coordinates and arrays to themselves faster. (PR #5691)

🔥 Deprecations#

  1. N/A

🔗 Dependencies#

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

  2. @bjlittle enforced the minimum pin of numpy>1.22 in accordance with the NEP29 Drop Schedule. (PR #5668)

  3. @bjlittle updated ubuntu and mambaforge to the latest versions for readthedocs (PR #5702)

📚 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)

  7. @bouweandela updated all hyperlinks to https. (PR #5621)

  8. @ESadek-MO created an index page for Further Topics, and relocated all ‘Technical Papers’ into Further Topics. (PR #5602)

  9. @trexfeathers made drop-down icons visible to show which pages link to ‘sub-pages’. (PR #5684)

  10. @trexfeathers improved the documentation of acceptable Cube standard names in iris.analysis.calculus.curl(). (PR #5680)

  11. @tkknight added ruff documentation in the Continuous Integration (CI) Testing of the Developers Guide. (PR #5701)

💼 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)

  10. @bjlittle adopted and configured the ruff linter. (PR #5623)

  11. @bjlittle configured the line-length = 88 for black, isort and ruff. (PR #5632)

  12. @bjlittle replaced isort with ruff. (PR #5633)

  13. @bjlittle replaced black with ruff. (PR #5634)