Skip to content

Plugins


Hatchはプラグイン機能にpluggyを利用しています。

Overview

すべてのプラグインは、特定のtypeインターフェースから継承する1つ以上のクラスを返す登録フックを提供します。

各位置合わせフックは、Hatchのフックマーカーで装飾する必要があります。たとえば、新しい種類の環境を作成する場合は、次のようにします。:

from hatchling.plugin import hookimpl

from .plugin import SpecialEnvironment


@hookimpl
def hatch_register_environment():
    return SpecialEnvironment

フックは、単一のクラスまたはクラスのリストを返すことができます。

すべてのクラスは、ユーザーがプラグインを使用したいときに選択するPLUGIN_NAMEという属性を定義する必要があります。したがって、上記の例では、クラスは次のように定義されます。:

...
class SpecialEnvironment(...):
    PLUGIN_NAME = 'special'
    ...

Project configuration

Naming

プラグインプロジェクト名の前にはhatch-を付けることをお勧めします。たとえば、fooという名前の製品に何らかの機能を提供するプラグインを作成する場合は、次のようにします。:

[project]
name = "hatch-foo"

Discovery

プロジェクトをHatchのPython pluginとして定義する必要があります。:

[project.entry-points.hatch]
foo = "pkg.hooks"

プラグインの名前はプロジェクト名(接頭辞hatch-を除く)とし、パスは登録フックを含むモジュールを表す必要があります。

Classifier

Framework::Hatchをプロジェクトのclassifiersに追加して、Hatchプラグインを簡単に検索できるようにします。:

[project]
classifiers = [
  ...
  "Framework :: Hatch",
  ...
]

Types

Hatchling

これらはすべてプロジェクトの構築に関係するため、定義された依存関係は各構築環境に自動的にインストールされます。

Hatch

これらは、Hatch自体と同じ環境にインストールする必要があります。