- Pylance とは?
- 言語サーバとは?
- デモ
- 導入時に困った事
--
--
- 既存の Python 拡張を補完するもの
- 静的型チェックツールの Pyright を土台に、新しい言語サーバーとして開発
- Microsoft 純正
--
- 関数シグネチャで型情報が表示される
- シンボル上のホバリングにより詳細情報を得られる
- 自動インポート機能
- インストールされた標準ライブラリから適切と思われるモジュールを提案
- 型チェック診断も 2 段階で可能
- IntelliCode、Jupyter Notebooks と互換あり
- シンタックスハイライト(の強化)
--
- 現在は Python 拡張と Pylance は別の拡張機能だが、将来は統合される予定
- 言語サーバーも統合される予定
--
- Python 拡張に含まれている機能も?
--
<style> </style>- Docstrings
- タイプ情報付きの署名ヘルプ
- パラメータの提案
- コード補完
- 自動インポート(およびインポートコードアクションの追加と削除)
- コードエラーと警告の入力時のレポート(診断)
- コードの概要
- コードナビゲーション
- 型チェックモード
- ネイティブマルチルートワークスペースのサポート
- IntelliCodeの互換性
- JupyterNotebooksの互換性
- セマンティックハイライト
--
- エディタ(IDE)で多数のプログラミング言語に対応するのは大変
- エディタ独自に実装が必要
- 実装はエディタが作成されている言語でなされる
- 移植が大変
- VSCode は JavaScript、Eclipse は Java など
--
- コード解析処理は別プロセスで動かし、エディタと通信する
- そもそもコード解析、検証処理は負荷が高い
- 別プロセスで動く部分が言語サーバ
- 言語サーバ自体は様々な言語で記載する事が可能
- 通信するためのプロトコルを言語サーバプロトコル
--
- Python
- C# 73.6% Python 26.4%
- Java
- Java 96.0%
- PHP
- PHP 99.9%
- C#
- C# 99.6%
- TypeScript
- TypeScript 97.2%
--
- 型設定がされていないフレームワークの補完をしたい場合には stubs を導入する
--
- VSCode の設定の違いを確認
--
--
- CLI は提供していないので CI では動かせない
- が、Pyright でチェックすれば OK
- Pyright の設定ファイルもそのまま使える
- Pyright は node のモジュールなのでちょっと面倒
--
※IntelliCode も言語サーバの変更が必要であるため
--
- 互換性があるので可能
--
--
- Pyright のドキュメントを読む
- 無視したい警告などは設定ファイル(
pyrightconfig.json
)を使用する
--