zaber-motion 7.7.0__py3-none-win32.whl → 7.8.1__py3-none-win32.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zaber_motion/__init__.py +1 -0
- zaber_motion/ascii/__init__.py +1 -0
- zaber_motion/ascii/pvt_sequence.py +166 -2
- zaber_motion/convert_exception.py +2 -0
- zaber_motion/dto/ascii/__init__.py +1 -0
- zaber_motion/dto/ascii/can_set_state_axis_response.py +1 -1
- zaber_motion/dto/ascii/can_set_state_device_response.py +3 -2
- zaber_motion/dto/ascii/optional_measurement_sequence.py +71 -0
- zaber_motion/dto/ascii/set_state_device_response.py +2 -1
- zaber_motion/dto/requests/__init__.py +3 -0
- zaber_motion/dto/requests/errors.py +17 -16
- zaber_motion/dto/requests/pvt_generate_positions_request.py +74 -0
- zaber_motion/dto/requests/pvt_generate_velocities_request.py +93 -0
- zaber_motion/dto/requests/unit_convert_unit_request.py +71 -0
- zaber_motion/exceptions/__init__.py +1 -0
- zaber_motion/exceptions/pvt_sequence_generation_failed_exception.py +10 -0
- zaber_motion/library.py +38 -2
- zaber_motion/unit_table.py +29 -0
- zaber_motion/version.py +1 -1
- {zaber_motion-7.7.0.dist-info → zaber_motion-7.8.1.dist-info}/METADATA +1 -1
- {zaber_motion-7.7.0.dist-info → zaber_motion-7.8.1.dist-info}/RECORD +25 -20
- zaber_motion_bindings/zaber-motion-core-windows-386.dll +0 -0
- {zaber_motion-7.7.0.dist-info → zaber_motion-7.8.1.dist-info}/LICENSE.txt +0 -0
- {zaber_motion-7.7.0.dist-info → zaber_motion-7.8.1.dist-info}/WHEEL +0 -0
- {zaber_motion-7.7.0.dist-info → zaber_motion-7.8.1.dist-info}/top_level.txt +0 -0
zaber_motion/__init__.py
CHANGED
|
@@ -61,6 +61,7 @@ from .exceptions.pvt_execution_exception import PvtExecutionException as PvtExec
|
|
|
61
61
|
from .exceptions.pvt_mode_exception import PvtModeException as PvtModeException
|
|
62
62
|
from .exceptions.pvt_movement_failed_exception import PvtMovementFailedException as PvtMovementFailedException
|
|
63
63
|
from .exceptions.pvt_movement_interrupted_exception import PvtMovementInterruptedException as PvtMovementInterruptedException
|
|
64
|
+
from .exceptions.pvt_sequence_generation_failed_exception import PvtSequenceGenerationFailedException as PvtSequenceGenerationFailedException
|
|
64
65
|
from .exceptions.pvt_setup_failed_exception import PvtSetupFailedException as PvtSetupFailedException
|
|
65
66
|
from .exceptions.remote_mode_exception import RemoteModeException as RemoteModeException
|
|
66
67
|
from .exceptions.request_timeout_exception import RequestTimeoutException as RequestTimeoutException
|
zaber_motion/ascii/__init__.py
CHANGED
|
@@ -45,6 +45,7 @@ from ..dto.ascii.io_port_type import IoPortType as IoPortType
|
|
|
45
45
|
from ..dto.ascii.lockstep_axes import LockstepAxes as LockstepAxes
|
|
46
46
|
from ..dto.ascii.measurement_sequence import MeasurementSequence as MeasurementSequence
|
|
47
47
|
from ..dto.ascii.message_type import MessageType as MessageType
|
|
48
|
+
from ..dto.ascii.optional_measurement_sequence import OptionalMeasurementSequence as OptionalMeasurementSequence
|
|
48
49
|
from ..dto.ascii.oscilloscope_capture_properties import OscilloscopeCaptureProperties as OscilloscopeCaptureProperties
|
|
49
50
|
from ..dto.ascii.oscilloscope_data_source import OscilloscopeDataSource as OscilloscopeDataSource
|
|
50
51
|
from ..dto.ascii.paramset_info import ParamsetInfo as ParamsetInfo
|
|
@@ -12,6 +12,8 @@ from ..dto.ascii.pvt_axis_definition import PvtAxisDefinition
|
|
|
12
12
|
from ..dto.ascii.pvt_sequence_data import PvtSequenceData
|
|
13
13
|
from ..dto.ascii.pvt_csv_data import PvtCsvData
|
|
14
14
|
from ..dto.ascii.measurement_sequence import MeasurementSequence
|
|
15
|
+
from ..dto.ascii.optional_measurement_sequence import OptionalMeasurementSequence
|
|
16
|
+
|
|
15
17
|
from .pvt_io import PvtIo
|
|
16
18
|
from ..dto.ascii.digital_output_action import DigitalOutputAction
|
|
17
19
|
|
|
@@ -506,6 +508,168 @@ class PvtSequence:
|
|
|
506
508
|
)
|
|
507
509
|
await call_async("device/stream_points", request)
|
|
508
510
|
|
|
511
|
+
@staticmethod
|
|
512
|
+
def generate_velocities(
|
|
513
|
+
positions: List[MeasurementSequence],
|
|
514
|
+
times: MeasurementSequence,
|
|
515
|
+
velocities: Optional[List[OptionalMeasurementSequence]] = None,
|
|
516
|
+
times_relative: bool = True
|
|
517
|
+
) -> PvtSequenceData:
|
|
518
|
+
"""
|
|
519
|
+
Generates velocities for a sequence of positions and times, and (optionally) a partially defined sequence
|
|
520
|
+
of velocities. Note that if some velocities are defined, the solver will NOT modify them in any way.
|
|
521
|
+
If all velocities are defined, the solver will simply return the same velocities.
|
|
522
|
+
This function calculates velocities by enforcing that acceleration be continuous at each segment transition.
|
|
523
|
+
|
|
524
|
+
Also note that if generating a path for multiple axes, the user must provide a position measurement sequence
|
|
525
|
+
per axis, And the values arrays for each sequence must be equal in length to each other and also to the
|
|
526
|
+
times sequence.
|
|
527
|
+
|
|
528
|
+
Args:
|
|
529
|
+
positions: Positions for the axes to move through, relative to their home positions.
|
|
530
|
+
Each MeasurementSequence represents a sequence of positions along a particular dimension.
|
|
531
|
+
For example, a 2D path sequence would contain two MeasurementSequence objects,
|
|
532
|
+
one representing positions along X and one for those along Y.
|
|
533
|
+
times: The relative or absolute time of each position in the PVT sequence.
|
|
534
|
+
velocities: Optional velocities corresponding to each point in the position sequences.
|
|
535
|
+
times_relative: If true, the times sequence values are interpreted as relative. Otherwise,
|
|
536
|
+
they are interpreted as absolute. Note that the values of the returned time
|
|
537
|
+
sequence are ALWAYS relative. This is because the PVT sequence API expects
|
|
538
|
+
points to have relative times.
|
|
539
|
+
|
|
540
|
+
Returns:
|
|
541
|
+
Object containing the generated PVT sequence. Note that returned time sequence is always relative.
|
|
542
|
+
"""
|
|
543
|
+
request = dto.PvtGenerateVelocitiesRequest(
|
|
544
|
+
positions=positions,
|
|
545
|
+
times=times,
|
|
546
|
+
velocities=velocities,
|
|
547
|
+
times_relative=times_relative,
|
|
548
|
+
)
|
|
549
|
+
response = call(
|
|
550
|
+
"device/pvt_generate_velocities",
|
|
551
|
+
request,
|
|
552
|
+
PvtSequenceData.from_binary)
|
|
553
|
+
return response
|
|
554
|
+
|
|
555
|
+
@staticmethod
|
|
556
|
+
async def generate_velocities_async(
|
|
557
|
+
positions: List[MeasurementSequence],
|
|
558
|
+
times: MeasurementSequence,
|
|
559
|
+
velocities: Optional[List[OptionalMeasurementSequence]] = None,
|
|
560
|
+
times_relative: bool = True
|
|
561
|
+
) -> PvtSequenceData:
|
|
562
|
+
"""
|
|
563
|
+
Generates velocities for a sequence of positions and times, and (optionally) a partially defined sequence
|
|
564
|
+
of velocities. Note that if some velocities are defined, the solver will NOT modify them in any way.
|
|
565
|
+
If all velocities are defined, the solver will simply return the same velocities.
|
|
566
|
+
This function calculates velocities by enforcing that acceleration be continuous at each segment transition.
|
|
567
|
+
|
|
568
|
+
Also note that if generating a path for multiple axes, the user must provide a position measurement sequence
|
|
569
|
+
per axis, And the values arrays for each sequence must be equal in length to each other and also to the
|
|
570
|
+
times sequence.
|
|
571
|
+
|
|
572
|
+
Args:
|
|
573
|
+
positions: Positions for the axes to move through, relative to their home positions.
|
|
574
|
+
Each MeasurementSequence represents a sequence of positions along a particular dimension.
|
|
575
|
+
For example, a 2D path sequence would contain two MeasurementSequence objects,
|
|
576
|
+
one representing positions along X and one for those along Y.
|
|
577
|
+
times: The relative or absolute time of each position in the PVT sequence.
|
|
578
|
+
velocities: Optional velocities corresponding to each point in the position sequences.
|
|
579
|
+
times_relative: If true, the times sequence values are interpreted as relative. Otherwise,
|
|
580
|
+
they are interpreted as absolute. Note that the values of the returned time
|
|
581
|
+
sequence are ALWAYS relative. This is because the PVT sequence API expects
|
|
582
|
+
points to have relative times.
|
|
583
|
+
|
|
584
|
+
Returns:
|
|
585
|
+
Object containing the generated PVT sequence. Note that returned time sequence is always relative.
|
|
586
|
+
"""
|
|
587
|
+
request = dto.PvtGenerateVelocitiesRequest(
|
|
588
|
+
positions=positions,
|
|
589
|
+
times=times,
|
|
590
|
+
velocities=velocities,
|
|
591
|
+
times_relative=times_relative,
|
|
592
|
+
)
|
|
593
|
+
response = await call_async(
|
|
594
|
+
"device/pvt_generate_velocities",
|
|
595
|
+
request,
|
|
596
|
+
PvtSequenceData.from_binary)
|
|
597
|
+
return response
|
|
598
|
+
|
|
599
|
+
@staticmethod
|
|
600
|
+
def generate_positions(
|
|
601
|
+
velocities: List[MeasurementSequence],
|
|
602
|
+
times: MeasurementSequence,
|
|
603
|
+
times_relative: bool = True
|
|
604
|
+
) -> PvtSequenceData:
|
|
605
|
+
"""
|
|
606
|
+
Generates positions for a sequence of velocities and times. This function calculates
|
|
607
|
+
positions by enforcing that acceleration be continuous at each segment transition.
|
|
608
|
+
|
|
609
|
+
Note that if generating a path for multiple axes, the user must provide a
|
|
610
|
+
velocity measurement sequence per axis, and the values arrays for each sequence
|
|
611
|
+
must be equal in length to each other and also to the times sequence.
|
|
612
|
+
|
|
613
|
+
Args:
|
|
614
|
+
velocities: The sequence of velocities for each axis.
|
|
615
|
+
Each MeasurementSequence represents a sequence of velocities along particular dimension.
|
|
616
|
+
times: The relative or absolute time of each position in the PVT sequence.
|
|
617
|
+
times_relative: If true, the times sequence values are interpreted as relative. Otherwise,
|
|
618
|
+
they are interpreted as absolute. Note that the values of the returned time
|
|
619
|
+
sequence are ALWAYS relative. This is because the PVT sequence API expects
|
|
620
|
+
points to have relative times.
|
|
621
|
+
|
|
622
|
+
Returns:
|
|
623
|
+
Object containing the generated PVT sequence. Note that returned time sequence is always relative.
|
|
624
|
+
"""
|
|
625
|
+
request = dto.PvtGeneratePositionsRequest(
|
|
626
|
+
velocities=velocities,
|
|
627
|
+
times=times,
|
|
628
|
+
times_relative=times_relative,
|
|
629
|
+
)
|
|
630
|
+
response = call(
|
|
631
|
+
"device/pvt_generate_positions",
|
|
632
|
+
request,
|
|
633
|
+
PvtSequenceData.from_binary)
|
|
634
|
+
return response
|
|
635
|
+
|
|
636
|
+
@staticmethod
|
|
637
|
+
async def generate_positions_async(
|
|
638
|
+
velocities: List[MeasurementSequence],
|
|
639
|
+
times: MeasurementSequence,
|
|
640
|
+
times_relative: bool = True
|
|
641
|
+
) -> PvtSequenceData:
|
|
642
|
+
"""
|
|
643
|
+
Generates positions for a sequence of velocities and times. This function calculates
|
|
644
|
+
positions by enforcing that acceleration be continuous at each segment transition.
|
|
645
|
+
|
|
646
|
+
Note that if generating a path for multiple axes, the user must provide a
|
|
647
|
+
velocity measurement sequence per axis, and the values arrays for each sequence
|
|
648
|
+
must be equal in length to each other and also to the times sequence.
|
|
649
|
+
|
|
650
|
+
Args:
|
|
651
|
+
velocities: The sequence of velocities for each axis.
|
|
652
|
+
Each MeasurementSequence represents a sequence of velocities along particular dimension.
|
|
653
|
+
times: The relative or absolute time of each position in the PVT sequence.
|
|
654
|
+
times_relative: If true, the times sequence values are interpreted as relative. Otherwise,
|
|
655
|
+
they are interpreted as absolute. Note that the values of the returned time
|
|
656
|
+
sequence are ALWAYS relative. This is because the PVT sequence API expects
|
|
657
|
+
points to have relative times.
|
|
658
|
+
|
|
659
|
+
Returns:
|
|
660
|
+
Object containing the generated PVT sequence. Note that returned time sequence is always relative.
|
|
661
|
+
"""
|
|
662
|
+
request = dto.PvtGeneratePositionsRequest(
|
|
663
|
+
velocities=velocities,
|
|
664
|
+
times=times,
|
|
665
|
+
times_relative=times_relative,
|
|
666
|
+
)
|
|
667
|
+
response = await call_async(
|
|
668
|
+
"device/pvt_generate_positions",
|
|
669
|
+
request,
|
|
670
|
+
PvtSequenceData.from_binary)
|
|
671
|
+
return response
|
|
672
|
+
|
|
509
673
|
def wait_until_idle(
|
|
510
674
|
self,
|
|
511
675
|
throw_error_on_fault: bool = True
|
|
@@ -907,7 +1071,7 @@ class PvtSequence:
|
|
|
907
1071
|
def save_sequence_data(
|
|
908
1072
|
sequence_data: PvtSequenceData,
|
|
909
1073
|
path: str,
|
|
910
|
-
dimension_names: Optional[List[str]]
|
|
1074
|
+
dimension_names: Optional[List[str]] = None
|
|
911
1075
|
) -> None:
|
|
912
1076
|
"""
|
|
913
1077
|
Saves PvtSequenceData object as csv file.
|
|
@@ -935,7 +1099,7 @@ class PvtSequence:
|
|
|
935
1099
|
async def save_sequence_data_async(
|
|
936
1100
|
sequence_data: PvtSequenceData,
|
|
937
1101
|
path: str,
|
|
938
|
-
dimension_names: Optional[List[str]]
|
|
1102
|
+
dimension_names: Optional[List[str]] = None
|
|
939
1103
|
) -> None:
|
|
940
1104
|
"""
|
|
941
1105
|
Saves PvtSequenceData object as csv file.
|
|
@@ -48,6 +48,7 @@ from .exceptions.pvt_execution_exception import PvtExecutionException
|
|
|
48
48
|
from .exceptions.pvt_mode_exception import PvtModeException
|
|
49
49
|
from .exceptions.pvt_movement_failed_exception import PvtMovementFailedException
|
|
50
50
|
from .exceptions.pvt_movement_interrupted_exception import PvtMovementInterruptedException
|
|
51
|
+
from .exceptions.pvt_sequence_generation_failed_exception import PvtSequenceGenerationFailedException
|
|
51
52
|
from .exceptions.pvt_setup_failed_exception import PvtSetupFailedException
|
|
52
53
|
from .exceptions.remote_mode_exception import RemoteModeException
|
|
53
54
|
from .exceptions.request_timeout_exception import RequestTimeoutException
|
|
@@ -111,6 +112,7 @@ errorMap = {
|
|
|
111
112
|
"PVT_MODE": PvtModeException,
|
|
112
113
|
"PVT_MOVEMENT_FAILED": PvtMovementFailedException,
|
|
113
114
|
"PVT_MOVEMENT_INTERRUPTED": PvtMovementInterruptedException,
|
|
115
|
+
"PVT_SEQUENCE_GENERATION_FAILED": PvtSequenceGenerationFailedException,
|
|
114
116
|
"PVT_SETUP_FAILED": PvtSetupFailedException,
|
|
115
117
|
"REMOTE_MODE": RemoteModeException,
|
|
116
118
|
"REQUEST_TIMEOUT": RequestTimeoutException,
|
|
@@ -18,6 +18,7 @@ from .io_port_type import IoPortType as IoPortType
|
|
|
18
18
|
from .lockstep_axes import LockstepAxes as LockstepAxes
|
|
19
19
|
from .measurement_sequence import MeasurementSequence as MeasurementSequence
|
|
20
20
|
from .message_type import MessageType as MessageType
|
|
21
|
+
from .optional_measurement_sequence import OptionalMeasurementSequence as OptionalMeasurementSequence
|
|
21
22
|
from .oscilloscope_capture_properties import OscilloscopeCaptureProperties as OscilloscopeCaptureProperties
|
|
22
23
|
from .oscilloscope_data_source import OscilloscopeDataSource as OscilloscopeDataSource
|
|
23
24
|
from .paramset_info import ParamsetInfo as ParamsetInfo
|
|
@@ -15,12 +15,13 @@ class CanSetStateDeviceResponse:
|
|
|
15
15
|
|
|
16
16
|
axis_errors: List[CanSetStateAxisResponse]
|
|
17
17
|
"""
|
|
18
|
-
A list of
|
|
18
|
+
A list of axis responses, potentially with messages for errors
|
|
19
|
+
which would block setting the state of the device's axes.
|
|
19
20
|
"""
|
|
20
21
|
|
|
21
22
|
error: Optional[str] = None
|
|
22
23
|
"""
|
|
23
|
-
The error blocking applying this state to the given device.
|
|
24
|
+
The error blocking applying this state to the given device, or null if there is no error.
|
|
24
25
|
"""
|
|
25
26
|
|
|
26
27
|
@staticmethod
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# This file is generated. Do not modify by hand.
|
|
2
|
+
# pylint: disable=line-too-long, unused-argument, f-string-without-interpolation, too-many-branches, too-many-statements, unnecessary-pass
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
from typing import Any, Dict, List, Optional
|
|
5
|
+
import decimal
|
|
6
|
+
from collections.abc import Iterable
|
|
7
|
+
import zaber_bson
|
|
8
|
+
from ...units import Units, UnitsAndLiterals, units_from_literals
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclass
|
|
12
|
+
class OptionalMeasurementSequence:
|
|
13
|
+
"""
|
|
14
|
+
Represents a sequence of optional numerical values with optional units specified.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
values: List[Optional[float]]
|
|
18
|
+
"""
|
|
19
|
+
Sequence of values.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
unit: Optional[UnitsAndLiterals] = None
|
|
23
|
+
"""
|
|
24
|
+
Optional units of the sequence.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
@staticmethod
|
|
28
|
+
def zero_values() -> 'OptionalMeasurementSequence':
|
|
29
|
+
return OptionalMeasurementSequence(
|
|
30
|
+
values=[],
|
|
31
|
+
unit=None,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
@staticmethod
|
|
35
|
+
def from_binary(data_bytes: bytes) -> 'OptionalMeasurementSequence':
|
|
36
|
+
"""" Deserialize a binary representation of this class. """
|
|
37
|
+
data = zaber_bson.loads(data_bytes) # type: Dict[str, Any]
|
|
38
|
+
return OptionalMeasurementSequence.from_dict(data)
|
|
39
|
+
|
|
40
|
+
def to_binary(self) -> bytes:
|
|
41
|
+
"""" Serialize this class to a binary representation. """
|
|
42
|
+
self.validate()
|
|
43
|
+
return zaber_bson.dumps(self.to_dict()) # type: ignore
|
|
44
|
+
|
|
45
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
46
|
+
return {
|
|
47
|
+
'values': [float(item) if item is not None else None for item in self.values] if self.values is not None else [],
|
|
48
|
+
'unit': units_from_literals(self.unit).value if self.unit is not None else None,
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@staticmethod
|
|
52
|
+
def from_dict(data: Dict[str, Any]) -> 'OptionalMeasurementSequence':
|
|
53
|
+
return OptionalMeasurementSequence(
|
|
54
|
+
values=data.get('values'), # type: ignore
|
|
55
|
+
unit=Units(data.get('unit')) if data.get('unit') is not None else None, # type: ignore
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
def validate(self) -> None:
|
|
59
|
+
"""" Validates the properties of the instance. """
|
|
60
|
+
if self.values is not None:
|
|
61
|
+
if not isinstance(self.values, Iterable):
|
|
62
|
+
raise ValueError('Property "Values" of "OptionalMeasurementSequence" is not iterable.')
|
|
63
|
+
|
|
64
|
+
for i, values_item in enumerate(self.values):
|
|
65
|
+
if values_item is not None:
|
|
66
|
+
if not isinstance(values_item, (int, float, decimal.Decimal)):
|
|
67
|
+
raise ValueError(f'Item {i} in property "Values" of "OptionalMeasurementSequence" is not a number.')
|
|
68
|
+
|
|
69
|
+
if self.unit is not None:
|
|
70
|
+
if not isinstance(self.unit, (Units, str)):
|
|
71
|
+
raise ValueError(f'Property "Unit" of "OptionalMeasurementSequence" is not Units.')
|
|
@@ -20,7 +20,8 @@ class SetStateDeviceResponse:
|
|
|
20
20
|
|
|
21
21
|
axis_responses: List[SetStateAxisResponse]
|
|
22
22
|
"""
|
|
23
|
-
A list of
|
|
23
|
+
A list of axis responses, potentially with warnings encountered
|
|
24
|
+
when applying this state to the device's axes.
|
|
24
25
|
"""
|
|
25
26
|
|
|
26
27
|
@staticmethod
|
|
@@ -141,6 +141,8 @@ from .oscilloscope_request import OscilloscopeRequest as OscilloscopeRequest
|
|
|
141
141
|
from .oscilloscope_start_request import OscilloscopeStartRequest as OscilloscopeStartRequest
|
|
142
142
|
from .prepare_command_request import PrepareCommandRequest as PrepareCommandRequest
|
|
143
143
|
from .process_on import ProcessOn as ProcessOn
|
|
144
|
+
from .pvt_generate_positions_request import PvtGeneratePositionsRequest as PvtGeneratePositionsRequest
|
|
145
|
+
from .pvt_generate_velocities_request import PvtGenerateVelocitiesRequest as PvtGenerateVelocitiesRequest
|
|
144
146
|
from .pvt_load_csv_request import PvtLoadCsvRequest as PvtLoadCsvRequest
|
|
145
147
|
from .pvt_point_request import PvtPointRequest as PvtPointRequest
|
|
146
148
|
from .pvt_points_request import PvtPointsRequest as PvtPointsRequest
|
|
@@ -235,6 +237,7 @@ from .trigger_on_fire_set_request import TriggerOnFireSetRequest as TriggerOnFir
|
|
|
235
237
|
from .trigger_on_fire_set_to_setting_request import TriggerOnFireSetToSettingRequest as TriggerOnFireSetToSettingRequest
|
|
236
238
|
from .trigger_set_label_request import TriggerSetLabelRequest as TriggerSetLabelRequest
|
|
237
239
|
from .trigger_states import TriggerStates as TriggerStates
|
|
240
|
+
from .unit_convert_unit_request import UnitConvertUnitRequest as UnitConvertUnitRequest
|
|
238
241
|
from .unit_get_enum_request import UnitGetEnumRequest as UnitGetEnumRequest
|
|
239
242
|
from .unit_get_enum_response import UnitGetEnumResponse as UnitGetEnumResponse
|
|
240
243
|
from .unit_get_symbol_request import UnitGetSymbolRequest as UnitGetSymbolRequest
|
|
@@ -49,19 +49,20 @@ class Errors(Enum):
|
|
|
49
49
|
PVT_MODE = 42
|
|
50
50
|
PVT_MOVEMENT_FAILED = 43
|
|
51
51
|
PVT_MOVEMENT_INTERRUPTED = 44
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
52
|
+
PVT_SEQUENCE_GENERATION_FAILED = 45
|
|
53
|
+
PVT_SETUP_FAILED = 46
|
|
54
|
+
REMOTE_MODE = 47
|
|
55
|
+
REQUEST_TIMEOUT = 48
|
|
56
|
+
SERIAL_PORT_BUSY = 49
|
|
57
|
+
SET_DEVICE_STATE_FAILED = 50
|
|
58
|
+
SET_PERIPHERAL_STATE_FAILED = 51
|
|
59
|
+
SETTING_NOT_FOUND = 52
|
|
60
|
+
STREAM_DISCONTINUITY = 53
|
|
61
|
+
STREAM_EXECUTION = 54
|
|
62
|
+
STREAM_MODE = 55
|
|
63
|
+
STREAM_MOVEMENT_FAILED = 56
|
|
64
|
+
STREAM_MOVEMENT_INTERRUPTED = 57
|
|
65
|
+
STREAM_SETUP_FAILED = 58
|
|
66
|
+
TIMEOUT = 59
|
|
67
|
+
TRANSPORT_ALREADY_USED = 60
|
|
68
|
+
UNKNOWN_REQUEST = 61
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# This file is generated. Do not modify by hand.
|
|
2
|
+
# pylint: disable=line-too-long, unused-argument, f-string-without-interpolation, too-many-branches, too-many-statements, unnecessary-pass
|
|
3
|
+
from dataclasses import dataclass, field
|
|
4
|
+
from typing import Any, Dict, List
|
|
5
|
+
from collections.abc import Iterable
|
|
6
|
+
import zaber_bson
|
|
7
|
+
from ..ascii.measurement_sequence import MeasurementSequence
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@dataclass
|
|
11
|
+
class PvtGeneratePositionsRequest:
|
|
12
|
+
|
|
13
|
+
velocities: List[MeasurementSequence] = field(default_factory=list)
|
|
14
|
+
|
|
15
|
+
times: MeasurementSequence = field(default_factory=MeasurementSequence.zero_values)
|
|
16
|
+
|
|
17
|
+
times_relative: bool = False
|
|
18
|
+
|
|
19
|
+
@staticmethod
|
|
20
|
+
def zero_values() -> 'PvtGeneratePositionsRequest':
|
|
21
|
+
return PvtGeneratePositionsRequest(
|
|
22
|
+
velocities=[],
|
|
23
|
+
times=MeasurementSequence.zero_values(),
|
|
24
|
+
times_relative=False,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
@staticmethod
|
|
28
|
+
def from_binary(data_bytes: bytes) -> 'PvtGeneratePositionsRequest':
|
|
29
|
+
"""" Deserialize a binary representation of this class. """
|
|
30
|
+
data = zaber_bson.loads(data_bytes) # type: Dict[str, Any]
|
|
31
|
+
return PvtGeneratePositionsRequest.from_dict(data)
|
|
32
|
+
|
|
33
|
+
def to_binary(self) -> bytes:
|
|
34
|
+
"""" Serialize this class to a binary representation. """
|
|
35
|
+
self.validate()
|
|
36
|
+
return zaber_bson.dumps(self.to_dict()) # type: ignore
|
|
37
|
+
|
|
38
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
39
|
+
return {
|
|
40
|
+
'velocities': [item.to_dict() for item in self.velocities] if self.velocities is not None else [],
|
|
41
|
+
'times': self.times.to_dict(),
|
|
42
|
+
'timesRelative': bool(self.times_relative),
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@staticmethod
|
|
46
|
+
def from_dict(data: Dict[str, Any]) -> 'PvtGeneratePositionsRequest':
|
|
47
|
+
return PvtGeneratePositionsRequest(
|
|
48
|
+
velocities=[MeasurementSequence.from_dict(item) for item in data.get('velocities')], # type: ignore
|
|
49
|
+
times=MeasurementSequence.from_dict(data.get('times')), # type: ignore
|
|
50
|
+
times_relative=data.get('timesRelative'), # type: ignore
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
def validate(self) -> None:
|
|
54
|
+
"""" Validates the properties of the instance. """
|
|
55
|
+
if self.velocities is not None:
|
|
56
|
+
if not isinstance(self.velocities, Iterable):
|
|
57
|
+
raise ValueError('Property "Velocities" of "PvtGeneratePositionsRequest" is not iterable.')
|
|
58
|
+
|
|
59
|
+
for i, velocities_item in enumerate(self.velocities):
|
|
60
|
+
if velocities_item is None:
|
|
61
|
+
raise ValueError(f'Item {i} in property "Velocities" of "PvtGeneratePositionsRequest" is None.')
|
|
62
|
+
|
|
63
|
+
if not isinstance(velocities_item, MeasurementSequence):
|
|
64
|
+
raise ValueError(f'Item {i} in property "Velocities" of "PvtGeneratePositionsRequest" is not an instance of "MeasurementSequence".')
|
|
65
|
+
|
|
66
|
+
velocities_item.validate()
|
|
67
|
+
|
|
68
|
+
if self.times is None:
|
|
69
|
+
raise ValueError(f'Property "Times" of "PvtGeneratePositionsRequest" is None.')
|
|
70
|
+
|
|
71
|
+
if not isinstance(self.times, MeasurementSequence):
|
|
72
|
+
raise ValueError(f'Property "Times" of "PvtGeneratePositionsRequest" is not an instance of "MeasurementSequence".')
|
|
73
|
+
|
|
74
|
+
self.times.validate()
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# This file is generated. Do not modify by hand.
|
|
2
|
+
# pylint: disable=line-too-long, unused-argument, f-string-without-interpolation, too-many-branches, too-many-statements, unnecessary-pass
|
|
3
|
+
from dataclasses import dataclass, field
|
|
4
|
+
from typing import Any, Dict, List, Optional
|
|
5
|
+
from collections.abc import Iterable
|
|
6
|
+
import zaber_bson
|
|
7
|
+
from ..ascii.measurement_sequence import MeasurementSequence
|
|
8
|
+
from ..ascii.optional_measurement_sequence import OptionalMeasurementSequence
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclass
|
|
12
|
+
class PvtGenerateVelocitiesRequest:
|
|
13
|
+
|
|
14
|
+
positions: List[MeasurementSequence] = field(default_factory=list)
|
|
15
|
+
|
|
16
|
+
times: MeasurementSequence = field(default_factory=MeasurementSequence.zero_values)
|
|
17
|
+
|
|
18
|
+
times_relative: bool = False
|
|
19
|
+
|
|
20
|
+
velocities: Optional[List[OptionalMeasurementSequence]] = None
|
|
21
|
+
|
|
22
|
+
@staticmethod
|
|
23
|
+
def zero_values() -> 'PvtGenerateVelocitiesRequest':
|
|
24
|
+
return PvtGenerateVelocitiesRequest(
|
|
25
|
+
positions=[],
|
|
26
|
+
velocities=None,
|
|
27
|
+
times=MeasurementSequence.zero_values(),
|
|
28
|
+
times_relative=False,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
@staticmethod
|
|
32
|
+
def from_binary(data_bytes: bytes) -> 'PvtGenerateVelocitiesRequest':
|
|
33
|
+
"""" Deserialize a binary representation of this class. """
|
|
34
|
+
data = zaber_bson.loads(data_bytes) # type: Dict[str, Any]
|
|
35
|
+
return PvtGenerateVelocitiesRequest.from_dict(data)
|
|
36
|
+
|
|
37
|
+
def to_binary(self) -> bytes:
|
|
38
|
+
"""" Serialize this class to a binary representation. """
|
|
39
|
+
self.validate()
|
|
40
|
+
return zaber_bson.dumps(self.to_dict()) # type: ignore
|
|
41
|
+
|
|
42
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
43
|
+
return {
|
|
44
|
+
'positions': [item.to_dict() for item in self.positions] if self.positions is not None else [],
|
|
45
|
+
'velocities': [item.to_dict() for item in self.velocities] if self.velocities is not None else [],
|
|
46
|
+
'times': self.times.to_dict(),
|
|
47
|
+
'timesRelative': bool(self.times_relative),
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@staticmethod
|
|
51
|
+
def from_dict(data: Dict[str, Any]) -> 'PvtGenerateVelocitiesRequest':
|
|
52
|
+
return PvtGenerateVelocitiesRequest(
|
|
53
|
+
positions=[MeasurementSequence.from_dict(item) for item in data.get('positions')], # type: ignore
|
|
54
|
+
velocities=[OptionalMeasurementSequence.from_dict(item) for item in data.get('velocities')] if data.get('velocities') is not None else None, # type: ignore
|
|
55
|
+
times=MeasurementSequence.from_dict(data.get('times')), # type: ignore
|
|
56
|
+
times_relative=data.get('timesRelative'), # type: ignore
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
def validate(self) -> None:
|
|
60
|
+
"""" Validates the properties of the instance. """
|
|
61
|
+
if self.positions is not None:
|
|
62
|
+
if not isinstance(self.positions, Iterable):
|
|
63
|
+
raise ValueError('Property "Positions" of "PvtGenerateVelocitiesRequest" is not iterable.')
|
|
64
|
+
|
|
65
|
+
for i, positions_item in enumerate(self.positions):
|
|
66
|
+
if positions_item is None:
|
|
67
|
+
raise ValueError(f'Item {i} in property "Positions" of "PvtGenerateVelocitiesRequest" is None.')
|
|
68
|
+
|
|
69
|
+
if not isinstance(positions_item, MeasurementSequence):
|
|
70
|
+
raise ValueError(f'Item {i} in property "Positions" of "PvtGenerateVelocitiesRequest" is not an instance of "MeasurementSequence".')
|
|
71
|
+
|
|
72
|
+
positions_item.validate()
|
|
73
|
+
|
|
74
|
+
if self.velocities is not None:
|
|
75
|
+
if not isinstance(self.velocities, Iterable):
|
|
76
|
+
raise ValueError('Property "Velocities" of "PvtGenerateVelocitiesRequest" is not iterable.')
|
|
77
|
+
|
|
78
|
+
for i, velocities_item in enumerate(self.velocities):
|
|
79
|
+
if velocities_item is None:
|
|
80
|
+
raise ValueError(f'Item {i} in property "Velocities" of "PvtGenerateVelocitiesRequest" is None.')
|
|
81
|
+
|
|
82
|
+
if not isinstance(velocities_item, OptionalMeasurementSequence):
|
|
83
|
+
raise ValueError(f'Item {i} in property "Velocities" of "PvtGenerateVelocitiesRequest" is not an instance of "OptionalMeasurementSequence".')
|
|
84
|
+
|
|
85
|
+
velocities_item.validate()
|
|
86
|
+
|
|
87
|
+
if self.times is None:
|
|
88
|
+
raise ValueError(f'Property "Times" of "PvtGenerateVelocitiesRequest" is None.')
|
|
89
|
+
|
|
90
|
+
if not isinstance(self.times, MeasurementSequence):
|
|
91
|
+
raise ValueError(f'Property "Times" of "PvtGenerateVelocitiesRequest" is not an instance of "MeasurementSequence".')
|
|
92
|
+
|
|
93
|
+
self.times.validate()
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# This file is generated. Do not modify by hand.
|
|
2
|
+
# pylint: disable=line-too-long, unused-argument, f-string-without-interpolation, too-many-branches, too-many-statements, unnecessary-pass
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
from typing import Any, Dict
|
|
5
|
+
import decimal
|
|
6
|
+
import zaber_bson
|
|
7
|
+
from ...units import Units, UnitsAndLiterals, units_from_literals
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@dataclass
|
|
11
|
+
class UnitConvertUnitRequest:
|
|
12
|
+
|
|
13
|
+
value: float = 0
|
|
14
|
+
|
|
15
|
+
from_unit: UnitsAndLiterals = Units.NATIVE
|
|
16
|
+
|
|
17
|
+
to_unit: UnitsAndLiterals = Units.NATIVE
|
|
18
|
+
|
|
19
|
+
@staticmethod
|
|
20
|
+
def zero_values() -> 'UnitConvertUnitRequest':
|
|
21
|
+
return UnitConvertUnitRequest(
|
|
22
|
+
value=0,
|
|
23
|
+
from_unit=Units.NATIVE,
|
|
24
|
+
to_unit=Units.NATIVE,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
@staticmethod
|
|
28
|
+
def from_binary(data_bytes: bytes) -> 'UnitConvertUnitRequest':
|
|
29
|
+
"""" Deserialize a binary representation of this class. """
|
|
30
|
+
data = zaber_bson.loads(data_bytes) # type: Dict[str, Any]
|
|
31
|
+
return UnitConvertUnitRequest.from_dict(data)
|
|
32
|
+
|
|
33
|
+
def to_binary(self) -> bytes:
|
|
34
|
+
"""" Serialize this class to a binary representation. """
|
|
35
|
+
self.validate()
|
|
36
|
+
return zaber_bson.dumps(self.to_dict()) # type: ignore
|
|
37
|
+
|
|
38
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
39
|
+
return {
|
|
40
|
+
'value': float(self.value),
|
|
41
|
+
'fromUnit': units_from_literals(self.from_unit).value,
|
|
42
|
+
'toUnit': units_from_literals(self.to_unit).value,
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@staticmethod
|
|
46
|
+
def from_dict(data: Dict[str, Any]) -> 'UnitConvertUnitRequest':
|
|
47
|
+
return UnitConvertUnitRequest(
|
|
48
|
+
value=data.get('value'), # type: ignore
|
|
49
|
+
from_unit=Units(data.get('fromUnit')), # type: ignore
|
|
50
|
+
to_unit=Units(data.get('toUnit')), # type: ignore
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
def validate(self) -> None:
|
|
54
|
+
"""" Validates the properties of the instance. """
|
|
55
|
+
if self.value is None:
|
|
56
|
+
raise ValueError(f'Property "Value" of "UnitConvertUnitRequest" is None.')
|
|
57
|
+
|
|
58
|
+
if not isinstance(self.value, (int, float, decimal.Decimal)):
|
|
59
|
+
raise ValueError(f'Property "Value" of "UnitConvertUnitRequest" is not a number.')
|
|
60
|
+
|
|
61
|
+
if self.from_unit is None:
|
|
62
|
+
raise ValueError(f'Property "FromUnit" of "UnitConvertUnitRequest" is None.')
|
|
63
|
+
|
|
64
|
+
if not isinstance(self.from_unit, (Units, str)):
|
|
65
|
+
raise ValueError(f'Property "FromUnit" of "UnitConvertUnitRequest" is not Units.')
|
|
66
|
+
|
|
67
|
+
if self.to_unit is None:
|
|
68
|
+
raise ValueError(f'Property "ToUnit" of "UnitConvertUnitRequest" is None.')
|
|
69
|
+
|
|
70
|
+
if not isinstance(self.to_unit, (Units, str)):
|
|
71
|
+
raise ValueError(f'Property "ToUnit" of "UnitConvertUnitRequest" is not Units.')
|
|
@@ -46,6 +46,7 @@ from .pvt_execution_exception import PvtExecutionException as PvtExecutionExcept
|
|
|
46
46
|
from .pvt_mode_exception import PvtModeException as PvtModeException
|
|
47
47
|
from .pvt_movement_failed_exception import PvtMovementFailedException as PvtMovementFailedException
|
|
48
48
|
from .pvt_movement_interrupted_exception import PvtMovementInterruptedException as PvtMovementInterruptedException
|
|
49
|
+
from .pvt_sequence_generation_failed_exception import PvtSequenceGenerationFailedException as PvtSequenceGenerationFailedException
|
|
49
50
|
from .pvt_setup_failed_exception import PvtSetupFailedException as PvtSetupFailedException
|
|
50
51
|
from .remote_mode_exception import RemoteModeException as RemoteModeException
|
|
51
52
|
from .request_timeout_exception import RequestTimeoutException as RequestTimeoutException
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
|
+
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
|
+
|
|
4
|
+
from .motion_lib_exception import MotionLibException
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class PvtSequenceGenerationFailedException(MotionLibException):
|
|
8
|
+
"""
|
|
9
|
+
Thrown when a PVT sequence generator function fails to find a sequence.
|
|
10
|
+
"""
|
zaber_motion/library.py
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
3
|
|
|
4
4
|
from typing import Optional
|
|
5
|
-
from .call import call_sync
|
|
5
|
+
from .call import call, call_async, call_sync
|
|
6
6
|
from .dto import requests as dto
|
|
7
7
|
from .dto.log_output_mode import LogOutputMode
|
|
8
8
|
from .dto.device_db_source_type import DeviceDbSourceType
|
|
@@ -79,6 +79,42 @@ class Library:
|
|
|
79
79
|
)
|
|
80
80
|
call_sync("device_db/toggle_store", request)
|
|
81
81
|
|
|
82
|
+
@staticmethod
|
|
83
|
+
def is_device_db_store_enabled() -> bool:
|
|
84
|
+
"""
|
|
85
|
+
Checks if the Device DB store is currently enabled.
|
|
86
|
+
|
|
87
|
+
Returns:
|
|
88
|
+
True if the Device DB store is enabled.
|
|
89
|
+
"""
|
|
90
|
+
request = dto.EmptyRequest(
|
|
91
|
+
)
|
|
92
|
+
response = call_sync(
|
|
93
|
+
"device_db/check_store",
|
|
94
|
+
request,
|
|
95
|
+
dto.BoolResponse.from_binary)
|
|
96
|
+
return response.value
|
|
97
|
+
|
|
98
|
+
@staticmethod
|
|
99
|
+
def clear_device_db_store() -> None:
|
|
100
|
+
"""
|
|
101
|
+
Clears the Device DB store on the local filesystem.
|
|
102
|
+
Note: If the device DB was enabled with a custom store location, store files will be removed in that location.
|
|
103
|
+
"""
|
|
104
|
+
request = dto.EmptyRequest(
|
|
105
|
+
)
|
|
106
|
+
call("device_db/clear_store", request)
|
|
107
|
+
|
|
108
|
+
@staticmethod
|
|
109
|
+
async def clear_device_db_store_async() -> None:
|
|
110
|
+
"""
|
|
111
|
+
Clears the Device DB store on the local filesystem.
|
|
112
|
+
Note: If the device DB was enabled with a custom store location, store files will be removed in that location.
|
|
113
|
+
"""
|
|
114
|
+
request = dto.EmptyRequest(
|
|
115
|
+
)
|
|
116
|
+
await call_async("device_db/clear_store", request)
|
|
117
|
+
|
|
82
118
|
@staticmethod
|
|
83
119
|
def set_internal_mode(
|
|
84
120
|
mode: bool
|
|
@@ -118,7 +154,7 @@ class Library:
|
|
|
118
154
|
"""
|
|
119
155
|
request = dto.CheckVersionRequest(
|
|
120
156
|
host="py",
|
|
121
|
-
version="7.
|
|
157
|
+
version="7.8.1",
|
|
122
158
|
)
|
|
123
159
|
call_sync("library/check_version", request)
|
|
124
160
|
|
zaber_motion/unit_table.py
CHANGED
|
@@ -55,3 +55,32 @@ class UnitTable:
|
|
|
55
55
|
request,
|
|
56
56
|
dto.UnitGetEnumResponse.from_binary)
|
|
57
57
|
return response.unit
|
|
58
|
+
|
|
59
|
+
@staticmethod
|
|
60
|
+
def convert_units(
|
|
61
|
+
value: float,
|
|
62
|
+
from_unit: UnitsAndLiterals,
|
|
63
|
+
to_unit: UnitsAndLiterals
|
|
64
|
+
) -> float:
|
|
65
|
+
"""
|
|
66
|
+
Converts a value from one unit to a different unit of the same dimension.
|
|
67
|
+
Note that this function does not support native unit conversions.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
value: The value to be converted.
|
|
71
|
+
from_unit: The unit which the value is being converted from.
|
|
72
|
+
to_unit: The unit which the value is being converted to.
|
|
73
|
+
|
|
74
|
+
Returns:
|
|
75
|
+
The converted value. Throws ConversionFailedException if unit is incompatible.
|
|
76
|
+
"""
|
|
77
|
+
request = dto.UnitConvertUnitRequest(
|
|
78
|
+
value=value,
|
|
79
|
+
from_unit=from_unit,
|
|
80
|
+
to_unit=to_unit,
|
|
81
|
+
)
|
|
82
|
+
response = call_sync(
|
|
83
|
+
"units/convert_unit",
|
|
84
|
+
request,
|
|
85
|
+
dto.DoubleResponse.from_binary)
|
|
86
|
+
return response.value
|
zaber_motion/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "7.
|
|
1
|
+
__version__ = "7.8.1"
|
|
@@ -2,21 +2,21 @@ zaber_bson/LICENSE,sha256=n7FWR6VC5ystss8E5JhpgVzVj7ox2YQ3_HEzL7rDzAs,1548
|
|
|
2
2
|
zaber_bson/__init__.py,sha256=I41i_Ou7_fHdZS_8Pe-gXvcvvvej3MTOsdEwkJT4H4E,1631
|
|
3
3
|
zaber_bson/codec.py,sha256=fqZxP1m51dwdVXp2fioJpS2tHOjJQCbOI_pxugyvQnQ,14591
|
|
4
4
|
zaber_bson/types.py,sha256=TDzH-OVS2SsiiivLLu1K-M-vv4Kk69GpS0cnxi7rxVk,1236
|
|
5
|
-
zaber_motion/__init__.py,sha256=
|
|
5
|
+
zaber_motion/__init__.py,sha256=y9QG7iNR3EE41fRpeNveeJ_bC5vUOcHdpk8ekC5W9yI,10196
|
|
6
6
|
zaber_motion/async_utils.py,sha256=3i14u5lwECpctxvwQ7izt0Q_RRwB6UfFtuDOIiM6o28,1505
|
|
7
7
|
zaber_motion/bindings.py,sha256=vS6PfLmBgDnQrPXsOyXRLqgN7SSCWswmtVxSYV6AgjQ,1505
|
|
8
8
|
zaber_motion/call.py,sha256=lH72duqcNvzh3Mae5JYZ5kIsyMRftSxSCgmWk9TjYik,5206
|
|
9
|
-
zaber_motion/convert_exception.py,sha256=
|
|
9
|
+
zaber_motion/convert_exception.py,sha256=TZrdGkmaTR7QOAwoxIQ9sOkHtuVg1bVs-sxbEDn22V8,8487
|
|
10
10
|
zaber_motion/dto_object.py,sha256=3gJU6AQCjiZcx2o7p2C9VTqw9apOM0i21ssmAM-VmEY,359
|
|
11
11
|
zaber_motion/events.py,sha256=3Ebp8zEjlRSjKG-b3WVrncZ6juHlKJTNeL-oeYIGpuk,3398
|
|
12
|
-
zaber_motion/library.py,sha256=
|
|
12
|
+
zaber_motion/library.py,sha256=P639o-d20ixjjDf2wURCg5AzG3FlxilYeNdtNIshJWY,4934
|
|
13
13
|
zaber_motion/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
14
|
zaber_motion/serialization.py,sha256=Fm53Bd_oAZ7yaTjtBss23Dps3ynWv8wUJT5JVQyqKVs,987
|
|
15
15
|
zaber_motion/tools.py,sha256=O9IGJNGaaG7Sz2jGkexdJfgyJ5L4vsLXJKFUhZlKlCI,2213
|
|
16
|
-
zaber_motion/unit_table.py,sha256=
|
|
16
|
+
zaber_motion/unit_table.py,sha256=FV-6VegAm499BJBJ4tdXgkP2Hl2h-fIlLJWkMrHlPAM,2497
|
|
17
17
|
zaber_motion/units.py,sha256=I-rnnzHhICUI0UGpL0a59t4Jm_JpRmj_ZDokeRmXFPk,10538
|
|
18
|
-
zaber_motion/version.py,sha256=
|
|
19
|
-
zaber_motion/ascii/__init__.py,sha256=
|
|
18
|
+
zaber_motion/version.py,sha256=q9HCYvd_KKYPNhrFJZNCqDLkLzTKEm20j2_jzE7u-Lw,22
|
|
19
|
+
zaber_motion/ascii/__init__.py,sha256=hB91yrB-iTGuk270V97TQK09fMiMUwL3FEIKhLqMJfc,4848
|
|
20
20
|
zaber_motion/ascii/all_axes.py,sha256=ob_LjrgU9jNCW3t9k0U7QSa-92ap9HspmHCsv7dkzgI,10783
|
|
21
21
|
zaber_motion/ascii/axis.py,sha256=Ks5MGJRUeKIwyUZOQ-13-fWpjt3ZJu9oyoGNT2yEJSg,57618
|
|
22
22
|
zaber_motion/ascii/axis_group.py,sha256=mcjxN3jhpKNaFB3rg60smi6Qr_75JPRXq2v6YDqjlfo,12927
|
|
@@ -31,7 +31,7 @@ zaber_motion/ascii/oscilloscope_data.py,sha256=YEOJH4yY_4R2Anm2-OOZXt_3jxFUMAD3R
|
|
|
31
31
|
zaber_motion/ascii/pvt.py,sha256=_D_S6JenjZ_DC-agtmyp5rx__utRV63T0eKA7sPcguE,2865
|
|
32
32
|
zaber_motion/ascii/pvt_buffer.py,sha256=wrxf3n2hNL82QdyCiBG3c3jDwQb9tnDpaxBW1aiY_-s,3165
|
|
33
33
|
zaber_motion/ascii/pvt_io.py,sha256=FiwJG6FQTPPtLRgH3AQhjfHRwWmDwiRri77dgyz4zXs,22237
|
|
34
|
-
zaber_motion/ascii/pvt_sequence.py,sha256=
|
|
34
|
+
zaber_motion/ascii/pvt_sequence.py,sha256=B4gAYjKtBkp4DGj30RxXv6aNOgtFlBly-ZacvclqHug,51329
|
|
35
35
|
zaber_motion/ascii/servo_tuner.py,sha256=uV3UxXIgz1xx-_lRaaxMVjF45Fp1AGpPgO1vKTYx8ro,23339
|
|
36
36
|
zaber_motion/ascii/setting_constants.py,sha256=1IWvClLjkV96gqZyCdpmxhqTumh-ZqGDhZ3POOYq7ro,29495
|
|
37
37
|
zaber_motion/ascii/storage.py,sha256=nB4adzPAZI4YL3lUgB3hrFHmP7Rof8dl_b_AsgOGEP0,26131
|
|
@@ -57,12 +57,12 @@ zaber_motion/dto/log_output_mode.py,sha256=cJuF_Xfmulvpek8UYExt7Re9uwFyZPMQgYCko
|
|
|
57
57
|
zaber_motion/dto/measurement.py,sha256=TMLk6tdGQP0qRspzRW_ITEIJt0zy4vOyWXsgqBXgWbs,2219
|
|
58
58
|
zaber_motion/dto/named_parameter.py,sha256=SYqr3ESG7k7pzIb7YbqI44VCD9QfL-HhMxum5JGmHTI,2006
|
|
59
59
|
zaber_motion/dto/rotation_direction.py,sha256=9BiDpSUbRB1yXqiJiaCi05Bkg5rWVZYv78wSZ2JDmC8,214
|
|
60
|
-
zaber_motion/dto/ascii/__init__.py,sha256=
|
|
60
|
+
zaber_motion/dto/ascii/__init__.py,sha256=epPPuy1Uxd5dnrft1_OYh-K-mT9oQg1lLYoWj1SXySY,3048
|
|
61
61
|
zaber_motion/dto/ascii/alert_event.py,sha256=ov3oTWjcru4UoYvPSiXuJaCvrOvS31DHSK96_JEaPJM,3834
|
|
62
62
|
zaber_motion/dto/ascii/axis_identity.py,sha256=EZ-E8XCvfDRfcq8s27nHGSQHHvaxEMsL0rk46Mrt7pk,4268
|
|
63
63
|
zaber_motion/dto/ascii/axis_type.py,sha256=bMG3ienP4BKf-b3hhZW2f_kYAyRP2_lYVbZdstqmUwA,237
|
|
64
|
-
zaber_motion/dto/ascii/can_set_state_axis_response.py,sha256
|
|
65
|
-
zaber_motion/dto/ascii/can_set_state_device_response.py,sha256=
|
|
64
|
+
zaber_motion/dto/ascii/can_set_state_axis_response.py,sha256=-6zTOvCDXDYmeAlmZ4CCc5nfKGimtHWcb3AjSuQFhyc,2506
|
|
65
|
+
zaber_motion/dto/ascii/can_set_state_device_response.py,sha256=ll-5a3u9yHJzgsOW6ZPFu_pHgbXyRhGIi1Q4TCbp6po,3091
|
|
66
66
|
zaber_motion/dto/ascii/conversion_factor.py,sha256=V_gP9RZI-wKurPUPLiSB-L_Zeb4gwZk7-aciqZMWjWY,2656
|
|
67
67
|
zaber_motion/dto/ascii/device_identity.py,sha256=kyirom_PHXdYuvxMz_1N7sdmKaobYjClq9ivN8uTcnE,4717
|
|
68
68
|
zaber_motion/dto/ascii/device_io_info.py,sha256=mLMlmUzjyb9BgzXeRs3zrhJbcxgS9g9i97_z6Pwq9z8,4337
|
|
@@ -76,6 +76,7 @@ zaber_motion/dto/ascii/io_port_type.py,sha256=7Hp8M5__xslDIFKTZ_zxz0COeYEPcH2Drb
|
|
|
76
76
|
zaber_motion/dto/ascii/lockstep_axes.py,sha256=l7wxEnMVYopmcrlzzvZNFW-nzjVI6iPHsLmIiWYogIU,3591
|
|
77
77
|
zaber_motion/dto/ascii/measurement_sequence.py,sha256=Zffask0fxnkdd84Q0yPG0TWAPdxD-ufquTGXBvCfUGA,2719
|
|
78
78
|
zaber_motion/dto/ascii/message_type.py,sha256=64UZk6C4V83pGramwcBllmfejUojXb_M2uf3RIzihws,322
|
|
79
|
+
zaber_motion/dto/ascii/optional_measurement_sequence.py,sha256=L-9B4gGsov4CID2tCqro5lhN8FxdPfvsCfFe7bhNLuY,2754
|
|
79
80
|
zaber_motion/dto/ascii/oscilloscope_capture_properties.py,sha256=nKAg228CeqzyZ-rwNx9X7sWsTHS_opOdJUNE6TsWtEo,4531
|
|
80
81
|
zaber_motion/dto/ascii/oscilloscope_data_source.py,sha256=gCM4V8Z3-_rtg4oD6qnTtifCE-NYfVzxNlGvSAPXGgg,204
|
|
81
82
|
zaber_motion/dto/ascii/paramset_info.py,sha256=P5rc7dmBfUHxo1cFke8E_wGYxJ__EM3LwRh4VS6zR6E,3232
|
|
@@ -89,7 +90,7 @@ zaber_motion/dto/ascii/response.py,sha256=VgQeOC2isJv6gHmqttdHZsOXf65DXhDGa3pIox
|
|
|
89
90
|
zaber_motion/dto/ascii/servo_tuning_param.py,sha256=C8HBHWTUvwJbCYmmW8eaBmonbmyGzetb2sQ_oQI5B48,2065
|
|
90
91
|
zaber_motion/dto/ascii/servo_tuning_paramset.py,sha256=pyWYfSWuMZY6h3nOVcPb-F2gYX9i3bMcC867PGh2ahw,320
|
|
91
92
|
zaber_motion/dto/ascii/set_state_axis_response.py,sha256=DuE8olWJQAmP2OOGXijm4RCpEo26kBCUBeJrC3b3k4E,2820
|
|
92
|
-
zaber_motion/dto/ascii/set_state_device_response.py,sha256=
|
|
93
|
+
zaber_motion/dto/ascii/set_state_device_response.py,sha256=0xcaQuqpRfxO9snWEt3K7eA0PcCwwygV0gBX-RLo17U,3391
|
|
93
94
|
zaber_motion/dto/ascii/simple_tuning.py,sha256=xHt91l5MWaRPg-cP0gT7nUEwiN-cdZLp01dnhDcGTAM,4454
|
|
94
95
|
zaber_motion/dto/ascii/simple_tuning_param_definition.py,sha256=Ntlg9UYaAT54u4TJUEZaAzh5WFx5oqX3D2uJO9oVHms,3571
|
|
95
96
|
zaber_motion/dto/ascii/stream_axis_definition.py,sha256=wllDMO25NOWTY1pO8qZg87pJu-zpMFTbZ6MEctu9Qq4,2551
|
|
@@ -150,7 +151,7 @@ zaber_motion/dto/product/__init__.py,sha256=M7m313pDn0mT99u1qPhrmit0N3wN3D3ylnIQ
|
|
|
150
151
|
zaber_motion/dto/product/process_controller_mode.py,sha256=JSfKRAOKGWBXpKbUAvYy3IDGtWyRoz4c5sXKXpiHu_4,228
|
|
151
152
|
zaber_motion/dto/product/process_controller_source.py,sha256=yz3yRp5AZP71bYB7ivY9q3ZuGIZkJ7hxt13G-XpPFyc,2577
|
|
152
153
|
zaber_motion/dto/product/process_controller_source_sensor.py,sha256=z2nfX4jq79cAmnbr7Wz9GKKa1CoSZfEFakHgqfKpJoM,217
|
|
153
|
-
zaber_motion/dto/requests/__init__.py,sha256=
|
|
154
|
+
zaber_motion/dto/requests/__init__.py,sha256=v5x-eab0KwKVFBnSTrkXM-np1JPGXL9BhkFWXfanGT0,23260
|
|
154
155
|
zaber_motion/dto/requests/alert_event_wrapper.py,sha256=B7zwY7iDrkXG1hjGHHjXgtC_rMSKG7Iok6_bG-do2g8,2394
|
|
155
156
|
zaber_motion/dto/requests/autofocus_focus_request.py,sha256=3rZ5-s6dc6BV_DukDa-Fi2BL30QKAOd-K_9dP-QWOZ0,5272
|
|
156
157
|
zaber_motion/dto/requests/autofocus_get_objective_params_request.py,sha256=0E0X4PuQVJ8Yt3LZzUC-nueGFQ-mEMpcSRUzf5ta6mw,5351
|
|
@@ -235,7 +236,7 @@ zaber_motion/dto/requests/double_response.py,sha256=8B0G4l30XwvpYmWdDL5od31oIH4c
|
|
|
235
236
|
zaber_motion/dto/requests/driver_enable_request.py,sha256=zZaWJSGVgpKk43q1bIHHCzgA9lwNTC7DrWc_97Rvnh4,3362
|
|
236
237
|
zaber_motion/dto/requests/empty_autofocus_request.py,sha256=jLgaZFfXj4d8yYyaqUQMH2-wL7691ncWFzY1Ezl6em4,4417
|
|
237
238
|
zaber_motion/dto/requests/empty_request.py,sha256=LpxBSfVZ0EwouTZ6IOKnE8S4pcg0ZKXcmW6DZIly9Qg,1138
|
|
238
|
-
zaber_motion/dto/requests/errors.py,sha256=
|
|
239
|
+
zaber_motion/dto/requests/errors.py,sha256=GfSjeCyPDq7_oa7I6IWsJYX_4EHNC32pk2pq6krftvw,1748
|
|
239
240
|
zaber_motion/dto/requests/find_device_request.py,sha256=AUXpS2pnQqDMbgDGtqlzgBnbygeGMvhfXM2pVdRrjOk,2462
|
|
240
241
|
zaber_motion/dto/requests/find_device_response.py,sha256=hoYoUKUVJvZvedousk-dqZ1GVzxneOQIMwoszf7z16c,1755
|
|
241
242
|
zaber_motion/dto/requests/forget_devices_request.py,sha256=SZX_6nxaix8XHSXmBbs5ahkjdKm_33Y-bTHFWmF6WS8,3015
|
|
@@ -293,6 +294,8 @@ zaber_motion/dto/requests/oscilloscope_start_request.py,sha256=6VFGTeuq0Ej6AC2GE
|
|
|
293
294
|
zaber_motion/dto/requests/prepare_command_request.py,sha256=msIbcbIl9wd3txrYiU2d4JM3t8rx-6DQbY9e985IAvM,4445
|
|
294
295
|
zaber_motion/dto/requests/process_on.py,sha256=6GgTZUAOljage_Bu1vv_1tpeTeLVDUlM0f1Edm_RKw8,3807
|
|
295
296
|
zaber_motion/dto/requests/pvt_csv_request.py,sha256=YjFTHsHWnfm3tDOXfVP75VSiC2167jd9wJ663qd7CRY,2142
|
|
297
|
+
zaber_motion/dto/requests/pvt_generate_positions_request.py,sha256=UzujVEAqL-fQMNJQrpusIMuefuDcC23WkuCCFOrrjv8,3177
|
|
298
|
+
zaber_motion/dto/requests/pvt_generate_velocities_request.py,sha256=MFIgb_kdh_vYJGBhEqCxZPYZGvAsc6D_rWf7nQ5R_0I,4362
|
|
296
299
|
zaber_motion/dto/requests/pvt_load_csv_request.py,sha256=1LalBGodyuWCXcFeBdcgF4RflQ9BN2JT_4yXEeIPUwY,1468
|
|
297
300
|
zaber_motion/dto/requests/pvt_point_request.py,sha256=xOltyiyRN4hdtRB-tzLuyLoLs2SDmPW5neO7sI4bGtM,6142
|
|
298
301
|
zaber_motion/dto/requests/pvt_points_request.py,sha256=C-hYdDv43b3dLA5RSwOkFFDxnSeU1s_CpL0FL3kM8Ok,6324
|
|
@@ -387,6 +390,7 @@ zaber_motion/dto/requests/trigger_on_fire_set_request.py,sha256=lFkaCjn9p2dRvY0b
|
|
|
387
390
|
zaber_motion/dto/requests/trigger_on_fire_set_to_setting_request.py,sha256=6pbbZSPAIB7G_2OOtNJ2DyaRTK9-6VkNSW0FwhbMaes,6476
|
|
388
391
|
zaber_motion/dto/requests/trigger_set_label_request.py,sha256=zPrbfRYWpl9HL22JCRfLk7X43sADMJzek_Ec9mYQ6Ko,3477
|
|
389
392
|
zaber_motion/dto/requests/trigger_states.py,sha256=ykIAvNpYpF9UQQl_YroPX3NOfF2twA2WRd9M5vosxco,2120
|
|
393
|
+
zaber_motion/dto/requests/unit_convert_unit_request.py,sha256=zL28hFH5J-ZaN6dVIBkNK_r-RdAZil7g7_G_BNlI9aM,2670
|
|
390
394
|
zaber_motion/dto/requests/unit_get_enum_request.py,sha256=gSf9xq6l2V0EMSrLeMJup05KMjfHdHAXkZXvG5SomIc,1494
|
|
391
395
|
zaber_motion/dto/requests/unit_get_enum_response.py,sha256=qGP73JheBg6iNZ20Nrbb2_mjvaNeS-T9MGdS63Fpr9c,1684
|
|
392
396
|
zaber_motion/dto/requests/unit_get_symbol_request.py,sha256=E8KHcJp3LmuILwI3EPkAks7dACBnBib5joIhp33cAW8,1693
|
|
@@ -397,7 +401,7 @@ zaber_motion/dto/requests/wait_to_clear_warnings_request.py,sha256=0V0RDid4I6Qjj
|
|
|
397
401
|
zaber_motion/dto/requests/wait_to_respond_request.py,sha256=pWObRotk-p2vV2RqrTxlFHXwFrjCDxYnU2ejdEhAJdw,2839
|
|
398
402
|
zaber_motion/dto/requests/wdi_generic_request.py,sha256=Lcv859aSxWz3oiVzZNPLYqtihn-DCU8wJeNe9fwqpK8,5429
|
|
399
403
|
zaber_motion/dto/requests/wdi_get_status_response.py,sha256=z3uWQm2B3ILVtdouXCFiAL3oR9DLq4TbsmdXuPBeics,1921
|
|
400
|
-
zaber_motion/exceptions/__init__.py,sha256=
|
|
404
|
+
zaber_motion/exceptions/__init__.py,sha256=LjK4CSzpTGL4liTc5wfiVAStoIUfO_8bNRPfYQXl_5A,8634
|
|
401
405
|
zaber_motion/exceptions/bad_command_exception.py,sha256=7Exn_kkVrmm8CtdGauCxNJsr_wP1d6CvMdQNUQraWsE,298
|
|
402
406
|
zaber_motion/exceptions/bad_data_exception.py,sha256=bLksIisdtBiUVBxi4Jm9CIvdNF8NjZkKjORBTUOxx2o,336
|
|
403
407
|
zaber_motion/exceptions/binary_command_failed_exception.py,sha256=1LaLjeoJte5EGrb6Oa90WdLwovW0rLfMA_FEemnp6X4,976
|
|
@@ -444,6 +448,7 @@ zaber_motion/exceptions/pvt_execution_exception.py,sha256=IYkQnOhM_SvhUcZxiG6DHw
|
|
|
444
448
|
zaber_motion/exceptions/pvt_mode_exception.py,sha256=xO9cRUZ3ER6pFnody8pkRxZjLL6whPWK9_r3e0l-tIM,326
|
|
445
449
|
zaber_motion/exceptions/pvt_movement_failed_exception.py,sha256=J3zsLTukIo_35lzQSVBCupgDL51qkVpVF7H2iS0j94E,959
|
|
446
450
|
zaber_motion/exceptions/pvt_movement_interrupted_exception.py,sha256=0_79cwFfg0VQuVNhtuNzGRrJurr2uKqV9oxSZxd9w7s,1021
|
|
451
|
+
zaber_motion/exceptions/pvt_sequence_generation_failed_exception.py,sha256=yQIJPrOFnRl2-IuOyN2P4FE3W1TUNZ4poThKeWEbweA,325
|
|
447
452
|
zaber_motion/exceptions/pvt_setup_failed_exception.py,sha256=HfxYv0q7XGB_EmNAHygsWk8-SmZIGRgGGe299mTpEB4,285
|
|
448
453
|
zaber_motion/exceptions/remote_mode_exception.py,sha256=PQh6YuLYFYQNIa_okaCVqRlhFot4PsDq96w6Zid6nIY,423
|
|
449
454
|
zaber_motion/exceptions/request_timeout_exception.py,sha256=FTMm2OKtabLJyxuoqDvGreh1yVToEZel84pruI_J-ro,300
|
|
@@ -475,9 +480,9 @@ zaber_motion/microscopy/wdi_autofocus_provider.py,sha256=nQG0UdtEnUWa91YDi9OLnEy
|
|
|
475
480
|
zaber_motion/product/__init__.py,sha256=lno0C-gLBsHNPGnjp6bbXHX0cEk27cA8uFjq5vzmE9Q,531
|
|
476
481
|
zaber_motion/product/process.py,sha256=42wF55BvUcUY36_6HvpdWLC0b2ap6suoCItpR88pp14,27458
|
|
477
482
|
zaber_motion/product/process_controller.py,sha256=a5BM42BP82gcHtub98SkUsxsRoKByNbYmaBXzRYT1ao,4185
|
|
478
|
-
zaber_motion_bindings/zaber-motion-core-windows-386.dll,sha256=
|
|
479
|
-
zaber_motion-7.
|
|
480
|
-
zaber_motion-7.
|
|
481
|
-
zaber_motion-7.
|
|
482
|
-
zaber_motion-7.
|
|
483
|
-
zaber_motion-7.
|
|
483
|
+
zaber_motion_bindings/zaber-motion-core-windows-386.dll,sha256=VGapYtyM5m_y0dE5puxb1Ufm3wlPfzoLCwP7TByTkps,14406656
|
|
484
|
+
zaber_motion-7.8.1.dist-info/LICENSE.txt,sha256=xNj9QcKqsI3WK5EBPeYbQAiDcnVe4xmIpCy65NYNVhA,109244
|
|
485
|
+
zaber_motion-7.8.1.dist-info/METADATA,sha256=2ezEr7xeKcEsKOPcQhmmDbNX4ogaysJigg2Gyzjn8t0,129815
|
|
486
|
+
zaber_motion-7.8.1.dist-info/WHEEL,sha256=IvMpNSrdjsF1-j47TwHzkg3me4kdrqF21OaDAsKYs1k,93
|
|
487
|
+
zaber_motion-7.8.1.dist-info/top_level.txt,sha256=ypgkPvPad6Oge50CT6unnvxCEliKUB6olL6CUUER1SA,51
|
|
488
|
+
zaber_motion-7.8.1.dist-info/RECORD,,
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|