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."""
|
"""Used to convert coordinates between the program frame and the hardware frame."""
|
||||||
|
|
||||||
def _apply_axis_direction(
|
def _apply_axis_direction(
|
||||||
self, position: list[int] | tuple[int] | Mapping[str | int]
|
self, position: list[int] | tuple[int] | Mapping[str, int]
|
||||||
) -> list[int] | Mapping[str | int]:
|
) -> list[int] | Mapping[str, int]:
|
||||||
if isinstance(position, (list, tuple)):
|
if isinstance(position, (list, tuple)):
|
||||||
return [
|
return [
|
||||||
-pos if inverted else pos
|
-int(pos) if inverted else int(pos)
|
||||||
for pos, inverted in zip(position, self.axis_inverted.values())
|
for pos, inverted in zip(position, self.axis_inverted.values())
|
||||||
]
|
]
|
||||||
if isinstance(position, Mapping):
|
if isinstance(position, Mapping):
|
||||||
try:
|
try:
|
||||||
return {
|
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
|
for ax in position
|
||||||
}
|
}
|
||||||
except KeyError as e:
|
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
|
# A list of (input position, output position) to try
|
||||||
position_pairs = [
|
position_pairs = [
|
||||||
([1, 2, 3], [-1, 2, -3]), # list
|
([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)
|
((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, "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, "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": 3}, {"x": -3}), # Mapping with only 1 value
|
||||||
({"x": 1, "z": 2}, {"x": -1, "z": -2}), # Mapping with only 2 values
|
({"x": 1, "z": 2}, {"x": -1, "z": -2}), # Mapping with only 2 values
|
||||||
]
|
]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue