Google出品的Python代碼靜態類型分析器:Pytype
Pytype檢查並推斷Python代碼的類型——不需要類型註解。Pytype可以:
- 使用lint檢查純Python代碼,標記常見錯誤,如屬性名拼寫錯誤、不正確的函數調用,等等更多,它甚至可以跨文件。
- 強化用戶提供的類型註解。雖然註解對於pytype是可選的,但是當註解存在時,它會檢查並應用們。
- 在獨立文件(「pyi文件」)中生成類型註解,可以使用自身提供的merge-pyi工具將其合併回Python源代碼中。
Pytype是一個靜態分析器,這意味著它不執行它所檢查的代碼。
谷歌的數千個項目都依賴pytype來保持其Python代碼類型良好和無錯誤。
更多信息,請查看用戶指南或FAQ。
快速入門
要快速開始對一個文件或目錄進行類型檢查,你只需運行以下命令,用你的輸入替換file_or_directory :
要在整個包上設置pytype,請將以下內容添加到包上級目錄中的setup.cfg文件中,用包名替換package_name:
現在,你可以運行無參數命令pytype來對包進行類型檢查。將pytype添加到你的自動化測試中也很容易;參見在Travis上運行pytype的GitHub項目的示例。
最後,pytype會生成含有推斷出的類型信息的文件,默認情況下位於.pytype/pyi中。你可以使用此信息對相應的源文件進行類型註解,用文件的導入路徑替換module.py:
需求
你需要一個Python 2.7或3.5+解釋器來運行pytype,還需要在$PATH中設置一個與所分析代碼的Python版本相同的Python解釋器。
平台支持:
- Pytype目前是在Linux上開發和測試的,Linux是主要支持的平台。
- 在MacOSX上安裝需要OSX 10.7或更高版本,以及Xcode v8或更高版本。
- 目前不支持windows。
安裝
Pytype可以通過pip來安裝。注意,安裝過程需要使用wheel和setuptools。(如果你在virtualenv中工作,這兩個包應該已經存在。)
或者從GitHub上的源碼進行安裝 :
代替使用--recurse-submodules參數進行安裝, 你也可以在pytype目錄中使用以下命令來安裝:
用法
常見選項:
- -V,--Python-Version:目標代碼的Python版本(major.minor)。默認為3.6。
- -o,--output:所有pytype輸出的保存目錄,包括生成的.pyi文件。默認為.pytype。
- -d,--disable。以逗號分隔的要忽略的錯誤名稱列表。pytype錯誤名稱的詳細說明在此文檔中。默認為空。
要獲得選項的完整列表,請運行pytype --help。
除了上面所述,你還可以通過設置$TYPESHED_HOME來直接運行pytype命令使用定製的typeshed安裝替代它自己的綁定副本。
配置文件
為了方便起見,你可以將你的pytype配置保存在一個文件中。配置文件是一個帶有[pytype]部分的INI-樣式的文件;如果沒有提供顯式配置文件,pytype會從當前目錄向上遍歷查找第一個setup.cfg文件中的[pytype]部分。
我們從生成一個配置文件示例開始:
現在我們根據本地設置來自定義文件,只保留需要的部分。目錄可能是配置文件的相對路徑,如果你想將配置文件作為項目的一部分進行檢查,這是非常有用的。
例如,假設你有以下目錄結構,並且想要分析包 ~/repo1/foo,它依賴於包 ~/repo2/bar:
下面是設置好的配置文件,它將指示pytype將~/repo1/foo作為Python 3.6代碼進行類型檢查,在~/repo1和~/repo2中查找包,並忽略屬性錯誤。注意,到包的路徑不包括包本身。
我們可能會發現需要通過運行pytype的損壞依賴項檢查器來將~/repo2添加到pythonpath中:
子工具
除了pytype本身外,Pytype還附帶了三個腳本:
- merge-pyi, 用於將.pyi文件中的類型信息合併到Python文件中.
- pytd, 一個 .pyi 文件解析器.
- pytype-single, pytype開發人員的調試工具,用來對單個Python文件進行分析,並假定已經為該Python文件的所有依賴項生成了.pyi文件。
產品路線圖
?支持Windows系統
許可證
Apache 2.0
免責聲明
本項目不是一個正式的Google產品。
英文原文:https://github.com/google/pytype 譯者:一瞬
※導致機器學習項目失敗的7個原因
※Python lxml庫簡介
TAG:Python部落 |