Metadata-Version: 2.4
Name: qciconnect-applib
Version: 0.4.0
Summary: Core application library of DLR QCI Connect quantum computing platform.
Keywords: quantum computing,QCI Connect SDK,application library,AppLib
Author: DLR-SC, David da Costa, Thomas Keitzl, Elisabeth Lobe, 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-alf>=0.3.0
Requires-Dist: bitarray>=3.4.3
Requires-Dist: matplotlib>=3.10.3
Requires-Dist: notebook>=7.4.4
Requires-Dist: pandas>=2.3.2
Requires-Dist: pylatexenc>=2.11
Requires-Dist: qiskit>=2.1.0
Requires-Dist: qiskit-qasm3-import>=0.6.0
Requires-Python: >=3.12
Description-Content-Type: text/markdown

[<img src="https://gitlab.com/dlr-sc-qc/qciconnect-sdk/commons/-/raw/main/docs/_static/logo_sdk.svg" alt="QCI Connect SDK" height="100"/>](https://dlr-sc-qc.gitlab.io/qciconnect-sdk/landing-page/) &nbsp;
[<img src="https://gitlab.com/dlr-sc-qc/qciconnect-sdk/applib/-/raw/main/docs/_static/logo.png" alt="AppLib Documentation" height="100"/>](https://dlr-sc-qc.gitlab.io/qciconnect-sdk/applib/)

# Application Library (AppLib)

This python package contains the core application library 
of the [QCI Connect](https://qci.dlr.de/connect/) platform 
of the [German Aerospace Center (DLR)](https://www.dlr.de/).
It is a component of the [QCI Connect SDK](https://pypi.org/project/qciconnect/).

The library contains concrete implementations that are based on the Application Library Framework (ALF).

## Documentation

You can find the documentations [here](https://dlr-sc-qc.gitlab.io/qciconnect-sdk/applib/).

The documentation files are also included in the source and can be built with the script `dev_tools/build_docs`.

## Quick Start (Pip Installation)

- Run `pip install qciconnect-applib`
- Take a look at the [tutorial notebooks](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
git submodule foreach "uv pip install -e ."
```
This installs AppLib, its runtime dependencies, the dev/test dependencies, and the QCIConnect submodules as editable local dependencies.
Recursive submodule initialization is not required. 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
```