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
@@ -1,117 +1,180 @@
1
1
  import abc
2
- from dataclasses import dataclass
2
+ import sys
3
3
  from datetime import timedelta
4
- from multiprocessing import Queue
5
- from typing import Any, Callable, Dict, Final, List, Optional
4
+ from typing import Any, Dict, Final, List, Optional
6
5
 
7
- from viam.proto.common import BoardStatus
8
- from viam.proto.component.board import PowerMode
9
- from viam.resource.types import RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, Subtype
6
+ from viam.proto.component.board import PowerMode, ReadAnalogReaderResponse, StreamTicksResponse
7
+ from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
8
+ from viam.streams import Stream
10
9
 
11
10
  from ..component_base import ComponentBase
12
11
 
13
- PostProcessor = Callable[[int], int]
12
+ if sys.version_info >= (3, 10):
13
+ from typing import TypeAlias
14
+ else:
15
+ from typing_extensions import TypeAlias
16
+
17
+ Tick = StreamTicksResponse
18
+ TickStream = Stream[Tick]
14
19
 
15
20
 
16
21
  class Board(ComponentBase):
17
22
  """
18
23
  Board represents a physical general purpose compute board that contains various
19
- components such as analog readers, and digital interrupts.
24
+ components such as analog readers/writers, and digital interrupts.
20
25
 
21
26
  This acts as an abstract base class for any drivers representing specific
22
27
  board implementations. This cannot be used on its own. If the ``__init__()`` function is
23
28
  overridden, it must call the ``super().__init__()`` function.
29
+
30
+ ::
31
+
32
+ from viam.components.board import Board
33
+
34
+ For more information, see `Board component <https://docs.viam.com/dev/reference/apis/components/board/>`_.
24
35
  """
25
36
 
26
- SUBTYPE: Final = Subtype(RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "board")
37
+ API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
38
+ RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "board"
39
+ )
27
40
 
28
- @dataclass
29
- class Attributes:
30
- remote: bool
41
+ class Analog:
31
42
  """
32
- Indicates whether this board is accessed over a remote connection, e.g. gRPC.
43
+ Analog represents an analog pin reader or writer that resides on a Board.
33
44
  """
34
45
 
35
- class AnalogReader(ComponentBase):
46
+ name: str
47
+ """The name of the analog pin"""
48
+
49
+ Value: "TypeAlias" = ReadAnalogReaderResponse
36
50
  """
37
- AnalogReader represents an analog pin reader that resides on a Board.
51
+ Value contains the result of reading an analog reader. It contains the raw data read,
52
+ the reader's minimum and maximum possible values, and its step size (the minimum possible
53
+ change between values it can read).
54
+
55
+ For more information, see `analogs <https://docs.viam.com/dev/reference/apis/components/board/#analogs>`_.
38
56
  """
39
57
 
58
+ def __init__(self, name: str):
59
+ self.name = name
60
+
40
61
  @abc.abstractmethod
41
- async def read(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> int:
62
+ async def read(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Value:
42
63
  """
43
- Read the current value.
64
+ Read the current value from the reader.
65
+
66
+ ::
67
+
68
+ my_board = Board.from_robot(robot=machine, name="my_board")
69
+
70
+ # Get the Analog "my_example_analog_reader".
71
+ reader = await my_board.analog_by_name(
72
+ name="my_example_analog_reader")
73
+
74
+ # Get the value of the digital signal "my_example_analog_reader" has most
75
+ # recently measured.
76
+ reading = await reader.read()
44
77
 
45
78
  Returns:
46
- int: The current value.
79
+ Value: The current value, including the min, max, and step_size of the reader.
80
+
81
+ For more information, see `Board component Analog API <https://docs.viam.com/dev/reference/apis/components/board/#analog-api>`_.
47
82
  """
48
83
  ...
49
84
 
50
- class DigitalInterrupt(ComponentBase):
85
+ @abc.abstractmethod
86
+ async def write(self, value: int, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs):
87
+ """
88
+ Write a value to the Analog writer.
89
+
90
+ ::
91
+
92
+ my_board = Board.from_robot(robot=machine, name="my_board")
93
+
94
+ # Get the Analog "my_example_analog_writer".
95
+ writer = await my_board.analog_by_name(
96
+ name="my_example_analog_writer")
97
+
98
+ await writer.write(42)
99
+
100
+ Args:
101
+ value (int): Value to write to the analog writer.
102
+
103
+ For more information, see `Board component Analog API <https://docs.viam.com/dev/reference/apis/components/board/#analog-api>`_.
104
+ """
105
+ ...
106
+
107
+ class DigitalInterrupt:
51
108
  """
52
109
  DigitalInterrupt represents a configured interrupt on the Board that
53
110
  when interrupted, calls the added callbacks. Post processors can
54
111
  be added to modify what Value it ultimately returns.
112
+
113
+ For more information, see `digital_interrupts <https://docs.viam.com/dev/reference/apis/components/board/#digital_interrupts>`_.
55
114
  """
56
115
 
116
+ name: str
117
+ """The name of the digital interrupt."""
118
+
119
+ def __init__(self, name: str):
120
+ self.name = name
121
+
57
122
  @abc.abstractmethod
58
123
  async def value(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> int:
59
124
  """
60
125
  Get the current value of the interrupt,
61
126
  which is based on the type of interrupt.
62
127
 
63
- Returns:
64
- int: The current value.
65
- """
66
- ...
128
+ ::
67
129
 
68
- @abc.abstractmethod
69
- async def tick(self, high: bool, nanos: int):
70
- """
71
- This method is to be called either manually if the interrupt
72
- is a proxy to some real hardware interrupt or for tests.
130
+ my_board = Board.from_robot(robot=machine, name="my_board")
73
131
 
74
- Args:
75
- high (bool): If the signal of the interrupt is high.
76
- nanos (int): Nanoseconds from an arbitrary point in time,
77
- but always increasing and always needs to be accurate.
78
- Using ``time.time_ns()`` would be acceptable.
79
- """
80
- ...
132
+ # Get the DigitalInterrupt "my_example_digital_interrupt".
133
+ interrupt = await my_board.digital_interrupt_by_name(
134
+ name="my_example_digital_interrupt")
81
135
 
82
- @abc.abstractmethod
83
- async def add_callback(self, queue: Queue):
84
- """
85
- Add a callback to be sent the low/high value on ``tick()``.
136
+ # Get the amount of times this DigitalInterrupt has been interrupted with a
137
+ # tick.
138
+ count = await interrupt.value()
86
139
 
87
- Args:
88
- queue (Queue): The receiving queue.
89
- """
90
- ...
91
-
92
- @abc.abstractmethod
93
- async def add_post_processor(self, processor: PostProcessor):
94
- """
95
- Add a post processor that should be used to modify what
96
- is returned by ``self.value()``
140
+ Returns:
141
+ int: The current value.
97
142
 
98
- Args:
99
- processor (PostProcessor): The post processor to add.
143
+ For more information, see
144
+ `Board component DigitalInterrupt API <https://docs.viam.com/dev/reference/apis/components/board/#digitalinterrupt-api>`_.
100
145
  """
101
146
  ...
102
147
 
103
- class GPIOPin(ComponentBase):
148
+ class GPIOPin:
104
149
  """
105
- Abstract representation of an individual GPIO pin on a board
150
+ Abstract representation of an individual GPIO pin on a board.
106
151
  """
107
152
 
153
+ name: str
154
+ """The name of the GPIO pin."""
155
+
156
+ def __init__(self, name: str):
157
+ self.name = name
158
+
108
159
  @abc.abstractmethod
109
160
  async def set(self, high: bool, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs):
110
161
  """
111
162
  Set the pin to either low or high.
112
163
 
164
+ ::
165
+
166
+ my_board = Board.from_robot(robot=machine, name="my_board")
167
+
168
+ # Get the GPIOPin with pin number 15.
169
+ pin = await my_board.gpio_pin_by_name(name="15")
170
+
171
+ # Set the pin to high.
172
+ await pin.set(high=True)
173
+
113
174
  Args:
114
175
  high (bool): When true, sets the pin to high. When false, sets the pin to low.
176
+
177
+ For more information, see `GPIOPin API <https://docs.viam.com/dev/reference/apis/components/board/#gpiopin-api>`_.
115
178
  """
116
179
  ...
117
180
 
@@ -120,8 +183,20 @@ class Board(ComponentBase):
120
183
  """
121
184
  Get the high/low state of the pin.
122
185
 
186
+ ::
187
+
188
+ my_board = Board.from_robot(robot=machine, name="my_board")
189
+
190
+ # Get the GPIOPin with pin number 15.
191
+ pin = await my_board.gpio_pin_by_name(name="15")
192
+
193
+ # Get if it is true or false that the state of the pin is high.
194
+ high = await pin.get()
195
+
123
196
  Returns:
124
197
  bool: Indicates if the state of the pin is high.
198
+
199
+ For more information, see `GPIOPin API <https://docs.viam.com/dev/reference/apis/components/board/#gpiopin-api>`_.
125
200
  """
126
201
  ...
127
202
 
@@ -130,8 +205,20 @@ class Board(ComponentBase):
130
205
  """
131
206
  Get the pin's given duty cycle.
132
207
 
208
+ ::
209
+
210
+ my_board = Board.from_robot(robot=machine, name="my_board")
211
+
212
+ # Get the GPIOPin with pin number 15.
213
+ pin = await my_board.gpio_pin_by_name(name="15")
214
+
215
+ # Get if it is true or false that the state of the pin is high.
216
+ duty_cycle = await pin.get_pwm()
217
+
133
218
  Returns:
134
219
  float: The duty cycle.
220
+
221
+ For more information, see `GPIOPin API <https://docs.viam.com/dev/reference/apis/components/board/#gpiopin-api>`_.
135
222
  """
136
223
  ...
137
224
 
@@ -140,8 +227,21 @@ class Board(ComponentBase):
140
227
  """
141
228
  Set the pin to the given ``duty_cycle``.
142
229
 
230
+ ::
231
+
232
+ my_board = Board.from_robot(robot=machine, name="my_board")
233
+
234
+ # Get the GPIOPin with pin number 15.
235
+ pin = await my_board.gpio_pin_by_name(name="15")
236
+
237
+ # Set the duty cycle to .6, meaning that this pin will be in the high state for
238
+ # 60% of the duration of the PWM interval period.
239
+ await pin.set_pwm(duty_cycle=.6)
240
+
143
241
  Args:
144
242
  duty_cycle (float): The duty cycle.
243
+
244
+ For more information, see `GPIOPin API <https://docs.viam.com/dev/reference/apis/components/board/#gpiopin-api>`_.
145
245
  """
146
246
  ...
147
247
 
@@ -150,8 +250,20 @@ class Board(ComponentBase):
150
250
  """
151
251
  Get the PWM frequency of the pin.
152
252
 
253
+ ::
254
+
255
+ my_board = Board.from_robot(robot=machine, name="my_board")
256
+
257
+ # Get the GPIOPin with pin number 15.
258
+ pin = await my_board.gpio_pin_by_name(name="15")
259
+
260
+ # Get the PWM frequency of this pin.
261
+ freq = await pin.get_pwm_frequency()
262
+
153
263
  Returns:
154
264
  int: The PWM frequency.
265
+
266
+ For more information, see `GPIOPin API <https://docs.viam.com/dev/reference/apis/components/board/#gpiopin-api>`_.
155
267
  """
156
268
  ...
157
269
 
@@ -168,21 +280,42 @@ class Board(ComponentBase):
168
280
  Set the pin to the given PWM ``frequency`` (in Hz).
169
281
  When ``frequency`` is 0, it will use the board's default PWM frequency.
170
282
 
283
+ ::
284
+
285
+ my_board = Board.from_robot(robot=machine, name="my_board")
286
+
287
+ # Get the GPIOPin with pin number 15.
288
+ pin = await my_board.gpio_pin_by_name(name="15")
289
+
290
+ # Set the PWM frequency of this pin to 1600 Hz.
291
+ high = await pin.set_pwm_frequency(frequency=1600)
292
+
171
293
  Args:
172
294
  frequency (int): The frequency, in Hz.
295
+
296
+ For more information, see `GPIOPin API <https://docs.viam.com/dev/reference/apis/components/board/#gpiopin-api>`_.
173
297
  """
174
298
  ...
175
299
 
176
300
  @abc.abstractmethod
177
- async def analog_reader_by_name(self, name: str) -> AnalogReader:
301
+ async def analog_by_name(self, name: str) -> Analog:
178
302
  """
179
- Get an AnalogReader by ``name``.
303
+ Get an Analog (reader or writer) by ``name``.
304
+
305
+ ::
306
+
307
+ my_board = Board.from_robot(robot=machine, name="my_board")
308
+
309
+ # Get the Analog "my_example_analog_reader".
310
+ reader = await my_board.analog_by_name(name="my_example_analog_reader")
180
311
 
181
312
  Args:
182
313
  name (str): Name of the analog reader to be retrieved.
183
314
 
184
315
  Returns:
185
- AnalogReader: The analog reader.
316
+ Analog: The analog reader or writer.
317
+
318
+ For more information, see `Board component <https://docs.viam.com/dev/reference/apis/components/board/#analogbyname>`_.
186
319
  """
187
320
  ...
188
321
 
@@ -191,11 +324,21 @@ class Board(ComponentBase):
191
324
  """
192
325
  Get a DigitalInterrupt by ``name``.
193
326
 
327
+ ::
328
+
329
+ my_board = Board.from_robot(robot=machine, name="my_board")
330
+
331
+ # Get the DigitalInterrupt "my_example_digital_interrupt".
332
+ interrupt = await my_board.digital_interrupt_by_name(
333
+ name="my_example_digital_interrupt")
334
+
194
335
  Args:
195
336
  name (str): Name of the digital interrupt.
196
337
 
197
338
  Returns:
198
- DigitalInterrupt: the digital interrupt.
339
+ DigitalInterrupt: The digital interrupt.
340
+
341
+ For more information, see `Board component <https://docs.viam.com/dev/reference/apis/components/board/#digitalinterruptbyname>`_.
199
342
  """
200
343
  ...
201
344
 
@@ -204,61 +347,74 @@ class Board(ComponentBase):
204
347
  """
205
348
  Get a GPIO Pin by ``name``.
206
349
 
350
+ ::
351
+
352
+ my_board = Board.from_robot(robot=machine, name="my_board")
353
+
354
+ # Get the GPIOPin with pin number 15.
355
+ pin = await my_board.gpio_pin_by_name(name="15")
356
+
207
357
  Args:
208
358
  name (str): Name of the GPIO pin.
209
359
 
210
360
  Returns:
211
- GPIOPin: the pin.
361
+ GPIOPin: The pin.
362
+
363
+ For more information, see `Board component <https://docs.viam.com/dev/reference/apis/components/board/#gpiopinbyname>`_.
212
364
  """
213
365
  ...
214
366
 
215
367
  @abc.abstractmethod
216
- async def analog_reader_names(self) -> List[str]:
368
+ async def set_power_mode(
369
+ self,
370
+ mode: PowerMode.ValueType,
371
+ duration: Optional[timedelta] = None,
372
+ *,
373
+ extra: Optional[Dict[str, Any]] = None,
374
+ timeout: Optional[float] = None,
375
+ **kwargs,
376
+ ):
217
377
  """
218
- Get the names of all known analog readers.
378
+ Set the board to the indicated power mode.
219
379
 
220
- Returns:
221
- List[str]: The names of the analog readers..
222
- """
223
- ...
380
+ ::
224
381
 
225
- @abc.abstractmethod
226
- async def digital_interrupt_names(self) -> List[str]:
227
- """
228
- Get the names of all known digital interrupts.
382
+ my_board = Board.from_robot(robot=machine, name="my_board")
229
383
 
230
- Returns:
231
- List[str]: The names of the digital interrupts.
232
- """
233
- ...
384
+ # Set the power mode of the board to OFFLINE_DEEP.
385
+ status = await my_board.set_power_mode(mode=PowerMode.POWER_MODE_OFFLINE_DEEP)
234
386
 
235
- @abc.abstractmethod
236
- async def status(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> BoardStatus:
237
- """
238
- Return the current status of the board.
387
+ Args:
388
+ mode (PowerMode): The desired power mode.
389
+ duration (Optional[timedelta]): Requested duration to stay in power mode.
239
390
 
240
- Returns:
241
- viam.proto.common.BoardStatus: the status.
391
+ For more information, see `Board component <https://docs.viam.com/dev/reference/apis/components/board/#setpowermode>`_.
242
392
  """
243
393
  ...
244
394
 
245
395
  @abc.abstractmethod
246
- async def model_attributes(self) -> Attributes:
396
+ async def stream_ticks(self, interrupts: List[DigitalInterrupt], *, timeout: Optional[float] = None, **kwargs) -> TickStream:
247
397
  """
248
- Get the attributes related to the model of this board.
398
+ Stream digital interrupt ticks.
249
399
 
250
- Returns:
251
- Attributes: The attributes.
252
- """
253
- ...
400
+ ::
401
+
402
+
403
+ my_board = Board.from_robot(robot=machine, name="my_board")
404
+ di8 = await my_board.digital_interrupt_by_name(name="8")
405
+ di11 = await my_board.digital_interrupt_by_name(name="11")
406
+
407
+ # Iterate over stream of ticks from pins 8 and 11.
408
+ async for tick in await my_board.stream_ticks([di8, di11]):
409
+ print(f"Pin {tick.pin_name} changed to {'high' if tick.high else 'low'} at {tick.time}")
254
410
 
255
- @abc.abstractmethod
256
- async def set_power_mode(
257
- self, mode: PowerMode.ValueType, duration: Optional[timedelta] = None, *, timeout: Optional[float] = None, **kwargs
258
- ):
259
- """
260
- Set the board to the indicated power mode.
261
411
 
262
412
  Args:
263
- mode: the desired power mode
413
+ interrupts (List[DigitalInterrupt]) : list of digital interrupts to receive ticks from.
414
+
415
+ Returns:
416
+ TickStream: stream of ticks.
417
+
418
+ For more information, see `Board component <https://docs.viam.com/dev/reference/apis/components/board/#streamticks>`_.
264
419
  """
420
+ ...