Skip to main content

Pre-publish packaging sanity scanner — verify PEP 621 metadata, license, changelog/version match, README links, and that every declared entry point actually imports and runs.

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kryptorious_pkgcheck-1.0.0.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kryptorious_pkgcheck-1.0.0-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file kryptorious_pkgcheck-1.0.0.tar.gz.

File metadata

  • Download URL: kryptorious_pkgcheck-1.0.0.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for kryptorious_pkgcheck-1.0.0.tar.gz
Algorithm Hash digest
SHA256 256f98ff6bbd10cfd2747cffdaac867d522a37bf33ca80f8f5c2808536d1e664
MD5 1a73ff81c87bdfdefa849ede2a1d29c4
BLAKE2b-256 51d7323d4a184e1a4406f32699f78ce9a7d128d3fce9025ac26194ebb86812dc

See more details on using hashes here.

File details

Details for the file kryptorious_pkgcheck-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for kryptorious_pkgcheck-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 957b4a342d68530e0f365066205a38fdbd19e01918b97adf4cc9085c26bc0b74
MD5 8e3c6c4f817ffcc5e55200771bb15dc7
BLAKE2b-256 335536a229d2585089723dcab3c8b42f8d2bf9c3ae52a217409f549d961ffebf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page