Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
|buildstatus|_ |appveyor|_ |coverage|_
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.
::
$ 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
::
$ 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: [])
You can configure check-manifest to ignore certain file patterns using
a [tool.check-manifest]
section in your pyproject.toml
file or
a [check-manifest]
section in either setup.cfg
or
tox.ini
. Examples::
# pyproject.toml
[tool.check-manifest]
ignore = [".travis.yml"]
# setup.cfg or tox.ini
[check-manifest]
ignore =
.travis.yml
Note that lists are newline separated in the setup.cfg
and
tox.ini
files.
The following options are recognized:
ignore A 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 is ::
PKG-INFO
*.egg-info
*.egg-info/*
setup.cfg
.hgtags
.hgsigs
.hgignore
.gitignore
.bzrignore
.gitattributes
.github/*
.travis.yml
Jenkinsfile
*.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 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.
With pre-commit <https://pre-commit.com>
_, check-manifest can be part of your
git-workflow. Add the following to your .pre-commit-config.yaml
.
.. code-block:: yaml
repos:
- repo: https://github.com/mgedmin/check-manifest
rev: "0.50"
hooks:
- id: check-manifest
If you are running pre-commit without a network, you can utilize
args: [--no-build-isolation]
to prevent a pip install
reaching out to
PyPI. This makes python -m build
ignore your build-system.requires
,
so you'll want to list them all in additional_dependencies
.
.. code-block:: yaml
repos:
- repo: https://github.com/mgedmin/check-manifest
rev: "0.50"
hooks:
- id: check-manifest
args: [--no-build-isolation]
additional_dependencies: [setuptools, wheel, setuptools-scm]
.. |buildstatus| image:: https://github.com/mgedmin/check-manifest/workflows/build/badge.svg?branch=master .. _buildstatus: https://github.com/mgedmin/check-manifest/actions
.. |appveyor| image:: https://ci.appveyor.com/api/projects/status/github/mgedmin/check-manifest?branch=master&svg=true .. _appveyor: https://ci.appveyor.com/project/mgedmin/check-manifest
.. |coverage| image:: https://coveralls.io/repos/mgedmin/check-manifest/badge.svg?branch=master .. _coverage: https://coveralls.io/r/mgedmin/check-manifest
Add Python 3.11 support.
Drop Python 3.6 support.
Exclude more common dev/test files.
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 <https://github.com/mgedmin/check-manifest/issues/153>
).
Note that this reverts a fix for #124 <https://github.com/mgedmin/check-manifest/issues/124>
: git versions before
2.11 are no longer supported.
setuptools_scm
workaround for packages with dashes in the name
(#145 <https://github.com/mgedmin/check-manifest/issues/145>
_).pre-commit <https://pre-commit.com>
__ hook now always uses Python 3.Add Python 3.9 support.
Drop Python 3.5 support.
Switch from pep517
to python-build <https://pypi.org/p/build>
__ (
#128 <https://github.com/mgedmin/check-manifest/pull/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 <https://github.com/mgedmin/check-manifest/pull/128>
__).
--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 <https://github.com/mgedmin/check-manifest/issues/124>
__).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 <https://github.com/mgedmin/check-manifest/issues/122>
,
#123 <https://github.com/mgedmin/check-manifest/pull/123>
).Note: check-manifest 0.43 requires git
version 2.11 or later.
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 MANIFEST.in
, which
means:
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.
PEP 517
, i.e. packages using pyproject.toml instead of a setup.py
(#105 <https://github.com/mgedmin/check-manifest/issues/105>
)... _PEP 517: https://www.python.org/dev/peps/pep-0517/
#110 <https://github.com/mgedmin/check-manifest/issues/110>
_.)pre-commit <https://pre-commit.com>
_
hook (#100 <https://github.com/mgedmin/check-manifest/issues/100>
__).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
.
Drop Python 3.3 support.
Support packages using setuptools_scm
(#68 <https://github.com/mgedmin/check-manifest/issues/68>
__).
Note that setuptools_scm
usually 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.
#84 <https://github.com/mgedmin/check-manifest/issues/84>
__).#74 <https://github.com/mgedmin/check-manifest/issues/74>
__).#73 <https://github.com/mgedmin/check-manifest/pull/73>
__).
Contributed by Loren Gordon.New config/command line option to ignore bad ideas (ignore-bad-ideas)
(issue #67 <https://github.com/mgedmin/check-manifest/issues/67>
__).
Contributed by Brecht Machiels.
Files named .hgsigs
are ignored by default. Contributed by Jakub Wilk.
Drop Python 3.2 support.
Ignore commented-out lines in MANIFEST.in
(issue #66 <https://github.com/mgedmin/check-manifest/issues/66>
__).
Support git submodules
(issue #61 <https://github.com/mgedmin/check-manifest/issues/61>
__).
Revert the zc.buildout support hack from 0.26 because it causes breakage
(issue #56 <https://github.com/mgedmin/check-manifest/issues/56>
__).
Improve non-ASCII filename handling with Bazaar on Windows.
issue #57 <https://github.com/mgedmin/check-manifest/issues/57>
__).Fix detection of git repositories when .git is a file and not a directory (#53 <https://github.com/mgedmin/check-manifest/pull/53>
__). One situation
where this occurs is when the project is checked out as a git submodule.
Apply ignore patterns in subdirectories too (#54 <https://github.com/mgedmin/check-manifest/issues/54>
__).
issue #52 <https://github.com/mgedmin/check-manifest/issues/52>
__).
(The bug -- clearing the environment unnecessarily -- could probably
also cause locale-related problems on other OSes.)Do not complain about missing .gitattributes
file (PR #50 <https://github.com/mgedmin/check-manifest/pull/50>
__).
Normalize unicode representation and case of filenames. (issue #47 <https://github.com/mgedmin/check-manifest/issues/47>
__).
Support installation via zc.buildout better (issue #35 <https://github.com/mgedmin/check-manifest/issues/35>
__).
Drop Python 2.6 support because one of our test dependencies (mock) dropped it. This also means we no longer use environment markers.
setup.py
not being added to the VCS doesn't cause
hard-to-understand errors (issue #46 <https://github.com/mgedmin/check-manifest/issues/46>
__).More reliable svn status parsing; now handles svn externals (issue #45 <https://github.com/mgedmin/check-manifest/issues/45>
__).
The test suite now skips tests for version control systems that aren't
installed (issue #42 <https://github.com/mgedmin/check-manifest/issues/42>
__).
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 <https://github.com/mgedmin/check-manifest/issues/31>
__).
Fix IOError when files listed under version control are missing (issue #32 <https://github.com/mgedmin/check-manifest/issues/32>
__).
Improved wording of the match/do not match messages (issue #34 <https://github.com/mgedmin/check-manifest/issues/34>
__).
Handle a relative --python path (issue #36 <https://github.com/mgedmin/check-manifest/issues/36>
__).
Warn about leading and trailing slashes in MANIFEST.in (issue #37 <https://github.com/mgedmin/check-manifest/issues/37>
__).
Ignore .travis.yml by default (issue #39 <https://github.com/mgedmin/check-manifest/issues/39>
__).
Suggest a rule for Makefile found deeper in the source tree.
issue #29 <https://github.com/mgedmin/check-manifest/issues/29>
__).Restore warning about files included in the sdist but not added to the
version control system (issue #27 <https://github.com/mgedmin/check-manifest/issues/27>
__).
Fix check-manifest relative/pathname
(issue #28 <https://github.com/mgedmin/check-manifest/issues/28>
__).
issue #23 <https://github.com/mgedmin/check-manifest/issues/23>
,
#25 <https://github.com/mgedmin/check-manifest/issues/23>
).issue #21 <https://github.com/mgedmin/check-manifest/issues/21>
__)..coveragerc
.issue #22 <https://github.com/mgedmin/check-manifest/issues/22>
__).issue #19 <https://github.com/mgedmin/check-manifest/issues/19>
__).issue #18 <https://github.com/mgedmin/check-manifest/issues/18>
__).issue #16 <https://github.com/mgedmin/check-manifest/issues/16>
__).
[maurits]Supports packages that do not live in the root of a version control
repository (issue #15 <https://github.com/mgedmin/check-manifest/issues/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 <https://github.com/mgedmin/check-manifest/issues/12>
__).
New command line option: --ignore
(issue #11 <https://github.com/mgedmin/check-manifest/issues/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 <https://github.com/mgedmin/check-manifest/issues/13>
__).
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 <https://github.com/mgedmin/check-manifest/issues/9>
__).
MANIFEST.in
is not ignored even if it hasn't been added to the
VCS yet (issue #7 <https://github.com/mgedmin/check-manifest/issues/7>
__).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 <https://github.com/mgedmin/check-manifest/issues/3>
_).
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 <https://github.com/mgedmin/check-manifest/issues/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 <https://github.com/mgedmin/check-manifest/issues/2>
_).
fullrelease
... _zest.releaser: https://pypi.python.org/pypi/zest.releaser
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'
).
FAQs
Check MANIFEST.in in a Python source package for completeness
We found that check-manifest demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.