viam-sdk 0.41.1__py3-none-linux_armv6l.whl → 0.66.0__py3-none-linux_armv6l.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.

Potentially problematic release.


This version of viam-sdk might be problematic. Click here for more details.

Files changed (225) hide show
  1. viam/app/app_client.py +225 -51
  2. viam/app/billing_client.py +47 -5
  3. viam/app/data_client.py +771 -234
  4. viam/app/ml_training_client.py +3 -5
  5. viam/app/provisioning_client.py +3 -5
  6. viam/app/viam_client.py +58 -11
  7. viam/components/arm/arm.py +1 -1
  8. viam/components/arm/service.py +1 -1
  9. viam/components/audio_in/__init__.py +24 -0
  10. viam/components/audio_in/audio_in.py +74 -0
  11. viam/components/audio_in/client.py +76 -0
  12. viam/components/audio_in/service.py +83 -0
  13. viam/components/audio_out/__init__.py +21 -0
  14. viam/components/audio_out/audio_out.py +72 -0
  15. viam/components/audio_out/client.py +67 -0
  16. viam/components/audio_out/service.py +63 -0
  17. viam/components/base/base.py +1 -1
  18. viam/components/board/board.py +8 -2
  19. viam/components/board/client.py +2 -1
  20. viam/components/board/service.py +1 -0
  21. viam/components/button/__init__.py +10 -0
  22. viam/components/button/button.py +41 -0
  23. viam/components/button/client.py +52 -0
  24. viam/components/button/service.py +46 -0
  25. viam/components/camera/camera.py +15 -30
  26. viam/components/camera/client.py +10 -21
  27. viam/components/camera/service.py +15 -28
  28. viam/components/component_base.py +2 -2
  29. viam/components/gantry/client.py +17 -2
  30. viam/components/gantry/gantry.py +32 -1
  31. viam/components/gantry/service.py +21 -5
  32. viam/components/gripper/__init__.py +2 -0
  33. viam/components/gripper/client.py +25 -2
  34. viam/components/gripper/gripper.py +76 -1
  35. viam/components/gripper/service.py +32 -3
  36. viam/components/input/input.py +1 -1
  37. viam/components/motor/motor.py +1 -1
  38. viam/components/power_sensor/power_sensor.py +1 -1
  39. viam/components/switch/__init__.py +10 -0
  40. viam/components/switch/client.py +83 -0
  41. viam/components/switch/service.py +72 -0
  42. viam/components/switch/switch.py +98 -0
  43. viam/gen/app/agent/v1/agent_pb2.py +1 -1
  44. viam/gen/app/cloudslam/v1/cloud_slam_pb2.py +1 -1
  45. viam/gen/app/data/v1/data_grpc.py +74 -2
  46. viam/gen/app/data/v1/data_pb2.py +198 -104
  47. viam/gen/app/data/v1/data_pb2.pyi +563 -31
  48. viam/gen/app/datapipelines/__init__.py +0 -0
  49. viam/gen/app/datapipelines/v1/__init__.py +0 -0
  50. viam/gen/app/datapipelines/v1/data_pipelines_grpc.py +84 -0
  51. viam/gen/app/datapipelines/v1/data_pipelines_pb2.py +57 -0
  52. viam/gen/app/datapipelines/v1/data_pipelines_pb2.pyi +387 -0
  53. viam/gen/app/dataset/v1/dataset_grpc.py +10 -2
  54. viam/gen/app/dataset/v1/dataset_pb2.py +8 -4
  55. viam/gen/app/dataset/v1/dataset_pb2.pyi +36 -1
  56. viam/gen/app/datasync/v1/data_sync_pb2.py +39 -35
  57. viam/gen/app/datasync/v1/data_sync_pb2.pyi +21 -8
  58. viam/gen/app/mlinference/v1/ml_inference_pb2.py +7 -7
  59. viam/gen/app/mlinference/v1/ml_inference_pb2.pyi +4 -2
  60. viam/gen/app/mltraining/v1/ml_training_grpc.py +10 -2
  61. viam/gen/app/mltraining/v1/ml_training_pb2.py +63 -43
  62. viam/gen/app/mltraining/v1/ml_training_pb2.pyi +112 -7
  63. viam/gen/app/packages/v1/packages_pb2.py +1 -1
  64. viam/gen/app/v1/app_grpc.py +74 -3
  65. viam/gen/app/v1/app_pb2.py +600 -545
  66. viam/gen/app/v1/app_pb2.pyi +1108 -258
  67. viam/gen/app/v1/billing_grpc.py +26 -2
  68. viam/gen/app/v1/billing_pb2.py +52 -36
  69. viam/gen/app/v1/billing_pb2.pyi +158 -4
  70. viam/gen/app/v1/end_user_pb2.py +1 -1
  71. viam/gen/app/v1/robot_pb2.py +95 -89
  72. viam/gen/app/v1/robot_pb2.pyi +121 -9
  73. viam/gen/common/v1/common_pb2.py +76 -58
  74. viam/gen/common/v1/common_pb2.pyi +186 -17
  75. viam/gen/component/arm/v1/arm_grpc.py +10 -2
  76. viam/gen/component/arm/v1/arm_pb2.py +5 -3
  77. viam/gen/component/audioin/__init__.py +0 -0
  78. viam/gen/component/audioin/v1/__init__.py +0 -0
  79. viam/gen/component/audioin/v1/audioin_grpc.py +54 -0
  80. viam/gen/component/audioin/v1/audioin_pb2.py +34 -0
  81. viam/gen/component/audioin/v1/audioin_pb2.pyi +94 -0
  82. viam/gen/component/audioinput/v1/audioinput_pb2.py +1 -1
  83. viam/gen/component/audioout/__init__.py +0 -0
  84. viam/gen/component/audioout/v1/__init__.py +0 -0
  85. viam/gen/component/audioout/v1/audioout_grpc.py +54 -0
  86. viam/gen/component/audioout/v1/audioout_pb2.py +32 -0
  87. viam/gen/component/audioout/v1/audioout_pb2.pyi +47 -0
  88. viam/gen/component/base/v1/base_pb2.py +1 -1
  89. viam/gen/component/board/v1/board_pb2.py +1 -1
  90. viam/gen/component/button/v1/button_pb2.py +1 -1
  91. viam/gen/component/camera/v1/camera_grpc.py +1 -0
  92. viam/gen/component/camera/v1/camera_pb2.py +37 -36
  93. viam/gen/component/camera/v1/camera_pb2.pyi +31 -4
  94. viam/gen/component/encoder/v1/encoder_pb2.py +1 -1
  95. viam/gen/component/gantry/v1/gantry_grpc.py +9 -1
  96. viam/gen/component/gantry/v1/gantry_pb2.py +5 -3
  97. viam/gen/component/generic/v1/generic_pb2.py +1 -1
  98. viam/gen/component/gripper/v1/gripper_grpc.py +18 -2
  99. viam/gen/component/gripper/v1/gripper_pb2.py +12 -4
  100. viam/gen/component/gripper/v1/gripper_pb2.pyi +43 -1
  101. viam/gen/component/inputcontroller/v1/input_controller_pb2.py +1 -1
  102. viam/gen/component/motor/v1/motor_pb2.py +1 -1
  103. viam/gen/component/movementsensor/v1/movementsensor_pb2.py +1 -1
  104. viam/gen/component/posetracker/v1/pose_tracker_pb2.py +1 -1
  105. viam/gen/component/powersensor/v1/powersensor_pb2.py +1 -1
  106. viam/gen/component/sensor/v1/sensor_pb2.py +1 -1
  107. viam/gen/component/servo/v1/servo_pb2.py +1 -1
  108. viam/gen/component/switch/v1/switch_pb2.py +5 -5
  109. viam/gen/component/switch/v1/switch_pb2.pyi +9 -2
  110. viam/gen/component/testecho/v1/testecho_pb2.py +1 -1
  111. viam/gen/module/v1/module_pb2.py +5 -5
  112. viam/gen/module/v1/module_pb2.pyi +7 -2
  113. viam/gen/opentelemetry/__init__.py +0 -0
  114. viam/gen/opentelemetry/proto/__init__.py +0 -0
  115. viam/gen/opentelemetry/proto/common/__init__.py +0 -0
  116. viam/gen/opentelemetry/proto/common/v1/__init__.py +0 -0
  117. viam/gen/opentelemetry/proto/common/v1/common_grpc.py +0 -0
  118. viam/gen/opentelemetry/proto/common/v1/common_pb2.py +27 -0
  119. viam/gen/opentelemetry/proto/common/v1/common_pb2.pyi +208 -0
  120. viam/gen/opentelemetry/proto/resource/__init__.py +0 -0
  121. viam/gen/opentelemetry/proto/resource/v1/__init__.py +0 -0
  122. viam/gen/opentelemetry/proto/resource/v1/resource_grpc.py +0 -0
  123. viam/gen/opentelemetry/proto/resource/v1/resource_pb2.py +18 -0
  124. viam/gen/opentelemetry/proto/resource/v1/resource_pb2.pyi +59 -0
  125. viam/gen/opentelemetry/proto/trace/__init__.py +0 -0
  126. viam/gen/opentelemetry/proto/trace/v1/__init__.py +0 -0
  127. viam/gen/opentelemetry/proto/trace/v1/trace_grpc.py +0 -0
  128. viam/gen/opentelemetry/proto/trace/v1/trace_pb2.py +37 -0
  129. viam/gen/opentelemetry/proto/trace/v1/trace_pb2.pyi +402 -0
  130. viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py +1 -1
  131. viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py +1 -1
  132. viam/gen/proto/rpc/v1/auth_pb2.py +1 -1
  133. viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py +1 -1
  134. viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py +1 -1
  135. viam/gen/provisioning/v1/provisioning_grpc.py +10 -2
  136. viam/gen/provisioning/v1/provisioning_pb2.py +32 -26
  137. viam/gen/provisioning/v1/provisioning_pb2.pyi +46 -5
  138. viam/gen/robot/v1/robot_grpc.py +51 -34
  139. viam/gen/robot/v1/robot_pb2.py +147 -142
  140. viam/gen/robot/v1/robot_pb2.pyi +153 -86
  141. viam/gen/service/datamanager/v1/data_manager_grpc.py +11 -2
  142. viam/gen/service/datamanager/v1/data_manager_pb2.py +15 -8
  143. viam/gen/service/datamanager/v1/data_manager_pb2.pyi +47 -1
  144. viam/gen/service/discovery/v1/discovery_pb2.py +1 -1
  145. viam/gen/service/generic/v1/generic_pb2.py +1 -1
  146. viam/gen/service/mlmodel/v1/mlmodel_pb2.py +1 -1
  147. viam/gen/service/motion/v1/motion_pb2.py +92 -62
  148. viam/gen/service/motion/v1/motion_pb2.pyi +130 -68
  149. viam/gen/service/navigation/v1/navigation_pb2.py +1 -1
  150. viam/gen/service/sensors/v1/sensors_pb2.py +1 -1
  151. viam/gen/service/shell/v1/shell_pb2.py +1 -1
  152. viam/gen/service/slam/v1/slam_pb2.py +1 -1
  153. viam/gen/service/slam/v1/slam_pb2.pyi +1 -1
  154. viam/gen/service/video/__init__.py +0 -0
  155. viam/gen/service/video/v1/__init__.py +0 -0
  156. viam/gen/service/video/v1/video_grpc.py +39 -0
  157. viam/gen/service/video/v1/video_pb2.py +29 -0
  158. viam/gen/service/video/v1/video_pb2.pyi +72 -0
  159. viam/gen/service/vision/v1/vision_pb2.py +27 -27
  160. viam/gen/service/vision/v1/vision_pb2.pyi +28 -3
  161. viam/gen/service/worldstatestore/__init__.py +0 -0
  162. viam/gen/service/worldstatestore/v1/__init__.py +0 -0
  163. viam/gen/service/worldstatestore/v1/world_state_store_grpc.py +55 -0
  164. viam/gen/service/worldstatestore/v1/world_state_store_pb2.py +39 -0
  165. viam/gen/service/worldstatestore/v1/world_state_store_pb2.pyi +171 -0
  166. viam/gen/stream/v1/stream_pb2.py +1 -1
  167. viam/gen/tagger/v1/tagger_pb2.py +1 -1
  168. viam/logging.py +9 -8
  169. viam/media/audio.py +22 -10
  170. viam/media/utils/pil/__init__.py +5 -1
  171. viam/media/video.py +54 -40
  172. viam/module/module.py +85 -16
  173. viam/module/resource_data_consumer.py +41 -0
  174. viam/module/service.py +9 -1
  175. viam/proto/app/__init__.py +68 -0
  176. viam/proto/app/billing.py +16 -0
  177. viam/proto/app/data/__init__.py +48 -0
  178. viam/proto/app/datapipelines/__init__.py +56 -0
  179. viam/proto/app/dataset/__init__.py +4 -0
  180. viam/proto/app/mltraining/__init__.py +6 -0
  181. viam/proto/app/robot.py +6 -0
  182. viam/proto/common/__init__.py +14 -0
  183. viam/proto/component/audioin/__init__.py +16 -0
  184. viam/proto/component/audioout/__init__.py +15 -0
  185. viam/proto/component/camera/__init__.py +0 -2
  186. viam/proto/component/gripper/__init__.py +4 -0
  187. viam/proto/opentelemetry/__init__.py +0 -0
  188. viam/proto/opentelemetry/proto/__init__.py +0 -0
  189. viam/proto/opentelemetry/proto/common/__init__.py +15 -0
  190. viam/proto/opentelemetry/proto/resource/__init__.py +10 -0
  191. viam/proto/opentelemetry/proto/trace/__init__.py +15 -0
  192. viam/proto/provisioning/__init__.py +6 -0
  193. viam/proto/robot/__init__.py +16 -8
  194. viam/proto/service/datamanager/__init__.py +8 -1
  195. viam/proto/service/motion/__init__.py +2 -0
  196. viam/proto/service/video/__init__.py +15 -0
  197. viam/proto/service/worldstatestore/__init__.py +32 -0
  198. viam/resource/easy_resource.py +5 -9
  199. viam/resource/manager.py +4 -3
  200. viam/resource/registry.py +2 -2
  201. viam/resource/types.py +2 -2
  202. viam/robot/client.py +38 -59
  203. viam/rpc/dial.py +48 -5
  204. viam/rpc/libviam_rust_utils.so +0 -0
  205. viam/rpc/server.py +24 -10
  206. viam/services/motion/client.py +8 -9
  207. viam/services/motion/motion.py +48 -46
  208. viam/services/navigation/navigation.py +2 -2
  209. viam/services/vision/client.py +1 -1
  210. viam/services/vision/service.py +5 -8
  211. viam/services/vision/vision.py +5 -3
  212. viam/services/worldstatestore/__init__.py +18 -0
  213. viam/services/worldstatestore/client.py +94 -0
  214. viam/services/worldstatestore/service.py +55 -0
  215. viam/services/worldstatestore/worldstatestore.py +90 -0
  216. viam/sessions_client.py +115 -46
  217. viam/version_metadata.py +2 -2
  218. {viam_sdk-0.41.1.dist-info → viam_sdk-0.66.0.dist-info}/METADATA +10 -6
  219. {viam_sdk-0.41.1.dist-info → viam_sdk-0.66.0.dist-info}/RECORD +221 -152
  220. {viam_sdk-0.41.1.dist-info → viam_sdk-0.66.0.dist-info}/WHEEL +1 -1
  221. viam/components/audio_input/__init__.py +0 -18
  222. viam/components/audio_input/audio_input.py +0 -81
  223. viam/components/audio_input/client.py +0 -70
  224. viam/components/audio_input/service.py +0 -114
  225. {viam_sdk-0.41.1.dist-info → viam_sdk-0.66.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,9 +1,12 @@
1
1
  import abc
2
- from typing import Any, Dict, Final, Optional
2
+ from dataclasses import dataclass
3
+ from typing import Any, Dict, Final, Optional, Tuple
3
4
 
4
5
  from viam.components.component_base import ComponentBase
5
6
  from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
6
7
 
8
+ from . import KinematicsFileFormat
9
+
7
10
 
8
11
  class Gripper(ComponentBase):
9
12
  """
@@ -24,6 +27,17 @@ class Gripper(ComponentBase):
24
27
  RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "gripper"
25
28
  )
26
29
 
30
+ @dataclass
31
+ class HoldingStatus:
32
+ """
33
+ HoldingStatus represents whether the gripper is currently holding onto an object. The
34
+ additional ``meta`` attribute contains other optional contextual information (i.e. confidence
35
+ interval, pressure, etc.)
36
+ """
37
+
38
+ is_holding_something: bool
39
+ meta: Optional[Dict[str, Any]] = None
40
+
27
41
  @abc.abstractmethod
28
42
  async def open(
29
43
  self,
@@ -71,6 +85,33 @@ class Gripper(ComponentBase):
71
85
  """
72
86
  ...
73
87
 
88
+ @abc.abstractmethod
89
+ async def is_holding_something(
90
+ self,
91
+ *,
92
+ extra: Optional[Dict[str, Any]] = None,
93
+ timeout: Optional[float] = None,
94
+ **kwargs,
95
+ ) -> HoldingStatus:
96
+ """
97
+ Get information about whether the gripper is currently holding onto an object.
98
+
99
+ ::
100
+
101
+ my_gripper = Gripper.from_robot(robot=machine, name="my_gripper")
102
+
103
+ # Grab with the gripper.
104
+ holding_status = await my_gripper.is_holding_something()
105
+ # get the boolean result
106
+ is_holding_something = holding_status.is_holding_something
107
+
108
+ Returns:
109
+ HoldingStatus: see documentation on `HoldingStatus` for more information
110
+
111
+ For more information, see `Gripper component <https://docs.viam.com/dev/reference/apis/components/gripper/#grab>`_.
112
+
113
+ """
114
+
74
115
  @abc.abstractmethod
75
116
  async def stop(
76
117
  self,
@@ -112,3 +153,37 @@ class Gripper(ComponentBase):
112
153
  For more information, see `Gripper component <https://docs.viam.com/dev/reference/apis/components/gripper/#is_moving>`_.
113
154
  """
114
155
  ...
156
+
157
+ @abc.abstractmethod
158
+ async def get_kinematics(
159
+ self,
160
+ *,
161
+ extra: Optional[Dict[str, Any]] = None,
162
+ timeout: Optional[float] = None,
163
+ **kwargs,
164
+ ) -> Tuple[KinematicsFileFormat.ValueType, bytes]:
165
+ """
166
+ Get the kinematics information associated with the gripper.
167
+
168
+ ::
169
+
170
+ my_gripper = Gripper.from_robot(robot=machine, name="my_gripper")
171
+
172
+ # Get the kinematics information associated with the gripper.
173
+ kinematics = await my_gripper.get_kinematics()
174
+
175
+ # Get the format of the kinematics file.
176
+ k_file = kinematics[0]
177
+
178
+ # Get the byte contents of the file.
179
+ k_bytes = kinematics[1]
180
+
181
+ Returns:
182
+ Tuple[KinematicsFileFormat.ValueType, bytes]: A tuple containing two values; the first [0] value represents the format of the
183
+ file, either in URDF format (``KinematicsFileFormat.KINEMATICS_FILE_FORMAT_URDF``) or
184
+ Viam's kinematic parameter format (spatial vector algebra) (``KinematicsFileFormat.KINEMATICS_FILE_FORMAT_SVA``),
185
+ and the second [1] value represents the byte contents of the file.
186
+
187
+ For more information, see `Gripper component <https://docs.viam.com/dev/reference/apis/components/gripper/#getkinematics>`_.
188
+ """
189
+ ...
@@ -1,10 +1,19 @@
1
1
  from grpclib.server import Stream
2
2
 
3
- from viam.proto.common import DoCommandRequest, DoCommandResponse, GetGeometriesRequest, GetGeometriesResponse
3
+ from viam.proto.common import (
4
+ DoCommandRequest,
5
+ DoCommandResponse,
6
+ GetGeometriesRequest,
7
+ GetGeometriesResponse,
8
+ GetKinematicsRequest,
9
+ GetKinematicsResponse,
10
+ )
4
11
  from viam.proto.component.gripper import (
5
12
  GrabRequest,
6
13
  GrabResponse,
7
14
  GripperServiceBase,
15
+ IsHoldingSomethingRequest,
16
+ IsHoldingSomethingResponse,
8
17
  IsMovingRequest,
9
18
  IsMovingResponse,
10
19
  OpenRequest,
@@ -62,6 +71,17 @@ class GripperRPCService(GripperServiceBase, ResourceRPCServiceBase[Gripper]):
62
71
  response = IsMovingResponse(is_moving=is_moving)
63
72
  await stream.send_message(response)
64
73
 
74
+ async def IsHoldingSomething(self, stream: Stream[IsHoldingSomethingRequest, IsHoldingSomethingResponse]) -> None:
75
+ request = await stream.recv_message()
76
+ assert request is not None
77
+ name = request.name
78
+ gripper = self.get_resource(name)
79
+ holding_status = await gripper.is_holding_something()
80
+ response = IsHoldingSomethingResponse(
81
+ is_holding_something=holding_status.is_holding_something, meta=dict_to_struct(holding_status.meta)
82
+ )
83
+ await stream.send_message(response)
84
+
65
85
  async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -> None:
66
86
  request = await stream.recv_message()
67
87
  assert request is not None
@@ -74,8 +94,17 @@ class GripperRPCService(GripperServiceBase, ResourceRPCServiceBase[Gripper]):
74
94
  async def GetGeometries(self, stream: Stream[GetGeometriesRequest, GetGeometriesResponse]) -> None:
75
95
  request = await stream.recv_message()
76
96
  assert request is not None
77
- arm = self.get_resource(request.name)
97
+ gripper = self.get_resource(request.name)
78
98
  timeout = stream.deadline.time_remaining() if stream.deadline else None
79
- geometries = await arm.get_geometries(extra=struct_to_dict(request.extra), timeout=timeout)
99
+ geometries = await gripper.get_geometries(extra=struct_to_dict(request.extra), timeout=timeout)
80
100
  response = GetGeometriesResponse(geometries=geometries)
81
101
  await stream.send_message(response)
102
+
103
+ async def GetKinematics(self, stream: Stream[GetKinematicsRequest, GetKinematicsResponse]) -> None:
104
+ request = await stream.recv_message()
105
+ assert request is not None
106
+ gripper = self.get_resource(request.name)
107
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
108
+ format, kinematics_data = await gripper.get_kinematics(extra=struct_to_dict(request.extra), timeout=timeout)
109
+ response = GetKinematicsResponse(format=format, kinematics_data=kinematics_data)
110
+ await stream.send_message(response)
@@ -243,7 +243,7 @@ class Controller(ComponentBase):
243
243
 
244
244
 
245
245
  async def main():
246
- # ... < INSERT CONNECTION CODE FROM MACHINE'S CODE SAMPLE TAB >
246
+ # ... < INSERT CONNECTION CODE FROM MACHINE'S CONNECT TAB >
247
247
 
248
248
  # Get your controller from the machine.
249
249
  my_controller = Controller.from_robot(
@@ -274,7 +274,7 @@ class Motor(ComponentBase):
274
274
 
275
275
  Returns:
276
276
  Tuple[bool, float]: A tuple containing two values; the first [0] value indicates whether the motor is currently powered, and
277
- the second [1] value indicates the current power percentage of the motor.
277
+ the second [1] value indicates the current power percentage of the motor.
278
278
 
279
279
  For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#ispowered>`_.
280
280
  """
@@ -97,7 +97,7 @@ class PowerSensor(ComponentBase):
97
97
 
98
98
  Returns:
99
99
  Mapping[str, Any]: The readings for the PowerSensor. Can be of any type. Includes voltage in volts (float), current in
100
- amperes (float), is_ac (bool), and power in watts (float).
100
+ amperes (float), is_ac (bool), and power in watts (float).
101
101
 
102
102
  For more information, see `Power Sensor component <https://docs.viam.com/dev/reference/apis/components/power-sensor/#getreadings>`_.
103
103
  """
@@ -0,0 +1,10 @@
1
+ import viam.gen.component.switch.v1.switch_pb2
2
+ from viam.resource.registry import Registry, ResourceRegistration
3
+
4
+ from .client import SwitchClient
5
+ from .service import SwitchRPCService
6
+ from .switch import Switch
7
+
8
+ __all__ = ["Switch"]
9
+
10
+ Registry.register_api(ResourceRegistration(Switch, SwitchRPCService, lambda name, channel: SwitchClient(name, channel)))
@@ -0,0 +1,83 @@
1
+ from typing import Any, Mapping, Optional, Sequence, Tuple
2
+
3
+ from grpclib.client import Channel
4
+
5
+ from viam.gen.component.switch.v1.switch_pb2 import (
6
+ GetNumberOfPositionsRequest,
7
+ GetNumberOfPositionsResponse,
8
+ GetPositionRequest,
9
+ GetPositionResponse,
10
+ SetPositionRequest,
11
+ )
12
+ from viam.proto.common import (
13
+ DoCommandRequest,
14
+ DoCommandResponse,
15
+ )
16
+ from viam.proto.component.switch import SwitchServiceStub
17
+ from viam.resource.rpc_client_base import ReconfigurableResourceRPCClientBase
18
+ from viam.utils import (
19
+ ValueTypes,
20
+ dict_to_struct,
21
+ struct_to_dict,
22
+ )
23
+
24
+ from .switch import Switch
25
+
26
+
27
+ class SwitchClient(Switch, ReconfigurableResourceRPCClientBase):
28
+ """
29
+ gRPC client for Switch component
30
+ """
31
+
32
+ def __init__(self, name: str, channel: Channel):
33
+ self.channel = channel
34
+ self.client = SwitchServiceStub(channel)
35
+ super().__init__(name)
36
+
37
+ async def get_position(
38
+ self,
39
+ *,
40
+ extra: Optional[Mapping[str, Any]] = None,
41
+ timeout: Optional[float] = None,
42
+ **kwargs,
43
+ ) -> int:
44
+ md = kwargs.get("metadata", self.Metadata()).proto
45
+ request = GetPositionRequest(name=self.name, extra=dict_to_struct(extra))
46
+ response: GetPositionResponse = await self.client.GetPosition(request, timeout=timeout, metadata=md)
47
+ return response.position
48
+
49
+ async def set_position(
50
+ self,
51
+ position: int,
52
+ *,
53
+ extra: Optional[Mapping[str, Any]] = None,
54
+ timeout: Optional[float] = None,
55
+ **kwargs,
56
+ ) -> None:
57
+ md = kwargs.get("metadata", self.Metadata()).proto
58
+ request = SetPositionRequest(name=self.name, position=position, extra=dict_to_struct(extra))
59
+ await self.client.SetPosition(request, timeout=timeout, metadata=md)
60
+
61
+ async def get_number_of_positions(
62
+ self,
63
+ *,
64
+ extra: Optional[Mapping[str, Any]] = None,
65
+ timeout: Optional[float] = None,
66
+ **kwargs,
67
+ ) -> Tuple[int, Sequence[str]]:
68
+ md = kwargs.get("metadata", self.Metadata()).proto
69
+ request = GetNumberOfPositionsRequest(name=self.name, extra=dict_to_struct(extra))
70
+ response: GetNumberOfPositionsResponse = await self.client.GetNumberOfPositions(request, timeout=timeout, metadata=md)
71
+ return response.number_of_positions, response.labels
72
+
73
+ async def do_command(
74
+ self,
75
+ command: Mapping[str, ValueTypes],
76
+ *,
77
+ timeout: Optional[float] = None,
78
+ **kwargs,
79
+ ) -> Mapping[str, ValueTypes]:
80
+ md = kwargs.get("metadata", self.Metadata()).proto
81
+ request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
82
+ response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
83
+ return struct_to_dict(response.result)
@@ -0,0 +1,72 @@
1
+ from grpclib.server import Stream
2
+
3
+ from viam.gen.component.switch.v1.switch_pb2 import (
4
+ GetNumberOfPositionsRequest,
5
+ GetNumberOfPositionsResponse,
6
+ GetPositionRequest,
7
+ GetPositionResponse,
8
+ SetPositionRequest,
9
+ SetPositionResponse,
10
+ )
11
+ from viam.proto.common import (
12
+ DoCommandRequest,
13
+ DoCommandResponse,
14
+ )
15
+ from viam.proto.component.switch import SwitchServiceBase
16
+ from viam.resource.rpc_service_base import ResourceRPCServiceBase
17
+ from viam.utils import dict_to_struct, struct_to_dict
18
+
19
+ from .switch import Switch
20
+
21
+
22
+ class SwitchRPCService(SwitchServiceBase, ResourceRPCServiceBase[Switch]):
23
+ """
24
+ gRPC Service for a generic Switch
25
+ """
26
+
27
+ RESOURCE_TYPE = Switch
28
+
29
+ async def GetPosition(self, stream: Stream[GetPositionRequest, GetPositionResponse]) -> None:
30
+ request = await stream.recv_message()
31
+ assert request is not None
32
+ name = request.name
33
+ switch = self.get_resource(name)
34
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
35
+ position = await switch.get_position(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
36
+ response = GetPositionResponse(position=position)
37
+ await stream.send_message(response)
38
+
39
+ async def SetPosition(self, stream: Stream[SetPositionRequest, SetPositionResponse]) -> None:
40
+ request = await stream.recv_message()
41
+ assert request is not None
42
+ name = request.name
43
+ switch = self.get_resource(name)
44
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
45
+ await switch.set_position(position=request.position, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
46
+ await stream.send_message(SetPositionResponse())
47
+
48
+ async def GetNumberOfPositions(self, stream: Stream[GetNumberOfPositionsRequest, GetNumberOfPositionsResponse]) -> None:
49
+ request = await stream.recv_message()
50
+ assert request is not None
51
+ name = request.name
52
+ switch = self.get_resource(name)
53
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
54
+ number_of_positions, labels = await switch.get_number_of_positions(
55
+ extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata
56
+ )
57
+ response = GetNumberOfPositionsResponse(number_of_positions=number_of_positions, labels=labels)
58
+ await stream.send_message(response)
59
+
60
+ async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -> None:
61
+ request = await stream.recv_message()
62
+ assert request is not None
63
+ name = request.name
64
+ switch = self.get_resource(name)
65
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
66
+ result = await switch.do_command(
67
+ command=struct_to_dict(request.command),
68
+ timeout=timeout,
69
+ metadata=stream.metadata,
70
+ )
71
+ response = DoCommandResponse(result=dict_to_struct(result))
72
+ await stream.send_message(response)
@@ -0,0 +1,98 @@
1
+ import abc
2
+ from typing import Any, Final, Mapping, Optional, Sequence, Tuple
3
+
4
+ from viam.components.component_base import ComponentBase
5
+ from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
6
+
7
+
8
+ class Switch(ComponentBase):
9
+ """
10
+ Switch represents a device with two or more finite states (or positions) than can be set and retrieved.
11
+
12
+ This acts as an abstract base class for any drivers representing specific
13
+ switch implementations. This cannot be used on its own. If the ``__init__()`` function is
14
+ overridden, it must call the ``super().__init__()`` function.
15
+
16
+ ::
17
+
18
+ from viam.components.switch import Switch
19
+
20
+ For more information, see `Switch component <https://docs.viam.com/dev/reference/apis/components/switch/>`_.
21
+ """
22
+
23
+ API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
24
+ RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "switch"
25
+ )
26
+
27
+ @abc.abstractmethod
28
+ async def get_position(self, *, extra: Optional[Mapping[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> int:
29
+ """
30
+ Get the current position of the switch
31
+
32
+ ::
33
+
34
+ my_switch = Switch.from_robot(robot=machine, name="my_switch")
35
+
36
+ # Update the switch from its current position to the desired position of 1.
37
+ await my_switch.set_position(1)
38
+
39
+ # Get the current set position of the switch.
40
+ pos1 = await my_switch.get_position()
41
+
42
+ # Update the switch from its current position to the desired position.
43
+ await my_switch.set_position(0)
44
+
45
+ # Get the current set position of the switch.
46
+ pos2 = await my_switch.get_position()
47
+
48
+ Returns:
49
+ int: The current position of the switch within the range of available positions.
50
+
51
+ For more information, see `Switch component <https://docs.viam.com/dev/reference/apis/components/Switch/#getposition>`_.
52
+ """
53
+ ...
54
+
55
+ @abc.abstractmethod
56
+ async def set_position(
57
+ self, position: int, *, extra: Optional[Mapping[str, Any]] = None, timeout: Optional[float] = None, **kwargs
58
+ ) -> None:
59
+ """
60
+ Sets the current position of the switch.
61
+
62
+ ::
63
+
64
+ my_switch = Switch.from_robot(robot=machine, name="my_switch")
65
+
66
+ # Update the switch from its current position to the desired position of 1.
67
+ await my_switch.set_position(1)
68
+
69
+ # Update the switch from its current position to the desired position of 0.
70
+ await my_switch.set_position(0)
71
+
72
+ Args:
73
+ position (int): The position of the switch within the range of available positions.
74
+
75
+ For more information, see `Switch component <https://docs.viam.com/dev/reference/apis/components/switch/#setposition>`_.
76
+ """
77
+ ...
78
+
79
+ @abc.abstractmethod
80
+ async def get_number_of_positions(
81
+ self, *, extra: Optional[Mapping[str, Any]] = None, timeout: Optional[float] = None, **kwargs
82
+ ) -> Tuple[int, Sequence[str]]:
83
+ """
84
+ Get the number of available positions on the switch.
85
+
86
+ ::
87
+
88
+ my_switch = Switch.from_robot(robot=machine, name="my_switch")
89
+
90
+ print(await my_switch.get_number_of_positions())
91
+
92
+ Returns:
93
+ Tuple[int, Sequence[str]]: The number of available positions and their labels
94
+
95
+
96
+ For more information, see `Switch component <https://docs.viam.com/dev/reference/apis/components/switch/#getnumberofpositions>`_.
97
+ """
98
+ ...
@@ -4,7 +4,7 @@ from google.protobuf import descriptor_pool as _descriptor_pool
4
4
  from google.protobuf import runtime_version as _runtime_version
5
5
  from google.protobuf import symbol_database as _symbol_database
6
6
  from google.protobuf.internal import builder as _builder
7
- _runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 1, '', 'app/agent/v1/agent.proto')
7
+ _runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'app/agent/v1/agent.proto')
8
8
  _sym_db = _symbol_database.Default()
9
9
  from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2
10
10
  from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
@@ -4,7 +4,7 @@ from google.protobuf import descriptor_pool as _descriptor_pool
4
4
  from google.protobuf import runtime_version as _runtime_version
5
5
  from google.protobuf import symbol_database as _symbol_database
6
6
  from google.protobuf.internal import builder as _builder
7
- _runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 1, '', 'app/cloudslam/v1/cloud_slam.proto')
7
+ _runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'app/cloudslam/v1/cloud_slam.proto')
8
8
  _sym_db = _symbol_database.Default()
9
9
  from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2
10
10
  from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
@@ -104,8 +104,44 @@ class DataServiceBase(abc.ABC):
104
104
  async def RemoveBinaryDataFromDatasetByIDs(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsRequest, app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsResponse]') -> None:
105
105
  pass
106
106
 
107
+ @abc.abstractmethod
108
+ async def CreateIndex(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.CreateIndexRequest, app.data.v1.data_pb2.CreateIndexResponse]') -> None:
109
+ pass
110
+
111
+ @abc.abstractmethod
112
+ async def ListIndexes(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.ListIndexesRequest, app.data.v1.data_pb2.ListIndexesResponse]') -> None:
113
+ pass
114
+
115
+ @abc.abstractmethod
116
+ async def DeleteIndex(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.DeleteIndexRequest, app.data.v1.data_pb2.DeleteIndexResponse]') -> None:
117
+ pass
118
+
119
+ @abc.abstractmethod
120
+ async def CreateSavedQuery(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.CreateSavedQueryRequest, app.data.v1.data_pb2.CreateSavedQueryResponse]') -> None:
121
+ pass
122
+
123
+ @abc.abstractmethod
124
+ async def UpdateSavedQuery(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.UpdateSavedQueryRequest, app.data.v1.data_pb2.UpdateSavedQueryResponse]') -> None:
125
+ pass
126
+
127
+ @abc.abstractmethod
128
+ async def GetSavedQuery(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.GetSavedQueryRequest, app.data.v1.data_pb2.GetSavedQueryResponse]') -> None:
129
+ pass
130
+
131
+ @abc.abstractmethod
132
+ async def DeleteSavedQuery(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.DeleteSavedQueryRequest, app.data.v1.data_pb2.DeleteSavedQueryResponse]') -> None:
133
+ pass
134
+
135
+ @abc.abstractmethod
136
+ async def ListSavedQueries(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.ListSavedQueriesRequest, app.data.v1.data_pb2.ListSavedQueriesResponse]') -> None:
137
+ pass
138
+
139
+ @abc.abstractmethod
140
+ async def CreateBinaryDataSignedURL(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.CreateBinaryDataSignedURLRequest, app.data.v1.data_pb2.CreateBinaryDataSignedURLResponse]') -> None:
141
+ pass
142
+
107
143
  def __mapping__(self) -> typing.Dict[str, grpclib.const.Handler]:
108
- return {'/viam.app.data.v1.DataService/TabularDataByFilter': grpclib.const.Handler(self.TabularDataByFilter, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.TabularDataByFilterRequest, app.data.v1.data_pb2.TabularDataByFilterResponse), '/viam.app.data.v1.DataService/TabularDataBySQL': grpclib.const.Handler(self.TabularDataBySQL, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.TabularDataBySQLRequest, app.data.v1.data_pb2.TabularDataBySQLResponse), '/viam.app.data.v1.DataService/TabularDataByMQL': grpclib.const.Handler(self.TabularDataByMQL, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.TabularDataByMQLRequest, app.data.v1.data_pb2.TabularDataByMQLResponse), '/viam.app.data.v1.DataService/ExportTabularData': grpclib.const.Handler(self.ExportTabularData, grpclib.const.Cardinality.UNARY_STREAM, app.data.v1.data_pb2.ExportTabularDataRequest, app.data.v1.data_pb2.ExportTabularDataResponse), '/viam.app.data.v1.DataService/GetLatestTabularData': grpclib.const.Handler(self.GetLatestTabularData, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.GetLatestTabularDataRequest, app.data.v1.data_pb2.GetLatestTabularDataResponse), '/viam.app.data.v1.DataService/BinaryDataByFilter': grpclib.const.Handler(self.BinaryDataByFilter, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.BinaryDataByFilterRequest, app.data.v1.data_pb2.BinaryDataByFilterResponse), '/viam.app.data.v1.DataService/BinaryDataByIDs': grpclib.const.Handler(self.BinaryDataByIDs, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.BinaryDataByIDsRequest, app.data.v1.data_pb2.BinaryDataByIDsResponse), '/viam.app.data.v1.DataService/DeleteTabularData': grpclib.const.Handler(self.DeleteTabularData, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.DeleteTabularDataRequest, app.data.v1.data_pb2.DeleteTabularDataResponse), '/viam.app.data.v1.DataService/DeleteBinaryDataByFilter': grpclib.const.Handler(self.DeleteBinaryDataByFilter, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.DeleteBinaryDataByFilterRequest, app.data.v1.data_pb2.DeleteBinaryDataByFilterResponse), '/viam.app.data.v1.DataService/DeleteBinaryDataByIDs': grpclib.const.Handler(self.DeleteBinaryDataByIDs, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.DeleteBinaryDataByIDsRequest, app.data.v1.data_pb2.DeleteBinaryDataByIDsResponse), '/viam.app.data.v1.DataService/AddTagsToBinaryDataByIDs': grpclib.const.Handler(self.AddTagsToBinaryDataByIDs, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.AddTagsToBinaryDataByIDsRequest, app.data.v1.data_pb2.AddTagsToBinaryDataByIDsResponse), '/viam.app.data.v1.DataService/AddTagsToBinaryDataByFilter': grpclib.const.Handler(self.AddTagsToBinaryDataByFilter, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.AddTagsToBinaryDataByFilterRequest, app.data.v1.data_pb2.AddTagsToBinaryDataByFilterResponse), '/viam.app.data.v1.DataService/RemoveTagsFromBinaryDataByIDs': grpclib.const.Handler(self.RemoveTagsFromBinaryDataByIDs, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.RemoveTagsFromBinaryDataByIDsRequest, app.data.v1.data_pb2.RemoveTagsFromBinaryDataByIDsResponse), '/viam.app.data.v1.DataService/RemoveTagsFromBinaryDataByFilter': grpclib.const.Handler(self.RemoveTagsFromBinaryDataByFilter, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.RemoveTagsFromBinaryDataByFilterRequest, app.data.v1.data_pb2.RemoveTagsFromBinaryDataByFilterResponse), '/viam.app.data.v1.DataService/TagsByFilter': grpclib.const.Handler(self.TagsByFilter, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.TagsByFilterRequest, app.data.v1.data_pb2.TagsByFilterResponse), '/viam.app.data.v1.DataService/AddBoundingBoxToImageByID': grpclib.const.Handler(self.AddBoundingBoxToImageByID, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.AddBoundingBoxToImageByIDRequest, app.data.v1.data_pb2.AddBoundingBoxToImageByIDResponse), '/viam.app.data.v1.DataService/RemoveBoundingBoxFromImageByID': grpclib.const.Handler(self.RemoveBoundingBoxFromImageByID, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.RemoveBoundingBoxFromImageByIDRequest, app.data.v1.data_pb2.RemoveBoundingBoxFromImageByIDResponse), '/viam.app.data.v1.DataService/BoundingBoxLabelsByFilter': grpclib.const.Handler(self.BoundingBoxLabelsByFilter, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.BoundingBoxLabelsByFilterRequest, app.data.v1.data_pb2.BoundingBoxLabelsByFilterResponse), '/viam.app.data.v1.DataService/UpdateBoundingBox': grpclib.const.Handler(self.UpdateBoundingBox, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.UpdateBoundingBoxRequest, app.data.v1.data_pb2.UpdateBoundingBoxResponse), '/viam.app.data.v1.DataService/GetDatabaseConnection': grpclib.const.Handler(self.GetDatabaseConnection, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.GetDatabaseConnectionRequest, app.data.v1.data_pb2.GetDatabaseConnectionResponse), '/viam.app.data.v1.DataService/ConfigureDatabaseUser': grpclib.const.Handler(self.ConfigureDatabaseUser, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.ConfigureDatabaseUserRequest, app.data.v1.data_pb2.ConfigureDatabaseUserResponse), '/viam.app.data.v1.DataService/AddBinaryDataToDatasetByIDs': grpclib.const.Handler(self.AddBinaryDataToDatasetByIDs, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.AddBinaryDataToDatasetByIDsRequest, app.data.v1.data_pb2.AddBinaryDataToDatasetByIDsResponse), '/viam.app.data.v1.DataService/RemoveBinaryDataFromDatasetByIDs': grpclib.const.Handler(self.RemoveBinaryDataFromDatasetByIDs, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsRequest, app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsResponse)}
144
+ return {'/viam.app.data.v1.DataService/TabularDataByFilter': grpclib.const.Handler(self.TabularDataByFilter, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.TabularDataByFilterRequest, app.data.v1.data_pb2.TabularDataByFilterResponse), '/viam.app.data.v1.DataService/TabularDataBySQL': grpclib.const.Handler(self.TabularDataBySQL, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.TabularDataBySQLRequest, app.data.v1.data_pb2.TabularDataBySQLResponse), '/viam.app.data.v1.DataService/TabularDataByMQL': grpclib.const.Handler(self.TabularDataByMQL, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.TabularDataByMQLRequest, app.data.v1.data_pb2.TabularDataByMQLResponse), '/viam.app.data.v1.DataService/ExportTabularData': grpclib.const.Handler(self.ExportTabularData, grpclib.const.Cardinality.UNARY_STREAM, app.data.v1.data_pb2.ExportTabularDataRequest, app.data.v1.data_pb2.ExportTabularDataResponse), '/viam.app.data.v1.DataService/GetLatestTabularData': grpclib.const.Handler(self.GetLatestTabularData, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.GetLatestTabularDataRequest, app.data.v1.data_pb2.GetLatestTabularDataResponse), '/viam.app.data.v1.DataService/BinaryDataByFilter': grpclib.const.Handler(self.BinaryDataByFilter, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.BinaryDataByFilterRequest, app.data.v1.data_pb2.BinaryDataByFilterResponse), '/viam.app.data.v1.DataService/BinaryDataByIDs': grpclib.const.Handler(self.BinaryDataByIDs, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.BinaryDataByIDsRequest, app.data.v1.data_pb2.BinaryDataByIDsResponse), '/viam.app.data.v1.DataService/DeleteTabularData': grpclib.const.Handler(self.DeleteTabularData, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.DeleteTabularDataRequest, app.data.v1.data_pb2.DeleteTabularDataResponse), '/viam.app.data.v1.DataService/DeleteBinaryDataByFilter': grpclib.const.Handler(self.DeleteBinaryDataByFilter, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.DeleteBinaryDataByFilterRequest, app.data.v1.data_pb2.DeleteBinaryDataByFilterResponse), '/viam.app.data.v1.DataService/DeleteBinaryDataByIDs': grpclib.const.Handler(self.DeleteBinaryDataByIDs, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.DeleteBinaryDataByIDsRequest, app.data.v1.data_pb2.DeleteBinaryDataByIDsResponse), '/viam.app.data.v1.DataService/AddTagsToBinaryDataByIDs': grpclib.const.Handler(self.AddTagsToBinaryDataByIDs, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.AddTagsToBinaryDataByIDsRequest, app.data.v1.data_pb2.AddTagsToBinaryDataByIDsResponse), '/viam.app.data.v1.DataService/AddTagsToBinaryDataByFilter': grpclib.const.Handler(self.AddTagsToBinaryDataByFilter, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.AddTagsToBinaryDataByFilterRequest, app.data.v1.data_pb2.AddTagsToBinaryDataByFilterResponse), '/viam.app.data.v1.DataService/RemoveTagsFromBinaryDataByIDs': grpclib.const.Handler(self.RemoveTagsFromBinaryDataByIDs, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.RemoveTagsFromBinaryDataByIDsRequest, app.data.v1.data_pb2.RemoveTagsFromBinaryDataByIDsResponse), '/viam.app.data.v1.DataService/RemoveTagsFromBinaryDataByFilter': grpclib.const.Handler(self.RemoveTagsFromBinaryDataByFilter, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.RemoveTagsFromBinaryDataByFilterRequest, app.data.v1.data_pb2.RemoveTagsFromBinaryDataByFilterResponse), '/viam.app.data.v1.DataService/TagsByFilter': grpclib.const.Handler(self.TagsByFilter, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.TagsByFilterRequest, app.data.v1.data_pb2.TagsByFilterResponse), '/viam.app.data.v1.DataService/AddBoundingBoxToImageByID': grpclib.const.Handler(self.AddBoundingBoxToImageByID, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.AddBoundingBoxToImageByIDRequest, app.data.v1.data_pb2.AddBoundingBoxToImageByIDResponse), '/viam.app.data.v1.DataService/RemoveBoundingBoxFromImageByID': grpclib.const.Handler(self.RemoveBoundingBoxFromImageByID, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.RemoveBoundingBoxFromImageByIDRequest, app.data.v1.data_pb2.RemoveBoundingBoxFromImageByIDResponse), '/viam.app.data.v1.DataService/BoundingBoxLabelsByFilter': grpclib.const.Handler(self.BoundingBoxLabelsByFilter, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.BoundingBoxLabelsByFilterRequest, app.data.v1.data_pb2.BoundingBoxLabelsByFilterResponse), '/viam.app.data.v1.DataService/UpdateBoundingBox': grpclib.const.Handler(self.UpdateBoundingBox, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.UpdateBoundingBoxRequest, app.data.v1.data_pb2.UpdateBoundingBoxResponse), '/viam.app.data.v1.DataService/GetDatabaseConnection': grpclib.const.Handler(self.GetDatabaseConnection, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.GetDatabaseConnectionRequest, app.data.v1.data_pb2.GetDatabaseConnectionResponse), '/viam.app.data.v1.DataService/ConfigureDatabaseUser': grpclib.const.Handler(self.ConfigureDatabaseUser, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.ConfigureDatabaseUserRequest, app.data.v1.data_pb2.ConfigureDatabaseUserResponse), '/viam.app.data.v1.DataService/AddBinaryDataToDatasetByIDs': grpclib.const.Handler(self.AddBinaryDataToDatasetByIDs, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.AddBinaryDataToDatasetByIDsRequest, app.data.v1.data_pb2.AddBinaryDataToDatasetByIDsResponse), '/viam.app.data.v1.DataService/RemoveBinaryDataFromDatasetByIDs': grpclib.const.Handler(self.RemoveBinaryDataFromDatasetByIDs, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsRequest, app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsResponse), '/viam.app.data.v1.DataService/CreateIndex': grpclib.const.Handler(self.CreateIndex, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.CreateIndexRequest, app.data.v1.data_pb2.CreateIndexResponse), '/viam.app.data.v1.DataService/ListIndexes': grpclib.const.Handler(self.ListIndexes, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.ListIndexesRequest, app.data.v1.data_pb2.ListIndexesResponse), '/viam.app.data.v1.DataService/DeleteIndex': grpclib.const.Handler(self.DeleteIndex, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.DeleteIndexRequest, app.data.v1.data_pb2.DeleteIndexResponse), '/viam.app.data.v1.DataService/CreateSavedQuery': grpclib.const.Handler(self.CreateSavedQuery, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.CreateSavedQueryRequest, app.data.v1.data_pb2.CreateSavedQueryResponse), '/viam.app.data.v1.DataService/UpdateSavedQuery': grpclib.const.Handler(self.UpdateSavedQuery, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.UpdateSavedQueryRequest, app.data.v1.data_pb2.UpdateSavedQueryResponse), '/viam.app.data.v1.DataService/GetSavedQuery': grpclib.const.Handler(self.GetSavedQuery, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.GetSavedQueryRequest, app.data.v1.data_pb2.GetSavedQueryResponse), '/viam.app.data.v1.DataService/DeleteSavedQuery': grpclib.const.Handler(self.DeleteSavedQuery, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.DeleteSavedQueryRequest, app.data.v1.data_pb2.DeleteSavedQueryResponse), '/viam.app.data.v1.DataService/ListSavedQueries': grpclib.const.Handler(self.ListSavedQueries, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.ListSavedQueriesRequest, app.data.v1.data_pb2.ListSavedQueriesResponse), '/viam.app.data.v1.DataService/CreateBinaryDataSignedURL': grpclib.const.Handler(self.CreateBinaryDataSignedURL, grpclib.const.Cardinality.UNARY_UNARY, app.data.v1.data_pb2.CreateBinaryDataSignedURLRequest, app.data.v1.data_pb2.CreateBinaryDataSignedURLResponse)}
109
145
 
110
146
  class UnimplementedDataServiceBase(DataServiceBase):
111
147
 
@@ -178,6 +214,33 @@ class UnimplementedDataServiceBase(DataServiceBase):
178
214
  async def RemoveBinaryDataFromDatasetByIDs(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsRequest, app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsResponse]') -> None:
179
215
  raise grpclib.exceptions.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
180
216
 
217
+ async def CreateIndex(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.CreateIndexRequest, app.data.v1.data_pb2.CreateIndexResponse]') -> None:
218
+ raise grpclib.exceptions.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
219
+
220
+ async def ListIndexes(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.ListIndexesRequest, app.data.v1.data_pb2.ListIndexesResponse]') -> None:
221
+ raise grpclib.exceptions.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
222
+
223
+ async def DeleteIndex(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.DeleteIndexRequest, app.data.v1.data_pb2.DeleteIndexResponse]') -> None:
224
+ raise grpclib.exceptions.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
225
+
226
+ async def CreateSavedQuery(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.CreateSavedQueryRequest, app.data.v1.data_pb2.CreateSavedQueryResponse]') -> None:
227
+ raise grpclib.exceptions.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
228
+
229
+ async def UpdateSavedQuery(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.UpdateSavedQueryRequest, app.data.v1.data_pb2.UpdateSavedQueryResponse]') -> None:
230
+ raise grpclib.exceptions.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
231
+
232
+ async def GetSavedQuery(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.GetSavedQueryRequest, app.data.v1.data_pb2.GetSavedQueryResponse]') -> None:
233
+ raise grpclib.exceptions.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
234
+
235
+ async def DeleteSavedQuery(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.DeleteSavedQueryRequest, app.data.v1.data_pb2.DeleteSavedQueryResponse]') -> None:
236
+ raise grpclib.exceptions.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
237
+
238
+ async def ListSavedQueries(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.ListSavedQueriesRequest, app.data.v1.data_pb2.ListSavedQueriesResponse]') -> None:
239
+ raise grpclib.exceptions.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
240
+
241
+ async def CreateBinaryDataSignedURL(self, stream: 'grpclib.server.Stream[app.data.v1.data_pb2.CreateBinaryDataSignedURLRequest, app.data.v1.data_pb2.CreateBinaryDataSignedURLResponse]') -> None:
242
+ raise grpclib.exceptions.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
243
+
181
244
  class DataServiceStub:
182
245
 
183
246
  def __init__(self, channel: grpclib.client.Channel) -> None:
@@ -203,4 +266,13 @@ class DataServiceStub:
203
266
  self.GetDatabaseConnection = grpclib.client.UnaryUnaryMethod(channel, '/viam.app.data.v1.DataService/GetDatabaseConnection', app.data.v1.data_pb2.GetDatabaseConnectionRequest, app.data.v1.data_pb2.GetDatabaseConnectionResponse)
204
267
  self.ConfigureDatabaseUser = grpclib.client.UnaryUnaryMethod(channel, '/viam.app.data.v1.DataService/ConfigureDatabaseUser', app.data.v1.data_pb2.ConfigureDatabaseUserRequest, app.data.v1.data_pb2.ConfigureDatabaseUserResponse)
205
268
  self.AddBinaryDataToDatasetByIDs = grpclib.client.UnaryUnaryMethod(channel, '/viam.app.data.v1.DataService/AddBinaryDataToDatasetByIDs', app.data.v1.data_pb2.AddBinaryDataToDatasetByIDsRequest, app.data.v1.data_pb2.AddBinaryDataToDatasetByIDsResponse)
206
- self.RemoveBinaryDataFromDatasetByIDs = grpclib.client.UnaryUnaryMethod(channel, '/viam.app.data.v1.DataService/RemoveBinaryDataFromDatasetByIDs', app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsRequest, app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsResponse)
269
+ self.RemoveBinaryDataFromDatasetByIDs = grpclib.client.UnaryUnaryMethod(channel, '/viam.app.data.v1.DataService/RemoveBinaryDataFromDatasetByIDs', app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsRequest, app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsResponse)
270
+ self.CreateIndex = grpclib.client.UnaryUnaryMethod(channel, '/viam.app.data.v1.DataService/CreateIndex', app.data.v1.data_pb2.CreateIndexRequest, app.data.v1.data_pb2.CreateIndexResponse)
271
+ self.ListIndexes = grpclib.client.UnaryUnaryMethod(channel, '/viam.app.data.v1.DataService/ListIndexes', app.data.v1.data_pb2.ListIndexesRequest, app.data.v1.data_pb2.ListIndexesResponse)
272
+ self.DeleteIndex = grpclib.client.UnaryUnaryMethod(channel, '/viam.app.data.v1.DataService/DeleteIndex', app.data.v1.data_pb2.DeleteIndexRequest, app.data.v1.data_pb2.DeleteIndexResponse)
273
+ self.CreateSavedQuery = grpclib.client.UnaryUnaryMethod(channel, '/viam.app.data.v1.DataService/CreateSavedQuery', app.data.v1.data_pb2.CreateSavedQueryRequest, app.data.v1.data_pb2.CreateSavedQueryResponse)
274
+ self.UpdateSavedQuery = grpclib.client.UnaryUnaryMethod(channel, '/viam.app.data.v1.DataService/UpdateSavedQuery', app.data.v1.data_pb2.UpdateSavedQueryRequest, app.data.v1.data_pb2.UpdateSavedQueryResponse)
275
+ self.GetSavedQuery = grpclib.client.UnaryUnaryMethod(channel, '/viam.app.data.v1.DataService/GetSavedQuery', app.data.v1.data_pb2.GetSavedQueryRequest, app.data.v1.data_pb2.GetSavedQueryResponse)
276
+ self.DeleteSavedQuery = grpclib.client.UnaryUnaryMethod(channel, '/viam.app.data.v1.DataService/DeleteSavedQuery', app.data.v1.data_pb2.DeleteSavedQueryRequest, app.data.v1.data_pb2.DeleteSavedQueryResponse)
277
+ self.ListSavedQueries = grpclib.client.UnaryUnaryMethod(channel, '/viam.app.data.v1.DataService/ListSavedQueries', app.data.v1.data_pb2.ListSavedQueriesRequest, app.data.v1.data_pb2.ListSavedQueriesResponse)
278
+ self.CreateBinaryDataSignedURL = grpclib.client.UnaryUnaryMethod(channel, '/viam.app.data.v1.DataService/CreateBinaryDataSignedURL', app.data.v1.data_pb2.CreateBinaryDataSignedURLRequest, app.data.v1.data_pb2.CreateBinaryDataSignedURLResponse)