Skip to content

Commit 0fa0d6b

Browse files
authored
Merge pull request #6987 from trexfeathers/v3.15.x.mergeback
`v3.15.x` mergeback
2 parents a3ee710 + 877562e commit 0fa0d6b

File tree

3 files changed

+204
-84
lines changed

3 files changed

+204
-84
lines changed

docs/src/whatsnew/3.15.rst

Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
.. include:: ../common_links.inc
2+
3+
v3.15 (17 Mar 2026 [release candidate])
4+
***************************************
5+
6+
This document explains the changes made to Iris for this release
7+
(:doc:`View all changes <index>`.)
8+
9+
10+
.. dropdown:: v3.15 Release Highlights
11+
:color: primary
12+
:icon: info
13+
:animate: fade-in
14+
:open:
15+
16+
The highlights for this minor release of Iris include:
17+
18+
* Overhauling the user documentation structure to maximise discoverability
19+
and engagement with user needs going forward.
20+
21+
* NIMROD loader improvements to expand the types of NIMROD files Iris can load.
22+
23+
* Documentation page explaining how to access files in S3 buckets.
24+
25+
* Compatibility with Pandas version 3.
26+
27+
* Several large pieces of work **behind the scenes** to put Iris in the best
28+
possible place for the future. To be continued!
29+
30+
* Investigating how Iris can provide native `Zarr`_ loading and saving
31+
(beyond what is already possible via `ncdata`_).
32+
33+
* Completed a 2-year project converting all tests from unittest to pytest,
34+
including compliance with the Ruff `PT` standard.
35+
36+
* In-progress work to fully support arrays of characters/strings.
37+
38+
* Investigating how Iris can integrate with the `Pint`_ units library, to
39+
increase interoperability with the wider scientific Python ecosystem.
40+
41+
* Layout groundwork for making Iris fully Pip-installable, reducing the
42+
dependency footprint and improving handling of optional dependencies.
43+
44+
And finally, get in touch with us on :issue:`GitHub<new/choose>` if you have
45+
any issues or feature requests for improving Iris. Enjoy!
46+
47+
48+
📢 Announcements
49+
================
50+
51+
#. We've had a makeover! ✨ All user documentation pages have been reorganised
52+
into a new structure: :doc:`/user_manual/index`. This restructure is to
53+
maximise discoverability of the available pages, as well as embracing the
54+
`Diataxis`_ framework for better engagement with user needs going forward.
55+
56+
57+
✨ Features
58+
===========
59+
60+
#. `@ukmo-ccbunney`_ added new *cube component* convenience methods that allow
61+
for manipulation of any named dimensional component that can be attached to a
62+
cube (i.e. coordinates, cell measures and ancillary variables) via a common
63+
interface. The following methods are provided:
64+
65+
* :func:`~iris.cube.Cube.component` and :func:`~iris.cube.Cube.components`:
66+
get one or more components from a cube
67+
* :func:`~iris.cube.Cube.add_component`: add a component to a cube
68+
* :func:`~iris.cube.Cube.remove_component`: remove a component from a cube
69+
* :func:`~iris.cube.Cube.component_dims`: return the cube dimension(s)
70+
spanned by a component.
71+
72+
(:issue:`5819`, :pull:`6854`)
73+
74+
#. `@ESadek-MO`_ added functionality to allow :func:`~iris.cube.Cube.concatenate`,
75+
:func:`~iris.cube.Cube.rolling_window` and :func:`~iris.cube.Cube.intersection`
76+
to work with dataless cubes. (:pull:`6860`, :pull:`6757`)
77+
78+
#. `@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`)
79+
80+
#. `@stephenworsley`_ added the coordinate method :meth:`~iris.coords.Coord.as_string_arrays`
81+
and the class :class:`~iris.coords.PointBoundStrings` to help represent points and
82+
bounds data on coordinates. This adapts code suggestions by `@rcomer`_ and `@vsherratt`_. (:issue:`4508`, :pull:`6978`)
83+
84+
🐛 Bugs Fixed
85+
=============
86+
87+
#. `@ukmo-ccbunney`_ changed formatting of numpy scalars attributes when generating a
88+
Cube/Coord summary to use ``str`` representation instead of ``repr``.
89+
(:pull:`6966`, :issue:`6692`)
90+
91+
92+
💣 Incompatible Changes
93+
=======================
94+
95+
#. `@hsteptoe`_ and `@ESadek-MO`_ (reviewer) disabled the ``copy`` behaviour
96+
across :mod:`iris.pandas`, as it is incompatible with Pandas v3 (see
97+
`New pandas v3 copy behaviour`_). The parameter is still present, to help
98+
mitigate disruption, but now marked for deprecation. (:pull:`6948`,
99+
:issue:`6761`)
100+
101+
102+
🚀 Performance Enhancements
103+
===========================
104+
105+
#. Note that ``libnetcdf`` version 4.10.0 (released 25th Feb 2026) improves
106+
NetCDF loading and saving performance, measured between 20-40% in Iris'
107+
benchmarks (:issue:`6984`).
108+
109+
110+
🔥 Deprecations
111+
===============
112+
113+
#. `@ESadek-MO`_ has deprecated the :class:`~iris.tests.IrisTest` class, and other unittest-based
114+
testing conveniences in favour of the conveniences found in :mod:`iris/tests/_shared_utils.py`.
115+
(:pull:`6950`)
116+
117+
#. `@hsteptoe`_ has deprecated the use of the `copy` kwarg across :mod:`iris.pandas` to reflect changes
118+
to the default behaviour of pandas v3 `New pandas v3 copy behaviour`_. (:pull:`6948`)
119+
120+
121+
🔗 Dependencies
122+
===============
123+
124+
#. `@hsteptoe`_ and `@ESadek-MO`_ (reviewer) made :mod:`iris.pandas`
125+
interoperability compatible with pandas v3. (:pull:`6948`, :issue:`6761`)
126+
127+
128+
📚 Documentation
129+
================
130+
131+
#. `@tkknight`_ reduced the space used on the documentation homepage by the quick
132+
link cards to allow for easier reading. (:pull:`6886`)
133+
134+
#. `@tkknight`_ added a gallery carousel to the documentation homepage. (:pull:`6884`)
135+
136+
#. :user:`bjlittle` added the ``:user:`` `extlinks`_ ``github`` user convenience.
137+
(:pull:`6931`)
138+
139+
#. `@pp-mo`_ added a page on how to access datafiles in S3 buckets:
140+
:doc:`/user_manual/tutorial/s3_io`.
141+
(:issue:`6374`, :pull:`6951`)
142+
143+
#. `@trexfeathers`_, `@stephenworsley`_, `@ESadek-MO`_ and `@tkknight`_ reorganised **all**
144+
user documentation pages into a new structure: :doc:`/user_manual/index`.
145+
This restructure is to maximise discoverability of the available pages, as
146+
well as embracing the `Diataxis`_ framework for better engagement with user
147+
needs going forward. (:issue:`6511`, :pull:`6868`)
148+
149+
150+
💼 Internal
151+
===========
152+
153+
#. `@trexfeathers`_ and `@hdyson`_ updated ``_ff_replacement.py`` to clarify
154+
that Iris supports Ancillaries. (:pull:`6792`)
155+
156+
#. `@trexfeathers`_ adapted ``test_OceanSigmaZFactory`` for NumPy 2.4 - only
157+
0-dimensional arrays can now be converted to scalars. (:pull:`6876`)
158+
159+
#. `@trexfeathers`_ updated benchmarking to source Mule from its new home:
160+
https://github.com/MetOffice/mule . (:pull:`6879`)
161+
162+
#. `@tkknight`_ removed flake8, we have ruff now instead. (:pull:`6889`)
163+
164+
#. `@trexfeathers`_ and `@ukmo-ccbunney`_ updated CI to support Python 3.14
165+
inline with `SPEC0 Minimum Supported Dependencies`_. Note: `pyvista` (and
166+
hence `geovista`) is not yet compatible with Python 3.14, so
167+
:mod:`iris.experimental.geovista` is currently only available for
168+
Python \<3.14. (:pull:`6816`, :issue:`6775`)
169+
170+
#. `@ESadek-MO`_, `@trexfeathers`_, `@bjlittle`_, `@HGWright`_, `@pp-mo`_,
171+
`@stephenworsley`_ and `@ukmo-ccbunney`_ converted the entirity of the tests
172+
from unittest to pytest. Iris is now also ruff-PT compliant, save for PT019.
173+
(:issue:`6212`, :pull:`6939`)
174+
175+
#. `@hsteptoe`_ and `@ESadek-MO`_ (reviewer) updated chained assignment useage within the tests
176+
associated with :mod:`iris.pandas` to reflect changes in pandas v3 `New pandas v3 copy behaviour`_.
177+
(:pull:`6948`, :issue:`6761`)
178+
179+
#. `@hsteptoe`_ and `@ESadek-MO`_ (reviewer) added static type hinting to :mod:`iris.pandas`. (:pull:`6948`)
180+
181+
.. comment
182+
Whatsnew author names (@github name) in alphabetical order. Note that,
183+
core dev names are automatically included by the common_links.inc:
184+
185+
.. _@hdyson: https://github.com/hdyson
186+
.. _@hsteptoe: https://github.com/hsteptoe
187+
188+
.. comment
189+
Whatsnew resources in alphabetical order:
190+
191+
.. _New pandas v3 copy behaviour: https://pandas.pydata.org/docs/whatsnew/v3.0.0.html#consistent-copy-view-behaviour-with-copy-on-write
192+
.. _SPEC0 Minimum Supported Dependencies: https://scientific-python.org/specs/spec-0000/
193+
.. _Zarr: https://zarr.dev/
194+
.. _ncdata: https://github.com/SciTools/ncdata
195+
.. _Pint: https://github.com/hgrecco/pint

docs/src/whatsnew/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ What's New in Iris
1313
:hidden:
1414

1515
latest.rst
16+
3.15.rst
1617
3.14.rst
1718
3.13.rst
1819
3.12.rst

docs/src/whatsnew/latest.rst

Lines changed: 8 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -24,38 +24,14 @@ This document explains the changes made to Iris for this release
2424
📢 Announcements
2525
================
2626

27-
#. We've had a makeover! ✨ All user documentation pages have been reorganised
28-
into a new structure: :doc:`/user_manual/index`. This restructure is to
29-
maximise discoverability of the available pages, as well as embracing the
30-
`Diataxis`_ framework for better engagement with user needs going forward.
27+
#. N/A
3128

3229

3330
✨ Features
3431
===========
3532

36-
#. `@ukmo-ccbunney`_ added new *cube component* convenience methods that allow
37-
for manipulation of any named dimensional component that can be attached to a
38-
cube (i.e. coordinates, cell measures and ancillary variables) via a common
39-
interface. The following methods are provided:
40-
41-
* :func:`~iris.cube.Cube.component` and :func:`~iris.cube.Cube.components`:
42-
get one or more components from a cube
43-
* :func:`~iris.cube.Cube.add_component`: add a component to a cube
44-
* :func:`~iris.cube.Cube.remove_component`: remove a component from a cube
45-
* :func:`~iris.cube.Cube.component_dims`: return the cube dimension(s)
46-
spanned by a component.
47-
48-
(:issue:`5819`, :pull:`6854`)
49-
50-
#. `@ESadek-MO`_ added functionality to allow :func:`~iris.cube.Cube.concatenate`,
51-
:func:`~iris.cube.Cube.rolling_window` and :func:`~iris.cube.Cube.intersection`
52-
to work with dataless cubes. (:pull:`6860`, :pull:`6757`)
53-
54-
#. `@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`)
33+
#. N/A
5534

