skip to navigation
skip to content

check-manifest 0.35

Check MANIFEST.in in a Python source package for completeness

check-manifest

Are you a Python developer? Have you uploaded packages to the Python Package Index? Have you accidentally uploaded broken packages with some files missing? If so, check-manifest is for you.

Quick start

$ pip install check-manifest

$ cd ~/src/mygreatpackage
$ check-manifest

You can ask the script to help you update your MANIFEST.in:

$ check-manifest -u -v
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

Command-line reference

$ check-manifest --help
usage: check-manifest [-h] [--version] [-v] [-c] [-u] [-p PYTHON]
                      [--ignore patterns]
                      [source_tree]

Check a Python MANIFEST.in file for completeness

positional arguments:
  source_tree           location for the source tree (default: .)

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  -v, --verbose         more verbose output (default: False)
  -c, --create          create a MANIFEST.in if missing (default: False)
  -u, --update          append suggestions to MANIFEST.in (implies --create)
                        (default: False)
  -p PYTHON, --python PYTHON
                        use this Python interpreter for running setup.py sdist
                        (default: /home/mg/.venv/bin/python)
  --ignore patterns     ignore files/directories matching these comma-
                        separated patterns (default: None)
  --ignore-bad-ideas patterns
                        ignore bad idea files/directories matching these
                        comma-separated patterns (default: [])

Configuration

You can tell check-manifest to ignore certain file patterns by adding a check-manifest section to your package’s setup.cfg. Example:

[check-manifest]
ignore =
    .travis.yml

The following options are recognized:

ignore

A list of newline separated filename patterns that will be ignored by check-manifest. Use this if you want to keep files in your version control system that shouldn’t be included in your source distributions. The default ignore list is

