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 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(StatusOptions(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(StatusOptions(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(StatusOptions(output_mode="github")),
      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.

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 re-exports that generation's four 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 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.10.tar.gz (68.5 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.10-cp314-cp314-win_amd64.whl (367.7 kB view details)

Uploaded CPython 3.14Windows x86-64

camas-0.1.10-cp314-cp314-musllinux_1_2_x86_64.whl (710.3 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

camas-0.1.10-cp314-cp314-musllinux_1_2_aarch64.whl (698.5 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

camas-0.1.10-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (712.2 kB view details)

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

camas-0.1.10-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (688.3 kB view details)

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

camas-0.1.10-cp314-cp314-macosx_11_0_arm64.whl (458.6 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

camas-0.1.10-cp313-cp313-win_amd64.whl (362.5 kB view details)

Uploaded CPython 3.13Windows x86-64

camas-0.1.10-cp313-cp313-musllinux_1_2_x86_64.whl (705.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

camas-0.1.10-cp313-cp313-musllinux_1_2_aarch64.whl (691.2 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

camas-0.1.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (708.1 kB view details)

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

camas-0.1.10-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (681.9 kB view details)

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

camas-0.1.10-cp313-cp313-macosx_11_0_arm64.whl (457.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

camas-0.1.10-cp312-cp312-win_amd64.whl (362.4 kB view details)

Uploaded CPython 3.12Windows x86-64

camas-0.1.10-cp312-cp312-musllinux_1_2_x86_64.whl (710.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

camas-0.1.10-cp312-cp312-musllinux_1_2_aarch64.whl (696.6 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

camas-0.1.10-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (713.1 kB view details)

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

camas-0.1.10-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (687.1 kB view details)

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

camas-0.1.10-cp312-cp312-macosx_11_0_arm64.whl (458.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

camas-0.1.10-cp311-cp311-win_amd64.whl (360.8 kB view details)

Uploaded CPython 3.11Windows x86-64

camas-0.1.10-cp311-cp311-musllinux_1_2_x86_64.whl (672.6 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

camas-0.1.10-cp311-cp311-musllinux_1_2_aarch64.whl (664.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

camas-0.1.10-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (676.7 kB view details)

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

camas-0.1.10-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (654.9 kB view details)

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

camas-0.1.10-cp311-cp311-macosx_11_0_arm64.whl (456.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: camas-0.1.10.tar.gz
  • Upload date:
  • Size: 68.5 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.10.tar.gz
Algorithm Hash digest
SHA256 a47668397fba7a8766924552f154ce2df462713fb59893b63fbcfb813ab3e172
MD5 d095fbd049fe1d31793d6a0c9806669e
BLAKE2b-256 3933017f7f8c9907f1b4a814bcbda129fbb9a6b93c8e5eb024d5711e031d3b29

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: camas-0.1.10-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 367.7 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.10-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 618d5765668aa3fd834e454dd3cc3452255ef51c6a97d2c81daeeca73f4f795b
MD5 69ddbeb8ec8674fb26f08379dfd25e00
BLAKE2b-256 6117d24aa6caab6680f37991cc5da4acc20153865c453d7751f386e3af89d631

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 47a318665250fad35a5a28b14f0ac28eec62cba8fada3dc97d41e63634def5ad
MD5 3c508d7f67379822ea2d75dbc61eca34
BLAKE2b-256 585956d576720b82e7e0e20385d6d097d297517ba8043182514a3d11099a3e6b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a2b55fab596e58242146422ebb52f0924ffa073ec5196914d5250d71561494b8
MD5 95877791d2e9b724660599eb4cbfc76c
BLAKE2b-256 6e12bc12d5d9bd3bf0508897ff5926e3f6ca894fdeebd997271d246feedf4087

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.10-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.10-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.10-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a670a7cd5837668177655ecd268ad1237954c57a6d6b42c7d62a86f269e2c96a
MD5 e33129fb9295395839c452322101739f
BLAKE2b-256 1e4d64e78c6c699fcab739a4b9d9f2cea6eaf2284ba2b962c8f68621abd08f63

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 db323d9b6bb660c2b7460b28b5f8dca7b6e78460cb6728ae0c0c0646188eb720
MD5 7d5c86aa050e8809f1deb03d6280126a
BLAKE2b-256 3d7ca1ea4ccab309b97c9103bc751663425e311977207c575e5927dd83670723

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d85f5a2cbb1433fafe2bb38d0b218f167ef458004e8b9624dd936f16bb21c5af
MD5 157c84c00ac51a49081fbd2d423ac75e
BLAKE2b-256 1999b157e390b793103a77dea3787f7e2edadde5a5ab6de0cf099c03d7e9d874

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: camas-0.1.10-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 362.5 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.10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9358ab569469863afe6fe1befdc8cd46aafd1a47e4370a03f448e01ac24e1d79
MD5 f04b54138ee9f206942e4f5722dcb796
BLAKE2b-256 21dda65f0e520cc3e560df68300def615d21c9d9faa0894ed8c28df98da47459

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 97f61126296321acc7f1bf27f5699e7ae57bc8759fd1cbd73208c7be3248b99f
MD5 47b26d5ba9260deedbbea166b6fe23e3
BLAKE2b-256 6a0d0e27316dbe0eb3a5fb88f6e00d02276d01bbc82085cb101073d4b9b223b6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 af4d5e2c98ede8445e38666f8d8e7862175f6c201a443e2716f9bf7afac63242
MD5 d9f3555d1d57aa21618ceffb1d753be9
BLAKE2b-256 aa5ff6bbd01745e0fe55eb5fb6e6158bd196ab06da7cb4132d6483cefd256683

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.10-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.10-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.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 df5c550952e5b064c16fc1cd9ddf28d5ff230c4d5ecc2645fc6c23eb11c48309
MD5 9cf8a2c04b61cbbd84ee247bfb43a05d
BLAKE2b-256 db7179f3fb3fbf08b5437dba6ddc794ca227bae81ed1e31253980c4fdaa61967

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b193d4ad45c327434628b10b350880f9984568b1c5c0c599c174312386ae8735
MD5 312e80706f7f4cb13886d070fe979984
BLAKE2b-256 2f804954460eeb0d98575cb3801bcb82cd07ee61e3e039ab1353ee6dba63bb54

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 435fa271bd2dd955d826e2bc3c5a6bd2b2219cd062ca2793bf5102768607aa48
MD5 9aa5b1b76e5dab8e2d750c1ffded7de5
BLAKE2b-256 fff56e361c06fe2bad2cb1ff679fc59c5427922d5079208100ebfdf71cd16da9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: camas-0.1.10-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 362.4 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.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4e2ca19c19730bd8393eff8569dd40c214cddffec391119a426d2c76080633db
MD5 a078b9afff9be906eed32d8d0aa86716
BLAKE2b-256 ae38b45727b7beabe9747811f36c5711a77add362a6ddb3bf3a229c34b357f5c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 366f7d594e8a41f8548f9d4675cfd40a90095ee5c223cb8d6d6cd1f7c3cf17bb
MD5 d64900e66738a7de4c3c2954311070c3
BLAKE2b-256 f04bed170d11acaf273ee2f21c712ad156083e7d84fb9d55a79031ef01867afe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2616641967ed6a0c0fff9bf62204659d319c0a58777d653b6e3c05b74aebe509
MD5 2016b60fdf8fafb574752d2aa2c85f1f
BLAKE2b-256 52efdc72d8d44301f698b36ac7af936440afcc0562dbb9edb03d42eedc4634d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.10-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.10-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.10-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b52db55d3c799b2e554783f5da15820c97e27f0ac4887eab12c34404366c5f12
MD5 d016cf76645544ba15056dd2416c9e34
BLAKE2b-256 a89647084e0e17693f142ec9d5876fb18b77f46de5a16cc8a3f35757181c3122

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c1badf5e2554808af181359633507582010ccfa9a23b7cd6284b7da39c65fc31
MD5 054cd629eeea482c849210a6801c143c
BLAKE2b-256 9473f96a4a6a75d9c87d4deee064a94c2bac57e42c594a074f91891517cecb1e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 939b54bcbcc5a93deadcd30a083121331a28f0bb2a03bcf6939a46eba7ca3b71
MD5 4377b87bb11b1ccbcdf8b3fbe1f1661b
BLAKE2b-256 b3d479f2b6bae28793efbdad7962f7480fcee11bcfd96d4e850be0470153d2d9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: camas-0.1.10-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 360.8 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.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 45b9d83c2f059a9effd03c9cb03d6e78dc220ad8f262b10c071ee6439d7557de
MD5 21eb3dc0046b8ae977448dbf9976e82d
BLAKE2b-256 9405f53f044cfcbd52a4ab50a920353c19615f3ce0073580ec3ea019134af995

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 eb44ecd07af4e050962a4702b4a94c47f1867bded543b9ebd5500aa6959a5c63
MD5 dc51cbbc8ba3352c6b0705b694994bd9
BLAKE2b-256 f15b283149cac056d51c9450bbf49fcc44281cad62892b755c20b05209199bdc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ce920cea6c798c86a137b166f70340c748396ebfa6bdb82202cd9f46caa1e9e2
MD5 ed2a9e86fb4ff5628858618a165c4339
BLAKE2b-256 b7fe0bdf4c751e5199469f7123cb62ec64a8e8f5861f2b7b4d1b834ac76bc754

See more details on using hashes here.

Provenance

The following attestation bundles were made for camas-0.1.10-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.10-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.10-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eb388a8e1ef8d38ae2192ab6a4c7f47178a4ea73cb651e293e43b8e9cd3f5036
MD5 b115d47ec2db4d024c9cb5a9f889de80
BLAKE2b-256 ba3491a798d099459c4315bcfa91f22a735c0fa000b0acfb32ebcae99a3e0236

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b9c583c7d1d34780dedc75a8b073746079d4e088c952bd51030bb6a0cb5192f3
MD5 d251001160ae79ee07686ddcebe58d46
BLAKE2b-256 f49f380b1ee5ddde6e4209786d20b9bd98e9b06a38c185816e2fb5c4424c1b13

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for camas-0.1.10-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 31f5d3e42c1c014d57c1645ded978cb8c641369dcff5034cc2946ad4d3e07ef9
MD5 78ae5130984e5def3341cfebf2812c26
BLAKE2b-256 9cf2cba413e41116768ca49fa937ae3e57d7df8a806042f54a32dfdb40930840

See more details on using hashes here.

Provenance

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