standardbots 2.0.0.dev1737138088__tar.gz → 2.2024924.1__tar.gz

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.

Potentially problematic release.


This version of standardbots might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.1
2
2
  Name: standardbots
3
- Version: 2.0.0.dev1737138088
3
+ Version: 2.2024924.1
4
4
  Summary: Standard Bots RO1 Robotics API
5
5
  Home-page:
6
6
  Author: Standard Bots Support
@@ -10,13 +10,6 @@ Requires-Python: >=3.7
10
10
  Requires-Dist: setuptools>=21.0.0
11
11
  Requires-Dist: typing_extensions>=4.3.0
12
12
  Requires-Dist: urllib3>=1.26.7
13
- Dynamic: author
14
- Dynamic: author-email
15
- Dynamic: description
16
- Dynamic: keywords
17
- Dynamic: requires-dist
18
- Dynamic: requires-python
19
- Dynamic: summary
20
13
 
21
14
  Standard Bots RO1 Robotics API. # noqa: E501
22
15
 
@@ -13,7 +13,7 @@
13
13
  from setuptools import setup, find_packages # noqa: H301
14
14
 
15
15
  NAME = "standardbots"
16
- VERSION = "2.0.0-dev1737138088"
16
+ VERSION = "2.2024924.1"
17
17
  # To install the library, run the following
18
18
  #
19
19
  # python setup.py install
@@ -932,113 +932,6 @@ class Faults:
932
932
  self._request_manager = request_manager
933
933
  self.user_faults = Faults.UserFaults(request_manager)
934
934
 
935
- class General:
936
- _request_manager: RequestManager
937
- class BotIdentity:
938
- def __init__(self, request_manager: RequestManager):
939
- self._request_manager = request_manager
940
-
941
-
942
- def bot_identity(
943
- self,
944
- ) -> Response[
945
- Union[
946
- models.BotIdentityData,
947
- models.ErrorResponse,
948
- None
949
- ],
950
- models.BotIdentityData
951
- ]:
952
- """
953
- Get information about the robot's identity.
954
- """
955
- path = "/api/v1/identity/bot_identity"
956
- try:
957
- response = self._request_manager.request(
958
- "GET",
959
- path,
960
- headers=self._request_manager.json_headers(),
961
- )
962
- parsed = None
963
- if response.status == 200:
964
- parsed = models.parse_bot_identity_data(json.loads(response.data))
965
-
966
- is_user_error = response.status >= 400 and response.status <= 500
967
- is_unavailable = response.status == 503
968
- if parsed is None and (is_user_error or is_unavailable):
969
- parsed = models.parse_error_response(json.loads(response.data))
970
-
971
- return Response(
972
- parsed,
973
- response.status,
974
- response
975
- )
976
- except urllib3.exceptions.MaxRetryError:
977
- return Response(
978
- models.ErrorResponse(
979
- error=models.ErrorEnum.InternalServerError,
980
- message="Connection Refused"
981
- ),
982
- 503,
983
- None
984
- )
985
- class Joints:
986
- def __init__(self, request_manager: RequestManager):
987
- self._request_manager = request_manager
988
-
989
-
990
- def get_joints_state(
991
- self,
992
- ) -> Response[
993
- Union[
994
- models.JointsStateResponse,
995
- models.ErrorResponse,
996
- None
997
- ],
998
- models.JointsStateResponse
999
- ]:
1000
- """
1001
- Retrieves information about the state of each joint
1002
- """
1003
- path = "/api/v1/joints"
1004
- try:
1005
- response = self._request_manager.request(
1006
- "GET",
1007
- path,
1008
- headers=self._request_manager.json_headers(),
1009
- )
1010
- parsed = None
1011
- if response.status == 200:
1012
- parsed = models.parse_joints_state_response(json.loads(response.data))
1013
-
1014
- is_user_error = response.status >= 400 and response.status <= 500
1015
- is_unavailable = response.status == 503
1016
- if parsed is None and (is_user_error or is_unavailable):
1017
- parsed = models.parse_error_response(json.loads(response.data))
1018
-
1019
- return Response(
1020
- parsed,
1021
- response.status,
1022
- response
1023
- )
1024
- except urllib3.exceptions.MaxRetryError:
1025
- return Response(
1026
- models.ErrorResponse(
1027
- error=models.ErrorEnum.InternalServerError,
1028
- message="Connection Refused"
1029
- ),
1030
- 503,
1031
- None
1032
- )
1033
-
1034
- bot_identity: BotIdentity
1035
- joints: Joints
1036
-
1037
- def __init__(self, request_manager: RequestManager):
1038
- self._request_manager = request_manager
1039
- self.bot_identity = General.BotIdentity(request_manager)
1040
- self.joints = General.Joints(request_manager)
1041
-
1042
935
  class ChatGPT:
