贡献¶
sqlite-utils
的开发在 sqlite-utils GitHub 仓库进行。
对软件的所有改进都应从一个 issue 开始。阅读 我如何构建一个功能 以详细了解构建错误修复或增强功能的推荐流程。
获取代码¶
要在本地处理此库,首先检出代码。然后创建一个新的虚拟环境
git clone git@github.com:simonw/sqlite-utils
cd sqlite-utils
python3 -mvenv venv
source venv/bin/activate
或者如果你正在使用 pipenv
pipenv shell
在虚拟环境中运行 sqlite-utils
应该会运行你本地可编辑版本的工具。你可以使用 which sqlite-utils
来确认你正在运行的是虚拟环境中的版本。
运行测试¶
安装依赖和测试依赖
pip install -e '.[test]'
运行测试
pytest
构建文档¶
构建文档,首先安装文档依赖
pip install -e '.[docs]'
然后从 docs/
目录运行 make livehtml
,以在端口 8000 启动一个服务器,该服务器将提供文档并在你编辑 .rst
文件时进行实时重载。
cd docs
make livehtml
cog 工具用于维护文档的某些部分。你可以这样运行它
cog -r docs/*.rst
代码检查和格式化¶
sqlite-utils
使用 Black 进行代码格式化,以及 flake8 和 mypy 进行代码检查和类型检查。
Black 作为 pip install -e '.[test]'
的一部分安装 - 你可以在项目根目录运行它来格式化你的代码。
black .
要安装 mypy
和 flake8
,运行以下命令
pip install -e '.[flake8,mypy]'
然后可以在项目根目录这样运行这两个命令
flake8
mypy sqlite_utils
这三个工具都会在每次提交和拉取请求时由我们的 CI 机制运行。
使用 Just 和 pipenv¶
如果你安装了 Just 和 pipenv,你可以使用它们来管理你的本地开发环境。
创建虚拟环境并安装所有开发依赖,运行
cd sqlite-utils
just init
运行所有测试和代码检查工具
just
运行测试,或按名称运行特定的测试模块或测试
just test # All tests
just test tests/test_cli_memory.py # Just this module
just test -k test_memory_no_detect_types # Just this test
只运行代码检查工具
just lint
对你的代码应用 Black
just black
使用 Cog 更新文档
just cog
运行实时文档服务器(这会先运行 Cog)
just docs
并列出所有可用命令
just -l
发布流程¶
版本发布是使用标签进行的。当一个新的版本在 GitHub 上发布时,一个 GitHub Actions workflow 将执行以下操作
对所有支持的 Python 版本运行单元测试。如果测试通过...
构建底层 Python 源代码的 wheel 包
将新的 wheel 推送到 PyPI: https://pypi.ac.cn/project/sqlite-utils/
要部署新版本,你需要拥有 GitHub 仓库的推送权限。
sqlite-utils
遵循 语义化版本控制 (Semantic Versioning)
major.minor.patch
对于向后不兼容的版本,我们增加 major
版本号。
对于新功能,我们增加 minor
版本号。
对于错误修复版本,我们增加 patch
版本号。
要发布新版本,首先创建一个 commit,更新 setup.py
中的版本号以及 变更日志,突出显示新版本的内容。一个示例 commit 可在此处查看
# Update changelog
git commit -m " Release 3.29
Refs #423, #458, #467, #469, #470, #471, #472, #475" -a
git push
在 commit 消息中引用属于该版本的 issue 可确保该版本的名称显示在相应的 issue 页面上,例如 此处。
你可以通过从发行说明或 GitHub “自上次发布以来的更改”视图中复制并粘贴文本到这个 从粘贴文本中提取 issue 号 工具,来生成特定版本的 issue 引用列表。
要创建该版本的标签,请在 GitHub 上创建与新版本号匹配的新版本。你可以通过将渲染的 HTML 复制并粘贴到这个 粘贴到 Markdown 工具 中来将发行说明转换为 Markdown。