from __future__ import annotations
import contextlib
from typing import Any, Optional
from .config import AkariClientConfig, load_config
from .joint_manager import JointManager
from .m5stack_client import M5StackClient
[ドキュメント]class AkariClient:
def __init__(self, config: Optional[AkariClientConfig] = None) -> None:
self._stack = contextlib.ExitStack()
self._config = config or load_config()
self._joints = self._config.joint_manager.factory(self._stack)
self._m5stack = self._config.m5stack.factory(self._stack)
def __enter__(self) -> AkariClient:
return self
def __exit__(self, exc_type: Any, exc: Any, tb: Any) -> None:
self.close()
def close(self) -> None:
self._stack.close()
@property
def joints(self) -> JointManager:
return self._joints
@property
def m5stack(self) -> M5StackClient:
return self._m5stack