Regonn&Curry.fm Episode 121収録後記 pysenについて調べてみた

このnoteは、Regonn&Curry.fm というポッドキャストの第121回の収録後記です。

121回では、pysen、Colaboratory V100、3月の目標結果、SORACOM UG Online#4、今週のKaggleについて話しました。

この記事ではその中からpysenについて、調べたことなどを書きたいと思います。

pysenとは

pysenとは、Preferred Networks社が公開した、linter/formatterの設定を一元管理し、簡単に設定できるツールです。先月公開されました

linterというのが良くないところをチェックして指摘してくれること、formatterというのが修正してくれるものという意味で、
pysenはPEP8に準拠しているかなどの文法をチェック、修正するツールの設定を一元管理してくれるツールのようです。

何ができるのか

black, flake8, isort, mypy それぞれを有効・無効にすることができます。

それぞれ何ができるかはざっくりと次のとおり

black: PEP8というpythonの書き方に準拠しているかなどのチェックと修正
flake8: コードのエラーチェック、PEP8に準拠しているかなどのチェック
isort: パッケージのimportの順番のチェックと修正
mypy: 静的型チェック

これをどのように適用するか1つの設定ファイルでできるので、チームで開発するときなど便利です。

使い方

GitHubにあるようにinstallします。

pyproject.tomlというファイルをRootに作り、次のように記載します。


[tool.pysen]
version = "0.9"

[tool.pysen.lint]
enable_black = true
enable_flake8 = true
enable_isort = true
enable_mypy = true
mypy_preset = "strict"
line_length = 88
py_version = "py37"
[[tool.pysen.lint.mypy_targets]]
 paths = ["."]

・enable_black、enable_flake8、enable_isort、enable_mypyは、それぞれblack、flake8、isort、mypyを有効にするかしないか。

・mypy_presetは、mypyでどれだけ厳しくチェックするか。ここと、この辺りを見るとどう設定するかわかるようです。

・line_lengthは、1行の文字数が何文字を超えると指摘するか

・py_versionはpythonのversion

実行は次の通り

pysen run lint  # チェック時
pysen run format  # 修正時


VSCodeで使用する

VSCodeの拡張機能で、自動的にチェックしてくれる拡張機能が公開されていたので、使ってみました。とても便利。

スクリーンショット 2021-04-15 0.46.52

pysen-vscodeという拡張機能を追加すると、次のようにPROBLEMSにエラーが表示されます。

スクリーンショット 2021-04-15 0.55.44

formatterでの修正も次のように右クリックからApply suggestion from isort(pysen)をクリックで、修正することができます。

スクリーンショット 2021-04-15 0.56.04

または、コードの箇所にあるライトのアイコンをクリックでも、修正することができます。

スクリーンショット 2021-04-15 0.59.05

参考

Pythonのlinter/formatterを誰でも手軽に設定できるようにするためのPFN社内ツール “pysen” の紹介

pysen を使って python の lint 環境をまとめる

終わりに

この記事では、これまで見よう見まねで使っていたpysenについて、少し調べてみました。

121回目の公開から、少し時間が経ってからの公開となってしまいました。

youtubeでの放送は次のリンクから閲覧可能です。


コメントお待ちしています。匿名の質問はマシュマロから→https://marshmallow-qa.com/currypurin