Skip to main content

laxate

Run Benched benchmark suites in an existing local environment, Docker or Podman container, or ephemeral Hetzner Cloud server.

Build Status codecov License PyPI

Laxate owns environment and machine orchestration. Benched owns pytest-benchmark execution, durable history, comparison, and static reports. Neither tool constructs a matrix implicitly: select or prepare one environment, then record it.

Install

pip install laxate
pip install "laxate[hetzner]"  # optional cloud provider

Run locally

Add [tool.benched] configuration and pytest-benchmark tests to the target project, then run:

laxate run local
laxate run local --quick --machine workstation
laxate compare previous latest
laxate publish
laxate preview

Run in a container

The project directory is bind-mounted at the same absolute path. Initialization commands must install the project and Benched into the container:

laxate run docker \
  --image python:3.12 \
  --init-command "pip install -e ." \
  --machine docker-3.12

Use --engine podman for Podman and repeat --mount for additional bind mounts.

Run on Hetzner

Configure benchmark_repo in [tool.laxate], export HCLOUD_TOKEN, and register the SSH public key named by --ssh-key-name:

laxate run hetzner \
  --server-type cx23 \
  --ssh-key ~/.ssh/hetzner_key \
  --ssh-key-name benchmarks \
  --branch main \
  --python-version 3.12 \
  --push

The runner clones the selected benchmark-suite branch, creates its Python environment, runs the repository's make benchmark target, and collects the configured results directory.

See CLI and configuration reference for every option.

Historical ASV files are not executed. Projects migrating old results can call benched import-asv once before using Laxate's Benched workflow.

Download files

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

Source Distribution

laxate-0.2.0.tar.gz (25.8 kB view details)

Uploaded Source

Built Distribution

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

laxate-0.2.0-py3-none-any.whl (34.7 kB view details)

Uploaded Python 3

File details

Details for the file laxate-0.2.0.tar.gz.

File metadata

  • Download URL: laxate-0.2.0.tar.gz
  • Upload date:
  • Size: 25.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for laxate-0.2.0.tar.gz
Algorithm Hash digest
SHA256 fb269649caf68d98dfe4a5164a35d00f7f99f6b1d3bf50ef37df946dc4caae3b
MD5 61eb74fdaee3385a2257ee497ba1531b
BLAKE2b-256 5f6e243e8bbb110baa5d9cc1baa4574e31e17ea56c17d8f21c21391cc107fc35

See more details on using hashes here.

File details

Details for the file laxate-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: laxate-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 34.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for laxate-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7ff278fb411e94d03451b8f1d91dee2d79856d5a6c3768fcbe91ffbe3b5343e0
MD5 fad1b4d6cd2c32487922a1dc4fa9bc97
BLAKE2b-256 af80bc9937c09d16eaf72237de23df4d9846871f73260d9f1e48188935723245

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 Sentry Error logging StatusPage Status page