quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT) - #15119

Closed
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft
Closed

quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT)#15119
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft

Conversation

@priya-sundaram-dev

Copy link
Copy Markdown
Contributor

Follow-up to #15118 and the ask in #15081: try to get the remaining ignored tests working, starting with the quantum one.

What this does

quantum/q_fourier_transform.py imported Aer and execute from qiskit — both removed in the Qiskit 1.0 API break — so the file could never import, which is why it sat on the --ignore list and its doctest was never validated. This ports it to the current API:

  • Simulate with the pure-Python BasicSimulator (transpile() + backend.run()) instead of Aer.get_backend("qasm_simulator") + execute(). BasicSimulator ships inside qiskit core, so no compiled qiskit-aer backend is required — relevant because qiskit-aer doesn't publish 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 the run (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, which random sampling can never hit — the old {'00': 2500, ...} doctest was statistically impossible and only "passed" because it was ignored.
  • Add qiskit>=2 to dependencies; drop --ignore=quantum/q_fourier_transform.py and the stale # TODO: #8818 Re-enable quantum tests comment from build.yml.

Why draft

I can't install Qiskit on Python 3.14 locally to fully verify, so I'm opening this as a draft to let CI confirmqiskit core installs and imports on the repo's interpreter (the same document-the-failures approach as #15104/#15105). If it's green, happy to mark ready. Closes the quantum half of #8818 once it lands.

The other ignored files (TensorFlow) — separate story

The remaining --ignore entries are TensorFlow-based and are hard-blocked by the Python floor, not by stale code:

FileBlocker
dynamic_programming/k_means_clustering_tensorflow.py, neural_network/input_data.py, computer_vision/cnn_classification.pyimport tensorflow — TensorFlow's latest release tops out at Python 3.13; there are no 3.14 wheels, so adding it would break uv sync for the whole repo. k_means_clustering_tensorflow.py also still uses the TF1.x graph API (tf.placeholder, sessions).
machine_learning/lstm/lstm_prediction.pyKeras-only, but Keras 3 needs a backend and the only backend that fits the Python floor would be JAX; it also trains an LSTM per run (slow/heavy for build).
web_programming/current_stock_price.py, web_programming/fetch_anime_and_play.py, scripts/validate_solutions.pylive network / third-party HTML → flaky, should stay out of build.

So TF re-enablement realistically waits on TensorFlow shipping 3.14 wheels (or a JAX-backend rewrite of the Keras files). Happy to take on the JAX-backend lstm_prediction path as a separate PR if you'd like.

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.
@algorithms-keeper

Copy link
Copy Markdown

Closing this pull request as invalid

@priya-sundaram-dev, this pull request is being closed as none of the checkboxes have been marked. It is important that you go through the checklist and mark the ones relevant to this pull request. Please read the Contributing guidelines.

If you're facing any problem on how to mark a checkbox, please read the following instructions:

  • Read a point one at a time and think if it is relevant to the pull request or not.
  • If it is, then mark it by putting a x between the square bracket like so: [x]

NOTE: Only [x] is supported so if you have put any other letter or symbol between the brackets, that will be marked as invalid. If that is the case then please open a new pull request with the appropriate changes.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Re-opened as #15120 — the keeper closed this one for the draft's unchecked template, but CI already went fully green (build + build_docs pass on 3.14), so I've reopened it as a ready-for-review PR with the checklist completed. Same diff.

@cclauss

Copy link
Copy Markdown
Member

Can you please add one of those Markdown AI rules files to this repo so that you always remember that there needs to be at least one checked checkbox in the commit message of every new PR to placate the keeper.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Done — opened #15121, which adds a vendor-neutral AGENTS.md at the repo root. The headline rule is exactly the one you flagged: algorithms-keeper closes any PR whose "Describe your change" section has no checked box, so the file tells agents to tick the template before submitting. I also folded in the ruff / type-hint / doctest / naming conventions and pointed at CONTRIBUTING.md as the source of truth. Used AGENTS.md (the emerging cross-tool filename) rather than a tool-specific one so every agent picks it up.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@priya-sundaram-dev@cclauss
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT) - #15119

