iqm-client 30.1.0__py3-none-any.whl → 30.2.0__py3-none-any.whl

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.
@@ -364,5 +364,5 @@ class IQMDevice(devices.Device):
364
364
  if len(qubits_updated) != 0:
365
365
  raise ValueError(f"Circuit ends with a qubit state in the resonator {res!r}.")
366
366
 
367
- def __eq__(self, other):
367
+ def __eq__(self, other): # noqa: ANN001
368
368
  return self.__class__ == other.__class__ and self._metadata == other._metadata
@@ -166,5 +166,5 @@ class IQMDeviceMetadata(devices.DeviceMetadata):
166
166
  """Returns the ``cirq.Gateset`` of supported gates on this device."""
167
167
  return self._gateset
168
168
 
169
- def _value_equality_values_(self):
169
+ def _value_equality_values_(self): # noqa: ANN202
170
170
  return *super()._value_equality_values_(), self._gateset
@@ -85,7 +85,7 @@ class IQMSampler(cirq.work.Sampler):
85
85
  """Returns the device used by the sampler."""
86
86
  return self._device
87
87
 
88
- def close_client(self):
88
+ def close_client(self): # noqa: ANN201
89
89
  """Close IQMClient's session with the user authentication server. Discard the client."""
90
90
  if not self._client:
91
91
  return
@@ -92,7 +92,7 @@ class MergeOneParameterGroupGates(circuits.PointOptimizer):
92
92
  GATE_MERGING_TOLERANCE = 1e-10
93
93
 
94
94
  @classmethod
95
- def _normalize_par(cls, par):
95
+ def _normalize_par(cls, par): # noqa: ANN001
96
96
  """Normalizes the given parameter value to (-period/2, period/2]."""
97
97
  shift = cls.PERIOD / 2
98
98
  return operator.mod(par - shift, -cls.PERIOD) + shift
iqm/iqm_client/cli/cli.py CHANGED
@@ -58,7 +58,7 @@ class ClickLoggingHandler(logging.Handler):
58
58
  super().__init__(level=logging.NOTSET)
59
59
  self.formatter = logging.Formatter("%(message)s")
60
60
 
61
- def emit(self, record):
61
+ def emit(self, record): # noqa: ANN001, ANN201
62
62
  click.echo(self.format(record))
63
63
 
64
64
 
@@ -463,7 +463,7 @@ def auth() -> None:
463
463
  help="Location of the configuration file to be used.",
464
464
  )
465
465
  @click.option("-v", "--verbose", is_flag=True, help="Print extra information.")
466
- def status(config_file, verbose) -> None:
466
+ def status(config_file, verbose) -> None: # noqa: ANN001
467
467
  """Check status of authentication."""
468
468
  _set_log_level_by_verbosity(verbose)
469
469
 
@@ -503,7 +503,7 @@ def status(config_file, verbose) -> None:
503
503
  click.echo(f"Token manager: {click.style('NOT RUNNING', fg='red')}")
504
504
 
505
505
 
