[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
|
else: # noqa: RET505
|
||||||
return {k: self.ports[k] for k in key}
|
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:
|
def __contains__(self, key: str) -> NoReturn:
|
||||||
raise NotImplementedError('PortsList.__contains__ is left unimplemented. Use `key in container.ports` instead.')
|
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
|
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:
|
def test_port_describe_any_rotation() -> None:
|
||||||
p = Port((0, 0), None)
|
p = Port((0, 0), None)
|
||||||
assert p.describe() == "pos=(0, 0), rot=any"
|
assert p.describe() == "pos=(0, 0), rot=any"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue