Pyright:微軟提供的Python靜態類型檢查器
速度
Pyright是一個針對大型Python源代碼庫的快速類型檢查器。它可以在「監視(watch)」模式下運行,並在文件修改後執行快速增量更新。
不依賴於Python環境
Pyright不需要Python環境或導入安裝的的第三方包。
可配置性
Pyright支持配置文件,它們可以通過設置來提供精細控制。不同的「執行環境」可以在源代碼庫中關聯子目錄。每個環境都可以指定不同的模塊搜索路徑、python語言版本和目標平台。
類型檢查特性
Pyright 支持:
- PEP 484 類型提示,包括泛型
- PEP 526 變數注釋語法
- PEP 544結構化的子類型
- 函數返回值、實例變數、類變數和全局變數的類型推斷
- 理解條件代碼流結構(如if/else語句)的智能類型約束
內置類型存根
Pyright包含來自Typeshed的stdlib類型存根的最新副本。可以通過配置使其使用另一個Typeshed類型存根副本(可能是最近的或修改過的)。當然,它也可以與作為項目一部分的自定義類型存根文件一起運行。
命令行工具或VS Code擴展
Pyright包括一個命令行工具和一個用於VSCode的語言伺服器協議插件。
文檔
- 開始
- 命令行選項
- 配置
- 導入解決方案
- 構建&調試
- Pyright內部結構
限制
Pyright目前僅提供對Python 3.0及更新版本的支持。目前還沒有支持舊版本的計劃。
Pyright項目還在進行中。類型檢查功能還沒有完全實現。有關未完成功能的列表,請參考下面的TODO列表。
常見問題
問: Pyright和Microsoft Python VS Code 插件有什麼區別?
答: Python VS Code插件是VS Code的官方Python支持擴展。它由微軟的一個工程師團隊正式支持。它支持各種各樣的特性,包括調試、linter插件、類型檢查插件等等。Pyright完全專註於類型檢查。這是一個沒有專門團隊的次要項目。
問: Pyright和Microsoft Python語言伺服器有什麼區別?
答: 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 <options>
待辦事項
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,或者您也可以聯繫opencode@microsoft.com來反饋問題或進行評論。
英文原文:https://github.com/Microsoft/pyright
譯者:好酒不上頭
※VS Code中的Python –2019年3月發布
※導致機器學習項目失敗的7個原因
TAG:Python部落 |