みんなのPython勉強会#94 LT
2023/06/15 nikkie
みんなのPython勉強会 4代目LT王子・スタッフ
株式会社ユーザベースのデータサイエンティスト(We're hiring!)
鬼滅ネタ、いいね!今度LTしちゃう?
— Takeshi Akutsu (@akucchan_world) June 7, 2023
Python使い=〇〇したくてPythonを使う= 鬼と闘う (鬼殺隊の一員)
Python開発環境構築はさまざま= 呼吸はさまざま (霞、恋)
今日のトークからも(Python本家、Anaconda)
Pythonを使うという共通点がある
好みはそれぞれ、文脈も各の持ち場で異なる
オススメしますが、食指が動かなければ不採用でも全然OK🙆♂️
本LTでの主張
PyCon JP 2019 Python開発を円滑に進めるためのツール設定
PyCon JP 2020 チーム開発立ち上げにやっておいたほうがいいソース管理の方法
PyCon Kyushu 2022 静的コード解析から見出す一人前Pythonistaへの道
(守らなくてもコードは動くけど)「Pythonをこういうふうに書きましょう」
人が頑張る道もあるけど、 ツールを使ってPEP 8に沿う
Black:Pythonコードを自動に 整える
Flake8:Pythonコードの 静的解析
最初の一歩『Python実践レシピ』2章
スタイルガイドに合うコードに 有無を言わさず整形
% pip install black
% # conda install -c conda-forge black
import calendar
print ( 'hello, world' )
black -l 79 example.py
-print ( 'hello, world' )
+print("hello, world")
コードを実行せずに(=静的)解析して、スタイルや問題を指摘
% pip install flake8
% # conda install -c anaconda flake8
flake8 example.py
example.py:1:1: F401 'calendar' imported but unused
example.py:3:6: E211 whitespace before '('
example.py:3:8: E201 whitespace after '('
example.py:3:23: E202 whitespace before ')'
black の後に flake8 だとスタイル関係は指摘されない(この順にしたい)
ほかにも pytest などなどたくさんのツール。便利だけど、覚えていられない🤯(実行漏れもある)
順番も含めて、1つのコマンドにまとめられないかな?
Python向けの タスクランナー
書きました「Python向けタスクランナーとして気になっていたtaskipy 素振りの記、Poetryのない環境でお試し」
% pip install taskipy
conda コマンドでインストールできるかは未確認です🙏
pyproject.toml
を書く[tool.taskipy.tasks]
format = "black -l 79 awesome_lib tests"
test = "pytest"
check = "flake8 awesome_lib tests"
% task format # blackを使ったフォーマット
% task test # pytestで単体テスト実行
% task check # flake8を使った静的解析
コマンドのオプションを覚えておく必要、なくなった🙌
pre_test
は test
の 前 に実行するタスクになる
post_test
で test
の 後 に実行するタスクになる
format
や check
を設定すると...
[tool.taskipy.tasks]
format = "black -l 79 awesome_lib tests"
test = "pytest"
check = "flake8 awesome_lib tests"
pre_test = "task format"
post_test = "task check"
フォーマット➡️テスト➡️静的解析が 1コマンド に!
pyenv + venv の呼吸 弐の型 taskipy
Pythonでの開発、ツールを使ってやりやすくできる
多様なツールをtaskipyでまとめ たらいい感じ(フック素晴らしい!)
Enjoy Python!
Flake8は今後Ruffに変わるかも? 新しい静的コード解析ツール「Ruff」をご紹介