56-
#. `@stephenworsley`_ added the coordinate method :meth:`~iris.coords.Coord.as_string_arrays`
57-
and the class :class:`~iris.coords.PointBoundStrings` to help represent points and
58-
bounds data on coordinates. This adapts code suggestions by `@rcomer`_ and `@vsherratt`_. (:issue:`4508`, :pull:`6978`)
5935

6036
🐛 Bugs Fixed
6137
=============
@@ -78,12 +54,7 @@ This document explains the changes made to Iris for this release
7854
🔥 Deprecations
7955
===============
8056

81-
#. `@ESadek-MO`_ has deprecated the :class:`~iris.tests.IrisTest` class, and other unittest-based
82-
testing conveniences in favour of the conveniences found in :mod:`iris/tests/_shared_utils.py`.
83-
(:pull:`6950`)
84-
85-
#. `@hsteptoe`_ has deprecated the use of the `copy` kwarg across :mod:`iris.pandas` to reflect changes
86-
to the default behaviour of pandas v3 `New pandas v3 copy behaviour`_. (:pull:`6948`)
57+
#. N/A
8758

8859

8960
🔗 Dependencies
@@ -95,68 +66,21 @@ This document explains the changes made to Iris for this release
9566
📚 Documentation
9667
================
9768

98-
#. `@tkknight`_ reduced the space used on the documentation homepage by the quick
99-
link cards to allow for easier reading. (:pull:`6886`)
100-
101-
#. `@tkknight`_ added a gallery carousel to the documentation homepage. (:pull:`6884`)
102-
103-
#. :user:`bjlittle` added the ``:user:`` `extlinks`_ ``github`` user convenience.
104-
(:pull:`6931`)
105-
106-
#. `@pp-mo`_ added a page on how to access datafiles in S3 buckets.
107-
(:issue:`6374`, :pull:`6951`)
108-
109-
#. `@trexfeathers`_, `@stephenworsley`_, `@ESadek-MO`_ and `@tkknight`_ reorganised **all**
110-
user documentation pages into a new structure: :doc:`/user_manual/index`.
111-
This restructure is to maximise discoverability of the available pages, as
112-
well as embracing the `Diataxis`_ framework for better engagement with user
113-
needs going forward. (:issue:`6511`, :pull:`6868`)
69+
#. N/A
11470

