Skip to content

Commit 0719ff4

Browse files
committed
Merge branch 'main' into ugrid-write
2 parents ff70281 + bb01e7c commit 0719ff4

5,056 files changed

Lines changed: 98397 additions & 90267 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/run-test-suite.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,11 @@ jobs:
146146
# Also, it means code coverage is only generated if the test suite is
147147
# passing at least for that job, avoiding useless coverage reports.
148148
uses: codecov/codecov-action@v3
149+
# Warning: GitHub Actions expressions require single-quoted strings.
150+
# Double quotes will break workflow validation (even though YAML allows
151+
# them). So don't change the quoting below.
149152
if: |
150-
matrix.os == "ubuntu-latest" && matrix.python-version == "3.10"
153+
matrix.os == 'ubuntu-latest' && matrix.python-version == '3.10'
151154
with:
152155
file: |
153156
${{ github.workspace }}/main/cf/test/cf_coverage_reports/coverage.xml

.pre-commit-config.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ repos:
1010
# Use specific format-enforcing pre-commit hooks from the core library
1111
# with the default configuration (see pre-commit.com for documentation)
1212
- repo: https://github.com/pre-commit/pre-commit-hooks
13-
rev: v4.6.0
13+
rev: v6.0.0
1414
hooks:
1515
- id: check-ast
1616
- id: debug-statements
@@ -23,7 +23,7 @@ repos:
2323
# (see https://black.readthedocs.io/en/stable/ for documentation and see
2424
# the cf-python pyproject.toml file for our custom black configuration)
2525
- repo: https://github.com/ambv/black
26-
rev: 24.4.2
26+
rev: 25.12.0
2727
hooks:
2828
- id: black
2929
language_version: python3
@@ -53,7 +53,7 @@ repos:
5353
# (see https://flake8.pycqa.org/en/latest/ for documentation and see
5454
# the cf-python .flake8 file for our custom flake8 configuration)
5555
- repo: https://github.com/PyCQA/flake8
56-
rev: 7.1.0
56+
rev: 7.3.0
5757
hooks:
5858
- id: flake8
5959

@@ -62,7 +62,7 @@ repos:
6262
# compatible with 'black' with the lines set to ensure so in the repo's
6363
# pyproject.toml. Other than that and the below, no extra config is required.
6464
- repo: https://github.com/pycqa/isort
65-
rev: 5.13.2
65+
rev: 7.0.0
6666
hooks:
6767
- id: isort
6868
name: isort (python)

Changelog.rst

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
Version NEXTVERSION
1+
Version 3.19.0
22
--------------
33

4-
**2026-01-??**
4+
**2026-01-19**
55

66
* Write Zarr v3 datasets with `cf.write`
77
(https://github.com/NCAS-CMS/cf-python/issues/895)
88
* Read Zarr v2 and v3 datasets that contain a group hierarchy with
99
`cf.read` (https://github.com/NCAS-CMS/cf-python/issues/894)
1010
* Reduce the time taken to import `cf`
1111
(https://github.com/NCAS-CMS/cf-python/issues/902)
12-
* New optional dependency: ``zarr>=3.1.3``
1312
* New function to control the creation of cached elements during data
1413
display: `cf.display_data`
1514
(https://github.com/NCAS-CMS/cf-python/issues/913)
@@ -23,7 +22,8 @@ Version NEXTVERSION
2322
(https://github.com/NCAS-CMS/cf-python/issues/902)
2423
* Reduce the time taken to import `cf`
2524
(https://github.com/NCAS-CMS/cf-python/issues/902)
26-
* Changed dependency: ``cfdm>=1.12.4.0, <1.12.5.0``
25+
* New optional dependency: ``zarr>=3.1.3``
26+
* Changed dependency: ``cfdm>=1.13.0.0, <1.13.1.0``
2727

2828
----
2929

@@ -1214,7 +1214,6 @@ version 2.2.4
12141214

12151215
version 2.2.3
12161216
--------------
1217-
----
12181217

12191218
**2018-06-21**
12201219

@@ -1253,7 +1252,6 @@ version 2.2.1
12531252

12541253
version 2.2.0
12551254
-------------
1256-
----
12571255

12581256
**2018-06-04**
12591257

@@ -1320,7 +1318,6 @@ version 2.1.3
13201318

13211319
version 2.1.2
13221320
-------------
1323-
----
13241321

13251322
**2017-11-28**
13261323

@@ -1353,7 +1350,6 @@ version 2.1
13531350

13541351
version 2.0.6
13551352
-------------
1356-
----
13571353

13581354
**2017-09-28**
13591355

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ of its array manipulation and can:
9696
* test whether two field constructs are the same,
9797
* modify field construct metadata and data,
9898
* create subspaces of field constructs,
99-
* write field constructs to netCDF datasets on disk,
10099
* incorporate, and create, metadata stored in external files,
101100
* read, write, and create data that have been compressed by convention
102101
(i.e. ragged or gathered arrays, or coordinate arrays compressed by

RELEASE.md

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@
2626
- [ ] Ensure that the requirements on dependencies & their versions
2727
are up-to-date and consistent in both the `requirements.txt` and in
2828
`docs/source/installation.rst` (paying particular attention to
29-
`cfdm`); and in the `_requires` list and `Version` checks in
30-
`cf/__init__.py`.
29+
`cfdm`); and in the cfdm-only `Version` checks in `cf/__init__.py`.
3130

3231
- [ ] Make sure that `README.md` is up to date.
3332

@@ -40,7 +39,7 @@
4039
deprecated methods and keyword arguments that can be completely
4140
removed, i.e. those with a ``removed_at`` version that is at or
4241
before the version being released. Remove any reference to them in
43-
the method, class, or fucntion (including, if appropriate, the
42+
the method, class, or function (including, if appropriate, the
4443
``@_deprecated_kwarg_check`` decorator), and remove them from the
4544
relevant documentation ``.rst`` files.
4645

@@ -67,10 +66,6 @@
6766
./test_tutorial_code
6867
```
6968

70-
- [ ] **Follow all of the steps outlined externally in [`RECIPES.md`](./RECIPES.md)**,
71-
notably so that the correct Sphinx-related environment is prepared for
72-
documentation building.
73-
7469
- [ ] Ensure that the [PDF for Cheat Sheet](docs/_downloads/cheatsheet.pdf)
7570
is updated to include any API changes. The PDF is created using Canva
7671
keeping in mind the colours and fonts of the website. The same could

cf/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,16 @@
8585
from packaging.version import Version
8686

8787

88-
__date__ = "2025-10-16"
89-
__version__ = "3.18.2"
88+
__date__ = "2026-01-19"
89+
__version__ = "3.19.0"
9090
__cf_version__ = cfdm.__cf_version__
9191
__Conventions__ = f"CF-{__cf_version__}"
9292

9393
# Check the version of cfdm (this is worth doing because of the very
9494
# tight coupling between cf and cfdm, and the risk of bad things
9595
# happening at run time if the versions are mismatched).
96-
_minimum_vn = "1.12.3.1"
97-
_maximum_vn = "1.12.4.0"
96+
_minimum_vn = "1.13.0.0"
97+
_maximum_vn = "1.13.1.0"
9898
_cfdm_vn = Version(cfdm.__version__)
9999
if _cfdm_vn < Version(_minimum_vn) or _cfdm_vn >= Version(_maximum_vn):
100100
raise RuntimeError(

cf/functions.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ def configuration(
251251
The new display data option. The default is to not change
252252
the current behaviour.
253253
254-
.. versionadded:: NEXTVERSION
254+
.. versionadded:: 3.19.0
255255
256256
regrid_logging: `bool` or `Constant`, optional
257257
The new value (either True to enable logging or False to
@@ -1504,7 +1504,7 @@ def total_memory():
15041504
def is_log_level_info(logger):
15051505
"""Return True if and only if log level is at least as verbose as INFO.
15061506
1507-
Deprecated at version NEXTVERSION and is no longer available. Use
1507+
Deprecated at version 3.19.0 and is no longer available. Use
15081508
`cfdm.is_log_level_info` instead.
15091509
15101510
.. versionadded:: 3.16.3
@@ -1525,7 +1525,7 @@ def is_log_level_info(logger):
15251525
_DEPRECATION_ERROR_FUNCTION(
15261526
"is_log_level_info",
15271527
message="Use cfdm.is_log_level_info instead",
1528-
version="NEXTVERSION",
1528+
version="3.19.0",
15291529
removed_at="5.0.0",
15301530
) # pragma: no cover
15311531

cf/read_write/read.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ class read(cfdm.read):
318318
319319
{{read store_dataset_shards: `bool`, optional}}
320320
321-
.. versionadded:: NEXTVERSION
321+
.. versionadded:: 3.19.0
322322
323323
{{read cfa: `dict`, optional}}
324324
@@ -334,7 +334,7 @@ class read(cfdm.read):
334334
335335
{{read group_dimension_search: `str`, optional}}
336336
337-
.. versionadded:: NEXTVERSION
337+
.. versionadded:: 3.19.0
338338
339339
umversion: deprecated at version 3.0.0
340340
Use the *um* parameter instead.

docs/2_to_3_changes.html

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,12 @@
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
77

88
<title>Incompatible differences between versions 2.x and 3.x &#8212; Documentation</title>
9-
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b3523f8e" />
10-
<link rel="stylesheet" type="text/css" href="_static/alabaster.css?v=541523b4" />
9+
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=61cd365c" />
10+
<link rel="stylesheet" type="text/css" href="_static/alabaster.css?v=a5d0ad34" />
1111
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
1212
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
13-
<link rel="stylesheet" type="text/css" href="_static/sg_gallery.css?v=61a4c737" />
14-
<link rel="stylesheet" type="text/css" href="_static/sg_gallery-binder.css?v=ca3c1c84" />
15-
<link rel="stylesheet" type="text/css" href="_static/sg_gallery-dataframe.css?v=e5fbc548" />
16-
<link rel="stylesheet" type="text/css" href="_static/sg_gallery-rendered-html.css?v=1277b6f3" />
1713
<link rel="stylesheet" type="text/css" href="_static/customise-alabaster.css?v=5dec66a6" />
18-
<script src="_static/documentation_options.js?v=5318ce95"></script>
14+
<script src="_static/documentation_options.js?v=b14d8abf"></script>
1915
<script src="_static/doctools.js?v=9a2dae69"></script>
2016
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
2117
<script src="_static/clipboard.min.js?v=a7894cd8"></script>
@@ -27,21 +23,22 @@
2723

2824
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
2925

26+
27+
3028

31-
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
3229

3330
</head><body>
3431
<div class="document">
3532

36-
<div class="sphinxsidebar" role="navigation" aria-label="Main">
33+
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
3734
<div class="sphinxsidebarwrapper">
3835
<p class="logo"><a href="index.html">
39-
<img class="logo" src="_static/logo.svg" alt="Logo of Python cf package"/>
36+
<img class="logo" src="_static/logo.svg" alt="Logo"/>
4037
</a></p>
4138

4239

4340

44-
<h1 class="logo"><a href="index.html">cf 3.18.2</a></h1>
41+
<h1 class="logo"><a href="index.html">cf 3.19.0</a></h1>
4542

4643

4744

@@ -105,11 +102,11 @@ <h3>Related Topics</h3>
105102
and by <a href="https://ncas.ac.uk/">NCAS</a>.
106103
<br>
107104
<br>
108-
<img src="_templates/logo_EC.png" height="40">
109-
<img src="_templates/logo_ERC.png" height="40">
110-
<img src="_templates/logo_NERC.png" height="40">
105+
<img src="_static/logo_EC.png" height="40">
106+
<img src="_static/logo_ERC.png" height="40">
107+
<img src="_static/logo_NERC.png" height="40">
111108
<br>
112-
<img src="_templates/logo_NCAS.png" height="40">
109+
<img src="_static/logo_NCAS.png" height="40">
113110
</div>
114111
</div>
115112
<div class="documentwrapper">
@@ -478,11 +475,11 @@ <h2>Changes to the API of existing methods<a class="headerlink" href="#changes-
478475
<div class="clearer"></div>
479476
</div>
480477
<div class="footer">
481-
&copy;2025, NCAS | Page built on 2025-10-16.
478+
&#169;2026, NCAS | Page built on 2026-01-19.
482479

483480
|
484-
Powered by <a href="http://sphinx-doc.org/">Sphinx 7.4.7</a>
485-
&amp; <a href="https://github.com/sphinx-doc/alabaster">Alabaster 0.7.14</a>
481+
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 7.3.7</a>
482+
&amp; <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
486483

487484
</div>
488485

0 commit comments

Comments
 (0)