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.
- {qilisdk-0.1.2 → qilisdk-0.1.4}/.github/workflows/code_quality.yml +1 -1
- {qilisdk-0.1.2 → qilisdk-0.1.4}/.gitignore +4 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/CHANGELOG.md +37 -1
- {qilisdk-0.1.2 → qilisdk-0.1.4}/PKG-INFO +7 -8
- {qilisdk-0.1.2 → qilisdk-0.1.4}/README.md +3 -4
- {qilisdk-0.1.2 → qilisdk-0.1.4}/pyproject.toml +7 -4
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/__init__.py +4 -4
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/quantum_objects.py +214 -104
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/__init__.py +2 -2
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/cuda/cuda_backend.py +5 -6
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/qaas_backend.py +2 -1
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/analog/test_quantum_objects.py +67 -23
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/utils/test_serialization.py +2 -2
- {qilisdk-0.1.2 → qilisdk-0.1.4}/uv.lock +926 -919
- {qilisdk-0.1.2 → qilisdk-0.1.4}/.github/workflows/publish.yml +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/.github/workflows/tests.yml +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/.pre-commit-config.yaml +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/.python-version +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/LICENCE +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/__init__.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/__init__.pyi +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/_optionals.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/algorithms.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/analog_backend.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/analog_result.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/exceptions.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/hamiltonian.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/analog/schedule.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/common/__init__.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/common/algorithm.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/common/backend.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/common/model.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/common/optimizer.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/common/optimizer_result.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/common/result.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/__init__.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/ansatz.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/circuit.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/digital_algorithm.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/digital_backend.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/digital_result.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/exceptions.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/gates.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/digital/vqe.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/__init__.pyi +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/cuda/__init__.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/cuda/cuda_analog_result.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/cuda/cuda_digital_result.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/__init__.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/keyring.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/models.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/qaas_analog_result.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/qaas_digital_result.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/qaas_settings.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/qaas_time_evolution_result.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/extras/qaas/qaas_vqe_result.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/py.typed +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/utils/__init__.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/utils/openqasm2.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/utils/serialization.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/src/qilisdk/yaml.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/__init__.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/analog/__init__.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/analog/test_analog_result.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/analog/test_hamiltionian.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/analog/test_schedule.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/analog/test_time_evolution.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/common/__init__.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/common/test_scipy_optimizer.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/digital/__init__.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/digital/test_ansatz.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/digital/test_circuit.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/digital/test_gates.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/digital/test_vqe.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/extras/__init__.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/extras/test_cuda_backend.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/test_placeholder.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/utils/__init__.py +0 -0
- {qilisdk-0.1.2 → qilisdk-0.1.4}/tests/utils/test_openqasm2.py +0 -0
|
@@ -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.
|
|
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:
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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.
|
|
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
|
-
"
|
|
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,
|
|
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
|
-
"
|
|
29
|
+
"basis_state",
|
|
30
30
|
"bra",
|
|
31
|
-
"
|
|
31
|
+
"expect_val",
|
|
32
32
|
"ket",
|
|
33
|
-
"
|
|
33
|
+
"tensor_prod",
|
|
34
34
|
]
|