前言

主要是给开发者阅读,描述开发前后需要注意的一些事项。

开发环境

  • python3.9的python环境
  • 新建虚拟环境.env在项目根目录下,source .env/bin/activate
    • python3.9 -m venv .env
  • pip install -r requirements_dev.txt
  • 系统安装brew install pre-commit 或者 pip install pre-commit
    • brew的安装/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
    • 在项目更目录下执行pre-commit install --hook-type pre-commit --hook-type commit-msg
  • 可通过pip install -e ./编辑模式安装用于边开发边测试使用

项目部分结构说明

  • pytest.ini 测试脚本的配置
  • .coveragerc 测试覆盖度工具使用的配置,在pytest.ini中引用
  • .pre-commit-config.yaml git提交代码前pre-commit执行的检测相关配置
  • requirements_dev.txt 开发需要的环境
  • requirements_test.txt 跑测试用例需要的环境
  • tests 测试用例目录
    • conftest.py pytest测试用例全局变量配置
    • settings Django settings配置,在pytest.ini中引用
  • imgprocessor lib核心代码
  • MANIFEST.in 打包相关-清单文件配置
  • Makefile 构建配置,可以执行make help查看具体命令
    • 定义了测试、打包、发版等很多命令
  • tox.ini 定义各种Python版本的测试

提交Pull Request

提交Pull Request之前需要检查以下事项是否完成:

  • 需包含测试用例,并通过make test-all
  • 测试覆盖度要求 make coverage
  • 尝试本地打包 make dist

运行测试用例

pytest tests
# 运行所有环境的测试用例
tox run

可通过参数 use_special_tmp 保存处理的图片 .tmp/output/ 目录下,方便肉眼和 tests/imgs/expected 中图像对比:

pytest tests --use_special_tmp

文档

mkdocs build --clean  # 生成site文档网站
mkdocs serve  # 可以启动本地访问文档

文档发布未集成自动化,需要在 https://readthedocs.org/ 操作导入/生成新的文档。

打包发版

(以下命令都定义在了Makefile中了)

  • make clean-build 删除本地构建缓存目录
  • python setup.py sdist bdist_wheel 执行打包
  • twine check dist/py*(.whl|.tar.gz) 检查生成的文件是否符合pypi的要求
  • twine upload -r pypi dist/py*(.whl|.tar.gz) 上传包
    • 需要本地~/.pypirc配置用户名密码

其他