Installation

Supported Python

at-py requires Python 3.12 or newer. CI currently exercises Python 3.12 and 3.13, which are the recommended development and release targets.

Core Install

The core package keeps the runtime dependency set small:

python -m pip install oalib-at-py

The PyPI distribution is named oalib-at-py; the Python import package remains at_py.

Runner Client

ATClient uses the at_runner Python gRPC client to talk to an at-runner service. Install the client from the public, pinned at-runner tag:

python -m pip install "at-runner @ git+https://github.com/jgebbie/at-runner.git@v0.3.0#subdirectory=client/python"

The client pin matches at_py.AT_RUNNER_GIT_REF and at_py.DEFAULT_AT_RUNNER_IMAGE. It is kept out of public PyPI metadata because PyPI packages should depend on normal index packages rather than VCS URLs.

From a checkout, create a virtual environment and install development tools:

python -m venv .venv
. .venv/bin/activate
python -m pip install -U pip
python -m pip install -e ".[dev]"

Optional Extras

Install only the extras you need:

python -m pip install "oalib-at-py[mat]"  # MATLAB .mat support

[mat] installs SciPy and h5py for classic MAT files and MATLAB v7.3 HDF5 files. Without this extra, MAT helpers raise ImportError with an install hint.

From a checkout, use python -m pip install -e ".[mat]" for the same optional dependencies.

Development Checks

Use these checks before opening a pull request or release:

ruff check .
pytest
sphinx-build -W -b html docs docs/_build
prek run --all-files

Integration tests require Docker, the pinned at_runner client, and access to the pinned runner image:

python -m pip install "at-runner @ git+https://github.com/jgebbie/at-runner.git@v0.3.0#subdirectory=client/python"
pytest -m integration