Source code for pyobs.interfaces.IMode

from __future__ import annotations

from abc import ABCMeta, abstractmethod
from dataclasses import dataclass, field
from typing import Any

from ..utils.time import Time
from .interface import Interface


@dataclass
class ModeState:
    modes: dict[str, str] = field(default_factory=dict)  # group -> current mode
    time: Time = field(default_factory=Time.now)


@dataclass
class ModeCapabilities:
    modes: dict[str, list[str]] = field(default_factory=dict)  # group -> list of modes


class IMode(Interface, metaclass=ABCMeta):
    """The module can change modes in a device."""

    __module__ = "pyobs.interfaces"

    state = ModeState
    capabilities = ModeCapabilities

[docs] @abstractmethod async def set_mode(self, mode: str, group: str = "", **kwargs: Any) -> None: """Set the current mode. Args: mode: Name of mode to set. group: Name of the group to set the mode for. Raises: ValueError: If an invalid mode or group was given. MoveError: If mode selector cannot be moved. """ ...
__all__ = ["IMode", "ModeState", "ModeCapabilities"]