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の拡張機能で、自動的にチェックしてくれる拡張機能が公開されていたので、使ってみました。とても便利。
pysen-vscodeという拡張機能を追加すると、次のようにPROBLEMSにエラーが表示されます。
formatterでの修正も次のように右クリックからApply suggestion from isort(pysen)をクリックで、修正することができます。
または、コードの箇所にあるライトのアイコンをクリックでも、修正することができます。
参考
Pythonのlinter/formatterを誰でも手軽に設定できるようにするためのPFN社内ツール “pysen” の紹介
pysen を使って python の lint 環境をまとめる
終わりに
この記事では、これまで見よう見まねで使っていたpysenについて、少し調べてみました。
121回目の公開から、少し時間が経ってからの公開となってしまいました。
youtubeでの放送は次のリンクから閲覧可能です。
コメントお待ちしています。匿名の質問はマシュマロから→https://marshmallow-qa.com/currypurin