コンテンツにスキップ

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.yamlverbose:trueを追加することができます。

hooks:
-   id: poetry-export
    args: ["-f", "requirements.txt"]
    verbose: true

また、--devargsに追加して、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 implementedpre-commitに設定できます。