1043
936
  _request_manager: RequestManager
1044
937
  class Data:
@@ -1243,6 +1136,63 @@ class IO:
1243
1136
  self.control = IO.Control(request_manager)
1244
1137
  self.status = IO.Status(request_manager)
1245
1138
 
1139
+ class General:
1140
+ _request_manager: RequestManager
1141
+ class Joints:
1142
+ def __init__(self, request_manager: RequestManager):
1143
+ self._request_manager = request_manager
1144
+
1145
+
1146
+ def get_joints_state(
1147
+ self,
1148
+ ) -> Response[
1149
+ Union[
1150
+ models.JointsStateResponse,
1151
+ models.ErrorResponse,
1152
+ None
1153
+ ],
1154
+ models.JointsStateResponse
1155
+ ]:
1156
+ """
1157
+ Retrieves information about the state of each joint
1158
+ """
1159
+ path = "/api/v1/joints"
1160
+ try:
1161
+ response = self._request_manager.request(
1162
+ "GET",
1163
+ path,
1164
+ headers=self._request_manager.json_headers(),
1165
+ )
1166
+ parsed = None
1167
+ if response.status == 200:
1168
+ parsed = models.parse_joints_state_response(json.loads(response.data))
1169
+
1170
+ is_user_error = response.status >= 400 and response.status <= 500
1171
+ is_unavailable = response.status == 503
1172
+ if parsed is None and (is_user_error or is_unavailable):
1173
+ parsed = models.parse_error_response(json.loads(response.data))
1174
+
1175
+ return Response(
1176
+ parsed,
1177
+ response.status,
1178
+ response
1179
+ )
1180
+ except urllib3.exceptions.MaxRetryError:
1181
+ return Response(
1182
+ models.ErrorResponse(
1183
+ error=models.ErrorEnum.InternalServerError,
1184
+ message="Connection Refused"
1185
+ ),
1186
+ 503,
1187
+ None
1188
+ )
1189
+
1190
+ joints: Joints
1191
+
1192
+ def __init__(self, request_manager: RequestManager):
1193
+ self._request_manager = request_manager
1194
+ self.joints = General.Joints(request_manager)
1195
+
1246
1196
  class Poses:
1247
1197
  _request_manager: RequestManager
1248
1198
  class ConstructPose:
@@ -1712,15 +1662,15 @@ class Recovery:
1712
1662
  self,
1713
1663
  ) -> Response[
1714
1664
  Union[
1715
- models.FailureStateResponse,
1665
+ models.RecoveryStatusResponse,
1716
1666
  models.ErrorResponse,
1717
1667
  models.ErrorResponse,
1718
1668
  None
1719
1669
  ],
1720
- models.FailureStateResponse
1670
+ models.RecoveryStatusResponse
1721
1671
  ]:
1722
1672
  """
1723
- Attempts to recover the robot from a fault state. Inspect the response to determine if additional recovery actions are required.
1673
+ Recovers the robot from a fault state.
1724
1674
 
1725
1675
  """
1726
1676
  path = "/api/v1/recovery/recover"
@@ -1732,7 +1682,7 @@ class Recovery:
1732
1682
  )
1733
1683
  parsed = None
1734
1684
  if response.status == 200:
1735
- parsed = models.parse_failure_state_response(json.loads(response.data))
1685
+ parsed = models.parse_recovery_status_response(json.loads(response.data))
1736
1686
  if response.status == 400:
1737
1687
  parsed = models.parse_error_response(json.loads(response.data))
1738
1688
 
