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


[docs] class TrackingMode(StrEnum): """Discrete, hardware-native tracking rate.""" SIDEREAL = "sidereal" SOLAR = "solar" LUNAR = "lunar" OFF = "off"
[docs] @dataclass class TrackingModeState: mode: TrackingMode time: Time = field(default_factory=Time.now)
[docs] @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"]