Skip to content

Releases: NCAS-CMS/cfdm

1.13.1.0

09 Apr 17:16

Choose a tag to compare

2026-04-09

  • Read Kerchunk datasets with cfdm.read (#385)
  • Read open file handle datasets with cfdm.read (#401)
  • Write UGRID datasets with cfdm.write (#271)
  • New keyword to cfdm.read: filesystem (#397)
  • New keyword parameter to cfdm.Data.compute: persist (#389)
  • New function to control the persistence of computed data: cfdm.persist_data (#389)
  • Support for HEALPix grids (#370)
  • New default backend for netCDF-4 in cfdm.write: h5netcdf-h5py, that allows control of the internal file metadata via the new h5py_options parameter (#386)
  • New default backend for netCDF-4 in cfdm.read that allows parallel reading: h5netcdf-pyfive (#375)
  • New optional backend for netCDF-3 in cfdm.read that allows parallel reading: netcdf_file (#375)
  • Fix bug in cfdm.netcdf_indexer that sometimes caused a failure with a np.newaxis index (#395)
  • Fix bug in cfdm.read that wouldn't read non-Zarr and Zarr datasets from the same directory (#391)
  • Fix bug in cfdm.write to correctly create unlimited aggregation dimensions that correspond to unlimited normal dimensions (#387)
  • Fix bug in cfdm.write when writing identical coordinates that have different formula_terms (#380).
  • New dependency: pyfive>=1.1.1
  • New dependency: fsspec>=2026.2.0
  • Changed dependency: h5netcdf>=1.8.0
  • Removed dependency: s3fs

What's Changed

  • [Superseded by #383] Fix bug in cfdm.write when writing identical coordinates that have different "formula_terms" by @davidhassell in #381
  • Fix bug in cfdm.write when writing identical coordinates that have different "formula_terms" by @davidhassell in #383
  • Fix aggregation unlimited netCDF dimensions by @davidhassell in #387
  • Enable parallel netCDF dataset reads by @davidhassell in #384
  • New 'h5netcdf-h5py' netCDF backend in cfdm.write, and 'h5py_options' parameter by @davidhassell in #388
  • Implement HEALPix grids by @davidhassell in #371
  • Persist data after computation by @davidhassell in #390
  • Fix: Zarr and non-Zarr datasets can't be read from the same directory by @davidhassell in #392
  • Add filesystem keyword to cfdm.read for pre-authenticated fsspec backends (part 1) by @Copilot in #393
  • Add filesystem keyword to cfdm.read for pre-authenticated fsspec backends (part 2) by @davidhassell in #398
  • Fix bug in cfdm.netcdf_indexer that sometimes caused a failure with a np.newaxis index by @davidhassell in #400
  • Implementation of UGRID (part 2 of 2): Write by @davidhassell in #372
  • Read Kerchunk and file-like object datasets by @davidhassell in #402

New Contributors

  • @Copilot made their first contribution in #393

Full Changelog: v1.13.0.0...v1.13.1.0

1.13.0.0

15 Jan 15:32

Choose a tag to compare

  • Write Zarr v3 datasets with cfdm.write, and allow the reading of grouped Zarr v2 and v3 datasets with cfdm.read (#354)
  • Read Zarr v2 and v3 datasets that contain a group hierarchy with cfdm.read (#355)
  • New function cfdm.dataset_flatten that replaces the deprecated cfdm.netcdf_flatten (#355)
  • Raise IndexError for out-of-range indices in a value-setting operation on a data array (#377)
  • New function to control the creation of cached elements during data display: cfdm.display_data (#363)
  • New methods: cfdm.Data.get_cached_elements, cfdm.Data.cache_elements (#363)
  • Set cached elements during cfdm.Data.__init__ (#363)
  • Removed the cfdm.constants.CONSTANTS dictionary, replacing it with cfdm.ConstantAccess.constants (#361)
  • Reduce the time taken to import cfdm (#361)
  • New optional dependency: zarr>=3.1.3
  • Removed dependency (now optional): zarr>=3.0.8

What's Changed

Full Changelog: v1.12.3.1...v1.13.0.0

1.12.3.1

15 Oct 07:55

Choose a tag to compare

2025-10-15

  • Python 3.9 support removed (#353)
  • When changing array data type, retain cached data elements cast to the new type (#358)
  • Fix bug that prevented cfdm.read from reading a file with # characters in its file name (#356)
  • Changed dependency: Python>=3.10.0

What's Changed

Full Changelog: v1.12.3.0...v1.12.3.1

1.12.3.0

18 Aug 14:25

Choose a tag to compare

2025-08-18

  • Fix cfdm.Data.reshape when the underlying data originate on disk (#348)
  • New keyword parameter to cfdm.Field.dump: data (#345)
  • New dependency: distributed>=2025.5.1

1.12.2.0

05 Jun 13:20

Choose a tag to compare

2025-06-05

  • Implement lossy compression via quantization (#330)
  • New quantization classes: cfdm.Quantization, cfdm.mixin.QuantizationMixin (#330)
  • New quantization methods: cfdm.Field.get_quantization, cfdm.Field.get_quantize_on_write, cfdm.Field.set_quantize_on_write, cfdm.Field.del_quantize_on_write (#330)
  • Improve performance in cfdm.read by caching any array values retrieved from disk (#313)
  • New keyword parameter to cfdm.write: chunk_cache (#328)
  • Read Zarr datasets with cfdm.read (#335)
  • Read multiple datasets simultaneously with cfdm.read (#336)
  • New keyword parameters to cfdm.read: recursive, followlinks (#336)
  • New keyword parameters to cfdm.read: cdl_string (#337)
  • Update CF aggregation keywords (#341)
  • Set new minimum version of dask: 2025.5.1 (#339)
  • New dependency: zarr>=3.0.8
  • Changed dependency: dask>=2025.5.1

1.12.1.0

01 Apr 11:38

Choose a tag to compare

2025-04-01

  • Set new method cfdm.Array.astype (#331)
  • Set new maximum version of dask: 2025.3.0 (#332)
  • Changed dependency: dask>=2025.2.0,<=2025.3.0

What's Changed

Full Changelog: v1.12.0.0...v1.12.1.0

1.12.0.0

18 Mar 10:05

Choose a tag to compare

2025-03-18

  • Set new minimum version of dask: 2025.2.0 (#321)
  • Set new minimum version of numpy: 2.0.0 (#318)
  • Introduction of reading and writing of aggregation datasets (for CF-1.13) (#319)
  • Changed dependency: Python>=3.9.0
  • Changed dependency: numpy>=2.0.0
  • Changed dependency: netCDF4>=1.7.2
  • Changed dependency: cftime>=1.6.4
  • Changed dependency: dask>=2025.2.0

What's Changed

Full Changelog: v1.11.2.1...v1.12.0.0

1.11.2.1

11 Mar 14:09
ba576b5

Choose a tag to compare

2025-02-26

  • Re-introduction of cfdm.Data.datetime_as_string (#324)

What's Changed

Full Changelog: v1.11.2.0...v1.11.2.1

1.11.2.0

28 Jan 17:04

Choose a tag to compare

2025-01-28

  • Introduction of dask for all data manipulations (#317)
  • Fix bug that returned incorrect results when an invalid identifer is provided to cf.Field.cell_methods (#299)
  • Upgrades to allow cfdm to work with Python 3.12 (#302)
  • Extension to the HDF5 chunks API (#309)
  • New function cfdm.netcdf_flattener that replaces the import of netcdf_flattener (#286)
  • New function cfdm.netcdf_indexer that applies netCDF masking and unpacking to arbitrary arrays (#285)
  • Allow access to netCDF-4 files in S3 object stores (#285)
  • Allow a choice of netCDF engines (#285)
  • Fix bug that caused cfdm.write to fail when a parametric Z dimension coordinate did not have a computed_standard_name attribute (#303)
  • New class cfdm.H5netcdfArray
  • New class cfdm.NetCDF4Array
  • Changed dependency: numpy>=1.15,<2.0
  • New dependency: h5netcdf>=1.3.0
  • New dependency: h5py>=3.10.0
  • New dependency: s3fs>=2024.6.0
  • New dependency: dask>=2024.6.0,<=2024.7.1
  • Removed dependency: netcdf_flattener

What's Changed

Full Changelog: v1.11.1.0...v1.11.2.0

1.11.1.0

01 Mar 17:01

Choose a tag to compare

2024-03-01

  • New keyword parameter to cfdm.Field.insert_dimension: constructs (#287)
  • New example field 11: discrete sampling geometry trajectory features (#289)