Releases: hdmf-dev/hdmf
Releases · hdmf-dev/hdmf
5.1.0
5.0.1
5.0.0
HDMF 5.0.0 (March 2, 2026)
Changed
- Refactored
TypeMap.load_namespacesto registerTypeSourceplaceholders for both source types and dependent types, enabling lazy class generation. AddedNamespaceCatalog.get_source_typesto get source types loaded for a namespace. RemovedTypeMap.container_typesproperty. ConvertedTypeSourceto 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 oldBaseStorageSpec.resolve_spec()method - Resolution tracking: New properties
BaseStorageSpec.resolvedandBaseStorageSpec.inc_spec_resolvedtrack resolution state - Cross-namespace resolution: The system can now resolve specs that include types from different namespaces
dtype,shape,dims,value, anddefault_valueinDatasetSpecandAttributeSpecare now inherited and validated from the parent data type spec
- New methods:
- If
dimsare not provided in aDatasetSpecorAttributeSpec, butshapeis provided,dimswill 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, andGroupSpec.add_link. Useset_attribute,set_group,set_dataset, andset_linkinstead. @rly #1333 - Deprecated unused
BaseStorageSpec.get_data_type_specandBaseStorageSpec.get_namespace_spec. @rly #1333 - Moved
test,docs, andmin-reqsfrom[project.optional-dependencies]to[dependency-groups](PEP 735).min-reqswas renamed totest-min-deps. @rly #1395 - Removed
test-min-depsdependency group and replaced it withuv pip install --resolution lowest-directin tox, making the project compatible with uv. @h-mayorquin #1408 - Changed
get_data_shapeto checkshapebeforemaxshape, 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
typinglibrary 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.monitormodule. @rly #1327 - Removed deprecated
Data.set_data_iousage andHERDManagermethods. @rly #1328 - Removed deprecated
HDF5IO.copy_filemethod. Use theHDF5IO.exportor theh5py.File.copymethod instead. @stephprince #1332 - Removed deprecated
extensionskwarg forget_type_mapfunction. @stephprince #1332 - Removed unused and unnecessary
NamespaceToBuilderHelper.get_source_pathmethod. @rly #1392 - Deprecated
TypeMap.copy_mappersmethod. UseTypeMap.mergeinstead with the argumentns_catalog=Falseto copy only mappers without namespaces. @rly #1372
Added
- Added
expandableparameter toHDF5IO.write(defaultTrue) that makes all non-scalar datasets expandable by settingmaxshapebased on the matching shape defined in the spec. Passexpandable=Falseto disable this behavior. @rly #1180 - Added support for HDMF Common Schema 1.9.0.
- Added a check when setting or adding data to a
DynamicTableRegionor setting thetableattribute of aDynamicTableRegion
that the data values are in bounds of the linked table. This can be turned off for
DynamicTableRegion.__init__using the keyword argumentvalidate_data=False. @rly #1168 - Added warning when
data_type_defanddata_type_incare the same in a spec. @rly #1312 - Added abstract methods
HDMFIO.load_namespacesandHDMFIO.load_namespaces_io. @rly #1299
Enhancements
- Reduced memory allocations in
DynamicTable.add_column(..., index=True)ragged column flattening by usingnp.concatenateinstead oflist(itertools.chain.from_iterable(...))when all entries are compatible numpy arrays. @h-mayorquin #1403
Fixed
- Fixed
register_container_typeoverwriting the reverse class-to-namespace map when an extension callsinclude_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. Replacednp.vstackwithnp.concatenateinextend_data. @h-mayorquin #1405 - Fixed validation of Python native
floatandintvalues againstfloat64andint64specs. Pythonfloatis 64-bit but was mapped tofloat32, and Pythonintis 64-bit (or larger) but was mapped toint32. @rly #1410 - Fixed a broken test and refactored
VectorIndex.get. @rly, @mavaylon1 #1293 - Fixed missing timezone validation for
isodatetimevalues inAttributeSpecandDatasetSpec. @sejalpunwatkar #1399
Latest (updated on 2026-03-03 00:03 UTC)
latest Prepare 5.0.0 release (#1402)
4.3.1
HDMF 4.3.1 (January 28, 2026)
Added
- Added
_repr_html_method toLabelledDictfor interactive HTML display in notebooks. @h-mayorquin #1381
Changed
Fixed
HDMF 4.3.0 (January 22, 2026)
Added
- Added support for Python 3.14. @bendichter #1366
Changed
- Added a collapsible "columns" section to the
DynamicTableHTML 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
4.2.0
Added
- Added an argument
copytoget_type_mapto control whether a copy of the type map is returned or not.
Ifcopy=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_typefor 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, andObjectMapper.buildwhen exporting. Theexportargument is no longer accepted byTypeMap.buildandObjectMapper.build;BuildManager.buildstill accepts theexportargument but now uses it to set an internal flag instead of passing it through the call chain. @rly #1358 - Changed HTML representation of
MultiContainerInterfaceto flatten the grouping attribute when only
one grouping is defined (len(__clsconf__) == 1), removing the redundant nesting level since users
can access children directly viacontainer["name"]. @h-mayorquin #1354
Fixed
4.1.2
4.1.1
Fixed
- Fixed copying of
TypeMapandTypeConfigurator. Previously, the same globalTypeConfiguratorinstance was used in all copies of aTypeMap. @rly #1302 - Fixed
get_data_shapeto useData.data.shapeinstead ofData.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_resourcesandHERDManager.link_external_resourcesand added the propertyHERDManager.external_resourcesto support downstream API function overloading. @mavaylon1, @rly #1292
4.1.0
Enhancements
- Optimized
getwithinVectorIndexto 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
ClassGeneratortoClassGeneratorManager. @mavaylon1#1268
Changed
- Removed
requirements-min.txtin favor of themin-reqsoptional dependency group inpyproject.toml. @rly #1246 - Updated GitHub actions and ruff configuration. @rly #1246
hdmf.monitoris 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_keysto be a static method so that it can be cleanly used elsewhere. @rly #1274
Fixed
- Fixed
get_data_shapereturning 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
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.mapis no longer supported. Import fromhdmf.buildinstead. @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
CSRMatrixdata type should installscipyseparately or withpip 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.tomland 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