iqm-client 29.2.0__tar.gz → 29.3.0__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.
Files changed (107) hide show
  1. {iqm_client-29.2.0 → iqm_client-29.3.0}/CHANGELOG.rst +8 -0
  2. {iqm_client-29.2.0 → iqm_client-29.3.0}/PKG-INFO +1 -1
  3. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/examples/demo_common.py +5 -5
  4. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/examples/demo_iqm_execution.py +1 -1
  5. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/serialize.py +1 -1
  6. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/api.py +1 -1
  7. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/cli/auth.py +7 -3
  8. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/models.py +2 -2
  9. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/iqm_circuit_validation.py +1 -0
  10. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/iqm_naive_move_pass.py +1 -0
  11. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm_client.egg-info/PKG-INFO +1 -1
  12. iqm_client-29.3.0/version.txt +1 -0
  13. iqm_client-29.2.0/version.txt +0 -1
  14. {iqm_client-29.2.0 → iqm_client-29.3.0}/AUTHORS.rst +0 -0
  15. {iqm_client-29.2.0 → iqm_client-29.3.0}/CHANGELOG_cirq-iqm.rst +0 -0
  16. {iqm_client-29.2.0 → iqm_client-29.3.0}/CHANGELOG_cortex-cli.rst +0 -0
  17. {iqm_client-29.2.0 → iqm_client-29.3.0}/CHANGELOG_qiskit-iqm.rst +0 -0
  18. {iqm_client-29.2.0 → iqm_client-29.3.0}/INTEGRATION_GUIDE.rst +0 -0
  19. {iqm_client-29.2.0 → iqm_client-29.3.0}/LICENSE.txt +0 -0
  20. {iqm_client-29.2.0 → iqm_client-29.3.0}/MANIFEST.in +0 -0
  21. {iqm_client-29.2.0 → iqm_client-29.3.0}/README.rst +0 -0
  22. {iqm_client-29.2.0 → iqm_client-29.3.0}/docbuild +0 -0
  23. {iqm_client-29.2.0 → iqm_client-29.3.0}/docs/API.rst +0 -0
  24. {iqm_client-29.2.0 → iqm_client-29.3.0}/docs/_static/images/favicon.ico +0 -0
  25. {iqm_client-29.2.0 → iqm_client-29.3.0}/docs/_static/images/logo.png +0 -0
  26. {iqm_client-29.2.0 → iqm_client-29.3.0}/docs/_templates/autosummary-class-template.rst +0 -0
  27. {iqm_client-29.2.0 → iqm_client-29.3.0}/docs/_templates/autosummary-module-template.rst +0 -0
  28. {iqm_client-29.2.0 → iqm_client-29.3.0}/docs/authors.rst +0 -0
  29. {iqm_client-29.2.0 → iqm_client-29.3.0}/docs/changelog.rst +0 -0
  30. {iqm_client-29.2.0 → iqm_client-29.3.0}/docs/conf.py +0 -0
  31. {iqm_client-29.2.0 → iqm_client-29.3.0}/docs/index.rst +0 -0
  32. {iqm_client-29.2.0 → iqm_client-29.3.0}/docs/integration_guide.rst +0 -0
  33. {iqm_client-29.2.0 → iqm_client-29.3.0}/docs/license.rst +0 -0
  34. {iqm_client-29.2.0 → iqm_client-29.3.0}/docs/readme.rst +0 -0
  35. {iqm_client-29.2.0 → iqm_client-29.3.0}/docs/user_guide_cirq.rst +0 -0
  36. {iqm_client-29.2.0 → iqm_client-29.3.0}/docs/user_guide_cli.rst +0 -0
  37. {iqm_client-29.2.0 → iqm_client-29.3.0}/docs/user_guide_qiskit.rst +0 -0
  38. {iqm_client-29.2.0 → iqm_client-29.3.0}/pyproject.toml +0 -0
  39. {iqm_client-29.2.0 → iqm_client-29.3.0}/requirements/base.in +0 -0
  40. {iqm_client-29.2.0 → iqm_client-29.3.0}/requirements/base.txt +0 -0
  41. {iqm_client-29.2.0 → iqm_client-29.3.0}/requirements/cirq.in +0 -0
  42. {iqm_client-29.2.0 → iqm_client-29.3.0}/requirements/cirq.txt +0 -0
  43. {iqm_client-29.2.0 → iqm_client-29.3.0}/requirements/cli.in +0 -0
  44. {iqm_client-29.2.0 → iqm_client-29.3.0}/requirements/cli.txt +0 -0
  45. {iqm_client-29.2.0 → iqm_client-29.3.0}/requirements/qiskit.in +0 -0
  46. {iqm_client-29.2.0 → iqm_client-29.3.0}/requirements/qiskit.txt +0 -0
  47. {iqm_client-29.2.0 → iqm_client-29.3.0}/setup.cfg +0 -0
  48. {iqm_client-29.2.0 → iqm_client-29.3.0}/setup.py +0 -0
  49. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/__init__.py +0 -0
  50. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/devices/__init__.py +0 -0
  51. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/devices/adonis.py +0 -0
  52. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/devices/aphrodite.py +0 -0
  53. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/devices/apollo.py +0 -0
  54. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/devices/iqm_device.py +0 -0
  55. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/devices/iqm_device_metadata.py +0 -0
  56. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/examples/demo_adonis.py +0 -0
  57. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/examples/demo_apollo.py +0 -0
  58. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/examples/usage.ipynb +0 -0
  59. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/extended_qasm_parser.py +0 -0
  60. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/iqm_gates.py +0 -0
  61. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/iqm_sampler.py +0 -0
  62. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/optimizers.py +0 -0
  63. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/py.typed +0 -0
  64. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/cirq_iqm/transpiler.py +0 -0
  65. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/__init__.py +0 -0
  66. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/authentication.py +0 -0
  67. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/cli/__init__.py +0 -0
  68. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/cli/cli.py +0 -0
  69. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/cli/models.py +0 -0
  70. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/cli/py.typed +0 -0
  71. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/cli/token_manager.py +0 -0
  72. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/errors.py +0 -0
  73. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/iqm_client.py +0 -0
  74. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/py.typed +0 -0
  75. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/transpile.py +0 -0
  76. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/util.py +0 -0
  77. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/iqm_client/validation.py +0 -0
  78. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/__init__.py +0 -0
  79. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/examples/__init__.py +0 -0
  80. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/examples/bell_measure.py +0 -0
  81. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/examples/resonance_example.py +0 -0
  82. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/examples/transpile_example.py +0 -0
  83. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/fake_backends/__init__.py +0 -0
  84. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/fake_backends/fake_adonis.py +0 -0
  85. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/fake_backends/fake_aphrodite.py +0 -0
  86. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/fake_backends/fake_apollo.py +0 -0
  87. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/fake_backends/fake_deneb.py +0 -0
  88. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/fake_backends/fake_garnet.py +0 -0
  89. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/fake_backends/iqm_fake_backend.py +0 -0
  90. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/iqm_backend.py +0 -0
  91. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/iqm_circuit.py +0 -0
  92. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/iqm_job.py +0 -0
  93. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/iqm_move_layout.py +0 -0
  94. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/iqm_provider.py +0 -0
  95. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/iqm_transpilation.py +0 -0
  96. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/move_gate.py +0 -0
  97. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/py.typed +0 -0
  98. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/qiskit_to_iqm.py +0 -0
  99. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm/qiskit_iqm/transpiler_plugins.py +0 -0
  100. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm_client.egg-info/SOURCES.txt +0 -0
  101. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm_client.egg-info/dependency_links.txt +0 -0
  102. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm_client.egg-info/entry_points.txt +0 -0
  103. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm_client.egg-info/requires.txt +0 -0
  104. {iqm_client-29.2.0 → iqm_client-29.3.0}/src/iqm_client.egg-info/top_level.txt +0 -0
  105. {iqm_client-29.2.0 → iqm_client-29.3.0}/test +0 -0
  106. {iqm_client-29.2.0 → iqm_client-29.3.0}/tests/__init__.py +0 -0
  107. {iqm_client-29.2.0 → iqm_client-29.3.0}/tests/conftest.py +0 -0
