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#
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#
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.NcDataobjects can be indexed with the[]operation, or over specifed dimensions with theslicer()method. This is based on the newindex_by_dimensions()utility method andSlicerclass. 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 ofiris.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#
Added a userguide page summarising all the utility features in
ncdata.utils. (ISSUE#161)Made all docs examples into doctests; add doctest CI action. (ISSUE#136)
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#
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 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).
@trexfeathers added a Logo (PR#75).
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.0#
First release