Closed
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft
Closed

quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT)#15119
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft

Conversation

@priya-sundaram-dev

Copy link
Copy Markdown
Contributor

Follow-up to #15118 and the ask in #15081: try to get the remaining ignored tests working, starting with the quantum one.

What this does

quantum/q_fourier_transform.py imported Aer and execute from qiskit — both removed in the Qiskit 1.0 API break — so the file could never import, which is why it sat on the --ignore list and its doctest was never validated. This ports it to the current API:

  • Simulate with the pure-Python BasicSimulator (transpile() + backend.run()) instead of Aer.get_backend("qasm_simulator") + execute(). BasicSimulator ships inside qiskit core, so no compiled qiskit-aer backend is required — relevant because qiskit-aer doesn't publish 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 the run (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, which random sampling can never hit — the old {'00': 2500, ...} doctest was statistically impossible and only "passed" because it was ignored.
  • Add qiskit>=2 to dependencies; drop --ignore=quantum/q_fourier_transform.py and the stale # TODO: #8818 Re-enable quantum tests comment from build.yml.

Why draft

I can't install Qiskit on Python 3.14 locally to fully verify, so I'm opening this as a draft to let CI confirmqiskit core installs and imports on the repo's interpreter (the same document-the-failures approach as #15104/#15105). If it's green, happy to mark ready. Closes the quantum half of #8818 once it lands.

The other ignored files (TensorFlow) — separate story

The remaining --ignore entries are TensorFlow-based and are hard-blocked by the Python floor, not by stale code:

FileBlocker
dynamic_programming/k_means_clustering_tensorflow.py, neural_network/input_data.py, computer_vision/cnn_classification.pyimport tensorflow — TensorFlow's latest release tops out at Python 3.13; there are no 3.14 wheels, so adding it would break uv sync for the whole repo. k_means_clustering_tensorflow.py also still uses the TF1.x graph API (tf.placeholder, sessions).
machine_learning/lstm/lstm_prediction.pyKeras-only, but Keras 3 needs a backend and the only backend that fits the Python floor would be JAX; it also trains an LSTM per run (slow/heavy for build).
web_programming/current_stock_price.py, web_programming/fetch_anime_and_play.py, scripts/validate_solutions.pylive network / third-party HTML → flaky, should stay out of build.

So TF re-enablement realistically waits on TensorFlow shipping 3.14 wheels (or a JAX-backend rewrite of the Keras files). Happy to take on the JAX-backend lstm_prediction path as a separate PR if you'd like.

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.
@algorithms-keeper

Copy link
Copy Markdown

Closing this pull request as invalid

@priya-sundaram-dev, this pull request is being closed as none of the checkboxes have been marked. It is important that you go through the checklist and mark the ones relevant to this pull request. Please read the Contributing guidelines.

If you're facing any problem on how to mark a checkbox, please read the following instructions:

  • Read a point one at a time and think if it is relevant to the pull request or not.
  • If it is, then mark it by putting a x between the square bracket like so: [x]

NOTE: Only [x] is supported so if you have put any other letter or symbol between the brackets, that will be marked as invalid. If that is the case then please open a new pull request with the appropriate changes.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Re-opened as #15120 — the keeper closed this one for the draft's unchecked template, but CI already went fully green (build + build_docs pass on 3.14), so I've reopened it as a ready-for-review PR with the checklist completed. Same diff.

@cclauss

Copy link
Copy Markdown
Member

Can you please add one of those Markdown AI rules files to this repo so that you always remember that there needs to be at least one checked checkbox in the commit message of every new PR to placate the keeper.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Done — opened #15121, which adds a vendor-neutral AGENTS.md at the repo root. The headline rule is exactly the one you flagged: algorithms-keeper closes any PR whose "Describe your change" section has no checked box, so the file tells agents to tick the template before submitting. I also folded in the ruff / type-hint / doctest / naming conventions and pointed at CONTRIBUTING.md as the source of truth. Used AGENTS.md (the emerging cross-tool filename) rather than a tool-specific one so every agent picks it up.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@priya-sundaram-dev@cclauss
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT) - #15119

Closed
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft
Closed

quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT)#15119
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft

Conversation

@priya-sundaram-dev

Copy link
Copy Markdown
Contributor

Follow-up to #15118 and the ask in #15081: try to get the remaining ignored tests working, starting with the quantum one.

What this does

quantum/q_fourier_transform.py imported Aer and execute from qiskit — both removed in the Qiskit 1.0 API break — so the file could never import, which is why it sat on the --ignore list and its doctest was never validated. This ports it to the current API:

  • Simulate with the pure-Python BasicSimulator (transpile() + backend.run()) instead of Aer.get_backend("qasm_simulator") + execute(). BasicSimulator ships inside qiskit core, so no compiled qiskit-aer backend is required — relevant because qiskit-aer doesn't publish 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 the run (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, which random sampling can never hit — the old {'00': 2500, ...} doctest was statistically impossible and only "passed" because it was ignored.
  • Add qiskit>=2 to dependencies; drop --ignore=quantum/q_fourier_transform.py and the stale # TODO: #8818 Re-enable quantum tests comment from build.yml.

Why draft

I can't install Qiskit on Python 3.14 locally to fully verify, so I'm opening this as a draft to let CI confirmqiskit core installs and imports on the repo's interpreter (the same document-the-failures approach as #15104/#15105). If it's green, happy to mark ready. Closes the quantum half of #8818 once it lands.

The other ignored files (TensorFlow) — separate story

The remaining --ignore entries are TensorFlow-based and are hard-blocked by the Python floor, not by stale code:

FileBlocker
dynamic_programming/k_means_clustering_tensorflow.py, neural_network/input_data.py, computer_vision/cnn_classification.pyimport tensorflow — TensorFlow's latest release tops out at Python 3.13; there are no 3.14 wheels, so adding it would break uv sync for the whole repo. k_means_clustering_tensorflow.py also still uses the TF1.x graph API (tf.placeholder, sessions).
machine_learning/lstm/lstm_prediction.pyKeras-only, but Keras 3 needs a backend and the only backend that fits the Python floor would be JAX; it also trains an LSTM per run (slow/heavy for build).
web_programming/current_stock_price.py, web_programming/fetch_anime_and_play.py, scripts/validate_solutions.pylive network / third-party HTML → flaky, should stay out of build.

So TF re-enablement realistically waits on TensorFlow shipping 3.14 wheels (or a JAX-backend rewrite of the Keras files). Happy to take on the JAX-backend lstm_prediction path as a separate PR if you'd like.

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.
@algorithms-keeper

Copy link
Copy Markdown

Closing this pull request as invalid

@priya-sundaram-dev, this pull request is being closed as none of the checkboxes have been marked. It is important that you go through the checklist and mark the ones relevant to this pull request. Please read the Contributing guidelines.

If you're facing any problem on how to mark a checkbox, please read the following instructions:

  • Read a point one at a time and think if it is relevant to the pull request or not.
  • If it is, then mark it by putting a x between the square bracket like so: [x]

NOTE: Only [x] is supported so if you have put any other letter or symbol between the brackets, that will be marked as invalid. If that is the case then please open a new pull request with the appropriate changes.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Re-opened as #15120 — the keeper closed this one for the draft's unchecked template, but CI already went fully green (build + build_docs pass on 3.14), so I've reopened it as a ready-for-review PR with the checklist completed. Same diff.

@cclauss

Copy link
Copy Markdown
Member

Can you please add one of those Markdown AI rules files to this repo so that you always remember that there needs to be at least one checked checkbox in the commit message of every new PR to placate the keeper.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Done — opened #15121, which adds a vendor-neutral AGENTS.md at the repo root. The headline rule is exactly the one you flagged: algorithms-keeper closes any PR whose "Describe your change" section has no checked box, so the file tells agents to tick the template before submitting. I also folded in the ruff / type-hint / doctest / naming conventions and pointed at CONTRIBUTING.md as the source of truth. Used AGENTS.md (the emerging cross-tool filename) rather than a tool-specific one so every agent picks it up.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@priya-sundaram-dev@cclauss
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT) - #15119

Closed
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft
Closed

quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT)#15119
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft

Conversation

@priya-sundaram-dev

Copy link
Copy Markdown
Contributor

Follow-up to #15118 and the ask in #15081: try to get the remaining ignored tests working, starting with the quantum one.

What this does

quantum/q_fourier_transform.py imported Aer and execute from qiskit — both removed in the Qiskit 1.0 API break — so the file could never import, which is why it sat on the --ignore list and its doctest was never validated. This ports it to the current API:

  • Simulate with the pure-Python BasicSimulator (transpile() + backend.run()) instead of Aer.get_backend("qasm_simulator") + execute(). BasicSimulator ships inside qiskit core, so no compiled qiskit-aer backend is required — relevant because qiskit-aer doesn't publish 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 the run (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, which random sampling can never hit — the old {'00': 2500, ...} doctest was statistically impossible and only "passed" because it was ignored.
  • Add qiskit>=2 to dependencies; drop --ignore=quantum/q_fourier_transform.py and the stale # TODO: #8818 Re-enable quantum tests comment from build.yml.

Why draft

I can't install Qiskit on Python 3.14 locally to fully verify, so I'm opening this as a draft to let CI confirmqiskit core installs and imports on the repo's interpreter (the same document-the-failures approach as #15104/#15105). If it's green, happy to mark ready. Closes the quantum half of #8818 once it lands.

The other ignored files (TensorFlow) — separate story

The remaining --ignore entries are TensorFlow-based and are hard-blocked by the Python floor, not by stale code:

FileBlocker
dynamic_programming/k_means_clustering_tensorflow.py, neural_network/input_data.py, computer_vision/cnn_classification.pyimport tensorflow — TensorFlow's latest release tops out at Python 3.13; there are no 3.14 wheels, so adding it would break uv sync for the whole repo. k_means_clustering_tensorflow.py also still uses the TF1.x graph API (tf.placeholder, sessions).
machine_learning/lstm/lstm_prediction.pyKeras-only, but Keras 3 needs a backend and the only backend that fits the Python floor would be JAX; it also trains an LSTM per run (slow/heavy for build).
web_programming/current_stock_price.py, web_programming/fetch_anime_and_play.py, scripts/validate_solutions.pylive network / third-party HTML → flaky, should stay out of build.

So TF re-enablement realistically waits on TensorFlow shipping 3.14 wheels (or a JAX-backend rewrite of the Keras files). Happy to take on the JAX-backend lstm_prediction path as a separate PR if you'd like.

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.
@algorithms-keeper

Copy link
Copy Markdown

Closing this pull request as invalid

@priya-sundaram-dev, this pull request is being closed as none of the checkboxes have been marked. It is important that you go through the checklist and mark the ones relevant to this pull request. Please read the Contributing guidelines.

If you're facing any problem on how to mark a checkbox, please read the following instructions:

  • Read a point one at a time and think if it is relevant to the pull request or not.
  • If it is, then mark it by putting a x between the square bracket like so: [x]

NOTE: Only [x] is supported so if you have put any other letter or symbol between the brackets, that will be marked as invalid. If that is the case then please open a new pull request with the appropriate changes.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Re-opened as #15120 — the keeper closed this one for the draft's unchecked template, but CI already went fully green (build + build_docs pass on 3.14), so I've reopened it as a ready-for-review PR with the checklist completed. Same diff.

@cclauss

Copy link
Copy Markdown
Member

Can you please add one of those Markdown AI rules files to this repo so that you always remember that there needs to be at least one checked checkbox in the commit message of every new PR to placate the keeper.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Done — opened #15121, which adds a vendor-neutral AGENTS.md at the repo root. The headline rule is exactly the one you flagged: algorithms-keeper closes any PR whose "Describe your change" section has no checked box, so the file tells agents to tick the template before submitting. I also folded in the ruff / type-hint / doctest / naming conventions and pointed at CONTRIBUTING.md as the source of truth. Used AGENTS.md (the emerging cross-tool filename) rather than a tool-specific one so every agent picks it up.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@priya-sundaram-dev@cclauss
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT) - #15119

Closed
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft
Closed

quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT)#15119
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft

Conversation

@priya-sundaram-dev

Copy link
Copy Markdown
Contributor

Follow-up to #15118 and the ask in #15081: try to get the remaining ignored tests working, starting with the quantum one.

What this does

quantum/q_fourier_transform.py imported Aer and execute from qiskit — both removed in the Qiskit 1.0 API break — so the file could never import, which is why it sat on the --ignore list and its doctest was never validated. This ports it to the current API:

  • Simulate with the pure-Python BasicSimulator (transpile() + backend.run()) instead of Aer.get_backend("qasm_simulator") + execute(). BasicSimulator ships inside qiskit core, so no compiled qiskit-aer backend is required — relevant because qiskit-aer doesn't publish 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 the run (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, which random sampling can never hit — the old {'00': 2500, ...} doctest was statistically impossible and only "passed" because it was ignored.
  • Add qiskit>=2 to dependencies; drop --ignore=quantum/q_fourier_transform.py and the stale # TODO: #8818 Re-enable quantum tests comment from build.yml.

Why draft

I can't install Qiskit on Python 3.14 locally to fully verify, so I'm opening this as a draft to let CI confirmqiskit core installs and imports on the repo's interpreter (the same document-the-failures approach as #15104/#15105). If it's green, happy to mark ready. Closes the quantum half of #8818 once it lands.

The other ignored files (TensorFlow) — separate story

The remaining --ignore entries are TensorFlow-based and are hard-blocked by the Python floor, not by stale code:

FileBlocker
dynamic_programming/k_means_clustering_tensorflow.py, neural_network/input_data.py, computer_vision/cnn_classification.pyimport tensorflow — TensorFlow's latest release tops out at Python 3.13; there are no 3.14 wheels, so adding it would break uv sync for the whole repo. k_means_clustering_tensorflow.py also still uses the TF1.x graph API (tf.placeholder, sessions).
machine_learning/lstm/lstm_prediction.pyKeras-only, but Keras 3 needs a backend and the only backend that fits the Python floor would be JAX; it also trains an LSTM per run (slow/heavy for build).
web_programming/current_stock_price.py, web_programming/fetch_anime_and_play.py, scripts/validate_solutions.pylive network / third-party HTML → flaky, should stay out of build.

So TF re-enablement realistically waits on TensorFlow shipping 3.14 wheels (or a JAX-backend rewrite of the Keras files). Happy to take on the JAX-backend lstm_prediction path as a separate PR if you'd like.

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.
@algorithms-keeper

Copy link
Copy Markdown

Closing this pull request as invalid

@priya-sundaram-dev, this pull request is being closed as none of the checkboxes have been marked. It is important that you go through the checklist and mark the ones relevant to this pull request. Please read the Contributing guidelines.

If you're facing any problem on how to mark a checkbox, please read the following instructions:

  • Read a point one at a time and think if it is relevant to the pull request or not.
  • If it is, then mark it by putting a x between the square bracket like so: [x]

NOTE: Only [x] is supported so if you have put any other letter or symbol between the brackets, that will be marked as invalid. If that is the case then please open a new pull request with the appropriate changes.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Re-opened as #15120 — the keeper closed this one for the draft's unchecked template, but CI already went fully green (build + build_docs pass on 3.14), so I've reopened it as a ready-for-review PR with the checklist completed. Same diff.

@cclauss

Copy link
Copy Markdown
Member

Can you please add one of those Markdown AI rules files to this repo so that you always remember that there needs to be at least one checked checkbox in the commit message of every new PR to placate the keeper.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Done — opened #15121, which adds a vendor-neutral AGENTS.md at the repo root. The headline rule is exactly the one you flagged: algorithms-keeper closes any PR whose "Describe your change" section has no checked box, so the file tells agents to tick the template before submitting. I also folded in the ruff / type-hint / doctest / naming conventions and pointed at CONTRIBUTING.md as the source of truth. Used AGENTS.md (the emerging cross-tool filename) rather than a tool-specific one so every agent picks it up.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@priya-sundaram-dev@cclauss
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT) - #15119

Closed
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft
Closed

quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT)#15119
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft

Conversation

@priya-sundaram-dev

Copy link
Copy Markdown
Contributor

