代码整理工具_PyHubWeekly | 第九期:5款Python小工具,第1款提升你的代码质量

PyHubWeekly推荐5款提升代码质量的Python工具:pre-commit进行代码规范检查,beets管理音乐元数据,Picard是跨平台音乐标记工具,pydantic实现数据验证,airflow用于工作流编排。这些工具覆盖从代码规范、音乐管理到工作流调度的多种场景。
摘要由CSDN通过智能技术生成

b452a3fdb822a6fc6021fa709740ee72.png

前言

PyHubWeekly每周定期更新,精选GitHub上优质的Python项目/小工具。

我把PyHubWeekly托管到了Github,感兴趣的可以搜索Github项目PyHubWeekly,如果喜欢,麻烦给个Star支持一下吧。此外,欢迎大家通过提交issue来投稿和推荐自己的项目~

本期为大家推荐GitHub上5个优质的Python项目,<!--more-->它们分别是:

  • pre-commit
  • beets
  • Picard
  • pydantic
  • airflow

下面分别来介绍一下上述5个GitHub项目。

pre-commit

Star:4k

代码规范检查是项目上线过程中必不可少的一环,在大多数情况下,我们都是把代码提交到代码库再进行静态检查。但是,为什么不从最源头把这个问题解决呢?

pre-commit是一款由Python开发的git hooks工具,它能够在合入代码,提交commit时对代码进行规范检查和格式化,这样就能够从根源上解决代码规范的问题,而不是把代码合入到代码库中再统一解决,这样不仅耗时,而且繁琐。

我们下面以Python项目中使用为例进行介绍,但是,它不仅适用于Python,它能够适用于所有编程语言

安装

pip install pre-commit

配置文件

安装之后需要修改一下配置文件,.pre-commit-config.yaml

repos:
-   repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v2.3.0
    hooks:
    -   id: check-yaml
    -   id: end-of-file-fixer
    -   id: trailing-whitespace
-   repo: https://github.com/psf/black
    rev: 19.3b0
    hooks:
    -   id: black

使用

pre-commit install
git commit -m "Add super awesome feature"

提交commit之后就可以看到,它会用到两个工具blackflake8。black我在第七期介绍过这款工具,它是一款高效的代码格式化工具,用于修改代码格式。flake8是一款格式检查工具。

294c196ca6fc83ef8517133c60369450.png

beets

Star:9.2k

beets是一款音乐收藏辅助工具,它能够让音乐收藏一劳永逸。它会对你的集合进行分类,并在此过程中自动增强其元数据。然后,它通过提供的一组工具来操作和访问你的音乐。

安装

pip install beets

具体使用教程可以查看文档

Picard

Star:2k

Picard是一款由Python开发的跨平台音乐标记工具,它能够在Linux/Mac OS X/Windows多个平台上进行使用。

Picard支持大多数音频文件格式,能够使用音频AcoustIDs,执行CD查找和磁盘ID提交,并且具有出色的Unicode支持。

87d73ec206ecc9ff6b32de03a11a5859.gif

pydantic

Star:2.5k

使用过Python的应该都很清楚,Python是一种对数据类型非常弱化的一种编程语言。在编写Python程序时,你不需要去关心数据的类型。但是,这对于阅读代码和调试代码却带来了很多麻烦,因此,我们还是需要养成C++/Java那样的好习惯,应该关注数据类型。

pydantic是一款使用Python类型提示对Python项目进行数据验证和设置管理的工具。

安装

pip install -U pydantic

示例

from datetime import datetime
from typing import List, Optional
from pydantic import BaseModel
​
class User(BaseModel):
    id: int
    name = 'John Doe'
    signup_ts: Optional[datetime] = None
    friends: List[int] = []
​
external_data = {'id': '123', 'signup_ts': '2017-06-01 12:22', 'friends': [1, '2', b'3']}
user = User(**external_data)
print(user)
#> User id=123 name='John Doe' signup_ts=datetime.datetime(2017, 6, 1, 12, 22) friends=[1, 2, 3]
print(user.id)
#> 123

通过上述示例我们可以看出,通过继承pydantic中的BaseModel,能够对传入的参数进行数据类型的校验和修正,这样能够避免开发过程中难以定位的问题。

airflow

Star:16k

airflow一个通过编程方式编写、调度和监视工作流的平台。

为什么调度、监视工作流的方式有很多,却偏偏选择airflow呢?

因为,当工作流被定义为代码时,它们变得更加可维护、版本化、可测试性和协作性,通过定义airflow有向无环图工作流可以实现如下优点,

  • 动态
  • 可扩展
  • 简洁清晰

fc8e3f972d579cbf0306c0c450026c76.png

干货

最近,为了方便大家,我花费了半个月的时间把这几年来收集的各种技术干货整理到一起,其中内容包括但不限于Python、机器学习、深度学习、计算机视觉、推荐系统、Linux、工程化、Java,内容多达5T+,我把各个资源下载链接整理到一个文档内,目录如下:

6884cab0ceaefafa40336d98c8f92616.png

所有干货送给大家,希望能够点赞支持一下!

https://pan.baidu.com/s/1eks7CUyjbWQ3A7O9cmYljA (提取码:0000)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值