Metadata-Version: 2.4
Name: qciconnect
Version: 0.11.0
Summary: The official SDK to the DLR's quantum computing platform QCI Connect.
Keywords: quantum computing, SDK, Software Development Kit, QCI Connect
Author: DLR-SC, David da Costa, Elisabeth Lobe, Thomas Keitzl, Johannes Renkl, Gary Schmiedinghoff, Thomas Stehle, Lukas Windgätter
Author-email: DLR-SC <qc-software@dlr.de>
License-Expression: Apache-2.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python
Classifier: Operating System :: OS Independent
Requires-Dist: qciconnect-common~=0.6.0
Requires-Dist: qciconnect-client~=1.3.0
Requires-Dist: qciconnect-miniserver~=0.6.0
Requires-Dist: qciconnect-alf~=0.4.0
Requires-Dist: qciconnect-applib~=0.4.0
Requires-Python: >=3.12
Description-Content-Type: text/markdown

[<picture><source media="(prefers-color-scheme: dark)" srcset="https://gitlab.com/dlr-sc-qc/qciconnect-sdk/alf/-/raw/main/docs/_static/logo_sdk.svg" height="100"><source media="(prefers-color-scheme: light)" srcset="https://gitlab.com/dlr-sc-qc/qciconnect-sdk/alf/-/raw/main/docs/_static/logo_sdk_dark.svg" height="100">
  <img alt="QCI Connect SDK" src="https://gitlab.com/dlr-sc-qc/qciconnect-sdk/alf/-/raw/main/docs/_static/logo_sdk.svg" height="100"></picture>](https://dlr-sc-qc.gitlab.io/qciconnect-sdk/landing-page/)

# QCI Connect Software Development Kit (SDK)

The software development kit (SDK) of the [QCI Connect](https://qci.dlr.de/connect/) platform is a suite of tools to
- programmatically access its resources (QPUs and HPC simulators),
- conveniently develop applications with abstracted classes,
- locally run and develop algorithms and applications,
- prototype them with the same interface as the platform, and
- prepare them for being made available on the platform.

This release contains the five components `qciconnect.common`, `qciconnect.client`, `qciconnect.alf`, `qciconnect.applib` and `qciconnect.miniserver`. 

## Documentation

You can find more information and technical documentations of the components via the [QCI Connect SDK landing page](https://dlr-sc-qc.gitlab.io/qciconnect-sdk/landing-page/).

## Quick Start

### Pip Installation

The easiest way to install the SDK is via

```bash
pip install qciconnect
```

The SDK components can also be installed separately via

```bash
pip install qciconnect-alf
pip install qciconnect-applib
pip install qciconnect-client
pip install qciconnect-miniserver
```

### Tutorial Notebooks for your Use Case

#### I want to connect to QCI Connect QPUs, Simulators and Compilers
- [Connect to QCI Connect with the API Client](https://dlr-sc-qc.gitlab.io/qciconnect-sdk/api-client/examples/example_remote.html)
- [Use the ALF interfaces for sampling und estimating both locally and on QCI Connect](https://dlr-sc-qc.gitlab.io/qciconnect-sdk/alf/tutorials/Tutorial%2001%20-%20Submit%20Jobs.html)

#### I want to develop Compilers for QCI Connect
- [Build and run your compilers locally on the miniserver](https://gitlab.com/dlr-sc-qc/qciconnect-sdk/miniserver)
- [Access them with the API Client](https://dlr-sc-qc.gitlab.io/qciconnect-sdk/api-client/examples/example_local.html)

#### I want to use/create Error Mitigation Schemes
- [Use the mitigation samplers/estimators in ALF](https://dlr-sc-qc.gitlab.io/qciconnect-sdk/alf/tutorials/Tutorial%2002%20-%20Implement%20and%20Use%20Error%20Mitigation%20Schemes.html)

#### I want to create Quantum Applications
- [Build Apps based on ALF](https://dlr-sc-qc.gitlab.io/qciconnect-sdk/alf/tutorials/Tutorial%2003%20-%20Implement%20and%20Run%20Algorithms.html#)

#### I want to use existing Quantum Applications
- [Check out the tutorial notebooks for the core AppLib](https://dlr-sc-qc.gitlab.io/qciconnect-sdk/applib/usage.html#tutorials)

## Working on Source Code (Dev Mode)

Clone the repository (or download the `.tar.gz` file), initialize the git submodules, then install dependencies. 

We recommend using [ultraviolet](https://docs.astral.sh/uv) ([installation guide](https://docs.astral.sh/uv/getting-started/installation/#installation-methods)).

```bash
git submodule update --init
uv sync
git submodule foreach "uv pip install -e ."
```

This installs the project, its runtime and development dependencies, and the QCIConnect submodules as editable local dependencies.
Recursive submodule initialization is not required. For example, the client submodule uses the root checkout at `submodules/qciconnect/common`, not a nested checkout below `submodules/qciconnect/client`.

You can now [activate](https://docs.python.org/3/library/venv.html#how-venvs-work) the `.venv` in the source directory or use uv to run commands in the `.venv`, e. g., `uv run --no-sync python my_script.py`. 

Be careful: every time you run `uv sync` to update the venv, the local submodules need to be reinstalled again (`git submodule foreach "uv pip install -e ."`); otherwise, the venv would use the latest releases on PyPI instead of the local submodules, so any custom changes or checkouts you do in the submodules would be invisible to the venv. 

To avoid typing out both commands, you can run the script `update-venv` from within the activated venv (the script is provided via `qciconnect-common`). It performs both steps at once and provides options to exclude (`--exclude <submodule_list>`) specific submodules.

In short: every time you would typically run `uv sync`, you should instead run
```bash
update-venv
```
