Skip to main content

chokkin

日本語

PyPI CI License: MIT

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.4

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

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, and ROOT_URLCONF strings 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?

--trace prints the import chain from an entry root for reachable files, and the reason, entry roots, and incoming imports for unreachable ones. 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.

Key flags:

  • --production drops 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.
  • --strict makes direct imports of transitive dependencies an error, requires workspace members to declare their own dependencies, reports undeclared type/test/docs/dev imports as CHK003, errors on unused environment-marker dependencies, and shows maybe findings.
  • --reporter default|compact|json|markdown|github|sarif picks the output. github emits workflow annotations; sarif writes a SARIF 2.1.0 subset for code scanning.
  • --no-exit-code returns 0 even with findings, for adoption periods and summaries.
  • --no-cache disables 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-workspace stops nested pyproject.toml files from becoming workspace members or being skipped as separate projects.
  • --init appends a starter [tool.chokkin] reflecting what auto-discovery found.

Exit codes are fixed for CI:

0: no reportable issues
1: issues found
2: CLI/config error
3: internal error

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

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, 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
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.4 --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). 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/**",
]

[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 (console_scripts, manage.py, asgi.py, wsgi.py, app.py). Unused files are reported aggressively.
  • library when there is a [project] name with 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. Declare entry explicitly for serious unused-file detection in a library.
  • workspace when there are multiple pyproject.toml files or tool.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 nested pyproject.toml files 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 as entry or ignore the rule for that path.
  • Code reached only through a framework or tool chokkin has no plugin for. --trace shows exactly why a file was judged unreachable, which is usually enough to pick the right entry or ignore.
  • Users of a library's public API. That is why library mode downgrades CHK001 / CHK006 rather than erroring.

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

MIT

Metadata

Release files for chokkin 0.7.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for chokkin 0.7.4
File Size Uploaded Provenance
chokkin-0.7.4.tar.gz 1.0 MB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for chokkin 0.7.4
File
chokkin-0.7.4-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
chokkin-0.7.4-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
chokkin-0.7.4-py3-none-win32.whl Python 3 none Windows x86-32 Details
chokkin-0.7.4-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
chokkin-0.7.4-py3-none-musllinux_1_2_i686.whl Python 3 none Linux musl 1.2+ x86-32 Details
chokkin-0.7.4-py3-none-musllinux_1_2_armv7l.whl Python 3 none Linux musl 1.2+ ARMv7l Details
chokkin-0.7.4-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
chokkin-0.7.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
chokkin-0.7.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl Python 3 none Linux glibc 2.17+ IBM System/390x Details
chokkin-0.7.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl Python 3 none Linux glibc 2.17+ PowerPC 64-le Details
chokkin-0.7.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl Python 3 none Linux glibc 2.17+ x86-32 Details
chokkin-0.7.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl Python 3 none Linux glibc 2.17+ ARMv7l Details
chokkin-0.7.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
chokkin-0.7.4-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
chokkin-0.7.4-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 35.9 MB

Release files / chokkin-0.7.4.tar.gz

Download URL chokkin-0.7.4.tar.gz
Size 1.0 MB
Tags Source
SHA-256 checksum
How to use checksums
4084a840bccbf19357d9a65f27127d8073b349bbb9fadda920aaac7c0254a852
BLAKE2b-256 checksum
How to use checksums
b3118a09069d002cfaa41fe46c7387369da56c3b612981b3643efba3c81ba959
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 11, 2026.

Transparency log

Release files / chokkin-0.7.4-py3-none-win_arm64.whl

Download URL chokkin-0.7.4-py3-none-win_arm64.whl
Size 2.1 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
7f31596e6e9668c6086b513de7db5e60b81e0d657d71c13131a7309d0fd5c033
BLAKE2b-256 checksum
How to use checksums
043318c515c84292e15c12512628253e2b2e9b7e9edf974b0931f3ab0e212d01
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 11, 2026.

Transparency log

Release files / chokkin-0.7.4-py3-none-win_amd64.whl

Download URL chokkin-0.7.4-py3-none-win_amd64.whl
Size 2.2 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
79dc7cdecc46c0fa6ed7b9bfc494e94c3452e2f980e9200040a38de5de255f4f
BLAKE2b-256 checksum
How to use checksums
8fdf96e4e69350e8aaa093cc0c92b70cb32f0eb6d345758552503cd912d6fded
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 11, 2026.

Transparency log

Release files / chokkin-0.7.4-py3-none-win32.whl

Download URL chokkin-0.7.4-py3-none-win32.whl
Size 2.1 MB
Tags Python 3 Windows x86-32
SHA-256 checksum
How to use checksums
150d5b43617dfab9a1153c3335fc9e0148d6db6ab86d48f1db47660ef505fe1b
BLAKE2b-256 checksum
How to use checksums
5187bd95055cbcef648cb0d53f8913b860d36f5d4cf8b9f6a7f10a58a1ed4e58
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 11, 2026.

Transparency log

Release files / chokkin-0.7.4-py3-none-musllinux_1_2_x86_64.whl

Download URL chokkin-0.7.4-py3-none-musllinux_1_2_x86_64.whl
Size 2.5 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
504940251b24bf1f9f9f574dd2297fb81f8e71c3dd32b7fc0f7dc788b673b6b4
BLAKE2b-256 checksum
How to use checksums
13137a29620ab8830722c42beef267f54be526bba74e6b4036f52837a7c64593
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 11, 2026.

Transparency log

Release files / chokkin-0.7.4-py3-none-musllinux_1_2_i686.whl

Download URL chokkin-0.7.4-py3-none-musllinux_1_2_i686.whl
Size 2.4 MB
Tags Linux musl 1.2+ x86-32 Python 3
SHA-256 checksum
How to use checksums
064ede938d8dba87090cc9338834b5589dd63b7adb86de3eaab4da6d4119a896
BLAKE2b-256 checksum
How to use checksums
f3f969bd98e6421237ef59985e1fbf7442a53501907e8b9ce6aab0d2c218dd1e
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 11, 2026.

Transparency log

Release files / chokkin-0.7.4-py3-none-musllinux_1_2_armv7l.whl

Download URL chokkin-0.7.4-py3-none-musllinux_1_2_armv7l.whl
Size 2.3 MB
Tags Linux musl 1.2+ ARMv7l Python 3
SHA-256 checksum
How to use checksums
b660c5b6338e9865d6b21bb12b6bbe13538969d2007c8c841d60fda3e8da3c2f
BLAKE2b-256 checksum
How to use checksums
c8951342455f2f07336b34d91dedfaac50e8643e1bd0691a4194de3a52355c57
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 11, 2026.

Transparency log

Release files / chokkin-0.7.4-py3-none-musllinux_1_2_aarch64.whl

Download URL chokkin-0.7.4-py3-none-musllinux_1_2_aarch64.whl
Size 2.3 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
08f91abedb6d6e90154436628e86e4bbe2b33033aa786b08a776666e19c342b0
BLAKE2b-256 checksum
How to use checksums
f14d07fde017896ffaa86155eaee4645aa5cff35fedca3eb499ef38ee4f079f4
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 11, 2026.

Transparency log

Release files / chokkin-0.7.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL chokkin-0.7.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
0bc1eb5d0c6b02b7b0ebb7aee7959133d64fc7b901376ad432b85be4f9e42450
BLAKE2b-256 checksum
How to use checksums
db5ada3bc871599472aff46c554e3dad4b16e21231ea3ff42dc2a0dd0d90370a
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 11, 2026.

Transparency log

Release files / chokkin-0.7.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl

Download URL chokkin-0.7.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Size 2.4 MB
Tags Linux glibc 2.17+ IBM System/390x Python 3
SHA-256 checksum
How to use checksums
bc25188051ef6a059b9296adee0f3175c3cc95fcccbe407362bc2c70f297dd92
BLAKE2b-256 checksum
How to use checksums
fbe10568c1e759240f9e170628f56b52806bbbe980bf4b77a47cb9718f34f62c
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 11, 2026.

Transparency log

Release files / chokkin-0.7.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl

Download URL chokkin-0.7.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Size 2.5 MB
Tags Linux glibc 2.17+ PowerPC 64-le Python 3
SHA-256 checksum
How to use checksums
9d49c53e635915df1eb706e2736f51b7370df2d0034c2fb0d5d24181d1b92f11
BLAKE2b-256 checksum
How to use checksums
44559b6a3c23ba256bc78a28f4e1071dc4f826b450b4e5896f31277a9cf1b8e9
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 11, 2026.

Transparency log

Release files / chokkin-0.7.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL chokkin-0.7.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Size 2.5 MB
Tags Linux glibc 2.17+ x86-32 Python 3
SHA-256 checksum
How to use checksums
618a678f3163a809b7c34dffc4bd776d52581afa55bc8142ac8761525d44f689
BLAKE2b-256 checksum
How to use checksums
783a3b7e177015fd8e6eb4c96b4a15d9cabe8cf06692ffa95f8d4f630644fd84
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 11, 2026.

Transparency log

Release files / chokkin-0.7.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL chokkin-0.7.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 2.3 MB
Tags Linux glibc 2.17+ ARMv7l Python 3
SHA-256 checksum
How to use checksums
53fab184fffb503eaf135bf8de20b4390e23d3ff41b1de3d99cc9dd27de4f633
BLAKE2b-256 checksum
How to use checksums
296fafc93fe92ed77b39e14eeb207c954fc3115a50094ba496a7e1dbb41282ec
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 11, 2026.

Transparency log

Release files / chokkin-0.7.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL chokkin-0.7.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 2.3 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
dda7e02b232a3f3cf458045b6c6b033d81d9e05ad62e5f5ac8da4ef73afa9457
BLAKE2b-256 checksum
How to use checksums
86f8cb8507c942f4da304fb6bc6d1464ca6caa88176812400f3174a2adec9321
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 11, 2026.

Transparency log

Release files / chokkin-0.7.4-py3-none-macosx_11_0_arm64.whl

Download URL chokkin-0.7.4-py3-none-macosx_11_0_arm64.whl
Size 2.2 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8e9393bbdcf7a2e7b21c162326c69c632db2fa9516fb7d0c32fc361544bd8e39
BLAKE2b-256 checksum
How to use checksums
352477dddf51fd17f1bd68d38fa9f12c2d19354978ec9bf90d4fea0efc955d48
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 11, 2026.

Transparency log

Release files / chokkin-0.7.4-py3-none-macosx_10_12_x86_64.whl

Download URL chokkin-0.7.4-py3-none-macosx_10_12_x86_64.whl
Size 2.3 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
a01567e67a7535b08780ec9e1b47038b176201df40e377a95ebcc987c3d05267
BLAKE2b-256 checksum
How to use checksums
8329dc90c109477b4cf554dbafce1db4f5cef6ec322b3b861170b1796786c056
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 11, 2026.

Transparency log

Security for chokkin 0.7.4

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.

Select from 16 files

Attestation for chokkin-0.7.4.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 11, 2026.

Transparency log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page