@@ -2543,9 +2493,9 @@ class StandardBotsRobot(Default):
2543
2493
  movement: Movement
2544
2494
  camera: Camera
2545
2495
  faults: Faults
2546
- general: General
2547
2496
  chat_gpt: ChatGPT
2548
2497
  io: IO
2498
+ general: General
2549
2499
  poses: Poses
2550
2500
  recovery: Recovery
2551
2501
  ros: ROS
@@ -2567,9 +2517,9 @@ class StandardBotsRobot(Default):
2567
2517
  self.movement = Movement(self._request_manager)
2568
2518
  self.camera = Camera(self._request_manager)
2569
2519
  self.faults = Faults(self._request_manager)
2570
- self.general = General(self._request_manager)
2571
2520
  self.chat_gpt = ChatGPT(self._request_manager)
2572
2521
  self.io = IO(self._request_manager)
2522
+ self.general = General(self._request_manager)
2573
2523
  self.poses = Poses(self._request_manager)
2574
2524
  self.recovery = Recovery(self._request_manager)
2575
2525
  self.ros = ROS(self._request_manager)
@@ -224,81 +224,6 @@ def parse_arm_position_update_request_response_kind_enum(data: object) -> ArmPos
224
224
  def serialize_arm_position_update_request_response_kind_enum(data: Union[ArmPositionUpdateRequestResponseKindEnum, str]) -> object:
225
225
  return ArmPositionUpdateRequestResponseKindEnum(data).value
226
226
 
227
- @dataclass
228
- class BotIdentityData:
229
- """Data about the robot&#x27;s identity"""
230
- robotId: Union[str, None] = None
231
- alias: Union[str, None] = None
232
- robotOperationMode: Union[str, None] = None
233
- applicationUrl: Union[str, None] = None
234
-
235
- def validate_robotId(self, value: str) -> Tuple[bool, str]:
236
- if value is None:
237
- return [True, ""]
238
-
239
- if not isinstance(value, str):
240
- return [False, "robotId must be of type str for BotIdentityData, got " + type(value).__name__]
241
-
242
- return [True, ""]
243
-
244
- def validate_alias(self, value: str) -> Tuple[bool, str]:
245
- if value is None:
246
- return [True, ""]
247
-
248
- if not isinstance(value, str):
249
- return [False, "alias must be of type str for BotIdentityData, got " + type(value).__name__]
250
-
251
- return [True, ""]
252
-
253
- def validate_robotOperationMode(self, value: str) -> Tuple[bool, str]:
254
- if value is None:
255
- return [True, ""]
256
-
257
- if not isinstance(value, str):
258
- return [False, "robotOperationMode must be of type str for BotIdentityData, got " + type(value).__name__]
259
-
260
- return [True, ""]
261
-
262
- def validate_applicationUrl(self, value: str) -> Tuple[bool, str]:
263
- if value is None:
264
- return [True, ""]
265
-
266
- if not isinstance(value, str):
267
- return [False, "applicationUrl must be of type str for BotIdentityData, got " + type(value).__name__]
268
-
269
- return [True, ""]
270
-
271
- def __post_init__(self):
272
- # Type check incoming model - raise error if invalid (required or wrong type)
273
- is_valid, error_str = self.validate_robotId(self.robotId)
274
- if not is_valid:
275
- raise TypeError(error_str)
276
- is_valid, error_str = self.validate_alias(self.alias)
277
- if not is_valid:
278
- raise TypeError(error_str)
279
- is_valid, error_str = self.validate_robotOperationMode(self.robotOperationMode)
280
- if not is_valid:
281
- raise TypeError(error_str)
282
- is_valid, error_str = self.validate_applicationUrl(self.applicationUrl)
283
- if not is_valid:
284
- raise TypeError(error_str)
285
-
286
- def parse_bot_identity_data(data: object):
287
- return BotIdentityData(
288
- robotId=parse_str(data["robotId"]) if "robotId" in data and data.get("robotId") is not None else None,
289
- alias=parse_str(data["alias"]) if "alias" in data and data.get("alias") is not None else None,
290
- robotOperationMode=parse_str(data["robotOperationMode"]) if "robotOperationMode" in data and data.get("robotOperationMode") is not None else None,
291
- applicationUrl=parse_str(data["applicationUrl"]) if "applicationUrl" in data and data.get("applicationUrl") is not None else None,
292
- )
293
-
294
- def serialize_bot_identity_data(data: BotIdentityData) -> object:
295
- return {
296
- "robotId": None if data.robotId is None else serialize_str(data.robotId),
297
- "alias": None if data.alias is None else serialize_str(data.alias),
298
- "robotOperationMode": None if data.robotOperationMode is None else serialize_str(data.robotOperationMode),
299
- "applicationUrl": None if data.applicationUrl is None else serialize_str(data.applicationUrl),
300
- }
301
-
302
227
  class BrakesStateEnum(Enum):
