viam-sdk 0.3.0__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 (452) hide show
  1. viam/__init__.py +29 -2
  2. viam/app/_logs.py +34 -0
  3. viam/app/app_client.py +2696 -0
  4. viam/app/billing_client.py +185 -0
  5. viam/app/data_client.py +2231 -0
  6. viam/app/ml_training_client.py +249 -0
  7. viam/app/provisioning_client.py +93 -0
  8. viam/app/viam_client.py +275 -0
  9. viam/components/arm/__init__.py +3 -26
  10. viam/components/arm/arm.py +123 -8
  11. viam/components/arm/client.py +37 -24
  12. viam/components/arm/service.py +35 -32
  13. viam/components/audio_in/__init__.py +24 -0
  14. viam/components/audio_in/audio_in.py +74 -0
  15. viam/components/audio_in/client.py +76 -0
  16. viam/components/audio_in/service.py +83 -0
  17. viam/components/audio_out/__init__.py +21 -0
  18. viam/components/audio_out/audio_out.py +72 -0
  19. viam/components/audio_out/client.py +67 -0
  20. viam/components/audio_out/service.py +63 -0
  21. viam/components/base/__init__.py +6 -11
  22. viam/components/base/base.py +134 -8
  23. viam/components/base/client.py +51 -23
  24. viam/components/base/service.py +33 -30
  25. viam/components/board/__init__.py +3 -12
  26. viam/components/board/board.py +247 -91
  27. viam/components/board/client.py +149 -83
  28. viam/components/board/service.py +63 -33
  29. viam/components/button/__init__.py +10 -0
  30. viam/components/button/button.py +41 -0
  31. viam/components/button/client.py +52 -0
  32. viam/components/button/service.py +46 -0
  33. viam/components/camera/__init__.py +3 -3
  34. viam/components/camera/camera.py +62 -27
  35. viam/components/camera/client.py +59 -27
  36. viam/components/camera/service.py +42 -65
  37. viam/components/component_base.py +28 -5
  38. viam/components/encoder/__init__.py +1 -1
  39. viam/components/encoder/client.py +25 -14
  40. viam/components/encoder/encoder.py +48 -10
  41. viam/components/encoder/service.py +14 -18
  42. viam/components/gantry/__init__.py +1 -13
  43. viam/components/gantry/client.py +80 -25
  44. viam/components/gantry/gantry.py +123 -9
  45. viam/components/gantry/service.py +51 -29
  46. viam/components/generic/__init__.py +1 -1
  47. viam/components/generic/client.py +21 -8
  48. viam/components/generic/generic.py +10 -2
  49. viam/components/generic/service.py +12 -7
  50. viam/components/gripper/__init__.py +3 -13
  51. viam/components/gripper/client.py +69 -21
  52. viam/components/gripper/gripper.py +123 -3
  53. viam/components/gripper/service.py +44 -22
  54. viam/components/input/__init__.py +1 -14
  55. viam/components/input/client.py +55 -23
  56. viam/components/input/input.py +106 -3
  57. viam/components/input/service.py +16 -21
  58. viam/components/motor/__init__.py +1 -21
  59. viam/components/motor/client.py +56 -33
  60. viam/components/motor/motor.py +127 -4
  61. viam/components/motor/service.py +33 -44
  62. viam/components/movement_sensor/__init__.py +1 -1
  63. viam/components/movement_sensor/client.py +102 -45
  64. viam/components/movement_sensor/movement_sensor.py +130 -61
  65. viam/components/movement_sensor/service.py +38 -41
  66. viam/components/pose_tracker/__init__.py +1 -1
  67. viam/components/pose_tracker/client.py +18 -7
  68. viam/components/pose_tracker/pose_tracker.py +4 -2
  69. viam/components/pose_tracker/service.py +12 -10
  70. viam/components/power_sensor/__init__.py +17 -0
  71. viam/components/power_sensor/client.py +86 -0
  72. viam/components/power_sensor/power_sensor.py +104 -0
  73. viam/components/power_sensor/service.py +72 -0
  74. viam/components/sensor/__init__.py +2 -1
  75. viam/components/sensor/client.py +26 -10
  76. viam/components/sensor/sensor.py +22 -4
  77. viam/components/sensor/service.py +20 -11
  78. viam/components/servo/__init__.py +1 -13
  79. viam/components/servo/client.py +47 -21
  80. viam/components/servo/service.py +15 -22
  81. viam/components/servo/servo.py +61 -2
  82. viam/components/switch/__init__.py +10 -0
  83. viam/components/switch/client.py +83 -0
  84. viam/components/switch/service.py +72 -0
  85. viam/components/switch/switch.py +98 -0
  86. viam/errors.py +10 -0
  87. viam/gen/app/agent/v1/agent_grpc.py +29 -0
  88. viam/gen/app/agent/v1/agent_pb2.py +47 -0
  89. viam/gen/app/agent/v1/agent_pb2.pyi +280 -0
  90. viam/gen/app/cloudslam/v1/__init__.py +0 -0
  91. viam/gen/app/cloudslam/v1/cloud_slam_grpc.py +70 -0
  92. viam/gen/app/cloudslam/v1/cloud_slam_pb2.py +54 -0
  93. viam/gen/app/cloudslam/v1/cloud_slam_pb2.pyi +384 -0
  94. viam/gen/app/data/v1/data_grpc.py +197 -8
  95. viam/gen/app/data/v1/data_pb2.py +238 -99
  96. viam/gen/app/data/v1/data_pb2.pyi +1222 -259
  97. viam/gen/app/datapipelines/__init__.py +0 -0
  98. viam/gen/app/datapipelines/v1/__init__.py +0 -0
  99. viam/gen/app/datapipelines/v1/data_pipelines_grpc.py +84 -0
  100. viam/gen/app/datapipelines/v1/data_pipelines_pb2.py +57 -0
  101. viam/gen/app/datapipelines/v1/data_pipelines_pb2.pyi +387 -0
  102. viam/gen/app/dataset/__init__.py +0 -0
  103. viam/gen/app/dataset/v1/__init__.py +0 -0
  104. viam/gen/app/dataset/v1/dataset_grpc.py +68 -0
  105. viam/gen/app/dataset/v1/dataset_pb2.py +44 -0
  106. viam/gen/app/dataset/v1/dataset_pb2.pyi +214 -0
  107. viam/gen/app/datasync/v1/data_sync_grpc.py +21 -4
  108. viam/gen/app/datasync/v1/data_sync_pb2.py +62 -128
  109. viam/gen/app/datasync/v1/data_sync_pb2.pyi +156 -199
  110. viam/gen/app/mlinference/__init__.py +0 -0
  111. viam/gen/app/mlinference/v1/__init__.py +0 -0
  112. viam/gen/app/mlinference/v1/ml_inference_grpc.py +28 -0
  113. viam/gen/app/mlinference/v1/ml_inference_pb2.py +23 -0
  114. viam/gen/app/mlinference/v1/ml_inference_pb2.pyi +63 -0
  115. viam/gen/app/mltraining/v1/ml_training_grpc.py +51 -3
  116. viam/gen/app/mltraining/v1/ml_training_pb2.py +135 -58
  117. viam/gen/app/mltraining/v1/ml_training_pb2.pyi +328 -39
  118. viam/gen/app/packages/v1/packages_grpc.py +15 -1
  119. viam/gen/app/packages/v1/packages_pb2.py +44 -64
  120. viam/gen/app/packages/v1/packages_pb2.pyi +75 -85
  121. viam/gen/app/v1/app_grpc.py +644 -3
  122. viam/gen/app/v1/app_pb2.py +695 -295
  123. viam/gen/app/v1/app_pb2.pyi +4488 -635
  124. viam/gen/app/v1/billing_grpc.py +53 -11
  125. viam/gen/app/v1/billing_pb2.py +94 -39
  126. viam/gen/app/v1/billing_pb2.pyi +391 -191
  127. viam/gen/app/v1/end_user_grpc.py +59 -0
  128. viam/gen/app/v1/end_user_pb2.py +55 -0
  129. viam/gen/app/v1/end_user_pb2.pyi +181 -0
  130. viam/gen/app/v1/robot_grpc.py +16 -1
  131. viam/gen/app/v1/robot_pb2.py +122 -94
  132. viam/gen/app/v1/robot_pb2.pyi +463 -123
  133. viam/gen/common/v1/common_pb2.py +87 -58
  134. viam/gen/common/v1/common_pb2.pyi +456 -149
  135. viam/gen/component/arm/v1/arm_grpc.py +58 -2
  136. viam/gen/component/arm/v1/arm_pb2.py +68 -51
  137. viam/gen/component/arm/v1/arm_pb2.pyi +108 -42
  138. viam/gen/component/audioin/__init__.py +0 -0
  139. viam/gen/component/audioin/v1/__init__.py +0 -0
  140. viam/gen/component/audioin/v1/audioin_grpc.py +54 -0
  141. viam/gen/component/audioin/v1/audioin_pb2.py +34 -0
  142. viam/gen/component/audioin/v1/audioin_pb2.pyi +94 -0
  143. viam/gen/component/audioinput/v1/audioinput_grpc.py +25 -2
  144. viam/gen/component/audioinput/v1/audioinput_pb2.py +36 -31
  145. viam/gen/component/audioinput/v1/audioinput_pb2.pyi +22 -22
  146. viam/gen/component/audioout/__init__.py +0 -0
  147. viam/gen/component/audioout/v1/__init__.py +0 -0
  148. viam/gen/component/audioout/v1/audioout_grpc.py +54 -0
  149. viam/gen/component/audioout/v1/audioout_pb2.py +32 -0
  150. viam/gen/component/audioout/v1/audioout_pb2.pyi +47 -0
  151. viam/gen/component/base/v1/base_grpc.py +42 -2
  152. viam/gen/component/base/v1/base_pb2.py +58 -47
  153. viam/gen/component/base/v1/base_pb2.pyi +65 -30
  154. viam/gen/component/board/v1/board_grpc.py +59 -7
  155. viam/gen/component/board/v1/board_pb2.py +94 -73
  156. viam/gen/component/board/v1/board_pb2.pyi +165 -68
  157. viam/gen/component/button/__init__.py +0 -0
  158. viam/gen/component/button/v1/__init__.py +0 -0
  159. viam/gen/component/button/v1/button_grpc.py +38 -0
  160. viam/gen/component/button/v1/button_pb2.py +28 -0
  161. viam/gen/component/button/v1/button_pb2.pyi +39 -0
  162. viam/gen/component/camera/v1/camera_grpc.py +38 -2
  163. viam/gen/component/camera/v1/camera_pb2.py +60 -43
  164. viam/gen/component/camera/v1/camera_pb2.pyi +191 -37
  165. viam/gen/component/encoder/v1/encoder_grpc.py +25 -2
  166. viam/gen/component/encoder/v1/encoder_pb2.py +36 -31
  167. viam/gen/component/encoder/v1/encoder_pb2.pyi +15 -15
  168. viam/gen/component/gantry/v1/gantry_grpc.py +47 -2
  169. viam/gen/component/gantry/v1/gantry_pb2.py +56 -43
  170. viam/gen/component/gantry/v1/gantry_pb2.pyi +67 -31
  171. viam/gen/component/generic/v1/generic_grpc.py +16 -2
  172. viam/gen/component/generic/v1/generic_pb2.py +16 -11
  173. viam/gen/component/gripper/v1/gripper_grpc.py +44 -2
  174. viam/gen/component/gripper/v1/gripper_pb2.py +48 -35
  175. viam/gen/component/gripper/v1/gripper_pb2.pyi +62 -24
  176. viam/gen/component/inputcontroller/v1/input_controller_grpc.py +28 -2
  177. viam/gen/component/inputcontroller/v1/input_controller_pb2.py +46 -41
  178. viam/gen/component/inputcontroller/v1/input_controller_pb2.pyi +32 -36
  179. viam/gen/component/motor/v1/motor_grpc.py +51 -2
  180. viam/gen/component/motor/v1/motor_pb2.py +78 -67
  181. viam/gen/component/motor/v1/motor_pb2.pyi +75 -46
  182. viam/gen/component/movementsensor/v1/movementsensor_grpc.py +48 -2
  183. viam/gen/component/movementsensor/v1/movementsensor_pb2.py +70 -63
  184. viam/gen/component/movementsensor/v1/movementsensor_pb2.pyi +84 -57
  185. viam/gen/component/posetracker/v1/pose_tracker_grpc.py +19 -2
  186. viam/gen/component/posetracker/v1/pose_tracker_pb2.py +26 -21
  187. viam/gen/component/posetracker/v1/pose_tracker_pb2.pyi +9 -13
  188. viam/gen/component/powersensor/__init__.py +0 -0
  189. viam/gen/component/powersensor/v1/__init__.py +0 -0
  190. viam/gen/component/powersensor/v1/powersensor_grpc.py +62 -0
  191. viam/gen/component/powersensor/v1/powersensor_pb2.py +42 -0
  192. viam/gen/component/powersensor/v1/powersensor_pb2.pyi +124 -0
  193. viam/gen/component/sensor/v1/sensor_grpc.py +21 -5
  194. viam/gen/component/sensor/v1/sensor_pb2.py +18 -22
  195. viam/gen/component/sensor/v1/sensor_pb2.pyi +1 -69
  196. viam/gen/component/servo/v1/servo_grpc.py +28 -2
  197. viam/gen/component/servo/v1/servo_pb2.py +42 -37
  198. viam/gen/component/servo/v1/servo_pb2.pyi +22 -26
  199. viam/gen/component/switch/__init__.py +0 -0
  200. viam/gen/component/switch/v1/__init__.py +0 -0
  201. viam/gen/component/switch/v1/switch_grpc.py +54 -0
  202. viam/gen/component/switch/v1/switch_pb2.py +40 -0
  203. viam/gen/component/switch/v1/switch_pb2.pyi +116 -0
  204. viam/gen/component/testecho/v1/testecho_grpc.py +15 -0
  205. viam/gen/component/testecho/v1/testecho_pb2.py +29 -26
  206. viam/gen/component/testecho/v1/testecho_pb2.pyi +16 -20
  207. viam/gen/module/v1/module_grpc.py +18 -0
  208. viam/gen/module/v1/module_pb2.py +36 -33
  209. viam/gen/module/v1/module_pb2.pyi +39 -34
  210. viam/gen/opentelemetry/__init__.py +0 -0
  211. viam/gen/opentelemetry/proto/__init__.py +0 -0
  212. viam/gen/opentelemetry/proto/common/__init__.py +0 -0
  213. viam/gen/opentelemetry/proto/common/v1/__init__.py +0 -0
  214. viam/gen/opentelemetry/proto/common/v1/common_grpc.py +0 -0
  215. viam/gen/opentelemetry/proto/common/v1/common_pb2.py +27 -0
  216. viam/gen/opentelemetry/proto/common/v1/common_pb2.pyi +208 -0
  217. viam/gen/opentelemetry/proto/resource/__init__.py +0 -0
  218. viam/gen/opentelemetry/proto/resource/v1/__init__.py +0 -0
  219. viam/gen/opentelemetry/proto/resource/v1/resource_grpc.py +0 -0
  220. viam/gen/opentelemetry/proto/resource/v1/resource_pb2.py +18 -0
  221. viam/gen/opentelemetry/proto/resource/v1/resource_pb2.pyi +59 -0
  222. viam/gen/opentelemetry/proto/trace/__init__.py +0 -0
  223. viam/gen/opentelemetry/proto/trace/v1/__init__.py +0 -0
  224. viam/gen/opentelemetry/proto/trace/v1/trace_grpc.py +0 -0
  225. viam/gen/opentelemetry/proto/trace/v1/trace_pb2.py +37 -0
  226. viam/gen/opentelemetry/proto/trace/v1/trace_pb2.pyi +402 -0
  227. viam/gen/proto/rpc/examples/echo/v1/echo_grpc.py +12 -0
  228. viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py +25 -22
  229. viam/gen/proto/rpc/examples/echo/v1/echo_pb2.pyi +13 -17
  230. viam/gen/proto/rpc/examples/echoresource/v1/echoresource_grpc.py +12 -0
  231. viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py +23 -20
  232. viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.pyi +13 -17
  233. viam/gen/proto/rpc/v1/auth_grpc.py +11 -0
  234. viam/gen/proto/rpc/v1/auth_pb2.py +27 -24
  235. viam/gen/proto/rpc/v1/auth_pb2.pyi +12 -16
  236. viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py +35 -32
  237. viam/gen/proto/rpc/webrtc/v1/grpc_pb2.pyi +37 -41
  238. viam/gen/proto/rpc/webrtc/v1/signaling_grpc.py +15 -0
  239. viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py +62 -57
  240. viam/gen/proto/rpc/webrtc/v1/signaling_pb2.pyi +78 -69
  241. viam/gen/provisioning/__init__.py +0 -0
  242. viam/gen/provisioning/v1/__init__.py +0 -0
  243. viam/gen/provisioning/v1/provisioning_grpc.py +59 -0
  244. viam/gen/provisioning/v1/provisioning_pb2.py +45 -0
  245. viam/gen/provisioning/v1/provisioning_pb2.pyi +229 -0
  246. viam/gen/robot/v1/robot_grpc.py +144 -15
  247. viam/gen/robot/v1/robot_pb2.py +193 -119
  248. viam/gen/robot/v1/robot_pb2.pyi +565 -137
  249. viam/gen/service/datamanager/v1/data_manager_grpc.py +20 -2
  250. viam/gen/service/datamanager/v1/data_manager_pb2.py +27 -17
  251. viam/gen/service/datamanager/v1/data_manager_pb2.pyi +52 -10
  252. viam/gen/service/discovery/__init__.py +0 -0
  253. viam/gen/service/discovery/v1/__init__.py +0 -0
  254. viam/gen/service/discovery/v1/discovery_grpc.py +39 -0
  255. viam/gen/service/discovery/v1/discovery_pb2.py +29 -0
  256. viam/gen/service/discovery/v1/discovery_pb2.pyi +51 -0
  257. viam/gen/service/generic/__init__.py +0 -0
  258. viam/gen/service/generic/v1/__init__.py +0 -0
  259. viam/gen/service/generic/v1/generic_grpc.py +29 -0
  260. viam/gen/service/generic/v1/generic_pb2.py +21 -0
  261. viam/gen/service/generic/v1/generic_pb2.pyi +6 -0
  262. viam/gen/service/mlmodel/v1/mlmodel_grpc.py +9 -0
  263. viam/gen/service/mlmodel/v1/mlmodel_pb2.py +76 -29
  264. viam/gen/service/mlmodel/v1/mlmodel_pb2.pyi +307 -28
  265. viam/gen/service/motion/v1/motion_grpc.py +42 -4
  266. viam/gen/service/motion/v1/motion_pb2.py +119 -51
  267. viam/gen/service/motion/v1/motion_pb2.pyi +595 -120
  268. viam/gen/service/navigation/v1/navigation_grpc.py +49 -1
  269. viam/gen/service/navigation/v1/navigation_pb2.py +76 -51
  270. viam/gen/service/navigation/v1/navigation_pb2.pyi +188 -33
  271. viam/gen/service/sensors/v1/sensors_grpc.py +12 -0
  272. viam/gen/service/sensors/v1/sensors_pb2.py +60 -29
  273. viam/gen/service/sensors/v1/sensors_pb2.pyi +18 -21
  274. viam/gen/service/shell/v1/shell_grpc.py +27 -1
  275. viam/gen/service/shell/v1/shell_pb2.py +37 -15
  276. viam/gen/service/shell/v1/shell_pb2.pyi +260 -7
  277. viam/gen/service/slam/v1/slam_grpc.py +24 -2
  278. viam/gen/service/slam/v1/slam_pb2.py +44 -30
  279. viam/gen/service/slam/v1/slam_pb2.pyi +128 -27
  280. viam/gen/service/video/__init__.py +0 -0
  281. viam/gen/service/video/v1/__init__.py +0 -0
  282. viam/gen/service/video/v1/video_grpc.py +39 -0
  283. viam/gen/service/video/v1/video_pb2.py +29 -0
  284. viam/gen/service/video/v1/video_pb2.pyi +72 -0
  285. viam/gen/service/vision/v1/vision_grpc.py +39 -1
  286. viam/gen/service/vision/v1/vision_pb2.py +61 -45
  287. viam/gen/service/vision/v1/vision_pb2.pyi +180 -41
  288. viam/gen/service/worldstatestore/__init__.py +0 -0
  289. viam/gen/service/worldstatestore/v1/__init__.py +0 -0
  290. viam/gen/service/worldstatestore/v1/world_state_store_grpc.py +55 -0
  291. viam/gen/service/worldstatestore/v1/world_state_store_pb2.py +39 -0
  292. viam/gen/service/worldstatestore/v1/world_state_store_pb2.pyi +171 -0
  293. viam/gen/stream/__init__.py +0 -0
  294. viam/gen/stream/v1/__init__.py +0 -0
  295. viam/gen/stream/v1/stream_grpc.py +59 -0
  296. viam/gen/stream/v1/stream_pb2.py +39 -0
  297. viam/gen/stream/v1/stream_pb2.pyi +161 -0
  298. viam/gen/tagger/v1/tagger_pb2.py +9 -8
  299. viam/logging.py +160 -17
  300. viam/media/__init__.py +0 -9
  301. viam/media/audio.py +22 -10
  302. viam/media/utils/__init__.py +0 -0
  303. viam/media/utils/pil/__init__.py +55 -0
  304. viam/media/{viam_rgba_plugin.py → utils/pil/viam_rgba_plugin.py} +10 -16
  305. viam/media/viam_rgba.py +10 -0
  306. viam/media/video.py +197 -73
  307. viam/module/module.py +191 -44
  308. viam/module/resource_data_consumer.py +41 -0
  309. viam/module/service.py +9 -1
  310. viam/module/types.py +4 -5
  311. viam/operations.py +4 -3
  312. viam/proto/app/__init__.py +361 -5
  313. viam/proto/app/agent/__init__.py +28 -0
  314. viam/proto/app/billing.py +51 -27
  315. viam/proto/app/cloudslam/__init__.py +48 -0
  316. viam/proto/app/data/__init__.py +103 -17
  317. viam/proto/app/datapipelines/__init__.py +56 -0
  318. viam/proto/app/dataset/__init__.py +40 -0
  319. viam/proto/app/datasync/__init__.py +11 -5
  320. viam/proto/app/end_user.py +34 -0
  321. viam/proto/app/mlinference/__init__.py +15 -0
  322. viam/proto/app/mltraining/__init__.py +25 -1
  323. viam/proto/app/packages/__init__.py +3 -3
  324. viam/proto/app/robot.py +19 -1
  325. viam/proto/common/__init__.py +35 -8
  326. viam/proto/component/arm/__init__.py +9 -1
  327. viam/proto/component/audioin/__init__.py +16 -0
  328. viam/proto/component/audioinput/__init__.py +3 -1
  329. viam/proto/component/audioout/__init__.py +15 -0
  330. viam/proto/component/base/__init__.py +7 -1
  331. viam/proto/component/board/__init__.py +13 -5
  332. viam/proto/component/button/__init__.py +15 -0
  333. viam/proto/component/camera/__init__.py +9 -1
  334. viam/proto/component/encoder/__init__.py +3 -1
  335. viam/proto/component/gantry/__init__.py +7 -1
  336. viam/proto/component/generic/__init__.py +3 -1
  337. viam/proto/component/gripper/__init__.py +7 -1
  338. viam/proto/component/inputcontroller/__init__.py +7 -1
  339. viam/proto/component/motor/__init__.py +7 -1
  340. viam/proto/component/movementsensor/__init__.py +7 -1
  341. viam/proto/component/posetracker/__init__.py +7 -1
  342. viam/proto/component/powersensor/__init__.py +30 -0
  343. viam/proto/component/sensor/__init__.py +3 -4
  344. viam/proto/component/servo/__init__.py +3 -1
  345. viam/proto/component/switch/__init__.py +26 -0
  346. viam/proto/component/testecho/__init__.py +3 -1
  347. viam/proto/module/__init__.py +3 -1
  348. viam/proto/opentelemetry/__init__.py +0 -0
  349. viam/proto/opentelemetry/proto/__init__.py +0 -0
  350. viam/proto/opentelemetry/proto/common/__init__.py +15 -0
  351. viam/proto/opentelemetry/proto/resource/__init__.py +10 -0
  352. viam/proto/opentelemetry/proto/trace/__init__.py +15 -0
  353. viam/proto/provisioning/__init__.py +42 -0
  354. viam/proto/robot/__init__.py +57 -9
  355. viam/proto/rpc/auth.py +11 -1
  356. viam/proto/rpc/examples/echo/__init__.py +3 -1
  357. viam/proto/rpc/examples/echoresource/__init__.py +7 -1
  358. viam/proto/rpc/webrtc/grpc.py +3 -1
  359. viam/proto/rpc/webrtc/signaling.py +5 -1
  360. viam/proto/service/datamanager/__init__.py +15 -2
  361. viam/proto/service/discovery/__init__.py +15 -0
  362. viam/proto/service/generic/__init__.py +12 -0
  363. viam/proto/service/mlmodel/__init__.py +27 -1
  364. viam/proto/service/motion/__init__.py +35 -5
  365. viam/proto/service/navigation/__init__.py +19 -1
  366. viam/proto/service/sensors/__init__.py +3 -1
  367. viam/proto/service/shell/__init__.py +25 -2
  368. viam/proto/service/slam/__init__.py +13 -1
  369. viam/proto/service/video/__init__.py +15 -0
  370. viam/proto/service/vision/__init__.py +11 -1
  371. viam/proto/service/worldstatestore/__init__.py +32 -0
  372. viam/proto/stream/__init__.py +36 -0
  373. viam/py.typed +0 -0
  374. viam/resource/base.py +45 -8
  375. viam/resource/easy_resource.py +149 -0
  376. viam/resource/manager.py +35 -14
  377. viam/resource/registry.py +40 -52
  378. viam/resource/rpc_client_base.py +33 -1
  379. viam/resource/rpc_service_base.py +15 -8
  380. viam/resource/types.py +39 -26
  381. viam/robot/client.py +458 -91
  382. viam/robot/service.py +13 -107
  383. viam/rpc/dial.py +133 -15
  384. viam/rpc/libviam_rust_utils.so +0 -0
  385. viam/rpc/server.py +59 -15
  386. viam/rpc/types.py +2 -4
  387. viam/services/discovery/__init__.py +12 -0
  388. viam/services/discovery/client.py +55 -0
  389. viam/services/discovery/discovery.py +52 -0
  390. viam/services/discovery/service.py +43 -0
  391. viam/services/generic/__init__.py +18 -0
  392. viam/services/generic/client.py +58 -0
  393. viam/services/generic/generic.py +58 -0
  394. viam/services/generic/service.py +29 -0
  395. viam/services/mlmodel/__init__.py +15 -1
  396. viam/services/mlmodel/client.py +20 -15
  397. viam/services/mlmodel/mlmodel.py +44 -7
  398. viam/services/mlmodel/service.py +9 -13
  399. viam/services/mlmodel/utils.py +101 -0
  400. viam/services/motion/__init__.py +15 -3
  401. viam/services/motion/client.py +109 -150
  402. viam/services/motion/motion.py +380 -0
  403. viam/services/motion/service.py +132 -0
  404. viam/services/navigation/__init__.py +11 -0
  405. viam/services/navigation/client.py +99 -0
  406. viam/services/navigation/navigation.py +250 -0
  407. viam/services/navigation/service.py +137 -0
  408. viam/services/service_base.py +43 -4
  409. viam/services/service_client_base.py +4 -4
  410. viam/services/slam/__init__.py +4 -1
  411. viam/services/slam/client.py +21 -11
  412. viam/services/slam/service.py +16 -19
  413. viam/services/slam/slam.py +66 -5
  414. viam/services/vision/__init__.py +8 -0
  415. viam/services/vision/client.py +115 -111
  416. viam/services/vision/service.py +143 -0
  417. viam/services/vision/vision.py +317 -0
  418. viam/services/worldstatestore/__init__.py +18 -0
  419. viam/services/worldstatestore/client.py +94 -0
  420. viam/services/worldstatestore/service.py +55 -0
  421. viam/services/worldstatestore/worldstatestore.py +90 -0
  422. viam/sessions_client.py +254 -0
  423. viam/streams.py +44 -0
  424. viam/utils.py +143 -15
  425. viam/version_metadata.py +4 -0
  426. viam_sdk-0.66.0.dist-info/METADATA +157 -0
  427. viam_sdk-0.66.0.dist-info/RECORD +531 -0
  428. {viam_sdk-0.3.0.dist-info → viam_sdk-0.66.0.dist-info}/WHEEL +1 -1
  429. viam/components/audio_input/__init__.py +0 -18
  430. viam/components/audio_input/audio_input.py +0 -79
  431. viam/components/audio_input/client.py +0 -60
  432. viam/components/audio_input/service.py +0 -118
  433. viam/components/types.py +0 -5
  434. viam/gen/app/model/v1/model_grpc.py +0 -39
  435. viam/gen/app/model/v1/model_pb2.py +0 -71
  436. viam/gen/app/model/v1/model_pb2.pyi +0 -285
  437. viam/gen/proto/rpc/examples/fileupload/v1/fileupload_grpc.py +0 -21
  438. viam/gen/proto/rpc/examples/fileupload/v1/fileupload_pb2.py +0 -18
  439. viam/gen/proto/rpc/examples/fileupload/v1/fileupload_pb2.pyi +0 -49
  440. viam/media/media.py +0 -53
  441. viam/proto/app/model/__init__.py +0 -40
  442. viam/proto/rpc/examples/fileupload/__init__.py +0 -13
  443. viam/services/sensors/__init__.py +0 -5
  444. viam/services/sensors/client.py +0 -63
  445. viam_sdk-0.3.0.dist-info/LICENSE +0 -202
  446. viam_sdk-0.3.0.dist-info/METADATA +0 -122
  447. viam_sdk-0.3.0.dist-info/RECORD +0 -372
  448. /viam/{gen/app/model → app}/__init__.py +0 -0
  449. /viam/gen/app/{model/v1 → agent}/__init__.py +0 -0
  450. /viam/gen/{proto/rpc/examples/fileupload → app/agent/v1}/__init__.py +0 -0
  451. /viam/gen/{proto/rpc/examples/fileupload/v1 → app/cloudslam}/__init__.py +0 -0
  452. /LICENSE → /viam_sdk-0.66.0.dist-info/licenses/LICENSE +0 -0
@@ -2,7 +2,7 @@ import abc
2
2
  from dataclasses import dataclass
3
3
  from typing import Any, Dict, Final, Optional, Tuple
4
4
 
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
 
@@ -13,13 +13,21 @@ class Motor(ComponentBase):
13
13
  This acts as an abstract base class for any drivers representing specific
14
14
  motor implementations. This cannot be used on its own. If the ``__init__()`` function is
15
15
  overridden, it must call the ``super().__init__()`` function.
16
+
17
+ ::
18
+
19
+ from viam.components.motor import Motor
20
+
21
+ For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/>`_.
16
22
  """
17
23
 
18
24
  @dataclass
19
25
  class Properties:
20
26
  position_reporting: bool
21
27
 
22
- SUBTYPE: Final = Subtype(RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "motor")
28
+ API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
29
+ RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "motor"
30
+ )
23
31
 
24
32
  @abc.abstractmethod
25
33
  async def set_power(
@@ -34,9 +42,18 @@ class Motor(ComponentBase):
34
42
  Sets the "percentage" of power the motor should employ between -1 and 1.
35
43
  When ``power`` is negative, the rotation will be in the backward direction.
36
44
 
45
+ ::
46
+
47
+ my_motor = Motor.from_robot(robot=machine, name="my_motor")
48
+
49
+ # Set the power to 40% forwards.
50
+ await my_motor.set_power(power=0.4)
51
+
37
52
  Args:
38
53
  power (float): Power between -1 and 1
39
54
  (negative implies backwards).
55
+
56
+ For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#setpower>`_.
40
57
  """
41
58
  ...
42
59
 
@@ -55,11 +72,20 @@ class Motor(ComponentBase):
55
72
  When ``rpm`` or ``revolutions`` is a negative value, the rotation will be in the backward direction.
56
73
  Note: if both ``rpm`` and ``revolutions`` are negative, the motor will spin in the forward direction.
57
74
 
75
+ ::
76
+
77
+ my_motor = Motor.from_robot(robot=machine, name="my_motor")
78
+
79
+ # Turn the motor 7.2 revolutions at 60 RPM.
80
+ await my_motor.go_for(rpm=60, revolutions=7.2)
81
+
58
82
  Args:
59
83
  rpm (float): Speed at which the motor should move in rotations per minute
60
84
  (negative implies backwards).
61
85
  revolutions (float): Number of revolutions the motor should run for
62
86
  (negative implies backwards).
87
+
88
+ For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#gofor>`_.
63
89
  """
