pre-commitフック

pre-commitフック #

pre-commitは、gitフックを構築および実行するためのフレームワークです。詳細については、公式ドキュメントを参照してください:pre-commit.com

このドキュメントでは、Poetryによって提供される利用可能なpre-commitフックの一覧を示します。

注意
` .pre-commit-config.yaml`でフックの`args:`を指定した場合、デフォルト値は上書きされます。`args:`を使用する場合は、フックのすべての引数を完全に指定する必要があります。
注意
`pyproject.toml`ファイルがルートディレクトリにない場合は、`args: ["-C", "./subdirectory"]`を指定できます。

poetry-check #

`poetry-check`フックは`poetry check`コマンドを呼び出して、Poetryの設定が壊れた状態でコミットされないようにします。

引数 #

このフックは、poetryコマンドと同じ引数を取ります。詳細については、checkコマンドを参照してください。

poetry-lock #

`poetry-lock`フックは`poetry lock`コマンドを呼び出して、変更をコミットする際にロックファイルが最新の状態であることを確認します。

引数 #

このフックは、poetryコマンドと同じ引数を取ります。詳細については、lockコマンドを参照してください。

poetry-export #

`poetry-export`フックは`poetry export`コマンドを呼び出して、`requirements.txt`ファイルを現在の依存関係と同期します。

警告
このフックは、Export Poetry Pluginによって提供されています。
注意
`poetry-lock`フックまたは`--lock`引数を指定した`poetry-check`を、このフックの前に実行することをお勧めします。

引数 #

このフックは、poetryコマンドと同じ引数を取ります。詳細については、exportコマンドを参照してください。

デフォルトの引数は`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

また、`requirements.txt`にdev依存関係を書き込むには、`--dev`を`args`に追加できます。

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`を使用してインストールする必要があります。

引数 #

このフックは、poetryコマンドと同じ引数を取ります。詳細については、installコマンドを参照してください。

使用方法 #

pre-commitの使用方法の詳細については、公式ドキュメントを参照してください。

最小限の`.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

モノレポの設定用、または`pyproject.toml`ファイルがルートディレクトリにない場合の`.pre-commit-config.yaml`の例

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) #

なぜ`pre-commit autoupdate`は最新バージョンにアップデートされないのですか? #

`pre-commit autoupdate`は、`.pre-commit-config.yaml`で定義されている各リポジトリの`rev`を、デフォルトブランチで利用可能な最新のタグに更新します。

Poetryは、デフォルトブランチがアクティブな開発ブランチであり、修正が安定ブランチにバックポートされ、これらの安定ブランチに新しいタグが割り当てられるというブランチ戦略に従っています。

`pre-commit`はこのようなブランチ戦略をサポートしておらず、ユーザー側またはフック作成者側で、最新のタグを検索するためのブランチを定義するオプションを実装しないことを決定しています。

そのため、ここで説明されているフックでは`pre-commit autoupdate`を使用できません。

`--repo`パラメーター(複数回指定可能)を使用して、更新する必要があるリポジトリを明示的にリストすることにより、`rev`が予期しない値に変更されるのを防ぐことができます。リポジトリを明示的に除外するオプションは`pre-commit`には実装されません。