Source code for pyobs.interfaces.IMultiFiber

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 MultiFiberState:
    fiber: str = ""
    pixel_x: float = 0.0
    pixel_y: float = 0.0
    radius: float = 0.0
    time: Time = field(default_factory=Time.now)


@dataclass
class MultiFiberCapabilities:
    fiber_count: int = 0


class IMultiFiber(Interface, metaclass=ABCMeta):
    """An interface for multi-fiber setups that helps to set/get a fiber and retrieve position and size of the
    current fiber on the acquisition/guiding image."""

    __module__ = "pyobs.interfaces"

    state = MultiFiberState
    capabilities = MultiFiberCapabilities

[docs] @abstractmethod async def abort(self, **kwargs: Any) -> None: """Abort current actions.""" ...
[docs] @abstractmethod async def set_fiber(self, fiber: str, **kwargs: Any) -> None: """Sets the currently active fiber. Must be in fiber_names capability. Args: fiber: Name of fiber to set. """ ...
__all__ = ["IMultiFiber", "MultiFiberState", "MultiFiberCapabilities"]