使用 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/* 分支。