303
228
  Engaged = "engaged"
304
229
  """Robot Brakes are engaged, robot is not able to move"""
@@ -2016,6 +1941,70 @@ def serialize_quaternion(data: Quaternion) -> object:
2016
1941
  "w": None if data.w is None else serialize_f_64(data.w),
2017
1942
  }
2018
1943
 
1944
+ class RecoveryStateEnum(Enum):
1945
+ Success = "Success"
1946
+ """Enum Success = `Success`"""
1947
+ Interrupted = "Interrupted"
1948
+ """Enum Interrupted = `Interrupted`"""
1949
+ NonIdle = "NonIdle"
1950
+ """Enum NonIdle = `NonIdle`"""
1951
+ Braked = "Braked"
1952
+ """Enum Braked = `Braked`"""
1953
+ PlanningFailure = "PlanningFailure"
1954
+ """Enum PlanningFailure = `PlanningFailure`"""
1955
+ ExecutionFailure = "ExecutionFailure"
1956
+ """Enum ExecutionFailure = `ExecutionFailure`"""
1957
+ ControlSystemFailure = "ControlSystemFailure"
1958
+ """Enum ControlSystemFailure = `ControlSystemFailure`"""
1959
+ EStopTriggered = "EStopTriggered"
1960
+ """Enum EStopTriggered = `EStopTriggered`"""
1961
+ GripperFailure = "GripperFailure"
1962
+ """Enum GripperFailure = `GripperFailure`"""
1963
+ OutOfJointLimitsFailure = "OutOfJointLimitsFailure"
1964
+ """Enum OutOfJointLimitsFailure = `OutOfJointLimitsFailure`"""
1965
+ CollisionFailure = "CollisionFailure"
1966
+ """Enum CollisionFailure = `CollisionFailure`"""
1967
+ TorqueCollisionFailure = "TorqueCollisionFailure"
1968
+ """Enum TorqueCollisionFailure = `TorqueCollisionFailure`"""
1969
+ InBoxingPositionFailure = "InBoxingPositionFailure"
1970
+ """Enum InBoxingPositionFailure = `InBoxingPositionFailure`"""
1971
+ PowerBoardCheckFailure = "PowerBoardCheckFailure"
1972
+ """Enum PowerBoardCheckFailure = `PowerBoardCheckFailure`"""
1973
+ MotionPlannerFailure = "MotionPlannerFailure"
1974
+ """Enum MotionPlannerFailure = `MotionPlannerFailure`"""
1975
+ MotionPlannerFailureStartPositionCollision = "MotionPlannerFailureStartPositionCollision"
1976
+ """Enum MotionPlannerFailureStartPositionCollision = `MotionPlannerFailureStartPositionCollision`"""
1977
+ IOFailure = "IOFailure"
1978
+ """Enum IOFailure = `IOFailure`"""
1979
+ InvalidRoutineLoadedFailure = "InvalidRoutineLoadedFailure"
1980
+ """Enum InvalidRoutineLoadedFailure = `InvalidRoutineLoadedFailure`"""
1981
+ InferenceFailure = "InferenceFailure"
1982
+ """Enum InferenceFailure = `InferenceFailure`"""
1983
+ CameraFailure = "CameraFailure"
1984
+ """Enum CameraFailure = `CameraFailure`"""
1985
+ HaasFailure = "HaasFailure"
1986
+ """Enum HaasFailure = `HaasFailure`"""
1987
+ BotmanHeartbeatLost = "BotmanHeartbeatLost"
1988
+ """Enum BotmanHeartbeatLost = `BotmanHeartbeatLost`"""
1989
+ InternalFailure = "InternalFailure"
1990
+ """Enum InternalFailure = `InternalFailure`"""
1991
+ TorqueLimitExceeded = "TorqueLimitExceeded"
1992
+ """Enum TorqueLimitExceeded = `TorqueLimitExceeded`"""
1993
+ StepPlayFailure = "StepPlayFailure"
1994
+ """Enum StepPlayFailure = `StepPlayFailure`"""
1995
+ UnbrakeFailure = "UnbrakeFailure"
1996
+ """Enum UnbrakeFailure = `UnbrakeFailure`"""
1997
+ WeldFailure = "WeldFailure"
1998
+ """Enum WeldFailure = `WeldFailure`"""
1999
+ TriggerFaultFailure = "TriggerFaultFailure"
2000
+ """Enum TriggerFaultFailure = `TriggerFaultFailure`"""
2001
+
2002
+ def parse_recovery_state_enum(data: object) -> RecoveryStateEnum:
2003
+ return RecoveryStateEnum(data)
2004
+
2005
+ def serialize_recovery_state_enum(data: Union[RecoveryStateEnum, str]) -> object:
2006
+ return RecoveryStateEnum(data).value
2007
+
2019
2008
  class RecoveryTypeEnum(Enum):
