zaber-motion 8.0.2__py3-none-win_amd64.whl → 8.0.4__py3-none-win_amd64.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 CHANGED
@@ -7,6 +7,7 @@ from .async_utils import wait_all as wait_all
7
7
  from .library import Library as Library
8
8
  from .tools import Tools as Tools
9
9
  from .unit_table import UnitTable as UnitTable
10
+ from .variant_test_api import VariantTestApi as VariantTestApi
10
11
  from .dto.axis_address import AxisAddress as AxisAddress
11
12
  from .dto.channel_address import ChannelAddress as ChannelAddress
12
13
  from .dto.device_db_source import DeviceDbSource as DeviceDbSource
@@ -1169,6 +1169,11 @@ class SettingConstants:
1169
1169
  """
1170
1170
  MAXSPEED = "maxspeed"
1171
1171
 
1172
+ """
1173
+ Maxspeed Max.
1174
+ """
1175
+ MAXSPEED_MAX = "maxspeed.max"
1176
+
1172
1177
  """
1173
1178
  Motion Accel Ramptime.
1174
1179
  """
@@ -1359,6 +1364,11 @@ class SettingConstants:
1359
1364
  """
1360
1365
  MOTOR_RESISTANCE = "motor.resistance"
1361
1366
 
1367
+ """
1368
+ Motor Temperature.
1369
+ """
1370
+ MOTOR_TEMPERATURE = "motor.temperature"
1371
+
1362
1372
  """
1363
1373
  Parking State.
1364
1374
  """
@@ -4,6 +4,7 @@ from dataclasses import dataclass
4
4
  from typing import Any, Dict, List
5
5
  from collections.abc import Iterable
6
6
  import zaber_bson
7
+ from ..device_db_source_type import DeviceDbSourceType
7
8
 
8
9
 
9
10
  @dataclass
@@ -17,6 +18,11 @@ class DeviceDbInnerError:
17
18
  Code describing type of the error.
18
19
  """
19
20
 
21
+ source_type: DeviceDbSourceType
22
+ """
23
+ The type of database source that caused the error.
24
+ """
25
+
20
26
  message: str
21
27
  """
22
28
  Description of the error.
@@ -31,6 +37,7 @@ class DeviceDbInnerError:
31
37
  def zero_values() -> 'DeviceDbInnerError':
32
38
  return DeviceDbInnerError(
33
39
  code="",
40
+ source_type=next(first for first in DeviceDbSourceType),
34
41
  message="",
35
42
  inner_errors=[],
36
43
  )
@@ -49,6 +56,7 @@ class DeviceDbInnerError:
49
56
  def to_dict(self) -> Dict[str, Any]:
50
57
  return {
51
58
  'code': str(self.code or ''),
59
+ 'sourceType': self.source_type.value,
52
60
  'message': str(self.message or ''),
53
61
  'innerErrors': [item.to_dict() for item in self.inner_errors] if self.inner_errors is not None else [],
54
62
  }
@@ -57,6 +65,7 @@ class DeviceDbInnerError:
57
65
  def from_dict(data: Dict[str, Any]) -> 'DeviceDbInnerError':
58
66
  return DeviceDbInnerError(
59
67
  code=data.get('code'), # type: ignore
68
+ source_type=DeviceDbSourceType(data.get('sourceType')), # type: ignore
60
69
  message=data.get('message'), # type: ignore
61
70
  inner_errors=[DeviceDbInnerError.from_dict(item) for item in data.get('innerErrors')], # type: ignore
62
71
  )
@@ -67,6 +76,12 @@ class DeviceDbInnerError:
67
76
  if not isinstance(self.code, str):
68
77
  raise ValueError(f'Property "Code" of "DeviceDbInnerError" is not a string.')
69
78
 
79
+ if self.source_type is None:
80
+ raise ValueError(f'Property "SourceType" of "DeviceDbInnerError" is None.')
81
+
82
+ if not isinstance(self.source_type, DeviceDbSourceType):
83
+ raise ValueError(f'Property "SourceType" of "DeviceDbInnerError" is not an instance of "DeviceDbSourceType".')
84
+
70
85
  if self.message is not None:
71
86
  if not isinstance(self.message, str):
72
87
  raise ValueError(f'Property "Message" of "DeviceDbInnerError" is not a string.')
@@ -209,11 +209,13 @@ from .stream_wait_request import StreamWaitRequest as StreamWaitRequest
209
209
  from .stream_wait_until_idle_request import StreamWaitUntilIdleRequest as StreamWaitUntilIdleRequest
210
210
  from .string_array_response import StringArrayResponse as StringArrayResponse
211
211
  from .string_response import StringResponse as StringResponse
212
+ from .test_dto_with_variants import TestDtoWithVariants as TestDtoWithVariants
212
213
  from .test_event import TestEvent as TestEvent
213
214
  from .test_request import TestRequest as TestRequest
