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

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

前言

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

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

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

pre-commitbeetsPicardpydanticairflow

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

pre-commit

Star:4k

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

pre-commit[2]是一款由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是一款格式检查工具。

33.png

beets

Star:9.2k

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

安装

pip install beets

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

Picard

Star:2k

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

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


35.gif

pydantic

Star:2.5k

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

pydantic[6]是一款使用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[7]一个通过编程方式编写、调度和监视工作流的平台。

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

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

动态可扩展简洁清晰

36.jpg


相关文章
|
2天前
|
程序员 开发者 Python
Python中的装饰器:优雅而强大的函数修饰工具
在Python编程中,装饰器是一种强大的工具,它可以简洁地实现函数的增强、扩展和重用。本文将深入探讨Python中装饰器的工作原理、常见应用场景以及如何自定义装饰器,帮助读者更好地理解和运用这一重要的编程概念。
|
3天前
|
SQL 物联网 关系型数据库
sqlmap工具的使用 (超详细附工具版)_python sqlmap
sqlmap工具的使用 (超详细附工具版)_python sqlmap
|
5天前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
29 0
|
5天前
|
前端开发 文件存储 Python
python之xhtml2pdf: HTML转PDF工具示例详解
python之xhtml2pdf: HTML转PDF工具示例详解
13 0
|
5天前
|
Python
Python 中的异常处理机制是一种强大的错误处理工具
【5月更文挑战第8天】Python的异常处理机制借助try/except结构管理错误,提高程序健壮性。异常是中断正常流程的问题,可由多种原因引发。基本结构包括try块(执行可能出错的代码)和except块(处理异常)。通过多个except块可捕获不同类型的异常,finally块确保无论是否异常都执行的代码。此外,raise语句用于主动抛出异常,自定义异常通过继承Exception类实现。with语句配合上下文管理器简化资源管理并确保异常情况下资源正确释放。
21 2
|
5天前
|
缓存 开发者 Python
《Python中的装饰器:优雅而强大的代码增强工具》
在现代软件开发中,Python语言的灵活性和简洁性备受推崇。其中,装饰器作为一种强大的代码增强工具,为Python开发者提供了优雅的解决方案。本文将深入探讨装饰器的原理、用法以及实际应用场景,帮助读者更好地理解和运用这一技术。
|
5天前
|
域名解析 JSON API
Python小工具包
【5月更文挑战第2天】构建了一个Python小工具包,包含获取IP、域名解析、JSON格式化和时间戳转换的函数。通过`get_ip_address`和`resolve_domain`实现网络任务,`format_json`用于美化JSON数据,`timestamp_to_datetime`转换时间戳。这些函数可提高开发效率,易于整合到项目中,展现Python的简洁和灵活性。
38 1
Python小工具包
|
5天前
|
机器学习/深度学习 边缘计算 TensorFlow
【Python机器学习专栏】Python机器学习工具与库的未来展望
【4月更文挑战第30天】本文探讨了Python在机器学习中的关键角色,重点介绍了Scikit-learn、TensorFlow和PyTorch等流行库。随着技术进步,未来Python机器学习工具将聚焦自动化、智能化、可解释性和可信赖性,并促进跨领域创新,结合云端与边缘计算,为各领域应用带来更高效、可靠的解决方案。
|
5天前
|
数据可视化 API Python
Python绘图工具seaborn,教会你如何绘制更加精美的图形(二)
Python绘图工具seaborn,教会你如何绘制更加精美的图形(二)
|
5天前
|
数据可视化 Linux API
Python绘图工具seaborn,教会你如何绘制更加精美的图形(一)
Python绘图工具seaborn,教会你如何绘制更加精美的图形(一)