skillfed

check-manifest

Check MANIFEST.in in a Python source package for completeness

check-manifest v0.51 911.4K downloads/30d#4,745 on PyPI293
Permissive license MIT Active released

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-manifest

uv

uv add check-manifest

poetry

poetry add check-manifest

Installing 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

Development Status :: 4 - BetaEnvironment :: ConsoleIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPy

Tags

manifest validation pythoncheck missing files sdistmanifest.in linterpython package completenessverify source distribution files
packagingmanifest-validationpre-commit-hook

More Build Tools packages