viam-sdk 0.25.2__py3-none-linux_armv7l.whl → 0.62.0__py3-none-linux_armv7l.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.
Files changed (328) hide show
  1. viam/app/_logs.py +3 -6
  2. viam/app/app_client.py +606 -262
  3. viam/app/billing_client.py +60 -18
  4. viam/app/data_client.py +1086 -315
  5. viam/app/ml_training_client.py +51 -48
  6. viam/app/provisioning_client.py +3 -5
  7. viam/app/viam_client.py +105 -11
  8. viam/components/arm/__init__.py +1 -25
  9. viam/components/arm/arm.py +21 -22
  10. viam/components/arm/client.py +27 -30
  11. viam/components/arm/service.py +3 -3
  12. viam/components/audio_in/__init__.py +24 -0
  13. viam/components/audio_in/audio_in.py +74 -0
  14. viam/components/audio_in/client.py +76 -0
  15. viam/components/audio_in/service.py +83 -0
  16. viam/components/audio_input/__init__.py +1 -1
  17. viam/components/audio_input/audio_input.py +4 -3
  18. viam/components/audio_input/client.py +19 -8
  19. viam/components/audio_input/service.py +10 -0
  20. viam/components/audio_out/__init__.py +21 -0
  21. viam/components/audio_out/audio_out.py +72 -0
  22. viam/components/audio_out/client.py +67 -0
  23. viam/components/audio_out/service.py +63 -0
  24. viam/components/base/__init__.py +2 -10
  25. viam/components/base/base.py +20 -20
  26. viam/components/base/client.py +27 -30
  27. viam/components/board/__init__.py +2 -25
  28. viam/components/board/board.py +39 -77
  29. viam/components/board/client.py +39 -73
  30. viam/components/button/__init__.py +10 -0
  31. viam/components/button/button.py +41 -0
  32. viam/components/button/client.py +52 -0
  33. viam/components/button/service.py +46 -0
  34. viam/components/camera/__init__.py +1 -1
  35. viam/components/camera/camera.py +31 -22
  36. viam/components/camera/client.py +30 -20
  37. viam/components/camera/service.py +14 -12
  38. viam/components/component_base.py +10 -7
  39. viam/components/encoder/__init__.py +1 -1
  40. viam/components/encoder/client.py +15 -16
  41. viam/components/encoder/encoder.py +9 -9
  42. viam/components/gantry/__init__.py +1 -13
  43. viam/components/gantry/client.py +41 -28
  44. viam/components/gantry/gantry.py +48 -17
  45. viam/components/gantry/service.py +21 -5
  46. viam/components/generic/__init__.py +1 -1
  47. viam/components/generic/client.py +11 -7
  48. viam/components/generic/generic.py +3 -3
  49. viam/components/gripper/__init__.py +3 -12
  50. viam/components/gripper/client.py +43 -20
  51. viam/components/gripper/gripper.py +87 -12
  52. viam/components/gripper/service.py +32 -3
  53. viam/components/input/__init__.py +1 -14
  54. viam/components/input/client.py +22 -23
  55. viam/components/input/input.py +18 -12
  56. viam/components/motor/__init__.py +1 -21
  57. viam/components/motor/client.py +36 -42
  58. viam/components/motor/motor.py +24 -24
  59. viam/components/movement_sensor/__init__.py +1 -1
  60. viam/components/movement_sensor/client.py +33 -40
  61. viam/components/movement_sensor/movement_sensor.py +12 -12
  62. viam/components/pose_tracker/__init__.py +1 -1
  63. viam/components/pose_tracker/client.py +9 -8
  64. viam/components/pose_tracker/pose_tracker.py +2 -2
  65. viam/components/power_sensor/__init__.py +1 -1
  66. viam/components/power_sensor/client.py +15 -18
  67. viam/components/power_sensor/power_sensor.py +12 -12
  68. viam/components/sensor/__init__.py +1 -1
  69. viam/components/sensor/client.py +9 -8
  70. viam/components/sensor/sensor.py +5 -5
  71. viam/components/servo/__init__.py +1 -13
  72. viam/components/servo/client.py +18 -18
  73. viam/components/servo/servo.py +12 -12
  74. viam/components/switch/__init__.py +10 -0
  75. viam/components/switch/client.py +83 -0
  76. viam/components/switch/service.py +72 -0
  77. viam/components/switch/switch.py +95 -0
  78. viam/gen/app/agent/v1/agent_pb2.py +40 -29
  79. viam/gen/app/agent/v1/agent_pb2.pyi +73 -11
  80. viam/gen/app/cloudslam/v1/cloud_slam_pb2.py +45 -42
  81. viam/gen/app/data/v1/data_grpc.py +98 -2
  82. viam/gen/app/data/v1/data_pb2.py +238 -119
  83. viam/gen/app/data/v1/data_pb2.pyi +804 -34
  84. viam/gen/app/datapipelines/v1/data_pipelines_grpc.py +84 -0
  85. viam/gen/app/datapipelines/v1/data_pipelines_pb2.py +57 -0
  86. viam/gen/app/datapipelines/v1/data_pipelines_pb2.pyi +387 -0
  87. viam/gen/app/dataset/v1/dataset_grpc.py +10 -2
  88. viam/gen/app/dataset/v1/dataset_pb2.py +38 -31
  89. viam/gen/app/dataset/v1/dataset_pb2.pyi +36 -1
  90. viam/gen/app/datasync/v1/data_sync_grpc.py +1 -1
  91. viam/gen/app/datasync/v1/data_sync_pb2.py +61 -51
  92. viam/gen/app/datasync/v1/data_sync_pb2.pyi +52 -12
  93. viam/gen/app/mlinference/__init__.py +0 -0
  94. viam/gen/app/mlinference/v1/__init__.py +0 -0
  95. viam/gen/app/mlinference/v1/ml_inference_grpc.py +28 -0
  96. viam/gen/app/mlinference/v1/ml_inference_pb2.py +23 -0
  97. viam/gen/app/mlinference/v1/ml_inference_pb2.pyi +63 -0
  98. viam/gen/app/mltraining/v1/ml_training_grpc.py +18 -2
  99. viam/gen/app/mltraining/v1/ml_training_pb2.py +134 -101
  100. viam/gen/app/mltraining/v1/ml_training_pb2.pyi +193 -7
  101. viam/gen/app/packages/v1/packages_pb2.py +43 -40
  102. viam/gen/app/v1/app_grpc.py +290 -2
  103. viam/gen/app/v1/app_pb2.py +670 -453
  104. viam/gen/app/v1/app_pb2.pyi +3133 -947
  105. viam/gen/app/v1/billing_grpc.py +34 -2
  106. viam/gen/app/v1/billing_pb2.py +94 -35
  107. viam/gen/app/v1/billing_pb2.pyi +314 -61
  108. viam/gen/app/v1/end_user_pb2.py +50 -29
  109. viam/gen/app/v1/robot_pb2.py +120 -111
  110. viam/gen/app/v1/robot_pb2.pyi +137 -15
  111. viam/gen/common/v1/common_pb2.py +86 -66
  112. viam/gen/common/v1/common_pb2.pyi +184 -8
  113. viam/gen/component/arm/v1/arm_grpc.py +18 -2
  114. viam/gen/component/arm/v1/arm_pb2.py +68 -55
  115. viam/gen/component/arm/v1/arm_pb2.pyi +73 -3
  116. viam/gen/component/audioin/__init__.py +0 -0
  117. viam/gen/component/audioin/v1/__init__.py +0 -0
  118. viam/gen/component/audioin/v1/audioin_grpc.py +54 -0
  119. viam/gen/component/audioin/v1/audioin_pb2.py +34 -0
  120. viam/gen/component/audioin/v1/audioin_pb2.pyi +94 -0
  121. viam/gen/component/audioinput/v1/audioinput_pb2.py +35 -32
  122. viam/gen/component/audioout/__init__.py +0 -0
  123. viam/gen/component/audioout/v1/__init__.py +0 -0
  124. viam/gen/component/audioout/v1/audioout_grpc.py +54 -0
  125. viam/gen/component/audioout/v1/audioout_pb2.py +32 -0
  126. viam/gen/component/audioout/v1/audioout_pb2.pyi +47 -0
  127. viam/gen/component/base/v1/base_pb2.py +57 -54
  128. viam/gen/component/board/v1/board_pb2.py +93 -90
  129. viam/gen/component/button/__init__.py +0 -0
  130. viam/gen/component/button/v1/__init__.py +0 -0
  131. viam/gen/component/button/v1/button_grpc.py +38 -0
  132. viam/gen/component/button/v1/button_pb2.py +28 -0
  133. viam/gen/component/button/v1/button_pb2.pyi +39 -0
  134. viam/gen/component/camera/v1/camera_pb2.py +58 -55
  135. viam/gen/component/camera/v1/camera_pb2.pyi +31 -7
  136. viam/gen/component/encoder/v1/encoder_pb2.py +35 -32
  137. viam/gen/component/gantry/v1/gantry_grpc.py +9 -1
  138. viam/gen/component/gantry/v1/gantry_pb2.py +56 -51
  139. viam/gen/component/generic/v1/generic_pb2.py +15 -12
  140. viam/gen/component/gripper/v1/gripper_grpc.py +18 -2
  141. viam/gen/component/gripper/v1/gripper_pb2.py +48 -37
  142. viam/gen/component/gripper/v1/gripper_pb2.pyi +43 -1
  143. viam/gen/component/inputcontroller/v1/input_controller_pb2.py +45 -42
  144. viam/gen/component/motor/v1/motor_pb2.py +77 -74
  145. viam/gen/component/movementsensor/v1/movementsensor_pb2.py +69 -66
  146. viam/gen/component/posetracker/v1/pose_tracker_pb2.py +25 -22
  147. viam/gen/component/powersensor/v1/powersensor_pb2.py +33 -30
  148. viam/gen/component/sensor/v1/sensor_pb2.py +17 -14
  149. viam/gen/component/servo/v1/servo_pb2.py +41 -38
  150. viam/gen/component/switch/__init__.py +0 -0
  151. viam/gen/component/switch/v1/__init__.py +0 -0
  152. viam/gen/component/switch/v1/switch_grpc.py +54 -0
  153. viam/gen/component/switch/v1/switch_pb2.py +40 -0
  154. viam/gen/component/switch/v1/switch_pb2.pyi +116 -0
  155. viam/gen/component/testecho/v1/testecho_pb2.py +29 -26
  156. viam/gen/module/v1/module_pb2.py +36 -33
  157. viam/gen/module/v1/module_pb2.pyi +7 -2
  158. viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py +26 -23
  159. viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py +23 -20
  160. viam/gen/proto/rpc/v1/auth_pb2.py +27 -24
  161. viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py +35 -32
  162. viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py +62 -57
  163. viam/gen/proto/rpc/webrtc/v1/signaling_pb2.pyi +18 -4
  164. viam/gen/provisioning/v1/provisioning_grpc.py +10 -2
  165. viam/gen/provisioning/v1/provisioning_pb2.py +38 -31
  166. viam/gen/provisioning/v1/provisioning_pb2.pyi +20 -2
  167. viam/gen/robot/v1/robot_grpc.py +61 -29
  168. viam/gen/robot/v1/robot_pb2.py +186 -155
  169. viam/gen/robot/v1/robot_pb2.pyi +278 -59
  170. viam/gen/service/datamanager/v1/data_manager_grpc.py +11 -2
  171. viam/gen/service/datamanager/v1/data_manager_pb2.py +27 -17
  172. viam/gen/service/datamanager/v1/data_manager_pb2.pyi +47 -1
  173. viam/gen/service/discovery/__init__.py +0 -0
  174. viam/gen/service/discovery/v1/__init__.py +0 -0
  175. viam/gen/service/discovery/v1/discovery_grpc.py +39 -0
  176. viam/gen/service/discovery/v1/discovery_pb2.py +29 -0
  177. viam/gen/service/discovery/v1/discovery_pb2.pyi +51 -0
  178. viam/gen/service/generic/v1/generic_pb2.py +13 -10
  179. viam/gen/service/mlmodel/v1/mlmodel_pb2.py +75 -72
  180. viam/gen/service/motion/v1/motion_pb2.py +118 -85
  181. viam/gen/service/motion/v1/motion_pb2.pyi +130 -68
  182. viam/gen/service/navigation/v1/navigation_pb2.py +75 -72
  183. viam/gen/service/sensors/v1/sensors_pb2.py +59 -56
  184. viam/gen/service/shell/v1/shell_pb2.py +35 -32
  185. viam/gen/service/slam/v1/slam_pb2.py +43 -40
  186. viam/gen/service/slam/v1/slam_pb2.pyi +1 -1
  187. viam/gen/service/video/__init__.py +0 -0
  188. viam/gen/service/video/v1/__init__.py +0 -0
  189. viam/gen/service/video/v1/video_grpc.py +39 -0
  190. viam/gen/service/video/v1/video_pb2.py +29 -0
  191. viam/gen/service/video/v1/video_pb2.pyi +72 -0
  192. viam/gen/service/vision/v1/vision_pb2.py +60 -57
  193. viam/gen/service/vision/v1/vision_pb2.pyi +28 -3
  194. viam/gen/service/worldstatestore/__init__.py +0 -0
  195. viam/gen/service/worldstatestore/v1/__init__.py +0 -0
  196. viam/gen/service/worldstatestore/v1/world_state_store_grpc.py +55 -0
  197. viam/gen/service/worldstatestore/v1/world_state_store_pb2.py +39 -0
  198. viam/gen/service/worldstatestore/v1/world_state_store_pb2.pyi +171 -0
  199. viam/gen/stream/v1/stream_grpc.py +17 -1
  200. viam/gen/stream/v1/stream_pb2.py +34 -21
  201. viam/gen/stream/v1/stream_pb2.pyi +79 -1
  202. viam/gen/tagger/v1/tagger_pb2.py +9 -8
  203. viam/logging.py +77 -18
  204. viam/media/audio.py +28 -0
  205. viam/media/utils/pil/__init__.py +7 -3
  206. viam/media/video.py +80 -17
  207. viam/module/module.py +111 -38
  208. viam/module/resource_data_consumer.py +41 -0
  209. viam/module/service.py +9 -1
  210. viam/module/types.py +2 -4
  211. viam/proto/app/__init__.py +199 -0
  212. viam/proto/app/agent/__init__.py +5 -2
  213. viam/proto/app/billing.py +31 -4
  214. viam/proto/app/cloudslam/__init__.py +1 -0
  215. viam/proto/app/data/__init__.py +63 -0
  216. viam/proto/app/datapipelines/__init__.py +56 -0
  217. viam/proto/app/dataset/__init__.py +5 -0
  218. viam/proto/app/datasync/__init__.py +3 -0
  219. viam/proto/app/end_user.py +1 -0
  220. viam/proto/app/mlinference/__init__.py +15 -0
  221. viam/proto/app/mltraining/__init__.py +13 -0
  222. viam/proto/app/packages/__init__.py +1 -0
  223. viam/proto/app/robot.py +7 -0
  224. viam/proto/common/__init__.py +15 -0
  225. viam/proto/component/arm/__init__.py +7 -0
  226. viam/proto/component/audioin/__init__.py +16 -0
  227. viam/proto/component/audioinput/__init__.py +1 -0
  228. viam/proto/component/audioout/__init__.py +15 -0
  229. viam/proto/component/base/__init__.py +1 -0
  230. viam/proto/component/board/__init__.py +1 -0
  231. viam/proto/component/button/__init__.py +15 -0
  232. viam/proto/component/camera/__init__.py +1 -0
  233. viam/proto/component/encoder/__init__.py +1 -0
  234. viam/proto/component/gantry/__init__.py +1 -0
  235. viam/proto/component/generic/__init__.py +1 -0
  236. viam/proto/component/gripper/__init__.py +5 -0
  237. viam/proto/component/inputcontroller/__init__.py +1 -0
  238. viam/proto/component/motor/__init__.py +1 -0
  239. viam/proto/component/movementsensor/__init__.py +1 -0
  240. viam/proto/component/posetracker/__init__.py +1 -0
  241. viam/proto/component/powersensor/__init__.py +1 -0
  242. viam/proto/component/sensor/__init__.py +1 -0
  243. viam/proto/component/servo/__init__.py +1 -0
  244. viam/proto/component/switch/__init__.py +26 -0
  245. viam/proto/component/testecho/__init__.py +1 -0
  246. viam/proto/module/__init__.py +1 -0
  247. viam/proto/provisioning/__init__.py +5 -0
  248. viam/proto/robot/__init__.py +29 -8
  249. viam/proto/rpc/auth.py +1 -0
  250. viam/proto/rpc/examples/echo/__init__.py +1 -0
  251. viam/proto/rpc/examples/echoresource/__init__.py +1 -0
  252. viam/proto/rpc/webrtc/grpc.py +1 -0
  253. viam/proto/rpc/webrtc/signaling.py +3 -0
  254. viam/proto/service/datamanager/__init__.py +9 -1
  255. viam/proto/service/discovery/__init__.py +15 -0
  256. viam/proto/service/generic/__init__.py +1 -0
  257. viam/proto/service/mlmodel/__init__.py +1 -0
  258. viam/proto/service/motion/__init__.py +3 -0
  259. viam/proto/service/navigation/__init__.py +1 -0
  260. viam/proto/service/sensors/__init__.py +1 -0
  261. viam/proto/service/shell/__init__.py +1 -0
  262. viam/proto/service/slam/__init__.py +1 -0
  263. viam/proto/service/video/__init__.py +15 -0
  264. viam/proto/service/vision/__init__.py +1 -0
  265. viam/proto/service/worldstatestore/__init__.py +32 -0
  266. viam/proto/stream/__init__.py +11 -0
  267. viam/py.typed +0 -0
  268. viam/resource/base.py +12 -8
  269. viam/resource/easy_resource.py +24 -13
  270. viam/resource/manager.py +6 -5
  271. viam/resource/registry.py +39 -51
  272. viam/resource/rpc_client_base.py +33 -1
  273. viam/resource/types.py +13 -14
  274. viam/robot/client.py +190 -122
  275. viam/robot/service.py +2 -50
  276. viam/rpc/dial.py +54 -4
  277. viam/rpc/libviam_rust_utils.so +0 -0
  278. viam/rpc/server.py +25 -11
  279. viam/rpc/types.py +2 -4
  280. viam/services/discovery/__init__.py +12 -0
  281. viam/services/discovery/client.py +55 -0
  282. viam/services/discovery/discovery.py +52 -0
  283. viam/services/discovery/service.py +43 -0
  284. viam/services/generic/__init__.py +1 -1
  285. viam/services/generic/client.py +8 -5
  286. viam/services/generic/generic.py +2 -2
  287. viam/services/mlmodel/__init__.py +1 -1
  288. viam/services/mlmodel/client.py +17 -7
  289. viam/services/mlmodel/mlmodel.py +23 -12
  290. viam/services/mlmodel/service.py +5 -2
  291. viam/services/mlmodel/utils.py +11 -1
  292. viam/services/motion/__init__.py +2 -2
  293. viam/services/motion/client.py +32 -32
  294. viam/services/motion/motion.py +66 -62
  295. viam/services/navigation/__init__.py +1 -1
  296. viam/services/navigation/client.py +30 -20
  297. viam/services/navigation/navigation.py +23 -23
  298. viam/services/service_base.py +13 -9
  299. viam/services/service_client_base.py +3 -3
  300. viam/services/slam/__init__.py +1 -1
  301. viam/services/slam/client.py +15 -10
  302. viam/services/slam/slam.py +11 -11
  303. viam/services/vision/__init__.py +1 -1
  304. viam/services/vision/client.py +31 -24
  305. viam/services/vision/service.py +8 -8
  306. viam/services/vision/vision.py +36 -53
  307. viam/services/worldstatestore/__init__.py +18 -0
  308. viam/services/worldstatestore/client.py +94 -0
  309. viam/services/worldstatestore/service.py +55 -0
  310. viam/services/worldstatestore/worldstatestore.py +90 -0
  311. viam/sessions_client.py +115 -46
  312. viam/streams.py +3 -6
  313. viam/utils.py +44 -14
  314. viam/version_metadata.py +4 -0
  315. {viam_sdk-0.25.2.dist-info → viam_sdk-0.62.0.dist-info}/METADATA +27 -28
  316. viam_sdk-0.62.0.dist-info/RECORD +514 -0
  317. {viam_sdk-0.25.2.dist-info → viam_sdk-0.62.0.dist-info}/WHEEL +1 -1
  318. viam/gen/proto/rpc/examples/fileupload/v1/fileupload_grpc.py +0 -27
  319. viam/gen/proto/rpc/examples/fileupload/v1/fileupload_pb2.py +0 -18
  320. viam/gen/proto/rpc/examples/fileupload/v1/fileupload_pb2.pyi +0 -45
  321. viam/proto/rpc/examples/fileupload/__init__.py +0 -18
  322. viam/services/sensors/__init__.py +0 -5
  323. viam/services/sensors/client.py +0 -65
  324. viam_sdk-0.25.2.dist-info/LICENSE +0 -202
  325. viam_sdk-0.25.2.dist-info/RECORD +0 -442
  326. /viam/gen/{proto/rpc/examples/fileupload → app/datapipelines}/__init__.py +0 -0
  327. /viam/gen/{proto/rpc/examples/fileupload → app/datapipelines}/v1/__init__.py +0 -0
  328. /LICENSE → /viam_sdk-0.62.0.dist-info/licenses/LICENSE +0 -0
@@ -26,12 +26,11 @@ class PoseTrackerClient(PoseTracker, ReconfigurableResourceRPCClientBase):
26
26
  *,
27
27
  extra: Optional[Mapping[str, Any]] = None,
28
28
  timeout: Optional[float] = None,
29
- **__,
29
+ **kwargs,
30
30
  ) -> Dict[str, PoseInFrame]:
31
- if extra is None:
32
- extra = {}
31
+ md = kwargs.get("metadata", self.Metadata()).proto
33
32
  request = GetPosesRequest(name=self.name, body_names=body_names, extra=dict_to_struct(extra))
34
- response: GetPosesResponse = await self.client.GetPoses(request, timeout=timeout)
33
+ response: GetPosesResponse = await self.client.GetPoses(request, timeout=timeout, metadata=md)
35
34
  return {key: response.body_poses[key] for key in response.body_poses.keys()}
36
35
 
37
36
  async def do_command(
@@ -39,11 +38,13 @@ class PoseTrackerClient(PoseTracker, ReconfigurableResourceRPCClientBase):
39
38
  command: Mapping[str, ValueTypes],
40
39
  *,
41
40
  timeout: Optional[float] = None,
42
- **__,
41
+ **kwargs,
43
42
  ) -> Mapping[str, ValueTypes]:
43
+ md = kwargs.get("metadata", self.Metadata()).proto
44
44
  request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
45
- response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout)
45
+ response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
46
46
  return struct_to_dict(response.result)
47
47
 
48
- async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
49
- return await get_geometries(self.client, self.name, extra, timeout)
48
+ async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
49
+ md = kwargs.get("metadata", self.Metadata())
50
+ return await get_geometries(self.client, self.name, extra, timeout, md)
@@ -2,7 +2,7 @@ import abc
2
2
  from typing import Any, Dict, Final, List, Mapping, Optional
3
3
 
4
4
  from viam.proto.common import PoseInFrame
5
- from viam.resource.types import RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, Subtype
5
+ from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
6
6
 
7
7
  from ..component_base import ComponentBase
8
8
 
@@ -16,7 +16,7 @@ class PoseTracker(ComponentBase):
16
16
  overridden, it must call the ``super().__init__()`` function.
17
17
  """
18
18
 
19
- SUBTYPE: Final = Subtype( # pyright: ignore [reportIncompatibleVariableOverride]
19
+ API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
20
20
  RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "pose_tracker"
21
21
  )
22
22
 
@@ -8,7 +8,7 @@ __all__ = [
8
8
  "PowerSensor",
9
9
  ]
10
10
 
11
- Registry.register_subtype(
11
+ Registry.register_api(
12
12
  ResourceRegistration(
13
13
  PowerSensor,
14
14
  PowerSensorRPCService,
@@ -30,12 +30,11 @@ class PowerSensorClient(PowerSensor, ReconfigurableResourceRPCClientBase):
30
30
  *,
31
31
  extra: Optional[Dict[str, Any]] = None,
32
32
  timeout: Optional[float] = None,
33
- **__,
33
+ **kwargs,
34
34
  ) -> Tuple[float, bool]:
35
- if extra is None:
36
- extra = {}
35
+ md = kwargs.get("metadata", self.Metadata()).proto
37
36
  request = GetVoltageRequest(name=self.name, extra=dict_to_struct(extra))
38
- response: GetVoltageResponse = await self.client.GetVoltage(request, timeout=timeout)
37
+ response: GetVoltageResponse = await self.client.GetVoltage(request, timeout=timeout, metadata=md)
39
38
  return response.volts, response.is_ac
40
39
 
41
40
  async def get_current(
@@ -43,12 +42,11 @@ class PowerSensorClient(PowerSensor, ReconfigurableResourceRPCClientBase):
43
42
  *,
44
43
  extra: Optional[Dict[str, Any]] = None,
45
44
  timeout: Optional[float] = None,
46
- **__,
45
+ **kwargs,
47
46
  ) -> Tuple[float, bool]:
48
- if extra is None:
49
- extra = {}
47
+ md = kwargs.get("metadata", self.Metadata()).proto
50
48
  request = GetCurrentRequest(name=self.name, extra=dict_to_struct(extra))
51
- response: GetCurrentResponse = await self.client.GetCurrent(request, timeout=timeout)
49
+ response: GetCurrentResponse = await self.client.GetCurrent(request, timeout=timeout, metadata=md)
52
50
  return response.amperes, response.is_ac
53
51
 
54
52
  async def get_power(
@@ -56,12 +54,11 @@ class PowerSensorClient(PowerSensor, ReconfigurableResourceRPCClientBase):
56
54
  *,
57
55
  extra: Optional[Dict[str, Any]] = None,
58
56
  timeout: Optional[float] = None,
59
- **__,
57
+ **kwargs,
60
58
  ) -> float:
61
- if extra is None:
62
- extra = {}
59
+ md = kwargs.get("metadata", self.Metadata()).proto
63
60
  request = GetPowerRequest(name=self.name, extra=dict_to_struct(extra))
64
- response: GetPowerResponse = await self.client.GetPower(request, timeout=timeout)
61
+ response: GetPowerResponse = await self.client.GetPower(request, timeout=timeout, metadata=md)
65
62
  return response.watts
66
63
 
67
64
  async def get_readings(
@@ -69,12 +66,11 @@ class PowerSensorClient(PowerSensor, ReconfigurableResourceRPCClientBase):
69
66
  *,
70
67
  extra: Optional[Dict[str, Any]] = None,
71
68
  timeout: Optional[float] = None,
72
- **__,
69
+ **kwargs,
73
70
  ) -> Mapping[str, SensorReading]:
74
- if extra is None:
75
- extra = {}
71
+ md = kwargs.get("metadata", self.Metadata()).proto
76
72
  request = GetReadingsRequest(name=self.name, extra=dict_to_struct(extra))
77
- response: GetReadingsResponse = await self.client.GetReadings(request, timeout=timeout)
73
+ response: GetReadingsResponse = await self.client.GetReadings(request, timeout=timeout, metadata=md)
78
74
  return sensor_readings_value_to_native(response.readings)
79
75
 
80
76
  async def do_command(
@@ -82,8 +78,9 @@ class PowerSensorClient(PowerSensor, ReconfigurableResourceRPCClientBase):
82
78
  command: Mapping[str, ValueTypes],
83
79
  *,
84
80
  timeout: Optional[float] = None,
85
- **__,
81
+ **kwargs,
86
82
  ) -> Mapping[str, ValueTypes]:
83
+ md = kwargs.get("metadata", self.Metadata()).proto
87
84
  request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
88
- response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout)
85
+ response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
89
86
  return struct_to_dict(response.result)
@@ -2,7 +2,7 @@ import abc
2
2
  from typing import Any, Dict, Final, Mapping, Optional, Tuple
3
3
 
4
4
  from viam.components.component_base import ComponentBase
5
- from viam.resource.types import RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, Subtype
5
+ from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
6
6
  from viam.utils import SensorReading
7
7
 
8
8
 
@@ -16,10 +16,10 @@ class PowerSensor(ComponentBase):
16
16
 
17
17
  from viam.components.power_sensor import PowerSensor
18
18
 
19
- For more information, see `Power Sensor component <https://docs.viam.com/components/power-sensor/>`_.
19
+ For more information, see `Power Sensor component <https://docs.viam.com/dev/reference/apis/components/power-sensor/>`_.
20
20
  """