Follow-up to #15118 and the ask in #15081: try to get the remaining ignored tests working, starting with the quantum one.

What this does

quantum/q_fourier_transform.py imported Aer and execute from qiskit — both removed in the Qiskit 1.0 API break — so the file could never import, which is why it sat on the --ignore list and its doctest was never validated. This ports it to the current API:

  • Simulate with the pure-Python BasicSimulator (transpile() + backend.run()) instead of Aer.get_backend("qasm_simulator") + execute(). BasicSimulator ships inside qiskit core, so no compiled qiskit-aer backend is required — relevant because qiskit-aer doesn't publish 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 the run (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, which random sampling can never hit — the old {'00': 2500, ...} doctest was statistically impossible and only "passed" because it was ignored.
  • Add qiskit>=2 to dependencies; drop --ignore=quantum/q_fourier_transform.py and the stale # TODO: #8818 Re-enable quantum tests comment from build.yml.

Why draft

I can't install Qiskit on Python 3.14 locally to fully verify, so I'm opening this as a draft to let CI confirmqiskit core installs and imports on the repo's interpreter (the same document-the-failures approach as #15104/#15105). If it's green, happy to mark ready. Closes the quantum half of #8818 once it lands.

The other ignored files (TensorFlow) — separate story

The remaining --ignore entries are TensorFlow-based and are hard-blocked by the Python floor, not by stale code:

FileBlocker
dynamic_programming/k_means_clustering_tensorflow.py, neural_network/input_data.py, computer_vision/cnn_classification.pyimport tensorflow — TensorFlow's latest release tops out at Python 3.13; there are no 3.14 wheels, so adding it would break uv sync for the whole repo. k_means_clustering_tensorflow.py also still uses the TF1.x graph API (tf.placeholder, sessions).
machine_learning/lstm/lstm_prediction.pyKeras-only, but Keras 3 needs a backend and the only backend that fits the Python floor would be JAX; it also trains an LSTM per run (slow/heavy for build).
web_programming/current_stock_price.py, web_programming/fetch_anime_and_play.py, scripts/validate_solutions.pylive network / third-party HTML → flaky, should stay out of build.

So TF re-enablement realistically waits on TensorFlow shipping 3.14 wheels (or a JAX-backend rewrite of the Keras files). Happy to take on the JAX-backend lstm_prediction path as a separate PR if you'd like.

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.
@algorithms-keeper

Copy link
Copy Markdown

Closing this pull request as invalid

@priya-sundaram-dev, this pull request is being closed as none of the checkboxes have been marked. It is important that you go through the checklist and mark the ones relevant to this pull request. Please read the Contributing guidelines.

If you're facing any problem on how to mark a checkbox, please read the following instructions:

  • Read a point one at a time and think if it is relevant to the pull request or not.
  • If it is, then mark it by putting a x between the square bracket like so: [x]

NOTE: Only [x] is supported so if you have put any other letter or symbol between the brackets, that will be marked as invalid. If that is the case then please open a new pull request with the appropriate changes.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Re-opened as #15120 — the keeper closed this one for the draft's unchecked template, but CI already went fully green (build + build_docs pass on 3.14), so I've reopened it as a ready-for-review PR with the checklist completed. Same diff.

@cclauss

Copy link
Copy Markdown
Member

Can you please add one of those Markdown AI rules files to this repo so that you always remember that there needs to be at least one checked checkbox in the commit message of every new PR to placate the keeper.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Done — opened #15121, which adds a vendor-neutral AGENTS.md at the repo root. The headline rule is exactly the one you flagged: algorithms-keeper closes any PR whose "Describe your change" section has no checked box, so the file tells agents to tick the template before submitting. I also folded in the ruff / type-hint / doctest / naming conventions and pointed at CONTRIBUTING.md as the source of truth. Used AGENTS.md (the emerging cross-tool filename) rather than a tool-specific one so every agent picks it up.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@priya-sundaram-dev@cclauss
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT) - #15119

Closed
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft
Closed

quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT)#15119
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft

Conversation

@priya-sundaram-dev

Copy link
Copy Markdown
Contributor