PKG-INFO
*.egg-info
*.egg-info/*
setup.cfg
.hgtags
.hgignore
.gitignore
.bzrignore
*.mo
ignore-default-rules
If set to true, your ignore patterns will replace the default ignore list instead of adding to it.
ignore-bad-ideas
A list of newline separated filename patterns that will be ignored by check-manifest’s generated files check. Use this if you want to keep generated files in your version control system, even though it is generally a bad idea.

Changelog

0.35 (2017-01-30)

  • Python 3.6 support.

0.34 (2016-09-14)

  • Fix WindowsError due to presence of read-only files (#74).

0.33 (2016-08-29)

  • Fix WindowsError due to git submodules in subdirectories (#73). Contributed by Loren Gordon.

0.32 (2016-08-16)

  • New config/command line option to ignore bad ideas (ignore-bad-ideas) (issue #67). Contributed by Brecht Machiels.
  • Files named .hgsigs are ignored by default. Contributed by Jakub Wilk.

0.31 (2016-01-28)

  • Drop Python 3.2 support.
  • Ignore commented-out lines in MANIFEST.in (issue #66).

0.30 (2015-12-10)

  • Support git submodules (issue #61).
  • Revert the zc.buildout support hack from 0.26 because it causes breakage (issue #56).
  • Improve non-ASCII filename handling with Bazaar on Windows.

0.29 (2015-11-21)

  • Fix –python with just a command name, to be found in path (issue #57).

0.28 (2015-11-11)

  • Fix detection of git repositories when .git is a file and not a directory (#53). One situation where this occurs is when the project is checked out as a git submodule.
  • Apply ignore patterns in subdirectories too (#54).

0.27 (2015-11-02)

  • Fix utter breakage on Windows, introduced in 0.26 (issue #52). (The bug – clearing the environment unnecessarily – could probably also cause locale-related problems on other OSes.)

0.26 (2015-10-30)

  • Do not complain about missing .gitattributes file (PR #50).
  • Normalize unicode representation and case of filenames. (issue #47).
  • Support installation via zc.buildout better (issue #35).
  • Drop Python 2.6 support because one of our test dependencies (mock) dropped it. This also means we no longer use environment markers.

0.25 (2015-05-27)

  • Stop dynamic computation of install_requires in setup.py: this doesn’t work well in the presence of the pip 7 wheel cache. Use PEP-426 environment markers instead (this means we now require setuptools >= 0.7, and pip >= 6.0, and wheel >= 0.24).

0.24 (2015-03-26)

  • Make sure setup.py not being added to the VCS doesn’t cause hard-to-understand errors (issue #46).

0.23 (2015-02-12)

  • More reliable svn status parsing; now handles svn externals (issue #45).
  • The test suite now skips tests for version control systems that aren’t installed (issue #42).

0.22 (2014-12-23)

  • More terse output by default; use the new -v (--verbose) flag to see all the details.
  • Warn the user if MANIFEST.in is missing (issue #31).
  • Fix IOError when files listed under version control are missing (issue #32).
  • Improved wording of the match/do not match messages (issue #34).
  • Handle a relative –python path (issue #36).
  • Warn about leading and trailing slashes in MANIFEST.in (issue #37).
  • Ignore .travis.yml by default (issue #39).
  • Suggest a rule for Makefile found deeper in the source tree.

0.21 (2014-06-13)

  • Don’t drop setup.cfg when copying version-controlled files into a clean temporary directory (issue #29).

0.20 (2014-05-14)

  • Restore warning about files included in the sdist but not added to the version control system (issue #27).
  • Fix check-manifest relative/pathname (issue #28).

0.19 (2014-02-09)

  • More correct MANIFEST.in parsing for exclusion rules.
  • Some effort was expended towards Windows compatibility.
  • Handles non-ASCII filenames, as long as they’re valid in your locale (issue #23, #25).

0.18 (2014-01-30)

  • Friendlier error message when an external command cannot be found (issue #21).
  • Add suggestion pattern for .coveragerc.
  • Python 2.6 support (issue #22).

0.17 (2013-10-10)

  • Read the existing MANIFEST.in file for files to ignore (issue #19).

0.16 (2013-10-01)

  • Fix Subversion status parsing in the presence of svn usernames longer than 12 characters (issue #18).

0.15 (2013-09-20)

  • Normalize the paths of all files, avoiding some duplicate misses of directories. (issue #16). [maurits]

0.14 (2013-08-28)

  • Supports packages that do not live in the root of a version control repository (issue #15).
  • More reliable svn support: detect files that have been added but not committed (or committed but not updated).
  • Licence changed from GPL (v2 or later) to MIT (issue #12).

0.13 (2013-07-31)

  • New command line option: –ignore (issue #11). Contributed by Steven Myint.
  • New command line option: -p, –python. Defaults to the Python you used to run check-manifest. Fixes issues with packages that require Python 3 to run setup.py (issue #13).

0.12 (2013-05-15)

  • Add suggestion pattern for Makefile.
  • More generic suggestion patterns, should cover almost anything.
  • zest.releaser integration: skip check-release for non-Python packages (issue #9).

0.11 (2013-03-20)

  • Make sure MANIFEST.in is not ignored even if it hasn’t been added to the VCS yet (issue #7).

0.10 (2013-03-17)

  • check-manifest --version now prints the version number.
  • Don’t apologize for not adding rules for directories (especially after adding rules that include files inside that directory).
  • Python 3 support contributed by Steven Myint.
  • Default ignore patterns can be configured in setup.cfg (issue #3).

0.9 (2013-03-06)

  • Add suggestion pattern for .travis.yml.
  • When check-manifest -u (or -c) doesn’t know how to write a rule matching a particular file, it now apologizes explicitly.
  • Copy the source tree to a temporary directory before running python setup.py sdist to avoid side effects from setuptools plugins or stale *.egg-info/SOURCES.txt files (issue #1).
  • Warn if *.egg-info or *.mo is actually checked into the VCS.
  • Don’t complain if *.mo files are present in the sdist but not in the VCS (issue #2).

0.8 (2013-03-06)

  • Entry point for zest.releaser. If you install both zest.releaser and check-manifest, you will be asked if you want to check your manifest during fullrelease.

0.7 (2013-03-05)

  • First release available from the Python Package Index.
  • Moved from https://gist.github.com/4277075 to https://github.com/mgedmin/check-manifest
  • Added README.rst, CHANGES.rst, setup.py, tox.ini (but no real tests yet), MANIFEST.in, and a Makefile.
  • Fixed a bug in error reporting (when setup.py failed, the user would get TypeError: descriptor ‘__init__’ requires an ‘exceptions.Exception’ object but received a ‘str’).
 
File Type Py Version Uploaded on Size
check-manifest-0.35.tar.gz (md5) Source 2017-01-30 31KB
check_manifest-0.35-py2.py3-none-any.whl (md5) Python Wheel py2.py3 2017-01-30 21KB