Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5.5. Anaconda アドオンの構造

Anaconda アドオンは Python パッケージで、これには __init__.py と他のソースディレクトリー (サブパッケージ) を格納しているディレクトリーが含まれています。Python は各パッケージ名のインポートを 1 回しか許可しないので、パッケージのトップレベルのディレクトリー名は一意のものである必要があります。同時に、アドオンは名前に関係なく読み込まれるため、任意の名前を指定できます。必須要件は、特定のディレクトリーに配置する必要があることです。
このため、アドオンで推奨される命名規則は、Java パッケージや D-Bus サービス名と同様のものになります。ドットの代わりにアンダースコア (_) で組織に予約されているドメイン名を持つアドオン名に接頭辞を付けます。これにより、ディレクトリー名が Python パッケージの有効な識別子となります。つまり、アドオン名の前に自分の組織のリバースドメイン名を追加します (com_example_hello_world)。この規則は、Python パッケージおよびモジュール名の recommended naming scheme (推奨命名スキーム) に準拠しています。
重要
各ディレクトリー内に __init__.py ファイルを作成することを忘れないでください。このファイルがないディレクトリーは、有効な Python パッケージとはみなされません。
アドオンの作成時には、インストーラーでサポートされる機能は Kickstart でもサポートされる必要があることに注意してください。各インターフェイス (Kickstart、グラフィカルインターフェイス、グラフィカルインターフェイス、テキストインターフェイス) のサポートは個別のサブパッケージで指定する必要があります。このサブパッケージには、キックスタートの場合は ks、グラフィカルインターフェイスには gui、テキストベースのインターフェイスには tui という名前を指定する必要があります。guitui パッケージには、spokes サブパッケージが含まれる必要があります。[3]
これらのパッケージ内のモジュール名は任意のものにすることができます。ks/gui/ および tui/ のディレクトリー内の Python モジュール名はどんなものでも構いません。
すべてのインターフェイス (Kickstart、GUI および TUI) をサポートするアドオンのディレクトリー構造のサンプルは以下のようになります。

例2 アドオン構造の例

com_example_hello_world
├─ ks
│  └─ __init__.py
├─ gui
│  ├─ __init__.py
│  └─ spokes
│     └─ __init__.py
└─ tui
   ├─ __init__.py
   └─ spokes
   └─ __init__.py
各パッケージには、API で定義される 1 つ以上のクラスから継承されるクラスを定義する任意の名前を持つモジュールが少なくとも 1 つ含まれる必要があります。これについては、「Anaconda アドオンの作成」 .
すべてのアドオンにおける docstring 規則は、Python の PEP 8 および PEP 257 ガイドに従ってください。Anaconda の docstring の実際のコンテンツの形式には合意はありません。唯一の要件は、人間が判読できることです。唯一の要件は、ヒューマンリーダブルであることです。アドオンで自動生成ドキュメントを使用する場合は、これに使用するツールキットのガイドラインに docstring が準拠するようにしてください。


[3] アドオンが新しいカテゴリーを定義する必要がある場合、gui パッケージには カテゴリー サブパッケージも含まれる場合がありますが、これはお勧めできません。