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

from __future__ import annotations
from typing import 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 PerNightMerit(Merit): """Merit functions for defining a max number of observations per night.""" count: int = Field(ge=0, le=999, default=0) async def __call__(self, time: Time, task: Task, data: DataProvider) -> float: from ...observation import ObservationState # get completed observations for task since last sunrise observations = await data.archive.observations_for_task(task=task) observations = observations.filter(state=ObservationState.COMPLETED, start_after=data.last_sunrise(time)) # compare to count return 1.0 if len(observations) < self.count else 0.0
__all__ = ["PerNightMerit"]