quantum: modernize QFT to Qiskit 2.x and re-enable its test - #15120
Conversation
quantum/q_fourier_transform.py used the Aer and execute symbols that were removed from qiskit in the 1.0 API break, so it could never run and was on the pytest --ignore list. Port it to the current API: - Drop 'from qiskit import Aer, execute'. Build the circuit unchanged, then simulate with the pure-Python BasicSimulator via transpile() + backend.run(), so no compiled qiskit-aer backend is needed (qiskit-aer has no Python 3.14 wheels yet; BasicSimulator ships inside qiskit core). - Seed the run (seed_simulator=42) and rewrite the doctest to assert the reproducible, shot-noise-independent facts (the four outcomes appear and the counts sum to the shot total) instead of exact per-state counts, which random sampling can never hit. - Add 'qiskit>=2' to project dependencies and drop the quantum ignore + the stale '# TODO: TheAlgorithms#8818 Re-enable quantum tests' comment in build.yml. Draft until CI confirms qiskit installs and imports on the repo's Python 3.14.
cclauss
left a comment
There was a problem hiding this comment.
Thousands separators make numbers easier for humans to read.
|
Awesome work on Qiskit! I find it stunning that TensorFlow/Keras does not have v3.14 wheels when v3.15 is available as a release candidate. |
|
Right? The catch is that a "3.15 release candidate exists" and "TF/Keras ship wheels for 3.x" are almost unrelated events. TensorFlow bundles a big C++/pybind11 extension that has to be rebuilt and tested against each new CPython ABI, so their wheels historically trail the interpreter by one or two minor versions — 3.15 RC availability just means CPython froze its ABI, not that TF has caught up on 3.14 yet. The cleaner path for us is the pure-Python-first files: the |
|
I like your Keras-only workaround idea. Please go for it. |
Describe your change:
Follow-up to #15118 and the ask in #15081. Re-opens #15119 (auto-closed by the keeper bot for the draft's unchecked template — CI has since gone fully green, so there's no reason to keep it a draft).
quantum/q_fourier_transform.pyimportedAerandexecutefromqiskit— both removed in the Qiskit 1.0 API break — so the file could never import, which is why it sat on the--ignorelist and its doctest was never validated. This ports it to the current API:BasicSimulator(transpile()+backend.run()) instead ofAer.get_backend("qasm_simulator")+execute().BasicSimulatorships insideqiskitcore, so no compiledqiskit-aerbackend is required — relevant becauseqiskit-aerhas no Python 3.14 wheels yet (Need binary distribution on PyPI for Python 3.14 Qiskit/qiskit-aer#2378), while this repo requires Python ≥ 3.14.seed_simulator=42) and rewrite the doctest to check the reproducible, shot-noise-independent facts (all four outcomes appear; counts sum to the shot total) rather than exact per-state counts — the old{'00': 2500, ...}doctest was statistically impossible and only "passed" because it was ignored.qiskit>=2todependencies; drop--ignore=quantum/q_fourier_transform.pyand the stale# TODO: #8818comment frombuild.yml.CI is green:
buildandbuild_docsboth pass on the repo's Python 3.14 interpreter, confirmingqiskitcore installs/imports and the new doctest runs and passes. Closes the quantum half of #8818.The remaining TensorFlow
--ignoreentries are hard-blocked by the Python 3.14 floor (TensorFlow tops out at 3.13); full matrix is in #15081 / the earlier #15119 thread.Checklist: