Skip to content

Releases: hdmf-dev/hdmf

5.1.0

24 Mar 04:55
1656a31

Choose a tag to compare

hdmf 5.1.0

5.0.1

17 Mar 04:14
935f58d

Choose a tag to compare

hdmf 5.0.1

5.0.0

03 Mar 00:53
ef5b390

Choose a tag to compare

HDMF 5.0.0 (March 2, 2026)

Changed

  • Refactored TypeMap.load_namespaces to register TypeSource placeholders for both source types and dependent types, enabling lazy class generation. Added NamespaceCatalog.get_source_types to get source types loaded for a namespace. Removed TypeMap.container_types property. Converted TypeSource to a frozen dataclass. @rly #1372
  • New spec resolution system: Instead of resolving includes during spec loading, resolution now happens after all specs are loaded via NamespaceCatalog.resolve_all_specs(). @rly #1312, #1392
    • New methods: BaseStorageSpec.resolve_inc_spec() replaces the old BaseStorageSpec.resolve_spec() method
    • Resolution tracking: New properties BaseStorageSpec.resolved and BaseStorageSpec.inc_spec_resolved track resolution state
    • Cross-namespace resolution: The system can now resolve specs that include types from different namespaces
    • dtype, shape, dims, value, and default_value in DatasetSpec and AttributeSpec are now inherited and validated from the parent data type spec
  • If dims are not provided in a DatasetSpec or AttributeSpec, but shape is provided, dims will be set to a list of dummy dimension names, e.g., "dim_0", "dim_1", etc. @rly #1312
  • Deprecated BaseStorageSpec.add_attribute, GroupSpec.add_group, GroupSpec.add_dataset, and GroupSpec.add_link. Use set_attribute, set_group, set_dataset, and set_link instead. @rly #1333
  • Deprecated unused BaseStorageSpec.get_data_type_spec and BaseStorageSpec.get_namespace_spec. @rly #1333
  • Moved test, docs, and min-reqs from [project.optional-dependencies] to [dependency-groups] (PEP 735). min-reqs was renamed to test-min-deps. @rly #1395
  • Removed test-min-deps dependency group and replaced it with uv pip install --resolution lowest-direct in tox, making the project compatible with uv. @h-mayorquin #1408
  • Changed get_data_shape to check shape before maxshape, so that objects with both attributes (e.g., h5py datasets) return their actual shape rather than their maximum shape. @rly #1180

Removed

  • Dropped support for Python 3.9. The minimum supported version is now Python 3.10. @rly #xxx
  • Replaced typing library calls with Python 3.10+ built-in type syntax (X | Y, X | None, type[X], tuple[X], etc.). @rly #xxx
  • Removed unused and undocumented hdmf.monitor module. @rly #1327
  • Removed deprecated Data.set_data_io usage and HERDManager methods. @rly #1328
  • Removed deprecated HDF5IO.copy_file method. Use the HDF5IO.export or the h5py.File.copy method instead. @stephprince #1332
  • Removed deprecated extensions kwarg for get_type_map function. @stephprince #1332
  • Removed unused and unnecessary NamespaceToBuilderHelper.get_source_path method. @rly #1392
  • Deprecated TypeMap.copy_mappers method. Use TypeMap.merge instead with the argument ns_catalog=False to copy only mappers without namespaces. @rly #1372

Added

  • Added expandable parameter to HDF5IO.write (default True) that makes all non-scalar datasets expandable by setting maxshape based on the matching shape defined in the spec. Pass expandable=False to disable this behavior. @rly #1180
  • Added support for HDMF Common Schema 1.9.0.
    • Introduced a new data type MeaningsTable and changes to DynamicTable to support included MeaningsTable objects. @rly #1376
    • Promoted HERD from the hdmf-experimental namespace to the HDMF Common namespace. @rly #1387
  • Added a check when setting or adding data to a DynamicTableRegion or setting the table attribute of a DynamicTableRegion
    that the data values are in bounds of the linked table. This can be turned off for
    DynamicTableRegion.__init__ using the keyword argument validate_data=False. @rly #1168
  • Added warning when data_type_def and data_type_inc are the same in a spec. @rly #1312
  • Added abstract methods HDMFIO.load_namespaces and HDMFIO.load_namespaces_io. @rly #1299

