"""
The ska_oso_pdm.sb_definition_sb_definition module defines
a simple Python representation of the scheduling block
that contains the details of the observation
"""
from typing import Dict, List
from pydantic import Field
from ska_oso_pdm._shared import (
Metadata,
PdmObject,
ProjectID,
SBDefinitionID,
ScanDefinitionID,
Target,
TelescopeType,
)
from .csp.csp_configuration import CSPConfiguration
from .dish.dish_allocation import DishAllocation
from .mccs.mccs_allocation import MCCSAllocation
from .procedures import ProcedureUnion
from .scan_definition import ScanDefinition
from .sdp.sdp_configuration import SDPConfiguration
__all__ = ["SBDefinition"]
# URI of the Scheduling Block definition. Not currently part of telescope model.
SBD_SCHEMA_URI = "https://schema.skao.int/ska-oso-pdm-sbd/0.1"
[docs]
class SBDefinition(PdmObject):
"""
SKA scheduling block
"""
interface: str | None = SBD_SCHEMA_URI
sbd_id: SBDefinitionID | None = None
name: str | None = None
description: str | None = None
telescope: TelescopeType | None = None
metadata: Metadata | None = None
prj_ref: ProjectID | None = None
activities: Dict[str, ProcedureUnion] | None = Field(default_factory=dict)
targets: List[Target] | None = Field(default_factory=list)
scan_definitions: List[ScanDefinition] | None = Field(default_factory=list)
scan_sequence: List[ScanDefinitionID] | None = Field(default_factory=list)
sdp_configuration: SDPConfiguration | None = None
csp_configurations: List[CSPConfiguration] | None = Field(default_factory=list)
dish_allocations: DishAllocation | None = None
mccs_allocation: MCCSAllocation | None = None