Source code for pyobs.robotic.scheduler.constraints.moonilluminationconstraint

from __future__ import annotations
from typing import TYPE_CHECKING
import astroplan
from pydantic import Field

from .constraint import Constraint

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


[docs] class MoonIlluminationConstraint(Constraint): """Moon illumination constraint.""" cost: float = 3.0 max_phase: float = Field(ge=0.0, le=1.0, default=0.0) def to_astroplan(self) -> astroplan.MoonIlluminationConstraint: return astroplan.MoonIlluminationConstraint(max=self.max_phase) async def __call__(self, time: Time, task: Task, data: DataProvider) -> bool: moon_illumination = float(data.observer.moon_illumination(time)) return moon_illumination <= self.max_phase
__all__ = ["MoonIlluminationConstraint"]