第九期:5款Python小工具,第1款提升你的代碼質量

前言

PyHubWeekly每週定期更新,精選GitHub上優質的Python項目/小工具。

我把PyHubWeekly託管到了Github,感興趣的可以搜索Github項目PyHubWeekly,如果喜歡,麻煩給個Star支持一下吧。此外,歡迎大家通過提交issue來投稿和推薦自己的項目~

本期為大家推薦GitHub上5個優質的Python項目,它們分別是:

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

下面分別來介紹一下上述5個GitHub項目。

pre-commit

Star:4k

代碼規範檢查是項目上線過程中必不可少的一環,在大多數情況下,我們都是把代碼提交到代碼庫再進行靜態檢查。但是,為什麼不從最源頭把這個問題解決呢?

pre-commit是一款由Python開發的git hooks工具,它能夠在合入代碼,提交commit時對代碼進行規範檢查和格式化,這樣就能夠從根源上解決代碼規範的問題,而不是把代碼合入到代碼庫中再統一解決,這樣不僅耗時,而且繁瑣。

我們下面以Python項目中使用為例進行介紹,但是,它不僅適用於Python,它能夠適用於所有編程語言

安裝

<code>pip install pre-commit/<code>

配置文件

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

<code>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/<code>

使用

<code>pre-commit install
git commit -m "Add super awesome feature"/<code>

提交commit之後就可以看到,它會用到兩個工具blackflake8。black我在第七期介紹過這款工具,它是一款高效的代碼格式化工具,用於修改代碼格式。flake8是一款格式檢查工具。

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

beets

Star:9.2k

beets是一款音樂收藏輔助工具,它能夠讓音樂收藏一勞永逸。它會對你的集合進行分類,並在此過程中自動增強其元數據。然後,它通過提供的一組工具來操作和訪問你的音樂。

安裝

<code>pip install beets/<code>

具體使用教程可以查看文檔

Picard

Star:2k

Picard是一款由Python開發的跨平臺音樂標記工具,它能夠在Linux/Mac OS X/Windows多個平臺上進行使用。

Picard支持大多數音頻文件格式,能夠使用音頻AcoustIDs,執行CD查找和磁盤ID提交,並且具有出色的Unicode支持。

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

pydantic

Star:2.5k

使用過Python的應該都很清楚,Python是一種對數據類型非常弱化的一種編程語言。在編寫Python程序時,你不需要去關心數據的類型。但是,這對於閱讀代碼和調試代碼卻帶來了很多麻煩,因此,我們還是需要養成C++/Java那樣的好習慣,應該關注數據類型。

pydantic是一款使用Python類型提示對Python項目進行數據驗證和設置管理的工具。

安裝

<code>pip install -U pydantic/<code>

示例

<code>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/<code>

通過上述示例我們可以看出,通過繼承pydantic中的BaseModel,能夠對傳入的參數進行數據類型的校驗和修正,這樣能夠避免開發過程中難以定位的問題。

airflow

Star:16k

airflow一個通過編程方式編寫、調度和監視工作流的平臺。

為什麼調度、監視工作流的方式有很多,卻偏偏選擇airflow呢?

因為,當工作流被定義為代碼時,它們變得更加可維護、版本化、可測試性和協作性,通過定義airflow有向無環圖工作流可以實現如下優點,

  • 動態
  • 可擴展
  • 簡潔清晰
PyHubWeekly | 第九期:5款Python小工具,第1款提升你的代碼質量




分享到:


相關文章: