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自体と同じ環境にインストールする必要があります。