@@ -2,6 +2,14 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ Version 29.3.0 (2025-07-02)
6
+ ===========================
7
+
8
+ Bug fixes
9
+ ---------
10
+
11
+ - Fix type errors raised by mypy.
12
+
5
13
  Version 29.2.0 (2025-06-30)
6
14
  ===========================
7
15
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-client
3
- Version: 29.2.0
3
+ Version: 29.3.0
4
4
  Summary: Client library for accessing an IQM quantum computer
5
5
  Author-email: IQM Finland Oy <developers@meetiqm.com>
6
6
  License: Apache License
@@ -52,10 +52,10 @@ def get_qubit_order(circuit: cirq.Circuit) -> tuple[list[cirq.Qid], int]:
52
52
  qubit order, number of measured qubits
53
53
 
54
54
  """
55
- measurements = get_measurements(circuit)
55
+ measurements: list[tuple[int, cirq.GateOperation]] = get_measurements(circuit)
56
56
 
57
57
  # mapping from (key, index) to measured qubit, in lexical order
58
- m_qubits = {(op.gate.key, index): qubit for _, op in measurements for index, qubit in enumerate(op.qubits)}
58
+ m_qubits = {(op.gate.key, index): qubit for _, op in measurements for index, qubit in enumerate(op.qubits)} # type:ignore[attr-defined]
59
59
  m_qubits = dict(sorted(m_qubits.items()))
60
60
 
61
61
  qubit_order = list(m_qubits.values())
@@ -81,7 +81,7 @@ def simulate_measurement_probabilities(
81
81
  map from result to its probability, measurement keys
82
82
 
83
83
  """
