Skip to content

Lower minimum Python to 3.11; release 0.1.1#32

Merged
guenp merged 2 commits intomainfrom
lower-python-floor-3.11
Apr 30, 2026
Merged

Lower minimum Python to 3.11; release 0.1.1#32
guenp merged 2 commits intomainfrom
lower-python-floor-3.11

Conversation

@splch
Copy link
Copy Markdown
Collaborator

@splch splch commented Apr 30, 2026

Summary

  • Lowers the supported Python floor from 3.12 to 3.11. The codebase uses no 3.12-only language features (no PEP 695 generics, no type aliases), and the full test suite passes on 3.11.
  • Updates the floor in every place the docs-consistency tests pin to it: pyproject.toml (requires-python, classifier list, ruff target-version, ty environment), .python-version, setup-uv action default, and the CI matrix (now ["3.11", "3.12", "3.13", "3.14"], with coverage gated on the 3.11 floor).
  • Regenerates uv.lock to add cp311 wheels and the tomli dependency that pytest-cov needs on 3.11.
  • Bumps the package version to 0.1.1 in a separate commit, with the corresponding CHANGELOG.md entry under Keep a Changelog format.

Test plan

  • uv run ruff check
  • uv run ruff format --check
  • uv run ty check ionq_core/
  • uv run pytest locally on Python 3.11.15 (237 passed, 100% branch coverage; test_docs_consistency passes after the mirrored updates)
  • CI matrix runs across 3.11 - 3.14

Important

Most code in ionq_core/ is auto-generated and overwritten on regeneration.
See CONTRIBUTING.md for which files are safe to edit.

splch added 2 commits April 30, 2026 10:37
The codebase uses no 3.12-only language features (no PEP 695 generic
syntax, no `type` aliases). Verified the full test suite (237 tests,
100% coverage) passes on Python 3.11.15.

Updates the floor in pyproject.toml, .python-version, ruff target,
ty environment, the setup-uv composite action default, and the CI
matrix. The drift-enforcement tests in test_docs_consistency.py
keep these in lockstep. uv.lock regenerated to add cp311 wheels and
the tomli dependency that pytest-cov needs on 3.11.
@splch splch requested a review from a team as a code owner April 30, 2026 17:38
splch added a commit to qiskit-community/qiskit-ionq that referenced this pull request Apr 30, 2026
…nastics

The upstream ionq-core 0.1.1 (ionq/ionq-core-python#32) lowers its Python
floor from 3.12 to 3.11. Match it: bump qiskit-ionq's floor to 3.11 and
remove every workaround the conditional install required.

- setup.py: python_requires=">=3.11"; drop the 3.10 classifier (3.11/12/13
  remain).
- requirements.txt: ionq-core>=0.1.1 (unconditional, no PEP 508 marker).
- qiskit_ionq/__init__.py: import IonQSession unconditionally and add it
  to __all__ unconditionally; drop the try/except ImportError shim.
- test/test_ionq_session_v2.py: drop pytest.importorskip("ionq_core") and
  the now-unneeded `# noqa: E402` on the IonQSession import.
- qiskit_ionq/session.py: drop the "Requires Python >=3.12" docstring note.
- MIGRATION_2.0.md: 1.1.0 requires Python >=3.11; 2.0 will require >=3.12;
  3.10 is the only version dropped in 1.1.0.
- .github/workflows/ci.yml: matrix is ["3.11", "3.12", "3.13"].
- tox.ini: drop py310 from envlist and gh-actions.

Net: ~25 lines removed (the conditional import, the importorskip, the
noqa, the docstring qualifier, the 3.10 matrix entries) for a much
simpler 1.1.0 surface. Depends on ionq-core 0.1.1 being released first.
splch added a commit to qiskit-community/qiskit-ionq that referenced this pull request Apr 30, 2026
ionq-core 0.1.1 is not yet released to PyPI; the upstream PR
ionq/ionq-core-python#32 (which contains the Python 3.11 floor) is still
open. Pin the dependency to the branch via a PEP 508 git URL so this
PR's CI can exercise the real integration without waiting for the
upstream release.

Switch back to `ionq-core>=0.1.1` once the upstream PR merges and ships.
@guenp guenp merged commit 7dc7e0a into main Apr 30, 2026
12 checks passed
@guenp guenp deleted the lower-python-floor-3.11 branch April 30, 2026 19:21
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