Follow-up to #15118 and the ask in #15081: try to get the remaining ignored tests working, starting with the quantum one.

What this does

quantum/q_fourier_transform.py imported Aer and execute from qiskit — both removed in the Qiskit 1.0 API break — so the file could never import, which is why it sat on the --ignore list and its doctest was never validated. This ports it to the current API:

  • Simulate with the pure-Python BasicSimulator (transpile() + backend.run()) instead of Aer.get_backend("qasm_simulator") + execute(). BasicSimulator ships inside qiskit core, so no compiled qiskit-aer backend is required — relevant because qiskit-aer doesn't publish 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 the run (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, which random sampling can never hit — the old {'00': 2500, ...} doctest was statistically impossible and only "passed" because it was ignored.
  • Add qiskit>=2 to dependencies; drop --ignore=quantum/q_fourier_transform.py and the stale # TODO: #8818 Re-enable quantum tests comment from build.yml.

Why draft

I can't install Qiskit on Python 3.14 locally to fully verify, so I'm opening this as a draft to let CI confirmqiskit core installs and imports on the repo's interpreter (the same document-the-failures approach as #15104/#15105). If it's green, happy to mark ready. Closes the quantum half of #8818 once it lands.

The other ignored files (TensorFlow) — separate story

The remaining --ignore entries are TensorFlow-based and are hard-blocked by the Python floor, not by stale code:

FileBlocker
dynamic_programming/k_means_clustering_tensorflow.py, neural_network/input_data.py, computer_vision/cnn_classification.pyimport tensorflow — TensorFlow's latest release tops out at Python 3.13; there are no 3.14 wheels, so adding it would break uv sync for the whole repo. k_means_clustering_tensorflow.py also still uses the TF1.x graph API (tf.placeholder, sessions).
machine_learning/lstm/lstm_prediction.pyKeras-only, but Keras 3 needs a backend and the only backend that fits the Python floor would be JAX; it also trains an LSTM per run (slow/heavy for build).
web_programming/current_stock_price.py, web_programming/fetch_anime_and_play.py, scripts/validate_solutions.pylive network / third-party HTML → flaky, should stay out of build.

So TF re-enablement realistically waits on TensorFlow shipping 3.14 wheels (or a JAX-backend rewrite of the Keras files). Happy to take on the JAX-backend lstm_prediction path as a separate PR if you'd like.

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.
@algorithms-keeper

Copy link
Copy Markdown

Closing this pull request as invalid

@priya-sundaram-dev, this pull request is being closed as none of the checkboxes have been marked. It is important that you go through the checklist and mark the ones relevant to this pull request. Please read the Contributing guidelines.

If you're facing any problem on how to mark a checkbox, please read the following instructions:

  • Read a point one at a time and think if it is relevant to the pull request or not.
  • If it is, then mark it by putting a x between the square bracket like so: [x]

NOTE: Only [x] is supported so if you have put any other letter or symbol between the brackets, that will be marked as invalid. If that is the case then please open a new pull request with the appropriate changes.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Re-opened as #15120 — the keeper closed this one for the draft's unchecked template, but CI already went fully green (build + build_docs pass on 3.14), so I've reopened it as a ready-for-review PR with the checklist completed. Same diff.

@cclauss

Copy link
Copy Markdown
Member

Can you please add one of those Markdown AI rules files to this repo so that you always remember that there needs to be at least one checked checkbox in the commit message of every new PR to placate the keeper.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Done — opened #15121, which adds a vendor-neutral AGENTS.md at the repo root. The headline rule is exactly the one you flagged: algorithms-keeper closes any PR whose "Describe your change" section has no checked box, so the file tells agents to tick the template before submitting. I also folded in the ruff / type-hint / doctest / naming conventions and pointed at CONTRIBUTING.md as the source of truth. Used AGENTS.md (the emerging cross-tool filename) rather than a tool-specific one so every agent picks it up.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@priya-sundaram-dev@cclauss
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT) - #15119

Closed
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft
Closed

quantum: modernize QFT to Qiskit 2.x and re-enable its test (DRAFT)#15119
priya-sundaram-dev wants to merge 1 commit into
TheAlgorithms:masterfrom
priya-sundaram-dev:modernize-quantum-qft

