Skip to main content

Beaker-py

A lightweight pure-Python client for Beaker.

Quick Links

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. For example:

    beaker.cluster.get("ai2/jupiter-cirrascale-2")
    
  • Manage Datasets with beaker.dataset.* methods. For example:

    beaker.dataset.create(dataset_name, source_dir)
    
  • Manage Experiments with beaker.experiment.* and beaker.workload.* methods. For example:

    beaker.experiment.create(spec=spec, name=name)
    
  • Manage Groups with beaker.group.* methods. For example:

    beaker.group.create(name)
    
  • Manage Images with beaker.image.* methods. For example:

    beaker.image.update(image, name=name)
    
  • Manage Secrets with beaker.secret.* methods. For example:

    beaker.secret.write(name, value)
    
  • Manage Workspaces with beaker.workspace.* methods. For example:

    beaker.workspace.create("ai2/new_workspace")
    
  • Track Jobs with beaker.job.* methods. For example:

    beaker.job.logs(job, follow=True)
    
  • Create and process Queues with beaker.queue.* methods. For example:

    beaker.queue.create("my-work-queue", batch_size=4)
    

If you're coming from v1 of beaker-py, consider reading the migration guide.

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,
        min_runtime="1h",
    )

    # 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())

See the integration tests for more examples.

Development

After installing from source, set BEAKER_TOKEN in your environment.

Then, 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. The local ~/.pypirc file looks like:
[distutils]
index-servers = pypi

[pypi]
username = __token__
password = #beaker-py pypi API token from 1pass#
  1. 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.
  2. Ensure the CHANGELOG.md has a section at the top for the new release (## vX.X.X - %Y-%m-%d).
  3. Run make publish for a stable release or make publish-nightly for a nightly pre-release.

Release files for beaker-py 2.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for beaker-py 2.8.0
File Size Uploaded
beaker_py-2.8.0.tar.gz 113.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for beaker-py 2.8.0
File Interpreter ABI Platform
beaker_py-2.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 237.7 kB

Release files / beaker_py-2.8.0.tar.gz

Download URL beaker_py-2.8.0.tar.gz
Size 113.2 kB
Tags Source
SHA-256 checksum
How to use checksums
aae9421307ae37753ac371fd2be162db148e489e2932cc54a695168e27a208e1
BLAKE2b-256 checksum
How to use checksums
638503804652e4af9fcfbe2ff80929b98d9be3027a5799b94deeb2d027663fba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / beaker_py-2.8.0-py3-none-any.whl

Download URL beaker_py-2.8.0-py3-none-any.whl
Size 124.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e69c055919755a43da8c00a5eb813249293d4195c76ff3ee614e10095f455f58
BLAKE2b-256 checksum
How to use checksums
526e7ee35bcfabe8853e5bd12766655c5b37ff87d509598926de16cccc863517
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release history Release notifications | RSS feed

This release

2.8.0 This release

2 release files

2.7.2

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.6.0

2 release files

2.5.8

2 release files

2.5.7

2 release files

2.5.6

2 release files

2.5.5

2 release files

2.5.4

2 release files

2.5.3

2 release files

2.5.2

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.7

2 release files

2.4.6

2 release files

2.4.5

2 release files

2.4.4

2 release files

2.4.3

2 release files

2.4.2

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.38.1

2 release files

1.38.0

2 release files

1.37.0

2 release files

1.36.4

2 release files

1.36.3

2 release files

1.36.2

2 release files

1.36.1

2 release files

1.36.0

2 release files

1.35.0

2 release files

1.34.3

2 release files

1.34.2

2 release files

1.34.1

2 release files

1.34.0

2 release files

1.33.0

2 release files

1.32.3

2 release files

1.32.2

2 release files

1.31.3

2 release files

1.31.2

2 release files

1.31.1

2 release files

1.30.0

2 release files

1.29.1

2 release files

1.29.0

2 release files

1.28.0

2 release files

1.27.2

2 release files

1.27.1

2 release files

1.27.0

2 release files

1.26.7

2 release files

1.26.6

2 release files

1.26.5

2 release files

1.26.4

2 release files

1.26.3

2 release files

1.26.1

2 release files

1.26.0

2 release files

1.25.1

2 release files

1.25.0

2 release files

1.24.0

2 release files

1.23.0

2 release files

1.22.0

2 release files

1.20.0

2 release files

1.19.0

2 release files

1.18.8

2 release files

1.18.7

2 release files

1.18.5

2 release files

1.18.4

2 release files

1.18.3

2 release files

1.18.2

2 release files

1.18.1

2 release files

1.17.7

2 release files

1.17.6

2 release files

1.17.5

2 release files

1.17.4

2 release files

1.17.3

2 release files

1.17.2

2 release files

1.17.1

2 release files

1.17.0

2 release files

1.16.0

2 release files

1.15.0

2 release files

1.14.1

2 release files

1.14.0

2 release files

1.13.1

2 release files

1.12.0

2 release files

1.11.6

2 release files

1.11.5

2 release files

1.11.3

2 release files

1.10.3

2 release files

1.10.2

2 release files

1.10.1

2 release files

1.10.0

2 release files

1.9.2

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.8.1

2 release files

1.8.0

2 release files

1.7.4

2 release files

1.7.3

2 release files

1.7.2

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.9

2 release files

1.6.8

2 release files

1.6.7

2 release files

1.6.6

2 release files

1.6.5

2 release files

1.6.4

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.15.3

2 release files

0.15.2

2 release files

0.13.2

2 release files

0.13.1

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page