84
- measurements = get_measurements(circuit)
84
+ measurements: list[tuple[int, cirq.GateOperation]] = get_measurements(circuit)
85
85
  if not measurements:
86
86
  raise ValueError("Circuit has no measurements.")
87
87
 
@@ -95,12 +95,12 @@ def simulate_measurement_probabilities(
95
95
  state = result.state_vector()
96
96
 
97
97
  # trace out non-measured qubits, compute the probabilities of the various measurement outcomes
98
- mixture = cirq.linalg.partial_trace_of_state_vector_as_mixture(state, keep_indices=range(n_measured_qubits))
98
+ mixture = cirq.linalg.partial_trace_of_state_vector_as_mixture(state, keep_indices=list(range(n_measured_qubits)))
99
99
  _temp = [p * np.abs(ket) ** 2 for p, ket in mixture]
100
100
  probs = np.sum(_temp, axis=0)
101
101
 
102
102
  # list the all the measurement outcomes in the matching order
103
- measurement_arities = {op.gate.key: len(op.qubits) for _, op in measurements}
103
+ measurement_arities = {op.gate.key: len(op.qubits) for _, op in measurements} # type:ignore[attr-defined]
104
104
  measurement_arities = dict(sorted(measurement_arities.items()))
105
105
 
106
106
  shape = np.array(2) ** list(measurement_arities.values())
@@ -60,7 +60,7 @@ def demo_run_circuit() -> None:
60
60
 
61
61
  # Sampler results can be accessed several ways
62
62
  # For instance, to see the histogram of results
63
- print(results.histogram(key="m", fold_func=fold_func))
63
+ print(results.histogram(key="m", fold_func=fold_func)) # type:ignore[arg-type]
64
64
 
65
65
  # Or the data itself
66
66
  print(results.data)
@@ -195,7 +195,7 @@ def serialize_circuit(circuit: Circuit) -> iqm_client.Circuit:
195
195
  inst.args["feedback_qubit"] = measurement.qubits[0]
196
196
  measurement.args["feedback_key"] = feedback_key
197
197
 
198
- return iqm_client.Circuit(name="Serialized from Cirq", instructions=instructions)
198
+ return iqm_client.Circuit(name="Serialized from Cirq", instructions=instructions, metadata=None)
199
199
 
200
200
 
201
201
  def deserialize_circuit(circuit: iqm_client.Circuit) -> Circuit:
@@ -86,5 +86,5 @@ class APIConfig:
86
86
  ValueError: If the endpoint is not supported.
87
87
 
88
88
  """
89
- url = self.urls.get(endpoint)
89
+ url = self.urls.get(endpoint, "")
90
90
  return join(self.station_control_url, url % args)
@@ -76,7 +76,9 @@ def login_request(url: str, realm: str, client_id: str, username: str, password:
76
76
  Tokens dictionary
77
77
 
78
78
  """
79
- data = AuthRequest(client_id=client_id, grant_type=GrantType.PASSWORD, username=username, password=password)
79
+ data = AuthRequest(
80
+ client_id=client_id, grant_type=GrantType.PASSWORD, username=username, password=password, refresh_token=None
81
+ )
80
82
 
81
83
  request_url = slash_join(url, f"realms/{realm}/protocol/openid-connect/token")
82
84
  result = requests.post(request_url, data=data.model_dump(exclude_none=True), timeout=AUTH_REQUESTS_TIMEOUT)
@@ -107,7 +109,9 @@ def refresh_request(url: str, realm: str, client_id: str, refresh_token: str) ->
107
109
  raise ClientAuthenticationError("Refresh token has expired")
108
110
 
109
111
  # Update tokens using existing refresh_token
110
- data = AuthRequest(client_id=client_id, grant_type=GrantType.REFRESH, refresh_token=refresh_token)
112
+ data = AuthRequest(
113
+ client_id=client_id, grant_type=GrantType.REFRESH, username=None, password=None, refresh_token=refresh_token
114
+ )
111
115
 
112
116
  request_url = slash_join(url, f"realms/{realm}/protocol/openid-connect/token")
113
117
  result = requests.post(request_url, data=data.model_dump(exclude_none=True), timeout=AUTH_REQUESTS_TIMEOUT)
@@ -130,7 +134,7 @@ def logout_request(url: str, realm: str, client_id: str, refresh_token: str) ->
130
134
  True if logout was successful
131
135
 
132
136
  """
133
- data = AuthRequest(client_id=client_id, refresh_token=refresh_token)
137
+ data = AuthRequest(client_id=client_id, grant_type=None, username=None, password=None, refresh_token=refresh_token)
134
138
  request_url = slash_join(url, f"realms/{realm}/protocol/openid-connect/logout")
135
139
  result = requests.post(request_url, data=data.model_dump(exclude_none=True), timeout=AUTH_REQUESTS_TIMEOUT)
136
140
 
@@ -412,7 +412,7 @@ class Circuit(BaseModel):
412
412
 
413
413
  name: str = Field(..., examples=["test circuit"])
414
414
  """name of the circuit"""
415
- instructions: tuple[Instruction, ...] = Field(...)
415
+ instructions: list[Instruction] | tuple[Instruction, ...] = Field(...)
416
416
  """instructions comprising the circuit"""
417
417
  metadata: dict[str, Any] | None = Field(None)
418
418
  """arbitrary metadata associated with the circuit"""
@@ -1116,7 +1116,7 @@ class RunResult(BaseModel):
1116
1116
  status = Status(input_copy.pop("status"))
1117
1117
  except ValueError:
1118
1118
  status = Status.UNKNOWN
1119
- return RunResult(status=status, **input_copy)
1119
+ return RunResult(status=status, **input_copy) # type:ignore[arg-type]
1120
1120
 
1121
1121
 
1122
1122
  class RunStatus(BaseModel):
@@ -33,6 +33,7 @@ def validate_circuit(
33
33
  new_circuit = IQMClientCircuit(
34
34
  name="Validation circuit",
35
35
  instructions=tuple(serialize_instructions(circuit=circuit, qubit_index_to_name=qubit_mapping)),
36
+ metadata=None,
36
37
  )
37
38
  if validate_moves is None:
38
39
  validate_moves = MoveGateValidationMode.STRICT
@@ -99,6 +99,7 @@ class IQMNaiveResonatorMoving(TransformationPass):
99
99
  iqm_circuit = IQMClientCircuit(
100
100
  name="Transpiling Circuit",
101
101
  instructions=tuple(serialize_instructions(circuit, self.idx_to_component)),
102
+ metadata=None,
102
103
  )
103
104
  try:
104
105
  routed_iqm_circuit = transpile_insert_moves(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-client
3
- Version: 29.2.0
3
+ Version: 29.3.0
4
4
  Summary: Client library for accessing an IQM quantum computer
5
5
  Author-email: IQM Finland Oy <developers@meetiqm.com>
6
6
  License: Apache License
@@ -0,0 +1 @@
1
+ 29.3.0
@@ -1 +0,0 @@
1
- 29.2.0
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes