Source code for baec.measurements.measurement_device

from __future__ import annotations


[docs]class MeasurementDevice: """ Represents a measurement device. """
[docs] def __init__( self, id_: str, qr_code: str | None = None, ) -> None: """ Initializes a MeasurementDevice object. Parameters ---------- id_ : str The ID of the measurement device. qr_code : str | None, optional The QR code of the measurement device, or None if unknown (default: None). Raises ------ TypeError If the input types are incorrect. ValueError If empty string for `id_` or `qr_code`. """ # Initialize all attributes using private setters. self._set_id(id_) self._set_qr_code(qr_code)
def _set_id(self, value: str) -> None: """ Private setter for id attribute. """ if not isinstance(value, str): raise TypeError("Expected 'str' type for 'id' attribute.") if value == "": raise ValueError("Empty string not allowed for 'id' attribute.") self._id = value def _set_qr_code(self, value: str | None) -> None: """ Private setter for qr_code attribute. """ if value is not None: if not isinstance(value, str): raise TypeError( "Expected 'str' or 'None' type for 'qr_code' attribute." ) if value == "": raise ValueError("Empty string not allowed for 'qr_code' attribute.") self._qr_code = value @property def id(self) -> str: """ The ID of the measurement device. """ return self._id @property def qr_code(self) -> str | None: """ The QR-code of the measurement device. """ return self._qr_code def __eq__(self, other: object) -> bool: """ Check if two MeasurementDevice objects are equal. It compares the `id` attribute. Parameters ---------- other : object The object to compare. Returns ------- bool True if the objects are equal, False otherwise. """ if not isinstance(other, MeasurementDevice): return False return self.id == other.id