diff --git a/docs/src/whatsnew/3.15.rst b/docs/src/whatsnew/3.15.rst new file mode 100644 index 0000000000..b6c4fa4e43 --- /dev/null +++ b/docs/src/whatsnew/3.15.rst @@ -0,0 +1,195 @@ +.. include:: ../common_links.inc + +v3.15 (17 Mar 2026 [release candidate]) +*************************************** + +This document explains the changes made to Iris for this release +(:doc:`View all changes `.) + + +.. dropdown:: v3.15 Release Highlights + :color: primary + :icon: info + :animate: fade-in + :open: + + The highlights for this minor release of Iris include: + + * Overhauling the user documentation structure to maximise discoverability + and engagement with user needs going forward. + + * NIMROD loader improvements to expand the types of NIMROD files Iris can load. + + * Documentation page explaining how to access files in S3 buckets. + + * Compatibility with Pandas version 3. + + * Several large pieces of work **behind the scenes** to put Iris in the best + possible place for the future. To be continued! + + * Investigating how Iris can provide native `Zarr`_ loading and saving + (beyond what is already possible via `ncdata`_). + + * Completed a 2-year project converting all tests from unittest to pytest, + including compliance with the Ruff `PT` standard. + + * In-progress work to fully support arrays of characters/strings. + + * Investigating how Iris can integrate with the `Pint`_ units library, to + increase interoperability with the wider scientific Python ecosystem. + + * Layout groundwork for making Iris fully Pip-installable, reducing the + dependency footprint and improving handling of optional dependencies. + + And finally, get in touch with us on :issue:`GitHub` if you have + any issues or feature requests for improving Iris. Enjoy! + + +📢 Announcements +================ + +#. We've had a makeover! ✨ All user documentation pages have been reorganised + into a new structure: :doc:`/user_manual/index`. This restructure is to + maximise discoverability of the available pages, as well as embracing the + `Diataxis`_ framework for better engagement with user needs going forward. + + +✨ Features +=========== + +#. `@ukmo-ccbunney`_ added new *cube component* convenience methods that allow + for manipulation of any named dimensional component that can be attached to a + cube (i.e. coordinates, cell measures and ancillary variables) via a common + interface. The following methods are provided: + + * :func:`~iris.cube.Cube.component` and :func:`~iris.cube.Cube.components`: + get one or more components from a cube + * :func:`~iris.cube.Cube.add_component`: add a component to a cube + * :func:`~iris.cube.Cube.remove_component`: remove a component from a cube + * :func:`~iris.cube.Cube.component_dims`: return the cube dimension(s) + spanned by a component. + + (:issue:`5819`, :pull:`6854`) + +#. `@ESadek-MO`_ added functionality to allow :func:`~iris.cube.Cube.concatenate`, + :func:`~iris.cube.Cube.rolling_window` and :func:`~iris.cube.Cube.intersection` + to work with dataless cubes. (:pull:`6860`, :pull:`6757`) + +#. `@HGWright`_ added to the Nimrod loader to expand the types of Nimrod files it can load. This includes selecting which Nimrod table to use the data entry headers from. (:issue:`4505`, :pull:`6763`) + +#. `@stephenworsley`_ added the coordinate method :meth:`~iris.coords.Coord.as_string_arrays` + and the class :class:`~iris.coords.PointBoundStrings` to help represent points and + bounds data on coordinates. This adapts code suggestions by `@rcomer`_ and `@vsherratt`_. (:issue:`4508`, :pull:`6978`) + +🐛 Bugs Fixed +============= + +#. `@ukmo-ccbunney`_ changed formatting of numpy scalars attributes when generating a + Cube/Coord summary to use ``str`` representation instead of ``repr``. + (:pull:`6966`, :issue:`6692`) + + +💣 Incompatible Changes +======================= + +#. `@hsteptoe`_ and `@ESadek-MO`_ (reviewer) disabled the ``copy`` behaviour + across :mod:`iris.pandas`, as it is incompatible with Pandas v3 (see + `New pandas v3 copy behaviour`_). The parameter is still present, to help + mitigate disruption, but now marked for deprecation. (:pull:`6948`, + :issue:`6761`) + + +🚀 Performance Enhancements +=========================== + +#. Note that ``libnetcdf`` version 4.10.0 (released 25th Feb 2026) improves + NetCDF loading and saving performance, measured between 20-40% in Iris' + benchmarks (:issue:`6984`). + + +🔥 Deprecations +=============== + +#. `@ESadek-MO`_ has deprecated the :class:`~iris.tests.IrisTest` class, and other unittest-based + testing conveniences in favour of the conveniences found in :mod:`iris/tests/_shared_utils.py`. + (:pull:`6950`) + +#. `@hsteptoe`_ has deprecated the use of the `copy` kwarg across :mod:`iris.pandas` to reflect changes + to the default behaviour of pandas v3 `New pandas v3 copy behaviour`_. (:pull:`6948`) + + +🔗 Dependencies +=============== + +#. `@hsteptoe`_ and `@ESadek-MO`_ (reviewer) made :mod:`iris.pandas` + interoperability compatible with pandas v3. (:pull:`6948`, :issue:`6761`) + + +📚 Documentation +================ + +#. `@tkknight`_ reduced the space used on the documentation homepage by the quick + link cards to allow for easier reading. (:pull:`6886`) + +#. `@tkknight`_ added a gallery carousel to the documentation homepage. (:pull:`6884`) + +#. :user:`bjlittle` added the ``:user:`` `extlinks`_ ``github`` user convenience. + (:pull:`6931`) + +#. `@pp-mo`_ added a page on how to access datafiles in S3 buckets: + :doc:`/user_manual/tutorial/s3_io`. + (:issue:`6374`, :pull:`6951`) + +#. `@trexfeathers`_, `@stephenworsley`_, `@ESadek-MO`_ and `@tkknight`_ reorganised **all** + user documentation pages into a new structure: :doc:`/user_manual/index`. + This restructure is to maximise discoverability of the available pages, as + well as embracing the `Diataxis`_ framework for better engagement with user + needs going forward. (:issue:`6511`, :pull:`6868`) + + +💼 Internal +=========== + +#. `@trexfeathers`_ and `@hdyson`_ updated ``_ff_replacement.py`` to clarify + that Iris supports Ancillaries. (:pull:`6792`) + +#. `@trexfeathers`_ adapted ``test_OceanSigmaZFactory`` for NumPy 2.4 - only + 0-dimensional arrays can now be converted to scalars. (:pull:`6876`) + +#. `@trexfeathers`_ updated benchmarking to source Mule from its new home: + https://github.com/MetOffice/mule . (:pull:`6879`) + +#. `@tkknight`_ removed flake8, we have ruff now instead. (:pull:`6889`) + +#. `@trexfeathers`_ and `@ukmo-ccbunney`_ updated CI to support Python 3.14 + inline with `SPEC0 Minimum Supported Dependencies`_. Note: `pyvista` (and + hence `geovista`) is not yet compatible with Python 3.14, so + :mod:`iris.experimental.geovista` is currently only available for + Python \<3.14. (:pull:`6816`, :issue:`6775`) + +#. `@ESadek-MO`_, `@trexfeathers`_, `@bjlittle`_, `@HGWright`_, `@pp-mo`_, + `@stephenworsley`_ and `@ukmo-ccbunney`_ converted the entirity of the tests + from unittest to pytest. Iris is now also ruff-PT compliant, save for PT019. + (:issue:`6212`, :pull:`6939`) + +#. `@hsteptoe`_ and `@ESadek-MO`_ (reviewer) updated chained assignment useage within the tests + associated with :mod:`iris.pandas` to reflect changes in pandas v3 `New pandas v3 copy behaviour`_. + (:pull:`6948`, :issue:`6761`) + +#. `@hsteptoe`_ and `@ESadek-MO`_ (reviewer) added static type hinting to :mod:`iris.pandas`. (:pull:`6948`) + +.. comment + Whatsnew author names (@github name) in alphabetical order. Note that, + core dev names are automatically included by the common_links.inc: + +.. _@hdyson: https://github.com/hdyson +.. _@hsteptoe: https://github.com/hsteptoe + +.. comment + Whatsnew resources in alphabetical order: + +.. _New pandas v3 copy behaviour: https://pandas.pydata.org/docs/whatsnew/v3.0.0.html#consistent-copy-view-behaviour-with-copy-on-write +.. _SPEC0 Minimum Supported Dependencies: https://scientific-python.org/specs/spec-0000/ +.. _Zarr: https://zarr.dev/ +.. _ncdata: https://github.com/SciTools/ncdata +.. _Pint: https://github.com/hgrecco/pint diff --git a/docs/src/whatsnew/index.rst b/docs/src/whatsnew/index.rst index 0e9d1ef6a6..b9d5cb59ce 100644 --- a/docs/src/whatsnew/index.rst +++ b/docs/src/whatsnew/index.rst @@ -13,6 +13,7 @@ What's New in Iris :hidden: latest.rst + 3.15.rst 3.14.rst 3.13.rst 3.12.rst diff --git a/docs/src/whatsnew/latest.rst b/docs/src/whatsnew/latest.rst index 4988eca6e0..9022446cb8 100644 --- a/docs/src/whatsnew/latest.rst +++ b/docs/src/whatsnew/latest.rst @@ -24,38 +24,14 @@ This document explains the changes made to Iris for this release 📢 Announcements ================ -#. We've had a makeover! ✨ All user documentation pages have been reorganised - into a new structure: :doc:`/user_manual/index`. This restructure is to - maximise discoverability of the available pages, as well as embracing the - `Diataxis`_ framework for better engagement with user needs going forward. +#. N/A ✨ Features =========== -#. `@ukmo-ccbunney`_ added new *cube component* convenience methods that allow - for manipulation of any named dimensional component that can be attached to a - cube (i.e. coordinates, cell measures and ancillary variables) via a common - interface. The following methods are provided: - - * :func:`~iris.cube.Cube.component` and :func:`~iris.cube.Cube.components`: - get one or more components from a cube - * :func:`~iris.cube.Cube.add_component`: add a component to a cube - * :func:`~iris.cube.Cube.remove_component`: remove a component from a cube - * :func:`~iris.cube.Cube.component_dims`: return the cube dimension(s) - spanned by a component. - - (:issue:`5819`, :pull:`6854`) - -#. `@ESadek-MO`_ added functionality to allow :func:`~iris.cube.Cube.concatenate`, - :func:`~iris.cube.Cube.rolling_window` and :func:`~iris.cube.Cube.intersection` - to work with dataless cubes. (:pull:`6860`, :pull:`6757`) - -#. `@HGWright`_ added to the Nimrod loader to expand the types of Nimrod files it can load. This includes selecting which Nimrod table to use the data entry headers from. (:issue:`4505`, :pull:`6763`) +#. N/A -#. `@stephenworsley`_ added the coordinate method :meth:`~iris.coords.Coord.as_string_arrays` - and the class :class:`~iris.coords.PointBoundStrings` to help represent points and - bounds data on coordinates. This adapts code suggestions by `@rcomer`_ and `@vsherratt`_. (:issue:`4508`, :pull:`6978`) 🐛 Bugs Fixed ============= @@ -78,12 +54,7 @@ This document explains the changes made to Iris for this release 🔥 Deprecations =============== -#. `@ESadek-MO`_ has deprecated the :class:`~iris.tests.IrisTest` class, and other unittest-based - testing conveniences in favour of the conveniences found in :mod:`iris/tests/_shared_utils.py`. - (:pull:`6950`) - -#. `@hsteptoe`_ has deprecated the use of the `copy` kwarg across :mod:`iris.pandas` to reflect changes - to the default behaviour of pandas v3 `New pandas v3 copy behaviour`_. (:pull:`6948`) +#. N/A 🔗 Dependencies @@ -95,68 +66,21 @@ This document explains the changes made to Iris for this release 📚 Documentation ================ -#. `@tkknight`_ reduced the space used on the documentation homepage by the quick - link cards to allow for easier reading. (:pull:`6886`) - -#. `@tkknight`_ added a gallery carousel to the documentation homepage. (:pull:`6884`) - -#. :user:`bjlittle` added the ``:user:`` `extlinks`_ ``github`` user convenience. - (:pull:`6931`) - -#. `@pp-mo`_ added a page on how to access datafiles in S3 buckets. - (:issue:`6374`, :pull:`6951`) - -#. `@trexfeathers`_, `@stephenworsley`_, `@ESadek-MO`_ and `@tkknight`_ reorganised **all** - user documentation pages into a new structure: :doc:`/user_manual/index`. - This restructure is to maximise discoverability of the available pages, as - well as embracing the `Diataxis`_ framework for better engagement with user - needs going forward. (:issue:`6511`, :pull:`6868`) +#. N/A 💼 Internal =========== -#. `@trexfeathers`_ and `@hdyson`_ updated ``_ff_replacement.py`` to clarify - that Iris supports Ancillaries. (:pull:`6792`) - -#. `@trexfeathers`_ adapted ``test_OceanSigmaZFactory`` for NumPy 2.4 - only - 0-dimensional arrays can now be converted to scalars. (:pull:`6876`) - -#. `@trexfeathers`_ updated benchmarking to source Mule from its new home: - https://github.com/MetOffice/mule . (:pull:`6879`) - -#. `@tkknight`_ removed flake8, we have ruff now instead. (:pull:`6889`) - -#. `@trexfeathers`_ and `@ukmo-ccbunney`_ updated CI to support Python 3.14 - inline with `SPEC0 Minimum Supported Dependencies`_. Note: `pyvista` (and - hence `geovista`) is not yet compatible with Python 3.14, so - :mod:`iris.experimental.geovista` is currently only available for - Python \<3.14. (:pull:`6816`, :issue:`6775`) - -#. `@ESadek-MO`_, `@trexfeathers`_, `@bjlittle`_, `@HGWright`_, `@pp-mo`_, - `@stephenworsley`_ and `@ukmo-ccbunney`_ converted the entirity of the tests - from unittest to pytest. Iris is now also ruff-PT compliant, save for PT019. - (:issue:`6212`, :pull:`6939`) - -#. `@hsteptoe`_ and `@ESadek-MO`_ (reviewer) updated chained assignment useage within the tests - associated with :mod:`iris.pandas` to reflect changes in pandas v3 `New pandas v3 copy behaviour`_. - (:pull:`6948`, :issue:`6761`) - -#. `@hsteptoe`_ and `@ESadek-MO`_ (reviewer) added static type hinting to :mod:`iris.pandas`. (:pull:`6948`) +#. N/A -#. `@ukmo-ccbunney`_ changed formatting of numpy scalars attributes when generating a - Cube/Coord summary to use ``str`` representation instead of ``repr``. - (:pull:`6966`, :issue:`6692`) .. comment Whatsnew author names (@github name) in alphabetical order. Note that, core dev names are automatically included by the common_links.inc: -.. _@hdyson: https://github.com/hdyson -.. _@hsteptoe: https://github.com/hsteptoe -.. comment - Whatsnew resources in alphabetical order: -.. _New pandas v3 copy behaviour: https://pandas.pydata.org/docs/whatsnew/v3.0.0.html#consistent-copy-view-behaviour-with-copy-on-write -.. _SPEC0 Minimum Supported Dependencies: https://scientific-python.org/specs/spec-0000/ + +.. comment + Whatsnew resources in alphabetical order: \ No newline at end of file