Enhancements

  • Reduced memory allocations in DynamicTable.add_column(..., index=True) ragged column flattening by using np.concatenate instead of list(itertools.chain.from_iterable(...)) when all entries are compatible numpy arrays. @h-mayorquin #1403

Fixed

  • Fixed register_container_type overwriting the reverse class-to-namespace map when an extension calls include_namespace("core"), which caused core types to be stamped with the extension's namespace. @h-mayorquin, @rly #1407
  • Fixed VectorData.extend() silently corrupting 1D numpy arrays by reshaping them into 2D matrices. Replaced np.vstack with np.concatenate in extend_data. @h-mayorquin #1405
  • Fixed validation of Python native float and int values against float64 and int64 specs. Python float is 64-bit but was mapped to float32, and Python int is 64-bit (or larger) but was mapped to int32. @rly #1410
  • Fixed a broken test and refactored VectorIndex.get. @rly, @mavaylon1 #1293
  • Fixed missing timezone validation for isodatetime values in AttributeSpec and DatasetSpec. @sejalpunwatkar #1399

Latest (updated on 2026-03-03 00:03 UTC)

03 Mar 00:46
ef5b390

Choose a tag to compare

latest

Prepare 5.0.0 release (#1402)

4.3.1

28 Jan 17:32
d812ff8

Choose a tag to compare

HDMF 4.3.1 (January 28, 2026)

Added

  • Added _repr_html_ method to LabelledDict for interactive HTML display in notebooks. @h-mayorquin #1381

Changed

  • Restricted pandas version to <3 until support for pandas v3 is added. @rly #1385

Fixed

  • Fixed issue with with testing and deployment of releases. @rly #1383

HDMF 4.3.0 (January 22, 2026)

Added

Changed

  • Added a collapsible "columns" section to the DynamicTable HTML representation that displays column descriptions, making it easier to inspect column metadata in notebooks. @h-mayorquin #1369
  • Added ability to create specs with circular dependencies, e.g., Type A contains Type B, and Type B extends Type A, or Type A contains a reference to Type A (self-reference). @rly #1374

Fixed

  • Fixed issue where a container was assigned to an incorrect namespace. @rly #1373

4.2.0

18 Dec 18:49
af41ee8

Choose a tag to compare

Added

  • Added an argument copy to get_type_map to control whether a copy of the type map is returned or not.
    If copy=False, the returned type map will be a direct reference to the global type map. @rly
    #1352

Changed

  • Changed HTML representation to display the data_type for nested containers, showing the type in parentheses next to the name (e.g., MyTimeSeries (TimeSeries)). @h-mayorquin #1355
  • Changed how to call BuildManager.build, TypeMap.build, and ObjectMapper.build when exporting. The export argument is no longer accepted by TypeMap.build and ObjectMapper.build; BuildManager.build still accepts the export argument but now uses it to set an internal flag instead of passing it through the call chain. @rly #1358
  • Changed HTML representation of MultiContainerInterface to flatten the grouping attribute when only
    one grouping is defined (len(__clsconf__) == 1), removing the redundant nesting level since users
    can access children directly via container["name"]. @h-mayorquin #1354

Fixed

  • Fixed bug when validating string datasets in NWB Zarr files. @stephprince #1348
  • Fixed a performance regression that affected calling setters of HDMF Common data types. @rly #1352
  • Updated GitHub Actions runners to not use the deprecated macos-13 runner. @rly #1363

4.1.2

12 Nov 17:56
4.1.2
b288957

Choose a tag to compare

Fixed

  • Fixed bug when converting string datasets that are Zarr arrays. @oruebel @rly #1171
  • Fixed unclear shape validation error message. @bendichter @rly #787
  • Fixed testing of sphinx gallery examples with optional dependencies. @rly #1343

4.1.1

23 Oct 02:20
4.1.1
68ab20f

Choose a tag to compare

Fixed

  • Fixed copying of TypeMap and TypeConfigurator. Previously, the same global TypeConfigurator instance was used in all copies of a TypeMap. @rly #1302
  • Fixed get_data_shape to use Data.data.shape instead of Data.shape, which may be overridden by subclasses. @rly #1311
  • Fixed HTML representation of datasets when reading from LINDI. @bendichter #1335
  • Fixed bug where compound datatypes were disregarding custom data I/O options with the zarr backend. @pauladkisson #1297

Added

  • Added a check for a compound datatype that is not defined in the schema or spec. This is currently not supported. @mavaylon1 #1276
  • Added checks when loading a namespace for link specification conflicts between extension and core schemas. @stephprince #1309
  • Added GitHub Actions workflow that tests compatibility with NWB extensions from the NWB extensions catalog. @rly #1319
  • Added unit tests for hdmf.common module to improve code coverage. @stephprince #1330

Changed

  • Changed error for attempting to overwrite an existing specification into a warning that any specification redefinitions will be ignored. @stephprince #1309
  • Deprecated the experimental HERDManager.link_resources and HERDManager.link_external_resources and added the property HERDManager.external_resources to support downstream API function overloading. @mavaylon1, @rly #1292

4.1.0

28 May 19:02
26acff5

Choose a tag to compare

Enhancements

  • Optimized get within VectorIndex to be more efficient when retrieving a dataset of references. @mavaylon1 #1248
  • Enhanced warnings about ignoring cached namespaces. @stephprince #1258
  • Added support in append for same dimensional args for numpy arrays. @mavaylon1 #1261
  • Improved error messages when optional requirements are not installed. @rly #1263
  • Updated Extension documentation. Renamed ClassGenerator to ClassGeneratorManager. @mavaylon1#1268

Changed

  • Removed requirements-min.txt in favor of the min-reqs optional dependency group in pyproject.toml. @rly #1246
  • Updated GitHub actions and ruff configuration. @rly #1246
  • hdmf.monitor is unused and undocumented. It has been deprecated and will be removed in HDMF 5.0. @rly #1245
  • Restricted numcodecs dependency to <0.16 due to incompatibility with the latest zarr<3 version. @rly #1257
  • Increased minimum requirement for optional schemasheets dependency to 0.4.0rc1 due to incompatibility with linkml-runtime. @rly #1263
  • Refactored YamlSpecWriter.sort_keys to be a static method so that it can be cleanly used elsewhere. @rly #1274

Fixed

  • Fixed get_data_shape returning the wrong shape for lists of Data objects. @rly #1270
  • Added protection against complex numbers in arrays and other data types. @bendichter #1279

4.0.0

23 Jan 05:29
4.0.0
b8a1a26

Choose a tag to compare

HDMF 4.0.0 (January 22, 2025)

Breaking changes

  • The following classes have been deprecated and removed: Array, AbstractSortedArray, SortedArray, LinSpace, Query, RegionSlicer, ListSlicer, H5RegionSlicer, DataRegion, RegionBuilder. The following methods have been deprecated and removed: fmt_docval_args, call_docval_func, get_container_cls, add_child, set_dataio (now refactored as set_data_io). We have also removed all early development for region references. @mavaylon1, @rly #1998, #1212
  • Importing from hdmf.build.map is no longer supported. Import from hdmf.build instead. @rly #1221
  • Python 3.8 has reached end of life. Dropped support for Python 3.8 and add support for Python 3.13. @mavaylon1 #1209
  • Support for Zarr is limited to versions < 3. @rly #1229
  • Scipy is no longer a required dependency. Users using the CSRMatrix data type should install scipy separately or with pip install "hdmf[sparse]". @rly #1140

Changed

  • Added checks to ensure that group and dataset spec names and default names do not contain slashes. @bendichter #1219
  • Updated copyright dates. @rly #1230
  • Created optional dependency groups in pyproject.toml and update GitHub Actions workflows to use those instead of requirements files. @rly #1230
  • Stopped using pinned dependencies in the docs and testing. These are not necessary for library testing, confuse new users and developers, and add maintenance burden. Current dependencies are stable enough that they need not be pinned and users can report the libraries they use. @rly #1230
  • Stopped redundant testing using a conda environment. @rly #1230
  • Adopted changelog format conventions: https://keepachangelog.com/en/1.1.0/ . @rly #1230

Added

  • Added script to check Python version support for HDMF dependencies. @rly #1230

Fixed

  • Fixed issue with DynamicTable.add_column not allowing subclasses of DynamicTableRegion or EnumData. @rly #1091