Skip to content

Test the minimum supported dependency versions - #51

Merged
Jim Garrison (garrison) merged 2 commits into
mainfrom
test-minimum-versions
Oct 8, 2026
Merged

Jim Garrison (garrison) merged 2 commits into
mainfrom
test-minimum-versions

Conversation

@garrison

@garrison Jim Garrison (garrison) commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

The Tests workflow installs the newest version of everything, so the floors declared in pyproject.toml were never exercised. This adds a Minimum version tests workflow that pins every dependency to its declared minimum with extremal-python-dependencies and runs the suite, following the pattern used in qiskit-addon-sqd.

Standing the workflow up showed that none of the existing floors actually installed, so this raises them to the oldest versions that do:

  • mpi4py 3.0.0 → 4.0.0. No 3.x release builds against current setuptools, whose new_compiler() no longer accepts the dry_run argument mpi4py's build scripts pass.
  • pybind11 2.6.0 → 2.12.0. Its headers do not compile with a current GCC: attr.h and pybind11.h use std::uint16_t without including <cstdint>.
  • numpy 1.19.0 → 1.26.0. 1.19.0 predates Python 3.10 and has no wheel for any supported version. It was also inconsistent with the test extra, since qiskit-addon-sqd requires numpy>=1.26.
  • setuptools >=77 → >=77.0.1. Pinning to the minimum produces setuptools==77, which does not exist on PyPI; the first 77.x release is 77.0.1.

With those raised, pip install .[test] resolves in a single pass and the serial and MPI suites both pass on Python 3.10. An upgrade release note records the new floors.

Pinning numpy to 1.26.0 backtracks qiskit to 2.4.2, since qiskit 2.5 requires numpy>=2.0. That is the resolver doing its job rather than a conflict, but it does mean this workflow exercises an older qiskit than Tests does. I'm open to raising the numpy floor to 2.0 instead if keeping qiskit current here is preferable.

Only Linux and Python 3.10 are covered, matching the original — the floors are what is under test, not the platform matrix.

This was suggested in #6 alongside the development-version tests added in #50. #6 should stay open for the remaining items.


This pull request was drafted by Claude Opus 5 under my guidance.

The Tests workflow installs the newest version of everything, so the
floors declared in pyproject.toml were never exercised.  Add a workflow
that pins every dependency to its declared minimum with
extremal-python-dependencies and runs the suite, following the pattern
used in qiskit-addon-sqd.

Standing the workflow up showed the existing floors were aspirational
rather than tested, and none of them installed:

- mpi4py 3.0.0 does not build against current setuptools, whose
  new_compiler() no longer accepts the dry_run argument mpi4py's build
  scripts pass.  Every 3.x release fails this way, so the floor becomes
  4.0.0.
- pybind11 2.6.0's headers do not compile with a current GCC: attr.h and
  pybind11.h use std::uint16_t without including <cstdint>.  2.12.0 is
  the oldest that builds here.
- numpy 1.19.0 predates Python 3.10 and has no wheel for any supported
  version, so it built from source and failed.  It was also inconsistent
  with the test extra, since qiskit-addon-sqd requires numpy>=1.26.
- setuptools>=77 pins to the exact version "77", which does not exist on
  PyPI; the first 77.x release is 77.0.1.

With those raised, `pip install .[test]` resolves in a single pass and
the serial and MPI suites both pass on Python 3.10.  Note that pinning
numpy to 1.26.0 backtracks qiskit to 2.4.2, since qiskit 2.5 requires
numpy>=2.0 -- that is the resolver doing its job, not a conflict.

Only Linux and Python 3.10 are covered, matching the original: the floors
are what is under test here, not the platform matrix.

Development-version tests were first suggested in #6 alongside these,
which stays open for the remaining items.

Assisted-by: Claude Opus 5
@garrison
Jim Garrison (garrison) marked this pull request as ready for review October 8, 2026 01:07
@garrison Jim Garrison (garrison) added this to the 1.7.0 milestone Oct 8, 2026
@garrison
Jim Garrison (garrison) merged commit 543d3f2 into main Oct 8, 2026
16 checks passed
@garrison
Jim Garrison (garrison) deleted the test-minimum-versions branch October 8, 2026 02:09
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