64
90
  ...
65
91
 
@@ -79,9 +105,45 @@ class Motor(ComponentBase):
79
105
  Regardless of the directionality of the ``rpm`` this function will move
80
106
  the motor towards the specified position.
81
107
 
108
+ ::
109
+
110
+ my_motor = Motor.from_robot(robot=machine, name="my_motor")
111
+
112
+ # Turn the motor to 8.3 revolutions from home at 75 RPM.
113
+ await my_motor.go_to(rpm=75, revolutions=8.3)
114
+
82
115
  Args:
83
116
  rpm (float): Speed at which the motor should rotate (absolute value).
84
117
  position_revolutions (float): Target position relative to home/zero, in revolutions.
118
+
119
+ For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#goto>`_.
120
+ """
121
+ ...
122
+
123
+ @abc.abstractmethod
124
+ async def set_rpm(
125
+ self,
126
+ rpm: float,
127
+ *,
128
+ extra: Optional[Dict[str, Any]] = None,
129
+ timeout: Optional[float] = None,
130
+ **kwargs,
131
+ ):
132
+ """
133
+ Spin the motor indefinitely at the specified speed, in revolutions per minute.
134
+ Positive ``rpm`` will result in forward movement and negative ``rpm`` will result in backwards movement
135
+
136
+ ::
137
+
138
+ my_motor = Motor.from_robot(robot=machine, name="my_motor")
139
+
140
+ # Spin the motor at 75 RPM.
141
+ await my_motor.set_rpm(rpm=75)
142
+
143
+ Args:
144
+ rpm (float): Speed at which the motor should rotate.
145
+
146
+ For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#setrpm>`_.
85
147
  """
86
148
  ...
87
149
 
@@ -97,8 +159,17 @@ class Motor(ComponentBase):
97
159
  """
98
160
  Set the current position (modified by ``offset``) to be the new zero (home) position.
99
161
 
162
+ ::
163
+
164
+ my_motor = Motor.from_robot(robot=machine, name="my_motor")
165
+
166
+ # Set the current position as the new home position with no offset.
167
+ await my_motor.reset_zero_position(offset=0.0)
168
+
100
169
  Args:
101
170
  offset (float): The offset from the current position to new home/zero position.
171
+
172
+ For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#resetzeroposition>`_.
102
173
  """
103
174
  ...
104
175
 
@@ -115,8 +186,17 @@ class Motor(ComponentBase):
115
186
  The value returned is the number of revolutions relative to its zero position.
116
187
  This method will raise an exception if position reporting is not supported by the motor.
117
188
 
189
+ ::
190
+
191
+ my_motor = Motor.from_robot(robot=machine, name="my_motor")
192
+
193
+ # Get the current position of the motor.
194
+ position = await my_motor.get_position()
195
+
118
196
  Returns:
119
197
  float: Number of revolutions the motor is away from zero/home.
198
+
199
+ For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#getposition>`_.
120
200
  """
121
201
  ...
122
202
 
@@ -132,8 +212,21 @@ class Motor(ComponentBase):
132
212
  Report a dictionary mapping optional properties to
133
213
  whether it is supported by this motor.
134
214
 
215
+ ::
216
+
217
+ my_motor = Motor.from_robot(robot=machine, name="my_motor")
218
+
219
+ # Report a dictionary mapping optional properties to whether it is supported by
220
+ # this motor.
221
+ properties = await my_motor.get_properties()
222
+
223
+ # Print out the properties.
224
+ print(f'Properties: {properties}')
225
+
135
226
  Returns:
136
227
  Properties: Map of feature names to supported status.
228
+
229
+ For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#getproperties>`_.
137
230
  """
138
231
  ...
139
232
 
@@ -147,6 +240,15 @@ class Motor(ComponentBase):
147
240
  ):
148
241
  """
149
242
  Stop the motor immediately, without any gradual step down.
243
+
244
+ ::
245
+
246
+ my_motor = Motor.from_robot(robot=machine, name="my_motor")
247
+
248
+ # Stop the motor.
249
+ await my_motor.stop()
250
+
251
+ For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#stop>`_.
150
252
  """
151
253
  ...
152
254
 
@@ -161,9 +263,20 @@ class Motor(ComponentBase):
161
263
  """
162
264
  Returns whether or not the motor is currently running.
163
265
 
266
+ ::
267
+
268
+ my_motor = Motor.from_robot(robot=machine, name="my_motor")
269
+
270
+ # Check whether the motor is currently running.
271
+ powered = await my_motor.is_powered()
272
+
273
+ print('Powered: ', powered)
274
+
164
275
  Returns:
