[![Actions 状态][actions-badge]][actions-link] [![GitHub 讨论][github-discussions-badge]][github-discussions-link] [![ReadTheDocs 实时文档][rtd-badge]][rtd-link]
[![PyPI 版本][pypi-version]][pypi-link] [![PyPI 平台][pypi-platforms]][pypi-link]
基于 Scientific Python 开发者指南的新 Python 项目 [copier][]/[cookiecutter][] 模板。与其他 Python 包模板相比,它有何不同?
github.com
网址(默认),则支持 GitHub Actions,否则添加实验性的 GitLab CI 支持。sp-repo-review
][pypi-link] 来评估现有仓库是否符合指南,并集成了 WebAssembly 版本。所有检查都有交叉链接。请确保你已阅读 [Scientific-Python 开发指南][],并可能在一两个项目中使用过。这不是一个最小示例或教程。它是一个有用的工具集合,用于使用 cookiecutter 启动新项目,或为现有项目手动复制单个文件(从 {{cookiecutter.project_name}}/
)。
在生成过程中,你可以为你的包选择以下后端:
目前,对于纯 Python 项目,最佳选择可能是 hatch,对于二进制项目,最佳选择可能是 scikit-build(如 scikit-build-core + pybind11 选项)。
安装 copier
和 copier-templates-extensions
。使用 [pipx][],命令如下:
pipx install copier pipx inject copier copier-templates-extensions
现在,运行 copier 生成你的项目:
copier copy gh:scientific-python/cookie <pkg> --trust
(<pkg>
是放置新项目的路径。如果 copier 版本较旧,请使用 --UNSAFE
而不是 --trust
)
你将获得更好的 CLI 体验,包括答案验证。你还将获得一个 .copier-answers.yml
文件,允许你在将来进行更新。
注意:添加
--vcs-ref=HEAD
以获取最新版本,而不是最后标记的版本;HEAD 始终通过测试(这也是 cookiecutter 使用的版本)。
安装 cookiecutter,如果你使用 brew,最好使用 brew install cookiecutter
,否则使用 pipx install cookiecutter
(或在下面的命令前加上 pipx run
,并跳过安装)。然后运行:
cookiecutter gh:scientific-python/cookie
如果你使用的是 cookiecutter 2.2.3+,你将像 copier 一样获得选项的详细描述!
你也可以使用 [cruft][],它增加了更新 cookiecutter 项目的能力。使用 pipx install cruft
安装(或在下面的命令前加上 pipx run
,并跳过安装)。然后运行:
cruft create gh:scientific-python/cookie
检查关键设置文件、pyproject.toml
,可能还有 setup.cfg
和 setup.py
(pybind11 示例)。更新 README.md
。同时更新和添加 docs/
中的文档。
有一些示例依赖项和最低 Python 版本 3.8,你可以根据实际需要/想要的进行更改。还有一个基本的向后兼容结构,包含一个小型类型示例。
[docs]
额外依赖[test]
额外依赖仅限 Setuptools:
setup.cfg
控制,并有一个名义上的 setup.py
。
setuptools_scm
处理
MANIFEST.in
setup.cfg
你可以使用 [nox][] 在本地进行测试:
# 查看所有命令 nox -l # 运行特定检查 nox -s "lint(setuptools)" # 在项目 noxfile 上运行 noxfile 命令 nox -s "nox(whey)" -- docs
如果你本地没有 nox
,可以使用 [pipx][],例如 pipx run nox
。
[Hypermodern-Python][hypermodern]是另一个值得关注的项目,它与本项目有许多相似之处,比如每个功能都有详细的文档说明,并使用了许多相同的工具。它的功能集略有不同,更加注重GitHub Actions - 如果你不想使用GHA,我们的大部分指南都可以很容易地适应其他CI系统。它强制使用Poetry(而不是提供后端选择),并且不支持编译项目。目前它将所有开发依赖项都放入一个共享环境中,导致解析时间长且容易发生冲突。它也没有按照预期方式使用pre-commit。此外,它还包含相当多的自定义代码。
本指南、cookiecutter和repo-review的大部分内容最初是Scikit-HEP的一部分。这些项目在2023年Scientific-Python开发者峰会期间与[NSLS-II][]指南合并、泛化和整合。
sp-repo-review
为repo-review提供基于[Scientific-Python开发指南][](位于scientific-python/cookie)的检查。
此工具可以检查仓库的风格。使用方法如下:
pipx run 'sp-repo-review[cli]' <仓库路径>
这将生成一个结果列表 - 绿色对勾表示遵循了该规则,红色叉号表示未遵循。黄色警告标志表示由于之前的必要检查失败,该检查被跳过。有些检查可能会失败,这没关系 - 目的是让你注意到所有可能的问题,而不是强制遵守任意的检查。将来可能会有一种方法来标记忽略的检查。
例如,GH101