4.7. Anaconda アドオン構造

Anaconda アドオンは、__init__.py とその他のソースディレクトリー (サブパッケージ) のディレクトリーが含まれる Python パッケージです。Python では各パッケージ名を一度だけインポートできるため、パッケージトップレベルのディレクトリー名には、一意のものを指定します。アドオンは名前に関係なく読み込まれるため、任意の名前を指定できます。必須要件は、特定のディレクトリーに配置する必要があることです。

アドオンに推奨される命名規則は Java パッケージまたは D-Bus サービス名に似ています。

ディレクトリー名が Python パッケージの有効な識別子になるようにするには、アドオン名を、ドットではなくアンダースコア (_) を使用して組織の逆引きドメイン名にプレフィックスを付ける必要があります。例: com_example_hello_world

重要

各ディレクトリーに __init__.py ファイルを作成してください。このファイルがないディレクトリーは、無効な Python パッケージとみなされます。

アドオンを作成する場合は、以下を確認してください。

  • 各インターフェース (グラフィカルインターフェースおよびテキストインターフェース) のサポートは個別のサブパッケージで利用可能です。このサブパッケージには、グラフィカルインターフェースには gui、テキストベースのインターフェースには tui という名前が付けられています。
  • gui パッケージおよび tui パッケージには、spoke サブパッケージが含まれています。[1]
  • パッケージに含まれるモジュールには任意の名前があります。
  • gui/ ディレクトリーおよび tui/ ディレクトリーには、任意の名前を持つ Python モジュールが含まれます。
  • アドオンの実際の作業を実行するサービスがあります。このサービスは、Python またはその他の言語で記述できます。
  • サービスは、D-Bus およびキックスタートのサポートを実装します。
  • アドオンには、サービスの自動起動を有効にするファイルが含まれます。

以下は、全インターフェース (Kickstart、GUI、および TUI) をサポートするアドオンのディレクトリー構造の例です。

例4.1 アドオン構造の例

com_example_hello_world
├─ gui
│  ├─ init.py
│  └─ spokes
│     └─ init.py
└─ tui
   ├─ init.py
   └─ spokes
   └─ init.py

各パッケージには、API で定義される 1 つ以上のクラスから継承されるクラスを定義する任意の名前を持つモジュールが少なくとも 1 つ含まれる必要があります。

注記

すべてのアドオンは、docstring 規則の Python の PEP 8PEP 257 のガイドラインに従う必要があります。Anaconda の docstring の実際のコンテンツの形式には合意はありません。唯一の要件は、人間が判読できることです。アドオンに自動生成されるドキュメントを使用する予定の場合には、docstrings はこれを行うために使用するツールキットのガイドラインに従う必要があります。

アドオンが新しいカテゴリーを定義する必要がある場合は、カテゴリーサブパッケージを含めることができます。ただし、これは推奨されません。



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