简体中文 English 繁體中文 日本語 Русский
本文为静态镜像,内容以交互版为准 在交互式文档中心打开 →

タイプ スタンプ生成(IDE の補完)

ErisPulse はエントリーポイントを介してモジュール/アダプターを動的に発見しますが、エントリーポイントは静的レベルでユーザー定義クラスの具体的な型を把握できません。
epsdk types コマンドは、インストール済みのモジュール/アダプターをスキャンし、タイプ スタンプファイルを生成することで、ユーザーがこれらの型を変数の型注釈として使用し、IDE の補完を得られるようにします。

核心設計原則

スタブファイルは型のみをエクスポートし、実行時のインスタンスは一切提供しません。

基本的な使い方

プロジェクトのルートディレクトリで実行します:

epsdk types

現在のディレクトリに _ep_types.py が生成され、インストール済みのすべてのモジュール/アダプタの型が含まれます。

コード内での使用方法

from _ep_types import MyModule, Yunhu
from ErisPulse import sdk

# 導入された型を変数の型ヒントとして使用することで、IDE がそのクラスのメソッドを補完します
my_mod: MyModule = sdk.module.get("MyModule")
my_mod.hello()                  # ← IDE が hello を補完

my_adapter: Yunhu = sdk.adapter.get("yunhu")
await my_adapter.Send.To("group", "123").Board(...)   # ← プラットフォーム固有のメソッドを補完

動作原理

  1. erispulse.adapter / erispulse.module entry-points のスキャン
  2. サブプロセスを介して、対象の Python 環境内でインスペクションを行い、各アダプタ/モジュールの実際のクラス情報を収集(モジュールパスと限定名を含む)
  3. .py ファイルを生成し、以下を含む:
    • TYPE_CHECKING の下ではすべての from xxx import Yyy as Zzz が有効
    • Zzz は entry-point 名の PascalCase 形式
  4. IDE は TYPE_CHECKING 部分を読み取り、補完を提供する。実行時にはコードは一切実行されない

生成されたスタブの例:

# _ep_types.py(自動生成)
from typing import TYPE_CHECKING

if TYPE_CHECKING:
    # アダプタ
    from MyAdapter.Core import MyAdapter as MyAdapter
    from YunhuAdapter.Core import YunhuAdapter as Yunhu

    # モジュール
    from MyModule.Core import Main as MyModule

    __all__ = ['MyAdapter', 'Yunhu', 'MyModule']

コマンドオプション

オプション 説明
-o, --output PATH 出力ファイルのパスを指定します(デフォルト: ./_ep_types.py)
--force 既存のスタブファイルを上書きします
--adapters-only アダプターのみをスキャンします
--modules-only モジュールのみをスキャンします

再生成のタイミング

SendDSL 標準メソッドとの関係

SendDSL 基底クラスには、標準の送信メソッド(Text/Image/Voice/Video/File)が既に組み込まれており、どのような方法で取得した SendDSL インスタンスでも、これらのメソッドが補完されます。
types コマンドは主に、プラットフォーム固有のメソッド(例:雲湖の Board、沙盒の Dice)およびモジュール固有のメソッドを補完するために使用されます。

関連ドキュメント