首页 > 编程语言 > 让你的Python代码更干净只需简单一步

让你的Python代码更干净只需简单一步

时间:2022-11-26 11:31:08浏览次数:66  
标签:pre Python hooks 代码 -- 干净 commit id black

你可以将这两个文件拷贝到自己的项目根目录中,然后执行一次 pre-commit install,这样每次提交代码的时候,都是干净的代码,是不是很方便?

说起来容易做起来难,我们都知道代码可读性非常重要,但是写的时候总是随心所欲,不考虑类型提示、import 排序、PEP8 规范。今天分享一个小技巧,通过一个简单的步骤就可以让你的 Python 代码更干净。

这就是 pre-commit:

 让你的Python代码更干净只需简单一步_python

可以让你的代码提交之前自动检查是否符合你想要的规范。

使用之前,先 pip 安装一下:

pip install pre-commit

然后在项目的根目录下创建两个文件:.pre-commit-config.yaml 和 pyproject.toml。

.pre-commit-config.yaml 文件内容如下:

exclude: _pb2\.py$
repos:
- repo: https://github.com/psf/black
rev: 22.3.0
hooks:
- id: black
args: [--skip-string-normalization]
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.0.1
hooks:
- id: check-docstring-first
- id: check-json
- id: check-merge-conflict
- id: check-yaml
- id: debug-statements
- id: end-of-file-fixer
- id: trailing-whitespace
- id: requirements-txt-fixer
- repo: https://github.com/pre-commit/pygrep-hooks
rev: v1.9.0
hooks:
- id: python-check-mock-methods
- id: python-use-type-annotations
- repo: https://github.com/pre-commit/mirrors-mypy
rev: "v0.910"
hooks:
- id: mypy
args:
[
--ignore-missing-imports,
--warn-no-return,
--warn-redundant-casts,
--disallow-incomplete-defs,
]
additional_dependencies: [types-all]
- repo: https://github.com/PyCQA/isort
rev: 5.9.3
hooks:
- id: isort
args: [--profile, black, --filter-files]

这里面配置了 black、mypy、check-docstring-first、isort 等工具,id 就是对应的工具,可以说这个配置文件基本上就够用了。

在 .pre-commit-config.yaml 文件中,我们可以指定将使用哪些挂钩,在 pyproject.toml 中,我们可以为这些单独的钩子指定参数。

pyproject.toml 文件内容如下:

[tool.black]
line-length = 88
target-version = ["py38"]

[tool.isort]
profile = "black"
multi_line_output = 3

这里配置了 black 和 isort 的相关配置。

然后执行在项目的根目录执行 pre-commit install ​​命令​​,就可以安装 pre-commit 插件。

然后每次更新代码,提交代码时,这些钩子都会触发,会自动执行如下操作:

排序 import

PEP8 的格式代码

检查您的 yaml 和 json 文件的正确性

类型检查(如果你使用了类型提示)

 让你的Python代码更干净只需简单一步_根目录_02

最后
你可以将这两个文件拷贝到自己的项目根目录中,然后执行一次 pre-commit install,这样每次提交代码的时候,都是干净的代码,是不是很方便?


标签:pre,Python,hooks,代码,--,干净,commit,id,black
From: https://blog.51cto.com/u_12148962/5888745

相关文章

  • Python:ValueError: Unable to find resource t64.exe in package pip._vendor.distlib
    背景由于pip版本过高22.3.1,安装下载pip20.2.4时报以下错误ValueError:Unabletofindresourcet64.exeinpackagepip._vendor.distlib解决方案:卸载setuptools......
  • 用YAPF让Python代码瞬间从丑陋变漂亮
    要把Python代码写漂亮,必须遵循PEP8Python编码规范:《​​PEP8--StyleGuideforPythonCode​​​》。但记住PEP8规范,是一件非常痛苦的事情,还好Google发布了一个自动整......
  • 用Python代码画世界杯吉祥物拉伊卜(附代码)
    用Python代码画世界杯吉祥物拉伊卜(附代码)世界杯正在火热进行中,世界杯的吉祥物拉伊卜也非常火。本文用Python代码画世界杯吉祥物。不废话,可以直接先看视频效果。视频效果用P......
  • Grasp Detection论文、代码汇总
    文章目录​​2022​​​​End-to-endTrainableDeepNeuralNetworkforRoboticGraspDetectionandSemanticSegmentationfromRGB​​​​2019​​​​AntipodalRob......
  • Knowledge Transfer论文、代码汇总
    文章目录​​2018​​​​LearningDeepRepresentationswithProbabilisticKnowledgeTransfer(ECCV)​​​​2019​​​​LIKEWHATYOULIKE:KNOWLEDGEDISTILLVIAN......
  • 【775】Python实现下载百分比,进度条
    参考:Python:输出覆盖,输出进度百分比的实现进度百分比的实现事实上是在无限循环中通过输出重复覆盖实现的,如上代码中#这里用"\r"使每次输出左对齐,覆盖上一次输出结果prin......
  • 基于Sklearn机器学习代码实战
    LinearRegression线性回归入门数据生成为了直观地看到算法的思路,我们先生成一些二维数据来直观展现importnumpyasnpimportmatplotlib.pyplotaspltdeftrue_f......
  • linux云服务器CentOS7.6系统中布署Python+mysql项目
    记录下在LinuxCentOS7.6系统中如何布署python项目的步骤1,登录到服务器(sshroot@127.***.*.*)2,修改CentOS中的selinux安全服务程序,它在/ect/selinux/config目录下,修改它......
  • 小程序的后端代码语法
    先启动云开发,在数据库中添加json文件来导入数据。将数据权限建议改为:所用用户可读,仅创建者可读写小程序的数据库类似于mongodb后端也是基于js的,你需要了解箭头函数......
  • python中的字典和集合
    1.字典#基础数据类型#boolintfloatstrlisttupledictset#listdictset可变数据类型#boolintfloatstrtuple不可变数据类型#1.字典dict#dict_d......