shahar1 opened a new pull request, #1521:
URL: https://github.com/apache/mahout/pull/1521

   ### Related Issues
   
   Closes #1512
   
   ### Changes
   
   - [ ] Bug fix
   - [x] New feature
   - [ ] Refactoring
   - [x] Documentation
   - [ ] Test
   - [x] CI/CD pipeline
   - [ ] Other
   
   ### Why
   
   `pyproject.toml` capped `requires-python` at `<3.13`, so `pip install qumat` 
on Python 3.13 (the current Google Colab default) falls back to the ancient 
`qumat 0.0.1` and tries to build an old `qiskit-aer` from source. All runtime 
dependencies (qiskit, qiskit-aer, cirq, amazon-braket-sdk, sympy and their 
transitive deps) already ship 3.13 wheels or are pure Python; only our own 
metadata and two pieces of dev tooling were holding support back.
   
   Scope: the pure-Python `qumat` package only. `qumat-qdp` (Rust + CUDA) stays 
capped at `<3.13`, as the issue states.
   
   ### How
   
   **`pyproject.toml`**
   - `requires-python = ">=3.10,<3.14"` and the `3.13` classifier.
   - The `qdp` extra is now `qumat-qdp; python_version < '3.13'`. Without the 
marker `uv lock` resolves fine, but `uv sync --extra qdp` on 3.13 would try to 
build the Rust wheel and fail on its own `requires-python`.
   - Dev group: `numpy<2.0` is kept only for `python_version < '3.13'`, with 
`numpy>=2.1` on 3.13. numpy 1.x has no 3.13 wheels, and tensorflow's 
`ml-dtypes` requires numpy>=2.1 on 3.13, so `uv lock` could not resolve the 
3.13 fork at all with the old pin.
   - Removed the `[tool.uv] override-dependencies` block for numba/llvmlite. 
The comment said amazon-braket-default-simulator 1.32.1 pinned numba 0.53.1, 
but that release's metadata requires plain `numba`. More importantly, the 
`llvmlite>=0.43.0` override replaces numba's own llvmlite pin, which on 3.13 
produced a lock with numba 0.68 + llvmlite 0.46 and an `ImportError` on `import 
numba`.
   
   **`uv.lock`**: regenerated. The only version changes are new 3.13-fork 
entries: numpy 2.5.4, numba 0.68.0, llvmlite 0.50.0. The 3.10–3.12 forks 
resolve to exactly the same versions as before. The rest of the diff is uv 
rewriting fork markers (the top fork changed from `>= '3.12'` to `== '3.12.*'`) 
and the lock format revision moving from 3 to 5 with the current uv.
   
   **`.github/workflows/python-testing.yml`**: `3.13` added to the matrix. The 
`Build QDP extension` step is skipped on 3.13; `testing/conftest.py` already 
auto-skips the QDP tests when the extension is absent.
   
   **`docs/qumat/getting-started.md`**: supported range updated to 3.10–3.13, 
and the "Why uv?" note no longer refers to the removed overrides.
   
   No Dockerfile change is needed: `Dockerfile.qdp-amd` uses Ubuntu 24.04's 
Python 3.12 and builds the (still capped) QDP extension.
   
   ### Verification
   
   - `uv sync --group dev` on 3.13 followed by `pytest -n auto testing/` (the 
CI command): all qumat tests pass, QDP tests auto-skip. Also run with the 
locked runtime versions only (`uv sync --no-default-groups`): 589 passed.
   - Python 3.12 against the new lock: 589 passed; `numpy`, `numba`, 
`llvmlite`, `pydantic` resolve to the same versions as on `main`.
   - `pre-commit run --files <changed files>`: all applicable hooks pass.
   
   ### Notes for 3.14 / 3.15 (not in this PR)
   
   Investigated while preparing this change, recorded here for the follow-up:
   - 3.14 needs `typedunits` 0.0.2 (0.0.1 has no cp314 wheel; pulled in via 
`cirq` → `cirq-google`), `pydantic>=2.13` (its `pydantic.v1` shim, used by 
amazon-braket-schemas, is broken on 3.14 in 2.12), and `tensorflow` marked 
`python_version < '3.14'` (no cp314 wheels). With those three changes the suite 
passes on 3.14 with the current braket pins.
   - 3.15 is blocked at runtime: `qiskit-aer` has no cp315 wheels in any 
release (Qiskit/qiskit-aer#2468), `typedunits` has no cp315 wheel and no sdist, 
and torch/triton/tensorflow have no 3.15 builds.
   
   ## Checklist
   
   - [x] Added or updated unit tests for all changes (no code change; existing 
suite now runs on 3.13 in CI)
   - [x] Added or updated documentation for all changes
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to