Don't raise an exception if thing_state called before calibration

It's helpful to raise an exception if we access the calibration
before it's been set - but thing state should not raise exceptions,
just return an empty dict if the data is not there yet.
This commit is contained in:
Richard Bowman 2023-11-28 21:06:42 +00:00
parent 27c74bff6e
commit 291bbde9cf

View file

@ -187,7 +187,7 @@ class CameraStageMapper(Thing):
return np.array(displacement_matrix).tolist()
@thing_property
def last_calibration(self) -> Optional[Dict]: # 2x2 integer array
def last_calibration(self) -> Optional[Dict]:
"""The results of the last calibration that was run
"""
return self.thing_settings.get("last_calibration", None)
@ -219,11 +219,16 @@ class CameraStageMapper(Thing):
@thing_property
def thing_state(self) -> dict:
"""Summary metadata describing the current state of the Thing"""
return {
"image_to_stage_displacement_matrix": (
state: dict[str, Any] = {}
try:
state["image_to_stage_displacement_matrix"] = (
self.image_to_stage_displacement_matrix
),
"image_resolution": (
self.thing_settings.get("image_to_stage_displacement", None)
)
}
except ValueError:
pass # If it can't be retrieved, we'll just return an empty dict
if self.last_calibration:
try:
state["image_resolution"] = self.last_calibration["image_resolution"]
except KeyError:
logging.warning("Couldn't find `image_resolution` in CSM calibration")
return state