214
215
  from .test_request_complex import TestRequestComplex as TestRequestComplex
215
216
  from .test_response import TestResponse as TestResponse
216
217
  from .test_response_long import TestResponseLong as TestResponseLong
218
+ from .test_variant import TestVariant as TestVariant
217
219
  from .toggle_device_db_store_request import ToggleDeviceDbStoreRequest as ToggleDeviceDbStoreRequest
218
220
  from .tools_list_serial_ports_response import ToolsListSerialPortsResponse as ToolsListSerialPortsResponse
219
221
  from .translator_create_from_device_request import TranslatorCreateFromDeviceRequest as TranslatorCreateFromDeviceRequest
@@ -0,0 +1,69 @@
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 .test_variant import TestVariant, TestVariantWireFormat
8
+
9
+
10
+ @dataclass
11
+ class TestDtoWithVariants:
12
+ """
13
+ A test DTO that includes variant types.
14
+ This is used to verify the correct handling of variant types as members of other DTO types.
15
+ """
16
+
17
+ variant_array: List[TestVariant] = field(default_factory=list)
18
+ """
19
+ Array of variants.
20
+ """
21
+
22
+ the_variant: Optional[TestVariant] = None
23
+ """
24
+ Single variant instance.
25
+ """
26
+
27
+ @staticmethod
28
+ def zero_values() -> 'TestDtoWithVariants':
29
+ return TestDtoWithVariants(
30
+ the_variant=None,
31
+ variant_array=[],
32
+ )
33
+
34
+ @staticmethod
35
+ def from_binary(data_bytes: bytes) -> 'TestDtoWithVariants':
36
+ """" Deserialize a binary representation of this class. """
37
+ data = zaber_bson.loads(data_bytes) # type: Dict[str, Any]
38
+ return TestDtoWithVariants.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
+ 'theVariant': TestVariantWireFormat(self.the_variant).to_dict() if self.the_variant is not None else None,
48
+ 'variantArray': [TestVariantWireFormat(item).to_dict() for item in self.variant_array] if self.variant_array is not None else [],
49
+ }
50
+
51
+ @staticmethod
52
+ def from_dict(data: Dict[str, Any]) -> 'TestDtoWithVariants':
53
+ return TestDtoWithVariants(
54
+ the_variant=TestVariantWireFormat.from_dict(data.get('theVariant')).convert_back() if data.get('theVariant') is not None else None, # type: ignore
55
+ variant_array=[TestVariantWireFormat.from_dict(item).convert_back() for item in data.get('variantArray')], # type: ignore
56
+ )
57
+
58
+ def validate(self) -> None:
59
+ """" Validates the properties of the instance. """
60
+ if self.the_variant is not None:
61
+ TestVariantWireFormat(self.the_variant).validate()
62
+
63
+ if self.variant_array is not None:
64
+ if not isinstance(self.variant_array, Iterable):
65
+ raise ValueError('Property "VariantArray" of "TestDtoWithVariants" is not iterable.')
66
+
67
+ for _, variant_array_item in enumerate(self.variant_array):
68
+ if variant_array_item is not None:
69
+ TestVariantWireFormat(variant_array_item).validate()
@@ -0,0 +1,160 @@
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, Union, List, Optional
5
+ import decimal
6
+ from collections.abc import Iterable
7
+ import zaber_bson
8
+ from ..ascii.axis_type import AxisType
9
+ from ..ascii.io_port_label import IoPortLabel
10
+
11
+
12
+ TestVariant = Union[AxisType, IoPortLabel, int, Optional[float], List[str]]
13
+ """
14
+ Test case for variant support. Not part of the public API. Do not use.
15
+ """
16
+
17
+
18
+ @dataclass
19
+ class TestVariantWireFormat:
20
+ """
21
+ Serialization wrapper for TestVariant variant. Not part of the public API; do not use.
22
+ """
23
+
24
+ variantValueType: str = ""
25
+
26
+ axisTypeValue: AxisType = next(first for first in AxisType)
27
+
28
+ ioPortLabelValue: IoPortLabel = field(default_factory=IoPortLabel.zero_values)
29
+
30
+ int32Value: int = 0
31
+
32
+ stringArrayValue: List[str] = field(default_factory=list)
33
+
34
+ optionalDoubleValue: Optional[float] = None
35
+
36
+ def __init__(self, value: TestVariant) -> None:
37
+ if value is None:
38
+ self.optionalDoubleValue = value
39
+ self.variantValueType = 'optionalDouble'
40
+ elif isinstance(value, Iterable):
41
+ self.stringArrayValue = value
42
+ self.variantValueType = 'stringArray'
43
+ elif isinstance(value, int):
44
+ self.int32Value = value
45
+ self.variantValueType = 'int32'
46
+ elif isinstance(value, (float, decimal.Decimal)):
47
+ self.optionalDoubleValue = value
48
+ self.variantValueType = 'optionalDouble'
49
+ elif isinstance(value, AxisType):
50
+ self.axisTypeValue = value
51
+ self.variantValueType = 'AxisType'
52
+ elif isinstance(value, IoPortLabel):
53
+ self.ioPortLabelValue = value
54
+ self.variantValueType = 'IoPortLabel'
55
+ else:
56
+ raise TypeError(f"Cannot initialize TestVariant with value of type {type(value)}")
57
+
58
+ def convert_back(self) -> TestVariant:
59
+ if self.variantValueType == 'AxisType':
60
+ return self.axisTypeValue
61
+ if self.variantValueType == 'IoPortLabel':
62
+ return self.ioPortLabelValue
63
+ if self.variantValueType == 'int32':
64
+ return self.int32Value
65
+ if self.variantValueType == 'optionalDouble':
66
+ return self.optionalDoubleValue
67
+ if self.variantValueType == 'stringArray':
68
+ return self.stringArrayValue
69
+
70
+ raise ValueError(f"Invalid variant type tag value: {self.variantValueType}")
71
+
72
+ @staticmethod
73
+ def from_binary(data_bytes: bytes) -> 'TestVariantWireFormat':
74
+ """" Deserialize a binary representation of this class. """
75
+ data = zaber_bson.loads(data_bytes) # type: Dict[str, Any]
76
+ return TestVariantWireFormat.from_dict(data)
77
+
78
+ def to_binary(self) -> bytes:
79
+ """" Serialize this class to a binary representation. """
80
+ self.validate()
81
+ return zaber_bson.dumps(self.to_dict()) # type: ignore
82
+
83
+ def to_dict(self) -> Dict[str, Any]:
84
+ d: Dict[str, Any] = {
85
+ 'variantValueType': self.variantValueType,
86
+ }
87
+
88
+ if self.variantValueType == 'AxisType':
89
+ d['axisTypeValue'] = self.axisTypeValue.value
90
+ elif self.variantValueType == 'IoPortLabel':
91
+ d['ioPortLabelValue'] = self.ioPortLabelValue.to_dict()
92
+ elif self.variantValueType == 'int32':
93
+ d['int32Value'] = int(self.int32Value)
94
+ elif self.variantValueType == 'optionalDouble':
95
+ d['optionalDoubleValue'] = float(self.optionalDoubleValue) if self.optionalDoubleValue is not None else None
96
+ elif self.variantValueType == 'stringArray':
97
+ d['stringArrayValue'] = [str(item or '') for item in self.stringArrayValue] if self.stringArrayValue is not None else []
98
+ else:
99
+ raise ValueError(f"Invalid variant type tag {self.variantValueType} value")
100
+
101
+ return d
102
+
103
+ @staticmethod
104
+ def from_dict(data: Dict[str, Any]) -> 'TestVariantWireFormat':
105
+ tag = data.get('variantValueType')
106
+ if tag == 'AxisType':
107
+ return TestVariantWireFormat(AxisType(data.get('axisTypeValue'))) # type: ignore
108
+ if tag == 'IoPortLabel':
109
+ return TestVariantWireFormat(IoPortLabel.from_dict(data.get('ioPortLabelValue'))) # type: ignore
110
+ if tag == 'int32':
111
+ return TestVariantWireFormat(data.get('int32Value')) # type: ignore
112
+ if tag == 'optionalDouble':
113
+ return TestVariantWireFormat(data.get('optionalDoubleValue')) # type: ignore
114
+ if tag == 'stringArray':
115
+ return TestVariantWireFormat(data.get('stringArrayValue')) # type: ignore
116
+
117
+ raise ValueError(f"Invalid variant type tag {tag} in response data")
118
+
119
+ def validate(self) -> None:
120
+ """" Validates the properties of the instance. """
121
+ if self.variantValueType == 'AxisType':
122
+ if self.axisTypeValue is None:
123
+ raise ValueError(f'Property "AxisType" of "TestVariant" is None.')
124
+
125
+ if not isinstance(self.axisTypeValue, AxisType):
126
+ raise ValueError(f'Property "AxisType" of "TestVariant" is not an instance of "AxisType".')
127
+
128
+ elif self.variantValueType == 'IoPortLabel':
129
+ if self.ioPortLabelValue is None:
130
+ raise ValueError(f'Property "IoPortLabel" of "TestVariant" is None.')
131
+
132
+ if not isinstance(self.ioPortLabelValue, IoPortLabel):
133
+ raise ValueError(f'Property "IoPortLabel" of "TestVariant" is not an instance of "IoPortLabel".')
134
+
135
+ self.ioPortLabelValue.validate()
136
+
137
+ elif self.variantValueType == 'int32':
138
+ if self.int32Value is None:
139
+ raise ValueError(f'Property "int32" of "TestVariant" is None.')
140
+
141
+ if not isinstance(self.int32Value, (int, float, decimal.Decimal)):
142
+ raise ValueError(f'Property "int32" of "TestVariant" is not a number.')
143
+
144
+ if int(self.int32Value) != self.int32Value:
145
+ raise ValueError(f'Property "int32" of "TestVariant" is not integer value.')
146
+
147
+ elif self.variantValueType == 'optionalDouble':
148
+ if self.optionalDoubleValue is not None:
149
+ if not isinstance(self.optionalDoubleValue, (int, float, decimal.Decimal)):
150
+ raise ValueError(f'Property "optionalDouble" of "TestVariant" is not a number.')
151
+
152
+ elif self.variantValueType == 'stringArray':
153
+ if self.stringArrayValue is not None:
154
+ if not isinstance(self.stringArrayValue, Iterable):
155
+ raise ValueError('Property "stringArray" of "TestVariant" is not iterable.')
156
+
157
+ for i, stringArrayValue_item in enumerate(self.stringArrayValue):
158
+ if stringArrayValue_item is not None:
159
+ if not isinstance(stringArrayValue_item, str):
160
+ raise ValueError(f'Item {i} in property "stringArray" of "TestVariant" is not a string.')
zaber_motion/library.py CHANGED
@@ -167,11 +167,13 @@ class Library:
167
167
  @staticmethod
168
168
  def check_version() -> None:
169
169
  """
170
+ Deprecated: Calling this function is no longer necessary as the check happens automatically.
171
+
170
172
  Throws an error if the version of the loaded shared library does not match the caller's version.
171
173
  """
172
174
  request = dto.CheckVersionRequest(
173
175
  host="py",
174
- version="8.0.2",
176
+ version="8.0.4",
175
177
  )
176
178
  call_sync("library/check_version", request)
177
179
 
zaber_motion/units.py CHANGED
@@ -130,10 +130,10 @@ class Units(Enum):
130
130
  FREQUENCY_NANOHERTZ = 'Frequency:nanohertz'
131
131
 
132
132
 
133
- UnitsAndLiterals = Union[Units, Literal["m", "cm", "mm", "µm", "um", "μm", "nm", "in", "m/s", "cm/s", "mm/s", "µm/s", "um/s", "μm/s", "nm/s", "in/s", "m/s²", "m/s^2", "cm/s²", "cm/s^2", "mm/s²", "mm/s^2", "µm/s²", "um/s^2", "μm/s²", "nm/s²", "nm/s^2", "in/s²", "in/s^2", "°", "deg", "rad", "°/s", "deg/s", "rad/s", "°/s²", "deg/s^2", "rad/s²", "rad/s^2", "%", "s", "ms", "µs", "us", "μs", "GHz", "MHz", "kHz", "Hz", "mHz", "µHz", "uHz", "μHz", "nHz"]]
133
+ UnitsAndLiterals = Union[Units, Literal["m", "cm", "mm", "µm", "um", "μm", "nm", "in", "m/s", "cm/s", "mm/s", "µm/s", "um/s", "μm/s", "nm/s", "in/s", "m/s²", "m/s^2", "cm/s²", "cm/s^2", "mm/s²", "mm/s^2", "µm/s²", "um/s^2", "μm/s²", "nm/s²", "nm/s^2", "in/s²", "in/s^2", "°", "deg", "rad", "°/s", "deg/s", "rad/s", "°/s²", "deg/s^2", "r/s²", "r/s^2", "rad/s²", "rad/s^2", "%", "s", "ms", "µs", "us", "μs", "GHz", "MHz", "kHz", "Hz", "mHz", "µHz", "uHz", "μHz", "nHz"]]
134
134
  LengthUnits = Union[Units, Literal["m", "cm", "mm", "µm", "um", "μm", "nm", "in", "°", "deg", "rad"]]
135
135
  VelocityUnits = Union[Units, Literal["m/s", "cm/s", "mm/s", "µm/s", "um/s", "μm/s", "nm/s", "in/s", "°/s", "deg/s", "rad/s"]]
136
- AccelerationUnits = Union[Units, Literal["m/s²", "m/s^2", "cm/s²", "cm/s^2", "mm/s²", "mm/s^2", "µm/s²", "um/s^2", "μm/s²", "nm/s²", "nm/s^2", "in/s²", "in/s^2", "°/s²", "deg/s^2", "rad/s²", "rad/s^2"]]
136
+ AccelerationUnits = Union[Units, Literal["m/s²", "m/s^2", "cm/s²", "cm/s^2", "mm/s²", "mm/s^2", "µm/s²", "um/s^2", "μm/s²", "nm/s²", "nm/s^2", "in/s²", "in/s^2", "°/s²", "deg/s^2", "r/s²", "r/s^2", "rad/s²", "rad/s^2"]]
137
137
  TimeUnits = Union[Units, Literal["s", "ms", "µs", "us", "μs"]]
138
138
  FrequencyUnits = Union[Units, Literal["GHz", "MHz", "kHz", "Hz", "mHz", "µHz", "uHz", "μHz", "nHz"]]
139
139
 
@@ -175,6 +175,8 @@ LITERALS_TO_UNITS = {
175
175
  "rad/s": Units.ANGULAR_VELOCITY_RADIANS_PER_SECOND,
176
176
  "°/s²": Units.ANGULAR_ACCELERATION_DEGREES_PER_SECOND_SQUARED,
177
177
  "deg/s^2": Units.ANGULAR_ACCELERATION_DEGREES_PER_SECOND_SQUARED,
178
+ "r/s²": Units.ANGULAR_ACCELERATION_RADIANS_PER_SECOND_SQUARED,
179
+ "r/s^2": Units.ANGULAR_ACCELERATION_RADIANS_PER_SECOND_SQUARED,
178
180
  "rad/s²": Units.ANGULAR_ACCELERATION_RADIANS_PER_SECOND_SQUARED,
179
181
  "rad/s^2": Units.ANGULAR_ACCELERATION_RADIANS_PER_SECOND_SQUARED,
180
182
  "%": Units.PERCENT_PERCENT,
@@ -0,0 +1,101 @@
1
+ # ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
2
+ # ============== DO NOT EDIT DIRECTLY ============== #
3
+
4
+ from typing import List, Optional
5
+ from .call import call, call_async
6
+ from .dto import requests as dto
7
+ from .dto.requests import TestVariant
8
+
9
+
10
+ class VariantTestApi:
11
+ """
12
+ Test case for certain library features. Not public API; do not use.
13
+ """
14
+
15
+ @staticmethod
16
+ def mutate_variant(
17
+ the_variant: TestVariant
18
+ ) -> Optional[TestVariant]:
19
+ """
20
+ Tests serialization of variants.
21
+
22
+ Args:
23
+ the_variant: Test value to modify and return.
24
+
25
+ Returns:
26
+ Mutated input value.
27
+ """
28
+ request = dto.TestDtoWithVariants(
29
+ the_variant=the_variant,
30
+ )
31
+ response = call(
32
+ "test/mutate_variant",
33
+ request,
34
+ dto.TestDtoWithVariants.from_binary)
35
+ return response.the_variant
36
+
37
+ @staticmethod
38
+ async def mutate_variant_async(
39
+ the_variant: TestVariant
40
+ ) -> Optional[TestVariant]:
41
+ """
42
+ Tests serialization of variants.
43
+
44
+ Args:
45
+ the_variant: Test value to modify and return.
46
+
47
+ Returns:
48
+ Mutated input value.
49
+ """
50
+ request = dto.TestDtoWithVariants(
51
+ the_variant=the_variant,
52
+ )
53
+ response = await call_async(
54
+ "test/mutate_variant",
55
+ request,
56
+ dto.TestDtoWithVariants.from_binary)
57
+ return response.the_variant
58
+
59
+ @staticmethod
60
+ def mutate_variant_array(
61
+ variant_array: List[TestVariant]
62
+ ) -> List[TestVariant]:
63
+ """
64
+ Tests serialization of arrays of variants.
65
+
66
+ Args:
67
+ variant_array: Test values to modify and return.
68
+
69
+ Returns:
70
+ Mutated input values.
71
+ """
72
+ request = dto.TestDtoWithVariants(
73
+ variant_array=variant_array,
74
+ )
75
+ response = call(
76
+ "test/mutate_variant",
77
+ request,
78
+ dto.TestDtoWithVariants.from_binary)
79
+ return response.variant_array
80
+
81
+ @staticmethod
82
+ async def mutate_variant_array_async(
83
+ variant_array: List[TestVariant]
84
+ ) -> List[TestVariant]:
85
+ """
86
+ Tests serialization of arrays of variants.
87
+
88
+ Args:
89
+ variant_array: Test values to modify and return.
90
+
91
+ Returns:
92
+ Mutated input values.
93
+ """
94
+ request = dto.TestDtoWithVariants(
95
+ variant_array=variant_array,
96
+ )
97
+ response = await call_async(
98
+ "test/mutate_variant",
99
+ request,
100
+ dto.TestDtoWithVariants.from_binary)
101
+ return response.variant_array
zaber_motion/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "8.0.2"
1
+ __version__ = "8.0.4"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zaber_motion
3
- Version: 8.0.2
3
+ Version: 8.0.4
4
4
  Summary: An official library for communicating with Zaber devices.
5
5
  Author-email: "Zaber Technologies Inc." <contact@zaber.com>
6
6
  License: The MIT License (MIT)
@@ -2127,7 +2127,7 @@ Project-URL: Homepage, https://www.zaber.com/software
2127
2127
  Project-URL: Documentation, https://software.zaber.com/motion-library
2128
2128
  Project-URL: Repository, https://gitlab.com/ZaberTech/zaber-motion-lib
2129
2129
  Project-URL: Issues, https://gitlab.com/ZaberTech/zaber-motion-lib/-/issues
2130
- Project-URL: Changelog, https://gitlab.com/ZaberTech/zaber-motion-lib/-/blob/master/CHANGELOG.md
2130
+ Project-URL: Changelog, https://software.zaber.com/motion-library/docs/support/changelog
2131
2131
  Keywords: zaber,motion control,linear actuators,rotary stages
2132
2132
  Classifier: Development Status :: 5 - Production/Stable
2133
2133
  Classifier: Intended Audience :: Developers
@@ -2,20 +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=gcMYWewSwPazM2FRQNyjdeOJlAuk_AyhyqOBOKplzy4,10555
5
+ zaber_motion/__init__.py,sha256=AksVxfneQ5hcTbnVq6l2n7cDZZY3KpEf_U0fuOf7edo,10619
6
6
  zaber_motion/async_utils.py,sha256=fCxmBdoPw-ypHSVYIgTjSuYpL__Sx1P17zT7PFjrMWE,1551
7
7
  zaber_motion/bindings.py,sha256=slVcaFkqh7nv2QpaNWfTqddsgZHZ9eABNJdq56zsqf4,1555
8
8
  zaber_motion/call.py,sha256=X8iXJdlO1AvnMeDFmKXEPY8UFQWn8EXZmoXzcWO_ihc,5404
9
9
  zaber_motion/convert_exception.py,sha256=0ANPUmugxDvCGMURPN8Lqyi-3cU80L323xrsF19wbIk,8625
10
10
  zaber_motion/dto_object.py,sha256=TrwKMn_dbeh4DnCToS507G5eRJiW0_ZcGj9Q5RaSjqY,377
11
11
  zaber_motion/events.py,sha256=8UB_4SZz3HDb8VqborlHQGt7w0Nd11rEYblbVQxyckE,3510
12
- zaber_motion/library.py,sha256=lCV2VdAXTrwyTkr5GTifgic-wXQUjc8EmtGqeHw6sYM,5675
12
+ zaber_motion/library.py,sha256=IQE1wQBuRS89_v5qulOHr6mCWUblzc9mRE0_VVa-Ogo,5779
13
13
  zaber_motion/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  zaber_motion/serialization.py,sha256=0yLY0dA7XRjMAlI-wr92arZ6yRO97CyC_Rzc9BBHJRk,1019
15
15
  zaber_motion/tools.py,sha256=ZI8xYDa6SFlMghP2qklV73Z0TJcezC6trdAAXVI6PoM,2291
16
16
  zaber_motion/unit_table.py,sha256=vaDMvhpVUy2gTWyDTC_NsEGhfq1DPDKqwxMoE5ZS25k,6590
17
- zaber_motion/units.py,sha256=h1sEuCQR0q8SeCdWd2V8X62VZJBxMda9Kef724f6yc0,11059
18
- zaber_motion/version.py,sha256=C55UUeUVEbjb8NMX8-rmCIauEUTUrM5poI5y6kS_uA4,23
17
+ zaber_motion/units.py,sha256=uaM-RKd8Kb-gb1k4ePjHqkLiDNnKj1Jvd8yR8JhQ3v4,11233
18
+ zaber_motion/variant_test_api.py,sha256=yF1QQUPl7iwLTk9fQGwmIBPtC0BkwyVqTC9qo42Hl0U,2803
19
+ zaber_motion/version.py,sha256=tjTV7kyDB1_VpvZz9etKggf3ah66s7qCTEmg625Is3I,23
19
20
  zaber_motion/ascii/__init__.py,sha256=J-bEIfgnLydtWPYSupvzJXFO46QKJEnUUUCtz7JGL-g,4853
20
21
  zaber_motion/ascii/all_axes.py,sha256=-g226GCRClqolpwZSYQj_ohuVfyBf6YPNSt3BxXxme4,11145
21
22
  zaber_motion/ascii/axis.py,sha256=SyjbxDEE0CccCk5gEya9qt9a_VAGA4jFMBazw-v8MbE,60922
@@ -33,7 +34,7 @@ zaber_motion/ascii/pvt_buffer.py,sha256=u-NpYQTnSdNY3KRpbfjOISEmE5Xb1Kx2inzYXCJw
33
34
  zaber_motion/ascii/pvt_io.py,sha256=g7kT5nRR4DZMb7mlvp_6-0HLxZfs4Mn0r8nkE42-mbI,22882
34
35
  zaber_motion/ascii/pvt_sequence.py,sha256=HXtuKweSjnBlonG4CzafqLfIs8ZbtM6NujcfQHBfMhc,53260
35
36
  zaber_motion/ascii/servo_tuner.py,sha256=QuUOkE4d3pnF1R2A2egkhDcfuu77CHqLUfK1qwZd4Gg,20972
36
- zaber_motion/ascii/setting_constants.py,sha256=EzbS04WLNGkq8FK_BUulM2YJe_IYqhpyoL1VPEWq9uY,31684
37
+ zaber_motion/ascii/setting_constants.py,sha256=glNAxTGYRqDljoNk3sX40Mwig2ZQqm9yctKTgLs6ePg,31847
37
38
  zaber_motion/ascii/storage.py,sha256=osMUAKY3wlFUx1bU12Txr95-c5o4JLEzIlRwqiTrJY0,27054
38
39
  zaber_motion/ascii/stream.py,sha256=C1KN9R1wdc2JbuDHMdIGrCr9a8gMWAdiMQCSzXxeLdw,73184
39
40
  zaber_motion/ascii/stream_buffer.py,sha256=6PY5wTa8ZwWacKA8WLi2Nt3z17mH3WmW7Kbomk5UfeA,3195
@@ -119,7 +120,7 @@ zaber_motion/dto/exceptions/command_failed_exception_data.py,sha256=hWE-JIjkfpG7
119
120
  zaber_motion/dto/exceptions/command_too_long_exception_data.py,sha256=Um3WLYac6ECRqgfXqbMrvAgu_V2UCb-KyxZV8qD0lUE,3750
120
121
  zaber_motion/dto/exceptions/device_address_conflict_exception_data.py,sha256=SKky0oLvLkxKtEob7XyIJen2xdHM8dDDTB3Th6h2ODM,2738
121
122
  zaber_motion/dto/exceptions/device_db_failed_exception_data.py,sha256=LYNX9P_ZUc2NppjJPJuCtJ02JutgM_ro0SdVfaRDD3U,2982
122
- zaber_motion/dto/exceptions/device_db_inner_error.py,sha256=Cpou48pahapCi9mpTK7hdsWh6strKRnvmUFC9QEtB2s,3257
123
+ zaber_motion/dto/exceptions/device_db_inner_error.py,sha256=KEGjYkCQbO1Av89C1O8LhLYLL5WPNQviTtN0TyEr-5c,3953
123
124
  zaber_motion/dto/exceptions/g_code_execution_exception_data.py,sha256=tFRia2cZpYDZME0cfitOxlTYfWuIh48Bxese9bKWWb8,2819
124
125
  zaber_motion/dto/exceptions/g_code_syntax_exception_data.py,sha256=rhOE4sBjkvSxmazjURp7soEAjQOyMJCigT3dc-3r3YA,2777
125
126
  zaber_motion/dto/exceptions/invalid_packet_exception_data.py,sha256=kzg390dFDiqtJ1ZxV0kpcdwqlVUCv-8SCksxExvg06I,2140
@@ -153,7 +154,7 @@ zaber_motion/dto/product/__init__.py,sha256=86E40zuNYyjmUZbI633rB2PjjvhltcZ1KQ3O
153
154
  zaber_motion/dto/product/process_controller_mode.py,sha256=CCiUqQHSuxui8Bn_qDFDgh5NdyREdC9eH3uWHQD4v54,241
154
155
  zaber_motion/dto/product/process_controller_source.py,sha256=nW-vvxjqEaSVnhZrgIFNxq0Gvn5qmJsdpe2dY_fOEAY,2649
155
156
  zaber_motion/dto/product/process_controller_source_sensor.py,sha256=2LvWeTrbG7OqTS26OZRGQtOUyBAjy6LaB9k9hoVEMSM,228
156
- zaber_motion/dto/requests/__init__.py,sha256=0BIcicT9ndU5EgpENKAr-Vma8Lx2CaTpg_4xadRcbVs,24370
157
+ zaber_motion/dto/requests/__init__.py,sha256=5z-JRKvZTW-Y0-jXPTkUD0cU5-vXqiPyGEffEt19feU,24504
157
158
  zaber_motion/dto/requests/alert_event_wrapper.py,sha256=5py6PY1Ao_lkD3K_FvDHyW6pTDmOFl30Jh5lIwljB9E,3135
158
159
  zaber_motion/dto/requests/autofocus_focus_request.py,sha256=9IGsIMqwoBryeo5onGrqWMcD5WFR7dEtnfU_DWHL4A8,5403
159
160
  zaber_motion/dto/requests/autofocus_get_objective_params_request.py,sha256=2p79lpPqgJzOqglYym7qU4JT1IQ7jmkRn-bZhReQSiw,5472
@@ -364,11 +365,13 @@ zaber_motion/dto/requests/stream_wait_request.py,sha256=sEQD25UtSdE8QF8NW83e1Ypu
364
365
  zaber_motion/dto/requests/stream_wait_until_idle_request.py,sha256=S6NfJwsS7tPzUeFrDlOORItSXtW1DEUO8GG9dCJEZM0,3544
365
366
  zaber_motion/dto/requests/string_array_response.py,sha256=WqhHTutnGcxxQQ7vA8qyXH5EjdNZx3Mr1K9BeCZVgXA,1969
366
367
  zaber_motion/dto/requests/string_response.py,sha256=SGoY26-ZSdEC2uUwExJ90fc4LK-LHt_jaAYYOvjOsK4,1498
368
+ zaber_motion/dto/requests/test_dto_with_variants.py,sha256=FTSR6qN46_mCSjxZeYG8Q-Sn6JlbXYQrcJXg25e3Zxw,2843
367
369
  zaber_motion/dto/requests/test_event.py,sha256=F-RVsjrV-f4bV-YTgk3p-5HDV4APhRZoOtqUgfiI9Mk,1449
368
370
  zaber_motion/dto/requests/test_request.py,sha256=AVh7wgezF6XHM3dtQmeI3O9WxyMP0B7mlLgT3IweqK0,1937
369
371
  zaber_motion/dto/requests/test_request_complex.py,sha256=TZ89lxlw7UJIZjBdq8uORcyREcu1UwlB1OyOFkDBteU,2315
370
372
  zaber_motion/dto/requests/test_response.py,sha256=GQ_06sv2AIhTWstD_ANX9sxDiUW-EFgsjxtCtf-zLig,1515
371
373
  zaber_motion/dto/requests/test_response_long.py,sha256=NNlP0KRfhk-21E3sw2Z6LfUry6hTmTlml7bmt4vwHmM,1983
374
+ zaber_motion/dto/requests/test_variant.py,sha256=m5ly-ysWuTH8orlwp6H_JyYSVhOnqL27TM64N6bXdtQ,7233
372
375
  zaber_motion/dto/requests/toggle_device_db_store_request.py,sha256=W3MNaR1U-2ZSIwY9xLs1jAC7WcRHP4rz1ZqCpzR5BwY,1904
373
376
  zaber_motion/dto/requests/tools_list_serial_ports_response.py,sha256=P732G3qZKUf5Rt4zepgk8Ji4FbGYLhkTselZvGrqiQk,2035
374
377
  zaber_motion/dto/requests/translator_create_from_device_request.py,sha256=XTFQ7LnZcmR8Tjtjj15FnVoIb9XcS5CLLP-QFpeduXc,4333
@@ -490,9 +493,9 @@ zaber_motion/microscopy/wdi_autofocus_provider.py,sha256=QwYC7ITnjSjUOjWkCxNPVVi
490
493
  zaber_motion/product/__init__.py,sha256=ZGZzfMmsd1ZWwLk0SZ3Ac1Une88SZQHuuzEFGgd6ork,538
491
494
  zaber_motion/product/process.py,sha256=o5GoKjC7eTVwTrfeugqvfTmg-UARhyTTbDDmoGCQ8Q8,28345
492
495
  zaber_motion/product/process_controller.py,sha256=GVYMALlFWEcvLipPk1GF-M7LcoKfCf5_YqFMeFseCpg,4327
493
- zaber_motion_bindings/zaber-motion-core-windows-amd64.dll,sha256=d3P64s-xjlaUlloATk2EIPYWn1gCH-UtkJGBTaXed0Y,16996352
494
- zaber_motion-8.0.2.dist-info/LICENSE.txt,sha256=H7YIgjgmcE_L-pfvZTWUoLrk7p0LiiKQh5_oeIWux-k,111363
495
- zaber_motion-8.0.2.dist-info/METADATA,sha256=MegEq10Vj0G5P7UGS6cSi8mvgGVmTG5Yned_-1hVGZw,129813
496
- zaber_motion-8.0.2.dist-info/WHEEL,sha256=EsfqhE0qd6WfVs85_gPJMVnnwjseveFUmeew0JBezok,97
497
- zaber_motion-8.0.2.dist-info/top_level.txt,sha256=ypgkPvPad6Oge50CT6unnvxCEliKUB6olL6CUUER1SA,51
498
- zaber_motion-8.0.2.dist-info/RECORD,,
496
+ zaber_motion_bindings/zaber-motion-core-windows-amd64.dll,sha256=iW_Tpc3I-JYiefAlBRjR-Mb95bnPlDJV8m8jow1SoY4,17022552
497
+ zaber_motion-8.0.4.dist-info/LICENSE.txt,sha256=H7YIgjgmcE_L-pfvZTWUoLrk7p0LiiKQh5_oeIWux-k,111363
498
+ zaber_motion-8.0.4.dist-info/METADATA,sha256=w3-LmxZA6gT6wZLRg0MzTyFUp823CwzOslW3vHffQDI,129805
499
+ zaber_motion-8.0.4.dist-info/WHEEL,sha256=i6AacFlrmRNerfpM6BB7_7dDE1DpGa-Pt3bUfKsC82M,97
500
+ zaber_motion-8.0.4.dist-info/top_level.txt,sha256=ypgkPvPad6Oge50CT6unnvxCEliKUB6olL6CUUER1SA,51
501
+ zaber_motion-8.0.4.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.3.2)
2
+ Generator: setuptools (75.3.3)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-win_amd64
5
5