check-manifest
Check MANIFEST.in in a Python source package for completeness
What it is and what it does
check-manifest is a command-line tool that compares the files tracked in your version control system against those included in your Python package's source distribution (sdist). It catches the common mistake of uploading incomplete packages to PyPI by identifying files that exist in your repository but are missing from MANIFEST.in. The tool can run as a standalone checker, suggest corrections to your MANIFEST.in file, or integrate into a pre-commit hook workflow.
It depends on build, setuptools, and tomli to parse your package configuration and construct a test sdist. The tool reads version control metadata directly (supporting git, Mercurial, Bazaar, and Darcs) and compares against what setuptools would actually package. You can configure ignore patterns via pyproject.toml, setup.cfg, or tox.ini to exclude files intentionally kept in version control but not meant for distribution.
Use it for:
- Catch missing files before uploading a broken package to PyPI by running check-manifest in CI.
- Auto-generate or update MANIFEST.in rules for a new or existing project using the -u flag.
- Enforce packaging completeness in a pre-commit hook to prevent accidental omissions in each commit.
- Verify that generated files (like .mo translations) are correctly excluded from source distributions.
- Debug why a package installation fails due to missing data files by identifying what was left out of the sdist.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Validates that a Python package's MANIFEST.in file includes all version-controlled source files and suggests corrections when files are missing from source distributions.
Yes. check-manifest solves a real, recurring problem for Python package maintainers—incomplete source distributions—with low friction and no security concerns. It's actively maintained, supports current Python versions (3.8 through 3.14), and integrates cleanly into CI and pre-commit workflows. Install it if you publish packages to PyPI or maintain packages that others distribute.
Install
check-manifest on PyPI
pip
pip install check-manifestuv
uv add check-manifestpoetry
poetry add check-manifestInstalling check-manifest
Before you install
Low install friction with three straightforward runtime dependencies (build, setuptools, tomli). Actively maintained with recent release in October 2025 and ongoing Python version support.
License in practice
MIT license permits unrestricted use, modification, and distribution with minimal restrictions—suitable for any project.
Quickstart
pip install check-manifest
cd ~/src/mypackage
check-manifest
# To update MANIFEST.in automatically:
check-manifest -u -v
Requires git or another version control system to detect source files; works with git, Mercurial, Bazaar, and Darcs.
Verify before relying
- Whether the package detects all version control systems equally well or has known gaps with specific VCS backends.
- Performance characteristics when run on very large source trees or projects with many ignored patterns.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — build, setuptools, tomli |
| Maintenance | actively maintained — 303 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 911,422/month — #4,745 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: check_manifest-0.51-py3-none-any.whl
Keywords: distutils, setuptools, packaging, manifest, checker, linter
Tags
More Build Tools packages
Provides reusable utilities for Python…
permissive · top 100 on PyPI
tqdmWraps any iterable to display a real-time…
copyleft · top 100 on PyPI
pippip is the standard installer for Python…
permissive · top 100 on PyPI
hatchlingHatchling is a standards-compliant Python build…
permissive · top 100 on PyPI
grpcio-toolsGenerates Python gRPC service stubs and message…
permissive · top 1,000 on PyPI
pre-commitpre-commit is a framework for installing and…
permissive · top 1,000 on PyPI
check-wheel-contentsValidates wheel file contents before…
permissive · top 15,000 on PyPI
pyromaPyroma rates how well a Python project complies…
permissive · top 15,000 on PyPI
validate-pyprojectValidates pyproject.toml files against JSON…
copyleft · top 15,000 on PyPI
pip-check-reqsAudits Python project imports against…
permissive · top 15,000 on PyPI
setuptools-gitA setuptools plugin that automatically includes…
permissive · top 15,000 on PyPI
dparse2Parses Python dependency manifests…
permissive · top 15,000 on PyPI
pep8Checks Python code against PEP 8 style…
permissive · top 5,000 on PyPI
check-jsonschemaA command-line tool and pre-commit hook that…
permissive · top 5,000 on PyPI
yamllintyamllint checks YAML files for syntax errors,…
copyleft · top 1,000 on PyPI
flake8-requirementsA flake8 plugin that validates whether imported…
permissive · top 15,000 on PyPI