165
- bool: Indicates whether the motor is currently powered.
166
- float: The current power percentage of the motor
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.
278
+
279
+ For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#ispowered>`_.
167
280
  """
168
281
  ...
169
282
 
@@ -172,7 +285,17 @@ class Motor(ComponentBase):
172
285
  """
173
286
  Get if the motor is currently moving.
174
287
 
288
+ ::
289
+
290
+ my_motor = Motor.from_robot(robot=machine, name="my_motor")
291
+
292
+ # Check whether the motor is currently moving.
293
+ moving = await my_motor.is_moving()
294
+ print('Moving: ', moving)
295
+
175
296
  Returns:
176
297
  bool: Whether the motor is moving.
298
+
299
+ For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#ismoving>`_.
177
300
  """
178
301
  ...
@@ -1,7 +1,6 @@
1
1
  from grpclib.server import Stream
2
2
 
3
- from viam.errors import ResourceNotFoundError
4
- from viam.proto.common import DoCommandRequest, DoCommandResponse
3
+ from viam.proto.common import DoCommandRequest, DoCommandResponse, GetGeometriesRequest, GetGeometriesResponse
5
4
  from viam.proto.component.motor import (
6
5
  GetPositionRequest,
7
6
  GetPositionResponse,
@@ -15,13 +14,15 @@ from viam.proto.component.motor import (
15
14
  IsMovingResponse,
16
15
  IsPoweredRequest,
17
16
  IsPoweredResponse,
18
- MotorServiceBase,
19
17
  ResetZeroPositionRequest,
20
18
  ResetZeroPositionResponse,
21
19
  SetPowerRequest,
22
20
  SetPowerResponse,
21
+ SetRPMRequest,
22
+ SetRPMResponse,
23
23
  StopRequest,
24
24
  StopResponse,
25
+ UnimplementedMotorServiceBase,
25
26
  )
26
27
  from viam.resource.rpc_service_base import ResourceRPCServiceBase
27
28
  from viam.utils import dict_to_struct, struct_to_dict
@@ -29,7 +30,7 @@ from viam.utils import dict_to_struct, struct_to_dict
29
30
  from .motor import Motor
30
31
 
31
32
 
32
- class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
33
+ class MotorRPCService(UnimplementedMotorServiceBase, ResourceRPCServiceBase[Motor]):
33
34
  """
34
35
  gRPC Service for a Motor
35
36
  """
@@ -40,10 +41,7 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
40
41
  request = await stream.recv_message()
41
42
  assert request is not None
42
43
  name = request.name
43
- try:
44
- motor = self.get_resource(name)
45
- except ResourceNotFoundError as e:
46
- raise e.grpc_error
44
+ motor = self.get_resource(name)
47
45
  timeout = stream.deadline.time_remaining() if stream.deadline else None
48
46
  await motor.set_power(request.power_pct, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
49
47
  await stream.send_message(SetPowerResponse())
@@ -52,10 +50,7 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
52
50
  request = await stream.recv_message()
53
51
  assert request is not None
54
52
  name = request.name
55
- try:
56
- motor = self.get_resource(name)
57
- except ResourceNotFoundError as e:
58
- raise e.grpc_error
53
+ motor = self.get_resource(name)
59
54
  timeout = stream.deadline.time_remaining() if stream.deadline else None
60
55
  await motor.go_for(request.rpm, request.revolutions, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
61
56
  await stream.send_message(GoForResponse())
@@ -64,24 +59,27 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
64
59
  request = await stream.recv_message()
65
60
  assert request is not None
66
61
  name = request.name
67
- try:
68
- motor = self.get_resource(name)
69
- except ResourceNotFoundError as e:
70
- raise e.grpc_error
62
+ motor = self.get_resource(name)
71
63
  timeout = stream.deadline.time_remaining() if stream.deadline else None
72
64
  await motor.go_to(
73
65
  request.rpm, request.position_revolutions, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata
74
66
  )
75
67
  await stream.send_message(GoToResponse())
76
68
 
69
+ async def SetRPM(self, stream: Stream[SetRPMRequest, SetRPMResponse]) -> None:
70
+ request = await stream.recv_message()
71
+ assert request is not None
72
+ name = request.name
73
+ motor = self.get_resource(name)
74
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
75
+ await motor.set_rpm(request.rpm, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
76
+ await stream.send_message(SetRPMResponse())
77
+
77
78
  async def ResetZeroPosition(self, stream: Stream[ResetZeroPositionRequest, ResetZeroPositionResponse]) -> None:
78
79
  request = await stream.recv_message()
79
80
  assert request is not None
80
81
  name = request.name
81
- try:
82
- motor = self.get_resource(name)
83
- except ResourceNotFoundError as e:
84
- raise e.grpc_error
82
+ motor = self.get_resource(name)
85
83
  timeout = stream.deadline.time_remaining() if stream.deadline else None
86
84
  await motor.reset_zero_position(request.offset, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
87
85
  await stream.send_message(ResetZeroPositionResponse())
@@ -90,10 +88,7 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
90
88
  request = await stream.recv_message()
91
89
  assert request is not None
92
90
  name = request.name
93
- try:
94
- motor = self.get_resource(name)
95
- except ResourceNotFoundError as e:
96
- raise e.grpc_error
91
+ motor = self.get_resource(name)
97
92
  timeout = stream.deadline.time_remaining() if stream.deadline else None
98
93
  position = await motor.get_position(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
99
94
  await stream.send_message(GetPositionResponse(position=position))
@@ -102,10 +97,7 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
102
97
  request = await stream.recv_message()
103
98
  assert request is not None
104
99
  name = request.name
105
- try:
106
- motor = self.get_resource(name)
107
- except ResourceNotFoundError as e:
108
- raise e.grpc_error
100
+ motor = self.get_resource(name)
109
101
  timeout = stream.deadline.time_remaining() if stream.deadline else None
110
102
  properties = await motor.get_properties(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
111
103
  response = GetPropertiesResponse(**properties.__dict__)
@@ -115,10 +107,7 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
115
107
  request = await stream.recv_message()
116
108
  assert request is not None
117
109
  name = request.name
118
- try:
119
- motor = self.get_resource(name)
120
- except ResourceNotFoundError as e:
121
- raise e.grpc_error
110
+ motor = self.get_resource(name)
122
111
  timeout = stream.deadline.time_remaining() if stream.deadline else None
123
112
  await motor.stop(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
124
113
  response = StopResponse()
@@ -128,10 +117,7 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
128
117
  request = await stream.recv_message()
129
118
  assert request is not None
130
119
  name = request.name
131
- try:
132
- motor = self.get_resource(name)
133
- except ResourceNotFoundError as e:
134
- raise e.grpc_error
120
+ motor = self.get_resource(name)
135
121
  timeout = stream.deadline.time_remaining() if stream.deadline else None
136
122
  is_powered, power_pct = await motor.is_powered(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
137
123
  await stream.send_message(IsPoweredResponse(is_on=is_powered, power_pct=power_pct))
@@ -140,10 +126,7 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
140
126
  request = await stream.recv_message()
141
127
  assert request is not None
142
128
  name = request.name
143
- try:
144
- motor = self.get_resource(name)
145
- except ResourceNotFoundError as e:
146
- raise e.grpc_error
129
+ motor = self.get_resource(name)
147
130
  is_moving = await motor.is_moving()
148
131
  response = IsMovingResponse(is_moving=is_moving)
149
132
  await stream.send_message(response)
@@ -151,11 +134,17 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
151
134
  async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -> None:
152
135
  request = await stream.recv_message()
153
136
  assert request is not None
154
- try:
155
- motor = self.get_resource(request.name)
156
- except ResourceNotFoundError as e:
157
- raise e.grpc_error
137
+ motor = self.get_resource(request.name)
158
138
  timeout = stream.deadline.time_remaining() if stream.deadline else None
159
139
  result = await motor.do_command(command=struct_to_dict(request.command), timeout=timeout, metadata=stream.metadata)
160
140
  response = DoCommandResponse(result=dict_to_struct(result))
161
141
  await stream.send_message(response)
142
+
143
+ async def GetGeometries(self, stream: Stream[GetGeometriesRequest, GetGeometriesResponse]) -> None:
144
+ request = await stream.recv_message()
145
+ assert request is not None
146
+ motor = self.get_resource(request.name)
147
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
148
+ geometries = await motor.get_geometries(extra=struct_to_dict(request.extra), timeout=timeout)
149
+ response = GetGeometriesResponse(geometries=geometries)
150
+ await stream.send_message(response)
@@ -12,7 +12,7 @@ __all__ = [
12
12
  "Vector3",
13
13
  ]
14
14
 
15
- Registry.register_subtype(
15
+ Registry.register_api(
16
16
  ResourceRegistration(
17
17
  MovementSensor,
18
18
  MovementSensorRPCService,
@@ -1,12 +1,11 @@
1
- from typing import Any, Dict, Mapping, Optional, Tuple
1
+ from typing import Any, Dict, List, Mapping, Optional, Tuple
2
2
 
3
3
  from grpclib.client import Channel
4
4
 
5
5
  from viam.components.movement_sensor.movement_sensor import MovementSensor
6
- from viam.proto.common import DoCommandRequest, DoCommandResponse
6
+ from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetReadingsRequest, GetReadingsResponse
7
7
  from viam.proto.component.movementsensor import (
8
8
  GetAccuracyRequest,
9
- GetAccuracyResponse,
10
9
  GetAngularVelocityRequest,
11
10
  GetAngularVelocityResponse,
12
11
  GetCompassHeadingRequest,
@@ -24,7 +23,7 @@ from viam.proto.component.movementsensor import (
24
23
  MovementSensorServiceStub,
25
24
  )
26
25
  from viam.resource.rpc_client_base import ReconfigurableResourceRPCClientBase
27
- from viam.utils import ValueTypes, dict_to_struct, struct_to_dict
26
+ from viam.utils import SensorReading, ValueTypes, dict_to_struct, get_geometries, sensor_readings_value_to_native, struct_to_dict
28
27
 
29
28
  from . import GeoPoint, Orientation, Vector3
30
29
 
@@ -37,68 +36,126 @@ class MovementSensorClient(MovementSensor, ReconfigurableResourceRPCClientBase):
37
36
  self.client = MovementSensorServiceStub(channel)
38
37
  super().__init__(name)
39
38
 
40
- async def get_position(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> Tuple[GeoPoint, float]:
41
- if extra is None:
42
- extra = {}
39
+ async def get_position(
40
+ self,
41
+ *,
42
+ extra: Optional[Dict[str, Any]] = None,
43
+ timeout: Optional[float] = None,
44
+ **kwargs,
45
+ ) -> Tuple[GeoPoint, float]:
46
+ md = kwargs.get("metadata", self.Metadata()).proto
43
47
  request = GetPositionRequest(name=self.name, extra=dict_to_struct(extra))
44
- response: GetPositionResponse = await self.client.GetPosition(request, timeout=timeout)
48
+ response: GetPositionResponse = await self.client.GetPosition(request, timeout=timeout, metadata=md)
45
49
  return response.coordinate, response.altitude_m
46
50
 
47
- async def get_linear_velocity(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> Vector3:
48
- if extra is None:
49
- extra = {}
51
+ async def get_linear_velocity(
52
+ self,
53
+ *,
54
+ extra: Optional[Dict[str, Any]] = None,
55
+ timeout: Optional[float] = None,
56
+ **kwargs,
57
+ ) -> Vector3:
58
+ md = kwargs.get("metadata", self.Metadata()).proto
50
59
  request = GetLinearVelocityRequest(name=self.name, extra=dict_to_struct(extra))
51
- response: GetLinearVelocityResponse = await self.client.GetLinearVelocity(request, timeout=timeout)
60
+ response: GetLinearVelocityResponse = await self.client.GetLinearVelocity(request, timeout=timeout, metadata=md)
52
61
  return response.linear_velocity
53
62
 
54
- async def get_angular_velocity(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> Vector3:
55
- if extra is None:
56
- extra = {}
63
+ async def get_angular_velocity(
64
+ self,
65
+ *,
66
+ extra: Optional[Dict[str, Any]] = None,
67
+ timeout: Optional[float] = None,
68
+ **kwargs,
69
+ ) -> Vector3:
70
+ md = kwargs.get("metadata", self.Metadata()).proto
57
71
  request = GetAngularVelocityRequest(name=self.name, extra=dict_to_struct(extra))
58
- response: GetAngularVelocityResponse = await self.client.GetAngularVelocity(request, timeout=timeout)
72
+ response: GetAngularVelocityResponse = await self.client.GetAngularVelocity(request, timeout=timeout, metadata=md)
59
73
  return response.angular_velocity
60
74
 
61
- async def get_linear_acceleration(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> Vector3:
62
- if extra is None:
63
- extra = {}
75
+ async def get_linear_acceleration(
76
+ self,
77
+ *,
78
+ extra: Optional[Dict[str, Any]] = None,
79
+ timeout: Optional[float] = None,
80
+ **kwargs,
81
+ ) -> Vector3:
82
+ md = kwargs.get("metadata", self.Metadata()).proto
64
83
  request = GetLinearAccelerationRequest(name=self.name, extra=dict_to_struct(extra))
65
- response: GetLinearAccelerationResponse = await self.client.GetLinearAcceleration(request, timeout=timeout)
84
+ response: GetLinearAccelerationResponse = await self.client.GetLinearAcceleration(request, timeout=timeout, metadata=md)
66
85
  return response.linear_acceleration
67
86
 
68
- async def get_compass_heading(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> float:
69
- if extra is None:
70
- extra = {}
87
+ async def get_compass_heading(
88
+ self,
89
+ *,
90
+ extra: Optional[Dict[str, Any]] = None,
91
+ timeout: Optional[float] = None,
92
+ **kwargs,
93
+ ) -> float:
94
+ md = kwargs.get("metadata", self.Metadata()).proto
71
95
  request = GetCompassHeadingRequest(name=self.name, extra=dict_to_struct(extra))
72
- response: GetCompassHeadingResponse = await self.client.GetCompassHeading(request, timeout=timeout)
96
+ response: GetCompassHeadingResponse = await self.client.GetCompassHeading(request, timeout=timeout, metadata=md)
73
97
  return response.value
74
98
 
75
- async def get_orientation(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> Orientation:
76
- if extra is None:
77
- extra = {}
99
+ async def get_orientation(
100
+ self,
101
+ *,
102
+ extra: Optional[Dict[str, Any]] = None,
103
+ timeout: Optional[float] = None,
104
+ **kwargs,
105
+ ) -> Orientation:
106
+ md = kwargs.get("metadata", self.Metadata()).proto
78
107
  request = GetOrientationRequest(name=self.name, extra=dict_to_struct(extra))
79
- response: GetOrientationResponse = await self.client.GetOrientation(request, timeout=timeout)
108
+ response: GetOrientationResponse = await self.client.GetOrientation(request, timeout=timeout, metadata=md)
80
109
  return response.orientation
81
110
 
82
- async def get_properties(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> MovementSensor.Properties:
83
- if extra is None:
84
- extra = {}
111
+ async def get_properties(
112
+ self,
113
+ *,
114
+ extra: Optional[Dict[str, Any]] = None,
115
+ timeout: Optional[float] = None,
116
+ **kwargs,
117
+ ) -> MovementSensor.Properties:
118
+ md = kwargs.get("metadata", self.Metadata()).proto
85
119
  request = GetPropertiesRequest(name=self.name, extra=dict_to_struct(extra))
86
- response: GetPropertiesResponse = await self.client.GetProperties(request, timeout=timeout)
120
+ response: GetPropertiesResponse = await self.client.GetProperties(request, timeout=timeout, metadata=md)
87
121
  return MovementSensor.Properties.from_proto(response)
88
122
 
89
- async def get_accuracy(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> Mapping[str, float]:
90
- if extra is None:
91
- extra = {}
123
+ async def get_accuracy(
124
+ self,
125
+ *,
126
+ extra: Optional[Dict[str, Any]] = None,
127
+ timeout: Optional[float] = None,
128
+ **kwargs,
129
+ ) -> MovementSensor.Accuracy:
130
+ md = kwargs.get("metadata", self.Metadata()).proto
92
131
  request = GetAccuracyRequest(name=self.name, extra=dict_to_struct(extra))
93
- response: GetAccuracyResponse = await self.client.GetAccuracy(request, timeout=timeout)
94
- return response.accuracy
95
-
96
- async def get_readings(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> Mapping[str, Any]:
97
- if extra is None:
98
- extra = {}
99
- return await super().get_readings(extra=extra, timeout=timeout)
100
-
101
- async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Optional[float] = None) -> Mapping[str, ValueTypes]:
132
+ return await self.client.GetAccuracy(request, timeout=timeout, metadata=md)
133
+
134
+ async def get_readings(
135
+ self,
136
+ *,
137
+ extra: Optional[Dict[str, Any]] = None,
138
+ timeout: Optional[float] = None,
139
+ **kwargs,
140
+ ) -> Mapping[str, SensorReading]:
141
+ md = kwargs.get("metadata", self.Metadata()).proto
142
+ request = GetReadingsRequest(name=self.name, extra=dict_to_struct(extra))
143
+ response: GetReadingsResponse = await self.client.GetReadings(request, timeout=timeout, metadata=md)
144
+
145
+ return sensor_readings_value_to_native(response.readings)
146
+
147
+ async def do_command(
148
+ self,
149
+ command: Mapping[str, ValueTypes],
150
+ *,
151
+ timeout: Optional[float] = None,
152
+ **kwargs,
153
+ ) -> Mapping[str, ValueTypes]:
154
+ md = kwargs.get("metadata", self.Metadata()).proto
102
155
  request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
103
- response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout)
156
+ response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
104
157
  return struct_to_dict(response.result)
158
+
159
+ async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
160
+ md = kwargs.get("metadata", self.Metadata())
161
+ return await get_geometries(self.client, self.name, extra, timeout, md)