可以对仓库进行检查的框架
项目描述
repo-review
这是一个用于构建检查的框架,用于检查存储库是否遵循指南。本身并不做任何事情 - 它至少需要安装一个插件。
安装一个或多个插件后,它将生成一个结果列表 - 绿色勾号表示遵循了此规则,红色叉号表示未遵循规则。黄色警告标志表示由于之前的必需检查失败而跳过了检查。支持四种输出格式: rich
, svg
, html
和 json
。
插件
以下是一些已知的插件。欢迎您提出将您的插件添加到该列表的请求。
- sp-repo-review:基于Scientific-Python 开发指南在scientific-python/cookie上的检查。
- validate-pyproject:增加检查pyproject部分的验证,也支持插件(如validate-pyproject-schema-store)。
repo-review
本身也是validate-pyproject的插件,允许您验证pyproject.toml
中的[tool.repo-review]
部分。
使用sp-repo-review和validate-pyproject的现场WebAssembly演示在此可用。
运行repo-review
Repo-review支持多种运行方式
- 从命令行在本地文件夹(或多个文件夹)中。
- 在GitHub上的远程仓库中(
gh:org/repo@branch
)通过命令行。 - 从WebAssembly在Pyodide中(示例在
docs/index.html
)。 - 从pre-commit(请参阅那里的注意事项)。
- 从GitHub Actions。
- 从Python。
在安装时,请确保还安装了至少一个插件,因为repo-review
没有集成检查。如果您正在使用命令行界面,请确保包含cli
额外(repo-review[cli]
)。一些插件,如sp-repo-review
,支持直接运行,例如
pipx run sp-repo-review[cli] <args>
如果包的根不是仓库根,请传递--package-dir a/b/c
。
配置
Repo-review 支持通过pyproject.toml进行配置。
[tool.repo-review]
select = ["A", "B", "C100"]
ignore = ["A100"]
如果命令行上提供了--select
或--ignore
,它们将覆盖pyproject.toml配置。
与其他框架的比较
Repo-review受到了像Flake8和Ruff这样的框架的启发。它主要有两点不同:它被设计成查看配置文件而不是Python文件;这意味着它也只需要仓库的一部分(因为大多数文件不是配置文件)。它还被设计成可以在外部仓库上运行,而不是在仓库内部预先配置并运行(它可以这样做)。这些差异也为WebAssembly/远程版本提供了动力,它只需要调用几个API来查看插件感兴趣的文件。
所以,如果您想检查Python代码,请使用Flake8或Ruff。但如果您想检查Flake8或Ruff的配置,请使用repo-review!通常,repo-review插件更关注要求某些内容存在,例如确保所有仓库都有一些pre-commit检查。
repo-review和插件的开发
该项目旨在让开发者和设计检查变得有趣且简单 - 它需要并使用了Python 3.10,并使用了3.9和3.10中的许多新功能。它可能并不完全符合传统,但它使插件开发变得非常简单。它可以在本地、远程和WebAssembly(使用Pyodide)中工作。请参阅文档。
有几个关键设计非常实用,使这一切成为可能。首先,所有路径都被处理为可遍历的。这允许基于open_url
的简单可遍历实现提供用于Webapp的Web界面。它也允许zipfile.Path
同样工作 - 不需要提取。
检查 可以将 fixtures (例如 pytest)作为参数请求。检查文件可以根据需要添加新的 fixtures。Fixtures 是通过入口点指定的,并且也可以接受任何其他 fixtures 作为参数 - root
和 package
fixtures 分别代表你正在检查的仓库和包的根目录,是其他 fixtures 的基础,这些 fixtures 是按拓扑排序并缓存的。pyproject
也被提供。通过返回一个包含检查的字典的入口点来指定检查;这也可以接受 fixtures,允许动态检查列表。
检查文件不依赖于主库,并且可以被扩展(类似于 Flake8)。你可以通过 entry-points 注册新的检查文件 - 因此,通过自定义检查或自定义 fixtures 来扩展它既简单又简单。不需要子类化或对基本库进行任何操作 - 不需要依赖 repo-review。
检查尽可能简单,以便于编写。检查是一个具有名称(1-2个字母 + 数字)和文档字符串(检查消息)的类。它应定义一组 requires
,其中包含它所依赖的任何检查(按名称),并具有一个检查类方法。此方法的文档字符串是失败消息,并支持替换。此方法的参数是 fixtures,其中 root
或 package
是内置的,提供可遍历的对象。任何其他 fixtures 都可以通过名称访问。新的 fixture 可以使用任何其他 fixtures,并可以产生任何东西;fixtures 是按拓扑排序的、预计算的并缓存的。
运行程序将按拓扑排序检查,没有运行的检查将得到 None
结果,并且不会运行检查方法。前端(Rich 驱动的 CLI 或 Pyodide 网页应用程序)将仅当结果为 False
时渲染 markdown 格式的检查文档字符串。
检查按 Family 组织。插件可以自定义显示名称、更改排序顺序,并添加可选的(动态)描述。与其他收集函数一样,family 入口点也支持 fixtures。
链接
此项目启发了 Try-PyHF,Scikit-HEP 中一个高能物理包的接口。
此项目启发了 abSENSE,一个到 abSENSE 的网络接口。
此项目是为 Scikit-HEP 开发的,后来迁移到 Scientific-Python。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
repo_review-0.11.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6e6eed2b8a6773a8f9684ab0f043d47b12383b9e1c546630fc406ecb63aa39bd |
|
MD5 | 64317910c17f7dd2b325e04cb1882e92 |
|
BLAKE2b-256 | b1057e2c62219946c22492d84797cafa2883ff1765da5b8017b618fc59098c05 |
repo_review-0.11.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8ea09f390db19acb1fed0aaa7a289eba1a9afb8e39d1af5f02720b4eeb9968c0 |
|
MD5 | edb395c58019a422a8ba04d45b9cfec0 |
|
BLAKE2b-256 | d36aaf48df8c62a87b71c0210579e649145d7c55ae3a4b1d7ea1a8b10d28efc2 |