506
- def _validate_iqm_client_cli_auth_login(no_daemon, no_refresh, config_file) -> ConfigFile:
506
+ def _validate_iqm_client_cli_auth_login(no_daemon, no_refresh, config_file) -> ConfigFile: # noqa: ANN001
507
507
  """Checks if provided combination of auth login options is valid:
508
508
  - no_daemon and no_refresh are mutually exclusive
509
509
  - config file should pass validation
iqm/iqm_client/models.py CHANGED
@@ -288,7 +288,7 @@ class Instruction(BaseModel):
288
288
 
289
289
  @field_validator("name")
290
290
  @classmethod
291
- def name_validator(cls, value):
291
+ def name_validator(cls, value): # noqa: ANN001
292
292
  """Check if the name of instruction is set to one of the supported quantum operations."""
293
293
  name = value
294
294
  if name not in _SUPPORTED_OPERATIONS:
@@ -298,7 +298,7 @@ class Instruction(BaseModel):
298
298
 
299
299
  @field_validator("implementation")
300
300
  @classmethod
301
- def implementation_validator(cls, value):
301
+ def implementation_validator(cls, value): # noqa: ANN001
302
302
  """Check if the implementation of the instruction is set to a non-empty string."""
303
303
  implementation = value
304
304
  if isinstance(implementation, str):
@@ -308,7 +308,7 @@ class Instruction(BaseModel):
308
308
 
309
309
  @field_validator("qubits")
310
310
  @classmethod
311
- def qubits_validator(cls, value, info: ValidationInfo):
311
+ def qubits_validator(cls, value, info: ValidationInfo): # noqa: ANN001
312
312
  """Check if the instruction has the correct number of qubits for its operation."""
313
313
  qubits = value
314
314
  name = info.data.get("name")
@@ -321,7 +321,7 @@ class Instruction(BaseModel):
321
321
 
322
322
  @field_validator("args")
323
323
  @classmethod
324
- def args_validator(cls, value, info: ValidationInfo):
324
+ def args_validator(cls, value, info: ValidationInfo): # noqa: ANN001
325
325
  """Check argument names and types for a given instruction"""
326
326
  args = value
327
327
  name = info.data.get("name")
@@ -426,7 +426,7 @@ class Circuit(BaseModel):
426
426
 
427
427
  @field_validator("name")
428
428
  @classmethod
429
- def name_validator(cls, value):
429
+ def name_validator(cls, value): # noqa: ANN001
430
430
  """Check if the circuit name is a non-empty string"""
431
431
  name = value
432
432
  if len(name) == 0:
@@ -435,7 +435,7 @@ class Circuit(BaseModel):
435
435
 
436
436
  @field_validator("instructions")
437
437
  @classmethod
438
- def instructions_validator(cls, value):
438
+ def instructions_validator(cls, value): # noqa: ANN001
439
439
  """Check the container of instructions and each instruction within"""
440
440
  instructions = value
441
441
 
iqm/iqm_client/util.py CHANGED
@@ -22,7 +22,7 @@ import numpy as np
22
22
  class IQMJSONEncoder(JSONEncoder):
23
23
  """JSONEncoder that that adds support for some non-JSON datatypes"""
24
24
 
25
- def default(self, o: Any):
25
+ def default(self, o: Any): # noqa: ANN201
26
26
  if isinstance(o, np.ndarray):
27
27
  return o.tolist()
28
28
  return JSONEncoder.default(self, o)
@@ -22,7 +22,7 @@ from qiskit import QuantumCircuit
22
22
  class IQMCircuit(QuantumCircuit):
23
23
  """Extends the QuantumCircuit class, adding a shortcut for applying the MOVE gate."""
24
24
 
25
- def move(self, qubit: int, resonator: int):
25
+ def move(self, qubit: int, resonator: int): # noqa: ANN201
26
26
  """Applies the MOVE gate to the circuit.
27
27
 
28
28
  Note: at this point the circuit layout is only guaranteed to work if the order
@@ -21,7 +21,7 @@ from iqm.qiskit_iqm.qiskit_to_iqm import serialize_instructions
21
21
  from qiskit import QuantumCircuit
22
22
 
23
23
 
24
- def validate_circuit(
24
+ def validate_circuit( # noqa: ANN201
25
25
  circuit: QuantumCircuit,
26
26
  backend: IQMBackendBase,
27
27
  validate_moves: MoveGateValidationMode | None = None,
iqm/qiskit_iqm/iqm_job.py CHANGED
@@ -140,7 +140,7 @@ class IQMJob(JobV1):
140
140
  for s in range(shots)
141
141
  ]
142
142
 
143
- def submit(self):
143
+ def submit(self): # noqa: ANN201
144
144
  raise NotImplementedError(
145
145
  "You should never have to submit jobs by calling this method. When running circuits through "
146
146
  "RemoteIQMBackend, the submission will happen under the hood. The job instance that you get is only for "
@@ -101,7 +101,7 @@ class IQMMoveLayout(TrivialLayout):
101
101
  return False
102
102
  return True
103
103
 
104
- def run(self, dag: DAGCircuit):
104
+ def run(self, dag: DAGCircuit): # noqa: ANN201
105
105
  """Creates a valid layout for the given quantum circuit.
106
106
 
107
107
  Args:
@@ -194,7 +194,7 @@ class IQMMoveLayout(TrivialLayout):
194
194
  resonators: set[int] = set()
195
195
  qubit_to_idx: dict[Qubit, int] = {qubit: log_idx for log_idx, qubit in enumerate(dag.qubits)}
196
196
 
197
- def _require_qubit_type(qubit: Qubit, required_type: str):
197
+ def _require_qubit_type(qubit: Qubit, required_type: str): # noqa: ANN202
198
198
  """Add a requirement for the given qubit."""
199
199
  log_idx = qubit_to_idx[qubit]
200
200
  if log_idx in resonators:
@@ -204,7 +204,7 @@ class IQMMoveLayout(TrivialLayout):
204
204
  )
205
205
  reqs.setdefault(log_idx, set()).add(required_type)
206
206
 
207
- def _require_resonator(qubit: Qubit):
207
+ def _require_resonator(qubit: Qubit): # noqa: ANN202
208
208
  """Add a requirement for the given resonator."""
209
209
  log_idx = qubit_to_idx[qubit]
210
210
  if log_idx in reqs:
@@ -93,7 +93,7 @@ class IQMTarget(Target):
93
93
  self.iqm_metrics = metrics
94
94
  self._add_instructions_from_DQA()
95
95
 
96
- def _add_instructions_from_DQA(self):
96
+ def _add_instructions_from_DQA(self): # noqa: ANN202
97
97
  """Initializes the Target with instructions and properties that represent the
98
98
  dynamic quantum architecture :attr:`iqm_dqa`.
99
99
 
@@ -129,7 +129,7 @@ class IQMOptimizeSingleQubitGates(TransformationPass):
129
129
 
130
130
  return dag
131
131
 
132
- def _validate_ops(self, dag: DAGCircuit):
132
+ def _validate_ops(self, dag: DAGCircuit): # noqa: ANN202
133
133
  valid_ops = self._basis + ["measure", "reset", "delay", "barrier"]
134
134
  for node in dag.op_nodes():
135
135
  if node.name not in valid_ops:
@@ -184,7 +184,7 @@ class IQMReplaceGateWithUnitaryPass(TransformationPass):
184
184
  self.gate = gate
185
185
  self.unitary = unitary
186
186
 
187
- def run(self, dag):
187
+ def run(self, dag): # noqa: ANN001, ANN201
188
188
  for node in dag.op_nodes():
189
189
  if node.name == self.gate:
190
190
  dag.substitute_node(node, UnitaryGate(self.unitary))
@@ -53,12 +53,12 @@ class MoveGate(Gate):
53
53
  order ``[qubit, resonator]``, regardless of which component is currently holding the state.
54
54
  """
55
55
 
56
- def __init__(self, label=None):
56
+ def __init__(self, label=None): # noqa: ANN001
57
57
  """Initializes the move gate"""
58
58
  super().__init__("move", 2, [], label=label)
59
59
  self.unitary = qi.Operator(MOVE_GATE_UNITARY)
60
60
 
61
- def _define(self):
61
+ def _define(self): # noqa: ANN202
62
62
  """This function is purposefully not defined so that that the Qiskit transpiler cannot accidentally
63
63
  decompose the MOVE gate into a sequence of other gates, instead it will throw an error.
64
64
  """
@@ -187,8 +187,8 @@ class OnlyRZOptimizationPlugin(IQMSchedulingPlugin):
187
187
 
188
188
  def __init__(
189
189
  self,
190
- drop_final_rz=True,
191
- ignore_barriers=False,
190
+ drop_final_rz=True, # noqa: ANN001
191
+ ignore_barriers=False, # noqa: ANN001
192
192
  ):
193
193
  super().__init__(False, True, drop_final_rz, ignore_barriers, None)
194
194
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-client
3
- Version: 30.1.0
3
+ Version: 30.2.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
@@ -1,8 +1,8 @@
1
1
  iqm/cirq_iqm/__init__.py,sha256=1zTyxtF39OD11D00ZujgqciJ_9GBDYe-PVBLqZp4NaA,831
2
2
  iqm/cirq_iqm/extended_qasm_parser.py,sha256=csDzfHLhy_9maGbappLbnFo2NHQjQeyd-1F8P380Mbk,1917
3
3
  iqm/cirq_iqm/iqm_gates.py,sha256=xnZex5ZfNOk_WSsFjVCRybc14FlGNbmwOs3mIfOE_F8,2488
4
- iqm/cirq_iqm/iqm_sampler.py,sha256=MLHB5FiBXsTCnxjlNJV8LhrIuZ2RS6946zEhI6OBmh4,11456
5
- iqm/cirq_iqm/optimizers.py,sha256=vJ7BzTLlfULJq-zt3tHQJGv0LzQAdMVlzQxpuw8JdH0,8550
4
+ iqm/cirq_iqm/iqm_sampler.py,sha256=uDlxd1cU7yKVYsj-wxfsUDkK9lDdHQzzN4mKonRFow8,11472
5
+ iqm/cirq_iqm/optimizers.py,sha256=Jcb6W7-M9wYa5mZztq33jQpWuIzD5ulE16ZperIc-wU,8566
6
6
  iqm/cirq_iqm/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  iqm/cirq_iqm/serialize.py,sha256=tRkNrzef24va8UMq_Z-TKCsmP7xXtHm3R5qB2VyiIt4,8141
8
8
  iqm/cirq_iqm/transpiler.py,sha256=c3-KE4c-4WenbdOcBMnCS30Ynm4Wt35i-bl4iG8pKAs,2112
@@ -10,8 +10,8 @@ iqm/cirq_iqm/devices/__init__.py,sha256=WxbvNAqmeoV4mNy9M9IpjwmyNDpAP7ec1XFdjN7w
10
10
  iqm/cirq_iqm/devices/adonis.py,sha256=ZWaA4_OfO6fBcrLYHONTjtW8aSlVq2nwy9IiW529gQw,1390
11
11
  iqm/cirq_iqm/devices/aphrodite.py,sha256=0K8zRo6gVVadQo7LJfs6laUVLzS3fNkrXMrPlwieyJ8,4018
12
12
  iqm/cirq_iqm/devices/apollo.py,sha256=_k7L45zyHZnpdZWMMXO6zci3XY3UEnBj2RmvxM6D7Mg,2238
13
- iqm/cirq_iqm/devices/iqm_device.py,sha256=PtYWBVfkXvtRH2kRpzwpTeGfgd8MgptXGSC3MAjlBGo,15430
14
- iqm/cirq_iqm/devices/iqm_device_metadata.py,sha256=-6qnPa8Pp68ruYMzfHO_dlSDvakO25LxqHn68bHdQT0,7143
13
+ iqm/cirq_iqm/devices/iqm_device.py,sha256=2a9IzAE3FdXsTRUAyOT7N8OBl2x9HOiO045MdjZ06gY,15446
14
+ iqm/cirq_iqm/devices/iqm_device_metadata.py,sha256=RzsrLwyu3d7ILtqnqmbHe_SgCRcfhi1ghQ09Wv4lg_I,7159
15
15
  iqm/cirq_iqm/examples/demo_adonis.py,sha256=rPd8VYqccYijG6t92hfvKsk8RAaMGHOmm4JelYjt3rw,1728
16
16
  iqm/cirq_iqm/examples/demo_apollo.py,sha256=vnDwcEXqEyew0cf4SDDQ2budP-giizSNJU3dgOw15H0,1751
17
17
  iqm/cirq_iqm/examples/demo_common.py,sha256=l47o574xzIo8Ri5j-RGjY2NRNJN4IU6d6l0dcwDWRtM,8731
@@ -22,30 +22,30 @@ iqm/iqm_client/api.py,sha256=_c6OVuv2dyzBF7J2XlK_qxisTSPyOiI4gYokZPsuaJY,3083
22
22
  iqm/iqm_client/authentication.py,sha256=kHFqPI6w3OAk9k5ioPxi-FrD2EP-vjn8Z_wZYccJVyE,12259
23
23
  iqm/iqm_client/errors.py,sha256=ty2P-sg80zlAoL3_kC3PlprgDUv4PI-KFhmmxaaapS0,1429
24
24
  iqm/iqm_client/iqm_client.py,sha256=oEeosKvXd_lVreB0r7TwHnYs6AAOjJs1sUDNk-AtzAk,41793
25
- iqm/iqm_client/models.py,sha256=Sdx_J7wBCM7E_arusU3eC6dQfqu5dpADywr-9JmFvsY,51597
25
+ iqm/iqm_client/models.py,sha256=DldEBjU3oHG4_1m5IPP_veZP9ZFOnVvmpsPipsSyt78,51693
26
26
  iqm/iqm_client/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  iqm/iqm_client/transpile.py,sha256=eEv9eY5QG94Lke7Xp6BkQapl1rvlmlVQ_IkQFopPNQ8,36981
28
- iqm/iqm_client/util.py,sha256=hGhl-r9afN3kNOjV9FoheSAPcQiKu7DdwX0FTFXxFl4,1489
28
+ iqm/iqm_client/util.py,sha256=obzh1g6PNEXOj7k3gUkiylNUhyqutbWlxlEpfyyU_fk,1505
29
29
  iqm/iqm_client/validation.py,sha256=IKXBxnhLLnEuUCU2J0q6VEYn9k-O9z_MI4ys7mpFZdE,11912
30
30
  iqm/iqm_client/cli/__init__.py,sha256=zzLDDz5rc3lJke3OKU8zxR5zQyQoM9oI2bLJ2YKk_zQ,692
31
31
  iqm/iqm_client/cli/auth.py,sha256=kESEK9-vpEhrjba3Lb6Wqx24yGfbjxUASeCArnVRYrw,6364
32
- iqm/iqm_client/cli/cli.py,sha256=YhTgOGrvNXPwCdCKHcwLHeE_6C3n91MxFhvgQYT78C4,28633
32
+ iqm/iqm_client/cli/cli.py,sha256=vdhRJPKbqKRL0D_Z0uc3V73jQKKftAKE5Hx44oOCBwA,28689
33
33
  iqm/iqm_client/cli/models.py,sha256=Hu-t6c_07Cth3AuQBo0CDTcWVQg1xbJCpy_94V0o64U,1199
34
34
  iqm/iqm_client/cli/token_manager.py,sha256=125uRj8kBzKlWAhQWNf-8n-aDG6fQridVd95qCktzD4,6867
35
35
  iqm/qiskit_iqm/__init__.py,sha256=Mv9V_r8ZcmGC8Ke5S8-7yLOx02vjZ1qiVx8mtbOpwnY,1420
36
36
  iqm/qiskit_iqm/iqm_backend.py,sha256=HddizT6yHHq-MOG_U48n6ftE9AqmzaqbXYayEC1ljso,5548
37
- iqm/qiskit_iqm/iqm_circuit.py,sha256=fFQW8SRlgZjqZUOLfyuJhhXEDp5I1jopFWa1k4rb7ac,1384
38
- iqm/qiskit_iqm/iqm_circuit_validation.py,sha256=vE5CNyJOQ7OMRpQV-xsO1uf_NNFE8v6-TSzboFSrGYM,1721
39
- iqm/qiskit_iqm/iqm_job.py,sha256=Q26hk4JuZP48Xw3qVk4b44LrHbgNQp-mq_itF9umkqg,11666
40
- iqm/qiskit_iqm/iqm_move_layout.py,sha256=vIsuO-RUJF0ZxB7nPhfOJ2vaUt6mZCLZfQGc6PEBwnc,10486
37
+ iqm/qiskit_iqm/iqm_circuit.py,sha256=jaPo3zc5FC0vAIumh5d56fr44fDaJXXwcquBzQEy1Yg,1400
38
+ iqm/qiskit_iqm/iqm_circuit_validation.py,sha256=9pneZKs-KjBDGeDI6RHj6lB-ACqugbnYr1BqkJwLcXg,1737
39
+ iqm/qiskit_iqm/iqm_job.py,sha256=A8IvhsU_DTGMG2itBYXRMyQcOZSQ-48IE5ltkzbuc6k,11682
40
+ iqm/qiskit_iqm/iqm_move_layout.py,sha256=ECf1BcRmXKeClc7AL0lHedvJbqtwV5rEHcOOFR8shKU,10534
41
41
  iqm/qiskit_iqm/iqm_naive_move_pass.py,sha256=jhTfvhrNDKt6NhhJg_3Y-5x6E1HRNzC_n4A27ZQTuvQ,12962
42
42
  iqm/qiskit_iqm/iqm_provider.py,sha256=56WzHzfa3FeOdMB7RRARgSEc6KRU0I7ozX1iCiTyMFw,18214
43
- iqm/qiskit_iqm/iqm_target.py,sha256=fj18g2-kvHztCZxcc3tUeoc4XZvhy_EAkn-kD59D8vw,15816
44
- iqm/qiskit_iqm/iqm_transpilation.py,sha256=2PyDAOukJpvSIVXmuYB8EWhmzlJHBUpzFPbW5VhfApg,9113
45
- iqm/qiskit_iqm/move_gate.py,sha256=QU9RKKVvbGq33qcIi9AKLcvQVQMibkgW4ibjzk-oVy4,2808
43
+ iqm/qiskit_iqm/iqm_target.py,sha256=UyULiGMn6UJsyILBQiriso9KbhlmzP9TZItS2URaXWg,15832
44
+ iqm/qiskit_iqm/iqm_transpilation.py,sha256=6_6Mri01_HQBV_GTX94WSvIbu-pDMLMzEU6zVMEt6Gc,9153
45
+ iqm/qiskit_iqm/move_gate.py,sha256=UbrQSfrpVV3QKGJ93TelxEfZkl1wY4uWL8IH_QDpGUw,2840
46
46
  iqm/qiskit_iqm/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
47
  iqm/qiskit_iqm/qiskit_to_iqm.py,sha256=9JGcR_7K1Y5W6_PBP1bVCZqy7khCOa-BU9m1I9MJB5k,15056
48
- iqm/qiskit_iqm/transpiler_plugins.py,sha256=w0TXrAqtMZsPgGC1YcwiLvlBYVKDtpaCi_lnlLjTD2c,8717
48
+ iqm/qiskit_iqm/transpiler_plugins.py,sha256=iuReGL42fCe5aOoH-KMUsb6t7Ok9qmIIj2S4yotJJ-U,8749
49
49
  iqm/qiskit_iqm/examples/__init__.py,sha256=M4ElQHCo-WxtVXK39bF3QiFT3IGXPtZ1khqexHiTBEc,20
50
50
  iqm/qiskit_iqm/examples/bell_measure.py,sha256=iMZB_MNMf2XP6Eiv2XbhtNs4bXbMGQeMw7ohw2JWKS8,1903
51
51
  iqm/qiskit_iqm/examples/resonance_example.py,sha256=ACmHt9Zz2rhs5mlhCoVCbzWlE9QmOFVMOsHGifblMt4,2953
@@ -57,10 +57,10 @@ iqm/qiskit_iqm/fake_backends/fake_apollo.py,sha256=eT2vd3kQBi1rrvxCpePymBCfFK84d
57
57
  iqm/qiskit_iqm/fake_backends/fake_deneb.py,sha256=RzQXmLXmBARDiMKVxk5Aw9fVbc6IYlW0A5jibk9iYD0,3156
58
58
  iqm/qiskit_iqm/fake_backends/fake_garnet.py,sha256=GI0xafTCj1Um09qVuccO6GPOGBm6ygul_O40Wu220Ys,5555
59
59
  iqm/qiskit_iqm/fake_backends/iqm_fake_backend.py,sha256=wJtfsxjPYbDKmzaz5R4AuaXvvPHa21WyPtRgNctL9eY,16785
60
- iqm_client-30.1.0.dist-info/AUTHORS.rst,sha256=qsxeK5A3-B_xK3hNbhFHEIkoHNpo7sdzYyRTs7Bdtm8,795
61
- iqm_client-30.1.0.dist-info/LICENSE.txt,sha256=2DXrmQtVVUV9Fc9RBFJidMiTEaQlG2oAtlC9PMrEwTk,11333
62
- iqm_client-30.1.0.dist-info/METADATA,sha256=pbBDKSpbKWOSJcupUX-DPyjGDM6agGvieG7DAKTNQzY,17692
63
- iqm_client-30.1.0.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
64
- iqm_client-30.1.0.dist-info/entry_points.txt,sha256=Kk2qfRwk8vbIJ7qCAvmaUogfRRn6t92_hBFhe6kqAE4,1317
65
- iqm_client-30.1.0.dist-info/top_level.txt,sha256=NB4XRfyDS6_wG9gMsyX-9LTU7kWnTQxNvkbzIxGv3-c,4
66
- iqm_client-30.1.0.dist-info/RECORD,,
60
+ iqm_client-30.2.0.dist-info/AUTHORS.rst,sha256=qsxeK5A3-B_xK3hNbhFHEIkoHNpo7sdzYyRTs7Bdtm8,795
61
+ iqm_client-30.2.0.dist-info/LICENSE.txt,sha256=2DXrmQtVVUV9Fc9RBFJidMiTEaQlG2oAtlC9PMrEwTk,11333
62
+ iqm_client-30.2.0.dist-info/METADATA,sha256=nXvgyDgwhFoCjrAsin1iwwp8ooLY1yM6IVMfEaYLm-4,17692
63
+ iqm_client-30.2.0.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
64
+ iqm_client-30.2.0.dist-info/entry_points.txt,sha256=Kk2qfRwk8vbIJ7qCAvmaUogfRRn6t92_hBFhe6kqAE4,1317
65
+ iqm_client-30.2.0.dist-info/top_level.txt,sha256=NB4XRfyDS6_wG9gMsyX-9LTU7kWnTQxNvkbzIxGv3-c,4
66
+ iqm_client-30.2.0.dist-info/RECORD,,