Skip to content

Upgrade pinned dependencies to Python 3.14 - #205

Merged
rly merged 1 commit into
mainfrom
upgrade_pinned_dependencies
Oct 7, 2026
Merged

rly merged 1 commit into
mainfrom
upgrade_pinned_dependencies

Conversation

@rly

@rly rly commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Upgrades the exact pins in environments/nwb_benchmarks.yaml to the latest releases available for Python 3.14.

Package Was Now
python 3.11.7 3.14.8
git 2.40.1 2.56.0
asv 0.6.1 0.6.6
asv-runner unpinned 0.3.1
hdmf-zarr 0.13.0 0.13.0 (unchanged)

Details

  • pyproject.toml raises the requires-python upper bound to <3.15 and carries the same asv and asv-runner pins. The environment file installs the package with -e .., so the two files have to agree.
  • asv-runner is pinned because asv only sets a lower bound on it (>=0.2.5 in asv 0.6.6). asv-runner 0.3.0 changed how timing benchmarks with setup hooks are sampled (setup reruns before every timed call). That is a no-op for this suite, because BaseBenchmark sets rounds = 1, repeat = 1, number = 1 and warmup_time = 0.0, but pinning keeps timing semantics from shifting between environment rebuilds.
  • Version operators are written without surrounding spaces in both files, matching the other entries.
  • The package version is not bumped, since nothing under src/nwb_benchmarks/ changes.

Testing

  • conda env create from the updated file into a fresh prefix on macOS arm64 resolves and installs, and pip check reports no broken requirements. The unpinned packages resolved to hdmf 6.2.0, pynwb 4.2.0, numba 0.68.0, lindi 0.4.6, zarr 2.18.7 and dandi 0.81.0.
  • No benchmarks were run locally against the new environment. The CI smoke test on this PR is the first run of the suite on Python 3.14 with asv 0.6.6.

🤖 Generated with Claude Code

Bump the exact pins in the conda environment file: python 3.11.7 to
3.14.8, git 2.40.1 to 2.56.0, and asv 0.6.1 to 0.6.6. hdmf-zarr stays
at 0.13.0.

Pin asv-runner to 0.3.1. asv only sets a lower bound on it, and
asv-runner 0.3.0 changed how timing benchmarks with setup hooks are
sampled, so an unpinned runner lets timing semantics drift between
environment rebuilds.

Raise the requires-python upper bound in pyproject.toml to <3.15 and
match the asv pins there, since the environment file installs the
package with `-e ..`.

Remove the spaces around version operators so all entries share one
style.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@rly
rly requested review from CodyCBakerPhD and oruebel October 7, 2026 00:22
@rly

rly commented Oct 7, 2026

Copy link
Copy Markdown
Contributor Author

The lab mac is having trouble with building some of the latest packages that don't offer Python 3.11 wheels. I don't see a reason to pin Python 3.11, so I bumped up that and the other pins.

@rly
rly merged commit 75b7e3d into main Oct 7, 2026
3 checks passed
@rly
rly deleted the upgrade_pinned_dependencies branch October 7, 2026 08:00
Comment on lines -9 to +10
- asv == 0.6.1
- asv==0.6.6
- asv-runner==0.3.1

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahh well bumping this may have some effects 😅 well see I guess

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something to know but hopefully won't change anything:

asv-runner 0.3.x timing change: setup now re-runs between timed calls when number > 1, and auto number becomes 1 when there are setup hooks. BaseBenchmark already sets number = 1, repeat = 1, rounds = 1, warmup_time = 0.0, so the timing path is effectively the same. Before this pin, asv-runner was unpinned (0.6.1 only required >=0.1.0), so environments built between June and October 2026 may already have had 0.2.5 or 0.3.x. Now it's fixed.

CodyCBakerPhD added a commit that referenced this pull request Oct 7, 2026
Follow-up to #203 (targets its
branch). The raw results fixture behind `tests/test_reduce_results.py`
was written with asv 0.6.1. Main now pins asv 0.6.6 and asv-runner 0.3.1
(#205), so this PR regenerates the
fixture with those versions.

## Changes
- **Merges `main` into the branch.** It merges cleanly and brings in the
#205 pins, so the tests in this PR run against the asv version that
wrote the fixture.
- **Regenerates the fixture.** It comes from the same toy suite as
before: `Incremental` (B raises), `Network`, `Timed` (`--bench` selects
only parameter set A) and `Unwrapped`. The suite was run with `asv run
--python=same --record-samples` and trimmed to the keys the reducer
reads, with the same fixed commit hash.
- **Renames the fixture** `tests/data/asv_0.6.1_raw_results.json` →
`asv_0.6.6_raw_results.json`, and updates the path and comment in the
test.

## What changed in the fixture
The structure is the same as under 0.6.1: same `result_columns`, same
row lengths (12 for the wrapped benchmarks, 5 for `Unwrapped`), NaN
result for the unselected `Timed` B, `null` samples for the failed
`Incremental` B, and the same `true` results for the wrapped `track_`
benchmarks. Only the `Timed` timing, the benchmark version hashes,
`started_at` and `duration` differ.

No version bump: nothing under `src/nwb_benchmarks/` changes.

## Testing
- `python -m pytest tests`: 40 passed, none skipped (polars and seaborn
installed, so the database-reader test ran).
- `pre-commit run` on the changed files passes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01At337MLAynHQXz3TZBF3Vv

---
_Generated by [Claude
Code](https://claude.ai/code/session_01At337MLAynHQXz3TZBF3Vv)_

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants