Source code for pyobs.interfaces.ITrackingMode

from __future__ import annotations

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

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


class TrackingMode(StrEnum):
    """Discrete, hardware-native tracking rate."""

    SIDEREAL = "sidereal"
    SOLAR = "solar"
    LUNAR = "lunar"
    OFF = "off"


@dataclass
class TrackingModeState:
    mode: TrackingMode
    time: Time = field(default_factory=Time.now)


@dataclass
class TrackingModeCapabilities:
    modes: list[TrackingMode]


class ITrackingMode(Interface, metaclass=ABCMeta):
    """The module supports switching between discrete, hardware-native tracking rates."""

    __module__ = "pyobs.interfaces"

    state = TrackingModeState
    capabilities = TrackingModeCapabilities

[docs] @abstractmethod async def set_tracking_mode(self, mode: TrackingMode, **kwargs: Any) -> None: """Switches to the given tracking mode. Args: mode: Tracking mode to switch to. Raises: MoveError: If mode could not be set. InvalidArgumentError: If mode is not in this module's capabilities. """ ...
__all__ = ["ITrackingMode", "TrackingMode", "TrackingModeState", "TrackingModeCapabilities"]