Source code for pyaml.bpm.bpm_simple_model

from pydantic import BaseModel, ConfigDict

from pyaml.bpm.bpm_model import BPMModel

from ..common.element import __pyaml_repr__

# Define the main class name for this module
PYAMLCLASS = "BPMSimpleModel"


[docs] class ConfigModel(BaseModel): """ Configuration model for BPM simple model Parameters ---------- x_pos : str Horizontal position catalog key y_pos : str Vertical position catalog key """ model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") x_pos: str y_pos: str
[docs] class BPMSimpleModel(BPMModel): """ Concrete implementation of BPMModel that simulates a BPM with tilt and offset values. """ def __init__(self, cfg: ConfigModel): self._cfg = cfg self.__x_pos = cfg.x_pos self.__y_pos = cfg.y_pos
[docs] def get_pos_devices(self) -> list[str]: """ Get device handles used for position reading Returns ------- list[DeviceAccess] Array of DeviceAcess """ return [self.__x_pos, self.__y_pos]
[docs] def get_tilt_device(self) -> str | None: """ Get device handle used for tilt access Returns ------- list[DeviceAccess] Array of DeviceAcess """ return None
[docs] def get_offset_devices(self) -> list[str | None]: """ Get device handles used for offset access Returns ------- list[DeviceAccess] Array of DeviceAcess """ return [None, None]
def __repr__(self): return __pyaml_repr__(self)