Package: check-manifest
check-manifestAre you a Python developer?  Have you uploaded packages to the Python Package
Index?  Have you accidentally uploadedbrokenpackages with some files
missing?  If so, check-manifest is for you.Quick start$ pip install check-manifest

$ cd ~/src/mygreatpackage
$ check-manifestYou 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.iniCommand-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: [])ConfigurationYou can configure check-manifest to ignore certain file patterns using
a[tool.check-manifest]section in yourpyproject.tomlfile or
a[check-manifest]section in eithersetup.cfgortox.ini. Examples:# pyproject.toml
[tool.check-manifest]
ignore = [".travis.yml"]

# setup.cfg or tox.ini
[check-manifest]
ignore =
    .travis.ymlNote that lists are newline separated in thesetup.cfgandtox.inifiles.The following options are recognized:ignoreA list of 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 isPKG-INFO
*.egg-info
*.egg-info/*
setup.cfg
.hgtags
.hgsigs
.hgignore
.gitignore
.bzrignore
.gitattributes
.github/*
.travis.yml
Jenkinsfile
*.moignore-default-rulesIf set totrue, yourignorepatterns will replace the default
ignore list instead of adding to it.ignore-bad-ideasA list of 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.Version control integrationWithpre-commit, check-manifest can be part of your
git-workflow. Add the following to your.pre-commit-config.yaml.repos:-repo:https://github.com/mgedmin/check-manifestrev:"0.49"hooks:-id:check-manifestIf you are running pre-commit without a network, you can utilizeargs:[--no-build-isolation]to prevent apip installreaching out to
PyPI.  If you have additionalbuild-system.requiresoutside of pip /
setuptools / wheel you will want to list those inadditional_dependencies.repos:-repo:https://github.com/mgedmin/check-manifestrev:...# pick a valid tag / revisionhooks:-id:check-manifestargs:[--no-build-isolation]additional_dependencies:[setuptools-scm]Changelog0.49 (2022-12-05)Add Python 3.11 support.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.gitmodulesexists 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)Fixsetuptools_scmworkaround for packages with dashes in the name
(#145).0.46 (2021-01-04)Thepre-commithook now always uses Python 3.0.45 (2020-10-31)Add Python 3.9 support.Drop Python 3.5 support.Switch frompep517topython-build(#128).Add--no-build-isolationoption so check-manifest can succeed building
pep517-based distributions without an internet connection.  With--no-build-isolation, you must preinstall thebuild-system.requiresbeforehand. (#128).0.44 (2020-10-03)Try to avoid passing--recurse-submodulestogit lsif the project
doesn’t use git submodules (i.e. doesn’t have a.gitsubmodulesfile).
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 bygitwhen a project has submodules andGIT_INDEX_FILEis set.  This bug was triggered whencheck-manifestwas run as part of a git hook (#122,#123).Note: check-manifest 0.43 requiresgitversion 2.11 or later.0.42 (2020-05-03)Added-q/--quietcommand 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 theignoresetting in the config file)
is now handled the same way asglobal-excludein aMANIFEST.in, which
means:it’s matched anywhere in the file treeit’s ignored if it matches a directoryYou 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--ignoreto 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)SupportPEP 517, i.e. packages using pyproject.toml instead of a setup.py
(#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)You can now use check-manifest as apre-commithook (#100).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 oftox.iniorpyproject.toml.0.37 (2018-04-12)Drop Python 3.3 support.Support packages usingsetuptools_scm(#68).Note thatsetuptools_scmusually makes MANIFEST.in 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.hgsigsare 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.gitattributesfile (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 suresetup.pynot 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).Fixcheck-manifestrelative/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 forMakefile.More generic suggestion patterns, should cover almost anything.zest.releaserintegration: skip check-release for non-Python packages
(issue #9).0.11 (2013-03-20)Make sureMANIFEST.inis not ignored even if it hasn’t been added to the
VCS yet (issue #7).0.10 (2013-03-17)check-manifest--versionnow 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 insetup.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-infoor*.mois actually checked into the VCS.Don’t complain if*.mofiles are present in the sdist but not in the VCS
(issue #2).0.8 (2013-03-06)Entry point forzest.releaser.  If you install both zest.releaser and
check-manifest, you will be asked if you want to check your manifest duringfullrelease.0.7 (2013-03-05)First release available from the Python Package Index.Moved fromhttps://gist.github.com/4277075tohttps://github.com/mgedmin/check-manifestAdded 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 getTypeError: descriptor ‘__init__’ requires an ‘exceptions.Exception’ object
but received a ‘str’).