Skip to content

Commit 81a9d51

Browse files
committed
Add or_raise method to DeviceBuildResult
1 parent b9ce00a commit 81a9d51

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/dodal/device_manager.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -282,14 +282,10 @@ def build(self, mock: bool = False, fixtures: dict[str, Any] | None = None) -> V
282282
self,
283283
fixtures=fixtures,
284284
mock=mock,
285-
)
286-
if devices.errors:
287-
# TODO: NotBuilt?
288-
raise Exception("??? build")
289-
else:
290-
device = devices.devices[self.name].device
291-
return device # type: ignore - it's us really, promise
285+
).or_raise()
292286

287+
device = devices.devices[self.name].device
288+
return device # type: ignore - it's us really, promise
293289

294290

295291
class ConnectionSpec(NamedTuple):
@@ -342,6 +338,13 @@ def connect(self, timeout: float | None = None) -> ConnectionResult:
342338

343339
return ConnectionResult(connected, self.errors, connection_errors)
344340

341+
def or_raise(self) -> Self:
342+
if self.errors:
343+
for name, exc in self.errors.items():
344+
exc.add_note(name)
345+
raise ExceptionGroup("Some devices failed", tuple(self.errors.values()))
346+
return self
347+
345348

346349
class DeviceManager:
347350
_factories: dict[str, DeviceFactory]

0 commit comments

Comments
 (0)