pre-commit hooks
pre-commitは、git hooksを構築し実行するためのフレームワークです。 詳細については、公式ドキュメントpre-commit.comを参照してください。
このドキュメントでは、Poetryによって提供される利用可能なプリコミットフックのリストを提供します。
Note
.pre-commit-config.yamlでフックにargs:を指定すると、デフォルトが上書きされます。args:を使用する場合は、フックのすべての引数を完全に指定する必要があります。
Note
pyproject.tomlファイルがルートディレクトリにない場合は、args:["-C","./subdirectory"]を指定できます。
poetry-check
poetry-checkフックはpoetry checkコマンドを呼び出して、Poetry構成が壊れた状態でコミットされないようにします。
Arguments
フックは、poetryコマンドと同じ引数を取ります。 詳細については、check commandを参照してください。
poetry-lock
poetry-lockフックはpoetry lockコマンドを呼び出して、変更をコミットするときにロックファイルが最新であることを確認します。
Arguments
フックは、poetryコマンドと同じ引数を取ります。 詳細については、lock commandを参照してください。
poetry-export
poetry-exportフックはpoetry exportコマンドを呼び出して、requirements.txtファイルを現在の依存関係と同期させます。
Warning
このフックは、Export Poetry Pluginによって提供されます。
Note
このフックの前に引数--lockを指定して、poetry-lockフックまたはpoetry-checkを実行することをお勧めします。
Arguments
フックは、poetryコマンドと同じ引数を取ります。 詳細については、export commandを参照してください。
デフォルトの引数はargs:["-f","requirements.txt","-o","requirements.txt"]で、現在の作業ディレクトリにrequirements.txtファイルを作成/更新します。
コンソールに出力するために、.pre-commit-config.yamlにverbose:trueを追加することができます。
hooks:
- id: poetry-export
args: ["-f", "requirements.txt"]
verbose: true
また、--devをargsに追加して、dev-dependenciesをrequirements.txtに書き込むこともできます。
hooks:
- id: poetry-export
args: ["--dev", "-f", "requirements.txt", "-o", "requirements.txt"]
poetry-install
poetry-installフックはpoetry installコマンドを呼び出して、ロックされたパッケージがすべてインストールされていることを確認します。
このフックをインストールするには、default_install_hook_typesを指定するか、pre-commit install--install-hooks-t post-checkout-t post-mergeでインストールする必要があります。
Arguments
フックは、poetryコマンドと同じ引数を取ります。 詳細については、install commandを参照してください。
Usage
pre-commitの使用方法の詳細については、official documentationを参照してください。
最小限の.pre-commit-config.yamlの例です。
repos:
- repo: https://github.com/python-poetry/poetry
rev: '' # add version here
hooks:
- id: poetry-check
- id: poetry-lock
- id: poetry-export
- id: poetry-install
monorepoセットアップ用の.pre-commit-config.yamlの例、またはpyproject.tomlファイルがルートディレクトリにない場合:
repos:
- repo: https://github.com/python-poetry/poetry
rev: '' # add version here
hooks:
- id: poetry-check
args: ["-C", "./subdirectory"]
- id: poetry-lock
args: ["-C", "./subdirectory"]
- id: poetry-export
args: ["-C", "./subdirectory", "-f", "requirements.txt", "-o", "./subdirectory/requirements.txt"]
- id: poetry-install
args: ["-C", "./subdirectory"]
FAQ
Why does pre-commit autoupdate not update to the latest version?
pre-commit autoupdateは、.pre-commit-config.yamlで定義された各リポジトリのrevを、デフォルトブランチで利用可能な最新のタグに更新します。
Poetryは、デフォルトブランチがアクティブな開発ブランチであり、修正が安定したブランチにバックポートされるという分岐戦略に従っています。新しいタグは、この安定したブランチに割り当てられます。
pre-commitはそのような分岐戦略をサポートしておらず、ユーザー側またはフック作成者側のいずれにおいても、利用可能な最新のタグを検索するための分岐を定義するオプションを実装しないことにしました。
したがって、pre-commit autoupdateは、ここで説明するフックには使用できません。
--repoパラメータ(複数回指定可能)を使用して、更新すべきリポジトリを明示的にリストすることで、revを予期しない値に変更するのを避けることができます。リポジトリを明示的に除外するオプションwill not be implementedをpre-commitに設定できます。