制約・問題点・未完了事項
既存コード未変更:
ese774_frameとgrpc_frameの既存DeviceProxyは別レジストリのままです。共通化のためには、各デバイスパッケージがこのパッケージへ明示登録する必要があります。Tango のサーバー・クライアント実装も変更していません。自動登録なし:
pip installのみでは登録されません。インポート時登録または明示初期化が必要です。これは意図した仕様です。名前の衝突: 同一プロセスで二つのデバイスパッケージが同じクラス名を登録すると
ValueError。エイリアス機能は実装していません。.pyiの型宣言: 専用クライアント型を参照するcore.pyi生成器はありますが、実デバイスの対応表と静的型検証は未実施です。初期配布のcore.pyiは具体的なデバイス型を含まず、戻り型はAnyです。実機未検証: HTTP/gRPC/Tango の接続、Tango の同期・非同期実装、実デバイスのライフサイクルは統合テストしていません。単体テストはダミークライアントを使用します。
コンストラクタ引数: コアは一切変換しません。
async_modeは対応するファクトリでのみ有効です。Tango の単一クライアントに渡せば、クライアントの引数として処理されます(通常は不要)。スレッド・プロセス: レジストリはプロセス内の辞書です。複数プロセス間では共有されません。登録・解除と生成の同時実行に対する厳密な同期は提供しません。
配布名・移行:
device-proxy-factoryは仮称。既存DeviceProxyの置換・再エクスポート、既存デバイスパッケージへの組込み、正式公開は未実施です。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.