Skip to content

Commit 8fcf7ab

Browse files
authored
V4 - fix: Load defaults for ommitted config fields (#1605)
* fix: Partial QCS configs will fallback on defaults for omitted fields * add options fields to QVM api calls * correct param name * ignore call arg err * style * consolidate get_version_info_requests
1 parent a1d0ba4 commit 8fcf7ab

File tree

4 files changed

+31
-20
lines changed

4 files changed

+31
-20
lines changed

poetry.lock

+14-14
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ rpcq = "^3.10.0"
2727
pydantic = "^1.10.7"
2828
networkx = ">=2.5"
2929
importlib-metadata = { version = ">=3.7.3,<5", python = "<3.8" }
30-
qcs-sdk-python = "0.9.0-rc.0"
30+
qcs-sdk-python = "0.9.0"
3131
tenacity = "^8.2.2"
3232
types-python-dateutil = "^2.8.19"
3333
types-retry = "^0.9.9"

pyquil/api/_qvm.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import numpy as np
2020

2121
from qcs_sdk import QCSClient, qvm
22+
from qcs_sdk.qvm import QVMOptions
2223

2324
from pyquil._version import pyquil_version
2425
from pyquil.api import QAM, QuantumExecutable, QAMExecutionResult, MemoryMap
@@ -107,12 +108,13 @@ def __init__(
107108
else:
108109
raise TypeError("random_seed should be None or a non-negative int")
109110

111+
self.timeout = timeout
110112
self._client = client_configuration or QCSClient.load()
111113
self.connect()
112114

113115
def connect(self) -> None:
114116
try:
115-
version = qvm.api.get_version_info(client=self._client)
117+
version = self.get_version_info()
116118
check_qvm_version(version)
117119
except ConnectionError:
118120
raise QVMNotRunning(f"No QVM server running at {self._client.qvm_url}") from ConnectionError
@@ -144,6 +146,7 @@ def execute(
144146
self.gate_noise,
145147
self.random_seed,
146148
self._client,
149+
options=QVMOptions(timeout_seconds=self.timeout),
147150
)
148151

149152
memory = {name: np.asarray(data.inner()) for name, data in result.memory.items()}
@@ -163,7 +166,7 @@ def get_version_info(self) -> str:
163166
164167
:return: String with version information
165168
"""
166-
return qvm.api.get_version_info(self._client)
169+
return qvm.api.get_version_info(self._client, options=QVMOptions(timeout_seconds=self.timeout))
167170

168171

169172
def validate_noise_probabilities(noise_parameter: Optional[Tuple[float, float, float]]) -> None:

pyquil/api/_wavefunction_simulator.py

+11-3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import numpy as np
1919

2020
from qcs_sdk import QCSClient, qvm
21+
from qcs_sdk.qvm import QVMOptions
2122

2223
from pyquil.api import MemoryMap
2324
from pyquil.api._qvm import (
@@ -65,6 +66,7 @@ def __init__(
6566
else:
6667
raise TypeError("random_seed should be None or a non-negative int")
6768

69+
self.timeout = timeout
6870
self._client = client_configuration or QCSClient.load()
6971

7072
def wavefunction(self, quil_program: Program, memory_map: Optional[MemoryMap] = None) -> Wavefunction:
@@ -96,7 +98,9 @@ def wavefunction(self, quil_program: Program, memory_map: Optional[MemoryMap] =
9698
self.gate_noise,
9799
self.random_seed,
98100
)
99-
wavefunction = bytes(qvm.api.get_wavefunction(request, self._client))
101+
wavefunction = bytes(
102+
qvm.api.get_wavefunction(request, self._client, options=QVMOptions(timeout_seconds=self.timeout))
103+
)
100104
return Wavefunction.from_bit_packed_string(wavefunction)
101105

102106
def expectation(
@@ -141,7 +145,9 @@ def expectation(
141145
prep_prog = self.augment_program_with_memory_values(prep_prog, memory_map)
142146

143147
request = qvm.api.ExpectationRequest(prep_prog.out(), [prog.out() for prog in progs])
144-
expectations = qvm.api.measure_expectation(request, self._client)
148+
expectations = qvm.api.measure_expectation(
149+
request, self._client, options=QVMOptions(timeout_seconds=self.timeout)
150+
)
145151
bare_results = np.asarray(expectations)
146152
results = coeffs * bare_results
147153
if is_pauli_sum:
@@ -196,7 +202,9 @@ def run_and_measure(
196202
trials,
197203
qubits,
198204
)
199-
measured_qubits = qvm.api.run_and_measure(request)
205+
measured_qubits = qvm.api.run_and_measure(
206+
request, options=QVMOptions(timeout_seconds=self.timeout) # type: ignore[call-arg]
207+
)
200208
return np.asarray(measured_qubits)
201209

202210
@staticmethod

0 commit comments

Comments
 (0)