21
21
 
22
- SUBTYPE: Final = Subtype( # pyright: ignore [reportIncompatibleVariableOverride]
22
+ API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
23
23
  RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "power_sensor"
24
24
  )
25
25
 
@@ -29,7 +29,7 @@ class PowerSensor(ComponentBase):
29
29
 
30
30
  ::
31
31
 
32
- my_power_sensor = PowerSensor.from_robot(robot=robot, name='my_power_sensor')
32
+ my_power_sensor = PowerSensor.from_robot(robot=machine, name='my_power_sensor')
33
33
 
34
34
  # Get the voltage reading from the power sensor
35
35
  voltage, is_ac = await my_power_sensor.get_voltage()
@@ -39,7 +39,7 @@ class PowerSensor(ComponentBase):
39
39
  Tuple[float, bool]: A float representing the voltage reading in V. A bool indicating whether the voltage is AC (`true`) or DC
40
40
  (`false`).
41
41
 
42
- For more information, see `Power Sensor component <https://docs.viam.com/components/power-sensor/>`_.
42
+ For more information, see `Power Sensor component <https://docs.viam.com/dev/reference/apis/components/power-sensor/#getvoltage>`_.
43
43
  """
44
44
  ...
45
45
 
@@ -49,7 +49,7 @@ class PowerSensor(ComponentBase):
49
49
 
50
50
  ::
51
51
 
52
- my_power_sensor = PowerSensor.from_robot(robot=robot, name='my_power_sensor')
52
+ my_power_sensor = PowerSensor.from_robot(robot=machine, name='my_power_sensor')
53
53
 
54
54
  # Get the current reading from the power sensor
55
55
  current, is_ac = await my_power_sensor.get_current()
@@ -59,7 +59,7 @@ class PowerSensor(ComponentBase):
59
59
  Tuple[float, bool]: A tuple which includes a float representing the current reading in amps, and a bool indicating whether the
60
60
  current is AC (`true`) or DC (`false`).
61
61
 
62
- For more information, see `Power Sensor component <https://docs.viam.com/components/power-sensor/>`_.
62
+ For more information, see `Power Sensor component <https://docs.viam.com/dev/reference/apis/components/power-sensor/#getcurrent>`_.
63
63
  """
64
64
  ...
65
65
 
@@ -69,7 +69,7 @@ class PowerSensor(ComponentBase):
69
69
 
70
70
  ::
71
71
 
72
- my_power_sensor = PowerSensor.from_robot(robot=robot, name='my_power_sensor')
72
+ my_power_sensor = PowerSensor.from_robot(robot=machine, name='my_power_sensor')
73
73
 
74
74
  # Get the power reading from the power sensor
75
75
  power = await my_power_sensor.get_power()
@@ -78,7 +78,7 @@ class PowerSensor(ComponentBase):
78
78
  Returns:
79
79
  float: The power reading in watts.
80
80
 
81
- For more information, see `Power Sensor component <https://docs.viam.com/components/power-sensor/>`_.
81
+ For more information, see `Power Sensor component <https://docs.viam.com/dev/reference/apis/components/power-sensor/#getpower>`_.
82
82
  """
83
83
  ...
84
84
 
@@ -90,15 +90,15 @@ class PowerSensor(ComponentBase):
90
90
 
91
91
  ::
92
92
 
93
- my_power_sensor = PowerSensor.from_robot(robot=robot, name='my_power_sensor')
93
+ my_power_sensor = PowerSensor.from_robot(robot=machine, name='my_power_sensor')
94
94
 
95
95
  # Get the readings provided by the sensor.
96
96
  readings = await my_power_sensor.get_readings()
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
- For more information, see `Power Sensor component <https://docs.viam.com/components/power-sensor/>`_.
102
+ For more information, see `Power Sensor component <https://docs.viam.com/dev/reference/apis/components/power-sensor/#getreadings>`_.
103
103
  """
