What’s New in Iris#

v2.3.0.dev973 (25 Oct 2022) [unreleased]#

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

πŸ“’ Announcements#

  1. Welcome to @ESadek-MO and @TTV-Intrepid who made their first contributions to Iris πŸŽ‰

✨ Features#

  1. @ESadek-MO edited expand_filespecs() to allow expansion of non-existing paths, and added expansion functionality to save(). (Issue #4772, PR #4913)

  2. @trexfeathers and Julian Heming added new mappings between CF standard names and UK Met Office LBFC codes. (PR #4859)

  3. @pp-mo changed the metadata of a face/edge-type MeshCoord, to be same as the face/edge coordinate in the mesh from which it takes its .points. Previously, all MeshCoords took their metadata from the node coord, but only a node-type MeshCoord now does that. Also, the MeshCoord .var_name is now that of the underlying coord, whereas previously this was always None. These changes make MeshCoord more like an ordinary AuxCoord, which avoids some specific known usage problems. (Issue #4860, PR #5020)

πŸ› Bugs Fixed#

  1. @rcomer and @pp-mo (reviewer) factored masking into the returned sum-of-weights calculation from SUM. (PR #4905)

  2. @schlunma fixed a bug which prevented using iris.cube.Cube.collapsed() on coordinates whose number of bounds differs from 0 or 2. This enables the use of this method on mesh coordinates. (Issue #4672, PR #4870)

  3. @bjlittle and @lbdreyer (reviewer) fixed the building of the CF Standard Names module iris.std_names for the setup.py commands develop and std_names. (Issue #4951, PR #4952)

  4. @lbdreyer and @pp-mo (reviewer) fixed the cube print out such that scalar ancillary variables are displayed in a dedicated section rather than being added to the vector ancillary variables section. Further, ancillary variables and cell measures that map to a cube dimension of length 1 are now included in the respective vector sections. (PR #4945)

  5. @rcomer removed some old redundant code that prevented determining the order of time cells. (Issue #4697, PR #4729)

πŸ’£ Incompatible Changes#

  1. N/A

πŸš€ Performance Enhancements#

  1. @rcomer and @pp-mo (reviewer) increased aggregation speed for SUM, COUNT and PROPORTION on real data. (PR #4905)

  2. @bouweandela made iris.coords.Coord.cells() faster for time coordinates. This also affects iris.cube.Cube.extract(), iris.cube.Cube.subset(), and iris.coords.Coord.intersect(). (PR #4969)

  3. @bouweandela improved the speed of iris.cube.Cube.subset() / iris.coords.Coord.intersect(). (PR #4955)

πŸ”₯ Deprecations#

  1. N/A

πŸ”— Dependencies#

  1. @rcomer introduced the dask >=2.26 minimum pin, so that Iris can benefit from Dask’s support for NEP13 and NEP18. (PR #4905)

  2. @trexfeathers advanced the Cartopy pin to >=0.21, as Cartopy’s change to default Transverse Mercator projection affects an Iris test. See SciTools/cartopy@fcb784d and SciTools/cartopy@8860a81 for more details. (PR #4968)

  3. @trexfeathers introduced the netcdf4!=1.6.1 pin to avoid a problem with segfaults. (PR #4968)

  4. @trexfeathers updated the Matplotlib colormap registration in iris.palette in response to a deprecation warning. Using the new Matplotlib API also means a matplotlib>=3.5 pin. (PR #4998)

πŸ“š Documentation#

  1. @ESadek-MO, @TTV-Intrepid and @trexfeathers added a gallery example for zonal means plotted parallel to a cartographic plot. (PR #4871)

  2. @Esadek-MO added a key-terms Glossary page into the user guide. (PR #4902)

  3. @pp-mo added a code example for converting ORCA-gridded data to an unstructured cube. (PR #5013)

πŸ’Ό Internal#

  1. @rcomer removed the obsolete setUpClass method from Iris testing. (PR #4927)

  2. @bjlittle and @lbdreyer (reviewer) removed support for python setup.py test, which is a deprecated approach to executing package tests, see pypa/setuptools#1684. Also performed assorted setup.py script hygiene. (PR #4948, PR #4949, PR #4950)

  3. @pp-mo split the module iris.fileformats.netcdf into separate loader and saver submodules, just to make the code easier to handle.

  4. @trexfeathers adapted the benchmark for importing iris.palette to cope with new colormap behaviour in Matplotlib v3.6. (PR #4998)

  5. @rcomer removed a now redundant workaround for an old matplotlib bug, highlighted by Issue #4090. (PR #4999)

  6. @rcomer added the show option to the documentation Makefiles, as a convenient way for contributors to view their built documentation. (PR #5000)