2020
2009
  Recoverable = "Recoverable"
2021
2010
  """Enum Recoverable = `Recoverable`"""
@@ -2046,28 +2035,6 @@ def parse_robot_control_mode_enum(data: object) -> RobotControlModeEnum:
2046
2035
  def serialize_robot_control_mode_enum(data: Union[RobotControlModeEnum, str]) -> object:
2047
2036
  return RobotControlModeEnum(data).value
2048
2037
 
2049
- class RobotStatusEnum(Enum):
2050
- Idle = "Idle"
2051
- """Enum Idle = `Idle`"""
2052
- RunningAdHocCommand = "RunningAdHocCommand"
2053
- """Enum RunningAdHocCommand = `RunningAdHocCommand`"""
2054
- RoutineRunning = "RoutineRunning"
2055
- """Enum RoutineRunning = `RoutineRunning`"""
2056
- Antigravity = "Antigravity"
2057
- """Enum Antigravity = `Antigravity`"""
2058
- AntigravitySlow = "AntigravitySlow"
2059
- """Enum AntigravitySlow = `AntigravitySlow`"""
2060
- Failure = "Failure"
2061
- """Enum Failure = `Failure`"""
2062
- Recovering = "Recovering"
2063
- """Enum Recovering = `Recovering`"""
2064
-
2065
- def parse_robot_status_enum(data: object) -> RobotStatusEnum:
2066
- return RobotStatusEnum(data)
2067
-
2068
- def serialize_robot_status_enum(data: Union[RobotStatusEnum, str]) -> object:
2069
- return RobotStatusEnum(data).value
2070
-
2071
2038
  class ROSControlStateEnum(Enum):
2072
2039
  Enabled = "enabled"
2073
2040
  """ROS control is enabled."""
@@ -3586,7 +3553,7 @@ class OnRobot2FG14GripperConfiguration:
3586
3553
  max_width_outer: Union[float, None] = None
3587
3554
  force: Union[float, None] = None
3588
3555
  max_force: Union[float, None] = None
3589
- finger_mounting_position: Union[str, None] = None
3556
+ finger_mounting_position: Union[float, None] = None
3590
3557
  finger_offset: Union[float, None] = None
3591
3558
  finger_angle: Union[float, None] = None
3592
3559
  finger_length: Union[float, None] = None
@@ -3702,12 +3669,12 @@ class OnRobot2FG14GripperConfiguration:
3702
3669
 
3703
3670
  return [True, ""]
3704
3671
 
3705
- def validate_finger_mounting_position(self, value: str) -> Tuple[bool, str]:
3672
+ def validate_finger_mounting_position(self, value: float) -> Tuple[bool, str]:
3706
3673
  if value is None:
3707
3674
  return [True, ""]
3708
3675
 
3709
- if not isinstance(value, str):
3710
- return [False, "finger_mounting_position must be of type str for OnRobot2FG14GripperConfiguration, got " + type(value).__name__]
3676
+ if not isinstance(value, float):
3677
+ return [False, "finger_mounting_position must be of type float for OnRobot2FG14GripperConfiguration, got " + type(value).__name__]
3711
3678
 
3712
3679
  return [True, ""]
3713
3680
 
@@ -3839,7 +3806,7 @@ def parse_on_robot_2_fg_14_gripper_configuration(data: object):
3839
3806
  max_width_outer=parse_f_64(data["max_width_outer"]) if "max_width_outer" in data and data.get("max_width_outer") is not None else None,
3840
3807
  force=parse_f_64(data["force"]) if "force" in data and data.get("force") is not None else None,
3841
3808
  max_force=parse_f_64(data["max_force"]) if "max_force" in data and data.get("max_force") is not None else None,
3842
- finger_mounting_position=parse_str(data["finger_mounting_position"]) if "finger_mounting_position" in data and data.get("finger_mounting_position") is not None else None,
3809
+ finger_mounting_position=parse_f_64(data["finger_mounting_position"]) if "finger_mounting_position" in data and data.get("finger_mounting_position") is not None else None,
3843
3810
  finger_offset=parse_f_64(data["finger_offset"]) if "finger_offset" in data and data.get("finger_offset") is not None else None,
3844
3811
  finger_angle=parse_f_64(data["finger_angle"]) if "finger_angle" in data and data.get("finger_angle") is not None else None,
3845
3812
  finger_length=parse_f_64(data["finger_length"]) if "finger_length" in data and data.get("finger_length") is not None else None,
@@ -3862,7 +3829,7 @@ def serialize_on_robot_2_fg_14_gripper_configuration(data: OnRobot2FG14GripperCo
3862
3829
  "max_width_outer": None if data.max_width_outer is None else serialize_f_64(data.max_width_outer),
3863
3830
  "force": None if data.force is None else serialize_f_64(data.force),
3864
3831
  "max_force": None if data.max_force is None else serialize_f_64(data.max_force),
3865
- "finger_mounting_position": None if data.finger_mounting_position is None else serialize_str(data.finger_mounting_position),
3832
+ "finger_mounting_position": None if data.finger_mounting_position is None else serialize_f_64(data.finger_mounting_position),
3866
3833
  "finger_offset": None if data.finger_offset is None else serialize_f_64(data.finger_offset),
3867
3834
  "finger_angle": None if data.finger_angle is None else serialize_f_64(data.finger_angle),
3868
3835
  "finger_length": None if data.finger_length is None else serialize_f_64(data.finger_length),
@@ -3886,7 +3853,7 @@ class OnRobot2FG7GripperConfiguration:
3886
3853
  max_width_outer: Union[float, None] = None
3887
3854
  force: Union[float, None] = None
3888
3855
  max_force: Union[float, None] = None
3889
- finger_mounting_position: Union[str, None] = None
3856
+ finger_mounting_position: Union[float, None] = None
3890
3857
  finger_offset: Union[float, None] = None
3891
3858
  finger_angle: Union[float, None] = None
3892
3859
  finger_length: Union[float, None] = None
@@ -4002,12 +3969,12 @@ class OnRobot2FG7GripperConfiguration:
4002
3969
 
4003
3970
  return [True, ""]
4004
3971
 
4005
- def validate_finger_mounting_position(self, value: str) -> Tuple[bool, str]:
3972
+ def validate_finger_mounting_position(self, value: float) -> Tuple[bool, str]:
4006
3973
  if value is None:
4007
3974
  return [True, ""]
4008
3975
 
4009
- if not isinstance(value, str):
4010
- return [False, "finger_mounting_position must be of type str for OnRobot2FG7GripperConfiguration, got " + type(value).__name__]
3976
+ if not isinstance(value, float):
3977
+ return [False, "finger_mounting_position must be of type float for OnRobot2FG7GripperConfiguration, got " + type(value).__name__]
4011
3978
 
4012
3979
  return [True, ""]
4013
3980
 
@@ -4139,7 +4106,7 @@ def parse_on_robot_2_fg_7_gripper_configuration(data: object):
4139
4106
  max_width_outer=parse_f_64(data["max_width_outer"]) if "max_width_outer" in data and data.get("max_width_outer") is not None else None,
4140
4107
  force=parse_f_64(data["force"]) if "force" in data and data.get("force") is not None else None,
4141
4108
  max_force=parse_f_64(data["max_force"]) if "max_force" in data and data.get("max_force") is not None else None,
4142
- finger_mounting_position=parse_str(data["finger_mounting_position"]) if "finger_mounting_position" in data and data.get("finger_mounting_position") is not None else None,
4109
+ finger_mounting_position=parse_f_64(data["finger_mounting_position"]) if "finger_mounting_position" in data and data.get("finger_mounting_position") is not None else None,
4143
4110
  finger_offset=parse_f_64(data["finger_offset"]) if "finger_offset" in data and data.get("finger_offset") is not None else None,
4144
4111
  finger_angle=parse_f_64(data["finger_angle"]) if "finger_angle" in data and data.get("finger_angle") is not None else None,
4145
4112
  finger_length=parse_f_64(data["finger_length"]) if "finger_length" in data and data.get("finger_length") is not None else None,
@@ -4162,7 +4129,7 @@ def serialize_on_robot_2_fg_7_gripper_configuration(data: OnRobot2FG7GripperConf
4162
4129
  "max_width_outer": None if data.max_width_outer is None else serialize_f_64(data.max_width_outer),
4163
4130
  "force": None if data.force is None else serialize_f_64(data.force),
4164
4131
  "max_force": None if data.max_force is None else serialize_f_64(data.max_force),
4165
- "finger_mounting_position": None if data.finger_mounting_position is None else serialize_str(data.finger_mounting_position),
4132
+ "finger_mounting_position": None if data.finger_mounting_position is None else serialize_f_64(data.finger_mounting_position),
4166
4133
  "finger_offset": None if data.finger_offset is None else serialize_f_64(data.finger_offset),
4167
4134
  "finger_angle": None if data.finger_angle is None else serialize_f_64(data.finger_angle),
4168
4135
  "finger_length": None if data.finger_length is None else serialize_f_64(data.finger_length),
@@ -4464,6 +4431,36 @@ def serialize_orientation(data: Orientation) -> object:
4464
4431
  "quaternion": None if data.quaternion is None else serialize_quaternion(data.quaternion),
4465
4432
  }
4466
4433
 
4434
+ @dataclass
4435
+ class RecoveryStatusResponse:
4436
+ """Recovery status response"""
4437
+ state: Union[RecoveryStateEnum, None] = None
4438
+
4439
+ def validate_state(self, value: RecoveryStateEnum) -> Tuple[bool, str]:
4440
+ if value is None:
4441
+ return [True, ""]
4442
+
4443
+ if not ((isinstance(value, str) and RecoveryStateEnum in ['Success', 'Interrupted', 'NonIdle', 'Braked', 'PlanningFailure', 'ExecutionFailure', 'ControlSystemFailure', 'EStopTriggered', 'GripperFailure', 'OutOfJointLimitsFailure', 'CollisionFailure', 'TorqueCollisionFailure', 'InBoxingPositionFailure', 'PowerBoardCheckFailure', 'MotionPlannerFailure', 'MotionPlannerFailureStartPositionCollision', 'IOFailure', 'InvalidRoutineLoadedFailure', 'InferenceFailure', 'CameraFailure', 'HaasFailure', 'BotmanHeartbeatLost', 'InternalFailure', 'TorqueLimitExceeded', 'StepPlayFailure', 'UnbrakeFailure', 'WeldFailure', 'TriggerFaultFailure']) or isinstance(value, RecoveryStateEnum)):
4444
+ return [False, "state must be of type RecoveryStateEnum for RecoveryStatusResponse, got " + type(value).__name__]
4445
+
4446
+ return [True, ""]
4447
+
4448
+ def __post_init__(self):
4449
+ # Type check incoming model - raise error if invalid (required or wrong type)
4450
+ is_valid, error_str = self.validate_state(self.state)
4451
+ if not is_valid:
4452
+ raise TypeError(error_str)
4453
+
4454
+ def parse_recovery_status_response(data: object):
4455
+ return RecoveryStatusResponse(
4456
+ state=parse_recovery_state_enum(data["state"]) if "state" in data and data.get("state") is not None else None,
4457
+ )
4458
+
4459
+ def serialize_recovery_status_response(data: RecoveryStatusResponse) -> object:
4460
+ return {
4461
+ "state": None if data.state is None else serialize_recovery_state_enum(data.state),
4462
+ }
4463
+
4467
4464
  @dataclass
4468
4465
  class FailureStateDetails:
4469
4466
  """Failure state details."""
@@ -5591,19 +5588,9 @@ def serialize_position_and_orientation(data: PositionAndOrientation) -> object:
5591
5588
  @dataclass
5592
5589
  class FailureStateResponse:
5593
5590
  """Failure state response informs user of how and whether the robot may be recovered."""
5594
- status: Union[RobotStatusEnum, None] = None
5595
5591
  failed: Union[bool, None] = None
5596
5592
  failure: Union[FailureStateDetails, None] = None
5597
5593
 
5598
- def validate_status(self, value: RobotStatusEnum) -> Tuple[bool, str]:
5599
- if value is None:
5600
- return [True, ""]
5601
-
5602
- if not ((isinstance(value, str) and RobotStatusEnum in ['Idle', 'RunningAdHocCommand', 'RoutineRunning', 'Antigravity', 'AntigravitySlow', 'Failure', 'Recovering']) or isinstance(value, RobotStatusEnum)):
5603
- return [False, "status must be of type RobotStatusEnum for FailureStateResponse, got " + type(value).__name__]
5604
-
5605
- return [True, ""]
5606
-
5607
5594
  def validate_failed(self, value: bool) -> Tuple[bool, str]:
5608
5595
  if value is None:
5609
5596
  return [True, ""]
@@ -5624,9 +5611,6 @@ class FailureStateResponse:
5624
5611
 
5625
5612
  def __post_init__(self):
5626
5613
  # Type check incoming model - raise error if invalid (required or wrong type)
5627
- is_valid, error_str = self.validate_status(self.status)
5628
- if not is_valid:
5629
- raise TypeError(error_str)
5630
5614
  is_valid, error_str = self.validate_failed(self.failed)
5631
5615
  if not is_valid:
5632
5616
  raise TypeError(error_str)
@@ -5636,14 +5620,12 @@ class FailureStateResponse:
5636
5620
 
5637
5621
  def parse_failure_state_response(data: object):
5638
5622
  return FailureStateResponse(
5639
- status=parse_robot_status_enum(data["status"]) if "status" in data and data.get("status") is not None else None,
5640
5623
  failed=parse_bool(data["failed"]) if "failed" in data and data.get("failed") is not None else None,
5641
5624
  failure=parse_failure_state_details(data["failure"]) if "failure" in data and data.get("failure") is not None else None,
5642
5625
  )
5643
5626
 
5644
5627
  def serialize_failure_state_response(data: FailureStateResponse) -> object:
5645
5628
  return {
5646
- "status": None if data.status is None else serialize_robot_status_enum(data.status),
5647
5629
  "failed": None if data.failed is None else serialize_bool(data.failed),
5648
5630
  "failure": None if data.failure is None else serialize_failure_state_details(data.failure),
5649
5631
  }
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.1
2
2
  Name: standardbots
3
- Version: 2.0.0.dev1737138088
3
+ Version: 2.2024924.1
4
4
  Summary: Standard Bots RO1 Robotics API
5
5
  Home-page:
6
6
  Author: Standard Bots Support
@@ -10,13 +10,6 @@ Requires-Python: >=3.7
10
10
  Requires-Dist: setuptools>=21.0.0
11
11
  Requires-Dist: typing_extensions>=4.3.0
12
12
  Requires-Dist: urllib3>=1.26.7
13
- Dynamic: author
14
- Dynamic: author-email
15
- Dynamic: description
16
- Dynamic: keywords
17
- Dynamic: requires-dist
18
- Dynamic: requires-python
19
- Dynamic: summary
20
13
 
21
14
  Standard Bots RO1 Robotics API. # noqa: E501
22
15