Skip to content

Latest commit

 

History

History
271 lines (187 loc) · 10.3 KB

latest.rst

File metadata and controls

271 lines (187 loc) · 10.3 KB

This document explains the changes made to Iris for this release (:doc:`View all changes <index>`.)

.. dropdown:: |iris_version| Release Highlights
   :color: primary
   :icon: info
   :animate: fade-in
   :open:

   The highlights for this major/minor release of Iris include:

   * N/A

   And finally, get in touch with us on :issue:`GitHub<new/choose>` 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`)
  2. `@HGWright`_, `@bjlittle`_ and `@trexfeathers`_ (reviewers) added a CITATION.cff file to Iris and updated the :ref:`citation documentation <Citing_Iris>` , to help users cite Iris in their work. (:pull:`5483`)

✨ Features

  1. `@pp-mo`_, `@lbdreyer`_ and `@trexfeathers`_ improved :class:`~iris.cube.Cube` :attr:`~iris.cube.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 :class:`~iris.cube.CubeAttrsDict`, NetCDF :func:`~iris.fileformats.netcdf.saver.save` and :data:`~iris.Future` for more. (:pull:`5152`, split attributes project)
  2. `@rcomer`_ rewrote :func:`~iris.util.broadcast_to_shape` so it now handles lazy data. (:pull:`5307`)
  3. `@trexfeathers`_ and `@HGWright`_ (reviewer) sub-categorised all Iris' :class:`UserWarning`s for richer filtering. The full index of sub-categories can be seen here: :mod:`iris.warnings` . (:pull:`5498`, :pull:`5760`)
  4. `@trexfeathers`_ added the :class:`~iris.coord_systems.ObliqueMercator` and :class:`~iris.coord_systems.RotatedMercator` coordinate systems, complete with NetCDF loading and saving. (:pull:`5548`)
  5. `@trexfeathers`_ added the use_year_at_season_start parameter to :func:`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). (:pull:`5573`)
  6. `@HGWright`_ added :attr:`~iris.coords.Coord.ignore_axis` to allow manual intervention preventing :func:`~iris.util.guess_coord_axis` from acting on a coordinate. `@trexfeathers`_ documented this. (:pull:`5551`, :pull:`5744`)
  7. `@pp-mo`_, `@trexfeathers`_ and `@ESadek-MO`_ added more control over NetCDF chunking with the use of the :data:`iris.fileformats.netcdf.loader.CHUNK_CONTROL` context manager. (:pull:`5588`)
  8. @acchamber and `@trexfeathers`_ (reviewer) added :func:`iris.util.mask_cube_from_shapefile`. This builds on the original work of @ckmo, @david-bentley, @jmendesmetoffice, @evyve and `@pelson`_ for the UK Met Office ASCEND library. See :ref:`masking-from-shapefile` for documentation. (:pull:`5470`)
  9. `@trexfeathers`_ updated to the latest CF Standard Names Table v84 (19 January 2024). (:pull:`5761`)

🐛 Bugs Fixed

  1. @scottrobinson02 fixed the output units when dividing a coordinate by a cube. (:issue:`5305`, :pull:`5331`)
  2. `@ESadek-MO`_ has updated :mod:`iris.tests.graphics.idiff` to stop duplicated file names preventing acceptance. (:issue:`5098`, :pull:`5482`)
  3. @acchamber and `@rcomer`_ modified 2D plots so that time axes and their ticks have more sensible default labels. (:issue:`5426`, :pull:`5561`)
  4. `@rcomer`_ and `@trexfeathers`_ (reviewer) added handling for realization coordinates when saving pp files (:issue:`4747`, :pull:`5568`)
  5. `@ESadek-MO`_ has updated :mod:`iris.fileformats._nc_load_rules.helpers` to lessen warning duplication. (:issue:`5536`, :pull:`5685`)
  6. `@bjlittle`_ fixed coordinate construction in the NetCDF loading pipeline to ensure that bounds have the same units as the associated points. (:issue:`1801`, :pull:`5746`)

💣 Incompatible Changes

  1. `@bouweandela`_ and `@trexfeathers`_ (reviewer) updated :class:`~iris.cube.Cube` comparison so equality is now possible between cubes with data containing a :obj:`numpy.nan`. e.g. Cube([np.nan, 1.0]) == Cube([np.nan, 1.0]) will now evaluate to :obj:`True`, while previously this would have been :obj:`False`. (:pull:`5713`)

🚀 Performance Enhancements

  1. `@stephenworsley`_ improved the speed of :class:`~iris.analysis.AreaWeighted` regridding. (:pull:`5543`)
  2. `@bouweandela`_ made :func:`iris.util.array_equal` faster when comparing lazy data from file. This will also speed up coordinate comparison. (:pull:`5610`)
  3. `@bouweandela`_ changed :func:`iris.coords.Coord.cell` so it does not realize all coordinate data and only loads a single cell instead. (:pull:`5693`)
  4. `@rcomer`_ and `@trexfeathers`_ (reviewer) modified :func:`~iris.analysis.stats.pearsonr` so it preserves lazy data in all cases and also runs a little faster. (:pull:`5638`)
  5. `@bouweandela`_ made comparing coordinates and arrays to themselves faster. (:pull:`5691`)
  6. `@bouweandela`_ and `@trexfeathers`_ (reviewer) made comparing cubes to themselves faster. (:pull:`5713`)

🔥 Deprecations

  1. N/A

🔗 Dependencies

  1. `@bjlittle`_ enforced the minimum pin of numpy>1.21 in accordance with the NEP29 Drop Schedule. (:pull:`5525`)
  2. `@bjlittle`_ enforced the minimum pin of numpy>1.22 in accordance with the NEP29 Drop Schedule. (:pull:`5668`)
  3. `@bjlittle`_ updated ubuntu and mambaforge to the latest versions for readthedocs (:pull:`5702`)

📚 Documentation

  1. `@trexfeathers`_ documented the intended use of warnings filtering with Iris. See :ref:`filtering-warnings`. (:pull:`5509`)
  2. `@rcomer`_ updated the :ref:`sphx_glr_generated_gallery_meteorology_plot_COP_maps.py` to show how a colourbar may steal space from multiple axes. (:pull:`5537`)
  3. `@tkknight`_ improved the top navgation bar alignment and amount of links shown. Also improved how the warning banner is implemented. (:pull:`5505` and :pull:`5508`)
  4. `@tkknight`_ removed broken git links. (:pull:`5569`)
  5. `@ESadek-MO`_ added a phrasebook for synonymous terms used in similar packages. (:pull:`5564`)
  6. `@ESadek-MO`_ and `@trexfeathers`_ created a technical paper for NetCDF saving and loading, :ref:`netcdf_io` with a section on chunking, and placeholders for further topics. (:pull:`5588`)
  7. `@bouweandela`_ updated all hyperlinks to https. (:pull:`5621`)
  8. `@ESadek-MO`_ created an index page for :ref:`further_topics_index`, and relocated all 'Technical Papers' into :ref:`further_topics_index`. (:pull:`5602`)
  9. `@trexfeathers`_ made drop-down icons visible to show which pages link to 'sub-pages'. (:pull:`5684`)
  10. `@trexfeathers`_ improved the documentation of acceptable :class:`~iris.cube.Cube` standard names in :func:`iris.analysis.calculus.curl`. (:pull:`5680`)
  11. `@tkknight`_ added ruff documentation in the :ref:`developer_testing_ci` of the :ref:`developers_guide`. (:pull:`5701`)
  12. `@tkknight`_ configured the API documentation to show 2 levels for the ToC (Table of Contents) for each page. (:pull:`5714`)

💼 Internal

  1. `@trexfeathers`_ and `@ESadek-MO`_ (reviewer) performed a suite of fixes and improvements for benchmarking, primarily to get :ref:`on demand pull request benchmarking <on_demand_pr_benchmark>` working properly. (Main pull request: :pull:`5437`, more detail: :pull:`5430`, :pull:`5431`, :pull:`5432`, :pull:`5434`, :pull:`5436`)
  2. `@trexfeathers`_ set a number of memory benchmarks to be on-demand, as they were vulnerable to false positives in CI runs. (:pull:`5481`)
  3. @acchamber and `@ESadek-MO`_ resolved several deprecation to reduce number of warnings raised during tests. (:pull:`5493`, :pull:`5511`)
  4. `@trexfeathers`_ replaced all uses of the logging.WARNING level, in favour of using Python warnings, following team agreement. (:pull:`5488`)
  5. `@trexfeathers`_ adapted benchmarking to work with ASV >=v0.6 by no longer using the --strict argument. (:pull:`5496`)
  6. @fazledyn-or replaced NotImplementedError with NotImplemented as a proper method call. (:pull:`5544`)
  7. `@bjlittle`_ corrected various comment spelling mistakes detected by codespell. (:pull:`5546`)
  8. `@rcomer`_ reduced the size of the conda environment used for testing. (:pull:`5606`)
  9. `@trexfeathers`_ and `@pp-mo`_ improved how the conda-forge feedstock release candidate branch is managed, via: :doc:`../developers_guide/release_do_nothing`. (:pull:`5515`)
  10. `@bjlittle`_ adopted and configured the `ruff`_ linter. (:pull:`5623`)
  11. `@bjlittle`_ configured the line-length = 88 for `black`_, `isort`_ and `ruff`_. (:pull:`5632`)
  12. `@bjlittle`_ replaced `isort`_ with `ruff`_. (:pull:`5633`)
  13. `@bjlittle`_ replaced `black`_ with `ruff`_. (:pull:`5634`)
  14. `@tkknight`_ and `@bjlittle`_ (reviewer) updated codebase to be compliant with almost all of the rules for ruff pydocstyle. (#5625 (comment))
  15. `@tkknight`_ and `@bjlittle`_ (reviewer) updated codebase to ensure docstrings that are not covered by the ruff checks, are consistent with numpydocstyle. (:issue:`4721`)