Skip to content

Commit de15ec5

Browse files
feat: Add helper commands to print available devices and plans (#1501)
Add small feature to quickly show available devices and plans to user via printing their name from client. ```Python >>> bc.print_devices() psk1 psj1 dcm psi2 jgap fsj1 ... >>> bc.print_plans() count(detectors, num=None, delay=None, metadata=None) spec_scan(detectors, spec, metadata=None) move(moves, group=None) move_relative(moves, group=None) set_absolute(movable, value, group=None, wait=None) set_relative(movable, value, group=None, wait=None) sleep(time) wait(group=None, timeout=None) ... ```
1 parent af06958 commit de15ec5

2 files changed

Lines changed: 24 additions & 0 deletions

File tree

src/blueapi/client/client.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,11 @@ def get_plan(self, name: str) -> PlanModel:
299299
"""
300300
return self._rest.get_plan(name)
301301

302+
def print_plans(self) -> None:
303+
"""Print all available plans."""
304+
for name in self.plans:
305+
print(name)
306+
302307
@start_as_current_span(TRACER)
303308
@deprecated("devices property")
304309
def get_devices(self) -> DeviceResponse:
@@ -338,6 +343,11 @@ def get_device(self, name: str) -> DeviceModel:
338343

339344
return self._rest.get_device(name)
340345

346+
def print_devices(self) -> None:
347+
"""Print all available devices."""
348+
for name in self.devices:
349+
print(name)
350+
341351
@property
342352
@start_as_current_span(TRACER)
343353
def state(self) -> WorkerState:

tests/unit_tests/client/test_client.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,13 @@ def test_get_plan(client: BlueapiClient):
146146
assert client.plans["foo"].model == PLAN
147147

148148

149+
def test_print_plans(client: BlueapiClient, capsys: pytest.CaptureFixture):
150+
client.print_plans()
151+
captured = capsys.readouterr()
152+
for dev in PLANS.plans:
153+
assert dev.name in captured.out
154+
155+
149156
def test_get_nonexistant_plan(
150157
client: BlueapiClient,
151158
):
@@ -161,6 +168,13 @@ def test_get_device(client: BlueapiClient):
161168
assert client.devices.foo.model == DEVICE
162169

163170

171+
def test_print_devices(client: BlueapiClient, capsys: pytest.CaptureFixture):
172+
client.print_devices()
173+
captured = capsys.readouterr()
174+
for dev in DEVICES.devices:
175+
assert dev.name in captured.out
176+
177+
164178
def test_get_nonexistent_device(
165179
client: BlueapiClient,
166180
):

0 commit comments

Comments
 (0)