Skip to main content

Parallel and sequential task-tree runner with matrix expansion and effects plugins.

Project description

camas-sketch-by-jph

Camas

A task runner with parallel execution, matrix expansion, and pluggable output effects.

  • For developers: live tree view that updates in place as tasks stream
  • For CI/CD: one definition drives both local runs and CI
  • For LLMs: coming soon — structured JSON stream + MCP

 

demo

Example

from camas import Parallel, Sequential

ci = Sequential(
  Parallel(
    "ruff format . --check",
    "npx prettier ."
  ),
  Parallel(
    "ruff check .",
    "mypy .",
    "npx eslint src/",
    "pytest",
    "npx tsc --noEmit"
  ),
)

The animated tree above is from a live test fixture — see the walkthrough.

Install

[!TIP] Add extras with PEP 621, e.g. camas[github_checks]

pipx:

pipx install camas

uv:

uv tool install camas

Nix:

nix run github:JPHutchins/camas                     # default
nix run github:JPHutchins/camas#with-github-checks  # adds httpx for the GitHubChecks effect
nix run github:JPHutchins/camas#with-check          # adds ty for `camas --check`
nix run github:JPHutchins/camas#all                 # both extras

Then scaffold a starter tasks.py in your project root:

camas --init

The starter demonstrates leaf tasks, Sequential/Parallel composition, a matrix, a Config default task, and the optional PEP 723 standalone block — cross-platform placeholder commands ready to be swapped for your real ones.

Why camas?

camas is not a build system. camas is for the specific job of running structured trees of shell commands.

Python task runners† just Task Mage camas
Project scope Python projects only Any Any Go projects only Any
Definition language pyproject.toml TOML or @task decorator justfile DSL YAML Go Python (typed AST)
Inline anonymous parallel groups No No No (must be a named task) No Yes
Parallel execution poe yes; Invoke / taskipy no [parallel] attr deps: (parallel) mg.Deps(...) Parallel(...)
Matrix expansion No No for: + parallel:true Go loops matrix=
CLI matrix override (e.g. --PY 3.13) No No No No Yes
Live tree output No No prefixed / group modes No Termtree (default)
Pluggable output renderers No No 3 built-ins No --effects
Type checking on task definitions Partial No Editor schema Yes (Go) mypy / pyright
First release / status 2013–2020, stable 2016, stable 2017, stable 2017, stable 2026, alpha
Ecosystem Moderate (Python) Large Large Moderate None yet

poethepoet, Invoke, taskipy — pyproject.toml-bound runners that assume a Python project.

If you need... Reach for
Reproducible, hermetic builds Nix
Incremental file-based builds (skip when inputs unchanged) Task
Simple project command menu just
Parameterized tasks (--env=staging, prompts, vars) Task
Go project, build logic in Go Mage
Inline parallel/sequential trees with a live view camas
Pluggable output effects (live tree locally, summary in CI) camas
Matrix runs across versions/platforms, overridable from the CLI camas

CI integration

The renderer is swappable, not the tree. Run the same tasks.py locally with the live Termtree and in CI with Status — one flag changes the output, the pipeline definition is unchanged.

On GitHub Actions, no flag is needed. Camas detects GITHUB_ACTIONS=true and defaults --effects to (Status(output_mode="github"),) — collapsed workflow groups, ISO timestamps with millisecond precision, ANSI colors preserved.

- run: uv run camas check

On other CI providers (or to opt into a specific mode), spell it out:

- run: uv run camas check --effects='(Status(output_mode="errors"),)'

See the OutputMode literal and block_for doctests for the per-mode behavior. The status-modes-demo job renders one CI run per mode for visual comparison.

For per-leaf visibility in the PR Checks panel, add the GitHubChecks effect alongside Status (opt-in extra: camas[github_checks]). Each leaf task becomes its own check run, so reviewers see lint / mypy / pytest pass-or-fail individually instead of one monolithic log.

- run: |
    uv run --extra github_checks camas matrix --effects='(
      Status(output_mode="github"),
      GitHubChecks(sha="${{ github.event.pull_request.head.sha || github.sha }}"),
    )'
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

The job needs permissions: checks: write. Defaults read GITHUB_TOKEN, GITHUB_REPOSITORY, and GITHUB_SHA from the Actions env. The pull_request.head.sha override attaches checks to the PR head rather than the synthetic merge commit. See the github-checks-demo job for a working example.

When to use it. Two things it gives you:

  • SSOT between local dev and CI. Your camas matrix terminal view and the PR Checks panel show the same per-leaf shape (lint [PY=3.10], mypy [PY=3.14], …). The matrix definition lives once in tasks.py; CI doesn't re-encode it in YAML.
  • One runner instead of N. Camas-side parallel matrix on a single runner produces the same per-(cell, leaf) granularity that a GHA matrix gets across N runners — at 1/N the minutes and camas gives you efficient task parallelization pushing that runner to 100% utilization as much as possible. Worth it on paid-runner budgets.

The downside is that fork PRs get a read-only GITHUB_TOKEN from GitHub and can't write checks — usually a non-issue for Enterprise teams where contributors have push to the org repo.

When not to bother. OSS gets free runners — just GHA-matrix them in parallel for faster wall-clock time. The cost is small: you give up either SSOT (matrix definition moves into YAML) or per-leaf-UI granularity (one PR check entry per runner instead of per leaf) — pick one. What is a deal-breaker for OSS is fork PRs: external-contributor PRs return 403 from the Checks API, so per-leaf entries silently don't appear. The github-checks-demo job is marked continue-on-error so it doesn't block CI when that happens, but GitHubChecks isn't a workable OSS solution.

Config

Bind a Config in tasks.py and bare camas (no arguments) runs its default_task:

from camas import Config, Sequential, Task

lint = Task("ruff check .")
test = Task("pytest")
ci = Sequential(lint, test, name="ci")

_ = Config(default_task=ci)

Now camas runs ci, camas --dry-run previews it, and the default's matrix axes stay overridable (camas --PY 3.13). With no Config (or no default_task), bare camas prints the full help — task listing, effects, hints — and exits non-zero.

github_task is the CI counterpart, falling back to default_task when unset; it runs under GITHUB_ACTIONS=true. Paired with the automatic Status effect, one bare camas does the right thing in both places:

_ = Config(
  default_task=ci,                            # bare `camas` locally
  github_task=Sequential(ci, "pytest --cov"), # bare `camas` under GitHub Actions
)

Config is discovered by type, so the binding's name never matters — _ by convention. Defining two is an error.

Effects plugins

Define an Effect in your tasks.py and it's discovered automatically — usable by name from --effects and listed under camas --effects. See examples/effect-plugin/ for a typed Tail effect that streams per-task output as it arrives.

Versioning

The public API is published through versioned namespacescamas.v0 today, camas.v1 and beyond later. Import from a generation to pin the API shape: a name a generation exports is never removed or changed within that generation. The scheme tracks semver — v0 pairs with camas 0.x and is as loose as semver says 0.x is (the surface prefers to grow; breaking changes stay possible until 1.0, made deliberately and noted in releases). At 1.0 a generation freezes: a breaking change forces the next camas.vN, and published generations keep shipping, so a tasks.py or effect plugin pinned to one keeps working across upgrades.

The top-level camas namespace is the unversioned alias for the latest generation: from camas import Task, Sequential, Parallel, Effect, Config re-exports that generation's five headline definers and is kept 1:1 with its package surface. The rest of the public API for a generation — TaskNode, the TaskEvent stream, LeafState, Completion — lives in that generation's submodules, e.g. from camas.v0.task_event import TaskEvent. Everything under camas.core / camas.main is internal — it consumes whatever generations are installed and carries no stability promise.

To pin a minimum camas feature level, use your dependency declaration (camas>=0.x in pyproject.toml, or PEP 723 inline metadata) — the import path covers API shape; the package pin covers feature availability.

Standalone tasks.py (PEP 723)

For a non-Python project that wants a single-file task runner — no pyproject.toml, no venv to manage — give tasks.py a PEP 723 header and a run_cli(globals()) entry point, then run it with any PEP 723-aware tool:

# /// script
# requires-python = ">=3.11"
# dependencies = ["camas>=0.1.8"]
# ///
"""Build tasks for my project."""

from camas import Parallel, Task, run_cli

lint = Task("ruff check .")
test = Task("pytest")
check = Parallel(lint, test)

if __name__ == "__main__":
    run_cli(globals())
uv run tasks.py check     # uv reads the header, builds an ephemeral env, runs
uv run tasks.py --list    # every camas flag still works
pipx run tasks.py test

run_cli(globals()) introspects the module for Task / Sequential / Parallel and Effect bindings — exactly what camas does when it auto-discovers a tasks.py — so the standalone file behaves identically to a discovered one: camas <task> --help, --dry-run, matrix overrides, and --check all work and cite the file. run_cli is part of the stable surface (from camas import run_cli, or from camas.v0 import run_cli to pin the generation); it's imported lazily, so a plain from camas import Task doesn't pull it in.

The header owns version pinning (dependencies = ["camas>=0.1.8"]) and the interpreter floor (requires-python); it's inert to camas --check and to auto-discovery, which read the module the same way with or without it.

Reference

  • examples/ — full project layouts under test coverage. The canonical reference for how to structure tasks.py, use [tool.camas.tasks] in pyproject.toml, drive a matrix from .python-version, or scope a 2-axis matrix from the CLI.
  • src/camas/ — typed Python with thorough docstrings. camas --help and camas <task> --help link back here.
  • camas with no args runs the Config default task (or prints the full help when none is defined); camas <task> --help shows the expanded tree, matrix axes, and override flags.

Walkthrough

The animated tree at the top is generated from this tasks.py:

examples/tauri-app/tasks.py — Rust + TypeScript + Python in one tree
from pathlib import Path

from camas import Config, Parallel, Sequential, Task

src_tauri = Path("src-tauri")
python_sdk = Path("python-sdk")
node = Path("node_modules/.bin")

frontend = Sequential(
    f"{node}/prettier --write .",
    Parallel(
        f"{node}/eslint src/",
        f"{node}/tsc --noEmit",
        f"{node}/vitest run",
    ),
)

backend = Sequential(
    Task("cargo fmt --all", cwd=src_tauri),
    Parallel(
        Task("cargo clippy --all-targets --locked -- -D warnings", cwd=src_tauri),
        Task("cargo test --all-targets --locked", cwd=src_tauri),
    ),
)

sdk = Sequential(
    Task("uv run ruff check --fix .", cwd=python_sdk),
    Task("uv run ruff format .", cwd=python_sdk),
    Parallel(
        Task("uv run mypy .", cwd=python_sdk),
        Task("uv run pytest", cwd=python_sdk),
    ),
)

all = Parallel(frontend, backend, sdk)

fix = Parallel(
    f"{node}/prettier --write .",
    Task("cargo fmt --all", cwd=src_tauri),
    Sequential(
        Task("uv run ruff check --fix .", cwd=python_sdk),
        Task("uv run ruff format .", cwd=python_sdk),
    ),
)

build = Parallel(
    Task("npm run tauri build {FLAG}"),
    matrix={"FLAG": ("-- --debug", "")},
    help="Debug and release builds (FLAG='-- --debug' debug, FLAG='' release)",
)

_ = Config(default_task=all)
$ cd examples/tauri-app

List the tasks

$ camas --list
output
Available tasks from .../tauri-app/tasks.py:
  all       frontend | backend | sdk
  backend   cargo fmt --all, cargo clippy --all-targets --locked -- -D warnings | cargo test --all-targets --locked
  build     Debug and release builds (FLAG='-- --debug' debug, FLAG='' release)  [matrix: FLAG×2 (-- --debug..)]
  fix       node_modules/.bin/prettier --write . | cargo fmt --all | (uv run ruff check --fix ., uv run ruff format .)
  frontend  node_modules/.bin/prettier --write ., node_modules/.bin/eslint src/ | node_modules/.bin/tsc --noEmit | node_modules/.bin/vitest run
  sdk       uv run ruff check --fix ., uv run ruff format ., uv run mypy . | uv run pytest

Preview what all would run

$ camas --dry-run all
output
all ∥
┃ frontend →
┃ ├─ node_modules/.bin/prettier --write .
┃ └─ node_modules/.bin/eslint src/ | node_modules/.bin/tsc --noEmit | node_modules/.bin/vitest run
┃   ┃ node_modules/.bin/eslint src/
┃   ┃ node_modules/.bin/tsc --noEmit
┃   ┃ node_modules/.bin/vitest run
┃ backend →
┃ ├─ cargo fmt --all  (cwd: src-tauri)
┃ └─ cargo clippy --all-targets --locked -- -D warnings | cargo test --all-targets --locked
┃   ┃ cargo clippy --all-targets --locked -- -D warnings  (cwd: src-tauri)
┃   ┃ cargo test --all-targets --locked  (cwd: src-tauri)
┃ sdk →
┃ ├─ uv run ruff check --fix .  (cwd: python-sdk)
┃ ├─ uv run ruff format .  (cwd: python-sdk)
┃ └─ uv run mypy . | uv run pytest
┃   ┃ uv run mypy .  (cwd: python-sdk)
┃   ┃ uv run pytest  (cwd: python-sdk)

Tree-symbol key: ends a Parallel header, ends a Sequential. Children hang off (parallel siblings, run concurrently) or ├─ / └─ (sequential steps, short-circuit on first failure).

Discover a task's matrix axes and override flags

$ camas build --help
output
usage: camas build [-h] [--dry-run] [--effects EFFECTS] [--FLAG VAL[,VAL...]]

Debug and release builds (FLAG='-- --debug' debug, FLAG='' release)

runs the 'build' task:
build ∥
┃ npm run tauri build -- --debug [FLAG=-- --debug]: npm run tauri build -- --debug  FLAG=-- --debug
┃ npm run tauri build  [FLAG=]: npm run tauri build   FLAG=

Matrix axes (override with --AXIS VAL[,VAL...]):
  --FLAG  -- --debug,

Pin the matrix from the CLI

$ camas build --dry-run --FLAG '-- --debug'
output
build ∥
┃ npm run tauri build -- --debug [FLAG=-- --debug]: npm run tauri build -- --debug  FLAG=-- --debug

Project details


Download files

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

Source Distribution

camas-0.1.11.tar.gz (74.7 kB view details)

Uploaded Source

Built Distributions

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

camas-0.1.11-cp314-cp314-win_amd64.whl (398.8 kB view details)

Uploaded CPython 3.14Windows x86-64

camas-0.1.11-cp314-cp314-musllinux_1_2_x86_64.whl (764.5 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

camas-0.1.11-cp314-cp314-musllinux_1_2_aarch64.whl (752.2 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

camas-0.1.11-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (767.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

camas-0.1.11-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (742.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

camas-0.1.11-cp314-cp314-macosx_11_0_arm64.whl (491.7 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

camas-0.1.11-cp313-cp313-win_amd64.whl (393.2 kB view details)

Uploaded CPython 3.13Windows x86-64

camas-0.1.11-cp313-cp313-musllinux_1_2_x86_64.whl (759.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

camas-0.1.11-cp313-cp313-musllinux_1_2_aarch64.whl (744.4 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

camas-0.1.11-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (763.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

camas-0.1.11-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (734.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

camas-0.1.11-cp313-cp313-macosx_11_0_arm64.whl (491.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

camas-0.1.11-cp312-cp312-win_amd64.whl (393.2 kB view details)

Uploaded CPython 3.12Windows x86-64

camas-0.1.11-cp312-cp312-musllinux_1_2_x86_64.whl (764.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

camas-0.1.11-cp312-cp312-musllinux_1_2_aarch64.whl (749.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

camas-0.1.11-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (768.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

camas-0.1.11-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (740.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

camas-0.1.11-cp312-cp312-macosx_11_0_arm64.whl (492.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

camas-0.1.11-cp311-cp311-win_amd64.whl (390.9 kB view details)

Uploaded CPython 3.11Windows x86-64

camas-0.1.11-cp311-cp311-musllinux_1_2_x86_64.whl (724.0 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

camas-0.1.11-cp311-cp311-musllinux_1_2_aarch64.whl (715.6 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

camas-0.1.11-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (730.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

camas-0.1.11-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (704.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

camas-0.1.11-cp311-cp311-macosx_11_0_arm64.whl (488.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file camas-0.1.11.tar.gz.

File metadata

  • Download URL: camas-0.1.11.tar.gz
  • Upload date:
  • Size: 74.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for camas-0.1.11.tar.gz
Algorithm Hash digest
SHA256 55d67ed8648c5f772de04748a44d8799adadc3110ff4aae09e9f1b57380b6970
MD5 5309cf5c841e7f2440ca72436728762b
BLAKE2b-256 df5d9e8387b8cdee5a2b9a33240067e0138dc094ce326c4479bfba0d01592331

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11.tar.gz:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: camas-0.1.11-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 398.8 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for camas-0.1.11-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 b25b15f31ddd1342610aa676aef40a1bf7e84042b43bdf47ecdedfb2ab4e556a
MD5 fbf191f6b632e2e17aeb0ed5b54f6928
BLAKE2b-256 6328e9c72cf011383cb42a233fe5a019f97e6e4ccb438cb82c27a4706a2bb73c

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp314-cp314-win_amd64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0699620c9bb5656ec42187b0788ef31b335cb5bfe592a79b5a0849ed1ee183f1
MD5 b7a88b7a994aefb5c504aa91a6948f60
BLAKE2b-256 1747aa7da7afbeff8205cac3540ce92db8c6d5a7b742e3730ef938f4ac0dbde4

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b7f50aba2f509a91ef258ebbd4f129daf22d76ea2204e5408d400af319b9239b
MD5 d32866005a9f9d08760ed0f1024b29a2
BLAKE2b-256 49b9034209b2dd7ba2b3b4e07b0c765ccafdb7bcecc38c01f980d36799600a76

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp314-cp314-musllinux_1_2_aarch64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a31178358141f5225f52f42f875a1a2c4659e294f79bcb195d51509dbdff5524
MD5 2816a2512000ae959eaac74b72d0a4b7
BLAKE2b-256 e43e86a914da5736d9f95483a62cfca8263de2ef37387075e98f9936053d64ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9fd15aed57682d06166ef4c10b4131a317971bba005d53b8e1b4c5dfa6a38ebb
MD5 71119229889198e7ffdd85ab1e681de5
BLAKE2b-256 57226909bbbd8dbd74b6adb2e82c4b9e7f582473dac26999dda63e6dc879fb9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d0fd186d09a758e0827cd1dca03f393fc69c44bf8ed6aeb406dece23677b2c0e
MD5 4c7ecd7bcdd9dc62b9683196262f201f
BLAKE2b-256 1671f9bb72c0600fe0cd8a4d941de4d41e812d395b1c3d91500a36868e484cc4

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: camas-0.1.11-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 393.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for camas-0.1.11-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2317bb8692dc23a94f625ad52c572f6af610d678b38926fe0f23db7d87751441
MD5 d02d7bd9dbe92fb41b0df6a0d2beb369
BLAKE2b-256 629d6426c9f73b077c1f3d8c79af43dfb80c992eefcc1370b41f6c200baf5772

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp313-cp313-win_amd64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 15850cb632170c6775dbf7aa81c6e174607cdba4210820025c2c73d4a9a305f1
MD5 f4021a22a1a4595b476264c878b5d6ee
BLAKE2b-256 028fe1daec3b78c929130a2acc737e785b6b090ea6b6314336573c5a2c73a2ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cc42bf9ff1f287a9d4e809bdf89c5c2f98c99db42c9b16aac9b7a2881fed591c
MD5 02ddf7b7886a32e285570d8a23325138
BLAKE2b-256 0937f9dcaae3e41d5c830b2e72038eec444ad5b834f00122e3c6fc36be2710cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ca9ae9d762f5869b891d508da9bf0507810171bdf955ddec9e23c9074ff2090a
MD5 43a0875fc782b5f858a0527603efc69d
BLAKE2b-256 d72d4bcc33725fb0a9a73d0625f2f3916dab6dc97e20732f2d2e5d52256dc8fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4d985604c281e1150749f8a3b99222af4d159311c69bc95a8d6d6e8a200bf9e8
MD5 9faa36626d34a87754849d3756f25881
BLAKE2b-256 8284270ffae0efac1538e8e9b5dcdc47082cac6be5e3eb987028ee5a10dd1ac7

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 876ac4a8adf11dca6177eb1ee2f4deef9dc8a95b2755556bc567ad862dd94f2f
MD5 344f0c802eededa15590069643986cf5
BLAKE2b-256 7b365392a6fd683c9bc56c407932672f07f3b0d0d1ecae001ce88ed2743846a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: camas-0.1.11-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 393.2 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for camas-0.1.11-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1f537618236d617e4145c0a4c4dde72ed0f9f20db0773864e0779f105d31d66d
MD5 7049b9a653472513c472becb77aa9092
BLAKE2b-256 0931fc6a20c13bc392d73dedaaa01c5ba6fc05f38d8f19fabe15dc50e26b11e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp312-cp312-win_amd64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 41e501fbe461e0bfe5aa32b87bb60fe3a6706799279e9697b8c3fae52c9cda81
MD5 0f22d4cf8a649f2d38db7cb9add18ddc
BLAKE2b-256 ae8abd0970452887802828007e544912058403265f40f38c6fb98b36acbf1c86

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ec81f84bffead49651b1fab7496fb50e443f2ceeaadb53f36e46cdd313795ff2
MD5 30daf12516e10085fd880acf9f2a229a
BLAKE2b-256 9e29908c6fc890bd836beb93a8f557158d3f6b0a3654f75ebe768ea7d2c19c21

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2b5bce0fe9622898bae5151c0dbcff2c1ea23098cb067abe43315b108a943e56
MD5 4c4083e42c584496144bf435419e6e6a
BLAKE2b-256 c52ce0b33665625f9181c8ecc031c7cbf6541f4c97fd4770739e943bd161d467

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 911ff20d4f92061567e25d34444f9e26a92f09d815138fe7c32d9c37ed6b8ea4
MD5 69a4b2841d8950a82272f9702b2533af
BLAKE2b-256 13839d2bab529c6a7245245bb3cf1be03af185d7639d466a315a2eed09f2663d

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fd57919acbb7c1fcf53ba4555d35351b21e7d1cbbc61b187f3e1c58fc3eec02c
MD5 f0c54c361bf77970013ba11373c0a4e3
BLAKE2b-256 a0a07fe2385b28b676947f45b4bc37c7bb377bb6c3c914837bd85cfa8698ca6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: camas-0.1.11-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 390.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for camas-0.1.11-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ad1f93761dbc1ac55032fde7d0390703e5cbaf1fb36c3c7b797afa17d354b9a0
MD5 d3b3ef890f199031fc28b2f3cb7baf96
BLAKE2b-256 cf080065ee51f5a1ab671c386d0eeea6757659f4e925455d50b4ddf0153f5da1

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp311-cp311-win_amd64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ed8a8e1f0a8fb0c9859c7036423cc474d38d653ff8664dd78dd8e7ce5e0919b7
MD5 1db82087cde120dfa358d0252b1652d8
BLAKE2b-256 9e412413dd5e479720c001bea9a9aaa5f5f8e0bc785aa2afd936ad826b3fc771

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a67d3e775118f500242ed849a682e2809eeb1ed5318cc8a2ada021d14c6e667e
MD5 284b4d4d9fb7f126842e60deb510fd5e
BLAKE2b-256 8f5c8d33396874ee7b18a73e950de126bc7288a389f207bc8c6a0e9f36e924d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 007d31a8822dd367f228a2cbc90c199f6744c2b9d95caa5b1c58f8e1db86cdab
MD5 9eec170134e85f741c81135150cb2b83
BLAKE2b-256 ef55499ffc2436f5bcf693327f9f2a39508cc29606953152e885a292401aedc7

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6c0c939708938cccff46fcf91411a04e8117ce96cd94e02e07c136317ec6e656
MD5 013838cb1dba1aa9c8f51c309138cdb3
BLAKE2b-256 978447338f11e3d8651a57e79e8adbd02386ba8b7e8f593d1f8c7aab9f5c78d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file camas-0.1.11-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for camas-0.1.11-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 82967dfcfd18490d2ef27f3bbb63501eed000ea02fb0f4e51ea09d68c66ea292
MD5 0874453b6035101cfc2cf3e85ba5ce23
BLAKE2b-256 2d450b8d72e6a02f8d73996c207a981940c58ba1f6d9552a1cf8c9c72287b66f

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.11-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: ci.yaml on JPHutchins/camas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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