11571

11672
💼 Internal
11773
===========
11874

119-
#. `@trexfeathers`_ and `@hdyson`_ updated ``_ff_replacement.py`` to clarify
120-
that Iris supports Ancillaries. (:pull:`6792`)
121-
122-
#. `@trexfeathers`_ adapted ``test_OceanSigmaZFactory`` for NumPy 2.4 - only
123-
0-dimensional arrays can now be converted to scalars. (:pull:`6876`)
124-
125-
#. `@trexfeathers`_ updated benchmarking to source Mule from its new home:
126-
https://github.com/MetOffice/mule . (:pull:`6879`)
127-
128-
#. `@tkknight`_ removed flake8, we have ruff now instead. (:pull:`6889`)
129-
130-
#. `@trexfeathers`_ and `@ukmo-ccbunney`_ updated CI to support Python 3.14
131-
inline with `SPEC0 Minimum Supported Dependencies`_. Note: `pyvista` (and
132-
hence `geovista`) is not yet compatible with Python 3.14, so
133-
:mod:`iris.experimental.geovista` is currently only available for
134-
Python \<3.14. (:pull:`6816`, :issue:`6775`)
135-
136-
#. `@ESadek-MO`_, `@trexfeathers`_, `@bjlittle`_, `@HGWright`_, `@pp-mo`_,
137-
`@stephenworsley`_ and `@ukmo-ccbunney`_ converted the entirity of the tests
138-
from unittest to pytest. Iris is now also ruff-PT compliant, save for PT019.
139-
(:issue:`6212`, :pull:`6939`)
140-
141-
#. `@hsteptoe`_ and `@ESadek-MO`_ (reviewer) updated chained assignment useage within the tests
142-
associated with :mod:`iris.pandas` to reflect changes in pandas v3 `New pandas v3 copy behaviour`_.
143-
(:pull:`6948`, :issue:`6761`)
144-
145-
#. `@hsteptoe`_ and `@ESadek-MO`_ (reviewer) added static type hinting to :mod:`iris.pandas`. (:pull:`6948`)
75+
#. N/A
14676

147-
#. `@ukmo-ccbunney`_ changed formatting of numpy scalars attributes when generating a
148-
Cube/Coord summary to use ``str`` representation instead of ``repr``.
149-
(:pull:`6966`, :issue:`6692`)
15077

15178
.. comment
15279
Whatsnew author names (@github name) in alphabetical order. Note that,
15380
core dev names are automatically included by the common_links.inc:
15481
155-
.. _@hdyson: https://github.com/hdyson
156-
.. _@hsteptoe: https://github.com/hsteptoe
15782
158-
.. comment
159-
Whatsnew resources in alphabetical order:
16083
161-
.. _New pandas v3 copy behaviour: https://pandas.pydata.org/docs/whatsnew/v3.0.0.html#consistent-copy-view-behaviour-with-copy-on-write
162-
.. _SPEC0 Minimum Supported Dependencies: https://scientific-python.org/specs/spec-0000/
84+
85+
.. comment
86+
Whatsnew resources in alphabetical order:

0 commit comments

Comments
 (0)