環境
OS: Ubuntu22.04
Python 3.11
poetry 1.8.2
前提条件
- poetryを用いてpythonの環境構築が終わっている
- プロジェクト内で
git init
などGithubでコード管理を行う準備ができている
やったこと
-
必要なパッケージをインストールする
poetryを用いて依存パッケージをインストールするには
poetry add
を使用します。
pre-commitの他に、コードの修正に必要なパッケージもインストールしておきます。# -Dをつけると、devDependenciesになる poetry add -D pre-commit flake8 black isort
それぞれの役割は以下のとおりです。
- isort: モジュールのインポート順序を修正
- flake8: フォーマットの検査
- black: 自動でフォーマットを修正
-
.pre-commit-config.yaml
を作成/編集以下のコマンドで
.pre-commit-config.yaml
が作成されます。poetry run pre-commit sample-config > .pre-commit-config.yaml
.pre-commit-config.yaml編集前
.pre-commit-config.yaml# See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v3.2.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml - id: check-added-large-files
.pre-commit-config.yaml編集後
.pre-commit-config.yamlrepos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v3.2.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml - id: check-added-large-files - repo: https://github.com/pycqa/flake8 rev: 7.0.0 hooks: - id: flake8 additional_dependencies: - flake8-isort args: ["--max-line-length=150", "--ignore=W293 E203"] - repo: https://github.com/psf/black rev: 24.4.2 hooks: - id: black language_version: python3.11 - repo: https://github.com/pycqa/isort rev: 5.13.2 hooks: - id: isort name: isort (python)
結果
上記を行ったあと、commitをすると以下のような出力が得られます。
git commit -m "コミットメッセージ"
> Trim Trailing Whitespace.................................................Passed
> Fix End of Files.........................................................Passed
> Check Yaml...........................................(no files to check)Skipped
> Check for added large files..............................................Passed
> flake8...................................................................Passed
> black....................................................................Passed
> isort (python)...........................................................Passed
なにか問題があるときは、passed
の代わりにFailed
と表示され、問題がある箇所を教えてくれます。