Tool to check the completeness of for Python packages
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

14 KiB


0.49 (unreleased)

  • Drop Python 3.6 support.
  • Exclude more common dev/test files

0.48 (2022-03-13)

  • Add Python 3.10 support.
  • Switch to tomli instead of toml, after hearing about PEP-680. tomli will be included in the Python 3.11 standard library as tomllib, while toml is apparently unmaintained.
  • Fix submodule support when .gitmodules exists in a subdirectory (#153). Note that this reverts a fix for #124: git versions before 2.11 are no longer supported.

0.47 (2021-09-22)

  • Fix setuptools_scm workaround for packages with dashes in the name (#145).

0.46 (2021-01-04)

0.45 (2020-10-31)

  • Add Python 3.9 support.
  • Drop Python 3.5 support.
  • Switch from pep517 to python-build ( #128).
  • Add --no-build-isolation option so check-manifest can succeed building pep517-based distributions without an internet connection. With --no-build-isolation, you must preinstall the build-system.requires beforehand. ( #128).

0.44 (2020-10-03)

  • Try to avoid passing --recurse-submodules to git ls if the project doesn't use git submodules (i.e. doesn't have a .gitsubmodules file). This should make check-manifest work again with older git versions, as long as you don't use submodules (#124).

0.43 (2020-09-21)

  • Fix collecting files versioned by git when a project has submodules and GIT_INDEX_FILE is set. This bug was triggered when check-manifest was run as part of a git hook ( #122, #123).

Note: check-manifest 0.43 requires git version 2.11 or later.

0.42 (2020-05-03)

  • Added -q/--quiet command line argument. This will reduce the verbosity of informational output, e.g. for use in a CI pipeline.

  • Rewrote the ignore logic to be more compatible with setuptools. This might have introduced some regressions, so please file bugs! One side effect of this is that --ignore (or the ignore setting in the config file) is now handled the same way as global-exclude in a, which means:

    • it's matched anywhere in the file tree
    • it's ignored if it matches a directory

    You can ignore directories only by ignoring every file inside it. You can use --ignore=dir/** to do that.

    This decision is not cast in stone: I may in the future change the handling of --ignore to match files and directories, because there's no reason it has to be setuptools-compatible.

  • Drop Python 2.7 support.

0.41 (2020-02-25)

  • Support PEP 517, i.e. packages using pyproject.toml instead of a (#105).
  • Ignore subcommand stderr unless the subcommand fails. This avoids treating warning messages as filenames. (#110.)

0.40 (2019-10-15)

  • Add Python 3.8 support.

0.39 (2019-06-06)

0.38 (2019-04-23)

  • Add Python 3.7 support.
  • Drop Python 3.4 support.
  • Added GitHub templates to default ignore patterns.
  • Added reading check-manifest config out of tox.ini or pyproject.toml.

0.37 (2018-04-12)

  • Drop Python 3.3 support.

  • Support packages using setuptools_scm (#68).

    Note that setuptools_scm usually makes files obsolete. Having one is helpful only if you intend to build an sdist and then use that sdist to perform further builds, instead of building from a source checkout.

0.36 (2017-11-21)

  • Handle empty VCS repositories more gracefully (#84).

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 (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 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 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 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 (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 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 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 (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 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 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 to
  • Added README.rst, CHANGES.rst,, tox.ini (but no real tests yet),, and a Makefile.
  • Fixed a bug in error reporting (when failed, the user would get TypeError: descriptor '__init__' requires an 'exceptions.Exception' object but received a 'str').