天天看點

python類型提示包 檢查靜态類型_Pyright:微軟提供的Python靜态類型檢查器

Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。

python類型提示包 檢查靜态類型_Pyright:微軟提供的Python靜态類型檢查器

速度

Pyright是一個針對大型Python源代碼庫的快速類型檢查器。它可以在“監視(watch)”模式下運作,并在檔案修改後執行快速增量更新。

不依賴于Python環境

Pyright不需要Python環境或導入安裝的的第三方包。

可配置性

Pyright支援配置檔案,它們可以通過設定來提供精細控制。不同的“執行環境”可以在源代碼庫中關聯子目錄。每個環境都可以指定不同的子產品搜尋路徑、python語言版本和目标平台。

類型檢查特性

Pyright 支援:

PEP 484 類型提示,包括泛型

PEP 544結構化的子類型

函數傳回值、執行個體變量、類變量和全局變量的類型推斷

了解條件代碼流結構(如if/else語句)的智能類型限制

内置類型存根

Pyright包含來自Typeshed的stdlib類型存根的最新副本。可以通過配置使其使用另一個Typeshed類型存根副本(可能是最近的或修改過的)。當然,它也可以與作為項目一部分的自定義類型存根檔案一起運作。

指令行工具或VS Code擴充

Pyright包括一個指令行工具和一個用于VSCode的語言伺服器協定插件。

文檔

限制

Pyright目前僅提供對Python 3.0及更新版本的支援。目前還沒有支援舊版本的計劃。

Pyright項目還在進行中。類型檢查功能還沒有完全實作。有關未完成功能的清單,請參考下面的TODO清單。

常見問題

答: Python VS Code插件是VS Code的官方Python支援擴充。它由微軟的一個工程師團隊正式支援。它支援各種各樣的特性,包括調試、linter插件、類型檢查插件等等。Pyright完全專注于類型檢查。這是一個沒有專門團隊的次要項目。

答: Microsoft Python語言伺服器是一個語言伺服器協定 (LSP)實作,它與Microsoft Python VS Code插件一起工作,并由Microsoft的一個工程師團隊正式支援。它還提供了類型檢查功能。Pyright提供了重疊的功能,但也包含一些獨特的特性,比如更具可配置性、指令行執行和更好的性能。

安裝

您可以直接從VSCode中安裝Pyright VS Code擴充的最新釋出版本。隻需打開extensions面闆并搜尋pyright。

您可以通過npm來安裝指令行工具的最新版本:npm i pyright

要全局安裝它,請執行:npm i -g pyright

要運作指令行工具,請執行:npx pyright

待辦事項

Pyright是一個正在進行中的項目。以下功能尚未完成。如果您想對這些領域做出貢獻,請聯系repo的維護人員。

對生成器的類型分析支援

協同程式的類型分析支援

對async(異步)函數和lambda的類型分析支援

驗證await/async一緻性

支援注釋中的舊式類型注解

處理代碼中的許多TODO注釋

更好地處理函數裝飾器(不在類型檢查上浪費時間)

為類型檢查器添加更多測試

驗證所有抽象方法都被重載

提供将以下劃線開頭的執行個體變量和方法視為私有的switch(開關)

驗證魔術函數的參數

在可能的情況下,為lambda合成(synthesize)TypeVar參數并傳回類型

驗證子類中重寫的方法與基類方法具有相同的簽名

驗證異常類是否繼承自Exception基類

添加對在子類中申明的基于方法參數類型的子類型變量的推理支援

在所有聲明的方法之間驗證子類類型變量的一緻性

添加對var-arg參數類型提示的支援

添加對NoReturn類型的支援

将對隻讀值 (如None, True, False,__debug__)的指派标記為錯誤

改進對屬性的支援——使用描述符協定模組化,檢測缺失的的setter

将數字代碼添加到診斷和配置機制中,用于按代碼禁用錯誤

貢獻

本項目歡迎各方面的貢獻和建議。大多數貢獻需要您同意貢獻者許可協定(CLA),來聲明您有權(實際上也确實有權)授予我們使用您的貢獻的權利。詳情請通路https://cla.microsoft.com。

當您送出一個推送請求時,CLA-機器人将會自動确定您是否需要提供一個CLA并适當地修飾PR(例如,标簽、說明)。您隻需遵循機器人提供的訓示即可。使用我們的CLA,在我們所有repo(源碼倉庫)中,您隻需要執行這一次。

本項目已采用微軟開源行為守則。如需更多資訊,請檢視行為準則FAQ,或者您也可以聯系[email protected]來回報問題或進行評論。英文原文:https://github.com/Microsoft/pyright

譯者:好酒不上頭