Versions and Change Notes#

Project Development Status#

We intend to follow PEP 440, or (older) SemVer versioning principles. This means the version string has the basic form “major.minor.bugfix[special-types]”.

Current release version is at : 0.4.0.dev11

This is a complete implementation, with functional operational of all public APIs. The code is however still experimental, and APIs are not stable (hence no major version yet).

Change Notes#

Summary of key features by release number.

ncdata 0.4.0.dev11 (2026-03-31)#

Developer and Internal changes#

  • Moved repo to SciTools organisation. (ISSUE#192)

  • Fixed xarray load tests for new behaviour of xarray.Dataset.identical. (ISSUE#195)

  • Fix links broken by move to SciTools. (ISSUE#198)

  • When a linkcheck fails, return that errorcode from the Linkcheck action. (ISSUE#202)

ncdata 0.3.2 (2025-12-01)#

A bugfix release, just to allow working with Python 3.10.

Bug Fixes#

  • Made indexing work with Python v3.10. (ISSUE#183)

Developer and Internal changes#

  • Support more Python versions: now allowing >=3.10 and no longer limiting <3.14. CI testing now against 3.10 / 3.11 / 3.12 / 3.13. (ISSUE#186)

v0.3.1 (2025-11-06)#

A minor release to replace v0.3.0, fixing some test errors introduced by the latest xarray (2025.10.1).

Note

Note on Python v3.14

At present (Nov 2025), a number of dependencies do not work with Python 3.14 – notably Iris.

These will probably be fixed soon, but for now we aren’t testing ncdata with Python 3.14.

Core operations do appear to function with Python 3.14, but correct operation can’t be guaranteed until we specifically adopt it.

Documentation changes#

  • Document how to create a developer installation. (ISSUE#174)

Developer and Internal changes#

  • Fix xarray 2025.09.1 problem. (ISSUE#173)

  • Test against given Python versions : currently 3.12 and 3.13. Not python 3.14, for now, due to emerging problems with dependencies (notably Iris). (ISSUE#175)

v0.3.0#

Added handy utilities; made attribute access easier; reworked documentation.

Features#

  • Added the ability to extract a sub-region by indexing/slicing over dimensions. The ncdata.NcData objects can be indexed with the [] operation, or over specifed dimensions with the slicer() method. This is based on the new index_by_dimensions() utility method and Slicer class. See: Sub-indexing (ISSUE#68)

  • Added the rename_dimension() utility. This provides a “safe” dimension rename, which also replaces the name in all variables which use it. (ISSUE#87)

  • Added the “.avals” property as an easier way of managing attributes: This provides a simple “name: value” map, bypassing the NcAttribute objects and converting values to and from simple Python equivalents. This effectively replaces the older ‘set_attrval’ and ‘get_attrval’, which will eventually be removed. See: NcData and NcVariable “.attributes” and “.avals” (ISSUE#117)

  • Make to_iris() use the full iris load processing, instead of iris.fileformats.netcdf.loader.load_cubes(). This means you can use load controls such as callbacks and constraints. (ISSUE#131)

  • Provide exact == and != for datasets and variables, by just calling the difference utilities. This can be inefficient, but is simple to understand and generally useful. See: Equality Testing (ISSUE#166)

Documentation changes#

Bug Fixes#

  • Fixed a bug in dataset comparison, where variables with missing or unbroadcastable data arrays could cause errors rather than generating difference messages. (ISSUE#153)

Developer and Internal changes#

  • Switch to towncrier for whats-new management. (ISSUE#116)

  • Added regular linkcheck gha. (ISSUE#123)

  • @valeriupredoi added test for Zarr conversion to Iris cubes. (ISSUE#145)

v0.2.0#

Overhauled data manipulation APIs. Expanded and improved documentation.

  • @pp-mo Reviewed, corrected, reorganised and expanded all documentation. Added description section on core classes and operations, and how-to snippets. (PR#109).

  • @pp-mo Unpin Numpy to support versions >= 2.0 (PR#112).

  • @pp-mo Added crude dimension-based load chunking control. (PR#108).

  • @pp-mo Support equality testing (==) of dimensions and attributes. (PR#107).

  • @pp-mo Enforce that NcAttribute.value is always an 0- or 1-D array. (PR#106).

  • @pp-mo Support copy as utility, and as core classes copy() methods. (PR#98).

  • @pp-mo Support a simple {name: value} map for attributes in data constructors. (PR#71).

  • @pp-mo Make dataset comparison routines a public utility. (PR#70).

  • @pp-mo initial Sphinx documentation (PR#76).

  • @trexfeathers added a Logo (PR#75).

  • @pp-mo added Save errors util (PR#64).

v0.1.1#

Small tweaks + bug fixes. Note: PR#62, and PR#59 are important fixes to achieve intended performance goals, i.e. moving arbitrarily large data via Dask without running out of memory.

v0.1.1 on GitHub

  • Stop non-numpy attribute values from breaking attribute printout. PR#63

  • Stop ncdata.iris.from_iris() consuming full data memory for each variable. PR#62

  • Provide convenience APIs for ncdata component dictionaries and attribute values. PR#61

  • Use dask chunks="auto" in ncdata.netcdf4.from_nc4(). PR#59

v0.1.0#

First release

v0.1.0 on GitHub