使用 dev.py 脚本¶
这个脚本集成了所有开发过程中可能需要用到的命令,执行命令 python dev.py --help
可以查看所有可用的命令和选项。
提示
大多数情况下,dev.py 内部使用绝对路径,
但是执行脚本时最好确保工作目录为项目根目录,避免出现未知的错误。
关于 Python 环境¶
你不需要手动安装任何库,dev.py 在运行时会自动检测依赖并安装它们(确保你有网络连接),
你也不需要手动创建虚拟环境,dev.py 会为当前项目自动创建一个虚拟环境并提示你切换
(当然,如果你已经手动创建了虚拟环境,dev.py 会直接使用它)
运行命令¶
重要
使用 dev.py 前,请确保 git 仓库处于干净状态(没有未提交的更改),
否则命令将中止,可以传递 --ignore-git 或 -i 选项来跳过检查。
使用 dev.py 的基本格式如下:
python dev.py COMMAND [ARGS]...
其中 COMMAND 是子命令,ARGS 是传递给子命令的参数,你可以执行
python dev.py COMMAND --help 来查看子命令的帮助信息。
所有可用的子命令如下:
prep-all¶
python dev.py prep-all [--ignore-git / -i]
执行所有准备工作。
该命令适合克隆仓库后第一次执行,事实上其他所有命令在开始前都会执行一遍 prep-all
的工作确保环境准备就绪,所以你也可以直接执行其他命令来完成准备工作。
format¶
python dev.py format [--ignore-git / -i]
格式化代码。同时也会检测版本号是否有变动,确保所有版本号都和 pyproject.toml 同步。
提示
如果执行 format 以后 git 检测到有更改,会自动帮你生成一次 commit(需要你手动确认),
如果你传递了 --ignore-git 或 -i 选项来跳过检查,那么这个自动 commit
的功能也会被跳过。
重要
提交 PR 或 push 到主分支时,CI 会自动执行该命令来格式化代码,如果产生了更改,CI 会失败, 因此请务必在提交 PR 或 push 之前先执行该命令来格式化代码。
stubs¶
python dev.py stubs [--ignore-git / -i]
静态类型检查。
重要
提交 PR 或 push 到主分支时,CI 会自动执行该命令来检查代码静态类型,如果检查不通过, CI 会失败,因此请务必在提交 PR 或 push 之前先执行该命令来检查代码。
lint¶
python dev.py lint [--ignore-git / -i]
代码质量检查。
重要
提交 PR 或 push 到主分支时,CI 会自动执行该命令来检查代码质量,如果评分低于 9.5,CI 会失败, 因此请务必在提交 PR 或 push 之前先执行该命令来检查代码质量。
docs¶
python dev.py docs [--full / -f] [--quiet / --no-quiet] [--ignore-git / -i]
生成文档。
--full / -f重新生成完整文档,忽略之前的构建缓存。适用于某些文档内容没有更新但是索引更新了的情况。
--quiet / --no-quiet是否在生成文档时显示输出。
警告
该选项默认为
--quiet,只在生成文档失败时显示错误信息, 这会被判断为生成文档失败。而如果你传递了--no-quiet选项来显示生成文档的输出,脚本无法通过是否有输出来判断文档是否生成成功, 需要你手动检查输出信息来判断文档是否生成成功。
test¶
python dev.py test [--ignore-git / -i] [mod]...
运行测试。
mod可选参数,指定要测试的模块,如果不指定则测试所有模块。可以指定多个模块。
e.g. python dev.py test test/test_color.py test/test_curve.py
重要
提交 PR 或 push 到主分支时,CI 会自动执行该命令来运行测试,如果测试失败,CI 会失败, 因此请务必在提交 PR 或 push 之前先执行该命令来确认测试能够成功。
build¶
python dev.py build [--ignore-git / -i] [--install / --no-install] [target]
构建项目。
--install / --no-install是否在构建完成后安装项目(常规安装 [1])。默认为
--no-install,即不安装项目。target指定构建产物(即 whl 文件)的输出目录,默认为项目根目录下的 dist 目录。
备注
build 命令只会构建当前系统和架构的 whl 文件,fantas 支持单机器构建全平台,
参见 build-all 命令。
install¶
python dev.py install [--ignore-git / -i]
安装项目(可编辑安装 [2])。
此命令不需要提前构建项目,速度比 build 命令快很多,
且安装后对源代码的修改会实时生效,适合开发过程中使用。
build-all¶
python dev.py build-all [--ignore-git / -i] [--yes / -y] [target]
构建所有支持的平台和架构的 whl 文件。
--yes / -y跳过确认提示。
警告
该命令适合在 CI 中使用,因为如果命令中途失败,可能会污染开发环境, 所以本地运行前会要求输入确认信息来继续。
pre-pr¶
python dev.py pre-pr [--ignore-git / -i]
本地检查是否可以提交 PR。
这是一条简化命令,如果你不想单独输入前面的某些命令, 可以直接执行该命令来完成所有检查工作,以确保你的代码符合提交 PR 的要求。 推荐在提交 PR 或 push 之前先执行该命令来检查代码,以避免 CI 检查失败。
release¶
python dev.py release [--ignore-git / -i] [--yes / -y]
创建 release/* 分支。
--yes / -y跳过确认提示。
fantas 的发布是自动化的,通过推送一个 release/* 分支到远程仓库来触发 GitHub Actions 工作流来完成发布工作,该命令用于快捷创建并推送 release/* 分支。