Skip to main content

pkgcheck

Pre-publish packaging sanity scanner for Python packages.

twine check validates metadata syntax. It does not verify that your declared console scripts actually import and run. pkgcheck does — it builds your wheel and actually imports and invokes every entry point, so an ImportError or a broken CLI surfaces before you ship a broken sdist to PyPI.

Part of the Kryptorious developer tool fleet.

What it checks

Check Severity Catches
PEP 621 fields error/warning Missing name, version, readme, requires-python, etc.
License file error license declared but no LICENSE at repo root
Changelog vs version error Top CHANGELOG entry doesn't match pyproject version
README links warning Dead URLs (opt-in, --check-links)
Entry-point resolvability error module.attr target doesn't import (module or symbol missing)
Entry-point callable error Target resolves to a non-callable
Package importable error Top-level package raises on import (e.g. bad __init__)
CLI actually runs error CLI produces no output when invoked (--help)

The last four are the differentiator: pkgcheck builds a wheel into a temp dir and imports from it, so it catches publish-breaking bugs that static metadata checks miss.

Install

pip install kryptorious-pkgcheck

Usage

# Scan the current package (builds a wheel and tests entry points)
pkgcheck check

# Scan a specific path
pkgcheck check ./my-package

# Machine-readable output for CI — exits non-zero if not publish-ready
pkgcheck check --json

# Skip building a wheel (uses the installed/editable package instead)
pkgcheck check --no-build

# Probe README URLs over the network
pkgcheck check --check-links

In CI

- name: Packaging gate
  run: pkgcheck check --json

pkgcheck exits 0 only when the package is publish_ready (no errors, no blocking issues). Wire it as a required status check before your publish job.

Exit codes

  • 0 — publish ready (or --json with zero blocking issues)
  • 1 — not publish ready (errors present) or human report has errors
  • 1 — CI JSON mode with blocking issues

License

MIT — see LICENSE.

Metadata

Release files for kryptorious-pkgcheck 1.0.0

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

Source distribution (sdist)

Source distribution for kryptorious-pkgcheck 1.0.0
File Size Uploaded
kryptorious_pkgcheck-1.0.0.tar.gz 11.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kryptorious-pkgcheck 1.0.0
File Interpreter ABI Platform
kryptorious_pkgcheck-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 22.8 kB

Release files / kryptorious_pkgcheck-1.0.0.tar.gz

Download URL kryptorious_pkgcheck-1.0.0.tar.gz
Size 11.7 kB
Tags Source
SHA-256 checksum
How to use checksums
256f98ff6bbd10cfd2747cffdaac867d522a37bf33ca80f8f5c2808536d1e664
BLAKE2b-256 checksum
How to use checksums
51d7323d4a184e1a4406f32699f78ce9a7d128d3fce9025ac26194ebb86812dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release files / kryptorious_pkgcheck-1.0.0-py3-none-any.whl

Download URL kryptorious_pkgcheck-1.0.0-py3-none-any.whl
Size 11.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
957b4a342d68530e0f365066205a38fdbd19e01918b97adf4cc9085c26bc0b74
BLAKE2b-256 checksum
How to use checksums
335536a229d2585089723dcab3c8b42f8d2bf9c3ae52a217409f549d961ffebf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

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