Skip to main content

A Python Beaker client

Project description

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 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 instantiate the Beaker client with the .from_env() class method:

from beaker import Beaker

with Beaker.from_env() as beaker:
    ...

Then 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.*, and beaker.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:

  1. Ensure you've authenticated with PyPI through a ~/.pypirc file and have write permissions to the beaker-py project.
  2. Ensure the target release version defined in src/beaker/version.py is correct, or change the version on the fly by adding the Make argument BEAKER_PY_VERSION=X.X.X to the command in the next step.
  3. Run make publish for a stable release or make publish-nightly for a nightly pre-release.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

beaker_py-2.0.1.dev20250429.tar.gz (70.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

beaker_py-2.0.1.dev20250429-py3-none-any.whl (78.0 kB view details)

Uploaded Python 3

File details

Details for the file beaker_py-2.0.1.dev20250429.tar.gz.

File metadata

  • Download URL: beaker_py-2.0.1.dev20250429.tar.gz
  • Upload date:
  • Size: 70.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.13

File hashes

Hashes for beaker_py-2.0.1.dev20250429.tar.gz
Algorithm Hash digest
SHA256 4eeb8e48ae99900065662bdfc5deec77f0b5a273494902d0e95f81c171b8f3e7
MD5 a0499f4a3f8eb190998c9c7a997c5311
BLAKE2b-256 7b6298771948a4175e45d25ca135fcb0458badff9b4a7e623d8ce2ffa2427105

See more details on using hashes here.

File details

Details for the file beaker_py-2.0.1.dev20250429-py3-none-any.whl.

File metadata

File hashes

Hashes for beaker_py-2.0.1.dev20250429-py3-none-any.whl
Algorithm Hash digest
SHA256 c138ae23cb87b066b5e745da1e54b53ce94938435833fd21a69ccd3cf5aa117c
MD5 13318edf5c061ca3c3423d8d63efcb0f
BLAKE2b-256 3e434d04dacbb4ed72b0946657d5c86d49e69ca4bc87826a63c9e0d8e46d6727

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page