ese774_frame package

Subpackages

Submodules

ese774_frame.adapter module

Kengo NAKADA: https://github.com/shimane-dev, https://github.com/kengo-nakada kengo.nakada@mat.shimane-u.ac.jp, kengo.nakada@gmail.com

FastAPI frame adapter.

責務: - 通信境界(JSON)で Python 値を安全に往復させる - tuple を JSON で失わないようにマーカー化して復元する - bytes/bytearray を base64 へ変換して復元する - dispatch 経路の args/kwargs/result を pack/unpack する

注意: - 現行フローは JSON ベース。 - pickle 系ヘルパーは互換のため残っているが、通常経路では使わない。

ese774_frame.adapter.inspect_empty() → Any[ソース]

inspect.Signature.empty を遅延 import で返す。

ese774_frame.adapter.pack_args(args: Tuple[Any, ...]) → Dict[str, Any][ソース]

args を pack する(list 化して pack_result に委譲)。

ese774_frame.adapter.pack_kwargs(kwargs: Dict[str, Any]) → Dict[str, Any][ソース]

kwargs を pack する(dict のまま pack_result に委譲)。

ese774_frame.adapter.pack_result(obj: Any) → Any[ソース]

結果を pack する。 JSON で表現できることだけ保証し、そのまま返す。

ese774_frame.adapter.type_annotation_to_descriptor(annotation: Any) → Dict[str, Any] | None[ソース]

Python 型アノテーションを JSON 互換の型記述へ変換する。

完全自動 dispatch の戻り値型を client へ伝えるために使用する。 dataclass、Union/Optional、list、tuple、dict を再帰的に記述する。

ese774_frame.adapter.unpack_args(payload: Any) → Tuple[Any, ...][ソース]

pack_args の逆変換。

ese774_frame.adapter.unpack_kwargs(payload: Any) → Dict[str, Any][ソース]

pack_kwargs の逆変換。

ese774_frame.adapter.unpack_result(payload: Any, type_descriptor: Dict[str, Any] | None = None) → Any[ソース]

JSON で届いた payload を Python に戻す。

type_descriptor が指定された場合は、完全自動 dispatch の 戻り値アノテーションに従って dataclass 等を再構築する。

ese774_frame.api_server module

FastAPI 用の汎用サーバーラッパー。

  • device_cls でデバイス実体を生成

  • router_cls で API ルータを生成

  • FastAPI の lifespan で初期化/解放を管理

Kengo NAKADA: https://github.com/shimane-dev, https://github.com/kengo-nakada kengo.nakada@mat.shimane-u.ac.jp, kengo.nakada@gmail.com

class ese774_frame.api_server.FastApiServer(device_cls, router_cls, config, api_spec=None, device_kwargs=None, logger: Any | None = None, logger_name: str = 'FastApiServer', log_level: str | None = None, lifespan_msg_prefix: str = 'DEVICE', object_name: str | None = None, dispatch_exclude=None)[ソース]

ベースクラス: object

device/router/api_spec を束ねて FastAPI アプリを構築・実行する。

lifecycle: - 起動: device 生成 -> router 生成 -> route 登録 - 停止: device.disconnect があれば呼び出し

lifespan(app: FastAPI)[ソース]

FastAPI lifespan ハンドラ。

起動時に device/router を初期化し、終了時に disconnect を実行する。

run(host, port, reload=False)[ソース]

uvicorn で FastAPI サーバを起動する。