[PortList.measure_travel] add a convenience wrapper for measuring internal travel
This commit is contained in:
parent
e6f5136357
commit
6cf9600193
2 changed files with 29 additions and 0 deletions
|
|
@ -273,6 +273,12 @@ class PortList(metaclass=ABCMeta):
|
|||
else: # noqa: RET505
|
||||
return {k: self.ports[k] for k in key}
|
||||
|
||||
def measure_travel(self, src: str, dst: str) -> tuple[NDArray[numpy.float64], float | None]:
|
||||
"""
|
||||
Convenience wrapper for measuring travel between two named ports.
|
||||
"""
|
||||
return self[src].measure_travel(self[dst])
|
||||
|
||||
def __contains__(self, key: str) -> NoReturn:
|
||||
raise NotImplementedError('PortsList.__contains__ is left unimplemented. Use `key in container.ports` instead.')
|
||||
|
||||
|
|
|
|||
|
|
@ -47,6 +47,29 @@ def test_port_measure_travel() -> None:
|
|||
assert rotation == pi
|
||||
|
||||
|
||||
def test_port_list_measure_travel() -> None:
|
||||
class MyPorts(PortList):
|
||||
def __init__(self) -> None:
|
||||
self._ports = {
|
||||
"A": Port((0, 0), 0),
|
||||
"B": Port((10, 5), pi),
|
||||
}
|
||||
|
||||
@property
|
||||
def ports(self) -> dict[str, Port]:
|
||||
return self._ports
|
||||
|
||||
@ports.setter
|
||||
def ports(self, val: dict[str, Port]) -> None:
|
||||
self._ports = val
|
||||
|
||||
pl = MyPorts()
|
||||
(travel, jog), rotation = pl.measure_travel("A", "B")
|
||||
assert travel == 10
|
||||
assert jog == 5
|
||||
assert rotation == pi
|
||||
|
||||
|
||||
def test_port_describe_any_rotation() -> None:
|
||||
p = Port((0, 0), None)
|
||||
assert p.describe() == "pos=(0, 0), rot=any"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue