制約・問題点・未完了事項

  1. 既存コード未変更: ese774_frame と grpc_frame の既存 DeviceProxy は別レジストリのままです。共通化のためには、各デバイスパッケージがこのパッケージへ明示登録する必要があります。Tango のサーバー・クライアント実装も変更していません。

  2. 自動登録なし: pip install のみでは登録されません。インポート時登録または明示初期化が必要です。これは意図した仕様です。

  3. 名前の衝突: 同一プロセスで二つのデバイスパッケージが同じクラス名を登録すると ValueError。エイリアス機能は実装していません。

  4. .pyi の型宣言: 専用クライアント型を参照する core.pyi 生成器はありますが、実デバイスの対応表と静的型検証は未実施です。初期配布の core.pyi は具体的なデバイス型を含まず、戻り型は Any です。

  5. 実機未検証: HTTP/gRPC/Tango の接続、Tango の同期・非同期実装、実デバイスのライフサイクルは統合テストしていません。単体テストはダミークライアントを使用します。

  6. コンストラクタ引数: コアは一切変換しません。async_mode は対応するファクトリでのみ有効です。Tango の単一クライアントに渡せば、クライアントの引数として処理されます(通常は不要)。

  7. スレッド・プロセス: レジストリはプロセス内の辞書です。複数プロセス間では共有されません。登録・解除と生成の同時実行に対する厳密な同期は提供しません。

  8. 配布名・移行: device-proxy-factory は仮称。既存 DeviceProxy の置換・再エクスポート、既存デバイスパッケージへの組込み、正式公開は未実施です。

  9. Python 3.7: ソースは 3.7 対応の構文・型記法で記述していますが、現環境では Python 3.7 実機によるテストは実施していません。

これらは解決済みとして扱わず、実際の移行時に個別検証してください。

静的型情報 / Static typing

各デバイスの .pyi は自動的に共通 DeviceProxy の overload に合成されない。明示的な型対応 JSON と共通 core.pyi の再生成が必要。インストール済みのパッケージを自動探索しない。専用クライアント .pyi の内容(クライアント側の override を含む)はデバイスパッケージ側の責任。/ Type checkers do not merge overloads across packages; an explicit mapping and regeneration are required. Device-specific overrides belong in dedicated client stubs.