Skip to content

Commit 3316ab0

Browse files
rickwierengaclaude
andcommitted
Simplify Nimbus setup params handling to isinstance-only check
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 7f5ec82 commit 3316ab0

File tree

3 files changed

+11
-34
lines changed

3 files changed

+11
-34
lines changed

pylabrobot/hamilton/liquid_handlers/nimbus/chatterbox.py

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,8 @@ def __init__(self, num_channels: int = 8):
3030
async def setup(self, backend_params: Optional[BackendParams] = None):
3131
from .pip_backend import NimbusPIPBackend
3232

33-
if backend_params is None:
34-
params = NimbusSetupParams()
35-
elif isinstance(backend_params, NimbusSetupParams):
36-
params = backend_params
37-
else:
38-
raise TypeError(
39-
"NimbusChatterboxDriver.setup expected NimbusSetupParams | None for backend_params, "
40-
f"got {type(backend_params).__name__}"
41-
)
33+
if not isinstance(backend_params, NimbusSetupParams):
34+
backend_params = NimbusSetupParams()
4235

4336
# Use canned addresses (skip TCP connection entirely)
4437
pipette_address = Address(1, 1, 257)
@@ -53,10 +46,10 @@ async def setup(self, backend_params: Optional[BackendParams] = None):
5346
self._nimbus_resolved = NimbusResolvedInterfaces.from_resolution_map(self._resolved_interfaces)
5447

5548
self.pip = NimbusPIPBackend(
56-
driver=self, deck=params.deck, address=pipette_address, num_channels=self._num_channels
49+
driver=self, deck=backend_params.deck, address=pipette_address, num_channels=self._num_channels
5750
)
5851
self.door = NimbusDoor(driver=self, address=door_address)
59-
if params.require_door_lock and self.door is None:
52+
if backend_params.require_door_lock and self.door is None:
6053
raise RuntimeError("DoorLock is required but not available on this instrument.")
6154

6255
async def stop(self):

pylabrobot/hamilton/liquid_handlers/nimbus/driver.py

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -133,15 +133,8 @@ async def setup(self, backend_params: Optional[BackendParams] = None):
133133
Args:
134134
backend_params: Optional :class:`NimbusSetupParams`.
135135
"""
136-
if backend_params is None:
137-
params = NimbusSetupParams()
138-
elif isinstance(backend_params, NimbusSetupParams):
139-
params = backend_params
140-
else:
141-
raise TypeError(
142-
"NimbusDriver.setup expected NimbusSetupParams | None for backend_params, "
143-
f"got {type(backend_params).__name__}"
144-
)
136+
if not isinstance(backend_params, NimbusSetupParams):
137+
backend_params = NimbusSetupParams()
145138

146139
# TCP connection + Protocol 7 + Protocol 3 + root discovery
147140
await super().setup()
@@ -186,12 +179,12 @@ async def setup(self, backend_params: Optional[BackendParams] = None):
186179

187180
# Create backends — each object stores its own address and state
188181
self.pip = NimbusPIPBackend(
189-
driver=self, deck=params.deck, address=pipette_address, num_channels=num_channels
182+
driver=self, deck=backend_params.deck, address=pipette_address, num_channels=num_channels
190183
)
191184

192185
if door_address is not None:
193186
self.door = NimbusDoor(driver=self, address=door_address)
194-
elif params.require_door_lock:
187+
elif backend_params.require_door_lock:
195188
raise RuntimeError("DoorLock is required but not available on this instrument.")
196189

197190
# Initialize subsystems

pylabrobot/hamilton/liquid_handlers/nimbus/nimbus.py

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,20 +44,11 @@ async def setup(self, backend_params: Optional[BackendParams] = None):
4444
runs InitializeSmartRoll, and wires the PIP capability frontend to the driver's
4545
PIP backend.
4646
"""
47-
if backend_params is None:
48-
params = NimbusSetupParams(deck=self.deck)
49-
elif isinstance(backend_params, NimbusSetupParams):
50-
params = backend_params
51-
if params.deck is None:
52-
params = NimbusSetupParams(deck=self.deck, require_door_lock=params.require_door_lock)
53-
else:
54-
raise TypeError(
55-
"Nimbus.setup expected NimbusSetupParams | None for backend_params, "
56-
f"got {type(backend_params).__name__}"
57-
)
47+
if not isinstance(backend_params, NimbusSetupParams):
48+
backend_params = NimbusSetupParams(deck=self.deck)
5849

5950
try:
60-
await self.driver.setup(backend_params=params)
51+
await self.driver.setup(backend_params=backend_params)
6152

6253
self.pip = PIP(backend=self.driver.pip)
6354
self._capabilities = [self.pip]

0 commit comments

Comments
 (0)