Skip to main content

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.

Project description

QiliSDK

Python Versions PyPI Version Code Coverage License Docs DOI

QiliSDK is an open-source Python framework for designing and executing analog, digital, and hybrid quantum algorithms. Its modular structure unifies circuit-based and Hamiltonian-based workflows within a single API. It provides high-level abstractions for gates, circuits, Hamiltonians, and optimizers, while remaining fully backend-agnostic allowing a seamless switch between CPU, GPU, or QPU execution.


Table of Contents


Installation

QiliSDK is available via PyPI. You can install the core package as well as optional extras for additional features.

Base Installation

Install the core QiliSDK package using pip:

pip install qilisdk

Optional Dependencies: speqtrum, cuda, qutip

QiliSDK supports optional modules for additional functionality:

  • SpeQtrum: To interface with Qilimanjaro’s cloud-based quantum services, install the Speqtrum optional dependency:

    pip install qilisdk[speqtrum]
    
  • CUDA Accelerated Simulator Backend: For GPU-accelerated quantum simulation using NVIDIA GPUs, install the CUDA extra:

    pip install qilisdk[cuda]
    
  • Qutip Simulator Backend: For GPU-accelerated quantum simulation using NVIDIA GPUs, install the CUDA extra:

    pip install qilisdk[qutip]
    

    Note: You can also install both optional dependencies using a single command:

    pip install qilisdk[cuda,qutip,speqtrum]
    

Usage

QiliSDK is designed to simplify both digital and analog quantum computing workflows. This guide provides example code snippets for creating quantum circuits, performing Hamiltonian arithmetic, optimization, simulation on various backends (including CUDA and cloud-based using Speqtrum), and using additional utility functions.

Digital Quantum Circuits

Create and simulate quantum circuits with a flexible gate framework. The following example demonstrates how to assemble a circuit, adjust gate parameters:

import numpy as np
from qilisdk.digital import Circuit, H, RX, CNOT, M

# Create a circuit with 2 qubits
circuit = Circuit(2)
circuit.add(H(0))  # Apply Hadamard on qubit 0
circuit.add(RX(0, theta=np.pi))  # Apply RX rotation on qubit 0
circuit.add(CNOT(0, 1))  # Add a CNOT gate between qubit 0 and 1

# Retrieve the current gate parameters
print("Initial parameters:", circuit.get_parameter_values())

# Update circuit parameters (e.g., update RX rotation angle)
circuit.set_parameter_values([2 * np.pi])

Hamiltonians

Utilize the Hamiltonian class for Pauli operator arithmetic. Build expressions, iterate through terms:

from qilisdk.analog import Hamiltonian, X, Y, Z, I

# Build a Hamiltonian expression using Pauli operators
H_expr = (Z(0) + X(0)) * (Z(0) - X(0))
print("Hamiltonian Expression:", H_expr)

# Iterate over Hamiltonian terms
for coeff, ops in H_expr:
    print("Coefficient:", coeff, "Operators:", ops)

print("-"*10)
# export hamiltonians to matrices
print("Sparse Matrix from Hamiltonian: \n", H_expr.to_matrix()) # sparse matrix  
# the returned matrix is sparse by default to get the dense representation call .toarray()

Optimizers

Run optimization routines using the SciPyOptimizer and integrate them with a variational algorithm (VQE). In the example below, a simple quadratic cost function is minimized:

from qilisdk.optimizers import SciPyOptimizer


def cost_function(params):
    # A simple quadratic cost: minimum at [1, 1, 1]
    return sum((p - 1) ** 2 for p in params)


# Initialize the optimizer with the BFGS method
optimizer = SciPyOptimizer(method="BFGS")
initial_parameters = [0, 0, 0]
parameter_bounds = [(0, 1), (0, 1), (0, 1)]
result = optimizer.optimize(cost_function, initial_parameters, parameter_bounds)

print("Optimal cost:", result.optimal_cost)
print("Optimal Parameters:", result.optimal_parameters)

Qilimanjaro SpeQtrum

QiliSDK includes a client for interacting with Qilimanjaro's SpeQtrum platform. This module supports secure login and a unified interface for both digital circuits and analog evolutions:

from qilisdk.backends import CudaBackend, CudaSamplingMethod
from qilisdk.digital import Circuit, H, M
from qilisdk.functionals import Sampling
from qilisdk.speqtrum import SpeQtrum


# Build a single-qubit circuit
circuit = Circuit(nqubits=1)
circuit.add(H(0))
circuit.add(M(0))

# Login to QaaSBackend with credentials (or use environment variables)
# This only needs to be run once.
SpeQtrum.login(username="YOUR_USERNAME", apikey="YOUR_APIKEY")

# Instantiate QaaSBackend
client = SpeQtrum()

# Execute a pre-built circuit (see Digital Quantum Circuits section)
# make sure to select the device (you can list available devices using ``client.list_devices()``)
job_id = client.submit(Sampling(circuit, 1000), device="SELECTED_DEVICE")
print("job id:", job_id)
print("job status:", client.get_job(job_id).status)
print("job result:", client.get_job(job_id).result)

Sample a quantum Circuit Using a CUDA-Accelerated Simulator

For users with NVIDIA GPUs, the CudaBackend provides GPU-accelerated simulation using several simulation methods. For example, using the TENSOR_NETWORK method:

from qilisdk.backends import CudaBackend, CudaSamplingMethod
from qilisdk.digital import Circuit, H, M
from qilisdk.functionals import Sampling

# Build a single-qubit circuit
circuit = Circuit(nqubits=1)
circuit.add(H(0))
circuit.add(M(0))

# Initialize CudaBackend with the TENSOR_NETWORK simulation method
backend = CudaBackend(sampling_method=CudaSamplingMethod.TENSOR_NETWORK)
results = backend.execute(Sampling(circuit))
print("CUDA Backend Results:", results)

Time Evolution using Qutip

For analog simulations, the TimeEvolution and unified Schedule classes allow you to simulate time-dependent quantum dynamics. The following example uses callable coefficients defined over an interval to interpolate between two Hamiltonians on a Qutip backend:

from qilisdk.analog import Schedule, X, Z, Y
from qilisdk.core import ket, tensor_prod
from qilisdk.backends import QutipBackend
from qilisdk.functionals import TimeEvolution

# Define total time and timestep
T = 100.0
dt = 0.1
nqubits = 1

# Define Hamiltonians
Hx = sum(X(i) for i in range(nqubits))
Hz = sum(Z(i) for i in range(nqubits))

# Build a time‑dependent schedule
schedule = Schedule(
    hamiltonians={"hx": Hx, "hz": Hz},
    coefficients={
        "hx": {(0.0, T): lambda t: 1 - t / T},
        "hz": {(0.0, T): lambda t: t / T},
    },
    dt=dt,
)

# draw the schedule
schedule.draw()

# Prepare an equal superposition initial state
initial_state = tensor_prod([(ket(0) - ket(1)).unit() for _ in range(nqubits)]).unit()

# Create the TimeEvolution functional
time_evolution = TimeEvolution(
    schedule=schedule,
    initial_state=initial_state,
    observables=[Z(0), X(0), Y(0)],
    nshots=100,
    store_intermediate_results=False,
)

# Execute on Qutip backend and inspect results
backend = QutipBackend()
results = backend.execute(time_evolution)
print(results)

Variational Programs

The VariationalProgram allows the user to optimized parameterized functionals, including Sampling and TimeEvolution.

Here you find an example of building a Variational Quantum Eigensolver (VQE). To do this we need a circuit ansatz, cost function to optimize, and classical optimizer. Below is an illustrative example that sets up a VQE instance using a hardware-efficient ansatz and the SciPy optimizer:

from qilisdk.digital.gates import U2, CNOT
from qilisdk.optimizers import SciPyOptimizer
from qilisdk.core.model import Model
from qilisdk.core.variables import LEQ, BinaryVariable
from qilisdk.digital.ansatz import HardwareEfficientAnsatz
from qilisdk.functionals import VariationalProgram, Sampling
from qilisdk.backends import CudaBackend
from qilisdk.cost_functions import ModelCostFunction


## Define the model

model = Model("Knapsack")

values = [2, 3, 7]
weights = [1, 3, 3]
max_weight = 4
b = [BinaryVariable(f"b{i}") for i in range(len(values))]

obj = sum(b[i] * values[i] for i in range(len(values)))
model.set_objective(obj, "obj")

con = LEQ(sum(b[i] * weights[i] for i in range(len(weights))), max_weight)

model.add_constraint("max_weight", con)

## Define the Ansatz:
nqubits = 3
ansatz = HardwareEfficientAnsatz(
    nqubits=nqubits, layers=2, connectivity="Linear", structure="grouped", one_qubit_gate=U2, two_qubit_gate=CNOT
)

## Define the Optimizer
optimizer = SciPyOptimizer(method="Powell")

## Build the VQE object
vqe = VariationalProgram(
    functional=Sampling(ansatz),
    optimizer=optimizer,
    cost_function=ModelCostFunction(model),
)

## Define the Backend 
backend = CudaBackend()

## Execute the VQE to find the optimal parameters
result = backend.execute(vqe)

## Sample the circuit using the optimal parameters
ansatz.set_parameter_values(result.optimal_parameters)
results = backend.execute(Sampling(ansatz))

## Print the probabilities
print(results.get_probabilities())

Open QASM Serialization

Serialize and deserialize quantum circuits using Open QASM 2.0 grammar. The utility functions below allow conversion to a QASM string or file and vice versa:

from qilisdk.digital import Circuit, CNOT, RX, H, M
from qilisdk.utils.openqasm2 import to_qasm2, from_qasm2, to_qasm2_file, from_qasm2_file

# Create a sample circuit
circuit = Circuit(3)
circuit.add(H(0))
circuit.add(CNOT(0, 1))
circuit.add(RX(2, theta=3.1415))
circuit.add(M(0, 1, 2))

print("Initial Circuit:")
circuit.draw()
# Serialize to QASM string
qasm_code = to_qasm2(circuit)
print("Generated QASM:")
print(qasm_code)

# Deserialize back to a circuit
reconstructed_circuit = from_qasm2(qasm_code)

# Save to and load from a file
to_qasm2_file(circuit, "circuit.qasm")
reconstructed_circuit = from_qasm2_file("circuit.qasm")
print()
print("Reconstructed Circuit:")
reconstructed_circuit.draw()

YAML Serialization

Easily save and restore circuits, Hamiltonians, simulation and execution results, and virtually any other class in YAML format using the provided serialization functions:

from qilisdk.digital import Circuit, H, CNOT, M
from qilisdk.utils.serialization import serialize, deserialize, serialize_to, deserialize_from

circuit = Circuit(2)
circuit.add(H(0))
circuit.add(CNOT(0, 1))
circuit.add(M(0, 1))

print("Initial Circuit:")
circuit.draw()

# Serialize a circuit to a YAML string
yaml_string = serialize(circuit)

# Deserialize back into a Circuit object
restored_circuit = deserialize(yaml_string, cls=Circuit)

# Alternatively, work with files:
serialize_to(circuit, "circuit.yml")
restored_circuit = deserialize_from("circuit.yml", cls=Circuit)
print()
print("Reconstructed Circuit:")
restored_circuit.draw()

OpenFermion Integration

QiliSDK can translate QubitOperator objects from OpenFermion to QiliSDK's Hamiltonian Objects and vice versa.

This code is available under an optional dependency that can be installed using pip install qilisdk[openfermion].

here is an example of the usage:

from openfermion.hamiltonians import jellium_model
from openfermion.transforms import fourier_transform, jordan_wigner
from openfermion.utils import Grid

from qilisdk.utils.openfermion import openfermion_to_qilisdk, qilisdk_to_openfermion

# Let's look at a very small model of jellium in 1D.
grid = Grid(dimensions=1, length=3, scale=1.0)
spinless = True

# Get the momentum Hamiltonian.
momentum_hamiltonian = jellium_model(grid, spinless)
momentum_qubit_operator = jordan_wigner(momentum_hamiltonian)
momentum_qubit_operator.compress()

# Fourier transform the Hamiltonian to the position basis.
position_hamiltonian = fourier_transform(momentum_hamiltonian, grid, spinless)
position_qubit_operator = jordan_wigner(position_hamiltonian)
position_qubit_operator.compress()

qilisdk_ham = openfermion_to_qilisdk(position_qubit_operator)
openfermion_ham = qilisdk_to_openfermion(qilisdk_ham)

Development

This section covers how to set up a local development environment for qilisdk, run tests, enforce code style, manage dependencies, and contribute to the project. We use a number of tools to maintain code quality and consistency:

  • uv for dependency management and packaging.
  • ruff for linting and code formatting.
  • ty for language server and static type checking.
  • towncrier for automated changelog generation.

Prerequisites

  • Python 3.10+ (we test against multiple versions, but 3.10 is the minimum for local dev).
  • Git for version control.
  • uv for dependency management.
  • A C++ compiler and CMake, which can be installed together on Ubuntu/Debian using:
    sudo apt install build-essential
    
    or on Windows via this guide.

Setup & Dependency Management

  1. Clone the repository:

    git clone https://github.com/qilimanjaro-tech/qilisdk.git
    cd qilisdk
    
  2. Install uv globally (if not already):

    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  3. Sync dependencies:

    • We maintain a pyproject.toml listing all dev and optional requirements.
    • To install the dev environment locally, run:
      uv sync
      
      This sets up a virtual environment and installs all pinned dependencies (including ruff, ty, towncrier, etc.).
    • To install extra dependencies such as CudaBackend, run:
      uv sync --extra cuda -extra ...
      
      This sets up a virtual environment and installs all pinned dependencies (previous), plus the specified extras. you can also install all the optional dependencies and groups by running;
      uv sync --all-extras --all-groups
      
      If you don't want to install QiliSim (normally installed by default):
      uv sync -Ccmake.define.qilism=OFF
      
  4. Activate the virtual environment:

    • uv typically creates and manages its own environment, e.g., .venv/.
    • Run:
      source .venv/bin/activate
      
      (Exact command can vary depending on your shell and OS.)

Now you can run all development commands (tests, linting, etc.) within this environment.

Testing

We use pytest for the test suite. After syncing dependencies and activating .venv, run:

pytest tests

To exercise the CUDA, qutip, and SpeQtrum backend tests, install the optional extras first (e.g., uv sync --all-extras).

Linting & Formatting

We enforce code style and best practices using ruff. ruff handles:

  • Lint checks (similar to flake8, pylint).
  • Formatting (similar to black or isort).
  • Automated fixes for certain issues.

To check linting:

ruff check

To automatically fix lint issues (where possible):

ruff check --fix

To automatically format your code:

ruff format

(We recommend running ruff check --fix and ruff format before committing any changes.)

To check the C++ code, compile with the debug flag:

uv pip install -v -e ./ -Ccmake.build-type=Debug

This will run clang-format and clang-tidy as well as a number of C++ compiler flags for debugging. For this you will need clang-tidy and clang-format installed, which can be done on Debian/Ubuntu with:

sudo apt-get install clang-format clang-tidy

It may also throw an error about not being able to find omp.h, if so, try:

sudo apt-get install libomp-dev

Type Checking

We use ty for static type checking. This helps ensure our code is type-safe and maintainable.

ty check

(We encourage developers to annotate new functions, classes, and methods with type hints.)

Changelog Management

We manage our changelog using towncrier. Instead of editing CHANGELOG.md directly, each pull request includes a small news fragment file in the changes/ directory describing the user-facing changes.

For example, if you create a PR with id #123 adding a new feature, you add:

changes/123.feature.rst

Inside this file, you briefly describe the new feature:

Added a new `cool_feature` in the `qilisdk.backends` module.

Instead of manually creating the file, you can run:

towncrier create --no-edit

When we cut a new release, we update the version in pyproject.toml file and run:

towncrier

This aggregates all the news fragments into the CHANGELOG.md under the new version and removes the used fragments.

Contributing

We welcome contributions! Here’s the workflow:

  1. Fork this repository and create a feature branch.
  2. Write your changes (code, docs, or tests).
  3. Add a news fragment (if applicable) in changes/ describing the user-facing impact.
  4. Run the following checks locally:
    ruff check --fix
    ruff format
    ty check
    pytest tests
    
  5. Commit and push your branch to your fork. pre-commit will also run the checks automatically.
  6. Open a Pull Request against the main branch here.

Our CI will run tests, linting, and type checks. Please make sure your branch passes these checks before requesting a review.


License

This project is licensed under the Apache License.


Acknowledgments

  • Thanks to all the contributors who help develop qilisdk!
  • uv for making dependency management smoother.
  • ruff, ty, and towncrier for their amazing tooling.

Feel free to open issues or pull requests if you have questions or contributions. Happy coding!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qilisdk-0.1.8.tar.gz (408.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

qilisdk-0.1.8-cp313-cp313-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.13Windows x86-64

qilisdk-0.1.8-cp313-cp313-win32.whl (2.4 MB view details)

Uploaded CPython 3.13Windows x86

qilisdk-0.1.8-cp313-cp313-manylinux_2_28_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

qilisdk-0.1.8-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (2.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

qilisdk-0.1.8-cp313-cp313-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

qilisdk-0.1.8-cp313-cp313-macosx_10_13_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

qilisdk-0.1.8-cp312-cp312-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.12Windows x86-64

qilisdk-0.1.8-cp312-cp312-win32.whl (2.4 MB view details)

Uploaded CPython 3.12Windows x86

qilisdk-0.1.8-cp312-cp312-manylinux_2_28_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

qilisdk-0.1.8-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (2.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

qilisdk-0.1.8-cp312-cp312-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

qilisdk-0.1.8-cp312-cp312-macosx_10_9_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

qilisdk-0.1.8-cp311-cp311-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.11Windows x86-64

qilisdk-0.1.8-cp311-cp311-win32.whl (2.4 MB view details)

Uploaded CPython 3.11Windows x86

qilisdk-0.1.8-cp311-cp311-manylinux_2_28_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

qilisdk-0.1.8-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (2.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

qilisdk-0.1.8-cp311-cp311-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

qilisdk-0.1.8-cp311-cp311-macosx_10_9_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

File details

Details for the file qilisdk-0.1.8.tar.gz.

File metadata

  • Download URL: qilisdk-0.1.8.tar.gz
  • Upload date:
  • Size: 408.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8.tar.gz
Algorithm Hash digest
SHA256 23b5d62d8fa73b4b315392ca2fa8c003bffb51bd64d6f89d004b2e1ca938b372
MD5 f61903a3839e9c38c97a9eb8e3cd50bf
BLAKE2b-256 af144df627695ffd0cc093a479dc3b954b5b2b196be6e4ca4d627bdf12117408

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 adefe6bba0e22781b54988b39e9b5dd14cfe0beff21be3cc53b99f9de87296b6
MD5 53e7e164cc0b0d596bd900ab931c5f65
BLAKE2b-256 ad05538d542029994e0fb222563f96b8bbac9d9fdb208116c9b8eef560a3887d

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp313-cp313-win32.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp313-cp313-win32.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 bff650794c573f279550febd38f5aaeba4b2d024b797e9a7c8e675e71d37ab8b
MD5 2a9054c9d05af2cbb00c40a3fcf41f8b
BLAKE2b-256 e7cee5351359868da5f1e5f65e6a91522fe3525ac1274e35343652d9d0e36182

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4806ca8255c4b0f0ad7eaef79942f707570e770c7f25de6e843d74dc10142394
MD5 2240333e4f2069ae8ad2cb4b8b8f7ee7
BLAKE2b-256 81fcc181e5adda3b1e3d9c4209bcdee17df82ca55f44aacb095809601d594749

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b565a8add9b02262b4bc43daf67a78a6e52104ac8bccddcecdf4ff9146ea184c
MD5 cb5698e5d4498d17add560faa4007856
BLAKE2b-256 5e5445371e056a488cf4fda2dcb2dbb07b8d4bc1392243f3478ebcbbabe29b07

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 775c00b70ef45359fb6918a1dd5d8d9ed76db8bf3c454f2e9f828a981a6eb348
MD5 4a6e94f547dcfd9337c8772d49bdbb73
BLAKE2b-256 30e9d4e72ac6bbf6f6dcb0de0eb142085b505cd205965a750f4c5aacb6d06899

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp313-cp313-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.13, macOS 10.13+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 0177fa3a70cac30f9360beb5b996c522f6d837b8de97c9d709aebdb82f6f1311
MD5 dafaa1e6626131ab376058d345d72771
BLAKE2b-256 58a54131206cf758c46a64d0d59a5d307790fa3b7b103b57ebeb64c5b27a6fb9

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a004a860034322d4e738680d90e7f035beea28d0453b169c0cf3ec0d671cba6c
MD5 21209048ca4805b50c235bf1c5c8efc0
BLAKE2b-256 478db127189d84370fcc90bf67df0cd6e3e2901937a7d2101c76ef9f2a70b731

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp312-cp312-win32.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp312-cp312-win32.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 f5e60d9ba6e26ac5a2372b80cc0a3222294f367b0e1e880f595f26db0c60f741
MD5 609f9c574d3db70808ddecf3e5cc4754
BLAKE2b-256 d90b4780334097383d99bddf2796a4377c059eabcc45efc970fde2fbbdea781b

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b7ebf3b2055acea70d3fb6834567fce2bd748844bc5677e7c841ac1abaa7f5b8
MD5 9d3049813a3f3f4d472a75bdfa0a2f3d
BLAKE2b-256 a1ccae93676fd7144a0311bc5b574fe751bfc131834a5853f3bda70e156f069a

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c8d200a613c7a12fd633a28de23211a445ff3aa942f65122effe4e67efc42560
MD5 4116ff8dc2619441b3868fe96ddaeca6
BLAKE2b-256 dbab756a9caae603c02d538977e25ed69d65bd004a9df0bab9cc6d6e12f487d4

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a92f05ca9a708155255794faf3e99cd06873e4285c2780d69a322828ac727264
MD5 2cb061fca39ae51180de5e76a716d3ee
BLAKE2b-256 756fa8a3c56c10f562837b309f50ad609ba62c35f2a563bcdbc0f6ae01a63a1c

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp312-cp312-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.12, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 678a2b5f11347c9e9bbcf8d2d341a253e700d00908c6a35d0798d3a5cf9ce5f7
MD5 8142b90f5e17f9d49d0ff8a4589cc4e7
BLAKE2b-256 990c4d69007389b49a1cba0c6b78b29ded3671be0f2b28a7203af869c762dd0f

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f893277874eae13d0f918f9eb16db9dff7ed37748bd93db4abb03a1c7744ebe2
MD5 c5fb949a094fa174344c915377cf3d89
BLAKE2b-256 ce5b42e354a38e078fe0647fe5dadbd2e74efd559002b709e8082546cd281d25

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp311-cp311-win32.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp311-cp311-win32.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 4bb7a6bef0d9400d4c00e996550e939bd97f0b1d737d2aff8a4845873066489e
MD5 322c9d737873afc2c362ad664c5544e6
BLAKE2b-256 816a534f5c044dd43da143c2d0d695ed842190290079a5af3a65fedf7e40296f

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 17e0ead77a210ad1d4087afd9677bdee39d36c54fc15bbf68e52790a55cca445
MD5 ea7cb81bdb8bc0c5696f11927fcb4707
BLAKE2b-256 2b18990ff05e51124a59138e76b295b686fa9b4cc13712863298bf935cb8d051

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3d5065af0389f257983171a96aa3a7fc6cca5d7e4c945d776ad74a9f03edf27b
MD5 dceb0ee945a16a75938e7b9383c1e387
BLAKE2b-256 dfb6ad1b2ec90697e856b270f91783738342925bce90e4cbae34c2110d5348c3

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8c891b55eff5c961fdae913cfac5b99ab0528c5694d756e0863a2ae85425a3a0
MD5 451ec90aa95d8b5f2afd6bae0ad6ad03
BLAKE2b-256 40c43e743b79b0521dda2962f12b6944c07f51f8e0003cc7761f0f8338f4850f

See more details on using hashes here.

File details

Details for the file qilisdk-0.1.8-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: qilisdk-0.1.8-cp311-cp311-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.11, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qilisdk-0.1.8-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 89cc433c65a6195fe1e1716ec6701b56d952c7976c55a00c49ee2708cbe8707c
MD5 eacb7be2cf5815fd0ecf2649d4b4a190
BLAKE2b-256 081c7ebcd8b5a7c684f7afca3a96c40183334558760f53a152c160711be8d4fb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page