Skip to content

2.5.0

Compare
Choose a tag to compare
@hdmf-bot hdmf-bot released this 22 Apr 22:01
· 377 commits to dev since this release
2.5.0
1365149

New features

  • DynamicTable can be automatically generated using get_class. Now the HDMF API can read files with extensions
    that contain a DynamicTable without needing to import the extension first. @rly and @bendichter (#536)
  • Add HDF5IO.get_namespaces(path=path, file=file) method which returns a dict of namespace name mapped to the
    namespace version (the largest one if there are multiple) for each namespace cached in the given HDF5 file.
    @rly (#527)
  • Use HDMF common schema 1.5.0.
    • Add experimental namespace to HDMF common schema. New data types should go in the experimental namespace
      (hdmf-experimental) prior to being added to the core (hdmf-common) namespace. The purpose of this is to provide
      a place to test new data types that may break backward compatibility as they are refined. @ajtritt (#545)
    • ExternalResources was changed to support storing both names and URIs for resources. @mavaylon (#517, #548)
    • The VocabData data type was replaced by EnumData to provide more flexible support for data from a set of
      fixed values.
    • Added AlignedDynamicTable, which defines a DynamicTable that supports storing a collection of sub-tables.
      Each sub-table is itself a DynamicTable that is aligned with the main table by row index. Each sub-table
      defines a sub-category in the main table effectively creating a table with sub-headings to organize columns.
    • See https://hdmf-common-schema.readthedocs.io/en/latest/format_release_notes.html#april-19-2021 for more
      details.
  • Add EnumData type for storing data that comes from a fixed set of values. This replaces VocabData i.e.
    VocabData has been removed. VocabData stored vocabulary elements in an attribute, which has a size limit.
    EnumData now stores elements in a separate dataset, referenced by an attribute stored on the EnumData dataset.
    @ajtritt (#537)
  • Add AlignedDynamicTable type which defines a DynamicTable that supports storing a collection of subtables.
    Each sub-table is itself a DynamicTable that is aligned with the main table by row index. Each subtable
    defines a sub-category in the main table effectively creating a table with sub-headings to organize columns.
    @oruebel (#551)
  • Add tutoral for new AlignedDynamicTable type. @oruebel (#571)
  • Equality check for DynamicTable now also checks that the name and description of the table are the same. @rly (#566)

Internal improvements

  • Update CI and copyright year. @rly (#523, #524)
  • Refactor class generation code. @rly (#533, #535)
  • Equality check for DynamicTable returns False if the other object is a DynamicTable instead of raising an error.
    @rly (#566)
  • Update ruamel.yaml usage to new API. @rly (#587)
  • Remove use of ColoredTestRunner for more readable verbose test output. @rly (#588)

Bug fixes

  • Fix CI testing on Python 3.9. @rly (#523)
  • Fix certain edge cases where GroupValidator would not validate all of the child groups or datasets
    attached to a GroupBuilder. @dsleiter (#526)
  • Fix bug for generating classes from link specs and ignored 'help' fields. @rly (#535)
  • Various fixes for dynamic class generation. @rly (#561)
  • Fix generation of classes that extends both MultiContainerInterface and another class that extends
    MultiContainerInterface. @rly (#567)
  • Fix make clean command for docs to clean up sphinx-gallery tutorial files. @oruebel (#571)
  • Make sure we cannot set AlignedDynamicTable as a category on an AlignedDynamicTable. @oruebel (#571)
  • Fix included data type resolution between HDMF and custom classes that customize the data_type_inc key. @rly (#503)
  • Fix classification of attributes as new/overridden. @rly (#503)