Skip to content

Commit 39a4ee7

Browse files
rlyclaude
andauthored
Prepare 6.1.0 release (#1516)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 14021a6 commit 39a4ee7

7 files changed

Lines changed: 27 additions & 21 deletions

File tree

.github/workflows/check_sphinx_links.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
- name: Set up Python
2626
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
2727
with:
28-
python-version: '3.13' # TODO: Update to 3.14 when linkml and its deps support 3.14
28+
python-version: '3.14'
2929

3030
- name: Install Sphinx dependencies and package
3131
run: |

.github/workflows/run_all_tests.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,14 +98,15 @@ jobs:
9898
fail-fast: false
9999
matrix:
100100
include:
101-
# TODO: Update to 3.14 when linkml and its deps support 3.14
102101
- { name: linux-gallery-python3.10-minimum , test-tox-env: gallery-py310-minimum , python-ver: "3.10", os: ubuntu-latest }
103-
- { name: linux-gallery-python3.13-upgraded-optional , test-tox-env: gallery-py313-upgraded-optional , python-ver: "3.13", os: ubuntu-latest }
104-
- { name: linux-gallery-python3.13-prerelease-optional , test-tox-env: gallery-py313-prerelease-optional , python-ver: "3.13", os: ubuntu-latest }
102+
- { name: linux-gallery-python3.14-upgraded-optional , test-tox-env: gallery-py314-upgraded-optional , python-ver: "3.14", os: ubuntu-latest }
103+
- { name: linux-gallery-python3.14-prerelease-optional , test-tox-env: gallery-py314-prerelease-optional , python-ver: "3.14", os: ubuntu-latest }
105104
- { name: windows-gallery-python3.10-minimum , test-tox-env: gallery-py310-minimum , python-ver: "3.10", os: windows-latest }
106-
- { name: windows-gallery-python3.13-upgraded-optional , test-tox-env: gallery-py313-upgraded-optional , python-ver: "3.13", os: windows-latest }
107-
- { name: windows-gallery-python3.13-prerelease-optional , test-tox-env: gallery-py313-prerelease-optional , python-ver: "3.13", os: windows-latest }
105+
- { name: windows-gallery-python3.14-upgraded-optional , test-tox-env: gallery-py314-upgraded-optional , python-ver: "3.14", os: windows-latest }
106+
- { name: windows-gallery-python3.14-prerelease-optional , test-tox-env: gallery-py314-prerelease-optional , python-ver: "3.14", os: windows-latest }
108107
- { name: macos-gallery-python3.10-minimum , test-tox-env: gallery-py310-minimum , python-ver: "3.10", os: macos-15-intel }
108+
# numcodecs==0.15.1 (pulled in by the zarr optional extra) has no Python 3.14 wheel and cannot be
109+
# built on macos-latest, so the optional gallery tests stay on 3.13 there. See https://github.com/hdmf-dev/hdmf/pull/1367
109110
- { name: macos-gallery-python3.13-upgraded-optional , test-tox-env: gallery-py313-upgraded-optional , python-ver: "3.13", os: macos-latest }
110111
- { name: macos-gallery-python3.13-prerelease-optional , test-tox-env: gallery-py313-prerelease-optional , python-ver: "3.13", os: macos-latest }
111112
steps:

.github/workflows/run_coverage.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
- { os: macos-latest , opt_req: false }
3535
env: # used by codecov-action
3636
OS: ${{ matrix.os }}
37-
PYTHON: '3.13' # TODO: Update to 3.14 when linkml and its deps support 3.14
37+
PYTHON: '3.14'
3838
steps:
3939
- name: Checkout repo with submodules
4040
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

.github/workflows/run_tests.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,10 @@ jobs:
8686
fail-fast: false
8787
matrix:
8888
include:
89-
# TODO: Update to 3.14 when linkml and its deps support 3.14
9089
- { name: linux-gallery-python3.10-minimum , test-tox-env: gallery-py310-minimum , python-ver: "3.10", os: ubuntu-latest }
91-
- { name: linux-gallery-python3.13-upgraded-optional , test-tox-env: gallery-py313-upgraded-optional , python-ver: "3.13", os: ubuntu-latest }
90+
- { name: linux-gallery-python3.14-upgraded-optional , test-tox-env: gallery-py314-upgraded-optional , python-ver: "3.14", os: ubuntu-latest }
9291
- { name: windows-gallery-python3.10-minimum , test-tox-env: gallery-py310-minimum , python-ver: "3.10", os: windows-latest }
93-
- { name: windows-gallery-python3.13-upgraded-optional , test-tox-env: gallery-py313-upgraded-optional , python-ver: "3.13", os: windows-latest }
92+
- { name: windows-gallery-python3.14-upgraded-optional , test-tox-env: gallery-py314-upgraded-optional , python-ver: "3.14", os: windows-latest }
9493
steps:
9594
- name: Checkout repo with submodules
9695
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

.readthedocs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ version: 2
88
build:
99
os: ubuntu-24.04
1010
tools:
11-
python: '3.13' # TODO: Update to 3.14 when linkml and its deps support 3.14
11+
python: '3.14'
1212
jobs:
1313
install:
1414
- python -m pip install --upgrade pip

CHANGELOG.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
# HDMF Changelog
22

3-
## HDMF 6.0.3 (Upcoming)
4-
5-
### Breaking changes
6-
- Removed the `file` argument from `HERD.add_ref` and `HERD.add_ref_termset`. The file is now always resolved automatically from the container's parent hierarchy, so a reference can only be added to a container that has already been added to a file. This enforces that an external reference cannot be attached to a container that is not yet in a file. Callers passing `file=...` to these methods should remove that argument and ensure the container has been added to its file first. @bendichter
3+
## HDMF 6.1.0 (June 25, 2026)
74

85
### Enhancements
9-
- Accept pandas `Series` and `ExtensionArray` (including `StringArray` and `ArrowStringArray`) as `data` in `Data` and its subclasses (e.g., `VectorData`), normalizing to numpy at construction. This restores compatibility with pandas 3.0, where DataFrame string columns are PyArrow-backed by default and previously failed HDMF's type validation. Inputs containing missing values (`pd.NA`/`NaN`) raise an informative `TypeError` rather than silently failing at HDF5 write time. The `pandas<3` cap has been lifted from the dependency pin. @rly [#1384](https://github.com/hdmf-dev/hdmf/issues/1384)
6+
- Accept pandas `Series` and `ExtensionArray` (including `StringArray` and `ArrowStringArray`) as `data` in `Data` and its subclasses (e.g., `VectorData`), normalizing to numpy at construction. This restores compatibility with pandas 3.0, where DataFrame string columns are PyArrow-backed by default and previously failed HDMF's type validation. Inputs containing missing values (`pd.NA`/`NaN`) raise an informative `TypeError` rather than silently failing at HDF5 write time. The `pandas<3` cap has been lifted from the dependency pin. @rly [#1469](https://github.com/hdmf-dev/hdmf/pull/1469)
107
- Added a `HERD`-specific `__repr__` and `_repr_html_` that surface the references as a flattened table, so a `HERD` (especially one read back from a file) no longer appears empty in its default display. @rly [#1510](https://github.com/hdmf-dev/hdmf/pull/1510)
118
- `HERD.add_ref` now defaults `key` to the value of a scalar string `attribute` when `key` is not provided, removing the redundant argument in the common case. @rly [#1511](https://github.com/hdmf-dev/hdmf/pull/1511)
129
- `HERD.add_ref` no longer warns when an `entity_uri` is provided for an already-existing `entity_id` and the URI matches the stored one. The entity tables are normalized, so re-passing the same `entity_uri` (common when annotating many objects or files with the same entity) is harmless; a warning is now emitted only when a *different* `entity_uri` is provided, in which case the existing URI is kept. @bendichter [#1513](https://github.com/hdmf-dev/hdmf/pull/1513)
1310

1411
### Changed
12+
- Removed the `file` argument from `HERD.add_ref` and `HERD.add_ref_termset`. The file is now always resolved automatically from the container's parent hierarchy, so a reference can only be added to a container that has already been added to a file. This enforces that an external reference cannot be attached to a container that is not yet in a file. This is technically a breaking change, but the `file` argument was not yet used publicly. @bendichter [#1512](https://github.com/hdmf-dev/hdmf/pull/1512)
1513
- Refactored `HERD` internals. The object lookup now identifies an object by its file together with its object_id, relative_path, and field, so a shared object_id across files (e.g. a copied, modified file) resolves to the correct object instead of colliding. @rly [#1515](https://github.com/hdmf-dev/hdmf/pull/1515)
1614

1715
### Internal improvements
16+
- Minor `HERD` internal cleanups: removed a dead assignment and hoisted the files dataframe construction. @rly [#1507](https://github.com/hdmf-dev/hdmf/pull/1507)
17+
- Switched the release pipeline to PyPI OIDC trusted publishing and the `gh` CLI, and now build the GitHub release notes from the changelog. @rly [#1517](https://github.com/hdmf-dev/hdmf/pull/1517)
1818
- Hardened the GitHub Actions CI: added least-privilege `permissions` blocks, pinned actions to commit SHAs (or immutable release tags), deduplicated the test setup into a composite action, passed untrusted inputs through environment variables, and added a zizmor security audit of the workflows. @rly [#1518](https://github.com/hdmf-dev/hdmf/pull/1518)
1919

2020
### Fixed

tox.ini

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ commands =
5252
[testenv:pytest-py{313,314}-prerelease-optional]
5353

5454
# minimum envs use uv with --resolution lowest-direct to install the lowest
55-
# compatible versions of direct dependencies. These are defined explicitly
56-
# (rather than using factor matching in [testenv]) because gallery-minimum
57-
# needs to resolve docs deps together with project deps to avoid incompatibilities.
55+
# compatible versions of the project's direct dependencies. These are defined
56+
# explicitly (rather than using factor matching in [testenv]) because gallery-minimum
57+
# installs the docs group as well and needs to control how those deps are resolved.
5858
[testenv:pytest-py310-minimum]
5959
skip_install = True
6060
dependency_groups = test
@@ -67,9 +67,15 @@ skip_install = True
6767
dependency_groups = test
6868
commands_pre =
6969
python -m pip install uv
70-
python -m uv pip install --resolution lowest-direct --group docs -e .
70+
# install the documentation dependencies at their latest compatible versions
71+
python -m uv pip install --group docs -e .
72+
# then resolve the project's own (direct) dependencies down to their minimum supported versions
73+
python -m uv pip install --resolution lowest-direct -e .
7174

72-
# TODO: Update to 3.14 when linkml and its deps support 3.14
75+
[testenv:gallery-py314-upgraded-optional]
76+
[testenv:gallery-py314-prerelease-optional]
77+
# py313 optional gallery envs are used on macos-latest, where numcodecs 0.15.1
78+
# (pulled in by the zarr extra) has no 3.14 wheel and cannot be built.
7379
[testenv:gallery-py313-upgraded-optional]
7480
[testenv:gallery-py313-prerelease-optional]
7581

0 commit comments

Comments
 (0)