當前位置:
首頁 > 知識 > Pyright:微軟提供的Python靜態類型檢查器

Pyright:微軟提供的Python靜態類型檢查器

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

譯者:好酒不上頭

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python部落 的精彩文章:

VS Code中的Python –2019年3月發布
導致機器學習項目失敗的7個原因

TAG:Python部落 |