Parallel and sequential task-tree runner with matrix expansion and effects plugins.
Project description
Camas
A task runner with parallel execution, matrix expansion, MCP, 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: a closed edit→validate→run loop over structured MCP
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.
--init also creates a gitignored .camas/ directory beside tasks.py. Camas writes run logs and a per-leaf timing cache there, so camas --list can annotate tasks with an estimated duration; delete the directory to opt out. Rename or relocate it with Config(camas_dir=...).
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.
Under an AI coding agent, no flag is needed either. Camas detects agents (the CLAUDECODE env var, or set CAMAS_AGENT=1) and defaults to the line-oriented Status renderer instead of the live Termtree, whose cursor-redraw frames bloat captured output. Prefer the camas mcp server over the CLI from an agent; a Config default_effects always overrides the detection.
- 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 matrixterminal 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 intasks.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.
Machine-readable report (Ctrf)
For a CI artifact or input to an AI code review, add the Ctrf effect (opt-in extra: camas[ctrf]). It writes the run as a CTRF JSON report — each leaf a test with status, duration, output, command, and exit code. path= writes a file; the default is stdout.
uv run --extra ctrf camas check --effects='(Status(output_mode="errors"), Ctrf(path="ctrf-report.json"))'
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.
Because github_task reproduces CI, running it before a push catches a CI failure locally. If it is a named task, a one-line git hook guards every push:
echo 'exec camas check' > .git/hooks/pre-push && chmod +x .git/hooks/pre-push
git push --no-verify still bypasses it deliberately. An LLM agent needs no hook — when a github_task is declared, camas_list reports it as github_default, so the agent runs camas_run with that name before pushing. The field is null when no github_task is set; camas never infers it from your CI workflow files.
Time budget (--under)
Once camas has timed a task's leaves (the .camas/ cache, surfaced by camas --list), camas --under=<duration> runs only the leaves whose estimate fits a wall-clock budget — the fast inner-loop subset, picked for you instead of by hand.
camas --under=1s # budget the Config default task
camas --under=500ms check # budget a named task or expression
It runs the mutating leaves first, in sequence, then the read-only rest in parallel — so formatters never race a checker over the same files. Mark a leaf that writes the workspace with mutates=True:
fix = Task("ruff check --fix .", mutates=True)
fmt = Task("ruff format .", mutates=True)
lint = Task("ruff check .")
$ camas --under=1s --dry-run
Time budget 1.00s — running 6 leaf(s) (0 unmeasured), excluded 2 over budget.
over budget: pyright ~4.57s, coverage ~20.98s
fix → fmt → (mypy | ty | zuban | pyrefly)
Durations are 1s, 500ms, 2m, 1h, or a bare number of seconds. Only leaves measured to exceed the budget are excluded; a leaf with no recorded timing yet runs anyway (and is thereby measured) — skipping it would keep it forever untimed. The budget is per-leaf: a measured leaf runs when its own estimate fits, so the parallel group's wall-clock stays near the budget.
For agents, camas_run exposes the same budget as its under argument (omit task to budget the project default), and the response's budget field reports what was selected and excluded — a tight, time-boxed validate loop over structured MCP.
Path scoping (--paths)
camas <task> --paths <path>… scopes a run to changed paths instead of the whole tree. A command opts in by writing the {paths} placeholder and declaring its scope with paths= — a directory prefix, or a (changed) -> paths callable. A Sequential/Parallel may carry paths= too: it's the default scope for descendant {paths} commands that set none (the same way env/cwd propagate into a group's leaves):
py = Task("ruff format {paths}", mutates=True, paths="src")
web = Task("prettier --write {paths}", mutates=True, paths="web")
# the group's paths="." is the default for both children (neither sets its own):
autofix = Parallel(Task("ruff format {paths}"), Task("ruff check --fix {paths}"), paths=".")
_ = Config(agent=Claude(fix=Sequential(py, web, autofix)))
--paths works on any task — camas check --paths src/a.py. Without it, every {paths} resolves to its full-run default (ruff format src); with it, each {paths} command runs only over the changed files it covers, and one covering none is dropped. A command without {paths} can't be narrowed, so its paths= is a no-op and it always runs — unless it declares when= (below), camas errs on correctness (a tool it can't narrow might be affected by the edit). --paths is repeatable, or comma-separated.
A command that can't take {paths} (cargo build, nix flake check, ctest) is scoped with when= instead — a directory-prefix string, a tuple of prefixes, or a (changed) -> bool callable. On a scoped run a leaf whose when= doesn't match the changed set is dropped; a full run never consults it. Like paths=, a group's when= is the default for descendant leaves that set none:
build = Task("cargo build", when="src") # runs only when src/ changed
flake = Task("nix flake check", when=("flake.nix", "nix"))
A paths= callable is called with () on a full run — one that filters the changed set would return () and strip the command's arguments entirely (a formatter reading stdin on no args hangs). by_suffix(suffixes, default=...) is the safe factory: it filters the changed files by suffix on a scoped run and returns default on a full run:
tidy = Task("clang-tidy {paths}", paths=by_suffix((".c", ".h"), default=("src",)))
camas --check (and the MCP camas_check) flags both authoring mistakes as advisory warnings: a leaf whose own paths= can never apply (no {paths} token — use when= instead) and a {paths} callable that goes empty on a full run.
For the Claude Code plugin, you register the auto-fix node — whatever you named it — to Config.agent.fix; the PostToolBatch hook runs that node over the just-changed files, zero model tokens. Run camas mcp init --claude to write the full Claude Code setup in one command (.mcp.json + PostToolBatch autofix hook + camas-fixer subagent + gate skill), resolving the launcher for your project (uv run camas/uv run tasks.py, uvx, or a PATH camas) and pinning it — to tasks.py's PEP 723 block when present, else to the running camas release version (a dev/local build is left unpinned, since it isn't published to pin against). Pass --launcher uv|uvx|camas to force a strategy instead of auto-detecting — e.g. --launcher camas for a nix/flake-provided camas on PATH. For a bare .mcp.json for any MCP client, camas mcp init alone (same launcher/pin resolution, no Claude Code files). Or wire it by hand:
// .claude/settings.json
{ "hooks": { "PostToolBatch": [
{ "hooks": [{ "type": "command", "command": "camas mcp fix" }] } ] } }
camas mcp fix runs the registered Config.agent.fix node (not a task named fix — that's just camas fix, your own task); it reads the changed files from the PostToolBatch event on stdin (--paths still works for a manual run). With no fix registered it is a clean no-op, so the hook is harmless without it. The launcher runs in your project's environment — camas mcp init --claude resolves and pins it: to tasks.py's PEP 723 declaration (dependencies = ["camas>=X.Y"]) when present, else to the running camas release version; re-run camas mcp init --claude after bumping either to keep it current.
Monorepos
A tasks.py composes others with Project. Binding one imports a child tasks.py as a task node — a self-contained child project — that runs whatever a bare camas runs in that directory, and mounts the child's own tasks under the binding name:
from camas import Config, Parallel, Project
libs = Project("libs") # camas libs, camas libs.search.lint, ...
api = Project("services/api") # name the handle whatever you like
_ = Config(
default_task=..., # what bare `camas` runs here
github_task=Parallel(libs, api), # each child's CI default, composed in parallel
)
A reference resolves by context — the child's default locally, its github_task under CI, its agent default under an agent — so a Parallel of references is the composite CI task, each child contributing its own. camas libs.search.lint reaches a task the child exposes (because libs/tasks.py itself did search = Project("search")), and expressions compose across namespaces (camas '{libs.search.lint, api.deploy}').
Nodes stay anchored where they were authored: a leaf's cwd and its paths=/when= scopes are relative to its own tasks.py, rebased across the boundary no matter where camas is invoked from. Children are referenced by path relative to the importing file and live within its directory. The monorepo fixture exercises the permutations.
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 namespaces — camas.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]inpyproject.toml, drive a matrix from.python-version, or scope a 2-axis matrix from the CLI. - src/camas/ — typed Python with thorough docstrings.
camas --helpandcamas <task> --helplink back here. camaswith no args runs theConfigdefault task (or prints the full help when none is defined);camas <task> --helpshows 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file camas-0.1.23.tar.gz.
File metadata
- Download URL: camas-0.1.23.tar.gz
- Upload date:
- Size: 146.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2bc56478659e403c8a0203a39b3c930e44d2b558dd6324e2f1228bc558cd6731
|
|
| MD5 |
762830da615bac2d42a7458700af1f89
|
|
| BLAKE2b-256 |
fb897ca8fe53352f28747d98027fe9fa6235fdda770b2b5741cc0cc28ad62ff8
|
Provenance
The following attestation bundles were made for camas-0.1.23.tar.gz:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23.tar.gz -
Subject digest:
2bc56478659e403c8a0203a39b3c930e44d2b558dd6324e2f1228bc558cd6731 - Sigstore transparency entry: 2121192356
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: camas-0.1.23-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 550.0 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
410673e54c65b770b19ae614b81ff54f561c6bd12e6611ee5a322cf25bd9bde3
|
|
| MD5 |
de11bfa8c67ad24bd9e4d993aa8f6b95
|
|
| BLAKE2b-256 |
ecb89efc7bd13d3c0d3b52a10370716b292107434bc6e886f2a7335a8548b00b
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp314-cp314-win_amd64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp314-cp314-win_amd64.whl -
Subject digest:
410673e54c65b770b19ae614b81ff54f561c6bd12e6611ee5a322cf25bd9bde3 - Sigstore transparency entry: 2121194523
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp314-cp314-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: camas-0.1.23-cp314-cp314-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 988.6 kB
- Tags: CPython 3.14, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fba657b2d95e58836dd7f281d205cf0cdac9d5fe5f0918293e6c0bcad65a4551
|
|
| MD5 |
2aae750d68b222f3a07b2abfa9a45637
|
|
| BLAKE2b-256 |
643d90c80722d708c5ae15bbc0ce51ee678a2076e7b36abc16884ece13e088df
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp314-cp314-musllinux_1_2_x86_64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp314-cp314-musllinux_1_2_x86_64.whl -
Subject digest:
fba657b2d95e58836dd7f281d205cf0cdac9d5fe5f0918293e6c0bcad65a4551 - Sigstore transparency entry: 2121196429
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp314-cp314-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: camas-0.1.23-cp314-cp314-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 973.5 kB
- Tags: CPython 3.14, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8994e036f212ccbdaeeed29fad18171eb0f8048e6275092a95685004b0afb5f8
|
|
| MD5 |
bf3ae7f02e66f937268f69182dd2027d
|
|
| BLAKE2b-256 |
d1120b74f5b37b956ea1cd614a17aee1a4465d5899750dc1b20e92e44f3184b9
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp314-cp314-musllinux_1_2_aarch64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp314-cp314-musllinux_1_2_aarch64.whl -
Subject digest:
8994e036f212ccbdaeeed29fad18171eb0f8048e6275092a95685004b0afb5f8 - Sigstore transparency entry: 2121197562
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: camas-0.1.23-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 993.8 kB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
838f2c156ce0829c171153f7079d5a82e1d6cd698428817a4ca3f0f0ca6b6fec
|
|
| MD5 |
33d1f4d5519d42367b8346c35f42d616
|
|
| BLAKE2b-256 |
0069e5d1bdca044cca4795da11ddcc5af2f1f15a4d9129b6e04b4f7018493b1f
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
838f2c156ce0829c171153f7079d5a82e1d6cd698428817a4ca3f0f0ca6b6fec - Sigstore transparency entry: 2121197159
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: camas-0.1.23-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 960.3 kB
- Tags: CPython 3.14, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fda81b8d4e48a2208dac3424b91baa670e7f7cc3580f37c96e8c743d1fa4f918
|
|
| MD5 |
42d1c7b641600666957a9fe045880200
|
|
| BLAKE2b-256 |
2575e03f297421bf2a25fd6a3798c50e99b930cdb9c0e3702dfe678d5ebbc029
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
fda81b8d4e48a2208dac3424b91baa670e7f7cc3580f37c96e8c743d1fa4f918 - Sigstore transparency entry: 2121199177
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: camas-0.1.23-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 659.3 kB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1fa42074f7df34a278475276030f950452f417a57b41215a3bd35fc83c13aae1
|
|
| MD5 |
d7373add6eaa3134b49ddd0b30d031c9
|
|
| BLAKE2b-256 |
0dd6a8ab9f64a4acc0743244dc90e6e8759d33c3d2d4bd4d591e47c929bcab97
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp314-cp314-macosx_11_0_arm64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp314-cp314-macosx_11_0_arm64.whl -
Subject digest:
1fa42074f7df34a278475276030f950452f417a57b41215a3bd35fc83c13aae1 - Sigstore transparency entry: 2121194874
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: camas-0.1.23-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 542.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0dc557897153a62aa2f3446bf8bbb295540812c36505c85f49aa70ac98f88f9c
|
|
| MD5 |
4264136963472cb948168ba82f468d7b
|
|
| BLAKE2b-256 |
42f156eec1bea5aaba18bb076901767b593f7f62f180f5cb1f34d1d86dd9d3be
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp313-cp313-win_amd64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp313-cp313-win_amd64.whl -
Subject digest:
0dc557897153a62aa2f3446bf8bbb295540812c36505c85f49aa70ac98f88f9c - Sigstore transparency entry: 2121194980
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp313-cp313-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: camas-0.1.23-cp313-cp313-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 983.0 kB
- Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9681d81ce9274a1b0df6d6d77ea6cbc3b426e6e75692af077d864405ca02f06a
|
|
| MD5 |
1fed221da5f870cd43830f6d885610b8
|
|
| BLAKE2b-256 |
996f4c1c68ee55371da750abcfbf7bd577c0bef143d94f8156331ad7badc5e90
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp313-cp313-musllinux_1_2_x86_64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp313-cp313-musllinux_1_2_x86_64.whl -
Subject digest:
9681d81ce9274a1b0df6d6d77ea6cbc3b426e6e75692af077d864405ca02f06a - Sigstore transparency entry: 2121198991
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp313-cp313-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: camas-0.1.23-cp313-cp313-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 965.1 kB
- Tags: CPython 3.13, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
997863187d438455ef7deed800fbadef9f95eb583be4e1c6c706474eaa151c85
|
|
| MD5 |
c24ba54872d5ec28204cb1cb63883513
|
|
| BLAKE2b-256 |
5ebf238012e77ed2ddee208a916668e9aee8740c090441dc1ba1ded7770583ef
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp313-cp313-musllinux_1_2_aarch64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp313-cp313-musllinux_1_2_aarch64.whl -
Subject digest:
997863187d438455ef7deed800fbadef9f95eb583be4e1c6c706474eaa151c85 - Sigstore transparency entry: 2121194752
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: camas-0.1.23-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 988.0 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34062848197fd69a5a4dc00ccccace901d80fb3302775e6d32ee53e00a0f1152
|
|
| MD5 |
9568a43690e485a77c6ef019068bebef
|
|
| BLAKE2b-256 |
0f7d58d3769f57d602c10144444085e4057af103ecc828d113594b2a2e9f340c
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
34062848197fd69a5a4dc00ccccace901d80fb3302775e6d32ee53e00a0f1152 - Sigstore transparency entry: 2121194631
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: camas-0.1.23-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 951.7 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4acaf213b0c8d651af501dfe750e883e16617b9a7264011c7fcfbf1fbabb0e2e
|
|
| MD5 |
7f2b261bf45ce655c33da9285b4f5f7f
|
|
| BLAKE2b-256 |
6d1029590ad38933152709fc4c18a881af40aa4c0634f75b617b72749486cab1
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
4acaf213b0c8d651af501dfe750e883e16617b9a7264011c7fcfbf1fbabb0e2e - Sigstore transparency entry: 2121200178
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: camas-0.1.23-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 658.2 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
803ee41f714621ba63a387398f49a2994004f90b45911551c7011fc19f04c9f7
|
|
| MD5 |
4c0b3b371f784cfdffd6b60d96bd3f5e
|
|
| BLAKE2b-256 |
e4b3d2602cb793a3618d3b37da181b18834b93cc42d8ec471d8a97b3dc2f0129
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp313-cp313-macosx_11_0_arm64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
803ee41f714621ba63a387398f49a2994004f90b45911551c7011fc19f04c9f7 - Sigstore transparency entry: 2121200423
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: camas-0.1.23-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 539.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1573f51d25a63ed35ae1d934e8e6bac9d333814b58a2fe6fda6dca479f74b620
|
|
| MD5 |
6acdc4a658055f97c475e9305a1b557b
|
|
| BLAKE2b-256 |
3e023a12dc16f82bca194fee4dc897c5956de606d2ac6e207431ab378e622a03
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp312-cp312-win_amd64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp312-cp312-win_amd64.whl -
Subject digest:
1573f51d25a63ed35ae1d934e8e6bac9d333814b58a2fe6fda6dca479f74b620 - Sigstore transparency entry: 2121195838
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp312-cp312-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: camas-0.1.23-cp312-cp312-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 988.8 kB
- Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
324707682229808c8b150702d644624cb0f9c99f736315ee9d14a87707b9f1aa
|
|
| MD5 |
adb5b81c6032128764a679cd503d5408
|
|
| BLAKE2b-256 |
b194fc7781a937de46554c60f02a5724cefa547afd903f020b0dd661b8e0b31c
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp312-cp312-musllinux_1_2_x86_64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp312-cp312-musllinux_1_2_x86_64.whl -
Subject digest:
324707682229808c8b150702d644624cb0f9c99f736315ee9d14a87707b9f1aa - Sigstore transparency entry: 2121199858
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp312-cp312-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: camas-0.1.23-cp312-cp312-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 970.7 kB
- Tags: CPython 3.12, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44b70a9747ad6f0fddbabec021cea1563b46b38d6645dfefb72a6979dd2aa34d
|
|
| MD5 |
eae2de0da41081b203f3acd6cf750791
|
|
| BLAKE2b-256 |
bc1076f1112c33a74fbad6c2d947e95c9a172319a1c79cffcf44c272b5bdf0cc
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp312-cp312-musllinux_1_2_aarch64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp312-cp312-musllinux_1_2_aarch64.whl -
Subject digest:
44b70a9747ad6f0fddbabec021cea1563b46b38d6645dfefb72a6979dd2aa34d - Sigstore transparency entry: 2121196911
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: camas-0.1.23-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 994.8 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c8e98e81fe6e69fd243319fa78772e4f1a69f4a86a56d6b49cd05778f55ff2d
|
|
| MD5 |
f961a2cd2cbbf1366e83768cace7c7f2
|
|
| BLAKE2b-256 |
e90e800c79b23d3fefa1d83048121d91d3f2bc73128dbcb5a471e14b62066293
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
6c8e98e81fe6e69fd243319fa78772e4f1a69f4a86a56d6b49cd05778f55ff2d - Sigstore transparency entry: 2121193856
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: camas-0.1.23-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 957.2 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ae803d80bfdab3be50de7774b9f79656f2164142ddf7ca74973bbbb1b3c63ba
|
|
| MD5 |
20da03a3bd9e03f30a0ada8fe9e09cb8
|
|
| BLAKE2b-256 |
2e0684fb3cc188b2efe71ae17cfe9c4f9535efa982e2914275e7faf51aa47d9f
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
2ae803d80bfdab3be50de7774b9f79656f2164142ddf7ca74973bbbb1b3c63ba - Sigstore transparency entry: 2121193328
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: camas-0.1.23-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 669.4 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
986bcec50b1ac18c126b47cba7b1397b0f358be23549802901810d76cb1c5d7b
|
|
| MD5 |
5034c9ebe6a221c18a9663deeab32ea2
|
|
| BLAKE2b-256 |
65683309cfbc2b0463caac5079a5e1e4d33697950bae57dd47ac4520ff3665ed
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
986bcec50b1ac18c126b47cba7b1397b0f358be23549802901810d76cb1c5d7b - Sigstore transparency entry: 2121195362
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: camas-0.1.23-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 537.6 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73b9126091a45f76dd10f7fed2d837d1466c03a31ed7ee1250c0b1a1c4214489
|
|
| MD5 |
294eeced82d83e23f688a83d1ca5c71d
|
|
| BLAKE2b-256 |
a68ac01ba191cdcd3081ac69a52bc5965991a970f464114da26a9262393d182a
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp311-cp311-win_amd64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp311-cp311-win_amd64.whl -
Subject digest:
73b9126091a45f76dd10f7fed2d837d1466c03a31ed7ee1250c0b1a1c4214489 - Sigstore transparency entry: 2121197792
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp311-cp311-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: camas-0.1.23-cp311-cp311-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 941.3 kB
- Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93fc6979cdf8e94fccab0b4cd38411162243d4c4766ffeebe8d00cb3a4d5e29e
|
|
| MD5 |
fc32fdb0328d4fc5b8b3bdcc8ef16356
|
|
| BLAKE2b-256 |
02325e7d559d3a13f2804393c2fbe7aec81af4ccabd24a68aed6fbc959ce9a00
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp311-cp311-musllinux_1_2_x86_64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp311-cp311-musllinux_1_2_x86_64.whl -
Subject digest:
93fc6979cdf8e94fccab0b4cd38411162243d4c4766ffeebe8d00cb3a4d5e29e - Sigstore transparency entry: 2121195103
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp311-cp311-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: camas-0.1.23-cp311-cp311-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 931.8 kB
- Tags: CPython 3.11, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54374cb7b2c9f06822fbd5672c5d27191d311809d470ef07d149ed75b41d275e
|
|
| MD5 |
60b8eef4becaeb89404727265a068aa6
|
|
| BLAKE2b-256 |
85cc0c8537b9e11e496b291e251db8aa3dca77ac05d19c8a28234668e8364c92
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp311-cp311-musllinux_1_2_aarch64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp311-cp311-musllinux_1_2_aarch64.whl -
Subject digest:
54374cb7b2c9f06822fbd5672c5d27191d311809d470ef07d149ed75b41d275e - Sigstore transparency entry: 2121193080
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: camas-0.1.23-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 949.6 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d53bd2717c76b6c977d8304171c12bf0af58336d8ea98a68126dd364d2eefa96
|
|
| MD5 |
98eedda8bf1cd31e79f116b1f3c873c1
|
|
| BLAKE2b-256 |
476e32f442fe4f1c1c2927d1ebc4e26599244f5cf998081eaf6a6e31d0ea280e
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
d53bd2717c76b6c977d8304171c12bf0af58336d8ea98a68126dd364d2eefa96 - Sigstore transparency entry: 2121198457
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: camas-0.1.23-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 918.2 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d33c80c99a1055de17f9ccabe549fc8ea63e59293077114e11f72008c8d42cdc
|
|
| MD5 |
2197afb36576764f976fb1368520ba4c
|
|
| BLAKE2b-256 |
a1d48a504f1805692614223cfb7382cd17d7d5b16be9ccd1230b9a9437b5f144
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
d33c80c99a1055de17f9ccabe549fc8ea63e59293077114e11f72008c8d42cdc - Sigstore transparency entry: 2121195227
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type:
File details
Details for the file camas-0.1.23-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: camas-0.1.23-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 666.3 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6597c183e56a9201ae79d57dabaab9d46a22f2cf502ba8f3865176035b42def
|
|
| MD5 |
ad9cf19fa3bfb498ba9f00dc167b0f82
|
|
| BLAKE2b-256 |
ae3e1455ce16ad1b58ae888a93b24d682d80a04f18bc88998273de956204ccca
|
Provenance
The following attestation bundles were made for camas-0.1.23-cp311-cp311-macosx_11_0_arm64.whl:
Publisher:
ci.yaml on JPHutchins/camas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
camas-0.1.23-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
e6597c183e56a9201ae79d57dabaab9d46a22f2cf502ba8f3865176035b42def - Sigstore transparency entry: 2121199370
- Sigstore integration time:
-
Permalink:
JPHutchins/camas@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Branch / Tag:
refs/tags/0.1.23 - Owner: https://github.com/JPHutchins
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@06a80aa23c111bdd3fd01e3410a032c80d7a5005 -
Trigger Event:
push
-
Statement type: