Source code for ska_tmc_cdm.messages.subarray_node.configure
"""
The configure package contains modules that define Python classes for all of
the permissible arguments for a SubArrayNode.configure() call.
"""
__all__ = ["ConfigureRequest"]
from typing import Optional
from pydantic import model_validator
from pydantic.dataclasses import dataclass
from .core import DishConfiguration, PointingConfiguration
from .csp import CSPConfiguration
from .mccs import MCCSConfiguration
from .sdp import SDPConfiguration
from .tmc import TMCConfiguration
SCHEMA = "https://schema.skao.int/ska-tmc-configure/2.1"
[docs]@dataclass
class ConfigureRequest: # pylint: disable=too-few-public-methods
"""
ConfigureRequest encapsulates the arguments required for the TMC
SubArrayNode.Configure() command.
"""
pointing: Optional[PointingConfiguration] = None
dish: Optional[DishConfiguration] = None
sdp: Optional[SDPConfiguration] = None
csp: Optional[CSPConfiguration] = None
mccs: Optional[MCCSConfiguration] = None
tmc: Optional[TMCConfiguration] = None
interface: Optional[str] = SCHEMA
transaction_id: Optional[str] = None
@model_validator(mode="after")
def partial_configuration_validation(self) -> "ConfigureRequest":
if self.dish and self.tmc and not self.tmc.partial_configuration:
if not self.pointing.target.coord:
raise ValueError(
"ra and dec for a Target() should be defined for non-partial configuration"
)
return self
@model_validator(mode="after")
def mccs_or_dish_validation(self) -> "ConfigureRequest":
if self.mccs is not None and (self.dish is not None):
raise ValueError(
"Can't allocate dish, csp and sdp in the same call as mccs"
)
return self