Source code for pyobs.robotic.scheduler.merits.follow

from __future__ import annotations
from typing import Any, TYPE_CHECKING

from pydantic import Field

from .merit import Merit

if TYPE_CHECKING:
    from astropy.time import Time
    from pyobs.robotic import Task
    from ..dataprovider import DataProvider


[docs] class FollowMerit(Merit): """Merit functions that only returns after another given task has run this night.""" task_id: Any = Field(default_factory=str) async def __call__(self, time: Time, task: Task, data: DataProvider) -> float: from ...observation import ObservationState # get all observations for tonight night = data.night(time) observations = await data.archive.observations_for_night(night) # filter for successful ones of the given task observations = observations.filter(task_id=self.task_id, state=ObservationState.COMPLETED) # compare to count return 1.0 if len(observations) > 0 else 0.0
__all__ = ["FollowMerit"]