chokkin
Find unused files, dependencies, and public symbols in Python projects.
uvx chokkin
That is the whole setup. chokkin reads your pyproject.toml, requirements
files, lockfile, and tool configs, builds a reachability graph of the entire
project from its entry points, and reports what nothing reaches. It is
Knip for Python: one command, zero configuration, and a
clear path to a CI gate when you want one.
- Zero config. Layout, entry points, dependency groups, and frameworks are
detected automatically. Add
[tool.chokkin]only when you need precision. - Whole-project view. Not "is this import used in this file" but "can this file, package, or symbol be reached from anything that runs".
- Never runs your code. Analysis is fully static. Django settings,
setup.py, and notebooks are parsed, not imported. - Fast and self-contained. A single Rust binary shipped as a Python wheel for Linux, macOS, and Windows. No Rust toolchain, no project virtualenv required.
- Built for CI. Baselines, GitHub annotations, SARIF, fixed exit codes, and a bundled GitHub Action.
What you get
chokkin 0.7.9
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:6 boto3 is declared in project.dependencies[1], but no reachable import, config, or binary usage was found
python-dotenv pyproject.toml:8 python-dotenv is declared in project.dependencies[3], but no reachable import, config, or binary usage was found
rich pyproject.toml:7 rich is declared in project.dependencies[2], but no reachable import, config, or binary usage was 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
Every finding has a rule code, a location, and a reason. When you disagree
with one, --explain and --trace show the evidence behind it.
Why not Ruff, Vulture, or deptry?
They are good tools that answer different questions:
| Tool | Scope |
|---|---|
| Ruff | per-file, syntax-level linting (unused imports, unused locals) |
| Vulture | dead code inside Python files, from the AST |
| deptry | declared dependencies vs. imports |
| chokkin | unused files, dependencies, and public symbols from the whole project graph |
chokkin starts from your entry points (console_scripts, manage.py,
asgi.py, test suites, notebooks, CI commands, …) and asks what is reachable.
A module that nothing imports, a package that nothing uses, a class that no
other module references: those are the findings. Because it also reads
framework and tool configuration, string references like Django's
INSTALLED_APPS or a pre-commit hook running mypy count as usage instead
of showing up as false positives.
Install
uvx chokkin # run without installing
pipx run chokkin
pip install chokkin
Python 3.10+ is required to install the wheel. The analyzed project can target
any Python version (target_version in the config).
chokkin does not need your project's virtualenv. If .venv exists it reads
dist-info metadata from it; otherwise it works from manifests, lockfiles, and a
bundled distribution-to-module map.
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 twice in one context, or in runtime and a group/extra | one context: warning / runtime and group/extra: info |
CHK010 |
unresolved_import |
import that resolves to neither first-party, third-party, nor stdlib | TYPE_CHECKING or optional (try / suppress(ImportError) / find_spec / is_*_available()): info / else: warning |
Each finding also carries a confidence (certain, likely, maybe). By
default maybe findings are hidden; --confidence and --strict change that.
Python makes every module top-level name importable, so unused_export is
deliberately cautious: in library mode it is info-level, and names the defining
module itself reads (a TypeVar, a type alias, a helper) are not reported.
What it understands
Manifests and lockfiles: pyproject.toml (PEP 621, Poetry, PDM, Hatch,
[tool.uv] sources and constraints), PEP 735 dependency groups including
include-group, PEP 723 inline script metadata, setup.cfg, static
setup.py, requirements*.txt / *.in, and uv.lock, pylock.toml,
poetry.lock, or pdm.lock for the transitive check.
Layouts: src and flat layouts, tests, scripts, docs, examples, Jupyter notebooks, build-backend package directories, and uv workspaces or auto-detected monorepo members, each analyzed with its own manifest.
Frameworks and tools: pytest, Django, FastAPI / uvicorn, Flask, Celery,
Sphinx, MkDocs, Alembic, tox, nox, pre-commit, and GitHub Actions. Plugins
add entry files, string module references, and binary usage that plain import
analysis cannot see, and they switch on automatically when the framework is a
declared dependency. The Django plugin, for example, treats INSTALLED_APPS,
MIDDLEWARE, ROOT_URLCONF, authentication and storage backend strings, and
custom settings strings that name project modules as module references, and
migrations/** as framework-used; FastAPI and Flask route handlers count as
externally used.
Dependency contexts: both dependencies and files are assigned a context
(runtime / dev / test / docs / lint / type / optional extras). That is what
powers CHK005: import pytest under tests/ with pytest in your dev group
is fine, the same import under src/ is a misplaced dependency.
TYPE_CHECKING-only imports are type context, and guarded imports
(try: import orjson, find_spec(...), platform checks) stay informational.
Everyday usage
uvx chokkin # analyze the current directory
uvx chokkin path/to/project
uvx chokkin --reporter compact # one line per finding
uvx chokkin --include CHK002,CHK003 # only dependency findings
uvx chokkin --exclude CHK006
uvx chokkin --production # runtime context only
uvx chokkin --strict # stricter policies, show `maybe` findings
Investigate a finding before you trust it:
uvx chokkin --explain CHK002:boto3 # why is boto3 unused? which imports were seen?
uvx chokkin --trace src/acme/legacy.py # how (or why not) is this file reached?
A selector is CODE:KEY. The key is a distribution name (compared after
PEP 503 normalization, so Boto3 and python_dotenv work), a file path, a
module:symbol or symbol name, or an import's module; CHK003 and CHK004
also take the distribution name their message shows (CHK003:pyyaml as well
as CHK003:yaml). A malformed selector or unknown rule code exits 2; a
selector that matches no reported issue prints a note on stderr and leaves the
exit code to the findings.
--trace prints the import chain from an entry root for reachable files, and
the reason, entry roots, and incoming imports for unreachable ones. The path
is relative to the project root; an absolute path or one relative to the
current directory also works when it points inside the root. This is
the intended path for reporting false positives.
Fix it when you agree:
uvx chokkin --fix --dry-run # preview
uvx chokkin --fix # remove certain unused dependencies from manifests
uvx chokkin --fix --add-missing # also declare certain missing dependencies
uvx chokkin --fix --allow-remove-files # also delete certain unreachable files
--fix is conservative by design: it only touches certain findings, refuses
to edit a manifest whose line numbers no longer match, preserves line endings,
and reports anything it skipped on stderr. The report still lists the
findings as they were before the edits, but the exit code counts only the
ones left standing: a run that fixed everything exits 0, while --dry-run
and skipped fixes keep their findings counted.
Key flags:
--productiondrops dev/test/docs/lint/type contexts and judges reachability from runtime code only. Dev-only files and dependencies disappear, and "unused in production" becomes exact.--strictmakes direct imports of transitive dependencies an error, requires workspace members to declare their own dependencies, reports undeclared type/test/docs/dev imports asCHK003, errors on unused environment-marker dependencies, and showsmaybefindings unless an explicit--confidencesays otherwise. It also makeswarningandmaybefindings fail the run (exit 1).--reporter default|compact|json|markdown|github|sarifpicks the output.githubemits workflow annotations;sarifwrites a SARIF 2.1.0 subset for code scanning. Warnings about input chokkin could not read always go to stderr.json,markdown,githubandsarifalso carry each warning;defaultandcompactend with aWarnings: N (see stderr)count. When one kind of warning repeats more than five times, stderr,markdownandgithubshow the first five and count the rest;jsonandsarifkeep every one.--no-exit-codereturns 0 even with findings, for adoption periods and summaries.--no-cachedisables the on-disk parse cache under.chokkin/. The cache is keyed on file stat and treats anything stale or corrupt as a miss.--no-auto-workspacestops nestedpyproject.tomlfiles from becoming workspace members or being skipped as separate projects.--initappends a starter[tool.chokkin]reflecting what auto-discovery found. It only appends to an existingpyproject.tomlin the project root and never creates one, so a project withoutpyproject.toml(for example one with onlyrequirements.txt) exits 2. It also exits 2 without writing when config already exists ([tool.chokkin],chokkin.toml, or.chokkin.toml), or whenpyproject.tomlis a symlink that resolves outside the project root.
Exit codes are fixed for CI:
0: no reportable issues
1: reportable issues found
2: CLI/config error
3: internal error
A finding is reportable when its severity is error and its confidence is
likely or certain. Findings below that are still printed but leave the
exit code at 0, so a project whose only findings are default-warning rules
(such as CHK001 unused files) exits 0. --strict lowers the bar to severity
warning and confidence maybe.
Adopting chokkin in an existing project
Large projects rarely start clean. Freeze what exists today in a baseline so CI fails only on new findings:
uvx chokkin --baseline chokkin-baseline.json --update-baseline
git add chokkin-baseline.json
--update-baseline exits 0 once the file is written, so the step is safe
under set -e.
Then gate pull requests with the bundled GitHub Action. It emits annotations, writes SARIF for code scanning, and fails only for findings not in the baseline:
name: chokkin
on:
pull_request:
permissions:
contents: read
security-events: write
jobs:
chokkin:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: watany-dev/chokkin@f6d097a5595fa4c1d6a7d3b67154d9b30e5c1d46 # v0.7.3
with:
baseline: chokkin-baseline.json
sarif-file: chokkin.sarif
- uses: github/codeql-action/upload-sarif@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4.38.2
if: always()
with:
sarif_file: chokkin.sarif
Pin the action to a full commit SHA with the tag as a comment, as above: a tag can be moved, a SHA cannot, and Dependabot still bumps both.
| Input | Default | Description |
|---|---|---|
version |
release of the action ref | chokkin version from PyPI, latest, or the path of a chokkin wheel (*.whl) |
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; a --reporter, --baseline or --no-cache here replaces the input, and the SARIF run ignores --reporter and --no-exit-code |
cache |
false |
true reads and writes the .chokkin/ cache; off so cache files in a PR cannot change the result |
Without the action, pin the version with uvx:
- uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
- run: uvx chokkin@0.7.9 --baseline chokkin-baseline.json --reporter github
Baseline files and --reporter json output carry schema_version: "1" and
follow the published JSON Schemas under docs/schema/.
Suppressing issues
Inline and file-level comments:
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:*"]
Per-rule severity, including turning a rule off:
[tool.chokkin.severity]
CHK001 = "off"
CHK006 = "info"
Configuration
Zero config is the default. When you need precision, add [tool.chokkin] to
pyproject.toml (a standalone chokkin.toml or .chokkin.toml also works;
there, drop the tool.chokkin prefix: write entry = [...] at the top level
and [severity] instead of [tool.chokkin.severity]).
chokkin --init writes a starter section for you. Everything below is
optional:
[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/**",
"build/**",
"dist/**",
"**/__pycache__/**",
]
vendored = [ # analyzed and traced, but never reported
"**/_vendor/**",
"**/third_party/**",
]
# functions besides import_string / symbol_by_name that import the module
# a dotted string argument names
module_loaders = ["LazyFeature"]
[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
[tool.chokkin.severity]
CHK001 = "off"
CHK006 = "info"
The root .chokkin/ directory holds analyzer data and is always excluded.
Modes
mode = "auto" picks one of:
- app when there is a clear entry:
gui_scripts, aconsole_scriptsentry that points outside the project's own package, or a runtimemanage.py,asgi.py,wsgi.py, orapp.pyoutside the package. Unused files are reported aggressively. A console script that points into the project's own package (acme = "acme.cli:main") is a library's CLI and does not make it an app, except in a workspace member. Setmode = "app"or declareentryto get strict unused-file reports for a library that ships a CLI. - library when there is a
[project] namewith a package and no clear entry. Public modules may be imported by users you cannot see, so unused files and exports are reported at low confidence or as info. Declareentryexplicitly for serious unused-file detection in a library. - workspace when there are multiple
pyproject.tomlfiles ortool.uv.workspace.members. Each member is analyzed separately against the shared lockfile, with per-member settings under[tool.chokkin.workspaces.<name>]. Repositories without a workspace declaration get nestedpyproject.tomlfiles with a[project]name (up to four directories deep) as members automatically; nested projects that are not members, such as an example app with its own[project], are left out with a warning.
Known limits
Python is dynamic, and chokkin is static. Things it cannot see:
- Modules loaded by name from runtime data (a plugin registry read from a
database,
importlib.import_module(f"{pkg}.{name}")with a non-literal name). Declare these asentryor ignore the rule for that path. - Code reached only through a framework or tool chokkin has no plugin for.
--traceshows exactly why a file was judged unreachable, which is usually enough to pick the rightentryorignore. - Users of a library's public API. That is why library mode lowers
CHK001tomaybe(hidden by default) andCHK006to info.
If a finding looks wrong and --explain / --trace do not settle it, please
open an issue with their
output.
Contributing
See CONTRIBUTING.md. The full design specification
(analysis engine, import resolution strategy, roadmap) is in
docs/dev/spec.ja.md (Japanese), and design
decisions are recorded under docs/adr/.
License
Metadata
Release files for chokkin 0.7.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| chokkin-0.7.9.tar.gz | 815.3 kB | With provenance | Details |
Built distributions (wheels)
Total release size: 44.7 MB
Release files / chokkin-0.7.9.tar.gz
| Download URL | chokkin-0.7.9.tar.gz |
|---|---|
| Size | 815.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1bd95c5e916c16eaeb9b95faf3e0c555c1fb57c14b3eace88b95296d42bd4cf9
|
|
BLAKE2b-256 checksum How to use checksums |
2d95f6fd706ac5e9950b01eb1f7043099d93a177c42015079b2a8912962489ac
|
| 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 Oct 25, 2026.
Transparency logRelease files / chokkin-0.7.9-py3-none-win_arm64.whl
| Download URL | chokkin-0.7.9-py3-none-win_arm64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | Python 3 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
b0d5908a48d5eed85517f8bd6941efe3196a1b861b84a6c9434f417fe3d1ec22
|
|
BLAKE2b-256 checksum How to use checksums |
17671a50e36bd12f28cdaea61c8e22a61aa84a217b8f066b32168a7583ec4753
|
| 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 Oct 25, 2026.
Transparency logRelease files / chokkin-0.7.9-py3-none-win_amd64.whl
| Download URL | chokkin-0.7.9-py3-none-win_amd64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
a970fa2b1ee47fb66bbf158d6fc2c0666b812581e1692b2a38af6e9c4c864cc4
|
|
BLAKE2b-256 checksum How to use checksums |
75a78a9dfaeefb6204c66db232bd878cfebb9dcaaabd0aed6067828a257606ff
|
| 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 Oct 25, 2026.
Transparency logRelease files / chokkin-0.7.9-py3-none-win32.whl
| Download URL | chokkin-0.7.9-py3-none-win32.whl |
|---|---|
| Size | 2.7 MB |
| Tags | Python 3 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
281b5ab1d9c9a9ba05a4a834340d55f9021edcbc18280289a8cee1196e15c9ae
|
|
BLAKE2b-256 checksum How to use checksums |
4926de4162eba42b1b34d3bba4ffc265cd74a838dc82a62b20baa5ccab308e26
|
| 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 Oct 25, 2026.
Transparency logRelease files / chokkin-0.7.9-py3-none-musllinux_1_2_x86_64.whl
| Download URL | chokkin-0.7.9-py3-none-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 3.1 MB |
| Tags | Linux musl 1.2+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
c609b84f73dcea4c448c7cd9cd20282f060b8c24d25381946692418a7e6edbcd
|
|
BLAKE2b-256 checksum How to use checksums |
83e638a2ea6d16852803b3e2775681f35e8a601c4c70284bc97f7f11e1cdb3c7
|
| 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 Oct 25, 2026.
Transparency logRelease files / chokkin-0.7.9-py3-none-musllinux_1_2_i686.whl
| Download URL | chokkin-0.7.9-py3-none-musllinux_1_2_i686.whl |
|---|---|
| Size | 3.0 MB |
| Tags | Linux musl 1.2+ x86-32 Python 3 |
|
SHA-256 checksum How to use checksums |
a7de42b819230da7305b1caddcfe448f7aea8ed788c4e381df25e775971dac7d
|
|
BLAKE2b-256 checksum How to use checksums |
4d38e11583b2903ccaa9054deb9a0c056e628a39440ef20f39cdddcba2d7926a
|
| 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 Oct 25, 2026.
Transparency logRelease files / chokkin-0.7.9-py3-none-musllinux_1_2_armv7l.whl
| Download URL | chokkin-0.7.9-py3-none-musllinux_1_2_armv7l.whl |
|---|---|
| Size | 2.9 MB |
| Tags | Linux musl 1.2+ ARMv7l Python 3 |
|
SHA-256 checksum How to use checksums |
b3209caa983b026537b93ddbf1bde4280fa9191d86ec6285c72083b128a7f11c
|
|
BLAKE2b-256 checksum How to use checksums |
80659ac079a7ba2431e13ea6d85a93c4a598f3341dd87b6d8dcce15b20fef927
|
| 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 Oct 25, 2026.
Transparency logRelease files / chokkin-0.7.9-py3-none-musllinux_1_2_aarch64.whl
| Download URL | chokkin-0.7.9-py3-none-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 2.9 MB |
| Tags | Linux musl 1.2+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
6accc6cab32a4280fc560218ef905af504e5d8a26242926d166aae1239d9515e
|
|
BLAKE2b-256 checksum How to use checksums |
ca3398fce025690e5599a1851ece18b0731133d4b246e0622572628e7a33b580
|
| 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 Oct 25, 2026.
Transparency logRelease files / chokkin-0.7.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | chokkin-0.7.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
cabea1cae0f615989e65eb6c4beeb55248a818b7413d5707ce58abc43fd97a47
|
|
BLAKE2b-256 checksum How to use checksums |
a3dc63496de5893e046cdb048ec05f35990e1b9ec713b3167a7ad6f39ab7cefd
|
| 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 Oct 25, 2026.
Transparency logRelease files / chokkin-0.7.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
| Download URL | chokkin-0.7.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl |
|---|---|
| Size | 3.1 MB |
| Tags | Linux glibc 2.17+ IBM System/390x Python 3 |
|
SHA-256 checksum How to use checksums |
0134fb832c7aeb40d7da061f24c1af3153d02a643a4070830169ad60dc7fa930
|
|
BLAKE2b-256 checksum How to use checksums |
7d1b3d329e5568568b6a74fbaaf3c7905e02014329f51432284e4d5b33cc99cf
|
| 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 Oct 25, 2026.
Transparency logRelease files / chokkin-0.7.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
| Download URL | chokkin-0.7.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl |
|---|---|
| Size | 3.2 MB |
| Tags | Linux glibc 2.17+ PowerPC 64-le Python 3 |
|
SHA-256 checksum How to use checksums |
11b558922cc447b917a2b52a8d90a9f09b9f8b483b2ca482320e2722d09b142e
|
|
BLAKE2b-256 checksum How to use checksums |
550907c2c32e42c14390f4724acc847aefc43cad036e47feec5794be2670eb1c
|
| 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 Oct 25, 2026.
Transparency logRelease files / chokkin-0.7.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | chokkin-0.7.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 3.1 MB |
| Tags | Linux glibc 2.17+ x86-32 Python 3 |
|
SHA-256 checksum How to use checksums |
2ef9124510fd2d068f99f0b0795ef2fc47ef7b8b5d57395abdf37a5fab03d807
|
|
BLAKE2b-256 checksum How to use checksums |
84b964593bc730a15ec58472e73604d2e9b437ba1b8a3b884e90847019840c56
|
| 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 Oct 25, 2026.
Transparency logRelease files / chokkin-0.7.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
| Download URL | chokkin-0.7.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl |
|---|---|
| Size | 2.9 MB |
| Tags | Linux glibc 2.17+ ARMv7l Python 3 |
|
SHA-256 checksum How to use checksums |
b8ad4a53d73fc7a82ff40719f7566e06f94af0177b869dcda467d19fcc663330
|
|
BLAKE2b-256 checksum How to use checksums |
a18e93d29e63ee6c48ea50bb973bacfffb8d126ec679e811fd047cb4bd5c3b8b
|
| 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 Oct 25, 2026.
Transparency logRelease files / chokkin-0.7.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | chokkin-0.7.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 2.9 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
945e5cfb972d7d0e24830ea5d6323a7bef42db25f48a5176f6c713ea6aa521fd
|
|
BLAKE2b-256 checksum How to use checksums |
4a6216c00a4fa9c3038683a713e87c7bca623ec6bbfd8ae9cdd67809b1b89a64
|
| 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 Oct 25, 2026.
Transparency logRelease files / chokkin-0.7.9-py3-none-macosx_11_0_arm64.whl
| Download URL | chokkin-0.7.9-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
cb1d7d10651818260c03451b192cf1b2a3e05b48d6ca108c699052cc7d82ead8
|
|
BLAKE2b-256 checksum How to use checksums |
c00abb2f83624c3683c8d723a5acbc157ec70ae509e280cc97bc2ef00f5bfb73
|
| 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 Oct 25, 2026.
Transparency logRelease files / chokkin-0.7.9-py3-none-macosx_10_12_x86_64.whl
| Download URL | chokkin-0.7.9-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 2.9 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
fb0e3cbacd3451c53050125be119b054b4f14c7694d973ace1abe5c816b8d2b9
|
|
BLAKE2b-256 checksum How to use checksums |
3e5d79a4d0b2b6a961521c3a49581737579466a19e896518de09b23369d5cf18
|
| 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 Oct 25, 2026.
Transparency logSecurity for chokkin 0.7.9
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.
Full provenance
All 16 files in this release have been uploaded with provenance metadata.
Attestation for chokkin-0.7.9.tar.gz
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 Oct 25, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.