介绍
保持一致的代码样式,并且遵循最佳实践对于任何Python项目都很重要。但是,手动修复刺伤问题可能很乏味,易于忘记。在本教程中,我们将看到如何设置GitHub操作,以在每次推动下使用ruff自动填充Python代码并提交任何修复程序。
在上一个tutorial中,我们看到了如何使用ruff到皮棉代码。
但是,手动修复刺伤问题可能很乏味,易于忘记。
先决条件
- 带有Python代码的GitHub存储库
- github操作启用
- 拉夫在本地安装
创建工作流程
工作流将通过ruff和提交修复的推动力来延伸到棉绒:
name: Lint and Commit
on: push
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
- run: pip install ruff
- run: |
ruff check .
ruff fix .
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: 'style fixes by ruff'
新的关键步骤是git-auto-commit-action,它将检测Ruff所做的更改并通过消息提交。
配置ruff
我们可以创建一个.ruff.toml
或ruff.toml
文件来自定义ruff:
line-length = 120
target-version = "py39"
select = ["E", "W"]
上面的代码将行长度设置为120个字符,目标python版本为3.9,以及对E和W的规则。阅读有关配置选项的更多信息here
使用ruff github动作
我们还可以使用ruff github动作在我们的工作流程中运行ruff:
name: Lint and Commit
on: [ push, pull_request ]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v2
- uses: chartboost/ruff-action@v1
with:
args: --check .
fix_args: --fix .
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: 'style fixes by ruff'
上面的代码等效于先前的工作流程。主要区别在于我们使用的是ruff github动作而不是直接运行ruff。阅读有关ruff github Action here
的更多信息每种方法都有自己的优势:
- Ruff直接使我们对Ruff过程有了更多的控制。我们可以指定一个自定义配置文件。
- 使用ruff github动作更简单,需要更少的代码。
- 直接运行ruff的速度更快,因为我们不需要每次安装ruff。
这将与--check
和--fix
参数一起运行。我们还可以使用config
参数指定自定义配置文件:
name: Lint and Commit
on: push
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
- uses: chartboost/ruff-action@v1
with:
args: --check .
fix_args: --fix .
config: .ruff.toml
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: 'style fixes by ruff'
这将根据我们的喜好调整规则。如果我们想对不同的项目使用不同的规则,这将很有用。
选择最适合您项目的方法。
自动提交行动
我们还使用auto-commit
操作来进行更改。我们可以配置提交消息和其他选项。阅读有关auto-commit
Action here的更多信息。这是可选的 - 我们还可以使用git
操作手动提交更改。
ruff和auto-commit
动作的组合使我们能够自动解决覆盖问题,并在每次推动上进行更改。这有助于我们维持一致的代码样式并随着时间的推移遵循最佳实践。
查看结果
动作输出现在将显示ruff更改和投入的文件。在存储库历史记录中也可以看到这些提交。
随时查看我的示例工作流量/运行。
KenMwaura1 / FastAPI-Backend-Template
带有FastApi的后端项目模板,具有异步SQLalchemy 2.0的PostgreSQL,用于异步数据库迁移的Alembic和Docker。
FastAPI Backend Application Template
这是一个模板存储库,旨在通过现实世界应用程序设置启动您的项目!此模板利用以下技术堆栈:
启动Docker
时,这些是URL地址:
- 后退应用程序(API docs)
- 数据库编辑器(adminer)
- 数据库编辑器(adminer)
可以在http://localhost:8000/docs
中找到没有Docker
的后端API。
为什么上述tech-stack?
好吧,简单的答案是异步和 speed !
- fastapi 被加冕为Python最快的网络框架,因此我们将其用于后端开发。
- 我选择的数据库是异步版本的 postgresql (通过SQLAlchemy 2.0)。阅读this blog from Packt如果您想进一步教育这个话题异步,同步,并发,和 parallelism 。
- docker 是一项将应用程序包装到标准化单元中的技术,称为具有
结论
通过启用自动启动,我们不再需要手动修复ruff标记的绒毛问题 - 修复程序将在每个推动下自动应用。这有助于随着时间的推移执行一致的代码样式。
接下来的一些步骤:
- 设置ruff也可以在拉动请求上运行。
- 配置提交选项,例如提交用户和分支。
- 设置松弛/电子邮件通知。
通过将Ruff(例如Ruff)集成到我们的GitHub工作流程中,我们可以自动化编码过程的一部分并减少手动工作。