qilisdk 0.1.2__tar.gz → 0.1.4__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 (79) hide show
  1. {qilisdk-0.1.2 → qilisdk-0.1.4}/.github/workflows/code_quality.yml +1 -1
  2. {qilisdk-0.1.2 → qilisdk-0.1.4}/.gitignore +4 -0
  3. {qilisdk-0.1.2 → qilisdk-0.1.4}/CHANGELOG.md +37 -1
  4. {qilisdk-0.1.2 → qilisdk-0.1.4}/PKG-INFO +7 -8
  5. {qilisdk-0.1.2 → qilisdk-0.1.4}/README.md +3 -4
  6. {qilisdk-0.1.2 → qilisdk-0.1.4}/pyproject.toml +7 -4
  7. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/__init__.py +4 -4
  8. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/quantum_objects.py +214 -104
  9. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/__init__.py +2 -2
  10. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/cuda/cuda_backend.py +5 -6
  11. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/qaas_backend.py +2 -1
  12. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/analog/test_quantum_objects.py +67 -23
  13. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/utils/test_serialization.py +2 -2
  14. {qilisdk-0.1.2 → qilisdk-0.1.4}/uv.lock +926 -919
  15. {qilisdk-0.1.2 → qilisdk-0.1.4}/.github/workflows/publish.yml +0 -0
  16. {qilisdk-0.1.2 → qilisdk-0.1.4}/.github/workflows/tests.yml +0 -0
  17. {qilisdk-0.1.2 → qilisdk-0.1.4}/.pre-commit-config.yaml +0 -0
  18. {qilisdk-0.1.2 → qilisdk-0.1.4}/.python-version +0 -0
  19. {qilisdk-0.1.2 → qilisdk-0.1.4}/LICENCE +0 -0
  20. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/__init__.py +0 -0
  21. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/__init__.pyi +0 -0
  22. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/_optionals.py +0 -0
  23. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/algorithms.py +0 -0
  24. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/analog_backend.py +0 -0
  25. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/analog_result.py +0 -0
  26. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/exceptions.py +0 -0
  27. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/hamiltonian.py +0 -0
  28. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/schedule.py +0 -0
  29. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/common/__init__.py +0 -0
  30. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/common/algorithm.py +0 -0
  31. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/common/backend.py +0 -0
  32. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/common/model.py +0 -0
  33. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/common/optimizer.py +0 -0
  34. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/common/optimizer_result.py +0 -0
  35. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/common/result.py +0 -0
  36. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/__init__.py +0 -0
  37. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/ansatz.py +0 -0
  38. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/circuit.py +0 -0
  39. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/digital_algorithm.py +0 -0
  40. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/digital_backend.py +0 -0
  41. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/digital_result.py +0 -0
  42. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/exceptions.py +0 -0
  43. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/gates.py +0 -0
  44. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/vqe.py +0 -0
  45. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/__init__.pyi +0 -0
  46. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/cuda/__init__.py +0 -0
  47. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/cuda/cuda_analog_result.py +0 -0
  48. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/cuda/cuda_digital_result.py +0 -0
  49. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/__init__.py +0 -0
  50. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/keyring.py +0 -0
  51. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/models.py +0 -0
  52. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/qaas_analog_result.py +0 -0
  53. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/qaas_digital_result.py +0 -0
  54. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/qaas_settings.py +0 -0
  55. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/qaas_time_evolution_result.py +0 -0
  56. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/qaas_vqe_result.py +0 -0
  57. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/py.typed +0 -0
  58. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/utils/__init__.py +0 -0
  59. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/utils/openqasm2.py +0 -0
  60. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/utils/serialization.py +0 -0
  61. {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/yaml.py +0 -0
  62. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/__init__.py +0 -0
  63. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/analog/__init__.py +0 -0
  64. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/analog/test_analog_result.py +0 -0
  65. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/analog/test_hamiltionian.py +0 -0
  66. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/analog/test_schedule.py +0 -0
  67. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/analog/test_time_evolution.py +0 -0
  68. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/common/__init__.py +0 -0
  69. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/common/test_scipy_optimizer.py +0 -0
  70. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/digital/__init__.py +0 -0
  71. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/digital/test_ansatz.py +0 -0
  72. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/digital/test_circuit.py +0 -0
  73. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/digital/test_gates.py +0 -0
  74. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/digital/test_vqe.py +0 -0
  75. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/extras/__init__.py +0 -0
  76. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/extras/test_cuda_backend.py +0 -0
  77. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/test_placeholder.py +0 -0
  78. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/utils/__init__.py +0 -0
  79. {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/utils/test_openqasm2.py +0 -0
@@ -42,7 +42,7 @@ jobs:
42
42
 
43
43
  - name: Install the project
44
44
  run: uv sync --all-groups --all-extras
45
-
45
+
46
46
  - name: Ruff
47
47
  run: uv run ruff check --output-format=github .
48
48
 
@@ -14,3 +14,7 @@ wheels/
14
14
 
15
15
  # Folder for storing user files
16
16
  .tmp
17
+
18
+ # development environment files
19
+ .vscode
20
+ .coverage
@@ -1,9 +1,43 @@
1
+ # Qilisdk 0.1.4 (2025-06-18)
2
+
3
+ ### Bugfixes
4
+
5
+ - Removed manual installation of CUDA-Q for the tests and the code quality workflows. ([PR #40](https://github.com/qilimanjaro-tech/qilisdk/pulls/40))
6
+
7
+
8
+ # Qilisdk 0.1.3 (2025-05-07)
9
+
10
+ ### Bugfixes
11
+
12
+ - Made `pydantic` pass to be a mandatory requirement, and not only for qaas as before. Solving a problem with installation overseen in previous PRs.
13
+
14
+ ([PR #29](https://github.com/qilimanjaro-tech/qilisdk/pulls/29))
15
+
16
+ - Made several small changes to the `QuantumObject` class and logic. The two main changes are:
17
+ - The first concerns the trace norm which was incorrectly implemented before.
18
+ - The second concerns changing the modulus of 2 check for the Hilbert Space size, to a a pow(2) check.
19
+
20
+ ([PR #30](https://github.com/qilimanjaro-tech/qilisdk/pulls/30))
21
+
22
+ - Solved problems with ``Cudaq`` backend:
23
+ - Updated ``Cudaq`` to version 0.10.0 to fix issues encountered in version 0.9.1
24
+ - Migrated ``CudaBackend`` to use the new version of ``Cudaq``
25
+
26
+ ([PR #31](https://github.com/qilimanjaro-tech/qilisdk/pulls/31))
27
+
28
+ ### Misc
29
+
30
+ - Transformed hardcoded `PUBLIC URL` into an environment variable lookup that defaults to the hardcoded value
31
+
32
+ ([PR #32](https://github.com/qilimanjaro-tech/qilisdk/pulls/32))
33
+
34
+
1
35
  # Qilisdk 0.1.2 (2025-04-22)
2
36
 
3
37
  ### Misc
4
38
 
5
39
  - Improved `QaaSBacked` functionality to include methods for executing digital and analog algorithms.
6
-
40
+
7
41
  [PR #27](https://github.com/qilimanjaro-tech/qilisdk/pulls/27)
8
42
 
9
43
 
@@ -66,6 +100,7 @@
66
100
  ```
67
101
 
68
102
  ([PR #2](https://github.com/qilimanjaro-tech/qilisdk/pulls/2))
103
+
69
104
  - Introduces the `Hamiltonian` class as a central component for Pauli-based operator arithmetic, with a flyweight pattern for single-qubit operators. Internally stores terms as a dictionary mapping tuples of `PauliOperator` objects to complex coefficients.
70
105
 
71
106
  **Key Features**
@@ -130,6 +165,7 @@
130
165
  This release provides a robust framework for Pauli-operator arithmetic, scalar integration, and canonical simplification, forming a foundation for higher-level quantum analog functionality.
131
166
 
132
167
  ([PR #3](https://github.com/qilimanjaro-tech/qilisdk/pulls/3))
168
+
133
169
  - Added the `Optimizer` abstract base class and its concrete subclass `SciPyOptimizer`. The `SciPyOptimizer` class wraps `scipy.optimize.minimize` to optimize cost functions while supporting extra keyword arguments such as Jacobian, bounds, etc. This implementation provides a structured way to perform optimization and access optimal parameters via the `optimal_parameters` property.
134
170
 
135
171
  ### Code Example
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qilisdk
3
- Version: 0.1.2
3
+ Version: 0.1.4
4
4
  Summary: qilisdk is a Python framework for writing digital and analog quantum algorithms and executing them across multiple quantum backends. Its modular design streamlines the development process and enables easy integration with a variety of quantum platforms.
5
5
  Author-email: Qilimanjaro Quantum Tech <info@qilimanjaro.tech>
6
6
  License-File: LICENCE
@@ -21,15 +21,15 @@ Classifier: Topic :: Scientific/Engineering :: Quantum Computing
21
21
  Requires-Python: >=3.10
22
22
  Requires-Dist: dill>=0.3.9
23
23
  Requires-Dist: numpy>=2.2.4
24
+ Requires-Dist: pydantic-settings>=2.8.0
25
+ Requires-Dist: pydantic>=2.10.6
24
26
  Requires-Dist: ruamel-yaml>=0.18.10
25
27
  Requires-Dist: scipy>=1.15.1
26
28
  Provides-Extra: cuda
27
- Requires-Dist: cudaq==0.9.1; extra == 'cuda'
29
+ Requires-Dist: cuda-quantum-cu12; extra == 'cuda'
28
30
  Provides-Extra: qaas
29
31
  Requires-Dist: httpx>=0.28.1; extra == 'qaas'
30
32
  Requires-Dist: keyring>=25.6.0; extra == 'qaas'
31
- Requires-Dist: pydantic-settings>=2.8.0; extra == 'qaas'
32
- Requires-Dist: pydantic>=2.10.6; extra == 'qaas'
33
33
  Description-Content-Type: text/markdown
34
34
 
35
35
  # QiliSDK
@@ -227,7 +227,7 @@ For analog simulations, the new `TimeEvolution` and `Schedule` classes allow you
227
227
 
228
228
  ```python
229
229
  import numpy as np
230
- from qilisdk.analog import TimeEvolution, Schedule, tensor, ket, X, Z, Y
230
+ from qilisdk.analog import Schedule, TimeEvolution, ket, X, Z, Y, tensor_prod
231
231
  from qilisdk.extras import CudaBackend
232
232
 
233
233
  T = 10 # Total evolution time
@@ -251,16 +251,15 @@ schedule = Schedule(
251
251
  )
252
252
 
253
253
  # Prepare an initial state (equal superposition)
254
- state = tensor([(ket(0) + ket(1)).unit() for _ in range(nqubits)]).unit()
254
+ state = tensor_prod([(ket(0) + ket(1)).unit() for _ in range(nqubits)]).unit()
255
255
 
256
256
  # Perform time evolution on the CUDA backend with observables to monitor
257
257
  time_evolution = TimeEvolution(
258
- backend=CudaBackend(),
259
258
  schedule=schedule,
260
259
  initial_state=state,
261
260
  observables=[Z(0), X(0), Y(0)],
262
261
  )
263
- results = time_evolution.evolve(store_intermediate_results=True)
262
+ results = time_evolution.evolve(backend=CudaBackend(), store_intermediate_results=True)
264
263
  print("Time Evolution Results:", results)
265
264
  ```
266
265
 
@@ -193,7 +193,7 @@ For analog simulations, the new `TimeEvolution` and `Schedule` classes allow you
193
193
 
194
194
  ```python
195
195
  import numpy as np
196
- from qilisdk.analog import TimeEvolution, Schedule, tensor, ket, X, Z, Y
196
+ from qilisdk.analog import Schedule, TimeEvolution, ket, X, Z, Y, tensor_prod
197
197
  from qilisdk.extras import CudaBackend
198
198
 
199
199
  T = 10 # Total evolution time
@@ -217,16 +217,15 @@ schedule = Schedule(
217
217
  )
218
218
 
219
219
  # Prepare an initial state (equal superposition)
220
- state = tensor([(ket(0) + ket(1)).unit() for _ in range(nqubits)]).unit()
220
+ state = tensor_prod([(ket(0) + ket(1)).unit() for _ in range(nqubits)]).unit()
221
221
 
222
222
  # Perform time evolution on the CUDA backend with observables to monitor
223
223
  time_evolution = TimeEvolution(
224
- backend=CudaBackend(),
225
224
  schedule=schedule,
226
225
  initial_state=state,
227
226
  observables=[Z(0), X(0), Y(0)],
228
227
  )
229
- results = time_evolution.evolve(store_intermediate_results=True)
228
+ results = time_evolution.evolve(backend=CudaBackend(), store_intermediate_results=True)
230
229
  print("Time Evolution Results:", results)
231
230
  ```
232
231
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "qilisdk"
3
- version = "0.1.2"
3
+ version = "0.1.4"
4
4
  description = "qilisdk is a Python framework for writing digital and analog quantum algorithms and executing them across multiple quantum backends. Its modular design streamlines the development process and enables easy integration with a variety of quantum platforms."
5
5
  readme = "README.md"
6
6
  authors = [{name = "Qilimanjaro Quantum Tech", email = "info@qilimanjaro.tech"}]
@@ -26,17 +26,17 @@ dependencies = [
26
26
  "numpy>=2.2.4",
27
27
  "ruamel-yaml>=0.18.10",
28
28
  "scipy>=1.15.1",
29
+ "pydantic>=2.10.6",
30
+ "pydantic-settings>=2.8.0",
29
31
  ]
30
32
 
31
33
  [project.optional-dependencies]
32
34
  cuda = [
33
- "cudaq==0.9.1",
35
+ "cuda-quantum-cu12",
34
36
  ]
35
37
  qaas = [
36
38
  "httpx>=0.28.1",
37
39
  "keyring>=25.6.0",
38
- "pydantic>=2.10.6",
39
- "pydantic-settings>=2.8.0",
40
40
  ]
41
41
 
42
42
  [dependency-groups]
@@ -55,6 +55,9 @@ dev = [
55
55
  requires = ["hatchling"]
56
56
  build-backend = "hatchling.build"
57
57
 
58
+ [tool.uv.sources]
59
+ cudaq = { git = "https://github.com/NVIDIA/cuda-quantum", tag = "0.11.0"}
60
+
58
61
  [tool.ruff]
59
62
  line-length = 120
60
63
  output-format = "concise"
@@ -14,7 +14,7 @@
14
14
 
15
15
  from .algorithms import TimeEvolution
16
16
  from .hamiltonian import Hamiltonian, I, X, Y, Z
17
- from .quantum_objects import QuantumObject, basis, bra, expect, ket, tensor
17
+ from .quantum_objects import QuantumObject, basis_state, bra, expect_val, ket, tensor_prod
18
18
  from .schedule import Schedule
19
19
 
20
20
  __all__ = [
@@ -26,9 +26,9 @@ __all__ = [
26
26
  "X",
27
27
  "Y",
28
28
  "Z",
29
- "basis",
29
+ "basis_state",
30
30
  "bra",
31
- "expect",
31
+ "expect_val",
32
32
  "ket",
33
- "tensor",
33
+ "tensor_prod",
34
34
  ]