check-manifest

check-manifest is a tool with which you can quickly check whether the file Manifest.in for Python packages is complete.

Installation

$ pipenv install check-manifest

Check

$ cd /path/to/MANIFEST.in
$ pipenv run check-manifest

… or for an automatic update

$ pipenv run check-manifest -uv
listing source files under version control: 6 files and directories
building an sdist: check-manifest-0.7.tar.gz: 4 files and directories
lists of files in version control and sdist do not match!
missing from sdist:
  tests.py
  tox.ini
suggested MANIFEST.in rules:
  include *.py
  include tox.ini
updating MANIFEST.in

$ cat MANIFEST.in
include *.rst

# added by check_manifest.py
include *.py
include tox.ini

Configuration

You can configure check-manifest so that certain file patterns are ignored by creating a section [tool.check-manifest] in your pyproject.toml file or a section [check-manifest] in your setup.cfg or tox.ini file, for example:

[tool.check-manifest]
ignore = [".travis.yml"]

# setup.cfg or tox.ini
[check-manifest]
ignore =
    .travis.yml

check-manifest knows the following options:

ignore

A list of filename patterns that are ignored by check-manifest. Use this option if you want to keep files in your version control system that shouldn’t be in your source distributions. The standard list is:

PKG-INFO
* .egg-info
* .egg-info / *
setup.cfg
.hgtags
.hgsigs
.hgignore
.gitignore
.bzrignore
.gitattributes
.github / *
.travis.yml
Jenkinsfile
* .mo
ignore-default-rules

If true, your ignore entries replace the standard list instead of completing it.

ignore-bad-ideas

A list of filename patterns that will be ignored by checking the generated files. This allows you to keep generated files in your version control system, even if this is usually a bad idea.

Integration with version control

With pre-commit framework, check-manifest can be part of your Git workflow. To do this, add the following to your .pre-commit-config.yaml file:

repos:
-   repo: https://github.com/mgedmin/check-manifest
    rev: "0.39"
    hooks:
    -   id: check-manifest