2023年1月18日水曜日

pyi スタブ

私は基本的に Python で型を書きたくない人で、 Python で型を書くと関数定義行が長くなって読みにくくなるのが嫌だなというのが型を書きたくない理由の1つだったのだが、 関数の(に限らないけど)型だけ別ファイルに置いておく仕組みがあった。 スタブ(stub)ファイルというもので、実は型を書けるようにする仕組みと同じ時に誕生してたので、知らなかった方がおかしいのかもしれない。 ともかくこれで(保守コストはさておき)型を書くことへの抵抗感はぐっと減った。

別ファイルの型情報を誰がどうやってどこに引っ張ってくるのか、という部分については、型チェッカーを単独で導入するほどのやる気になったわけではないので、VSCode の Pylance というプラグインが勝手にやってくれるに任せることにして、少し書いてみた。 結果は微妙である。 他のモジュールから import した関数などはちゃんと型が見えるのだが、そのファイル内で定義している関数の型はスタブから読まれない。 Unknown な引数を受け取って Unknown な型を返すようにしか示されない。 ネットでざっくり調べたところによると、スタブファイルを使うことでモジュール本体をパースするより手軽に型を取り込める、といった用途で使うものとの主張を見た。 一方で PyCharm は pyi スタブから型を読んで当てはめてくれるらしい。 こっちの方が直観的には便利。 理想的には、py + pyi とインラインで型を付けた py と自由に行き来できたら幸せ。

妥協案として、インラインで型を書いても良いけど「アノテーションを隠す」モードが提供されたらだいぶマシ。 VSCode にそんなプラグインがあったりするかなと思ったけど、editor.semanticTokenColorCustomizations で色を変えたり bold/italic にしたりがカスタマイズの限界なので難しいか。

0 件のコメント:

コメントを投稿