Skip to content

Latest commit

 

History

History
178 lines (121 loc) · 4.61 KB

pylance.md

File metadata and controls

178 lines (121 loc) · 4.61 KB
<style type="text/css"> .reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 { text-transform: none; } </style>

Pylance について

yamap55


アジェンダ

  • Pylance とは?
  • 言語サーバとは?
  • デモ
  • 導入時に困った事

Pylance とは?

--

--

  • 既存の Python 拡張を補完するもの
  • 静的型チェックツールの Pyright を土台に、新しい言語サーバーとして開発
  • Microsoft 純正

--

  • 関数シグネチャで型情報が表示される
  • シンボル上のホバリングにより詳細情報を得られる
  • 自動インポート機能
  • インストールされた標準ライブラリから適切と思われるモジュールを提案
  • 型チェック診断も 2 段階で可能
  • IntelliCode、Jupyter Notebooks と互換あり
  • シンタックスハイライト(の強化)

--

  • 現在は Python 拡張と Pylance は別の拡張機能だが、将来は統合される予定
  • 言語サーバーも統合される予定

--

  • Python 拡張に含まれている機能も?

--

<style> </style>
  • Docstrings
  • タイプ情報付きの署名ヘルプ
  • パラメータの提案
  • コード補完
  • 自動インポート(およびインポートコードアクションの追加と削除)
  • コードエラーと警告の入力時のレポート(診断)
  • コードの概要
  • コードナビゲーション
  • 型チェックモード
  • ネイティブマルチルートワークスペースのサポート
  • IntelliCodeの互換性
  • JupyterNotebooksの互換性
  • セマンティックハイライト

言語サーバとは?

--

  • エディタ(IDE)で多数のプログラミング言語に対応するのは大変
  • エディタ独自に実装が必要
  • 実装はエディタが作成されている言語でなされる
    • 移植が大変
    • VSCode は JavaScript、Eclipse は Java など

--

  • コード解析処理は別プロセスで動かし、エディタと通信する
    • そもそもコード解析、検証処理は負荷が高い
  • 別プロセスで動く部分が言語サーバ
  • 言語サーバ自体は様々な言語で記載する事が可能
  • 通信するためのプロトコルを言語サーバプロトコル

--


デモ

リポジトリはこちら

--

  • 型設定がされていないフレームワークの補完をしたい場合には stubs を導入する

--

  • VSCode の設定の違いを確認

導入時に困った事

--

CI でどうやって動かすの?

--

  • CLI は提供していないので CI では動かせない
  • が、Pyright でチェックすれば OK
  • Pyright の設定ファイルもそのまま使える
  • Pyright は node のモジュールなのでちょっと面倒

--

IntelliCode と同居可能?

※IntelliCode も言語サーバの変更が必要であるため

--

  • 互換性があるので可能

--

型チェックの設定がよくわからない

--


参考

--

Pylance

言語サーバー