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

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 the post-run Summary — one flag changes the output, the pipeline definition is unchanged.

- run: uv run camas check --effects='(Summary(SummaryOptions(Fixed(90))),)'

For per-leaf visibility in the PR Checks panel, add the GitHubChecks effect (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='(
      Summary(SummaryOptions(Fixed(90))),
      GitHubChecks(GitHubChecksOptions(
        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.

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.

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 lists tasks; 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 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)",
)
$ 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.8.tar.gz (59.6 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.8-cp314-cp314-win_amd64.whl (337.2 kB view details)

Uploaded CPython 3.14Windows x86-64

camas-0.1.8-cp314-cp314-musllinux_1_2_x86_64.whl (635.3 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

camas-0.1.8-cp314-cp314-musllinux_1_2_aarch64.whl (625.1 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

camas-0.1.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (637.2 kB view details)

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

camas-0.1.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (616.4 kB view details)

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

camas-0.1.8-cp314-cp314-macosx_11_0_arm64.whl (409.6 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

camas-0.1.8-cp313-cp313-win_amd64.whl (331.6 kB view details)

Uploaded CPython 3.13Windows x86-64

camas-0.1.8-cp313-cp313-musllinux_1_2_x86_64.whl (630.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

camas-0.1.8-cp313-cp313-musllinux_1_2_aarch64.whl (618.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

camas-0.1.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (632.7 kB view details)

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

camas-0.1.8-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (611.0 kB view details)

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

camas-0.1.8-cp313-cp313-macosx_11_0_arm64.whl (408.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

camas-0.1.8-cp312-cp312-win_amd64.whl (331.8 kB view details)

Uploaded CPython 3.12Windows x86-64

camas-0.1.8-cp312-cp312-musllinux_1_2_x86_64.whl (635.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

camas-0.1.8-cp312-cp312-musllinux_1_2_aarch64.whl (623.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

camas-0.1.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (638.1 kB view details)

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

camas-0.1.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (615.6 kB view details)

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

camas-0.1.8-cp312-cp312-macosx_11_0_arm64.whl (409.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

camas-0.1.8-cp311-cp311-win_amd64.whl (329.7 kB view details)

Uploaded CPython 3.11Windows x86-64

camas-0.1.8-cp311-cp311-musllinux_1_2_x86_64.whl (602.3 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

camas-0.1.8-cp311-cp311-musllinux_1_2_aarch64.whl (594.8 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

camas-0.1.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (606.0 kB view details)

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

camas-0.1.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (586.0 kB view details)

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

camas-0.1.8-cp311-cp311-macosx_11_0_arm64.whl (407.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: camas-0.1.8.tar.gz
  • Upload date:
  • Size: 59.6 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.8.tar.gz
Algorithm Hash digest
SHA256 e8ee46c5062fa11d42911256896f012ee280dccd3a0ae2b306275266a293a9f5
MD5 891d55bce144a7a71cf4ffd1dbb8cc9c
BLAKE2b-256 01fa53c38a7b0c766f39a03893a41b438654e5b28cfa32efabb77534fcb629ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8.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.8-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: camas-0.1.8-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 337.2 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.8-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d845ef62a05c09b03fdfa4716d8d6b59014a403d02439ffbaab6997bd1f7bcf5
MD5 be755d6161e95eb9aa37b2e8e1568fef
BLAKE2b-256 4251badc2ebb4edfa1423c4f57fcc4c7444ba47328bc31ed7ee575188a661b30

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cf5b4af5e2dbed2c2130da2afa356042c5a08b55617def69a4bc89f266c2be26
MD5 81c7a6b7734b6f38b0d8554f9d54d4b4
BLAKE2b-256 840bbb09464187094d484d812d4a9c0e6a1391de735e3dd443e83e0b5b52f478

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3b0662a859420edd0085dd363ec90f76f3161be9f57c6706dc21859eb3947ee2
MD5 b99fc0160f771fe8014ebbf7d7074250
BLAKE2b-256 187d9e9336218542e6d225ff78498fd9136f137942aab57c84c775cea2eddadf

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-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.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ba57fadb5ea2087dc25ebc704361a2fd3f5326d16e3feed6452cc64bf3788040
MD5 c7f539ce805d678705bb4137241af7a6
BLAKE2b-256 f0efa64500bc69808bd00ec6c68a959b037191e1f04f69ae079d4c39a222d07f

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 34ed5b3dcebe5447d01da5fbac2e1ea23a3e1dd43e12d2834bd1840f5acb440c
MD5 0cc3052da53385f1539719dfd94451d0
BLAKE2b-256 81a521be048df7899607ea3ec79077fb10309ce32f7db40272b5fbc18924488f

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d38b67e81b4e91dcd87b3ec10e9787224f521826beaeeb8a89e984792bf54e2d
MD5 eb0d63f3f2d0cf322b68d0411d4914ec
BLAKE2b-256 163d2887ddde5a9875030029cf045054435168ffbdd1315fe0f4c55a23bf9dfb

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: camas-0.1.8-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 331.6 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.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9f2e984ab893e321e21be6b7e3fe0e53989cef420515c193598561850d9da07f
MD5 97ac23aaaa7b87f52fbab6cecee043e3
BLAKE2b-256 5aa5a57f43937ede9e2c4f29c5bf9978c6eab76f6328b553abf16a7b19aadcbc

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 585a4d670e2ccf192837f728875fe25914a1b288f921a5c0c9d27547f3aafd47
MD5 790fd5068eeac1721778d1d4133b95ee
BLAKE2b-256 425ee1b623b42c4a679124e9824e1f9e2c144c7232d2a629f7e64b635755fc46

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 02ca95f2e380dd0d9272e6f03d126b5ebe63cb0ace88e759a9c6ba97a3244161
MD5 f11615c80677e465d3d07024f72b78d5
BLAKE2b-256 7b9a7273c1d2bf8836af1df72f7f4cb35a79a2934ba1e479f9f57a3fab91088e

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-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.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 84819e8ea5a4d4a92bdb7d21cfce2ce79d2f60abc44c57370c95e0d8cc42a7c1
MD5 d34ee2d4b5b5cdbe4918afd7f02155cf
BLAKE2b-256 efb927deb86f22f7eea81883d3919c31cac9709cb01af197abd5c8ec75e25823

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f2d3f829862fd9d84b392e49ba61c73ec37304370d073382f51ed3a8295c8f4a
MD5 de46229e22dbebda094e502963ddfc0d
BLAKE2b-256 602371a2f7a13a17ee7ec28b1b613cac91caa7ff02b3b97cfd89d40ba2dfda75

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a32b2ab0701ef9205d7b92f9d5eae5129a90c8903557b76047e9eb1a77e5f25
MD5 142845eb138cace731adf36412a1b5a4
BLAKE2b-256 606b7c71c2133fc1a0a589679d9c935c8a43ae5fd8555ecb82811fdeee23f39b

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: camas-0.1.8-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 331.8 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.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0d5af2cbf3ef458587c579bf26ac1c0a2c779ac4bc3cb0e7f2c5d03815e02950
MD5 ad13272d99f425beeaef0572cda0d3ff
BLAKE2b-256 a135aaa89124e0040f98e923769fdfd652b882c8807786d962074895deb887bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8b9d31b6c29c2f2bc6579b3f4e2d884c552255f6999f40134d6ad37d93ad0932
MD5 6cda8110e9b5a6a95d3e60d033a91865
BLAKE2b-256 1cdaf706179aa0ebf26bba768c7a81f46c5d23076f0b6022017a64f67fdfd415

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7933309709110b1c9cd897c24f408fc53c9b3410d16f9309b89d854133b50be8
MD5 0ce1f11c5bc39fdf4c1f9c8548401839
BLAKE2b-256 a1c26fe59ac5cf969472a13544caf03dc11d21e5e283cd6df621abde611c0993

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-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.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 60b3d8c6fe534655218e6dd93761bf467b15972a04399863c729d45e6d3f9b5d
MD5 d56a4c206c42f8010ab94bed5f2dab7b
BLAKE2b-256 0f6540bcde6a8f80dacb3756488658d8534f570fbfe2e48f5240a5d2d6c4519e

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c5aa3386ecfafe2cea156bcbbd5a003714f984e138be584648a4a7e2b1369c47
MD5 c1e0dd56bd341ab4b78e2f6c55d9df6b
BLAKE2b-256 85840c22b0fe572a9b0b886870e5756859a7abd1ab70c8a81180a03178d98bc1

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 73935fc2376a91be2d0a24bc3bcdc0a4a59626335c06566870ed5da0d00dba1f
MD5 9c984370d3c38602c220d3e6073fef96
BLAKE2b-256 270f8693b7510e6e51edc88a39bcf884eb019f486fcc8fa56056896e256a2c09

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: camas-0.1.8-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 329.7 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.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a5651fb32f422bda9482a35aa7296ece1d681b0a22acacd563f7758500186d8f
MD5 e29aa5a8ce3c081ff321861ba3a50618
BLAKE2b-256 3ff63f128431ee9f2987e8cb246c4ed7ecb875fd94c6c2d7317777083fbd9828

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b3d0e0a846d36ebdf9830104d09ebb523b4e0836657ebd871285c073172abba7
MD5 a62b5824f7f610799886b72b42f8cf4a
BLAKE2b-256 ca106a1616bb290bd84292caa88a19c23eeee38a224affa065cde3b4cc8b2456

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e7c1af3240a6e32718169ae95ac9d070f31b47eda6fd6c66ae73cd9ba7f980e0
MD5 578bd3b12bd9c3900a4678acf660f9ed
BLAKE2b-256 f02711b7b746ebd1b8600ae9e03a657242eaeeb9f5df29fe84ba7e003ce9649b

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-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.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2ff7746b0cc2a7fd83866bd0c7013976b6926959c1a690822938a55833999cb8
MD5 399d2477faa30faa30285ae063fe4a7f
BLAKE2b-256 3cd39dadcb2a57ed12ffcc15dc832757192b520f9cc5221feea56c7e4336fe82

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f4998866d8a322a716cd439b5ff0f9b81e6c01e78bc70edb6f0b5d6c86cbefe6
MD5 34775cd0f004483086c0fb41a0e63466
BLAKE2b-256 25f45d9606aea633a92bc86edab10708028fa40cffce81937fac636d8eaf78e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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.8-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for camas-0.1.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c31c0e0d1bfa655806b591313d192a009886fb65125097df05f597aaf1d9e27c
MD5 c58af4e20d2308fea1bc4e943f111376
BLAKE2b-256 b7b22b83666850e80c5ed3cbcde39e27a46c14c8b4ae0f34ac56eb6c59d6ddb9

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.8-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