104
104
  ...
@@ -9,7 +9,7 @@ __all__ = [
9
9
  "Sensor",
10
10
  ]
11
11
 
12
- Registry.register_subtype(
12
+ Registry.register_api(
13
13
  ResourceRegistration(
14
14
  Sensor,
15
15
  SensorRPCService,
@@ -25,12 +25,11 @@ class SensorClient(Sensor, ReconfigurableResourceRPCClientBase):
25
25
  *,
26
26
  extra: Optional[Mapping[str, Any]] = None,
27
27
  timeout: Optional[float] = None,
28
- **__,
28
+ **kwargs,
29
29
  ) -> Mapping[str, SensorReading]:
30
- if extra is None:
31
- extra = {}
30
+ md = kwargs.get("metadata", self.Metadata()).proto
32
31
  request = GetReadingsRequest(name=self.name, extra=dict_to_struct(extra))
33
- response: GetReadingsResponse = await self.client.GetReadings(request, timeout=timeout)
32
+ response: GetReadingsResponse = await self.client.GetReadings(request, timeout=timeout, metadata=md)
34
33
  return sensor_readings_value_to_native(response.readings)
35
34
 
36
35
  async def do_command(
@@ -38,11 +37,13 @@ class SensorClient(Sensor, ReconfigurableResourceRPCClientBase):
38
37
  command: Mapping[str, ValueTypes],
39
38
  *,
40
39
  timeout: Optional[float] = None,
41
- **__,
40
+ **kwargs,
42
41
  ) -> Mapping[str, ValueTypes]:
42
+ md = kwargs.get("metadata", self.Metadata()).proto
43
43
  request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
44
- response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout)
44
+ response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
45
45
  return struct_to_dict(response.result)
46
46
 
47
- async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
48
- return await get_geometries(self.client, self.name, extra, timeout)
47
+ async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
48
+ md = kwargs.get("metadata", self.Metadata())
49
+ return await get_geometries(self.client, self.name, extra, timeout, md)
@@ -1,7 +1,7 @@
1
1
  import abc
2
2
  from typing import Any, Final, Mapping, Optional
3
3
 
4
- from viam.resource.types import RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, Subtype
4
+ from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
5
5
  from viam.utils import SensorReading
6
6
 
7
7
  from ..component_base import ComponentBase
@@ -19,10 +19,10 @@ class Sensor(ComponentBase):
19
19
 
20
20
  from viam.components.sensor import Sensor
21
21
 
22
- For more information, see `Sensor component <https://docs.viam.com/components/sensor/>`_.
22
+ For more information, see `Sensor component <https://docs.viam.com/dev/reference/apis/components/sensor/>`_.
23
23
  """
24
24
 
25
- SUBTYPE: Final = Subtype( # pyright: ignore [reportIncompatibleVariableOverride]
25
+ API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
26
26
  RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "sensor"
27
27
  )
28
28
 
@@ -35,7 +35,7 @@ class Sensor(ComponentBase):
35
35
 
36
36
  ::
37
37
 
38
- my_sensor = Sensor.from_robot(robot=robot, name='my_sensor')
38
+ my_sensor = Sensor.from_robot(robot=machine, name='my_sensor')
39
39
 
40
40
  # Get the readings provided by the sensor.
41
41
  readings = await my_sensor.get_readings()
@@ -43,6 +43,6 @@ class Sensor(ComponentBase):
43
43
  Returns:
44
44
  Mapping[str, Any]: The measurements. Can be of any type.
45
45
 
46
- For more information, see `Sensor component <https://docs.viam.com/components/sensor/>`_.
46
+ For more information, see `Sensor component <https://docs.viam.com/dev/reference/apis/components/sensor/#getreadings>`_.
47
47
  """
48
48
  ...
@@ -1,9 +1,4 @@
1
- import asyncio
2
-
3
- from viam.proto.component.servo import Status as ServoStatus
4
- from viam.proto.robot import Status
5
1
  from viam.resource.registry import Registry, ResourceRegistration
6
- from viam.utils import message_to_struct
7
2
 
8
3
  from .client import ServoClient
9
4
  from .service import ServoRPCService
@@ -13,11 +8,4 @@ __all__ = [
13
8
  "Servo",
14
9
  ]
15
10
 
16
-
17
- async def create_status(component: Servo) -> Status:
18
- (position_deg, is_moving) = await asyncio.gather(component.get_position(), component.is_moving())
19
- s = ServoStatus(position_deg=position_deg, is_moving=is_moving)
20
- return Status(name=Servo.get_resource_name(component.name), status=message_to_struct(s))
21
-
22
-
23
- Registry.register_subtype(ResourceRegistration(Servo, ServoRPCService, lambda name, channel: ServoClient(name, channel), create_status))
11
+ Registry.register_api(ResourceRegistration(Servo, ServoRPCService, lambda name, channel: ServoClient(name, channel)))
@@ -33,12 +33,11 @@ class ServoClient(Servo, ReconfigurableResourceRPCClientBase):
33
33
  *,
34
34
  extra: Optional[Mapping[str, Any]] = None,
35
35
  timeout: Optional[float] = None,
36
- **__,
36
+ **kwargs,
37
37
  ) -> int:
38
- if extra is None:
39
- extra = {}
38
+ md = kwargs.get("metadata", self.Metadata()).proto
40
39
  request = GetPositionRequest(name=self.name, extra=dict_to_struct(extra))
41
- response: GetPositionResponse = await self.client.GetPosition(request, timeout=timeout)
40
+ response: GetPositionResponse = await self.client.GetPosition(request, timeout=timeout, metadata=md)
42
41
  return response.position_deg
43
42
 
44
43
  async def move(
@@ -47,28 +46,27 @@ class ServoClient(Servo, ReconfigurableResourceRPCClientBase):
47
46
  *,
48
47
  extra: Optional[Mapping[str, Any]] = None,
49
48
  timeout: Optional[float] = None,
50
- **__,
49
+ **kwargs,
51
50
  ):
52
- if extra is None:
53
- extra = {}
51
+ md = kwargs.get("metadata", self.Metadata()).proto
54
52
  request = MoveRequest(name=self.name, angle_deg=angle, extra=dict_to_struct(extra))
55
- await self.client.Move(request, timeout=timeout)
53
+ await self.client.Move(request, timeout=timeout, metadata=md)
56
54
 
57
55
  async def stop(
58
56
  self,
59
57
  *,
60
58
  extra: Optional[Mapping[str, Any]] = None,
61
59
  timeout: Optional[float] = None,
62
- **__,
60
+ **kwargs,
63
61
  ):
64
- if extra is None:
65
- extra = {}
62
+ md = kwargs.get("metadata", self.Metadata()).proto
66
63
  request = StopRequest(name=self.name, extra=dict_to_struct(extra))
67
- await self.client.Stop(request, timeout=timeout)
64
+ await self.client.Stop(request, timeout=timeout, metadata=md)
68
65
 
69
- async def is_moving(self, *, timeout: Optional[float] = None) -> bool:
66
+ async def is_moving(self, *, timeout: Optional[float] = None, **kwargs) -> bool:
67
+ md = kwargs.get("metadata", self.Metadata()).proto
70
68
  request = IsMovingRequest(name=self.name)
71
- response: IsMovingResponse = await self.client.IsMoving(request, timeout=timeout)
69
+ response: IsMovingResponse = await self.client.IsMoving(request, timeout=timeout, metadata=md)
72
70
  return response.is_moving
73
71
 
74
72
  async def do_command(
@@ -76,11 +74,13 @@ class ServoClient(Servo, ReconfigurableResourceRPCClientBase):
76
74
  command: Mapping[str, ValueTypes],
77
75
  *,
78
76
  timeout: Optional[float] = None,
79
- **__,
77
+ **kwargs,
80
78
  ) -> Mapping[str, ValueTypes]:
79
+ md = kwargs.get("metadata", self.Metadata()).proto
81
80
  request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
82
- response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout)
81
+ response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
83
82
  return struct_to_dict(response.result)
84
83
 
85
- async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
86
- return await get_geometries(self.client, self.name, extra, timeout)
84
+ async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
85
+ md = kwargs.get("metadata", self.Metadata())
86
+ return await get_geometries(self.client, self.name, extra, timeout, md)
@@ -1,7 +1,7 @@
1
1
  import abc
2
2
  from typing import Any, Final, Mapping, Optional
3
3
 
4
- from viam.resource.types import RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, Subtype
4
+ from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
5
5
 
6
6
  from ..component_base import ComponentBase
7
7
 
@@ -18,10 +18,10 @@ class Servo(ComponentBase):
18
18
 
19
19
  from viam.components.servo import Servo
20
20
 
21
- For more information, see `Servo component <https://docs.viam.com/components/servo/>`_.
21
+ For more information, see `Servo component <https://docs.viam.com/dev/reference/apis/components/servo/>`_.
22
22
  """
23
23
 
24
- SUBTYPE: Final = Subtype( # pyright: ignore [reportIncompatibleVariableOverride]
24
+ API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
25
25
  RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "servo"
26
26
  )
27
27
 
@@ -32,7 +32,7 @@ class Servo(ComponentBase):
32
32
 
33
33
  ::
34
34
 
35
- my_servo = Servo.from_robot(robot=robot, name="my_servo")
35
+ my_servo = Servo.from_robot(robot=machine, name="my_servo")
36
36
 
37
37
  # Move the servo from its origin to the desired angle of 10 degrees.
38
38
  await my_servo.move(10)
@@ -43,7 +43,7 @@ class Servo(ComponentBase):
43
43
  Args:
44
44
  angle (int): The desired angle of the servo in degrees.
45
45
 
46
- For more information, see `Servo component <https://docs.viam.com/components/servo/>`_.
46
+ For more information, see `Servo component <https://docs.viam.com/dev/reference/apis/components/servo/#move>`_.
47
47
  """
48
48
  ...
49
49
 
@@ -54,7 +54,7 @@ class Servo(ComponentBase):
54
54
 
55
55
  ::
56
56
 
57
- my_servo = Servo.from_robot(robot=robot, name="my_servo")
57
+ my_servo = Servo.from_robot(robot=machine, name="my_servo")
58
58
 
59
59
  # Move the servo from its origin to the desired angle of 10 degrees.
60
60
  await my_servo.move(10)
@@ -71,7 +71,7 @@ class Servo(ComponentBase):
71
71
  Returns:
72
72
  int: The current angle of the servo in degrees.
73
73
 
74
- For more information, see `Servo component <https://docs.viam.com/components/servo/>`_.
74
+ For more information, see `Servo component <https://docs.viam.com/dev/reference/apis/components/servo/#getposition>`_.
75
75
  """
76
76
  ...
77
77
 
@@ -82,7 +82,7 @@ class Servo(ComponentBase):
82
82
 
83
83
  ::
84
84
 
85
- my_servo = Servo.from_robot(robot=robot, name="my_servo")
85
+ my_servo = Servo.from_robot(robot=machine, name="my_servo")
86
86
 
87
87
  # Move the servo from its origin to the desired angle of 10 degrees.
88
88
  await my_servo.move(10)
@@ -90,7 +90,7 @@ class Servo(ComponentBase):
90
90
  # Stop the servo. It is assumed that the servo stops moving immediately.
91
91
  await my_servo.stop()
92
92
 
93
- For more information, see `Servo component <https://docs.viam.com/components/servo/>`_.
93
+ For more information, see `Servo component <https://docs.viam.com/dev/reference/apis/components/servo/#stop>`_.
94
94
  """
95
95
  ...
96
96
 
@@ -101,14 +101,14 @@ class Servo(ComponentBase):
101
101
 
102
102
  ::
103
103
 
104
- my_servo = Servo.from_robot(robot=robot, name="my_servo")
104
+ my_servo = Servo.from_robot(robot=machine, name="my_servo")
105
105
 
106
- print(my_servo.is_moving())
106
+ print(await my_servo.is_moving())
107
107
 
108
108
 
109
109
  Returns:
110
110
  bool: Whether the servo is moving.
111
111
 
112
- For more information, see `Servo component <https://docs.viam.com/components/servo/>`_.
112
+ For more information, see `Servo component <https://docs.viam.com/dev/reference/apis/components/servo/#ismoving>`_.
113
113
  """
114
114
  ...
@@ -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
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
+ ) -> int:
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
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)