Skip to content

Commit 281468c

Browse files
authored
Update patterns redirects file (#1594)
The PR updates the `scripts/patterns-reorg/redirects.json` file to a more convenient format that aligns better with our middleware. Having the `/` at the beginning of the old paths and the `/guides/` prefix in the new paths will allow us to have a more generic redirect file that could be used in the future for different URLs than patterns, and it will help us to set the redirects with a simpler logic. e.g., `url.pathname = REDIRECTS[url.pathname]` The PR also adds a missing redirect for `/start/latest-updates`.
1 parent fa5671e commit 281468c

File tree

3 files changed

+86
-85
lines changed

3 files changed

+86
-85
lines changed

scripts/patterns-reorg/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from deleted_entries import DELETED_PAGES
2525

2626
OLD_FOLDERS = ["start", "run", "verify", "transpile", "build"]
27-
REDIRECTS = determine_redirects((*TOP_LEVEL_ENTRIES, *DELETED_PAGES))
27+
REDIRECTS = determine_redirects((*TOP_LEVEL_ENTRIES, *DELETED_PAGES), prefix="/guides")
2828

2929

3030
def create_parser() -> ArgumentParser:

scripts/patterns-reorg/models.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ def _add_redirect_to_dict(
123123
# We need to add two links for each index entry because we can
124124
# have two links possible. For example, `/run/index` and `/run`
125125
# point to the same page.
126-
old_folder, old_file_name = old_url.split("/")
126+
old_folder, old_file_name = old_url.rsplit("/",1)
127127
if old_file_name == "index":
128128
redirects[f"{old_folder}"] = redirect_to
129129

@@ -134,17 +134,17 @@ def determine_redirects(
134134
result = {}
135135
for entry in entries:
136136
if isinstance(entry, Entry):
137-
result.update(determine_redirects(entry.children))
137+
result.update(determine_redirects(entry.children, prefix=prefix))
138138

139139
if entry.slug is None or not entry.from_file:
140140
continue
141141

142-
old_url = str(PurePath(entry.from_file).with_suffix(""))
143-
redirect_to = f"{prefix}{entry.slug.removeprefix('/')}"
142+
old_url = f"/{str(PurePath(entry.from_file).with_suffix(''))}"
143+
redirect_to = f"{prefix}{entry.slug}"
144144
_add_redirect_to_dict(result, old_url, redirect_to)
145145

146146
elif isinstance(entry, DeletedPage):
147-
redirect_to = f"{prefix}{entry.redirect_to.removeprefix('/')}"
148-
_add_redirect_to_dict(result, entry.old_slug, redirect_to)
147+
redirect_to = f"{prefix}{entry.redirect_to}"
148+
_add_redirect_to_dict(result, f"/{entry.old_slug}", redirect_to)
149149

150150
return result

scripts/patterns-reorg/redirects.json

Lines changed: 79 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,81 @@
11
{
2-
"start/install": "install-qiskit",
3-
"start/setup-channel": "setup-channel",
4-
"start/hello-world": "hello-world",
5-
"start/install-qiskit-source": "install-qiskit-source",
6-
"start/configure-qiskit-local": "configure-qiskit-local",
7-
"build/circuit-library": "circuit-library",
8-
"build/circuit-construction": "construct-circuits",
9-
"build/classical-feedforward-and-control-flow": "classical-feedforward-and-control-flow",
10-
"build/unitary-synthesis": "synthesize-unitary-operators",
11-
"build/bit-ordering": "bit-ordering",
12-
"build/save-circuits": "save-circuits",
13-
"build/operators-overview": "operators-overview",
14-
"build/specify-observables-pauli": "specify-observables-pauli",
15-
"build/operator-class": "operator-class",
16-
"build/pulse": "pulse",
17-
"build/introduction-to-qasm": "introduction-to-qasm",
18-
"build/interoperate-qiskit-qasm2": "interoperate-qiskit-qasm2",
19-
"build/interoperate-qiskit-qasm3": "interoperate-qiskit-qasm3",
20-
"build/qasm-feature-table": "qasm-feature-table",
21-
"transpile/index": "transpile",
22-
"transpile": "transpile",
23-
"transpile/transpiler-stages": "transpiler-stages",
24-
"transpile/transpile-with-pass-managers": "transpile-with-pass-managers",
25-
"transpile/defaults-and-configuration-options": "defaults-and-configuration-options",
26-
"transpile/set-optimization": "set-optimization",
27-
"transpile/common-parameters": "common-parameters",
28-
"transpile/representing_quantum_computers": "represent-quantum-computers",
29-
"transpile/dynamical-decoupling-pass-manager": "dynamical-decoupling-pass-manager",
30-
"transpile/custom-transpiler-pass": "custom-transpiler-pass",
31-
"transpile/custom-backend": "custom-backend",
32-
"transpile/transpiler-plugins": "transpiler-plugins",
33-
"transpile/create-a-transpiler-plugin": "create-transpiler-plugin",
34-
"transpile/qiskit-transpiler-service": "qiskit-transpiler-service",
35-
"transpile/ai-transpiler-passes": "ai-transpiler-passes",
36-
"verify/index": "debugging-tools",
37-
"verify": "debugging-tools",
38-
"verify/simulate-with-qiskit-primitives": "simulate-with-qiskit-sdk-primitives",
39-
"verify/simulate-with-qiskit-aer": "simulate-with-qiskit-aer",
40-
"verify/local-testing-mode": "local-testing-mode",
41-
"verify/building_noise_models": "build-noise-models",
42-
"verify/stabilizer-circuit-simulation": "simulate-stabilizer-circuits",
43-
"run/primitives": "primitives",
44-
"run/primitives-get-started": "get-started-with-primitives",
45-
"run/primitives-examples": "primitives-examples",
46-
"run/configure-runtime-compilation": "configure-runtime-compilation",
47-
"run/configure-error-mitigation": "configure-error-mitigation",
48-
"run/advanced-runtime-options": "advanced-runtime-options",
49-
"run/error-mitigation-explanation": "error-mitigation-and-suppression-techniques",
50-
"run/execution-modes": "execution-modes",
51-
"run/sessions": "sessions",
52-
"run/run-jobs-in-session": "run-jobs-session",
53-
"run/run-jobs-batch": "run-jobs-batch",
54-
"run/circuit-execution": "repetition-rate-execution",
55-
"run/monitor-job": "monitor-job",
56-
"run/estimate-job-run-time": "estimate-job-run-time",
57-
"run/minimize-time": "minimize-time",
58-
"run/max-execution-time": "max-execution-time",
59-
"run/save-jobs": "save-jobs",
60-
"run/execution-modes-faq": "execution-modes-faq",
61-
"run/processor-types": "processor-types",
62-
"run/system-information": "system-information",
63-
"run/get-backend-information": "get-backend-information",
64-
"run/native-gates": "native-gates",
65-
"run/retired-systems": "retired-systems",
66-
"run/dynamic-circuits-considerations": "dynamic-circuits-considerations",
67-
"run/instances": "instances",
68-
"run/fair-share-queue": "fair-share-scheduler",
69-
"run/manage-cost": "manage-cost",
70-
"build/circuit-visualization": "visualize-circuits",
71-
"verify/plot-quantum-states": "plot-quantum-states",
72-
"run/visualize-results": "visualize-results",
73-
"run/quantum-serverless": "qiskit-serverless",
74-
"build/index": "map-problem-to-circuits",
75-
"build": "map-problem-to-circuits",
76-
"run/index": "execute-on-hardware",
77-
"run": "execute-on-hardware",
78-
"start/index": "",
79-
"start": ""
2+
"/start/install": "/guides/install-qiskit",
3+
"/start/setup-channel": "/guides/setup-channel",
4+
"/start/hello-world": "/guides/hello-world",
5+
"/start/latest-updates": "/guides/latest-updates",
6+
"/start/install-qiskit-source": "/guides/install-qiskit-source",
7+
"/start/configure-qiskit-local": "/guides/configure-qiskit-local",
8+
"/build/circuit-library": "/guides/circuit-library",
9+
"/build/circuit-construction": "/guides/construct-circuits",
10+
"/build/classical-feedforward-and-control-flow": "/guides/classical-feedforward-and-control-flow",
11+
"/build/unitary-synthesis": "/guides/synthesize-unitary-operators",
12+
"/build/bit-ordering": "/guides/bit-ordering",
13+
"/build/save-circuits": "/guides/save-circuits",
14+
"/build/operators-overview": "/guides/operators-overview",
15+
"/build/specify-observables-pauli": "/guides/specify-observables-pauli",
16+
"/build/operator-class": "/guides/operator-class",
17+
"/build/pulse": "/guides/pulse",
18+
"/build/introduction-to-qasm": "/guides/introduction-to-qasm",
19+
"/build/interoperate-qiskit-qasm2": "/guides/interoperate-qiskit-qasm2",
20+
"/build/interoperate-qiskit-qasm3": "/guides/interoperate-qiskit-qasm3",
21+
"/build/qasm-feature-table": "/guides/qasm-feature-table",
22+
"/transpile/index": "/guides/transpile",
23+
"/transpile": "/guides/transpile",
24+
"/transpile/transpiler-stages": "/guides/transpiler-stages",
25+
"/transpile/transpile-with-pass-managers": "/guides/transpile-with-pass-managers",
26+
"/transpile/defaults-and-configuration-options": "/guides/defaults-and-configuration-options",
27+
"/transpile/set-optimization": "/guides/set-optimization",
28+
"/transpile/common-parameters": "/guides/common-parameters",
29+
"/transpile/representing_quantum_computers": "/guides/represent-quantum-computers",
30+
"/transpile/dynamical-decoupling-pass-manager": "/guides/dynamical-decoupling-pass-manager",
31+
"/transpile/custom-transpiler-pass": "/guides/custom-transpiler-pass",
32+
"/transpile/custom-backend": "/guides/custom-backend",
33+
"/transpile/transpiler-plugins": "/guides/transpiler-plugins",
34+
"/transpile/create-a-transpiler-plugin": "/guides/create-transpiler-plugin",
35+
"/transpile/qiskit-transpiler-service": "/guides/qiskit-transpiler-service",
36+
"/transpile/ai-transpiler-passes": "/guides/ai-transpiler-passes",
37+
"/verify/index": "/guides/debugging-tools",
38+
"/verify": "/guides/debugging-tools",
39+
"/verify/simulate-with-qiskit-primitives": "/guides/simulate-with-qiskit-sdk-primitives",
40+
"/verify/simulate-with-qiskit-aer": "/guides/simulate-with-qiskit-aer",
41+
"/verify/local-testing-mode": "/guides/local-testing-mode",
42+
"/verify/building_noise_models": "/guides/build-noise-models",
43+
"/verify/stabilizer-circuit-simulation": "/guides/simulate-stabilizer-circuits",
44+
"/run/primitives": "/guides/primitives",
45+
"/run/primitives-get-started": "/guides/get-started-with-primitives",
46+
"/run/primitives-examples": "/guides/primitives-examples",
47+
"/run/configure-runtime-compilation": "/guides/configure-runtime-compilation",
48+
"/run/configure-error-mitigation": "/guides/configure-error-mitigation",
49+
"/run/advanced-runtime-options": "/guides/advanced-runtime-options",
50+
"/run/error-mitigation-explanation": "/guides/error-mitigation-and-suppression-techniques",
51+
"/run/execution-modes": "/guides/execution-modes",
52+
"/run/sessions": "/guides/sessions",
53+
"/run/run-jobs-in-session": "/guides/run-jobs-session",
54+
"/run/run-jobs-batch": "/guides/run-jobs-batch",
55+
"/run/circuit-execution": "/guides/repetition-rate-execution",
56+
"/run/monitor-job": "/guides/monitor-job",
57+
"/run/estimate-job-run-time": "/guides/estimate-job-run-time",
58+
"/run/minimize-time": "/guides/minimize-time",
59+
"/run/max-execution-time": "/guides/max-execution-time",
60+
"/run/save-jobs": "/guides/save-jobs",
61+
"/run/execution-modes-faq": "/guides/execution-modes-faq",
62+
"/run/processor-types": "/guides/processor-types",
63+
"/run/system-information": "/guides/system-information",
64+
"/run/get-backend-information": "/guides/get-backend-information",
65+
"/run/native-gates": "/guides/native-gates",
66+
"/run/retired-systems": "/guides/retired-systems",
67+
"/run/dynamic-circuits-considerations": "/guides/dynamic-circuits-considerations",
68+
"/run/instances": "/guides/instances",
69+
"/run/fair-share-queue": "/guides/fair-share-scheduler",
70+
"/run/manage-cost": "/guides/manage-cost",
71+
"/build/circuit-visualization": "/guides/visualize-circuits",
72+
"/verify/plot-quantum-states": "/guides/plot-quantum-states",
73+
"/run/visualize-results": "/guides/visualize-results",
74+
"/run/quantum-serverless": "/guides/qiskit-serverless",
75+
"/build/index": "/guides/map-problem-to-circuits",
76+
"/build": "/guides/map-problem-to-circuits",
77+
"/run/index": "/guides/execute-on-hardware",
78+
"/run": "/guides/execute-on-hardware",
79+
"/start/index": "/guides",
80+
"/start": "/guides"
8081
}

0 commit comments

Comments
 (0)