chokkin
Find unused files, dependencies, and public symbols in Python projects.
chokkin is a reachability analyzer for whole Python projects — a Knip-like experience for Python. It builds a project-wide graph from your manifests, source code, and tool configs, then reports what nothing reaches: run uvx chokkin with zero configuration, and tighten things up with precise settings and CI integration as you go.
Why chokkin?
Existing tools each cover one slice of the problem:
Ruff : per-file, syntax-level linting
Vulture : Python AST-based dead code detection
deptry : consistency between dependency manifests and imports
chokkin : unused files, dependencies, and public symbols from the whole project graph
chokkin is not a style/lint tool. It answers a different question: starting from your entry points, what can actually be reached — and what is just sitting there? It reads pyproject.toml (including Poetry/PDM/Hatch dependency sections), requirements files, uv lockfiles, and framework/tool configs (Django, FastAPI, pytest, tox, nox, pre-commit, GitHub Actions, …) to build that picture.
Quick start
uvx chokkin
No configuration needed. On first run, chokkin discovers your manifests (pyproject.toml, setup.cfg, setup.py, requirements*.txt, and one lockfile: uv.lock, pylock.toml, poetry.lock, or pdm.lock), infers your layout (src/flat, tests, scripts, docs), infers entry points, builds the import graph, and reconciles it against your declared dependencies:
chokkin 0.5.0
Project: acme-api
Config : pyproject.toml
Mode : app, production=false
Unused files 2
src/acme/legacy.py src/acme/legacy.py file `src/acme/legacy.py` is not reachable from any entry root
src/acme/old_handlers.py src/acme/old_handlers.py file `src/acme/old_handlers.py` is not reachable from any entry root
Unused dependencies 3
boto3 pyproject.toml declared in project.dependencies[1], no reachable import, config, or binary usage found
python-dotenv pyproject.toml declared in project.dependencies[3], no reachable import, config, or binary usage found
rich pyproject.toml declared in project.dependencies[2], no reachable import, config, or binary usage found
Missing dependencies 1
src/acme/config.py:3 yaml src/acme/config.py:3 imported pyyaml in src/acme/config.py:3 (no lockfile — transitive check skipped) but not declared in matching dependency context
Unused exports 2
acme.auth:OldTokenBackend src/acme/auth.py:5 public class `OldTokenBackend` in `acme.auth` is not referenced from outside the module
acme.utils:legacy_slugify src/acme/utils.py:5 public function `legacy_slugify` in `acme.utils` is not referenced from outside the module
Summary: 8 issues
What it checks
| Code | Issue | Description | Default severity |
|---|---|---|---|
CHK001 |
unused_file |
Python file not reachable from any entry point | warning |
CHK002 |
unused_dependency |
declared in a manifest, but no import/config/binary usage found | error |
CHK003 |
missing_dependency |
imported, but not declared directly in any manifest | error |
CHK004 |
transitive_dependency |
imported directly, but only available via another dependency | error |
CHK005 |
misplaced_dependency |
runtime code uses a dev-group dependency, or a test-only dep is in main | warning |
CHK006 |
unused_export |
public symbol not referenced from outside its module | warning |
CHK007 |
unused_reexport |
re-export (e.g. in __init__.py) not referenced internally |
library: info / app: warning |
CHK008 |
unlisted_binary |
CLI used by tox/nox/pre-commit/CI without a declared dependency | warning |
CHK009 |
duplicate_dependency |
declared in multiple of main/dev/optional | warning |
CHK010 |
unresolved_import |
import that resolves to neither first-party, third-party, nor stdlib | warning |
Because any module top-level name is importable in Python, unused_export starts out as a preview rule (info-level in library mode) rather than a hard error.
CLI
uvx chokkin
uvx chokkin --production
uvx chokkin --strict
uvx chokkin --no-exit-code
uvx chokkin --include CHK002,CHK003
uvx chokkin --exclude CHK006
uvx chokkin --reporter json
uvx chokkin --reporter markdown
uvx chokkin --reporter github
uvx chokkin --reporter sarif
uvx chokkin --confidence likely
uvx chokkin --fix
uvx chokkin --fix --dry-run
uvx chokkin --fix --allow-remove-files
uvx chokkin --fix --add-missing
uvx chokkin --baseline chokkin-baseline.json
uvx chokkin --baseline chokkin-baseline.json --update-baseline
uvx chokkin --no-cache
uvx chokkin --explain CHK002:boto3
uvx chokkin --trace src/acme/legacy.py
uvx chokkin --probe # steps 1–4 summary only
uvx chokkin --init
Key flags:
--production— drop dev/test/docs/lint/type contexts and judge reachability from runtime context only. Dev-only files and dependencies are no longer reported, and "unused in production" becomes strict.--strict— direct imports of transitive dependencies always error, workspace members must declare their own dependencies, CHK003 also includes type/test/docs/dev imports, unused environment-marker dependencies error, andmaybe-confidence issues are shown.--no-exit-code— exit 0 even when issues are found (config/CLI errors still exit 2, internal errors 3). Useful during adoption and for GitHub Actions summaries.--fix— apply conservative fixes for certain dependency findings; add--allow-remove-filesto also remove certain unreachable files.--add-missingadds Certain CHK003 findings to non-Poetry[project].dependencieswhen the distribution is unambiguous; workspace findings are inserted into the memberpyproject.tomlwhen that member manifest was inventoried. Unsupported cases are reported as skipped fixes with details on stderr.--baseline PATH/--update-baseline— freeze current issues in a baseline file and suppress matching issues on later runs so CI fails only on new findings.--no-cache— disable Phase 2 cache reads/writes. Parse and manifest/config scan cache units are enabled by default under the project root and are conservative: corrupt or stale entries are treated as misses.--reporter github/--reporter sarif— emit GitHub Actions annotations or a SARIF 2.1.0 subset for code scanning.--probe— include resolved and inventoried workspace member counts when uv or chokkin workspaces are detected.--explain/--trace— show why an issue was reported and how reachability was judged.CHK002explain includes top-level modules and reachable/unreachable import evidence;--traceprints a positive path for reachable files and a negative trace (reason, entry roots, incoming import chain) for unreachable files. These are the intended path for investigating and reporting false positives.
Exit codes are fixed for CI:
0: no reportable issues
1: issues found
2: CLI/config error
3: internal error
Configuration
Zero config is the default. When you need precision, configure [tool.chokkin] in pyproject.toml (standalone chokkin.toml / .chokkin.toml are also accepted). chokkin --init appends a starter [tool.chokkin] reflecting what auto-discovery found.
[tool.chokkin]
entry = [
"src/acme/__main__.py",
"src/acme/asgi.py:application",
"manage.py",
]
project = [
"src/**/*.py",
"tests/**/*.py",
"scripts/**/*.py",
]
mode = "auto" # auto | app | library
production = false
target_version = "py311" # Python version of the analyzed project
respect_gitignore = true
confidence = "likely" # certain | likely | maybe
exclude = [
".venv/**",
".chokkin/**",
"build/**",
"dist/**",
"**/__pycache__/**",
]
[tool.chokkin.dependencies]
dev_groups = ["dev", "test", "tests", "lint", "docs"]
runtime_groups = ["server", "worker"]
type_groups = ["types", "typing", "mypy"]
# distribution name -> import name(s), for cases the bundled map doesn't cover
[tool.chokkin.package_module_map]
"PyYAML" = ["yaml"]
"Pillow" = ["PIL"]
"protobuf" = ["google.protobuf"] # dotted names pick one distribution under a namespace package
# CLI name -> distribution name, used by CHK008/CHK002 binary-usage checks
[tool.chokkin.binary_map]
"sphinx-build" = "Sphinx"
[tool.chokkin.plugins]
pytest = true
django = true
fastapi = true
# Per-rule severity overrides (off / info / warning / error)
[tool.chokkin.severity]
CHK001 = "off"
CHK006 = "info"
CHK002 = "error"
The root .chokkin/ directory is reserved for analyzer data and is always excluded, even with custom excludes. Keep analyzed source files outside it.
Modes
mode = "auto" picks one of:
- app mode — there's a clear entry (
console_scripts,manage.py,asgi.py,wsgi.py,app.py). Unused files are reported aggressively. - library mode — a
[project] namewith a package and no clear entry. Public modules may be imported by external users, so unused files/exports are reported at low confidence (or as info). For serious unused-file detection in a library, declareentryexplicitly. - workspace mode — multiple
pyproject.tomlfiles ortool.uv.workspace.members. Each member is analyzed separately (per-member[tool.chokkin.workspaces.<name>]config is supported), sharing the workspace lockfile.
Dependency contexts
Dependencies and files are both assigned contexts (runtime / dev / test / docs / lint / type / optional extras). That's what powers CHK005: import pytest in tests/ with pytest in your dev group is fine; the same import in src/ is a misplaced dependency. Default CHK003 reporting focuses on runtime imports; --strict also reports undeclared type/test/docs/dev imports. TYPE_CHECKING-only imports (including typing aliases) are type-context, while try: import orjson / except ImportError and platform-guarded imports remain informational conditional candidates when undeclared.
Plugins
Frameworks reference modules through strings and decorators, which pure import analysis can't see. Plugins close that gap by adding entry files, string/module references, and binary usage:
- v0.1: pytest, django, fastapi/uvicorn
- v0.2+: tox/nox/pre-commit/GitHub Actions binary usage detection, static Flask/Celery route/task references, conventional Sphinx/MkDocs/Alembic config entries, and
.ipynbcode-cell parsing.
For example, the Django plugin treats INSTALLED_APPS / MIDDLEWARE / ROOT_URLCONF strings as module references and migrations/** as framework-used. Route handlers decorated with @router.get / @router.websocket etc. are treated as externally used.
Suppressing issues
Inline and file-level ignores:
from legacy import old_api # chokkin: ignore[CHK003]
# chokkin: file-ignore[CHK006] (at the top of a file)
Config ignores, keyed by rule code (globs over distribution names, paths, or path:symbol):
[tool.chokkin.ignore]
CHK001 = ["src/acme/generated/**/*.py"]
CHK002 = ["boto3", "google-cloud-*"]
CHK006 = ["src/acme/public_api.py:*"]
For large existing projects, a baseline freezes current issues so CI only fails on new ones:
uvx chokkin --baseline chokkin-baseline.json --update-baseline
uvx chokkin --baseline chokkin-baseline.json
Baseline and --reporter json output include schema_version: "1". v0.2 baseline files without that field remain readable. Published JSON Schema files live under docs/schema/; migration notes are in docs/dev/schema-migration-notes.md.
CI adoption
For an existing project, generate and review the baseline once:
uvx chokkin --baseline chokkin-baseline.json --update-baseline
git add chokkin-baseline.json
Then wire the baseline into pull request checks with the bundled GitHub Action. It emits GitHub annotations, writes SARIF for code scanning, and fails only for findings not already present in the baseline:
name: chokkin
on:
pull_request:
permissions:
contents: read
security-events: write
jobs:
chokkin:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: watany-dev/chokkin@v0.5.0
with:
baseline: chokkin-baseline.json
sarif-file: chokkin.sarif
- uses: github/codeql-action/upload-sarif@v4
if: always()
with:
sarif_file: chokkin.sarif
| Input | Default | Description |
|---|---|---|
version |
release of the action ref | chokkin version from PyPI, or latest |
working-directory |
. |
Project root to analyze |
baseline |
— | Baseline file; only new findings fail the job |
reporter |
github |
Reporter for the gating run |
sarif-file |
— | Also write SARIF here (written even when the gating run fails) |
args |
— | Extra CLI arguments, e.g. --production --confidence likely |
Without the action, pin the version with uvx:
- uses: astral-sh/setup-uv@v10.2.0
- run: uvx chokkin@0.5.0 --baseline chokkin-baseline.json --reporter github
Installation
chokkin is a single Rust binary shipped inside a Python wheel (prebuilt for Linux/macOS/Windows), so all of these work without a Rust toolchain:
uvx chokkin # run without installing
pipx run chokkin
pip install chokkin
chokkin never executes your project's code — analysis is fully static. It also doesn't require your project's virtualenv: if .venv exists it is read for dist-info metadata (METADATA, top_level.txt, RECORD, entry_points.txt), otherwise manifests, lockfiles, and bundled maps are used.
Contributing
See CONTRIBUTING.md. The full design specification (analysis engine, import resolution strategy, roadmap) is in docs/dev/spec.ja.md (Japanese).
The pipeline benchmark covers full cold/warm analysis, disk parse caching, reachability caching, and discovery after cache population with ~2 KiB modules. Run cargo bench --bench pipeline; set CHOKKIN_BENCH_LARGE=1 to add 5k/10k to the default 1k case.
License
Metadata
Release files for chokkin 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| chokkin-0.5.0.tar.gz | 663.9 kB | Details |
Built distributions (wheels)
Total release size: 31.7 MB
Release files / chokkin-0.5.0.tar.gz
| Download URL | chokkin-0.5.0.tar.gz |
|---|---|
| Size | 663.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
09b67cdb77f3a88dcab2f9757ce77d6e7bc3b28daf2bb9fa3016081d6f610340
|
|
BLAKE2b-256 checksum How to use checksums |
6f1c2f756b48fe05dc420b539b8bcbafe89dc42ffff578440c7cd7ad3885df10
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / chokkin-0.5.0-py3-none-win_arm64.whl
| Download URL | chokkin-0.5.0-py3-none-win_arm64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | Python 3 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
5436b51b12f32455ec42625551e519ee5ebaffdd9920a3284c37840a02db2b0b
|
|
BLAKE2b-256 checksum How to use checksums |
bfdb9d973beddc84cc2c49be1fc39023d079c76949b991a6e4e17b7f150e70f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / chokkin-0.5.0-py3-none-win_amd64.whl
| Download URL | chokkin-0.5.0-py3-none-win_amd64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
cf486bbee61fc87e1c5f43c21628aa8c23242a65b25dbfd8d8fa84a2ad9cbcb0
|
|
BLAKE2b-256 checksum How to use checksums |
51959094ee8ebf2d6406621c4c037a53af01b83ca5b602d518102e9981456d46
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / chokkin-0.5.0-py3-none-win32.whl
| Download URL | chokkin-0.5.0-py3-none-win32.whl |
|---|---|
| Size | 1.9 MB |
| Tags | Python 3 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
64a61c68f792828e2bdbb2ecec0ade4073525e8904ca6dc78354472bd0dce171
|
|
BLAKE2b-256 checksum How to use checksums |
758ef216b0b301d6d21d2f91b4a273db30fa980ef200f4548144a01ba1a3be35
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / chokkin-0.5.0-py3-none-musllinux_1_2_x86_64.whl
| Download URL | chokkin-0.5.0-py3-none-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.2 MB |
| Tags | Linux musl 1.2+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
003d6c950f381b51f814994a565a29e5acfd051fffaa6f2fb9091a1f8b7aea8d
|
|
BLAKE2b-256 checksum How to use checksums |
e988a8ff28c46b1db47d60632372f14f41b81b5bd556ed8b0dfac2bf3eae5c93
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / chokkin-0.5.0-py3-none-musllinux_1_2_i686.whl
| Download URL | chokkin-0.5.0-py3-none-musllinux_1_2_i686.whl |
|---|---|
| Size | 2.2 MB |
| Tags | Linux musl 1.2+ x86-32 Python 3 |
|
SHA-256 checksum How to use checksums |
f99226d2a71fa575da7b757816009f51f41c05b2b9022f73ef1b0fcde72e801e
|
|
BLAKE2b-256 checksum How to use checksums |
2f52946c7fa9b5b2f395d035bb67cbc46ae8ded4e737670513e2824406097e63
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / chokkin-0.5.0-py3-none-musllinux_1_2_armv7l.whl
| Download URL | chokkin-0.5.0-py3-none-musllinux_1_2_armv7l.whl |
|---|---|
| Size | 2.1 MB |
| Tags | Linux musl 1.2+ ARMv7l Python 3 |
|
SHA-256 checksum How to use checksums |
ef6a1232c6e10588a69fc56ce31b2ae531877a53f6f892ac722379dff43290ed
|
|
BLAKE2b-256 checksum How to use checksums |
6968973bd0510434236edc0c83c9c43ca9a0c1779057a9d618edbe1eeb7fe063
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / chokkin-0.5.0-py3-none-musllinux_1_2_aarch64.whl
| Download URL | chokkin-0.5.0-py3-none-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | Linux musl 1.2+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
bd4e84ee6a563ee34f4e91470465b171f2be0874102e433de877d296292a821d
|
|
BLAKE2b-256 checksum How to use checksums |
0c52f6af025e464825502a6aa1e52515359544c90c071879e43b82f0086840b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / chokkin-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | chokkin-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
3921e7127fd5c559fd11d97b5a4b131d738c436715f1b594ae544a8a8e9ee4b4
|
|
BLAKE2b-256 checksum How to use checksums |
8d43977b7740b42bf5194310522935c157841a14211b5ce4bed79659a937f64c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / chokkin-0.5.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
| Download URL | chokkin-0.5.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl |
|---|---|
| Size | 2.1 MB |
| Tags | Linux glibc 2.17+ IBM System/390x Python 3 |
|
SHA-256 checksum How to use checksums |
664eb4cbb2c4006f1195933b5c71756c1ba350259c6441aa39d71b184d4feae2
|
|
BLAKE2b-256 checksum How to use checksums |
caf22de4e62a3cf82f24054a88ac855d6798bd8e504ed5ee9b0ea55057793242
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / chokkin-0.5.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
| Download URL | chokkin-0.5.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl |
|---|---|
| Size | 2.2 MB |
| Tags | Linux glibc 2.17+ PowerPC 64-le Python 3 |
|
SHA-256 checksum How to use checksums |
629e4bff767701b8da7990da223563456e91e27d54b3fea42740a75f6d9a9a5c
|
|
BLAKE2b-256 checksum How to use checksums |
e3eb89f842df2b809104d8c8bf2923e6be7f44b06a96fcd34a5d6b1e5dd5d1d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / chokkin-0.5.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | chokkin-0.5.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 2.2 MB |
| Tags | Linux glibc 2.17+ x86-32 Python 3 |
|
SHA-256 checksum How to use checksums |
2fc667db438020ac5163267ae6befcd9524d00d45a71b4c5966450a2fafa648c
|
|
BLAKE2b-256 checksum How to use checksums |
b6e1e514b298046b539dbb975832979414d71918d923336e4510bc02c6357b0a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / chokkin-0.5.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
| Download URL | chokkin-0.5.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl |
|---|---|
| Size | 2.1 MB |
| Tags | Linux glibc 2.17+ ARMv7l Python 3 |
|
SHA-256 checksum How to use checksums |
557364a86a793bed6562b795bee5a018fdd816e7db01bafe48baace1f4b97076
|
|
BLAKE2b-256 checksum How to use checksums |
b582f4e9a981afce843ae7e07380a7af7a63cf2e2c16ad288698ca4e3a03bb59
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / chokkin-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | chokkin-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
ea42177cb6c46a9e0d6207e73511ef7d8e1d1e6783936429cf49b08bd3a3af2f
|
|
BLAKE2b-256 checksum How to use checksums |
b14d163472cf5524a09660d4090b9b7e6602b7b467d554e556188f3c1a6cc3cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / chokkin-0.5.0-py3-none-macosx_11_0_arm64.whl
| Download URL | chokkin-0.5.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c05bd9d624a17146fd8ed667d54414a1d7d6b1bb7a882b0c9720018e114c5d9b
|
|
BLAKE2b-256 checksum How to use checksums |
8a96bc52020109fa2d8732647314c2ed53e1eb2318d1b2c2c7aebad560d94af3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / chokkin-0.5.0-py3-none-macosx_10_12_x86_64.whl
| Download URL | chokkin-0.5.0-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
95b208aee90addc0bb771e905e08734a15fe6aabeaa8afed721297ce296c21e1
|
|
BLAKE2b-256 checksum How to use checksums |
a10e932cd2d01d4046ee130a9ff9a53e165602cf0e9b7a621bca51b1247081b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency log