跳转到主要内容

检查Python源包中的MANIFEST.in以检查完整性

项目描述

check-manifest

buildstatus appveyor coverage

您是Python开发者吗?您是否已上传包到Python包索引?您是否意外地上传了缺少某些文件的 损坏 包?如果是这样,check-manifest就是为您准备的。

快速入门

$ pip install check-manifest

$ cd ~/src/mygreatpackage
$ check-manifest

您可以让脚本帮助您更新您的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: [])

配置

您可以使用 [tool.check-manifest] 部分配置check-manifest以忽略某些文件模式,该部分位于您的 pyproject.toml 文件中或 setup.cfgtox.ini 中的 [check-manifest] 部分。示例

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

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

请注意,在 setup.cfgtox.ini 文件中,列表由换行符分隔。

以下选项被认可

ignore

check-manifest将忽略的文件名模式列表。如果您想保留版本控制系统中不应包含在源分发中的文件,请使用此选项。默认忽略列表是

PKG-INFO
*.egg-info
*.egg-info/*
setup.cfg
.hgtags
.hgsigs
.hgignore
.gitignore
.bzrignore
.gitattributes
.github/*
.travis.yml
Jenkinsfile
*.mo
忽略默认规则

如果设置为 true,您的 ignore 模式将替换默认忽略列表,而不是添加到它。

忽略不良想法

check-manifest 生成的文件检查将忽略的文件名模式列表。如果您想在版本控制系统中保留生成的文件,尽管通常这是一个糟糕的想法,请使用此功能。

版本控制集成

使用 pre-commit,check-manifest 可以成为您 git 工作流程的一部分。将以下内容添加到您的 .pre-commit-config.yaml 文件中。

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

如果您在没有网络的条件下运行 pre-commit,可以使用 args: [--no-build-isolation] 以防止 pip install 联接到 PyPI。如果您有 pip / setuptools / wheel 以外的 build-system.requires,则需要在 additional_dependencies 中列出这些依赖项。

repos:
-   repo: https://github.com/mgedmin/check-manifest
    rev: ...  # pick a valid tag / revision
    hooks:
    -   id: check-manifest
        args: [--no-build-isolation]
        additional_dependencies: [setuptools-scm]

变更日志

0.49 (2022-12-05)

  • 添加 Python 3.11 支持。

  • 删除 Python 3.6 支持。

  • 排除更多常见的开发/测试文件。

0.48 (2022-03-13)

  • 添加 Python 3.10 支持。

  • 在听到关于 PEP-680 的信息后,将配置文件从 toml 更改为 tomli。tomli 将作为 tomllib 包包含在 Python 3.11 标准库中,而 toml 显然不再维护。

  • 修复在子目录中存在 .gitmodules 时对子模块的支持(#153)。注意,这将撤销对 #124 的修复:不再支持 2.11 以前的 git 版本。

0.47 (2021-09-22)

  • 修复针对名称中包含破折号的包的 setuptools_scm 修复方法(#145)。

0.46 (2021-01-04)

  • 现在 pre-commit 插件始终使用 Python 3。

0.45 (2020-10-31)

  • 添加 Python 3.9 支持。

  • 删除 Python 3.5 支持。

  • pep517 切换到 python-build#128)。

  • 添加 --no-build-isolation 选项,以便在没有互联网连接的情况下,check-manifest 可以成功构建基于 pep517 的分发。使用 --no-build-isolation,您必须预先安装 build-system.requires。(#128)。

0.44 (2020-10-03)

  • 如果项目不使用 git 子模块(即没有 .gitsubmodules 文件),则尝试避免将 --recurse-submodules 传递给 git ls。这应该使 check-manifest 能够在旧版本的 git 上再次工作,只要您不使用子模块(#124)。

0.43 (2020-09-21)

  • 修复在项目有子模块且设置了 GIT_INDEX_FILE 时通过 git 版本控制收集文件的问题。此错误在 check-manifest 作为 git 钩子的一部分运行时触发(#122#123)。

注意:check-manifest 0.43 需要 git 版本 2.11 或更高版本。

0.42 (2020-05-03)

  • 添加了 -q/--quiet 命令行参数。这将减少信息输出(例如在 CI 管道中使用时)的详细程度。

  • 重新编写了忽略逻辑,使其与 setuptools 更兼容。这可能会引入一些回归,所以请提交错误报告!一个副作用是,现在 --ignore(或配置文件中的 ignore 设置)的处理方式与 MANIFEST.in 中的 global-exclude 相同,这意味着

    • 它在文件树中的任何位置都可以匹配

    • 如果匹配到目录,则忽略

    您可以只通过忽略目录中的所有文件来忽略目录。您可以使用 --ignore=dir/** 来实现这一点。

    这个决定并非不可更改:我可能在将来改变对 --ignore 的处理方式以匹配文件和目录,因为没有任何理由它必须是 setuptools 兼容的。

  • 停止支持 Python 2.7。

0.41 (2020-02-25)

  • 支持 PEP 517,即使用 pyproject.toml 而不是 setup.py 的包 (#105)。

  • 除非子命令失败,否则忽略子命令的 stderr。这避免了将警告消息视为文件名。(#110)

0.40 (2019-10-15)

  • 添加 Python 3.8 支持。

0.39 (2019-06-06)

  • 现在您可以将 check-manifest 作为 pre-commit 插件使用 (#100)。

0.38 (2019-04-23)

  • 添加 Python 3.7 支持。

  • 停止支持 Python 3.4。

  • 将 GitHub 模板添加到默认忽略模式。

  • tox.inipyproject.toml 读取 check-manifest 配置。

0.37 (2018-04-12)

  • 停止支持 Python 3.3。

  • 支持使用 setuptools_scm 的包 (#68)。

    请注意,setuptools_scm 通常使 MANIFEST.in 文件变得过时。只有当您打算构建 sdist 并使用该 sdist 来执行进一步的构建时,才需要它,而不是从源签出进行构建。

0.36 (2017-11-21)

  • 更优雅地处理空 VCS 存储库 (#84)。

0.35 (2017-01-30)

  • Python 3.6 支持。

0.34 (2016-09-14)

  • 修复由于存在只读文件而引起的 WindowsError (#74)。

0.33 (2016-08-29)

  • 修复由于子目录中的 git 子模块而引起的 WindowsError (#73)。由 Loren Gordon 贡献。

0.32 (2016-08-16)

  • 添加新的配置/命令行选项来忽略不良想法(ignore-bad-ideas)(问题 #67)。由 Brecht Machiels 贡献。

  • 默认忽略名为 .hgsigs 的文件。由 Jakub Wilk 贡献。

0.31 (2016-01-28)

  • 停止支持 Python 3.2。

  • 忽略 MANIFEST.in 中的注释行 (问题 #66)。

0.30 (2015-12-10)

  • 支持 git 子模块 (问题 #61)。

  • 撤销 0.26 中 zc.buildout 支持的漏洞修复,因为它导致了破坏 (问题 #56)。

  • 在 Windows 上改进 Bazaar 的非 ASCII 文件名处理。

0.29 (2015-11-21)

  • 修复仅使用命令名而不是路径中可找到的命令的 –python (问题 #57)。

0.28 (2015-11-11)

  • 修复当 .git 是文件而不是目录时检测 git 存储库的问题 (#53)。这种情况发生在项目作为 git 子模块签出时。

  • 在子目录中也应用忽略模式 (#54)。

0.27 (2015-11-02)

  • 修复 0.26 中引入的 Windows 上的完全破坏问题 (问题 #52)。 (这个错误——不必要地清除环境——可能也会在其他操作系统上引起与区域设置相关的问题。)

0.26 (2015-10-30)

  • 不要抱怨缺少 .gitattributes 文件 (PR #50)。

  • 统一文件名的 Unicode 表示法和大小写。(问题 #47)。

  • 更好地支持通过 zc.buildout 安装 (问题 #35)。

  • 由于我们的测试依赖之一(mock)停止支持 Python 2.6,因此停止支持 Python 2.6。这也意味着我们不再使用环境标记。

0.25 (2015-05-27)

  • 在 setup.py 中停止动态计算 install_requires:在有 pip 7 轮缓存的情况下,这不太好用。请使用 PEP-426 环境标记代替(这意味着我们现在需要 setuptools >= 0.7,pip >= 6.0,wheel >= 0.24)。

0.24 (2015-03-26)

  • 确保 setup.py 未添加到 VCS 中不会导致难以理解的错误(问题 #46)。

0.23 (2015-02-12)

  • 更可靠的 svn 状态解析;现在可以处理 svn externals(《问题 #45》)。

  • 测试套件现在会跳过未安装的版本控制系统的测试(《问题 #42》)。

0.22 (2014-12-23)

  • 默认情况下输出更简洁;使用新的 -v--verbose)标志来查看所有详细信息。

  • 如果缺少 MANIFEST.in,则警告用户(《问题 #31》)。

  • 修复在版本控制下列出的文件缺失时的 IOError(《问题 #32》)。

  • 改进匹配/不匹配消息的措辞(《问题 #34》)。

  • 处理相对的 –python 路径(《问题 #36》)。

  • 警告 MANIFEST.in 中的前后斜杠(《问题 #37》)。

  • 默认情况下忽略 .travis.yml(《问题 #39》)。

  • 对源树中更深处的 Makefile 提出规则建议。

0.21 (2014-06-13)

  • 将版本控制的文件复制到干净的临时目录中时,不要丢弃 setup.cfg(《问题 #29》)。

0.20 (2014-05-14)

  • 恢复关于 sdist 中包含但未添加到版本控制系统中的文件警告(《问题 #27》)。

  • 修复 check-manifest relative/pathname(《问题 #28》)。

0.19 (2014-02-09)

  • 更准确的 MANIFEST.in 排除规则解析。

  • 在 Windows 兼容性方面投入了一些努力。

  • 处理非 ASCII 文件名,只要它们在您的区域设置中有效(《问题 #23》、《#25》)。

0.18 (2014-01-30)

  • 当外部命令找不到时,显示更友好的错误信息(《问题 #21》)。

  • .coveragerc 添加建议模式。

  • 支持 Python 2.6(《问题 #22》)。

0.17 (2013-10-10)

  • 读取现有的 MANIFEST.in 文件以获取要忽略的文件(《问题 #19》)。

0.16 (2013-10-01)

  • 修复在 svn 用户名超过 12 个字符时的情况下的 Subversion 状态解析(《问题 #18》)。

0.15 (2013-09-20)

  • 对所有文件路径进行归一化,避免一些目录重复遗漏。 (《问题 #16》) [maurits]

0.14 (2013-08-28)

  • 支持不位于版本控制仓库根目录的包(《问题 #15》)。

  • 更可靠的 svn 支持:检测已添加但未提交的文件(或已提交但未更新的文件)。

  • 许可证已从 GPL (v2 或更高版本) 更改为 MIT(《问题 #12》)。

0.13 (2013-07-31)

  • 新增命令行选项:–ignore(《问题 #11》)。由 Steven Myint 贡献。

  • 新增命令行选项:-p, –python。默认为运行 check-manifest 的 Python。修复了需要 Python 3 来运行 setup.py 的包的问题(《问题 #13》)。

0.12 (2013-05-15)

  • Makefile 添加建议模式。

  • 更通用的建议模式,应涵盖几乎所有内容。

  • zest.releaser 集成:跳过非 Python 软件包的 check-release 检查(问题 #9)。

0.11 (2013-03-20)

  • 确保 MANIFEST.in 即使尚未添加到版本控制系统(VCS)中也不会被忽略(问题 #7)。

0.10 (2013-03-17)

  • check-manifest --version 现在会打印版本号。

  • 不要为没有为目录添加规则而道歉(尤其是已经添加了包含该目录内文件的规则之后)。

  • Python 3 的支持由 Steven Myint 贡献。

  • 默认忽略模式可以在 setup.cfg 中配置(问题 #3)。

0.9 (2013-03-06)

  • .travis.yml 添加建议模式。

  • 当 check-manifest -u(或 -c)不知道如何编写匹配特定文件的规则时,它现在会明确道歉。

  • 在运行 python setup.py sdist 之前将源代码树复制到临时目录,以避免 setuptools 插件或过时的 *.egg-info/SOURCES.txt 文件带来的副作用(问题 #1)。

  • 如果 *.egg-info*.mo 实际已检查入 VCS,则发出警告。

  • 如果 *.mo 文件存在于 sdist 中但不在 VCS 中,不要抱怨(问题 #2)。

0.8 (2013-03-06)

  • zest.releaser 的入口点。如果您同时安装 zest.releaser 和 check-manifest,则在 fullrelease 期间会询问您是否要检查您的清单。

0.7 (2013-03-05)

  • 首次从 Python 包索引发布的版本。

  • https://gist.github.com/4277075 移动到 https://github.com/mgedmin/check-manifest

  • 添加了 README.rst、CHANGES.rst、setup.py、tox.ini(但还没有真正的测试)、MANIFEST.in 和 Makefile。

  • 修复了错误报告中的错误(当 setup.py 失败时,用户会收到 TypeError: descriptor ‘__init__’ requires an ‘exceptions.Exception’ object but received a ‘str’)。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

check-manifest-0.49.tar.gz (40.3 kB 查看哈希值)

源代码

构建分发

check_manifest-0.49-py3-none-any.whl (20.4 kB 查看哈希值)

上传时间 Python 3

支持