quapp-common 0.0.12.dev13__tar.gz → 0.0.12.dev14__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {quapp_common-0.0.12.dev13/quapp_common.egg-info → quapp_common-0.0.12.dev14}/PKG-INFO +14 -1
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/README.md +13 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/pyproject.toml +1 -1
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/circuit_adapter.py +98 -8
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14/quapp_common.egg-info}/PKG-INFO +14 -1
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/LICENSE +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/async_tasks/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/async_tasks/async_invocation_task.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/async_tasks/async_task.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/async_tasks/export_circuit_task.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/async_tasks/post_processing_task.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/backend/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/backend/invocation.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/backend/job_fetcher.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/backend/job_fetching.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/backend/job_manager.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/bridge.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/callback/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/callback/update_job_metadata.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/device/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/device/device_selection.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/dispatcher.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/result_serializer.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/config/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/config/logging_config.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/config/thread_config.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/async_task/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/async_task/circuit_export/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/async_task/circuit_export/backend_holder.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/async_task/circuit_export/circuit_holder.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/backend/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/backend/backend_information.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/callback/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/callback/callback_url.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/device/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/device/circuit_running_option.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/promise/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/promise/post_processing_promise.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/promise/promise.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/request/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/request/invocation_request.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/request/job_fetching_request.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/request/request.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/response/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/response/authentication.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/response/custom_header.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/response/job_response.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/base_enum.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/http_header.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/invocation_step.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/language.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/media_type.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/processing_unit.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/provider_tag.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/sdk.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/status/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/status/job_status.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/status/status_code.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/token_type.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/factory/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/factory/device_factory.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/factory/handler_factory.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/factory/provider_factory.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/handler/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/handler/handler.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/model/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/model/device/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/model/device/custom_device.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/model/device/device.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/model/invocation.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/model/provider/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/model/provider/provider.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/util/__init__.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/util/file_utils.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/util/http_utils.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/util/json_parser_utils.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/util/response_utils.py +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common.egg-info/SOURCES.txt +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common.egg-info/dependency_links.txt +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common.egg-info/requires.txt +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common.egg-info/top_level.txt +0 -0
- {quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: quapp-common
|
|
3
|
-
Version: 0.0.12.
|
|
3
|
+
Version: 0.0.12.dev14
|
|
4
4
|
Summary: Quapp common library supporting Quapp Platform for Quantum Computing
|
|
5
5
|
Author-email: "CITYNOW Co. Ltd. " <corp@citynow.vn>
|
|
6
6
|
License: The MIT License (MIT)
|
|
@@ -103,6 +103,19 @@ Notes:
|
|
|
103
103
|
|
|
104
104
|
## Recently Changes Highlights
|
|
105
105
|
|
|
106
|
+
### v0.0.12.dev14
|
|
107
|
+
- Fix: `CircuitAdapter._adapt_openqasm` for `Sdk.PENNYLANE` now catches the
|
|
108
|
+
"Failed to load the qasm plugin" error raised by `qml.from_qasm` on
|
|
109
|
+
PennyLane versions that route QASM parsing through the IO plugin registry
|
|
110
|
+
and require `pennylane-qiskit` to be installed (affects both older releases
|
|
111
|
+
and the current latest). When the error is detected, it falls back to
|
|
112
|
+
parsing the QASM string via Qiskit (a hard dependency) and emitting native
|
|
113
|
+
PennyLane operations gate-by-gate through the new
|
|
114
|
+
`CircuitAdapter._qiskit_to_pennylane` helper. Supported gates: H, X, Y, Z,
|
|
115
|
+
S, Sdg (→ PhaseShift −π/2), T, Tdg (→ PhaseShift −π/4), CX, CZ, SWAP,
|
|
116
|
+
RX, RY, RZ, P/U1 (→ PhaseShift), U2, U3/U; unrecognized gates are logged
|
|
117
|
+
as a warning and skipped.
|
|
118
|
+
|
|
106
119
|
### v0.0.12.dev13
|
|
107
120
|
- Fix: `CircuitAdapter._adapt_openqasm` for `Sdk.PENNYLANE` now injects string
|
|
108
121
|
sentinels (`"Expectation"`, `"Variance"`, `"Sample"`, `"Probability"`,
|
|
@@ -64,6 +64,19 @@ Notes:
|
|
|
64
64
|
|
|
65
65
|
## Recently Changes Highlights
|
|
66
66
|
|
|
67
|
+
### v0.0.12.dev14
|
|
68
|
+
- Fix: `CircuitAdapter._adapt_openqasm` for `Sdk.PENNYLANE` now catches the
|
|
69
|
+
"Failed to load the qasm plugin" error raised by `qml.from_qasm` on
|
|
70
|
+
PennyLane versions that route QASM parsing through the IO plugin registry
|
|
71
|
+
and require `pennylane-qiskit` to be installed (affects both older releases
|
|
72
|
+
and the current latest). When the error is detected, it falls back to
|
|
73
|
+
parsing the QASM string via Qiskit (a hard dependency) and emitting native
|
|
74
|
+
PennyLane operations gate-by-gate through the new
|
|
75
|
+
`CircuitAdapter._qiskit_to_pennylane` helper. Supported gates: H, X, Y, Z,
|
|
76
|
+
S, Sdg (→ PhaseShift −π/2), T, Tdg (→ PhaseShift −π/4), CX, CZ, SWAP,
|
|
77
|
+
RX, RY, RZ, P/U1 (→ PhaseShift), U2, U3/U; unrecognized gates are logged
|
|
78
|
+
as a warning and skipped.
|
|
79
|
+
|
|
67
80
|
### v0.0.12.dev13
|
|
68
81
|
- Fix: `CircuitAdapter._adapt_openqasm` for `Sdk.PENNYLANE` now injects string
|
|
69
82
|
sentinels (`"Expectation"`, `"Variance"`, `"Sample"`, `"Probability"`,
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "quapp-common"
|
|
7
|
-
version = "0.0.12.
|
|
7
|
+
version = "0.0.12.dev14"
|
|
8
8
|
description = "Quapp common library supporting Quapp Platform for Quantum Computing"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [{ name = "CITYNOW Co. Ltd. ", email = "corp@citynow.vn" }]
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/circuit_adapter.py
RENAMED
|
@@ -94,17 +94,34 @@ class CircuitAdapter:
|
|
|
94
94
|
# drop QASM's terminal measures) and then explicitly queue a
|
|
95
95
|
# fresh `qml.probs` over all qubits, so the wires are visible in
|
|
96
96
|
# both `QuantumTape` capture and full QNode execution.
|
|
97
|
+
#
|
|
98
|
+
# qml.from_qasm requires the pennylane-qiskit plugin in several
|
|
99
|
+
# PennyLane versions — both older releases (< 0.36) where it was
|
|
100
|
+
# plugin-only, and newer releases that re-route through the IO
|
|
101
|
+
# plugin registry. If the plugin is absent the call raises
|
|
102
|
+
# "Failed to load the qasm plugin". Fall back to parsing via
|
|
103
|
+
# Qiskit (a hard dependency) and emitting native PennyLane ops
|
|
104
|
+
# gate-by-gate.
|
|
97
105
|
num_wires = CircuitAdapter._count_qasm_qubits(qasm_str)
|
|
98
106
|
logger.debug(f"PennyLane: detected {num_wires} qubits; wrapping with qml.probs over all wires")
|
|
99
|
-
|
|
107
|
+
try:
|
|
108
|
+
base_fn = qml.from_qasm(qasm_str, measurements=[])
|
|
100
109
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
110
|
+
def _circuit():
|
|
111
|
+
base_fn()
|
|
112
|
+
if num_wires > 0:
|
|
113
|
+
return qml.probs(wires=list(range(num_wires)))
|
|
114
|
+
return None
|
|
106
115
|
|
|
107
|
-
|
|
116
|
+
return _circuit
|
|
117
|
+
except Exception as _e:
|
|
118
|
+
if "qasm plugin" not in str(_e) and "pennylane-qiskit" not in str(_e):
|
|
119
|
+
raise
|
|
120
|
+
logger.warning(
|
|
121
|
+
f"qml.from_qasm unavailable ({_e}); "
|
|
122
|
+
"falling back to Qiskit bridge for PennyLane QASM conversion"
|
|
123
|
+
)
|
|
124
|
+
return CircuitAdapter._qiskit_to_pennylane(qasm_str, num_wires)
|
|
108
125
|
|
|
109
126
|
elif sdk == Sdk.PYQUIL:
|
|
110
127
|
logger.debug("Converting OpenQASM via pytket -> tk_to_pyquil")
|
|
@@ -142,7 +159,7 @@ class CircuitAdapter:
|
|
|
142
159
|
def _count_qasm_qubits(qasm_str):
|
|
143
160
|
"""Sum qubit counts across all `qreg <name>[<n>];` declarations."""
|
|
144
161
|
import re
|
|
145
|
-
return sum(int(m) for m in re.findall(r'qreg\s+\w+\[(\d+)
|
|
162
|
+
return sum(int(m) for m in re.findall(r'qreg\s+\w+\[(\d+)]', qasm_str))
|
|
146
163
|
|
|
147
164
|
@staticmethod
|
|
148
165
|
def _adapt_qubo(sdk, qubo_raw):
|
|
@@ -216,3 +233,76 @@ class CircuitAdapter:
|
|
|
216
233
|
|
|
217
234
|
logger.debug(f"_qiskit_to_qulacs: conversion complete")
|
|
218
235
|
return qulacs_circ
|
|
236
|
+
|
|
237
|
+
@staticmethod
|
|
238
|
+
def _qiskit_to_pennylane(qasm_str, num_wires):
|
|
239
|
+
"""Parse an OpenQASM 2.0 string via Qiskit and return a PennyLane callable.
|
|
240
|
+
|
|
241
|
+
Fallback for environments where qml.from_qasm is unavailable because
|
|
242
|
+
pennylane-qiskit is not installed (PennyLane < 0.36).
|
|
243
|
+
"""
|
|
244
|
+
import numpy as np
|
|
245
|
+
from qiskit import QuantumCircuit as QiskitCircuit
|
|
246
|
+
import pennylane as qml
|
|
247
|
+
|
|
248
|
+
qiskit_circ = QiskitCircuit.from_qasm_str(qasm_str)
|
|
249
|
+
qubit_map = {bit: idx for idx, bit in enumerate(qiskit_circ.qubits)}
|
|
250
|
+
logger.debug(
|
|
251
|
+
f"_qiskit_to_pennylane: num_qubits={qiskit_circ.num_qubits} "
|
|
252
|
+
f"num_instructions={len(qiskit_circ.data)}"
|
|
253
|
+
)
|
|
254
|
+
|
|
255
|
+
instructions = [
|
|
256
|
+
(inst.operation.name,
|
|
257
|
+
[qubit_map[q] for q in inst.qubits],
|
|
258
|
+
[float(p) for p in inst.operation.params])
|
|
259
|
+
for inst in qiskit_circ.data
|
|
260
|
+
]
|
|
261
|
+
|
|
262
|
+
_SKIP = frozenset({'measure', 'barrier', 'reset', 'id'})
|
|
263
|
+
|
|
264
|
+
def _circuit():
|
|
265
|
+
for name, qubits, params in instructions:
|
|
266
|
+
if name in _SKIP:
|
|
267
|
+
continue
|
|
268
|
+
elif name == 'h':
|
|
269
|
+
qml.Hadamard(wires=qubits[0])
|
|
270
|
+
elif name == 'x':
|
|
271
|
+
qml.PauliX(wires=qubits[0])
|
|
272
|
+
elif name == 'y':
|
|
273
|
+
qml.PauliY(wires=qubits[0])
|
|
274
|
+
elif name == 'z':
|
|
275
|
+
qml.PauliZ(wires=qubits[0])
|
|
276
|
+
elif name == 's':
|
|
277
|
+
qml.S(wires=qubits[0])
|
|
278
|
+
elif name == 'sdg':
|
|
279
|
+
qml.PhaseShift(-np.pi / 2, wires=qubits[0])
|
|
280
|
+
elif name == 't':
|
|
281
|
+
qml.T(wires=qubits[0])
|
|
282
|
+
elif name == 'tdg':
|
|
283
|
+
qml.PhaseShift(-np.pi / 4, wires=qubits[0])
|
|
284
|
+
elif name == 'cx':
|
|
285
|
+
qml.CNOT(wires=qubits)
|
|
286
|
+
elif name == 'cz':
|
|
287
|
+
qml.CZ(wires=qubits)
|
|
288
|
+
elif name == 'swap':
|
|
289
|
+
qml.SWAP(wires=qubits)
|
|
290
|
+
elif name == 'rx':
|
|
291
|
+
qml.RX(params[0], wires=qubits[0])
|
|
292
|
+
elif name == 'ry':
|
|
293
|
+
qml.RY(params[0], wires=qubits[0])
|
|
294
|
+
elif name == 'rz':
|
|
295
|
+
qml.RZ(params[0], wires=qubits[0])
|
|
296
|
+
elif name in ('p', 'u1'):
|
|
297
|
+
qml.PhaseShift(params[0], wires=qubits[0])
|
|
298
|
+
elif name == 'u2':
|
|
299
|
+
qml.U2(params[0], params[1], wires=qubits[0])
|
|
300
|
+
elif name in ('u3', 'u'):
|
|
301
|
+
qml.U3(params[0], params[1], params[2], wires=qubits[0])
|
|
302
|
+
else:
|
|
303
|
+
logger.warning(f"PennyLane Qiskit bridge: unrecognized gate '{name}'; skipping")
|
|
304
|
+
if num_wires > 0:
|
|
305
|
+
return qml.probs(wires=list(range(num_wires)))
|
|
306
|
+
return None
|
|
307
|
+
|
|
308
|
+
return _circuit
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: quapp-common
|
|
3
|
-
Version: 0.0.12.
|
|
3
|
+
Version: 0.0.12.dev14
|
|
4
4
|
Summary: Quapp common library supporting Quapp Platform for Quantum Computing
|
|
5
5
|
Author-email: "CITYNOW Co. Ltd. " <corp@citynow.vn>
|
|
6
6
|
License: The MIT License (MIT)
|
|
@@ -103,6 +103,19 @@ Notes:
|
|
|
103
103
|
|
|
104
104
|
## Recently Changes Highlights
|
|
105
105
|
|
|
106
|
+
### v0.0.12.dev14
|
|
107
|
+
- Fix: `CircuitAdapter._adapt_openqasm` for `Sdk.PENNYLANE` now catches the
|
|
108
|
+
"Failed to load the qasm plugin" error raised by `qml.from_qasm` on
|
|
109
|
+
PennyLane versions that route QASM parsing through the IO plugin registry
|
|
110
|
+
and require `pennylane-qiskit` to be installed (affects both older releases
|
|
111
|
+
and the current latest). When the error is detected, it falls back to
|
|
112
|
+
parsing the QASM string via Qiskit (a hard dependency) and emitting native
|
|
113
|
+
PennyLane operations gate-by-gate through the new
|
|
114
|
+
`CircuitAdapter._qiskit_to_pennylane` helper. Supported gates: H, X, Y, Z,
|
|
115
|
+
S, Sdg (→ PhaseShift −π/2), T, Tdg (→ PhaseShift −π/4), CX, CZ, SWAP,
|
|
116
|
+
RX, RY, RZ, P/U1 (→ PhaseShift), U2, U3/U; unrecognized gates are logged
|
|
117
|
+
as a warning and skipped.
|
|
118
|
+
|
|
106
119
|
### v0.0.12.dev13
|
|
107
120
|
- Fix: `CircuitAdapter._adapt_openqasm` for `Sdk.PENNYLANE` now injects string
|
|
108
121
|
sentinels (`"Expectation"`, `"Variance"`, `"Sample"`, `"Probability"`,
|
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/async_tasks/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/async_tasks/async_task.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/backend/__init__.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/backend/invocation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/callback/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/device/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/dispatcher.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/component/result_serializer.py
RENAMED
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/config/logging_config.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/config/thread_config.py
RENAMED
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/async_task/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/backend/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/callback/__init__.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/callback/callback_url.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/device/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/promise/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/promise/promise.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/request/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/request/request.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/response/__init__.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/response/authentication.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/response/custom_header.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/data/response/job_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/invocation_step.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/processing_unit.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/status/__init__.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/status/job_status.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/enum/status/status_code.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/factory/device_factory.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/factory/handler_factory.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/factory/provider_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/model/device/__init__.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/model/device/custom_device.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/model/provider/__init__.py
RENAMED
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/model/provider/provider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common/util/json_parser_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quapp_common-0.0.12.dev13 → quapp_common-0.0.12.dev14}/quapp_common.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|