Make axis inversion robust agains UI sending positions as strings
This commit is contained in:
parent
4eca6c3f54
commit
f3c8add398
2 changed files with 8 additions and 4 deletions
|
|
@ -93,17 +93,19 @@ class BaseStage(lt.Thing):
|
|||
"""Used to convert coordinates between the program frame and the hardware frame."""
|
||||
|
||||
def _apply_axis_direction(
|
||||
self, position: list[int] | tuple[int] | Mapping[str | int]
|
||||
) -> list[int] | Mapping[str | int]:
|
||||
self, position: list[int] | tuple[int] | Mapping[str, int]
|
||||
) -> list[int] | Mapping[str, int]:
|
||||
if isinstance(position, (list, tuple)):
|
||||
return [
|
||||
-pos if inverted else pos
|
||||
-int(pos) if inverted else int(pos)
|
||||
for pos, inverted in zip(position, self.axis_inverted.values())
|
||||
]
|
||||
if isinstance(position, Mapping):
|
||||
try:
|
||||
return {
|
||||
ax: -position[ax] if self.axis_inverted[ax] else position[ax]
|
||||
ax: -int(position[ax])
|
||||
if self.axis_inverted[ax]
|
||||
else int(position[ax])
|
||||
for ax in position
|
||||
}
|
||||
except KeyError as e:
|
||||
|
|
|
|||
|
|
@ -123,9 +123,11 @@ def test_apply_axis_direction_mixed(dummy_stage):
|
|||
# A list of (input position, output position) to try
|
||||
position_pairs = [
|
||||
([1, 2, 3], [-1, 2, -3]), # list
|
||||
([1, "2", "3"], [-1, 2, -3]), # list with strings
|
||||
((1, 2, 0), [-1, 2, 0]), # tuple (gets converted to list)
|
||||
({"x": 1, "y": 2, "z": 3}, {"x": -1, "y": 2, "z": -3}), # mapping
|
||||
({"x": 1, "z": 2, "y": 3}, {"x": -1, "z": -2, "y": 3}), # mapping out of order
|
||||
({"x": 1, "y": "2", "z": "3"}, {"x": -1, "y": 2, "z": -3}), # mapping w strings
|
||||
({"x": 3}, {"x": -3}), # Mapping with only 1 value
|
||||
({"x": 1, "z": 2}, {"x": -1, "z": -2}), # Mapping with only 2 values
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue