qoro-divi 0.3.2b0__py3-none-any.whl → 0.3.4__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.

Potentially problematic release.


This version of qoro-divi might be problematic. Click here for more details.

Files changed (69) hide show
  1. divi/__init__.py +1 -2
  2. divi/backends/__init__.py +7 -0
  3. divi/{parallel_simulator.py → backends/_parallel_simulator.py} +4 -3
  4. divi/{qoro_service.py → backends/_qoro_service.py} +27 -15
  5. divi/circuits/__init__.py +5 -0
  6. divi/{circuits.py → circuits/_core.py} +6 -20
  7. divi/{qasm.py → circuits/qasm.py} +2 -2
  8. divi/{exp → extern}/cirq/__init__.py +1 -1
  9. divi/{exp → extern}/cirq/_validator.py +10 -8
  10. divi/qprog/__init__.py +19 -6
  11. divi/qprog/algorithms/__init__.py +14 -0
  12. divi/qprog/algorithms/_ansatze.py +215 -0
  13. divi/qprog/{_qaoa.py → algorithms/_qaoa.py} +16 -26
  14. divi/qprog/{_vqe.py → algorithms/_vqe.py} +35 -133
  15. divi/qprog/batch.py +25 -19
  16. divi/qprog/optimizers.py +170 -45
  17. divi/qprog/quantum_program.py +142 -200
  18. divi/qprog/workflows/__init__.py +10 -0
  19. divi/qprog/{_graph_partitioning.py → workflows/_graph_partitioning.py} +6 -9
  20. divi/qprog/{_qubo_partitioning.py → workflows/_qubo_partitioning.py} +6 -7
  21. divi/qprog/{_vqe_sweep.py → workflows/_vqe_sweep.py} +35 -24
  22. divi/reporting/__init__.py +7 -0
  23. divi/{_pbar.py → reporting/_pbar.py} +13 -14
  24. divi/{qlogger.py → reporting/_qlogger.py} +8 -6
  25. divi/{reporter.py → reporting/_reporter.py} +24 -7
  26. divi/utils.py +14 -6
  27. {qoro_divi-0.3.2b0.dist-info → qoro_divi-0.3.4.dist-info}/METADATA +2 -2
  28. qoro_divi-0.3.4.dist-info/RECORD +68 -0
  29. qoro_divi-0.3.2b0.dist-info/RECORD +0 -62
  30. /divi/{interfaces.py → backends/_circuit_runner.py} +0 -0
  31. /divi/{qpu_system.py → backends/_qpu_system.py} +0 -0
  32. /divi/{qem.py → circuits/qem.py} +0 -0
  33. /divi/{exp → extern}/cirq/_lexer.py +0 -0
  34. /divi/{exp → extern}/cirq/_parser.py +0 -0
  35. /divi/{exp → extern}/cirq/_qasm_export.py +0 -0
  36. /divi/{exp → extern}/cirq/_qasm_import.py +0 -0
  37. /divi/{exp → extern}/cirq/exception.py +0 -0
  38. /divi/{exp → extern}/scipy/_cobyla.py +0 -0
  39. /divi/{exp → extern}/scipy/pyprima/LICENCE.txt +0 -0
  40. /divi/{exp → extern}/scipy/pyprima/__init__.py +0 -0
  41. /divi/{exp → extern}/scipy/pyprima/cobyla/__init__.py +0 -0
  42. /divi/{exp → extern}/scipy/pyprima/cobyla/cobyla.py +0 -0
  43. /divi/{exp → extern}/scipy/pyprima/cobyla/cobylb.py +0 -0
  44. /divi/{exp → extern}/scipy/pyprima/cobyla/geometry.py +0 -0
  45. /divi/{exp → extern}/scipy/pyprima/cobyla/initialize.py +0 -0
  46. /divi/{exp → extern}/scipy/pyprima/cobyla/trustregion.py +0 -0
  47. /divi/{exp → extern}/scipy/pyprima/cobyla/update.py +0 -0
  48. /divi/{exp → extern}/scipy/pyprima/common/__init__.py +0 -0
  49. /divi/{exp → extern}/scipy/pyprima/common/_bounds.py +0 -0
  50. /divi/{exp → extern}/scipy/pyprima/common/_linear_constraints.py +0 -0
  51. /divi/{exp → extern}/scipy/pyprima/common/_nonlinear_constraints.py +0 -0
  52. /divi/{exp → extern}/scipy/pyprima/common/_project.py +0 -0
  53. /divi/{exp → extern}/scipy/pyprima/common/checkbreak.py +0 -0
  54. /divi/{exp → extern}/scipy/pyprima/common/consts.py +0 -0
  55. /divi/{exp → extern}/scipy/pyprima/common/evaluate.py +0 -0
  56. /divi/{exp → extern}/scipy/pyprima/common/history.py +0 -0
  57. /divi/{exp → extern}/scipy/pyprima/common/infos.py +0 -0
  58. /divi/{exp → extern}/scipy/pyprima/common/linalg.py +0 -0
  59. /divi/{exp → extern}/scipy/pyprima/common/message.py +0 -0
  60. /divi/{exp → extern}/scipy/pyprima/common/powalg.py +0 -0
  61. /divi/{exp → extern}/scipy/pyprima/common/preproc.py +0 -0
  62. /divi/{exp → extern}/scipy/pyprima/common/present.py +0 -0
  63. /divi/{exp → extern}/scipy/pyprima/common/ratio.py +0 -0
  64. /divi/{exp → extern}/scipy/pyprima/common/redrho.py +0 -0
  65. /divi/{exp → extern}/scipy/pyprima/common/selectx.py +0 -0
  66. {qoro_divi-0.3.2b0.dist-info → qoro_divi-0.3.4.dist-info}/LICENSE +0 -0
  67. {qoro_divi-0.3.2b0.dist-info → qoro_divi-0.3.4.dist-info}/LICENSES/.license-header +0 -0
  68. {qoro_divi-0.3.2b0.dist-info → qoro_divi-0.3.4.dist-info}/LICENSES/Apache-2.0.txt +0 -0
  69. {qoro_divi-0.3.2b0.dist-info → qoro_divi-0.3.4.dist-info}/WHEEL +0 -0
@@ -28,12 +28,9 @@ class ConditionalSpinnerColumn(ProgressColumn):
28
28
 
29
29
 
30
30
  class PhaseStatusColumn(ProgressColumn):
31
- def __init__(self, max_retries: int, table_column=None):
31
+ def __init__(self, table_column=None):
32
32
  super().__init__(table_column)
33
33
 
34
- self._max_retries = max_retries
35
- self._last_message = ""
36
-
37
34
  def render(self, task):
38
35
  final_status = task.fields.get("final_status")
39
36
 
@@ -43,27 +40,29 @@ class PhaseStatusColumn(ProgressColumn):
43
40
  return Text("• Failed! ❌", style="bold red")
44
41
 
45
42
  message = task.fields.get("message")
46
- if message != "":
47
- self._last_message = message
48
43
 
49
44
  poll_attempt = task.fields.get("poll_attempt")
45
+ polling_str = ""
46
+ service_job_id = ""
50
47
  if poll_attempt > 0:
51
- return Text(
52
- f"[{self._last_message}] Polling {poll_attempt}/{self._max_retries}"
53
- )
48
+ max_retries = task.fields.get("max_retries")
49
+ service_job_id = task.fields.get("service_job_id").split("-")[0]
50
+ job_status = task.fields.get("job_status")
51
+ polling_str = f" [Job {service_job_id} is {job_status}. Polling attempt {poll_attempt} / {max_retries}]"
52
+
53
+ final_text = Text(f"[{message}]{polling_str}")
54
+ final_text.highlight_words([service_job_id], "blue")
54
55
 
55
- return Text(f"[{self._last_message}]")
56
+ return final_text
56
57
 
57
58
 
58
- def make_progress_bar(
59
- max_retries: int | None = None, is_jupyter: bool = False
60
- ) -> Progress:
59
+ def make_progress_bar(is_jupyter: bool = False) -> Progress:
61
60
  return Progress(
62
61
  TextColumn("[bold blue]{task.fields[job_name]}"),
63
62
  BarColumn(),
64
63
  MofNCompleteColumn(),
65
64
  ConditionalSpinnerColumn(),
66
- PhaseStatusColumn(max_retries=max_retries),
65
+ PhaseStatusColumn(),
67
66
  # For jupyter notebooks, refresh manually instead
68
67
  auto_refresh=not is_jupyter,
69
68
  # Give a dummy positive value if is_jupyter
@@ -44,22 +44,23 @@ class OverwriteStreamHandler(logging.StreamHandler):
44
44
 
45
45
  def emit(self, record):
46
46
  msg = self.format(record)
47
+ append = getattr(record, "append", False)
47
48
 
48
- if record.message.startswith(r"\c"):
49
- sep = r"\c"
50
- msg = f"{msg.split(sep)[0]}{self._last_record} [{record.message[2:-2]}]\r"
49
+ if append:
50
+ space = " " if self._last_record else ""
51
+ msg = f"{msg[:msg.index(record.message)]}{self._last_record}{space}[{record.message[:-2]}]\r"
51
52
 
52
53
  if msg.endswith("\r\n"):
53
54
  overwrite_and_newline = True
54
55
  clean_msg = msg[:-2]
55
56
 
56
- if not record.message.startswith("\c"):
57
+ if not append:
57
58
  self._last_record = record.message[:-2]
58
59
  elif msg.endswith("\r"):
59
60
  overwrite_and_newline = False
60
61
  clean_msg = msg[:-1]
61
62
 
62
- if not record.message.startswith(r"\c"):
63
+ if not append:
63
64
  self._last_record = record.message[:-1]
64
65
  else:
65
66
  # Normal message - no overwriting
@@ -102,7 +103,8 @@ def enable_logging(level=logging.INFO):
102
103
  root_logger = logging.getLogger(__name__.split(".")[0])
103
104
 
104
105
  formatter = logging.Formatter(
105
- "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
106
+ "%(asctime)s - %(name)s - %(levelname)s - %(message)s",
107
+ datefmt="%Y-%m-%d %H:%M:%S",
106
108
  )
107
109
 
108
110
  handler = OverwriteStreamHandler(sys.stdout)
@@ -1,3 +1,7 @@
1
+ # SPDX-FileCopyrightText: 2025 Qoro Quantum Ltd <divi@qoroquantum.de>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  import logging
2
6
  from abc import ABC, abstractmethod
3
7
  from queue import Queue
@@ -25,25 +29,34 @@ class ProgressReporter(ABC):
25
29
  class QueueProgressReporter(ProgressReporter):
26
30
  """Reports progress by putting structured dictionaries onto a Queue."""
27
31
 
28
- def __init__(self, job_id: str, progress_queue: Queue):
32
+ def __init__(
33
+ self, job_id: str, progress_queue: Queue, has_final_computation: bool = False
34
+ ):
29
35
  self._job_id = job_id
30
36
  self._queue = progress_queue
37
+ self.has_final_computation = has_final_computation
31
38
 
32
39
  def update(self, **kwargs):
33
40
  payload = {"job_id": self._job_id, "progress": 1}
34
41
  self._queue.put(payload)
35
42
 
36
43
  def info(self, message: str, **kwargs):
37
- payload = {"job_id": self._job_id, "progress": 0}
44
+ payload = {"job_id": self._job_id, "progress": 0, "message": message}
45
+
46
+ # Determine if this message indicates the job is truly finished.
47
+ is_final_step = "Computed Final Solution" in message or (
48
+ "Finished Optimization" in message and not self.has_final_computation
49
+ )
38
50
 
39
- if "Finished Optimization" in message or "Computed Final Solution" in message:
51
+ if is_final_step:
40
52
  payload["final_status"] = "Success"
41
53
  elif "poll_attempt" in kwargs:
54
+ # For polling, remove the message key so the last message persists.
55
+ del payload["message"]
42
56
  payload["poll_attempt"] = kwargs["poll_attempt"]
43
57
  payload["max_retries"] = kwargs["max_retries"]
44
- payload["service_job_id"] = kwargs.get("service_job_id")
45
- else:
46
- payload["message"] = message
58
+ payload["service_job_id"] = kwargs["service_job_id"]
59
+ payload["job_status"] = kwargs["job_status"]
47
60
 
48
61
  self._queue.put(payload)
49
62
 
@@ -51,6 +64,10 @@ class QueueProgressReporter(ProgressReporter):
51
64
  class LoggingProgressReporter(ProgressReporter):
52
65
  """Reports progress by logging messages to the console."""
53
66
 
67
+ # Define ANSI color codes
68
+ CYAN = "\033[36m"
69
+ RESET = "\033[0m"
70
+
54
71
  def update(self, **kwargs):
55
72
  # You can decide how to format the update for logging
56
73
  logger.info(f"Finished Iteration #{kwargs['iteration']}\r\n")
@@ -59,7 +76,7 @@ class LoggingProgressReporter(ProgressReporter):
59
76
  # A special check for iteration updates to mimic old behavior
60
77
  if "poll_attempt" in kwargs:
61
78
  logger.info(
62
- rf"Polling Job {kwargs['job_service_id'].split('-')[0]}: {kwargs['poll_attempt']} / {kwargs['max_retries']} retries\r",
79
+ f"Job {self.CYAN}{kwargs['service_job_id'].split('-')[0]}{self.RESET} is {kwargs['job_status']}. Polling attempt {kwargs['poll_attempt']} / {kwargs['max_retries']}\r",
63
80
  extra={"append": True},
64
81
  )
65
82
  return
divi/utils.py CHANGED
@@ -35,9 +35,10 @@ def convert_qubo_matrix_to_pennylane_ising(
35
35
  ) -> tuple[qml.operation.Operator, float]:
36
36
  """Convert QUBO matrix to Ising Hamiltonian in Pennylane.
37
37
 
38
- The conversion follows the mapping:
39
- - QUBO variables x_i ∈ {0,1} map to Ising variables s_i ∈ {-1,1} via s_i = 2x_i - 1
40
- - This transforms a QUBO problem into an equivalent Ising problem
38
+ The conversion follows the mapping from QUBO variables x_i ∈ {0,1} to
39
+ Ising variables σ_i ∈ {-1,1} via the transformation x_i = (1 - σ_i)/2. This
40
+ transforms a QUBO minimization problem into an equivalent Ising minimization
41
+ problem.
41
42
 
42
43
  Args:
43
44
  qubo_matrix: The QUBO matrix Q where the objective is to minimize x^T Q x
@@ -56,17 +57,24 @@ def convert_qubo_matrix_to_pennylane_ising(
56
57
  is_sparse = sps.issparse(qubo_matrix)
57
58
  backend = sps if is_sparse else np
58
59
 
60
+ symmetrized_qubo = (qubo_matrix + qubo_matrix.T) / 2
61
+
59
62
  # Gather non-zero indices in the upper triangle of the matrix
60
63
  triu_matrix = backend.triu(
61
- qubo_matrix,
64
+ symmetrized_qubo,
62
65
  **(
63
66
  {"format": qubo_matrix.format if qubo_matrix.format != "coo" else "csc"}
64
67
  if is_sparse
65
68
  else {}
66
69
  ),
67
70
  )
68
- rows, cols = triu_matrix.nonzero()
69
- values = triu_matrix[rows, cols].A1 if is_sparse else triu_matrix[rows, cols]
71
+
72
+ if is_sparse:
73
+ coo_mat = triu_matrix.tocoo()
74
+ rows, cols, values = coo_mat.row, coo_mat.col, coo_mat.data
75
+ else:
76
+ rows, cols = triu_matrix.nonzero()
77
+ values = triu_matrix[rows, cols]
70
78
 
71
79
  n = qubo_matrix.shape[0]
72
80
  linear_terms = np.zeros(n)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qoro-divi
3
- Version: 0.3.2b0
3
+ Version: 0.3.4
4
4
  Summary: A Python library to automate generating, parallelizing, and executing quantum programs.
5
5
  Author: Ahmed Darwish
6
6
  Author-email: ahmed@qoroquantum.de
@@ -21,7 +21,7 @@ Requires-Dist: python-dotenv (>=1.1.1,<2.0.0)
21
21
  Requires-Dist: qiskit (<2.0)
22
22
  Requires-Dist: qiskit-aer (>=0.17.1,<0.18.0)
23
23
  Requires-Dist: qiskit-ibm-runtime (>=0.37,<0.38)
24
- Requires-Dist: qiskit-optimization (>=0.6.1,<0.7.0)
24
+ Requires-Dist: qiskit-optimization[cplex] (>=0.7.0,<0.8.0)
25
25
  Requires-Dist: requests (>=2.32.4,<3.0.0)
26
26
  Requires-Dist: rich (>=14.0.0,<15.0.0)
27
27
  Requires-Dist: scikit-learn (>=1.7.0,<2.0.0)
@@ -0,0 +1,68 @@
1
+ divi/__init__.py,sha256=SyBWflbDS6qGEtHg-AfzD1TRNgfXoW2H5qTYGJ-W3XQ,167
2
+ divi/backends/__init__.py,sha256=1S3EJH5XXou2s7EnZowhfI4b3u3zLUG05x7etj4W-IM,264
3
+ divi/backends/_circuit_runner.py,sha256=P-8lekQIGwbhHv4ewfMFtKYIjmQHu7nmscwAmxsx72U,594
4
+ divi/backends/_parallel_simulator.py,sha256=jHt6C2-H65cYIMA0zc-gkSt69tNgaM98eXSRZqmI4UI,8979
5
+ divi/backends/_qoro_service.py,sha256=_x5CSkmcP_LFiqRdDax5vBcEJ7XRjtY6ZOfyPuwPn6U,14057
6
+ divi/backends/_qpu_system.py,sha256=teVeG18ukyzMFgbPSr4BLx4MJUHVK382RqZMOy2voFk,374
7
+ divi/circuits/__init__.py,sha256=Wl4BF0_TwG1Ol4oaftCD5lpkgS9us9EW7F4hu6r_eXM,151
8
+ divi/circuits/_core.py,sha256=TsCa7n1Gwd8thxn5JYF2rcKVnHFDXOD_8ZEwG749az4,4022
9
+ divi/circuits/qasm.py,sha256=5z_o4mY_eK24AXToFSugf74gTT_3iQuJddBZ7m5mvFU,7396
10
+ divi/circuits/qem.py,sha256=o6rMPUcxLuCBitBb8-QcxveUiKZVsP3HMamxyVFLi6M,6805
11
+ divi/extern/cirq/__init__.py,sha256=6NjP3TlQn_oNkg8VrKvEIoYQxB5Bx0mLLFOT3SXReTc,371
12
+ divi/extern/cirq/_lexer.py,sha256=x5UArrnN_JEyiq7E02ikq0wdmqZ2vEQ3_FADL1LIhQI,3187
13
+ divi/extern/cirq/_parser.py,sha256=z_bSn4m03-sfRlN8eL99Mo4LnjY-zmR-Xt6UrjzstZc,29279
14
+ divi/extern/cirq/_qasm_export.py,sha256=8C5xLYvIIkQTWWAAYo7ZjwtQjvYXNSflbf5UyUx6YUE,1024
15
+ divi/extern/cirq/_qasm_import.py,sha256=HbehrgfLl3iDdRyWr4o26Bek3ZpN-_dvNVSexl5-aVE,969
16
+ divi/extern/cirq/_validator.py,sha256=GVCeoi3IGUCPcqmg6E7lPtD52h-63_0AH4-MToajL4o,20509
17
+ divi/extern/cirq/exception.py,sha256=w1w2vSubOGMRmyKBFqXejxfeIAzkPZ6V7gSrDX_ap4A,765
18
+ divi/extern/scipy/_cobyla.py,sha256=cnCf5AsOM8JWIMiujuUbWMNOgmUr3ZET9y04hUyumHs,10937
19
+ divi/extern/scipy/pyprima/LICENCE.txt,sha256=mXN5ssG_U6OR0v0yldznW_PJTtKNZIgu3jDRtRjLDdY,1533
20
+ divi/extern/scipy/pyprima/__init__.py,sha256=WHV_bPKPLakKdP2TdecrbtMrZ7KR3qb1E3m5VkCjLSo,8956
21
+ divi/extern/scipy/pyprima/cobyla/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ divi/extern/scipy/pyprima/cobyla/cobyla.py,sha256=zIHjhLDkzhijMrzypObgYjQQfelUdxp6VOKQd34m_oU,22281
23
+ divi/extern/scipy/pyprima/cobyla/cobylb.py,sha256=DhOW4SnJ8ihLHybC4-1BK2X-5BFZlndEduuagmXQOVY,42091
24
+ divi/extern/scipy/pyprima/cobyla/geometry.py,sha256=YtGsY-lXAKmsuBj_D59H97Z8acDl7fAJGt4QTEigsiU,10789
25
+ divi/extern/scipy/pyprima/cobyla/initialize.py,sha256=QT9rpkO8IjlljA-z5wPxg7KFWtB_ae38Z7Ww0S-fMpU,9964
26
+ divi/extern/scipy/pyprima/cobyla/trustregion.py,sha256=AD_tdF7VCt6xBrduv0KFr7VgyUoGdIIz4mwde_9dk0g,26021
27
+ divi/extern/scipy/pyprima/cobyla/update.py,sha256=VuwqaE3wXxsGopPAkOAATmesLDUH-8WZrw3iRqu3jzs,14353
28
+ divi/extern/scipy/pyprima/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
+ divi/extern/scipy/pyprima/common/_bounds.py,sha256=0tY542ERqX53I5lreyVUy9XVXfNFvt1bx9peKM70U3U,1683
30
+ divi/extern/scipy/pyprima/common/_linear_constraints.py,sha256=piTatWAMPQo-nwFB14VpRQ6JphBgrBL8OjLysBrTlhI,2160
31
+ divi/extern/scipy/pyprima/common/_nonlinear_constraints.py,sha256=evfY-4FWXKcGae658NXfrlSpCtkHRxCqSG-MyO-WDx4,2180
32
+ divi/extern/scipy/pyprima/common/_project.py,sha256=dnQURl2ztxjGDvoYgMZGnEqUGLUoNUvBaLS12p9-qN0,8541
33
+ divi/extern/scipy/pyprima/common/checkbreak.py,sha256=WrW_dAjZI_3iKvvG3eLTJCxcj5HkIksUBtQQ9BUdB_E,3549
34
+ divi/extern/scipy/pyprima/common/consts.py,sha256=PiGCfDRy9fZjmGJBeCg25gULDfe1cv2HkjS6CQujphg,1313
35
+ divi/extern/scipy/pyprima/common/evaluate.py,sha256=vzjNPdGiAFdD8qpUVp_V1b5f3t2pFyr2N-sMSnTE6OI,3156
36
+ divi/extern/scipy/pyprima/common/history.py,sha256=m0cQ7VOGefWWKTPweqx3dvGZiyzGClTB0BjaKY5mOtQ,1362
37
+ divi/extern/scipy/pyprima/common/infos.py,sha256=MzhS3XciMW5fg4ccW8ubZ3Mkdp2qT6sq56GAkYZikXI,704
38
+ divi/extern/scipy/pyprima/common/linalg.py,sha256=HYoy6vYR2AMUVGSKbA8xj9tjvloMofk_s26N34qiFNk,14516
39
+ divi/extern/scipy/pyprima/common/message.py,sha256=G2_hmqxKvZg0aGCXqw3VmXDxrle8k0Grujzb4iiuPLI,10086
40
+ divi/extern/scipy/pyprima/common/powalg.py,sha256=Azla5UC3oPppDcSTub_1auLS_QXQ_aY1Djm4RT3HkV4,6825
41
+ divi/extern/scipy/pyprima/common/preproc.py,sha256=Ye62rhEilf3ah9aiGc6cSLZg77_qAi3FPK2r4XvPxGk,14929
42
+ divi/extern/scipy/pyprima/common/present.py,sha256=caedmqSB5ggGXNfky0A6v6FAdyaEGrbMEJqNh5Cf6l4,147
43
+ divi/extern/scipy/pyprima/common/ratio.py,sha256=taadehpW0c3ULUggH5frIMpvTom53dsEhvFaXrIKvOI,1833
44
+ divi/extern/scipy/pyprima/common/redrho.py,sha256=J6rJILcOoCeo942LUAXxpUvKLarUGNCGdC-zcmIlVHE,1264
45
+ divi/extern/scipy/pyprima/common/selectx.py,sha256=mXVS2L6AuTmbOhpp1KlXwOBR54ttnbjwagYfnXhezJY,14713
46
+ divi/qprog/__init__.py,sha256=3X7MK7PjXI-rCZQ9OYq314w14npmasCNSBECq23DW7U,622
47
+ divi/qprog/algorithms/__init__.py,sha256=KLGD3zRk3z4nJQDqBjejTGgJ5m0n02jyBVHLJihMMws,355
48
+ divi/qprog/algorithms/_ansatze.py,sha256=ATep35g7CD_t7wrmW62g5a8_XbXkbwwjU8Y4Poux4qA,7933
49
+ divi/qprog/algorithms/_qaoa.py,sha256=cGYE0xkO7sBfqVyO5HxJNWi9-Vu84eTjJEGcIfbwweg,15951
50
+ divi/qprog/algorithms/_vqe.py,sha256=FE0lnX_WKgKJnARdMvzehlLgmXgfBwGapf-fGCiIqMI,6499
51
+ divi/qprog/batch.py,sha256=F_s83FDqnbm7UAYeTizKQqNysE6bACTorwtv8hmcJm4,10036
52
+ divi/qprog/optimizers.py,sha256=SYWknntCl_QI4icoVdFvunxY5rZ2S0GGBVvtIWypk30,6433
53
+ divi/qprog/quantum_program.py,sha256=2q4SDZ9TwTu_HdqNr3EWRNXBLlFEGSSWdHoUyAljT_c,14978
54
+ divi/qprog/workflows/__init__.py,sha256=_GAFsZsgj9p61E1xUXasa1aspwcOWp4s8i6hA6mQ9eg,320
55
+ divi/qprog/workflows/_graph_partitioning.py,sha256=Y_LpQy9djbeXplVmyfr2E2aWjmwkM0GY7xU2N8hJhYY,23675
56
+ divi/qprog/workflows/_qubo_partitioning.py,sha256=3IFD_N2vjwaFuK155fg26rbrGyYqEjzEnkxlw2BqRF0,7473
57
+ divi/qprog/workflows/_vqe_sweep.py,sha256=eoontmK1z0KTdkEW2TbfCs9UKI4ThlFYXAivpO9GWK4,17974
58
+ divi/reporting/__init__.py,sha256=gaBUZrhNxR53VHojZxfjvQRDl-eDHo901vLE8I95kIw,290
59
+ divi/reporting/_pbar.py,sha256=I8AWI93mpcJXIXTIvsa3JghazO65Pmrq-bW2bJTf2Ik,2131
60
+ divi/reporting/_qlogger.py,sha256=hZ6hELP5Z41P1KpJV9xZ0TuHeI0ztswpcZrJ4yHKdAg,3860
61
+ divi/reporting/_reporter.py,sha256=AgB2Mno1sIXF-VhOi8i-LGuWG5FMG1HelMw5cMc84HM,2977
62
+ divi/utils.py,sha256=txdkb2y_z99-ysxdmC3Rl3tw0hkJsvRltLybCXb89bA,3816
63
+ qoro_divi-0.3.4.dist-info/LICENSE,sha256=NS4JlQrgNwg1bvB3kE5shE-P4cJgnntgl-kClbOpG_Q,10760
64
+ qoro_divi-0.3.4.dist-info/LICENSES/.license-header,sha256=2jN_xtJscqP8LG-NaveY2KHUkfRCC543Y_XjOyKEfWY,105
65
+ qoro_divi-0.3.4.dist-info/LICENSES/Apache-2.0.txt,sha256=yoILHpvVuguUBpk8UwMnzJbcHUUyst9iGNNuEwUtWVc,10270
66
+ qoro_divi-0.3.4.dist-info/METADATA,sha256=Or34jlJGk7jDChjEGjpE__8zaX58jlxCF9-MjBHpK-w,2428
67
+ qoro_divi-0.3.4.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
68
+ qoro_divi-0.3.4.dist-info/RECORD,,
@@ -1,62 +0,0 @@
1
- divi/__init__.py,sha256=WNAlzdjio0M5la_NTGk4-0AFqItI6HEBExRs6ck9j0Y,203
2
- divi/_pbar.py,sha256=M6FQByH63bWwzsKtedW49Hm7hFsnb1X5AlFfCZFSvuU,2019
3
- divi/circuits.py,sha256=OKcwTMXIvCIjvpLvdeQBWGYElcVUNNyA3z8yXnxUXeo,4476
4
- divi/exp/cirq/__init__.py,sha256=4wd5rEiNgsPVSK8uLYdJMf54B1ITdtKfMJtdnRpfwTE,350
5
- divi/exp/cirq/_lexer.py,sha256=x5UArrnN_JEyiq7E02ikq0wdmqZ2vEQ3_FADL1LIhQI,3187
6
- divi/exp/cirq/_parser.py,sha256=z_bSn4m03-sfRlN8eL99Mo4LnjY-zmR-Xt6UrjzstZc,29279
7
- divi/exp/cirq/_qasm_export.py,sha256=8C5xLYvIIkQTWWAAYo7ZjwtQjvYXNSflbf5UyUx6YUE,1024
8
- divi/exp/cirq/_qasm_import.py,sha256=HbehrgfLl3iDdRyWr4o26Bek3ZpN-_dvNVSexl5-aVE,969
9
- divi/exp/cirq/_validator.py,sha256=nYbJdT_0hCVUgZA0YiKZ8G1oDgwmcqEiy-LZH41EgUw,20481
10
- divi/exp/cirq/exception.py,sha256=w1w2vSubOGMRmyKBFqXejxfeIAzkPZ6V7gSrDX_ap4A,765
11
- divi/exp/scipy/_cobyla.py,sha256=cnCf5AsOM8JWIMiujuUbWMNOgmUr3ZET9y04hUyumHs,10937
12
- divi/exp/scipy/pyprima/LICENCE.txt,sha256=mXN5ssG_U6OR0v0yldznW_PJTtKNZIgu3jDRtRjLDdY,1533
13
- divi/exp/scipy/pyprima/__init__.py,sha256=WHV_bPKPLakKdP2TdecrbtMrZ7KR3qb1E3m5VkCjLSo,8956
14
- divi/exp/scipy/pyprima/cobyla/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- divi/exp/scipy/pyprima/cobyla/cobyla.py,sha256=zIHjhLDkzhijMrzypObgYjQQfelUdxp6VOKQd34m_oU,22281
16
- divi/exp/scipy/pyprima/cobyla/cobylb.py,sha256=DhOW4SnJ8ihLHybC4-1BK2X-5BFZlndEduuagmXQOVY,42091
17
- divi/exp/scipy/pyprima/cobyla/geometry.py,sha256=YtGsY-lXAKmsuBj_D59H97Z8acDl7fAJGt4QTEigsiU,10789
18
- divi/exp/scipy/pyprima/cobyla/initialize.py,sha256=QT9rpkO8IjlljA-z5wPxg7KFWtB_ae38Z7Ww0S-fMpU,9964
19
- divi/exp/scipy/pyprima/cobyla/trustregion.py,sha256=AD_tdF7VCt6xBrduv0KFr7VgyUoGdIIz4mwde_9dk0g,26021
20
- divi/exp/scipy/pyprima/cobyla/update.py,sha256=VuwqaE3wXxsGopPAkOAATmesLDUH-8WZrw3iRqu3jzs,14353
21
- divi/exp/scipy/pyprima/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- divi/exp/scipy/pyprima/common/_bounds.py,sha256=0tY542ERqX53I5lreyVUy9XVXfNFvt1bx9peKM70U3U,1683
23
- divi/exp/scipy/pyprima/common/_linear_constraints.py,sha256=piTatWAMPQo-nwFB14VpRQ6JphBgrBL8OjLysBrTlhI,2160
24
- divi/exp/scipy/pyprima/common/_nonlinear_constraints.py,sha256=evfY-4FWXKcGae658NXfrlSpCtkHRxCqSG-MyO-WDx4,2180
25
- divi/exp/scipy/pyprima/common/_project.py,sha256=dnQURl2ztxjGDvoYgMZGnEqUGLUoNUvBaLS12p9-qN0,8541
26
- divi/exp/scipy/pyprima/common/checkbreak.py,sha256=WrW_dAjZI_3iKvvG3eLTJCxcj5HkIksUBtQQ9BUdB_E,3549
27
- divi/exp/scipy/pyprima/common/consts.py,sha256=PiGCfDRy9fZjmGJBeCg25gULDfe1cv2HkjS6CQujphg,1313
28
- divi/exp/scipy/pyprima/common/evaluate.py,sha256=vzjNPdGiAFdD8qpUVp_V1b5f3t2pFyr2N-sMSnTE6OI,3156
29
- divi/exp/scipy/pyprima/common/history.py,sha256=m0cQ7VOGefWWKTPweqx3dvGZiyzGClTB0BjaKY5mOtQ,1362
30
- divi/exp/scipy/pyprima/common/infos.py,sha256=MzhS3XciMW5fg4ccW8ubZ3Mkdp2qT6sq56GAkYZikXI,704
31
- divi/exp/scipy/pyprima/common/linalg.py,sha256=HYoy6vYR2AMUVGSKbA8xj9tjvloMofk_s26N34qiFNk,14516
32
- divi/exp/scipy/pyprima/common/message.py,sha256=G2_hmqxKvZg0aGCXqw3VmXDxrle8k0Grujzb4iiuPLI,10086
33
- divi/exp/scipy/pyprima/common/powalg.py,sha256=Azla5UC3oPppDcSTub_1auLS_QXQ_aY1Djm4RT3HkV4,6825
34
- divi/exp/scipy/pyprima/common/preproc.py,sha256=Ye62rhEilf3ah9aiGc6cSLZg77_qAi3FPK2r4XvPxGk,14929
35
- divi/exp/scipy/pyprima/common/present.py,sha256=caedmqSB5ggGXNfky0A6v6FAdyaEGrbMEJqNh5Cf6l4,147
36
- divi/exp/scipy/pyprima/common/ratio.py,sha256=taadehpW0c3ULUggH5frIMpvTom53dsEhvFaXrIKvOI,1833
37
- divi/exp/scipy/pyprima/common/redrho.py,sha256=J6rJILcOoCeo942LUAXxpUvKLarUGNCGdC-zcmIlVHE,1264
38
- divi/exp/scipy/pyprima/common/selectx.py,sha256=mXVS2L6AuTmbOhpp1KlXwOBR54ttnbjwagYfnXhezJY,14713
39
- divi/interfaces.py,sha256=P-8lekQIGwbhHv4ewfMFtKYIjmQHu7nmscwAmxsx72U,594
40
- divi/parallel_simulator.py,sha256=2JCwmootXLtDplplEqtykKc8HiYe6G0zKWemIb-IIdE,8947
41
- divi/qasm.py,sha256=lfWky4E9qetotVo8BII58svutVVZEV14BntoC14bo40,7384
42
- divi/qem.py,sha256=o6rMPUcxLuCBitBb8-QcxveUiKZVsP3HMamxyVFLi6M,6805
43
- divi/qlogger.py,sha256=VaCnw-u8VkR7JukjOp39r0V89wO-SSpDj5l50ejnHUg,3801
44
- divi/qoro_service.py,sha256=sv94S_xdY4k4YYSK3PgX4sgvgldFMkjJ3wtQO1a_2Yc,13557
45
- divi/qprog/__init__.py,sha256=quz1zEdrY71TuNVXUHq9u92sORgPmmNq8y6ozMiYnTI,507
46
- divi/qprog/_graph_partitioning.py,sha256=ZVDKc5--YB9EmuA7Qsyc0Rc5P-eojWpglO-XqoMmbZk,23620
47
- divi/qprog/_qaoa.py,sha256=FCO3s0mA6rlrymqUjvpfY640DoLLIFP8tqi8z7UAamM,16129
48
- divi/qprog/_qubo_partitioning.py,sha256=7MxeUfZ5PDkfzPprcXh_1omdvUuCK_I4qh1915XAVhk,7388
49
- divi/qprog/_vqe.py,sha256=0MNSZA9wb6CKhLIT5SpM_J2ncW-p1frKBp8k0ipOYwQ,9985
50
- divi/qprog/_vqe_sweep.py,sha256=lTWPG7vwtVS91Piqc5-_tlhglO8RFkMhlatCTz-8PZg,17214
51
- divi/qprog/batch.py,sha256=UWiDsABFWNggvR136jBnTg6r5OUuHHh3nOCGL1keAy8,9654
52
- divi/qprog/optimizers.py,sha256=l19zIyt1l0IhUbLofEXlwE9XnsILk7ANlwACi3KKN4w,2034
53
- divi/qprog/quantum_program.py,sha256=hJ5uraX9ZNicfoJu3X0aAe8KTJUzndgX5GyoHZ1GOB8,16921
54
- divi/qpu_system.py,sha256=teVeG18ukyzMFgbPSr4BLx4MJUHVK382RqZMOy2voFk,374
55
- divi/reporter.py,sha256=inR-a1QBhdw96pFBdRGBxhWI-Jmoxy1iWiAH4gLiXrQ,2329
56
- divi/utils.py,sha256=EEyGakoz33AvU0Rq7iijL8AULMg4FGcGBtmOlpSw-tY,3603
57
- qoro_divi-0.3.2b0.dist-info/LICENSE,sha256=NS4JlQrgNwg1bvB3kE5shE-P4cJgnntgl-kClbOpG_Q,10760
58
- qoro_divi-0.3.2b0.dist-info/LICENSES/.license-header,sha256=2jN_xtJscqP8LG-NaveY2KHUkfRCC543Y_XjOyKEfWY,105
59
- qoro_divi-0.3.2b0.dist-info/LICENSES/Apache-2.0.txt,sha256=yoILHpvVuguUBpk8UwMnzJbcHUUyst9iGNNuEwUtWVc,10270
60
- qoro_divi-0.3.2b0.dist-info/METADATA,sha256=gEOZ_q1nlexh4yGU8cZx1dY5w7pM24VrDQz_VH1tpOk,2423
61
- qoro_divi-0.3.2b0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
62
- qoro_divi-0.3.2b0.dist-info/RECORD,,
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
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes