用于使用JSON Schema检查'pyproject.toml'文件的验证库和CLI工具
项目描述
validate-pyproject
由JSON Schema定义驱动的对pyproject.toml的自动检查
描述
在PEP 517 和 PEP 518 的批准下,Python社区转向了软件打包标准化的强烈关注,这使得在开发过程中选择工具时更加自由,并确保使用不同技术创建的包可以相互操作,无需自定义安装程序。
当PEP 621 也获得批准,作为指定项目元数据和依赖项的标准化方式时,这种转变变得更加明显。
validate-pyproject 就是在这个背景下诞生的,其使命是验证 pyproject.toml 文件,并确保它们符合标准和PEP。在幕后,validate-pyproject 依赖于 JSON Schema 文件,这些文件本身也是检查特定数据结构是否符合一定规范的标准化方式。
用法
使用 validate-pyproject 最简单的方法是通过命令行界面(CLI)。要开始使用,您需要安装此软件包,这可以使用 pipx 很容易地完成。
$ pipx install 'validate-pyproject[all]'
现在,您可以将 validate-pyproject 作为命令行工具使用。
# in you terminal
$ validate-pyproject --help
$ validate-pyproject path/to/your/pyproject.toml
您还可以在您的 Python 脚本或项目中使用 validate-pyproject。
# in your python code
from validate_pyproject import api, errors
# let's assume that you have access to a `loads` function
# responsible for parsing a string representing the TOML file
# (you can check the `toml` or `tomli` projects for that)
pyproject_as_dict = loads(pyproject_toml_str)
# now we can use validate-pyproject
validator = api.Validator()
try:
validator(pyproject_as_dict)
except errors.ValidationError as ex:
print(f"Invalid Document: {ex.message}")
为此,不要忘记将其添加到您的 虚拟环境 中,或将其指定为 项目 或 库依赖项。
有关 validate-pyproject 及其 Python API 的更多详细信息,请参阅我们的文档(https://validate-pyproject.readthedocs.io),其中包含 使用的 JSON 模式 的描述、在 预编译 方式 中使用它的说明以及有关使用您自己的 插件 扩展验证的信息。
插件
validate-pyproject-schema-store 插件包含了与 pyproject.toml 相关的 SchemaStore 条目的 vendored 复制品。您甚至可以使用 [store] 额外选项来安装它。
$ pipx install ‘validate-pyproject[all,store]’
SchemaStore 中的一些工具也集成了 validate-pyproject 插件,如 cibuildwheel 和 scikit-build-core。然而,除非您想锁定这些工具的特定版本,否则 SchemaStore 的副本比安装整个软件包要轻量。
如果您想为您自己的工具编写自定义插件,请考虑也将其贡献给 SchemaStore。
pre-commit
validate-pyproject 可以作为 pre-commit 钩子安装。
---
repos:
- repo: https://github.com/abravalheri/validate-pyproject
rev: <insert current version here>
hooks:
- id: validate-pyproject
# Optional extra validations from SchemaStore:
additional_dependencies: ["validate-pyproject-schema-store[all]"]
默认情况下,此 pre-commit 钩子只会验证项目仓库根目录下的 pyproject.toml 文件。您可以通过使用 files 参数定义一个自定义的正则表达式模式来自定义它。
您还可以使用 pre-commit autoupdate 来更新到 validate-pyproject 的最新稳定版本(推荐)。
您还可以使用 validate-pyproject-schema-store 作为 pre-commit 钩子,这允许 pre-commit 锁定并更新该文件而不是 validate-pyproject 本身。
注意
该项目及其姊妹项目 ini2toml 是在 PyScaffold 的背景下创建的,目的是帮助将现有项目迁移到在 setuptools 上提供 PEP 621 样式配置时。有关 PyScaffold 的详细信息和使用说明,请参阅 https://pyscaffold.org/。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
validate_pyproject-0.20.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 871946e44b9c35c39eab2431e2d3e54d2657c01ffdfce1ff8e0fcb2fa0261e15 |
|
MD5 | 40ef561b1b781083ec86071aaf65f8c0 |
|
BLAKE2b-256 | d50bdccd4a3df9e1497991277cab840b963a8bdc75f9d6cd776bb7100ace9941 |
validate_pyproject-0.20.2-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5f75f413d5d0919149c1101e116e67ca1b3370a113db734e0a67a38e57793b84 |
|
MD5 | b4271dae95c9d1f8a817e015f8d92ba5 |
|
BLAKE2b-256 | 5def4648804cde67b12e73ac94ef2f6c609512ce429ce49d56d5390a72157bee |