Skip to content

build(deps): require packaging>=24.0 and drop pytest-accept - #4626

Merged
d-v-b merged 8 commits into
zarr-developers:mainfrom
d-v-b:chore/drop-pytest-accept-packaging-24
Nov 12, 2026
Merged

d-v-b merged 8 commits into
zarr-developers:mainfrom
d-v-b:chore/drop-pytest-accept-packaging-24

Conversation

@d-v-b

@d-v-b d-v-b commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

two follow-up fixes after #4624. we bump packaging floor to 24.0 and drop pytest-accept which isn't used any more, and can always be used by a motivated developer by installing it directly.

🤖 AI text below 🤖

The minimum supported packaging version is now 24.0.

This draft builds on #4624 and replaces two of its workarounds for pytest 9.2 with simpler fixes: it drops the unused pytest-accept plugin and raises the packaging floor.

Changes
Testing
  • Python 3.13, pytest 9.2.0, from uv.lock: astor and pytest_accept are not installed, and the full suite collects (14,529 tests) with no filterwarnings entry for astor.
  • min_deps recreated with hatch 1.16.5 (the version CI uses): pytest 9.2.0, packaging 24.2, UV_OVERRIDE unset. Full suite on macOS (pytest -n 8 --ignore tests/benchmarks): 13,278 passed, 1,268 skipped, 9 xfailed, 0 failed.
  • just lint (prek, including mypy) passes, and uv lock changes only the packaging specifier and the removed astor/pytest-accept entries.
Stack and merge order

🤖 Generated with Claude Code

dependabot Bot and others added 6 commits November 12, 2026 04:31
…y with 13 updates

Bumps the python-dependencies group with 13 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [obstore](https://github.com/geospatial-jeff/pyasyncio-benchmark) | `0.12.0` | `0.12.1` |
| [coverage](https://github.com/coveragepy/coveragepy) | `7.16.2` | `7.17.2` |
| [pytest](https://github.com/pytest-dev/pytest) | `9.1.1` | `9.2.0` |
| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.4.0` | `1.4.1.post1` |
| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.170.5` | `6.170.14` |
| [pytest-benchmark](https://github.com/ionelmc/pytest-benchmark) | `5.3.0` | `5.3.1` |
| [pytest-codspeed](https://github.com/CodSpeedHQ/pytest-codspeed) | `5.0.3` | `5.0.4` |
| [uv](https://github.com/astral-sh/uv) | `0.13.5` | `0.13.7` |
| [moto[s3,server]](https://github.com/getmoto/moto) | `5.2.4` | `5.2.5` |
| [mkdocs-material[imaging]](https://github.com/squidfunk/mkdocs-material) | `9.7.7` | `9.8.0` |
| [markdown-exec[ansi]](https://github.com/pawamoy/markdown-exec) | `1.12.5` | `1.12.6` |
| [ruff](https://github.com/astral-sh/ruff) | `0.17.1` | `0.17.3` |
| [mypy](https://github.com/python/mypy) | `2.4.0` | `2.4.1` |



Updates `obstore` from 0.12.0 to 0.12.1
- [Commits](https://github.com/geospatial-jeff/pyasyncio-benchmark/commits)

Updates `coverage` from 7.16.2 to 7.17.2
- [Release notes](https://github.com/coveragepy/coveragepy/releases)
- [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst)
- [Commits](coveragepy/coveragepy@7.16.2...7.17.2)

Updates `pytest` from 9.1.1 to 9.2.0
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](pytest-dev/pytest@9.1.1...9.2.0)

Updates `pytest-asyncio` from 1.4.0 to 1.4.1.post1
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](pytest-dev/pytest-asyncio@v1.4.0...v1.4.1.post1)

Updates `hypothesis` from 6.170.5 to 6.170.14
- [Release notes](https://github.com/HypothesisWorks/hypothesis/releases)
- [Commits](HypothesisWorks/hypothesis@v6.170.5...v6.170.14)

Updates `pytest-benchmark` from 5.3.0 to 5.3.1
- [Release notes](https://github.com/ionelmc/pytest-benchmark/releases)
- [Changelog](https://github.com/ionelmc/pytest-benchmark/blob/master/CHANGELOG.rst)
- [Commits](ionelmc/pytest-benchmark@v5.3.0...v5.3.1)

Updates `pytest-codspeed` from 5.0.3 to 5.0.4
- [Release notes](https://github.com/CodSpeedHQ/pytest-codspeed/releases)
- [Changelog](https://github.com/CodSpeedHQ/pytest-codspeed/blob/master/CHANGELOG.md)
- [Commits](CodSpeedHQ/pytest-codspeed@v5.0.3...v5.0.4)

Updates `uv` from 0.13.5 to 0.13.7
- [Release notes](https://github.com/astral-sh/uv/releases)
- [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md)
- [Commits](astral-sh/uv@0.13.5...0.13.7)

Updates `moto[s3,server]` from 5.2.4 to 5.2.5
- [Release notes](https://github.com/getmoto/moto/releases)
- [Changelog](https://github.com/getmoto/moto/blob/master/CHANGELOG.md)
- [Commits](getmoto/moto@5.2.4...5.2.5)

Updates `mkdocs-material[imaging]` from 9.7.7 to 9.8.0
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](squidfunk/mkdocs-material@9.7.7...9.8.0)

Updates `markdown-exec[ansi]` from 1.12.5 to 1.12.6
- [Release notes](https://github.com/pawamoy/markdown-exec/releases)
- [Changelog](https://github.com/pawamoy/markdown-exec/blob/main/CHANGELOG.md)
- [Commits](pawamoy/markdown-exec@1.12.5...1.12.6)

Updates `ruff` from 0.17.1 to 0.17.3
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](astral-sh/ruff@0.17.1...0.17.3)

Updates `mypy` from 2.4.0 to 2.4.1
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](python/mypy@v2.4.0...v2.4.1)

---
updated-dependencies:
- dependency-name: obstore
  dependency-version: 0.12.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: coverage
  dependency-version: 7.17.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-dependencies
- dependency-name: pytest
  dependency-version: 9.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-dependencies
- dependency-name: pytest-asyncio
  dependency-version: 1.4.1.post1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: hypothesis
  dependency-version: 6.170.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: pytest-benchmark
  dependency-version: 5.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: pytest-codspeed
  dependency-version: 5.0.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: uv
  dependency-version: 0.13.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: moto[s3,server]
  dependency-version: 5.2.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: mkdocs-material[imaging]
  dependency-version: 9.8.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-dependencies
- dependency-name: markdown-exec[ansi]
  dependency-version: 1.12.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: ruff
  dependency-version: 0.17.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: mypy
  dependency-version: 2.4.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
...

Signed-off-by: dependabot[bot] <[email protected]>
pytest 9.2 applies the configured filterwarnings while importing plugins
(pytest#12697), so the "error" filter turns the ast.Num DeprecationWarning
that astor (a dependency of pytest-accept) triggers at import on Python
< 3.14 into a startup failure (exit code 3). Ignore that one astor-scoped
deprecation, which pytest <= 9.1 never routed through the filters.

pytest 9.2 also requires packaging>=24, which conflicts with the min_deps
pin packaging==22.* (the declared runtime floor packaging>=22.0). Keep that
floor tested by overriding pytest to <9.2 in the min_deps env only, via
UV_OVERRIDE and ci/min_deps-overrides.txt; every other env uses pytest 9.2.0.

hypothesis 6.170.7 annotates run_state_machine_as_test as taking
type[RuleBasedStateMachine] (its docstring still accepts any zero-arg
factory), so mypy now reports arg-type instead of no-untyped-call at the
four call sites that pass a factory function. Update the ignore codes;
no test logic changes.
pytest-accept was added in zarr-developers#2589 for a `hatch run doctest:fix` script that
ran `pytest --accept` over the RST doctests. That script and those doctests
are gone, and nothing in the justfile or CI passes `--accept`. The plugin's
only remaining effect was importing astor (last released in 2019) at every
pytest startup, whose `ast.Num` lookup pytest 9.2 turns into a startup error
under our "error" warning filter. Removing the plugin removes astor, so the
astor-scoped filter added for pytest 9.2 is no longer needed.

Assisted-by: ClaudeCode:claude-opus-5-5
pytest 9.2 requires packaging>=24, so the min_deps env could no longer pin
packaging==22.*. Instead of holding min_deps on pytest<9.2 through a
UV_OVERRIDE file, raise the runtime floor to packaging>=24.0 (released
March 2024) and test that floor in min_deps. zarr uses only
packaging.version.Version and parse, which behave the same on 22 and 24.
min_deps now runs the same pytest as every other env, and the override
file and env var are gone.

Assisted-by: ClaudeCode:claude-opus-5-5
Assisted-by: ClaudeCode:claude-opus-5-5
@codecov

codecov Bot commented Nov 12, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.90%. Comparing base (901290d) to head (f57591f).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #4626   +/-   ##
=======================================
  Coverage   94.90%   94.90%           
=======================================
  Files          96       96           
  Lines       14048    14048           
=======================================
  Hits        13332    13332           
  Misses        716      716           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@d-v-b
d-v-b marked this pull request as ready for review November 12, 2026 18:08
@d-v-b
d-v-b merged commit 84a4992 into zarr-developers:main Nov 12, 2026
38 checks passed
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.

1 participant