Skip to content

Commit c8e3c77

Browse files
fix: delayed imports advanced
1 parent 1595ea9 commit c8e3c77

File tree

1 file changed

+39
-24
lines changed

1 file changed

+39
-24
lines changed

mpqp/execution/providers/google.py

+39-24
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,12 @@
11
from __future__ import annotations
22

3-
from typing import Optional
4-
5-
import cirq_ionq as ionq
6-
from cirq.circuits.circuit import Circuit as Cirq_circuit
7-
from cirq.devices.line_qubit import LineQubit
8-
from cirq.ops.linear_combinations import PauliSum as Cirq_PauliSum
9-
from cirq.sim.sparse_simulator import Simulator
10-
from cirq.sim.state_vector_simulator import StateVectorTrialResult
11-
from cirq.study.result import Result as cirq_result
12-
from cirq.transformers.optimize_for_target_gateset import optimize_for_target_gateset
13-
from cirq.value.probability import state_vector_to_probabilities
14-
from cirq.work.observable_measurement import (
15-
RepetitionsStoppingCriteria,
16-
measure_observables,
17-
)
18-
from cirq.work.observable_measurement_data import ObservableMeasuredResult
19-
from cirq_google.engine.simulated_local_engine import SimulatedLocalEngine
20-
from cirq_google.engine.simulated_local_processor import SimulatedLocalProcessor
21-
from cirq_google.engine.virtual_engine_factory import (
22-
create_device_from_processor_id,
23-
load_median_device_calibration,
24-
)
25-
from cirq_ionq.ionq_gateset import IonQTargetGateset
26-
from qsimcirq.qsim_simulator import QSimSimulator
3+
from typing import TYPE_CHECKING, Optional
4+
5+
if TYPE_CHECKING:
6+
from cirq.sim.state_vector_simulator import StateVectorTrialResult
7+
from cirq.study.result import Result as cirq_result
8+
from cirq.work.observable_measurement_data import ObservableMeasuredResult
9+
2710
from typeguard import typechecked
2811

2912
from mpqp import Language
@@ -70,6 +53,14 @@ def run_google_remote(job: Job) -> Result:
7053
devices are supported currently).
7154
NotImplementedError: If the job type or basis measure is not supported.
7255
"""
56+
import cirq_ionq as ionq
57+
from cirq.circuits.circuit import Circuit as Cirq_circuit
58+
from cirq.devices.line_qubit import LineQubit
59+
from cirq.transformers.optimize_for_target_gateset import (
60+
optimize_for_target_gateset,
61+
)
62+
from cirq_ionq.ionq_gateset import IonQTargetGateset
63+
7364
assert type(job.device) == GOOGLEDevice
7465

7566
job_cirq_circuit = job.circuit.to_other_language(Language.CIRQ)
@@ -123,6 +114,14 @@ def run_local(job: Job) -> Result:
123114
Raises:
124115
ValueError: If the job device is not GOOGLEDevice.
125116
"""
117+
from cirq.circuits.circuit import Circuit as Cirq_circuit
118+
from cirq.ops.linear_combinations import PauliSum as Cirq_PauliSum
119+
from cirq.sim.sparse_simulator import Simulator
120+
from cirq.work.observable_measurement import (
121+
RepetitionsStoppingCriteria,
122+
measure_observables,
123+
)
124+
126125
assert type(job.device) == GOOGLEDevice
127126

128127
if job.device.is_processor():
@@ -179,6 +178,15 @@ def run_local_processor(job: Job) -> Result:
179178
Returns:
180179
Result: The result after submission and execution of the job.
181180
"""
181+
from cirq.circuits.circuit import Circuit as Cirq_circuit
182+
from cirq_google.engine.simulated_local_engine import SimulatedLocalEngine
183+
from cirq_google.engine.simulated_local_processor import SimulatedLocalProcessor
184+
from cirq_google.engine.virtual_engine_factory import (
185+
create_device_from_processor_id,
186+
load_median_device_calibration,
187+
)
188+
from qsimcirq.qsim_simulator import QSimSimulator
189+
182190
assert type(job.device) == GOOGLEDevice
183191

184192
calibration = load_median_device_calibration(job.device.value)
@@ -251,6 +259,9 @@ def extract_result(
251259
ValueError: If the result type does not match the expected type for the
252260
job type.
253261
"""
262+
from cirq.sim.state_vector_simulator import StateVectorTrialResult
263+
from cirq.study.result import Result as cirq_result
264+
254265
if job is None:
255266
raise NotImplementedError("result from job None is not implemented")
256267
else:
@@ -326,6 +337,8 @@ def extract_result_STATE_VECTOR(
326337
Returns:
327338
Result: The formatted result.
328339
"""
340+
from cirq.value.probability import state_vector_to_probabilities
341+
329342
state_vector = result.final_state_vector
330343
state_vector = StateVector(
331344
state_vector, job.circuit.nb_qubits, state_vector_to_probabilities(state_vector)
@@ -349,6 +362,8 @@ def extract_result_OBSERVABLE(
349362
Returns:
350363
Result: The formatted result.
351364
"""
365+
from cirq.work.observable_measurement_data import ObservableMeasuredResult
366+
352367
mean = 0.0
353368
variance = 0.0
354369
if job.measure is None:

0 commit comments

Comments
 (0)