Metadata-Version: 2.4
Name: qciconnect-alf
Version: 0.4.0
Summary: Application library framework of DLR QCI Connect quantum computing platform.
Keywords: quantum computing,QCI Connect SDK,application library framework,ALF
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-client>=1.2.1
Requires-Dist: bitarray>=3.4.3
Requires-Dist: networkx>=3.5
Requires-Dist: pandas>=2.3.0
Requires-Dist: qiskit>=2.1.0
Requires-Dist: qiskit-qasm3-import>=0.6.0
Requires-Dist: cirq-core>=1.6.1
Requires-Dist: ply>=3.11
Requires-Dist: pyzx>=0.10.3
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/alf/-/raw/main/docs/_static/logo.png" alt="ALF Documentation" height="100"/>](https://dlr-sc-qc.gitlab.io/qciconnect-sdk/alf/)

# Application Library Framework (ALF)

This is the python framework for developing apps
for 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/).

It contains classes to streamline implementing quantum algorithms, error mitigation schemes, and circuit building strategies for QCI Connect and to unify problems and results for cross-compatibility of applications.

## Documentation

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

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-alf`
- Take a look at the [tutorial notebooks](https://dlr-sc-qc.gitlab.io/qciconnect-sdk/alf/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 ALF, 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 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
```