Conversation

@priya-sundaram-dev

Copy link
Copy Markdown
Contributor

Follow-up to #15118 and the ask in #15081: try to get the remaining ignored tests working, starting with the quantum one.

What this does

quantum/q_fourier_transform.py imported Aer and execute from qiskit — both removed in the Qiskit 1.0 API break — so the file could never import, which is why it sat on the --ignore list and its doctest was never validated. This ports it to the current API:

  • Simulate with the pure-Python BasicSimulator (transpile() + backend.run()) instead of Aer.get_backend("qasm_simulator") + execute(). BasicSimulator ships inside qiskit core, so no compiled qiskit-aer backend is required — relevant because qiskit-aer doesn't publish 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 the run (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, which random sampling can never hit — the old {'00': 2500, ...} doctest was statistically impossible and only "passed" because it was ignored.
  • Add qiskit>=2 to dependencies; drop --ignore=quantum/q_fourier_transform.py and the stale # TODO: #8818 Re-enable quantum tests comment from build.yml.

Why draft

I can't install Qiskit on Python 3.14 locally to fully verify, so I'm opening this as a draft to let CI confirmqiskit core installs and imports on the repo's interpreter (the same document-the-failures approach as #15104/#15105). If it's green, happy to mark ready. Closes the quantum half of #8818 once it lands.

The other ignored files (TensorFlow) — separate story

The remaining --ignore entries are TensorFlow-based and are hard-blocked by the Python floor, not by stale code:

FileBlocker
dynamic_programming/k_means_clustering_tensorflow.py, neural_network/input_data.py, computer_vision/cnn_classification.pyimport tensorflow — TensorFlow's latest release tops out at Python 3.13; there are no 3.14 wheels, so adding it would break uv sync for the whole repo. k_means_clustering_tensorflow.py also still uses the TF1.x graph API (tf.placeholder, sessions).
machine_learning/lstm/lstm_prediction.pyKeras-only, but Keras 3 needs a backend and the only backend that fits the Python floor would be JAX; it also trains an LSTM per run (slow/heavy for build).
web_programming/current_stock_price.py, web_programming/fetch_anime_and_play.py, scripts/validate_solutions.pylive network / third-party HTML → flaky, should stay out of build.

So TF re-enablement realistically waits on TensorFlow shipping 3.14 wheels (or a JAX-backend rewrite of the Keras files). Happy to take on the JAX-backend lstm_prediction path as a separate PR if you'd like.

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.
@algorithms-keeper

Copy link
Copy Markdown

Closing this pull request as invalid

@priya-sundaram-dev, this pull request is being closed as none of the checkboxes have been marked. It is important that you go through the checklist and mark the ones relevant to this pull request. Please read the Contributing guidelines.

If you're facing any problem on how to mark a checkbox, please read the following instructions:

  • Read a point one at a time and think if it is relevant to the pull request or not.
  • If it is, then mark it by putting a x between the square bracket like so: [x]

NOTE: Only [x] is supported so if you have put any other letter or symbol between the brackets, that will be marked as invalid. If that is the case then please open a new pull request with the appropriate changes.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Re-opened as #15120 — the keeper closed this one for the draft's unchecked template, but CI already went fully green (build + build_docs pass on 3.14), so I've reopened it as a ready-for-review PR with the checklist completed. Same diff.

@cclauss

Copy link
Copy Markdown
Member

Can you please add one of those Markdown AI rules files to this repo so that you always remember that there needs to be at least one checked checkbox in the commit message of every new PR to placate the keeper.

@priya-sundaram-dev

Copy link
Copy Markdown
ContributorAuthor

Done — opened #15121, which adds a vendor-neutral AGENTS.md at the repo root. The headline rule is exactly the one you flagged: algorithms-keeper closes any PR whose "Describe your change" section has no checked box, so the file tells agents to tick the template before submitting. I also folded in the ruff / type-hint / doctest / naming conventions and pointed at CONTRIBUTING.md as the source of truth. Used AGENTS.md (the emerging cross-tool filename) rather than a tool-specific one so every agent picks it up.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@priya-sundaram-dev@cclauss