This release is a pre-release and may not be stable for production use.
Beaker-py
A lightweight pure-Python client for Beaker.
Installing
Installing with pip
beaker-py is available on PyPI. Just run
pip install beaker-py
Installing from source
To install beaker-py from source, first clone the repository:
git clone https://github.com/allenai/beaker.git
Then create or activate a Python virtual environment, and run:
cd beaker/bindings/python
make dev-install
Quick start
If you've already configured the Beaker command-line client,
beaker-py will find and use the existing configuration file (usually located at $HOME/.beaker/config.yml) or BEAKER_TOKEN environment variable.
Then you can instantiate the Beaker client with the .from_env() class method:
from beaker import Beaker
with Beaker.from_env() as beaker:
...
With the Python client, you can:
- Query Clusters with
beaker.cluster.*methods, e.g.beaker.cluster.get("ai2/jupiter-cirrascale-2"). - Manage Datasets with
beaker.dataset.*methods, e.g.beaker.dataset.create(dataset_name, source_dir). - Submit, track, and find Experiments with
beaker.experiment.*,beaker.workload.*, andbeaker.job.*methods, e.g.beaker.experiment.create(spec=spec, name=name). - Manage Workspaces with
beaker.workspace.*methods, e.g.beaker.workspace.create("ai2/new_workspace"). - Manage Secrets with
beaker.secret.*methods, e.g.beaker.secret.write(name, value).
Example workflow
Launch and follow an experiment like beaker-gantry does:
import time
from beaker import Beaker, BeakerExperimentSpec, BeakerJobPriority
with Beaker.from_env() as beaker:
# Build experiment spec...
spec = BeakerExperimentSpec.new(
description="beaker-py test run",
beaker_image="petew/hello-world",
priority=BeakerJobPriority.low,
preemptible=True,
)
# Create experiment workload...
workload = beaker.experiment.create(spec=spec)
# Wait for job to be created...
while (job := beaker.workload.get_latest_job(workload)) is None:
print("waiting for job to start...")
time.sleep(1.0)
# Follow logs...
print("Job logs:")
for job_log in beaker.job.logs(job, follow=True):
print(job_log.message.decode())
Development
After installing from source, you can run checks and tests locally with:
make checks
Releases
At the moment releases need to be published manually by following these steps:
- Ensure you've authenticated with PyPI through a
~/.pypircfile and have write permissions to the beaker-py project. - Ensure the target release version defined in
src/beaker/version.pyis correct, or change the version on the fly by adding theMakeargumentBEAKER_PY_VERSION=X.X.Xto the command in the next step. - Run
make publishfor a stable release ormake publish-nightlyfor a nightly pre-release.
Metadata
Release files for beaker-py 2.0.1.dev20250430
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| beaker_py-2.0.1.dev20250430.tar.gz | 71.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| beaker_py-2.0.1.dev20250430-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 151.7 kB
Release files / beaker_py-2.0.1.dev20250430.tar.gz
| Download URL | beaker_py-2.0.1.dev20250430.tar.gz |
|---|---|
| Size | 71.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
02200216a7b362a127be152e7a0c2d122c2d3be124bd01f5b76dc6b5712a3a3d
|
|
BLAKE2b-256 checksum How to use checksums |
efd26a3806c5d55b19d1fba9b63bc13c237ab8080aefb74745096686d12fb324
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.13
|
Release files / beaker_py-2.0.1.dev20250430-py3-none-any.whl
| Download URL | beaker_py-2.0.1.dev20250430-py3-none-any.whl |
|---|---|
| Size | 79.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
468e1ab68394e2f50131eef8c8c147a6fdc475aef1da92ca82da59ae0b7f0daa
|
|
BLAKE2b-256 checksum How to use checksums |
19a31d9b6645f02314ec40bb4fe73ca6afcb957c661c114b40ed34d6e6f78743
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.13
|