Repository navigation
Test the minimum supported dependency versions - #51
Merged
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The
Testsworkflow installs the newest version of everything, so the floors declared inpyproject.tomlwere never exercised. This adds aMinimum version testsworkflow that pins every dependency to its declared minimum withextremal-python-dependenciesand 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:
new_compiler()no longer accepts thedry_runargument mpi4py's build scripts pass.attr.handpybind11.husestd::uint16_twithout including<cstdint>.testextra, sinceqiskit-addon-sqdrequiresnumpy>=1.26.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. Anupgraderelease 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 thanTestsdoes.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.