Skip to content

Commit 5e0f57e

Browse files
committed
Added error tolerance to get_all_settings.
get_all_settings reports the values of problem settings as None. Previously, we considered adding a new entry, __errors__, to the returned dict, but this is adding an item that is not a setting to a dict where everything else is a setting, and would require clients to handle this key as a special case.
1 parent 0058fd9 commit 5e0f57e

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

microscope/devices.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -307,11 +307,15 @@ def get_setting(self, name):
307307

308308
def get_all_settings(self):
309309
"""Return ordered settings as a list of dicts."""
310-
try:
311-
return {k: v.get() for k, v in self._settings.items()}
312-
except Exception as err:
313-
_logger.error("in get_all_settings:", exc_info=err)
314-
raise
310+
# Fetching some settings may fail depending on device state.
311+
# Report these values as 'None' and continue fetching other settings.
312+
def catch(f):
313+
try:
314+
return f()
315+
except Exception as err:
316+
_logger.error("getting %s: %s" % (f.__self__.name, err))
317+
return None
318+
return {k: catch(v.get) for k, v in self._settings.items()}
315319

316320
def set_setting(self, name, value):
317321
"""Set a setting."""

0 commit comments

Comments
 (0)