From 6ee263282439fafb6459c93ccac3e3b2d68416f0 Mon Sep 17 00:00:00 2001 From: Naveed Jooma Date: Mon, 9 Mar 2026 19:26:55 -0400 Subject: [PATCH 01/12] Update deps and protos --- .github/workflows/update_protos.yml | 2 +- Makefile | 8 +- etc/generate_proto_import.py | 4 +- pyproject.toml | 38 +- requirements-test.txt | 9 +- src/viam/gen/app/agent/v1/agent_pb2.py | 2 +- src/viam/gen/app/agent/v1/agent_pb2.pyi | 331 +- .../gen/app/cloudslam/v1/cloud_slam_pb2.py | 2 +- .../gen/app/cloudslam/v1/cloud_slam_pb2.pyi | 473 +- src/viam/gen/app/data/v1/data_pb2.py | 2 +- src/viam/gen/app/data/v1/data_pb2.pyi | 2429 +++--- .../datapipelines/v1/data_pipelines_pb2.py | 2 +- .../datapipelines/v1/data_pipelines_pb2.pyi | 452 +- src/viam/gen/app/dataset/v1/dataset_pb2.py | 2 +- src/viam/gen/app/dataset/v1/dataset_pb2.pyi | 267 +- .../gen/app/datasync/v1/data_sync_grpc.py | 2 +- src/viam/gen/app/datasync/v1/data_sync_pb2.py | 4 +- .../gen/app/datasync/v1/data_sync_pb2.pyi | 554 +- .../app/mlinference/v1/ml_inference_pb2.py | 2 +- .../app/mlinference/v1/ml_inference_pb2.pyi | 87 +- .../gen/app/mltraining/v1/ml_training_grpc.py | 2 +- .../gen/app/mltraining/v1/ml_training_pb2.py | 4 +- .../gen/app/mltraining/v1/ml_training_pb2.pyi | 625 +- src/viam/gen/app/packages/v1/packages_grpc.py | 2 +- src/viam/gen/app/packages/v1/packages_pb2.py | 4 +- src/viam/gen/app/packages/v1/packages_pb2.pyi | 397 +- src/viam/gen/app/v1/app_pb2.py | 2 +- src/viam/gen/app/v1/app_pb2.pyi | 7339 +++++++++-------- src/viam/gen/app/v1/billing_pb2.py | 2 +- src/viam/gen/app/v1/billing_pb2.pyi | 926 ++- src/viam/gen/app/v1/end_user_pb2.py | 2 +- src/viam/gen/app/v1/end_user_pb2.pyi | 258 +- src/viam/gen/app/v1/robot_pb2.py | 2 +- src/viam/gen/app/v1/robot_pb2.pyi | 1631 ++-- src/viam/gen/common/v1/common_pb2.py | 2 +- src/viam/gen/common/v1/common_pb2.pyi | 1010 +-- src/viam/gen/component/arm/v1/arm_grpc.py | 2 +- src/viam/gen/component/arm/v1/arm_pb2.py | 4 +- src/viam/gen/component/arm/v1/arm_pb2.pyi | 418 +- .../gen/component/audioin/v1/audioin_grpc.py | 2 +- .../gen/component/audioin/v1/audioin_pb2.py | 4 +- .../gen/component/audioin/v1/audioin_pb2.pyi | 125 +- .../component/audioout/v1/audioout_grpc.py | 2 +- .../gen/component/audioout/v1/audioout_pb2.py | 4 +- .../component/audioout/v1/audioout_pb2.pyi | 67 +- src/viam/gen/component/base/v1/base_grpc.py | 2 +- src/viam/gen/component/base/v1/base_pb2.py | 4 +- src/viam/gen/component/base/v1/base_pb2.pyi | 330 +- src/viam/gen/component/board/v1/board_grpc.py | 2 +- src/viam/gen/component/board/v1/board_pb2.py | 4 +- src/viam/gen/component/board/v1/board_pb2.pyi | 623 +- .../gen/component/button/v1/button_grpc.py | 2 +- .../gen/component/button/v1/button_pb2.py | 4 +- .../gen/component/button/v1/button_pb2.pyi | 51 +- .../gen/component/camera/v1/camera_grpc.py | 3 +- .../gen/component/camera/v1/camera_pb2.py | 6 +- .../gen/component/camera/v1/camera_pb2.pyi | 508 +- .../gen/component/encoder/v1/encoder_grpc.py | 2 +- .../gen/component/encoder/v1/encoder_pb2.py | 4 +- .../gen/component/encoder/v1/encoder_pb2.pyi | 170 +- .../gen/component/gantry/v1/gantry_grpc.py | 2 +- .../gen/component/gantry/v1/gantry_pb2.py | 4 +- .../gen/component/gantry/v1/gantry_pb2.pyi | 301 +- .../gen/component/generic/v1/generic_grpc.py | 2 +- .../gen/component/generic/v1/generic_pb2.py | 4 +- .../gen/component/generic/v1/generic_pb2.pyi | 4 +- .../gen/component/gripper/v1/gripper_grpc.py | 2 +- .../gen/component/gripper/v1/gripper_pb2.py | 4 +- .../gen/component/gripper/v1/gripper_pb2.pyi | 223 +- .../v1/input_controller_grpc.py | 2 +- .../v1/input_controller_pb2.py | 4 +- .../v1/input_controller_pb2.pyi | 299 +- src/viam/gen/component/motor/v1/motor_grpc.py | 2 +- src/viam/gen/component/motor/v1/motor_pb2.py | 4 +- src/viam/gen/component/motor/v1/motor_pb2.pyi | 443 +- .../movementsensor/v1/movementsensor_grpc.py | 2 +- .../movementsensor/v1/movementsensor_pb2.py | 4 +- .../movementsensor/v1/movementsensor_pb2.pyi | 482 +- .../posetracker/v1/pose_tracker_grpc.py | 2 +- .../posetracker/v1/pose_tracker_pb2.py | 4 +- .../posetracker/v1/pose_tracker_pb2.pyi | 98 +- .../powersensor/v1/powersensor_grpc.py | 2 +- .../powersensor/v1/powersensor_pb2.py | 4 +- .../powersensor/v1/powersensor_pb2.pyi | 164 +- .../gen/component/sensor/v1/sensor_grpc.py | 2 +- .../gen/component/sensor/v1/sensor_pb2.py | 4 +- .../gen/component/sensor/v1/sensor_pb2.pyi | 4 +- src/viam/gen/component/servo/v1/servo_grpc.py | 2 +- src/viam/gen/component/servo/v1/servo_pb2.py | 4 +- src/viam/gen/component/servo/v1/servo_pb2.pyi | 189 +- .../gen/component/switch/v1/switch_grpc.py | 2 +- .../gen/component/switch/v1/switch_pb2.py | 4 +- .../gen/component/switch/v1/switch_pb2.pyi | 151 +- .../gen/component/testecho/v1/testecho_pb2.py | 2 +- .../component/testecho/v1/testecho_pb2.pyi | 158 +- src/viam/gen/google/__init__.py | 0 src/viam/gen/google/api/__init__.py | 0 src/viam/gen/google/api/annotations_grpc.py | 0 src/viam/gen/google/api/annotations_pb2.py | 17 + src/viam/gen/google/api/annotations_pb2.pyi | 26 + src/viam/gen/google/api/client_grpc.py | 0 src/viam/gen/google/api/client_pb2.py | 70 + src/viam/gen/google/api/client_pb2.pyi | 758 ++ src/viam/gen/google/api/expr/__init__.py | 0 .../gen/google/api/expr/v1alpha1/__init__.py | 0 .../google/api/expr/v1alpha1/checked_grpc.py | 0 .../google/api/expr/v1alpha1/checked_pb2.py | 52 + .../google/api/expr/v1alpha1/checked_pb2.pyi | 591 ++ .../gen/google/api/expr/v1alpha1/eval_grpc.py | 0 .../gen/google/api/expr/v1alpha1/eval_pb2.py | 27 + .../gen/google/api/expr/v1alpha1/eval_pb2.pyi | 198 + .../google/api/expr/v1alpha1/explain_grpc.py | 0 .../google/api/expr/v1alpha1/explain_pb2.py | 22 + .../google/api/expr/v1alpha1/explain_pb2.pyi | 87 + .../google/api/expr/v1alpha1/syntax_grpc.py | 0 .../google/api/expr/v1alpha1/syntax_pb2.py | 60 + .../google/api/expr/v1alpha1/syntax_pb2.pyi | 720 ++ .../google/api/expr/v1alpha1/value_grpc.py | 0 .../gen/google/api/expr/v1alpha1/value_pb2.py | 27 + .../google/api/expr/v1alpha1/value_pb2.pyi | 200 + .../gen/google/api/expr/v1beta1/__init__.py | 0 .../gen/google/api/expr/v1beta1/decl_grpc.py | 0 .../gen/google/api/expr/v1beta1/decl_pb2.py | 24 + .../gen/google/api/expr/v1beta1/decl_pb2.pyi | 158 + .../gen/google/api/expr/v1beta1/eval_grpc.py | 0 .../gen/google/api/expr/v1beta1/eval_pb2.py | 29 + .../gen/google/api/expr/v1beta1/eval_pb2.pyi | 220 + .../gen/google/api/expr/v1beta1/expr_grpc.py | 0 .../gen/google/api/expr/v1beta1/expr_pb2.py | 37 + .../gen/google/api/expr/v1beta1/expr_pb2.pyi | 436 + .../google/api/expr/v1beta1/source_grpc.py | 0 .../gen/google/api/expr/v1beta1/source_pb2.py | 23 + .../google/api/expr/v1beta1/source_pb2.pyi | 102 + .../gen/google/api/expr/v1beta1/value_grpc.py | 0 .../gen/google/api/expr/v1beta1/value_pb2.py | 27 + .../gen/google/api/expr/v1beta1/value_pb2.pyi | 198 + .../gen/google/api/field_behavior_grpc.py | 0 src/viam/gen/google/api/field_behavior_pb2.py | 20 + .../gen/google/api/field_behavior_pb2.pyi | 86 + src/viam/gen/google/api/field_info_grpc.py | 0 src/viam/gen/google/api/field_info_pb2.py | 22 + src/viam/gen/google/api/field_info_pb2.pyi | 108 + src/viam/gen/google/api/http_grpc.py | 0 src/viam/gen/google/api/http_pb2.py | 21 + src/viam/gen/google/api/http_pb2.pyi | 402 + src/viam/gen/google/api/httpbody_grpc.py | 0 src/viam/gen/google/api/httpbody_pb2.py | 18 + src/viam/gen/google/api/httpbody_pb2.pyi | 99 + src/viam/gen/google/api/launch_stage_grpc.py | 0 src/viam/gen/google/api/launch_stage_pb2.py | 17 + src/viam/gen/google/api/launch_stage_pb2.pyi | 72 + src/viam/gen/google/api/resource_grpc.py | 0 src/viam/gen/google/api/resource_pb2.py | 24 + src/viam/gen/google/api/resource_pb2.pyi | 211 + src/viam/gen/google/api/routing_grpc.py | 0 src/viam/gen/google/api/routing_pb2.py | 20 + src/viam/gen/google/api/routing_pb2.pyi | 436 + src/viam/gen/google/api/visibility_grpc.py | 0 src/viam/gen/google/api/visibility_pb2.py | 20 + src/viam/gen/google/api/visibility_pb2.pyi | 114 + src/viam/gen/google/rpc/__init__.py | 0 src/viam/gen/google/rpc/code_grpc.py | 0 src/viam/gen/google/rpc/code_pb2.py | 17 + src/viam/gen/google/rpc/code_pb2.pyi | 113 + src/viam/gen/google/rpc/context/__init__.py | 0 .../rpc/context/attribute_context_grpc.py | 0 .../rpc/context/attribute_context_pb2.py | 53 + .../rpc/context/attribute_context_pb2.pyi | 526 ++ src/viam/gen/google/rpc/error_details_grpc.py | 0 src/viam/gen/google/rpc/error_details_pb2.py | 52 + src/viam/gen/google/rpc/error_details_pb2.pyi | 471 ++ src/viam/gen/google/rpc/status_grpc.py | 0 src/viam/gen/google/rpc/status_pb2.py | 18 + src/viam/gen/google/rpc/status_pb2.pyi | 63 + src/viam/gen/module/v1/module_pb2.py | 2 +- src/viam/gen/module/v1/module_pb2.pyi | 265 +- .../proto/common/v1/common_pb2.py | 2 +- .../proto/common/v1/common_pb2.pyi | 201 +- .../proto/resource/v1/resource_pb2.py | 2 +- .../proto/resource/v1/resource_pb2.pyi | 52 +- .../opentelemetry/proto/trace/v1/trace_pb2.py | 2 +- .../proto/trace/v1/trace_pb2.pyi | 307 +- .../proto/rpc/examples/echo/v1/echo_grpc.py | 2 +- .../proto/rpc/examples/echo/v1/echo_pb2.py | 4 +- .../proto/rpc/examples/echo/v1/echo_pb2.pyi | 121 +- .../echoresource/v1/echoresource_pb2.py | 2 +- .../echoresource/v1/echoresource_pb2.pyi | 133 +- src/viam/gen/proto/rpc/v1/auth_grpc.py | 2 +- src/viam/gen/proto/rpc/v1/auth_pb2.py | 4 +- src/viam/gen/proto/rpc/v1/auth_pb2.pyi | 115 +- src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py | 4 +- src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.pyi | 345 +- .../gen/proto/rpc/webrtc/v1/signaling_grpc.py | 3 +- .../gen/proto/rpc/webrtc/v1/signaling_pb2.py | 6 +- .../gen/proto/rpc/webrtc/v1/signaling_pb2.pyi | 566 +- .../gen/provisioning/v1/provisioning_pb2.py | 2 +- .../gen/provisioning/v1/provisioning_pb2.pyi | 298 +- src/viam/gen/robot/v1/robot_grpc.py | 2 +- src/viam/gen/robot/v1/robot_pb2.py | 4 +- src/viam/gen/robot/v1/robot_pb2.pyi | 1320 +-- .../datamanager/v1/data_manager_grpc.py | 2 +- .../datamanager/v1/data_manager_pb2.py | 4 +- .../datamanager/v1/data_manager_pb2.pyi | 119 +- .../service/discovery/v1/discovery_grpc.py | 2 +- .../gen/service/discovery/v1/discovery_pb2.py | 4 +- .../service/discovery/v1/discovery_pb2.pyi | 70 +- .../gen/service/generic/v1/generic_grpc.py | 2 +- .../gen/service/generic/v1/generic_pb2.py | 4 +- .../gen/service/generic/v1/generic_pb2.pyi | 4 +- .../gen/service/mlmodel/v1/mlmodel_grpc.py | 2 +- .../gen/service/mlmodel/v1/mlmodel_pb2.py | 4 +- .../gen/service/mlmodel/v1/mlmodel_pb2.pyi | 559 +- src/viam/gen/service/motion/v1/motion_grpc.py | 2 +- src/viam/gen/service/motion/v1/motion_pb2.py | 4 +- src/viam/gen/service/motion/v1/motion_pb2.pyi | 1056 +-- .../service/navigation/v1/navigation_grpc.py | 2 +- .../service/navigation/v1/navigation_pb2.py | 4 +- .../service/navigation/v1/navigation_pb2.pyi | 473 +- .../gen/service/sensors/v1/sensors_grpc.py | 2 +- .../gen/service/sensors/v1/sensors_pb2.py | 4 +- .../gen/service/sensors/v1/sensors_pb2.pyi | 207 +- src/viam/gen/service/shell/v1/shell_grpc.py | 2 +- src/viam/gen/service/shell/v1/shell_pb2.py | 4 +- src/viam/gen/service/shell/v1/shell_pb2.pyi | 359 +- src/viam/gen/service/slam/v1/slam_grpc.py | 2 +- src/viam/gen/service/slam/v1/slam_pb2.py | 4 +- src/viam/gen/service/slam/v1/slam_pb2.pyi | 236 +- src/viam/gen/service/video/v1/video_grpc.py | 2 +- src/viam/gen/service/video/v1/video_pb2.py | 4 +- src/viam/gen/service/video/v1/video_pb2.pyi | 94 +- src/viam/gen/service/vision/v1/vision_grpc.py | 2 +- src/viam/gen/service/vision/v1/vision_pb2.py | 4 +- src/viam/gen/service/vision/v1/vision_pb2.pyi | 580 +- .../v1/world_state_store_grpc.py | 2 +- .../v1/world_state_store_pb2.py | 4 +- .../v1/world_state_store_pb2.pyi | 193 +- src/viam/gen/stream/v1/stream_pb2.py | 2 +- src/viam/gen/stream/v1/stream_pb2.pyi | 189 +- src/viam/gen/tagger/v1/tagger_pb2.py | 2 +- src/viam/gen/tagger/v1/tagger_pb2.pyi | 18 +- src/viam/proto/app/__init__.py | 617 +- src/viam/proto/app/agent/__init__.py | 33 +- src/viam/proto/app/billing.py | 83 +- src/viam/proto/app/cloudslam/__init__.py | 53 +- src/viam/proto/app/data/__init__.py | 191 +- src/viam/proto/app/datapipelines/__init__.py | 53 +- src/viam/proto/app/dataset/__init__.py | 45 +- src/viam/proto/app/datasync/__init__.py | 49 +- src/viam/proto/app/end_user.py | 39 +- src/viam/proto/app/mlinference/__init__.py | 26 +- src/viam/proto/app/mltraining/__init__.py | 63 +- src/viam/proto/app/packages/__init__.py | 43 +- src/viam/proto/app/robot.py | 95 +- src/viam/proto/common/__init__.py | 77 +- src/viam/proto/component/arm/__init__.py | 53 +- src/viam/proto/component/audioin/__init__.py | 29 +- src/viam/proto/component/audioout/__init__.py | 26 +- src/viam/proto/component/base/__init__.py | 47 +- src/viam/proto/component/board/__init__.py | 73 +- src/viam/proto/component/button/__init__.py | 26 +- src/viam/proto/component/camera/__init__.py | 53 +- src/viam/proto/component/encoder/__init__.py | 33 +- src/viam/proto/component/gantry/__init__.py | 45 +- src/viam/proto/component/generic/__init__.py | 17 +- src/viam/proto/component/gripper/__init__.py | 39 +- .../component/inputcontroller/__init__.py | 35 +- src/viam/proto/component/motor/__init__.py | 61 +- .../component/movementsensor/__init__.py | 47 +- .../proto/component/posetracker/__init__.py | 22 +- .../proto/component/powersensor/__init__.py | 27 +- src/viam/proto/component/sensor/__init__.py | 17 +- src/viam/proto/component/servo/__init__.py | 37 +- src/viam/proto/component/switch/__init__.py | 31 +- src/viam/proto/component/testecho/__init__.py | 35 +- src/viam/proto/module/__init__.py | 43 +- .../opentelemetry/proto/common/__init__.py | 26 +- .../opentelemetry/proto/resource/__init__.py | 11 +- .../opentelemetry/proto/trace/__init__.py | 26 +- src/viam/proto/provisioning/__init__.py | 47 +- src/viam/proto/robot/__init__.py | 145 +- src/viam/proto/rpc/auth.py | 31 +- src/viam/proto/rpc/examples/echo/__init__.py | 31 +- .../rpc/examples/echoresource/__init__.py | 27 +- src/viam/proto/rpc/webrtc/grpc.py | 41 +- src/viam/proto/rpc/webrtc/signaling.py | 63 +- .../proto/service/datamanager/__init__.py | 23 +- src/viam/proto/service/discovery/__init__.py | 26 +- src/viam/proto/service/generic/__init__.py | 17 +- src/viam/proto/service/mlmodel/__init__.py | 63 +- src/viam/proto/service/motion/__init__.py | 75 +- src/viam/proto/service/navigation/__init__.py | 63 +- src/viam/proto/service/sensors/__init__.py | 35 +- src/viam/proto/service/shell/__init__.py | 41 +- src/viam/proto/service/slam/__init__.py | 41 +- src/viam/proto/service/video/__init__.py | 26 +- src/viam/proto/service/vision/__init__.py | 51 +- .../proto/service/worldstatestore/__init__.py | 29 +- src/viam/proto/stream/__init__.py | 41 +- src/viam/proto/tagger/__init__.py | 7 +- uv.lock | 3374 ++++---- 300 files changed, 26568 insertions(+), 16973 deletions(-) create mode 100644 src/viam/gen/google/__init__.py create mode 100644 src/viam/gen/google/api/__init__.py create mode 100644 src/viam/gen/google/api/annotations_grpc.py create mode 100644 src/viam/gen/google/api/annotations_pb2.py create mode 100644 src/viam/gen/google/api/annotations_pb2.pyi create mode 100644 src/viam/gen/google/api/client_grpc.py create mode 100644 src/viam/gen/google/api/client_pb2.py create mode 100644 src/viam/gen/google/api/client_pb2.pyi create mode 100644 src/viam/gen/google/api/expr/__init__.py create mode 100644 src/viam/gen/google/api/expr/v1alpha1/__init__.py create mode 100644 src/viam/gen/google/api/expr/v1alpha1/checked_grpc.py create mode 100644 src/viam/gen/google/api/expr/v1alpha1/checked_pb2.py create mode 100644 src/viam/gen/google/api/expr/v1alpha1/checked_pb2.pyi create mode 100644 src/viam/gen/google/api/expr/v1alpha1/eval_grpc.py create mode 100644 src/viam/gen/google/api/expr/v1alpha1/eval_pb2.py create mode 100644 src/viam/gen/google/api/expr/v1alpha1/eval_pb2.pyi create mode 100644 src/viam/gen/google/api/expr/v1alpha1/explain_grpc.py create mode 100644 src/viam/gen/google/api/expr/v1alpha1/explain_pb2.py create mode 100644 src/viam/gen/google/api/expr/v1alpha1/explain_pb2.pyi create mode 100644 src/viam/gen/google/api/expr/v1alpha1/syntax_grpc.py create mode 100644 src/viam/gen/google/api/expr/v1alpha1/syntax_pb2.py create mode 100644 src/viam/gen/google/api/expr/v1alpha1/syntax_pb2.pyi create mode 100644 src/viam/gen/google/api/expr/v1alpha1/value_grpc.py create mode 100644 src/viam/gen/google/api/expr/v1alpha1/value_pb2.py create mode 100644 src/viam/gen/google/api/expr/v1alpha1/value_pb2.pyi create mode 100644 src/viam/gen/google/api/expr/v1beta1/__init__.py create mode 100644 src/viam/gen/google/api/expr/v1beta1/decl_grpc.py create mode 100644 src/viam/gen/google/api/expr/v1beta1/decl_pb2.py create mode 100644 src/viam/gen/google/api/expr/v1beta1/decl_pb2.pyi create mode 100644 src/viam/gen/google/api/expr/v1beta1/eval_grpc.py create mode 100644 src/viam/gen/google/api/expr/v1beta1/eval_pb2.py create mode 100644 src/viam/gen/google/api/expr/v1beta1/eval_pb2.pyi create mode 100644 src/viam/gen/google/api/expr/v1beta1/expr_grpc.py create mode 100644 src/viam/gen/google/api/expr/v1beta1/expr_pb2.py create mode 100644 src/viam/gen/google/api/expr/v1beta1/expr_pb2.pyi create mode 100644 src/viam/gen/google/api/expr/v1beta1/source_grpc.py create mode 100644 src/viam/gen/google/api/expr/v1beta1/source_pb2.py create mode 100644 src/viam/gen/google/api/expr/v1beta1/source_pb2.pyi create mode 100644 src/viam/gen/google/api/expr/v1beta1/value_grpc.py create mode 100644 src/viam/gen/google/api/expr/v1beta1/value_pb2.py create mode 100644 src/viam/gen/google/api/expr/v1beta1/value_pb2.pyi create mode 100644 src/viam/gen/google/api/field_behavior_grpc.py create mode 100644 src/viam/gen/google/api/field_behavior_pb2.py create mode 100644 src/viam/gen/google/api/field_behavior_pb2.pyi create mode 100644 src/viam/gen/google/api/field_info_grpc.py create mode 100644 src/viam/gen/google/api/field_info_pb2.py create mode 100644 src/viam/gen/google/api/field_info_pb2.pyi create mode 100644 src/viam/gen/google/api/http_grpc.py create mode 100644 src/viam/gen/google/api/http_pb2.py create mode 100644 src/viam/gen/google/api/http_pb2.pyi create mode 100644 src/viam/gen/google/api/httpbody_grpc.py create mode 100644 src/viam/gen/google/api/httpbody_pb2.py create mode 100644 src/viam/gen/google/api/httpbody_pb2.pyi create mode 100644 src/viam/gen/google/api/launch_stage_grpc.py create mode 100644 src/viam/gen/google/api/launch_stage_pb2.py create mode 100644 src/viam/gen/google/api/launch_stage_pb2.pyi create mode 100644 src/viam/gen/google/api/resource_grpc.py create mode 100644 src/viam/gen/google/api/resource_pb2.py create mode 100644 src/viam/gen/google/api/resource_pb2.pyi create mode 100644 src/viam/gen/google/api/routing_grpc.py create mode 100644 src/viam/gen/google/api/routing_pb2.py create mode 100644 src/viam/gen/google/api/routing_pb2.pyi create mode 100644 src/viam/gen/google/api/visibility_grpc.py create mode 100644 src/viam/gen/google/api/visibility_pb2.py create mode 100644 src/viam/gen/google/api/visibility_pb2.pyi create mode 100644 src/viam/gen/google/rpc/__init__.py create mode 100644 src/viam/gen/google/rpc/code_grpc.py create mode 100644 src/viam/gen/google/rpc/code_pb2.py create mode 100644 src/viam/gen/google/rpc/code_pb2.pyi create mode 100644 src/viam/gen/google/rpc/context/__init__.py create mode 100644 src/viam/gen/google/rpc/context/attribute_context_grpc.py create mode 100644 src/viam/gen/google/rpc/context/attribute_context_pb2.py create mode 100644 src/viam/gen/google/rpc/context/attribute_context_pb2.pyi create mode 100644 src/viam/gen/google/rpc/error_details_grpc.py create mode 100644 src/viam/gen/google/rpc/error_details_pb2.py create mode 100644 src/viam/gen/google/rpc/error_details_pb2.pyi create mode 100644 src/viam/gen/google/rpc/status_grpc.py create mode 100644 src/viam/gen/google/rpc/status_pb2.py create mode 100644 src/viam/gen/google/rpc/status_pb2.pyi diff --git a/.github/workflows/update_protos.yml b/.github/workflows/update_protos.yml index 0530aed83a..721669c01b 100644 --- a/.github/workflows/update_protos.yml +++ b/.github/workflows/update_protos.yml @@ -29,7 +29,7 @@ jobs: - uses: arduino/setup-protoc@v3 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - version: "29.2" + version: "34.0" - name: Install uv uses: astral-sh/setup-uv@v7 with: diff --git a/Makefile b/Makefile index 362abd3e2f..b6397e5a71 100644 --- a/Makefile +++ b/Makefile @@ -16,12 +16,14 @@ buf: clean rm -rf src/viam/gen chmod +x plugin/main.py uv pip install protoletariat - uv pip install protobuf==5.29.6 + uv pip install protobuf==7.34.0 $(eval API_VERSION := $(shell grep 'API_VERSION' src/viam/version_metadata.py | awk -F '"' '{print $$2}')) + buf generate buf.build/googleapis/googleapis --path google/rpc,google/api buf generate buf.build/viamrobotics/api:${API_VERSION} buf generate buf.build/viamrobotics/goutils - protol -e googl* --in-place -s _grpc.py -s _pb2.py -s _pb2.pyi -o src/viam/gen buf buf.build/viamrobotics/api - protol -e googl* --in-place -s _grpc.py -s _pb2.py -s _pb2.pyi -o src/viam/gen buf buf.build/viamrobotics/goutils + protol --in-place -s _grpc.py -s _pb2.py -s _pb2.pyi -o src/viam/gen buf buf.build/googleapis/googleapis + protol --in-place -s _grpc.py -s _pb2.py -s _pb2.pyi -o src/viam/gen buf buf.build/viamrobotics/api + protol --in-place -s _grpc.py -s _pb2.py -s _pb2.pyi -o src/viam/gen buf buf.build/viamrobotics/goutils find src/viam/gen -type d -exec touch {}/__init__.py \; uv run python3 -m etc.generate_proto_import -v diff --git a/etc/generate_proto_import.py b/etc/generate_proto_import.py index 00c7f13cb5..d0e0dff3e4 100644 --- a/etc/generate_proto_import.py +++ b/etc/generate_proto_import.py @@ -52,6 +52,8 @@ def get_packages(root: str) -> Dict[str, List[str]]: packages: Dict[str, List[str]] = {} for dirpath, _, filenames in os.walk(root): + if "google" in dirpath: + continue rel_path = Path(dirpath).relative_to(root).__str__() if "__" in rel_path: continue @@ -143,7 +145,7 @@ def check_class(obj) -> bool: f.write("Do not edit manually!\n") f.write("'''\n") for imp, cls in classes.items(): - f.write(f'from {"."*(len(package.split("."))+IMPORT_LEVEL)}{PROTO_GEN_PACKAGE}.{package}.{imp} import (\n') + f.write(f"from {'.' * (len(package.split('.')) + IMPORT_LEVEL)}{PROTO_GEN_PACKAGE}.{package}.{imp} import (\n") f.write(" %s\n" % (",\n ".join(cls))) f.write(")\n") f.write("\n__all__ = [\n") diff --git a/pyproject.toml b/pyproject.toml index b3916766f6..685b022be5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,35 +6,31 @@ authors = [ ] license = "Apache-2.0" readme = "README.md" -requires-python = ">=3.8.1" +requires-python = ">=3.10" dynamic = [ 'version', ] dependencies = [ - "googleapis-common-protos>=1.65.0", - "grpclib>=0.4.7", - "protobuf==5.29.6", - "typing-extensions>=4.12.2", + "grpclib>=0.4.9", + "protobuf==7.34.0", + "typing-extensions>=4.15.0", "pymongo>=4.10.1", ] [dependency-groups] dev = [ - "coverage>=7.6.1", - "mypy-protobuf>=3.6.0", - "myst-nb<1.0.0; python_version<'3.9'", - "myst-nb>=1.0.0; python_version>='3.9'", - "nbmake>=1.5.4", - "numpy<1.25.0; python_version<'3.9'", - "numpy>=1.26.2; python_version>='3.9'", - "pillow>=10.4.0", - "pyright>=1.1.382.post1", - "pytest-asyncio>=0.24.0", - "pytest>=8.3.3", - "ruff>=0.6.8", - "sphinx-autoapi<3.0.0; python_version<'3.9'", - "sphinx-autoapi>=3.0.0; python_version>='3.9'", - "sphinx-rtd-theme>=2.0.0", - "types-pillow>=10.2.0.20240822", + "coverage>=7.13.4", + "mypy-protobuf>=5.0.0", + "myst-nb>=1.4.0", + "nbmake>=1.5.5", + "numpy<2.3.0; python_version<'3.11'", + "numpy>=1.3.0; python_version>='3.11'", + "pillow>=12.1.1", + "pyright>=1.1.401", + "pytest-asyncio>=1.3.0", + "pytest>=9.0.2", + "ruff>=0.15.5", + "sphinx-autoapi>=3.7.0", + "sphinx-rtd-theme>=3.1.0", ] [project.urls] diff --git a/requirements-test.txt b/requirements-test.txt index 6ca693c927..b953b36fa6 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -1,6 +1,5 @@ - grpclib~=0.4.6 - googleapis-common-protos~=1.63.2 - typing-extensions~=4.8.0 + grpclib~=0.4.9 + typing-extensions~=4.15.0 Pillow~=10.4.0 - protobuf==5.29.6 - numpy~=1.21 + protobuf==7.34.0 + numpy~=1.26.2 diff --git a/src/viam/gen/app/agent/v1/agent_pb2.py b/src/viam/gen/app/agent/v1/agent_pb2.py index 89a837bf94..180e74f74d 100644 --- a/src/viam/gen/app/agent/v1/agent_pb2.py +++ b/src/viam/gen/app/agent/v1/agent_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'app/agent/v1/agent.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/agent/v1/agent.proto') _sym_db = _symbol_database.Default() from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 diff --git a/src/viam/gen/app/agent/v1/agent_pb2.pyi b/src/viam/gen/app/agent/v1/agent_pb2.pyi index 7ffec7ea72..cd03b831e3 100644 --- a/src/viam/gen/app/agent/v1/agent_pb2.pyi +++ b/src/viam/gen/app/agent/v1/agent_pb2.pyi @@ -2,28 +2,32 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.duration_pb2 -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import duration_pb2 as _duration_pb2 +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +if sys.version_info >= (3, 13): + from warnings import deprecated as _deprecated +else: + from typing_extensions import deprecated as _deprecated +DESCRIPTOR: _descriptor.FileDescriptor class _PackageFormat: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _PackageFormatEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PackageFormat.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _PackageFormatEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_PackageFormat.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor PACKAGE_FORMAT_UNSPECIFIED: _PackageFormat.ValueType 'unknown/unset (autodetection may be attempted)' PACKAGE_FORMAT_RAW: _PackageFormat.ValueType @@ -47,244 +51,259 @@ PACKAGE_FORMAT_EXECUTABLE: PackageFormat.ValueType 'set executable permissions' PACKAGE_FORMAT_XZ_EXECUTABLE: PackageFormat.ValueType 'decompress and set executable' -global___PackageFormat = PackageFormat +Global___PackageFormat: _TypeAlias = PackageFormat -@typing.final -class DeviceAgentConfigRequest(google.protobuf.message.Message): +@_typing.final +class DeviceAgentConfigRequest(_message.Message): """Device side""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class SubsystemVersionsEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str - value: builtins.str + @_typing.final + class SubsystemVersionsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str - def __init__(self, *, key: builtins.str=..., value: builtins.str=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - ID_FIELD_NUMBER: builtins.int - HOST_INFO_FIELD_NUMBER: builtins.int - SUBSYSTEM_VERSIONS_FIELD_NUMBER: builtins.int - VERSION_INFO_FIELD_NUMBER: builtins.int - AGENT_UPTIME_FIELD_NUMBER: builtins.int - VIAM_SERVER_UPTIME_FIELD_NUMBER: builtins.int - id: builtins.str + ID_FIELD_NUMBER: _builtins.int + HOST_INFO_FIELD_NUMBER: _builtins.int + SUBSYSTEM_VERSIONS_FIELD_NUMBER: _builtins.int + VERSION_INFO_FIELD_NUMBER: _builtins.int + AGENT_UPTIME_FIELD_NUMBER: _builtins.int + VIAM_SERVER_UPTIME_FIELD_NUMBER: _builtins.int + id: _builtins.str 'robot partID' - @property - def host_info(self) -> global___HostInfo: + @_builtins.property + def host_info(self) -> Global___HostInfo: """info about the host system""" - @property - def subsystem_versions(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def subsystem_versions(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: """current subsystems and versions DEPRECATED in favor of version_info """ - @property - def version_info(self) -> global___VersionInfo: + @_builtins.property + def version_info(self) -> Global___VersionInfo: """Currently installed versions for agent and viam-server""" - @property - def agent_uptime(self) -> google.protobuf.duration_pb2.Duration: + @_builtins.property + def agent_uptime(self) -> _duration_pb2.Duration: """how long viam-agent has been running since its most recent start""" - @property - def viam_server_uptime(self) -> google.protobuf.duration_pb2.Duration: + @_builtins.property + def viam_server_uptime(self) -> _duration_pb2.Duration: """how long viam-server has been running since its most recent start (omitted if not running)""" - def __init__(self, *, id: builtins.str=..., host_info: global___HostInfo | None=..., subsystem_versions: collections.abc.Mapping[builtins.str, builtins.str] | None=..., version_info: global___VersionInfo | None=..., agent_uptime: google.protobuf.duration_pb2.Duration | None=..., viam_server_uptime: google.protobuf.duration_pb2.Duration | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., host_info: Global___HostInfo | None=..., subsystem_versions: _abc.Mapping[_builtins.str, _builtins.str] | None=..., version_info: Global___VersionInfo | None=..., agent_uptime: _duration_pb2.Duration | None=..., viam_server_uptime: _duration_pb2.Duration | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['agent_uptime', b'agent_uptime', 'host_info', b'host_info', 'version_info', b'version_info', 'viam_server_uptime', b'viam_server_uptime'] - def HasField(self, field_name: typing.Literal['agent_uptime', b'agent_uptime', 'host_info', b'host_info', 'version_info', b'version_info', 'viam_server_uptime', b'viam_server_uptime']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['agent_uptime', b'agent_uptime', 'host_info', b'host_info', 'id', b'id', 'subsystem_versions', b'subsystem_versions', 'version_info', b'version_info', 'viam_server_uptime', b'viam_server_uptime'] - def ClearField(self, field_name: typing.Literal['agent_uptime', b'agent_uptime', 'host_info', b'host_info', 'id', b'id', 'subsystem_versions', b'subsystem_versions', 'version_info', b'version_info', 'viam_server_uptime', b'viam_server_uptime']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeviceAgentConfigRequest = DeviceAgentConfigRequest +Global___DeviceAgentConfigRequest: _TypeAlias = DeviceAgentConfigRequest -@typing.final -class DeviceAgentConfigResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeviceAgentConfigResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class SubsystemConfigsEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str + @_typing.final + class SubsystemConfigsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str - @property - def value(self) -> global___DeviceSubsystemConfig: + @_builtins.property + def value(self) -> Global___DeviceSubsystemConfig: ... - def __init__(self, *, key: builtins.str=..., value: global___DeviceSubsystemConfig | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: Global___DeviceSubsystemConfig | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def HasField(self, field_name: typing.Literal['value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - SUBSYSTEM_CONFIGS_FIELD_NUMBER: builtins.int - CHECK_INTERVAL_FIELD_NUMBER: builtins.int - AGENT_UPDATE_INFO_FIELD_NUMBER: builtins.int - VIAM_SERVER_UPDATE_INFO_FIELD_NUMBER: builtins.int - ADVANCED_SETTINGS_FIELD_NUMBER: builtins.int - NETWORK_CONFIGURATION_FIELD_NUMBER: builtins.int - ADDITIONAL_NETWORKS_FIELD_NUMBER: builtins.int - SYSTEM_CONFIGURATION_FIELD_NUMBER: builtins.int - - @property - def subsystem_configs(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___DeviceSubsystemConfig]: + SUBSYSTEM_CONFIGS_FIELD_NUMBER: _builtins.int + CHECK_INTERVAL_FIELD_NUMBER: _builtins.int + AGENT_UPDATE_INFO_FIELD_NUMBER: _builtins.int + VIAM_SERVER_UPDATE_INFO_FIELD_NUMBER: _builtins.int + ADVANCED_SETTINGS_FIELD_NUMBER: _builtins.int + NETWORK_CONFIGURATION_FIELD_NUMBER: _builtins.int + ADDITIONAL_NETWORKS_FIELD_NUMBER: _builtins.int + SYSTEM_CONFIGURATION_FIELD_NUMBER: _builtins.int + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def subsystem_configs(self) -> _containers.MessageMap[_builtins.str, Global___DeviceSubsystemConfig]: """subsystems to be installed/configured/updated note: previously installed subsystems will be removed from the system if removed from this list DEPRECATED in favor of indidivual update_info and settings fields """ - @property - def check_interval(self) -> google.protobuf.duration_pb2.Duration: + @_builtins.property + def check_interval(self) -> _duration_pb2.Duration: """how often this request should be repeated""" - @property - def agent_update_info(self) -> global___UpdateInfo: + @_builtins.property + def agent_update_info(self) -> Global___UpdateInfo: """update info for agent and viam-server, parsed/processed in App""" - @property - def viam_server_update_info(self) -> global___UpdateInfo: + @_builtins.property + def viam_server_update_info(self) -> Global___UpdateInfo: ... - @property - def advanced_settings(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def advanced_settings(self) -> _struct_pb2.Struct: """various settings that are passed directly to device Agent""" - @property - def network_configuration(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def network_configuration(self) -> _struct_pb2.Struct: ... - @property - def additional_networks(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def additional_networks(self) -> _struct_pb2.Struct: ... - @property - def system_configuration(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def system_configuration(self) -> _struct_pb2.Struct: ... - def __init__(self, *, subsystem_configs: collections.abc.Mapping[builtins.str, global___DeviceSubsystemConfig] | None=..., check_interval: google.protobuf.duration_pb2.Duration | None=..., agent_update_info: global___UpdateInfo | None=..., viam_server_update_info: global___UpdateInfo | None=..., advanced_settings: google.protobuf.struct_pb2.Struct | None=..., network_configuration: google.protobuf.struct_pb2.Struct | None=..., additional_networks: google.protobuf.struct_pb2.Struct | None=..., system_configuration: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, subsystem_configs: _abc.Mapping[_builtins.str, Global___DeviceSubsystemConfig] | None=..., check_interval: _duration_pb2.Duration | None=..., agent_update_info: Global___UpdateInfo | None=..., viam_server_update_info: Global___UpdateInfo | None=..., advanced_settings: _struct_pb2.Struct | None=..., network_configuration: _struct_pb2.Struct | None=..., additional_networks: _struct_pb2.Struct | None=..., system_configuration: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['additional_networks', b'additional_networks', 'advanced_settings', b'advanced_settings', 'agent_update_info', b'agent_update_info', 'check_interval', b'check_interval', 'network_configuration', b'network_configuration', 'system_configuration', b'system_configuration', 'viam_server_update_info', b'viam_server_update_info'] - def HasField(self, field_name: typing.Literal['additional_networks', b'additional_networks', 'advanced_settings', b'advanced_settings', 'agent_update_info', b'agent_update_info', 'check_interval', b'check_interval', 'network_configuration', b'network_configuration', 'system_configuration', b'system_configuration', 'viam_server_update_info', b'viam_server_update_info']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['additional_networks', b'additional_networks', 'advanced_settings', b'advanced_settings', 'agent_update_info', b'agent_update_info', 'check_interval', b'check_interval', 'network_configuration', b'network_configuration', 'subsystem_configs', b'subsystem_configs', 'system_configuration', b'system_configuration', 'viam_server_update_info', b'viam_server_update_info'] - def ClearField(self, field_name: typing.Literal['additional_networks', b'additional_networks', 'advanced_settings', b'advanced_settings', 'agent_update_info', b'agent_update_info', 'check_interval', b'check_interval', 'network_configuration', b'network_configuration', 'subsystem_configs', b'subsystem_configs', 'system_configuration', b'system_configuration', 'viam_server_update_info', b'viam_server_update_info']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeviceAgentConfigResponse = DeviceAgentConfigResponse +Global___DeviceAgentConfigResponse: _TypeAlias = DeviceAgentConfigResponse -@typing.final -class DeviceSubsystemConfig(google.protobuf.message.Message): +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class DeviceSubsystemConfig(_message.Message): """DEPRECATED as of January 2025""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - UPDATE_INFO_FIELD_NUMBER: builtins.int - DISABLE_FIELD_NUMBER: builtins.int - FORCE_RESTART_FIELD_NUMBER: builtins.int - ATTRIBUTES_FIELD_NUMBER: builtins.int - disable: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + UPDATE_INFO_FIELD_NUMBER: _builtins.int + DISABLE_FIELD_NUMBER: _builtins.int + FORCE_RESTART_FIELD_NUMBER: _builtins.int + ATTRIBUTES_FIELD_NUMBER: _builtins.int + disable: _builtins.bool 'if this subsystem is disabled and should not be started by the agent' - force_restart: builtins.bool + force_restart: _builtins.bool 'force_restart will restart the subsystem, even if no updates are available' - @property - def update_info(self) -> global___UpdateInfo: + @_builtins.property + def update_info(self) -> Global___UpdateInfo: """data needed to download/validate the subsystem""" - @property - def attributes(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def attributes(self) -> _struct_pb2.Struct: """arbitrary config sections""" - def __init__(self, *, update_info: global___UpdateInfo | None=..., disable: builtins.bool=..., force_restart: builtins.bool=..., attributes: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, update_info: Global___UpdateInfo | None=..., disable: _builtins.bool=..., force_restart: _builtins.bool=..., attributes: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['attributes', b'attributes', 'update_info', b'update_info'] - def HasField(self, field_name: typing.Literal['attributes', b'attributes', 'update_info', b'update_info']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['attributes', b'attributes', 'disable', b'disable', 'force_restart', b'force_restart', 'update_info', b'update_info'] - def ClearField(self, field_name: typing.Literal['attributes', b'attributes', 'disable', b'disable', 'force_restart', b'force_restart', 'update_info', b'update_info']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeviceSubsystemConfig = DeviceSubsystemConfig - -@typing.final -class VersionInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - AGENT_RUNNING_FIELD_NUMBER: builtins.int - AGENT_INSTALLED_FIELD_NUMBER: builtins.int - VIAM_SERVER_RUNNING_FIELD_NUMBER: builtins.int - VIAM_SERVER_INSTALLED_FIELD_NUMBER: builtins.int - agent_running: builtins.str +Global___DeviceSubsystemConfig: _TypeAlias = DeviceSubsystemConfig + +@_typing.final +class VersionInfo(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + AGENT_RUNNING_FIELD_NUMBER: _builtins.int + AGENT_INSTALLED_FIELD_NUMBER: _builtins.int + VIAM_SERVER_RUNNING_FIELD_NUMBER: _builtins.int + VIAM_SERVER_INSTALLED_FIELD_NUMBER: _builtins.int + agent_running: _builtins.str 'the version of agent currently running and making the request' - agent_installed: builtins.str + agent_installed: _builtins.str 'the version of agent installed (will run after restart if different)' - viam_server_running: builtins.str + viam_server_running: _builtins.str 'the version of viam-server currently running' - viam_server_installed: builtins.str + viam_server_installed: _builtins.str 'the version of viam-server installed (will run after restart if different)' - def __init__(self, *, agent_running: builtins.str=..., agent_installed: builtins.str=..., viam_server_running: builtins.str=..., viam_server_installed: builtins.str=...) -> None: + def __init__(self, *, agent_running: _builtins.str=..., agent_installed: _builtins.str=..., viam_server_running: _builtins.str=..., viam_server_installed: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['agent_installed', b'agent_installed', 'agent_running', b'agent_running', 'viam_server_installed', b'viam_server_installed', 'viam_server_running', b'viam_server_running'] - def ClearField(self, field_name: typing.Literal['agent_installed', b'agent_installed', 'agent_running', b'agent_running', 'viam_server_installed', b'viam_server_installed', 'viam_server_running', b'viam_server_running']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___VersionInfo = VersionInfo - -@typing.final -class HostInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PLATFORM_FIELD_NUMBER: builtins.int - DISTRO_FIELD_NUMBER: builtins.int - TAGS_FIELD_NUMBER: builtins.int - platform: builtins.str +Global___VersionInfo: _TypeAlias = VersionInfo + +@_typing.final +class HostInfo(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PLATFORM_FIELD_NUMBER: _builtins.int + DISTRO_FIELD_NUMBER: _builtins.int + TAGS_FIELD_NUMBER: _builtins.int + platform: _builtins.str 'platform is the docker styled combination of kernel and architecture. Ex: linux/amd64, darwin/arm64' - distro: builtins.str + distro: _builtins.str 'ID and VERSION_ID fields from /etc/os-release, colon seperated. Ex: ubuntu:22.04, debian:11' - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """additional tags for specific hardware or software that's present and may affect software selection ex: "jetson", "rpi4", "systemd", etc. """ - def __init__(self, *, platform: builtins.str=..., distro: builtins.str=..., tags: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, platform: _builtins.str=..., distro: _builtins.str=..., tags: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['distro', b'distro', 'platform', b'platform', 'tags', b'tags'] - def ClearField(self, field_name: typing.Literal['distro', b'distro', 'platform', b'platform', 'tags', b'tags']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___HostInfo = HostInfo - -@typing.final -class UpdateInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FILENAME_FIELD_NUMBER: builtins.int - URL_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - SHA256_FIELD_NUMBER: builtins.int - FORMAT_FIELD_NUMBER: builtins.int - filename: builtins.str +Global___HostInfo: _TypeAlias = HostInfo + +@_typing.final +class UpdateInfo(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FILENAME_FIELD_NUMBER: _builtins.int + URL_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + SHA256_FIELD_NUMBER: _builtins.int + FORMAT_FIELD_NUMBER: _builtins.int + filename: _builtins.str 'unpacked filename as it is expected on disk (regardless of url)' - url: builtins.str + url: _builtins.str 'url to download from' - version: builtins.str + version: _builtins.str 'version expected at the url' - sha256: builtins.bytes + sha256: _builtins.bytes 'sha256 sum of file as downloaded' - format: global___PackageFormat.ValueType + format: Global___PackageFormat.ValueType 'determines if decompression or executable permissions are needed' - def __init__(self, *, filename: builtins.str=..., url: builtins.str=..., version: builtins.str=..., sha256: builtins.bytes=..., format: global___PackageFormat.ValueType=...) -> None: + def __init__(self, *, filename: _builtins.str=..., url: _builtins.str=..., version: _builtins.str=..., sha256: _builtins.bytes=..., format: Global___PackageFormat.ValueType=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['filename', b'filename', 'format', b'format', 'sha256', b'sha256', 'url', b'url', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['filename', b'filename', 'format', b'format', 'sha256', b'sha256', 'url', b'url', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateInfo = UpdateInfo \ No newline at end of file +Global___UpdateInfo: _TypeAlias = UpdateInfo \ No newline at end of file diff --git a/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.py b/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.py index d55ad27503..d053fb605f 100644 --- a/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.py +++ b/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'app/cloudslam/v1/cloud_slam.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/cloudslam/v1/cloud_slam.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 diff --git a/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.pyi b/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.pyi index 8f1939117e..df14eb05c9 100644 --- a/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.pyi +++ b/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.pyi @@ -2,29 +2,29 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -from .... import common -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 -import google.protobuf.timestamp_pb2 +from collections import abc as _abc +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor class _EndStatus: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _EndStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_EndStatus.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _EndStatusEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_EndStatus.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor END_STATUS_UNSPECIFIED: _EndStatus.ValueType END_STATUS_SUCCESS: _EndStatus.ValueType END_STATUS_TIMEOUT: _EndStatus.ValueType @@ -36,349 +36,370 @@ END_STATUS_UNSPECIFIED: EndStatus.ValueType END_STATUS_SUCCESS: EndStatus.ValueType END_STATUS_TIMEOUT: EndStatus.ValueType END_STATUS_FAIL: EndStatus.ValueType -global___EndStatus = EndStatus +Global___EndStatus: _TypeAlias = EndStatus -@typing.final -class StartMappingSessionRequest(google.protobuf.message.Message): +@_typing.final +class StartMappingSessionRequest(_message.Message): """StartMappingSession""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SLAM_VERSION_FIELD_NUMBER: builtins.int - VIAM_SERVER_VERSION_FIELD_NUMBER: builtins.int - MAP_NAME_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - LOCATION_ID_FIELD_NUMBER: builtins.int - ROBOT_ID_FIELD_NUMBER: builtins.int - CAPTURE_INTERVAL_FIELD_NUMBER: builtins.int - SENSORS_FIELD_NUMBER: builtins.int - SLAM_CONFIG_FIELD_NUMBER: builtins.int - EXISTING_MAP_VERSION_FIELD_NUMBER: builtins.int - MODULE_FIELD_NUMBER: builtins.int - slam_version: builtins.str + DESCRIPTOR: _descriptor.Descriptor + SLAM_VERSION_FIELD_NUMBER: _builtins.int + VIAM_SERVER_VERSION_FIELD_NUMBER: _builtins.int + MAP_NAME_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + LOCATION_ID_FIELD_NUMBER: _builtins.int + ROBOT_ID_FIELD_NUMBER: _builtins.int + CAPTURE_INTERVAL_FIELD_NUMBER: _builtins.int + SENSORS_FIELD_NUMBER: _builtins.int + SLAM_CONFIG_FIELD_NUMBER: _builtins.int + EXISTING_MAP_VERSION_FIELD_NUMBER: _builtins.int + MODULE_FIELD_NUMBER: _builtins.int + slam_version: _builtins.str 'Version to use for slam, defaults stable' - viam_server_version: builtins.str + viam_server_version: _builtins.str 'Version to use for viam, defaults stable' - map_name: builtins.str - organization_id: builtins.str - location_id: builtins.str - robot_id: builtins.str - existing_map_version: builtins.str + map_name: _builtins.str + organization_id: _builtins.str + location_id: _builtins.str + robot_id: _builtins.str + existing_map_version: _builtins.str - @property - def capture_interval(self) -> global___CaptureInterval: + @_builtins.property + def capture_interval(self) -> Global___CaptureInterval: ... - @property - def sensors(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SensorInfo]: + @_builtins.property + def sensors(self) -> _containers.RepeatedCompositeFieldContainer[Global___SensorInfo]: ... - @property - def slam_config(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def slam_config(self) -> _struct_pb2.Struct: ... - @property - def module(self) -> global___Module: + @_builtins.property + def module(self) -> Global___Module: ... - def __init__(self, *, slam_version: builtins.str=..., viam_server_version: builtins.str=..., map_name: builtins.str=..., organization_id: builtins.str=..., location_id: builtins.str=..., robot_id: builtins.str=..., capture_interval: global___CaptureInterval | None=..., sensors: collections.abc.Iterable[global___SensorInfo] | None=..., slam_config: google.protobuf.struct_pb2.Struct | None=..., existing_map_version: builtins.str=..., module: global___Module | None=...) -> None: + def __init__(self, *, slam_version: _builtins.str=..., viam_server_version: _builtins.str=..., map_name: _builtins.str=..., organization_id: _builtins.str=..., location_id: _builtins.str=..., robot_id: _builtins.str=..., capture_interval: Global___CaptureInterval | None=..., sensors: _abc.Iterable[Global___SensorInfo] | None=..., slam_config: _struct_pb2.Struct | None=..., existing_map_version: _builtins.str=..., module: Global___Module | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['capture_interval', b'capture_interval', 'module', b'module', 'slam_config', b'slam_config'] - def HasField(self, field_name: typing.Literal['capture_interval', b'capture_interval', 'module', b'module', 'slam_config', b'slam_config']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['capture_interval', b'capture_interval', 'existing_map_version', b'existing_map_version', 'location_id', b'location_id', 'map_name', b'map_name', 'module', b'module', 'organization_id', b'organization_id', 'robot_id', b'robot_id', 'sensors', b'sensors', 'slam_config', b'slam_config', 'slam_version', b'slam_version', 'viam_server_version', b'viam_server_version'] - def ClearField(self, field_name: typing.Literal['capture_interval', b'capture_interval', 'existing_map_version', b'existing_map_version', 'location_id', b'location_id', 'map_name', b'map_name', 'module', b'module', 'organization_id', b'organization_id', 'robot_id', b'robot_id', 'sensors', b'sensors', 'slam_config', b'slam_config', 'slam_version', b'slam_version', 'viam_server_version', b'viam_server_version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StartMappingSessionRequest = StartMappingSessionRequest +Global___StartMappingSessionRequest: _TypeAlias = StartMappingSessionRequest -@typing.final -class Module(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - MODULE_ID_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - name: builtins.str - module_id: builtins.str - version: builtins.str +@_typing.final +class Module(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + MODULE_ID_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + name: _builtins.str + module_id: _builtins.str + version: _builtins.str - def __init__(self, *, name: builtins.str=..., module_id: builtins.str=..., version: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=..., module_id: _builtins.str=..., version: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['module_id', b'module_id', 'name', b'name', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['module_id', b'module_id', 'name', b'name', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Module = Module +Global___Module: _TypeAlias = Module -@typing.final -class SensorInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SOURCE_COMPONENT_NAME_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - DATA_FREQUENCY_HZ_FIELD_NUMBER: builtins.int - source_component_name: builtins.str - type: builtins.str +@_typing.final +class SensorInfo(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SOURCE_COMPONENT_NAME_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + DATA_FREQUENCY_HZ_FIELD_NUMBER: _builtins.int + source_component_name: _builtins.str + type: _builtins.str 'type is the RDK component type' - data_frequency_hz: builtins.str + data_frequency_hz: _builtins.str - def __init__(self, *, source_component_name: builtins.str=..., type: builtins.str=..., data_frequency_hz: builtins.str=...) -> None: + def __init__(self, *, source_component_name: _builtins.str=..., type: _builtins.str=..., data_frequency_hz: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data_frequency_hz', b'data_frequency_hz', 'source_component_name', b'source_component_name', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['data_frequency_hz', b'data_frequency_hz', 'source_component_name', b'source_component_name', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SensorInfo = SensorInfo +Global___SensorInfo: _TypeAlias = SensorInfo -@typing.final -class CaptureInterval(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - START_TIME_FIELD_NUMBER: builtins.int - END_TIME_FIELD_NUMBER: builtins.int +@_typing.final +class CaptureInterval(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + START_TIME_FIELD_NUMBER: _builtins.int + END_TIME_FIELD_NUMBER: _builtins.int - @property - def start_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def start_time(self) -> _timestamp_pb2.Timestamp: ... - @property - def end_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def end_time(self) -> _timestamp_pb2.Timestamp: """if no end_time specified cloud slam will be run using live sensors""" - def __init__(self, *, start_time: google.protobuf.timestamp_pb2.Timestamp | None=..., end_time: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, start_time: _timestamp_pb2.Timestamp | None=..., end_time: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['end_time', b'end_time', 'start_time', b'start_time'] - def HasField(self, field_name: typing.Literal['end_time', b'end_time', 'start_time', b'start_time']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['end_time', b'end_time', 'start_time', b'start_time'] - def ClearField(self, field_name: typing.Literal['end_time', b'end_time', 'start_time', b'start_time']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CaptureInterval = CaptureInterval +Global___CaptureInterval: _TypeAlias = CaptureInterval -@typing.final -class StartMappingSessionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SESSION_ID_FIELD_NUMBER: builtins.int - session_id: builtins.str +@_typing.final +class StartMappingSessionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SESSION_ID_FIELD_NUMBER: _builtins.int + session_id: _builtins.str - def __init__(self, *, session_id: builtins.str=...) -> None: + def __init__(self, *, session_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['session_id', b'session_id'] - def ClearField(self, field_name: typing.Literal['session_id', b'session_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StartMappingSessionResponse = StartMappingSessionResponse +Global___StartMappingSessionResponse: _TypeAlias = StartMappingSessionResponse -@typing.final -class GetActiveMappingSessionsForRobotRequest(google.protobuf.message.Message): +@_typing.final +class GetActiveMappingSessionsForRobotRequest(_message.Message): """GetActiveMappingSessionsForRobot""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ROBOT_ID_FIELD_NUMBER: builtins.int - robot_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ROBOT_ID_FIELD_NUMBER: _builtins.int + robot_id: _builtins.str 'assumes only one active mapping session on a robot' - def __init__(self, *, robot_id: builtins.str=...) -> None: + def __init__(self, *, robot_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['robot_id', b'robot_id'] - def ClearField(self, field_name: typing.Literal['robot_id', b'robot_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetActiveMappingSessionsForRobotRequest = GetActiveMappingSessionsForRobotRequest +Global___GetActiveMappingSessionsForRobotRequest: _TypeAlias = GetActiveMappingSessionsForRobotRequest -@typing.final -class GetActiveMappingSessionsForRobotResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SESSION_ID_FIELD_NUMBER: builtins.int - session_id: builtins.str +@_typing.final +class GetActiveMappingSessionsForRobotResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SESSION_ID_FIELD_NUMBER: _builtins.int + session_id: _builtins.str - def __init__(self, *, session_id: builtins.str=...) -> None: + def __init__(self, *, session_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['session_id', b'session_id'] - def ClearField(self, field_name: typing.Literal['session_id', b'session_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetActiveMappingSessionsForRobotResponse = GetActiveMappingSessionsForRobotResponse +Global___GetActiveMappingSessionsForRobotResponse: _TypeAlias = GetActiveMappingSessionsForRobotResponse -@typing.final -class GetMappingSessionPointCloudRequest(google.protobuf.message.Message): +@_typing.final +class GetMappingSessionPointCloudRequest(_message.Message): """GetMappingSessionPointCloud""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SESSION_ID_FIELD_NUMBER: builtins.int - session_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + SESSION_ID_FIELD_NUMBER: _builtins.int + session_id: _builtins.str - def __init__(self, *, session_id: builtins.str=...) -> None: + def __init__(self, *, session_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['session_id', b'session_id'] - def ClearField(self, field_name: typing.Literal['session_id', b'session_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetMappingSessionPointCloudRequest = GetMappingSessionPointCloudRequest +Global___GetMappingSessionPointCloudRequest: _TypeAlias = GetMappingSessionPointCloudRequest -@typing.final -class GetMappingSessionPointCloudResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MAP_URL_FIELD_NUMBER: builtins.int - POSE_FIELD_NUMBER: builtins.int - map_url: builtins.str +@_typing.final +class GetMappingSessionPointCloudResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MAP_URL_FIELD_NUMBER: _builtins.int + POSE_FIELD_NUMBER: _builtins.int + map_url: _builtins.str 'url to the pointcloud map' - @property - def pose(self) -> common.v1.common_pb2.Pose: + @_builtins.property + def pose(self) -> _common_pb2.Pose: """Current position within the SLAM Map""" - def __init__(self, *, map_url: builtins.str=..., pose: common.v1.common_pb2.Pose | None=...) -> None: + def __init__(self, *, map_url: _builtins.str=..., pose: _common_pb2.Pose | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['pose', b'pose'] - def HasField(self, field_name: typing.Literal['pose', b'pose']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['map_url', b'map_url', 'pose', b'pose'] - def ClearField(self, field_name: typing.Literal['map_url', b'map_url', 'pose', b'pose']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetMappingSessionPointCloudResponse = GetMappingSessionPointCloudResponse +Global___GetMappingSessionPointCloudResponse: _TypeAlias = GetMappingSessionPointCloudResponse -@typing.final -class ListMappingSessionsRequest(google.protobuf.message.Message): +@_typing.final +class ListMappingSessionsRequest(_message.Message): """ListMappingSessions""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - LOCATION_ID_FIELD_NUMBER: builtins.int - organization_id: builtins.str - location_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + LOCATION_ID_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + location_id: _builtins.str - def __init__(self, *, organization_id: builtins.str=..., location_id: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., location_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListMappingSessionsRequest = ListMappingSessionsRequest +Global___ListMappingSessionsRequest: _TypeAlias = ListMappingSessionsRequest -@typing.final -class ListMappingSessionsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SESSION_FIELD_NUMBER: builtins.int +@_typing.final +class ListMappingSessionsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SESSION_FIELD_NUMBER: _builtins.int - @property - def session(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MappingMetadata]: + @_builtins.property + def session(self) -> _containers.RepeatedCompositeFieldContainer[Global___MappingMetadata]: ... - def __init__(self, *, session: collections.abc.Iterable[global___MappingMetadata] | None=...) -> None: + def __init__(self, *, session: _abc.Iterable[Global___MappingMetadata] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['session', b'session'] - def ClearField(self, field_name: typing.Literal['session', b'session']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListMappingSessionsResponse = ListMappingSessionsResponse +Global___ListMappingSessionsResponse: _TypeAlias = ListMappingSessionsResponse -@typing.final -class StopMappingSessionRequest(google.protobuf.message.Message): +@_typing.final +class StopMappingSessionRequest(_message.Message): """StopMappingSession""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SESSION_ID_FIELD_NUMBER: builtins.int - session_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + SESSION_ID_FIELD_NUMBER: _builtins.int + session_id: _builtins.str - def __init__(self, *, session_id: builtins.str=...) -> None: + def __init__(self, *, session_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['session_id', b'session_id'] - def ClearField(self, field_name: typing.Literal['session_id', b'session_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StopMappingSessionRequest = StopMappingSessionRequest +Global___StopMappingSessionRequest: _TypeAlias = StopMappingSessionRequest -@typing.final -class StopMappingSessionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PACKAGE_ID_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - package_id: builtins.str - version: builtins.str +@_typing.final +class StopMappingSessionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PACKAGE_ID_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + package_id: _builtins.str + version: _builtins.str - def __init__(self, *, package_id: builtins.str=..., version: builtins.str=...) -> None: + def __init__(self, *, package_id: _builtins.str=..., version: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['package_id', b'package_id', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['package_id', b'package_id', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StopMappingSessionResponse = StopMappingSessionResponse +Global___StopMappingSessionResponse: _TypeAlias = StopMappingSessionResponse -@typing.final -class GetMappingSessionMetadataByIDRequest(google.protobuf.message.Message): +@_typing.final +class GetMappingSessionMetadataByIDRequest(_message.Message): """GetMappingSessionMetadataByID""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SESSION_ID_FIELD_NUMBER: builtins.int - session_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + SESSION_ID_FIELD_NUMBER: _builtins.int + session_id: _builtins.str - def __init__(self, *, session_id: builtins.str=...) -> None: + def __init__(self, *, session_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['session_id', b'session_id'] - def ClearField(self, field_name: typing.Literal['session_id', b'session_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetMappingSessionMetadataByIDRequest = GetMappingSessionMetadataByIDRequest +Global___GetMappingSessionMetadataByIDRequest: _TypeAlias = GetMappingSessionMetadataByIDRequest -@typing.final -class GetMappingSessionMetadataByIDResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SESSION_METADATA_FIELD_NUMBER: builtins.int +@_typing.final +class GetMappingSessionMetadataByIDResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SESSION_METADATA_FIELD_NUMBER: _builtins.int - @property - def session_metadata(self) -> global___MappingMetadata: + @_builtins.property + def session_metadata(self) -> Global___MappingMetadata: ... - def __init__(self, *, session_metadata: global___MappingMetadata | None=...) -> None: + def __init__(self, *, session_metadata: Global___MappingMetadata | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['session_metadata', b'session_metadata'] - def HasField(self, field_name: typing.Literal['session_metadata', b'session_metadata']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['session_metadata', b'session_metadata'] - def ClearField(self, field_name: typing.Literal['session_metadata', b'session_metadata']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetMappingSessionMetadataByIDResponse = GetMappingSessionMetadataByIDResponse +Global___GetMappingSessionMetadataByIDResponse: _TypeAlias = GetMappingSessionMetadataByIDResponse -@typing.final -class MappingMetadata(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - LOCATION_ID_FIELD_NUMBER: builtins.int - ROBOT_ID_FIELD_NUMBER: builtins.int - TIME_START_SUBMITTED_FIELD_NUMBER: builtins.int - TIME_CLOUD_RUN_JOB_STARTED_FIELD_NUMBER: builtins.int - TIME_END_SUBMITTED_FIELD_NUMBER: builtins.int - TIME_CLOUD_RUN_JOB_ENDED_FIELD_NUMBER: builtins.int - END_STATUS_FIELD_NUMBER: builtins.int - CLOUD_RUN_JOB_ID_FIELD_NUMBER: builtins.int - VIAM_SERVER_VERSION_FIELD_NUMBER: builtins.int - MAP_NAME_FIELD_NUMBER: builtins.int - SLAM_VERSION_FIELD_NUMBER: builtins.int - CONFIG_FIELD_NUMBER: builtins.int - ERROR_MSG_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class MappingMetadata(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + LOCATION_ID_FIELD_NUMBER: _builtins.int + ROBOT_ID_FIELD_NUMBER: _builtins.int + TIME_START_SUBMITTED_FIELD_NUMBER: _builtins.int + TIME_CLOUD_RUN_JOB_STARTED_FIELD_NUMBER: _builtins.int + TIME_END_SUBMITTED_FIELD_NUMBER: _builtins.int + TIME_CLOUD_RUN_JOB_ENDED_FIELD_NUMBER: _builtins.int + END_STATUS_FIELD_NUMBER: _builtins.int + CLOUD_RUN_JOB_ID_FIELD_NUMBER: _builtins.int + VIAM_SERVER_VERSION_FIELD_NUMBER: _builtins.int + MAP_NAME_FIELD_NUMBER: _builtins.int + SLAM_VERSION_FIELD_NUMBER: _builtins.int + CONFIG_FIELD_NUMBER: _builtins.int + ERROR_MSG_FIELD_NUMBER: _builtins.int + org_id: _builtins.str 'org associated with the slam session' - location_id: builtins.str + location_id: _builtins.str 'location associated with the slam session' - robot_id: builtins.str + robot_id: _builtins.str 'robot associated with slam session' - end_status: global___EndStatus.ValueType + end_status: Global___EndStatus.ValueType 'enums that represent “success”, “failed”, etc' - cloud_run_job_id: builtins.str + cloud_run_job_id: _builtins.str 'initially unset' - viam_server_version: builtins.str + viam_server_version: _builtins.str 'version tag from request, defaults to stable' - map_name: builtins.str + map_name: _builtins.str 'name of the map package' - slam_version: builtins.str + slam_version: _builtins.str 'version tag from request, defaults to stable' - config: builtins.str + config: _builtins.str 'a robot config for a slam session' - error_msg: builtins.str + error_msg: _builtins.str 'additional details on the end status if needed, such as errors' - @property - def time_start_submitted(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time_start_submitted(self) -> _timestamp_pb2.Timestamp: """time this document was created""" - @property - def time_cloud_run_job_started(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time_cloud_run_job_started(self) -> _timestamp_pb2.Timestamp: """time the cloud run job started""" - @property - def time_end_submitted(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time_end_submitted(self) -> _timestamp_pb2.Timestamp: """time StopSlamSession was called""" - @property - def time_cloud_run_job_ended(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time_cloud_run_job_ended(self) -> _timestamp_pb2.Timestamp: """time the cloud run job ended""" - def __init__(self, *, org_id: builtins.str=..., location_id: builtins.str=..., robot_id: builtins.str=..., time_start_submitted: google.protobuf.timestamp_pb2.Timestamp | None=..., time_cloud_run_job_started: google.protobuf.timestamp_pb2.Timestamp | None=..., time_end_submitted: google.protobuf.timestamp_pb2.Timestamp | None=..., time_cloud_run_job_ended: google.protobuf.timestamp_pb2.Timestamp | None=..., end_status: global___EndStatus.ValueType=..., cloud_run_job_id: builtins.str=..., viam_server_version: builtins.str=..., map_name: builtins.str=..., slam_version: builtins.str=..., config: builtins.str=..., error_msg: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=..., location_id: _builtins.str=..., robot_id: _builtins.str=..., time_start_submitted: _timestamp_pb2.Timestamp | None=..., time_cloud_run_job_started: _timestamp_pb2.Timestamp | None=..., time_end_submitted: _timestamp_pb2.Timestamp | None=..., time_cloud_run_job_ended: _timestamp_pb2.Timestamp | None=..., end_status: Global___EndStatus.ValueType=..., cloud_run_job_id: _builtins.str=..., viam_server_version: _builtins.str=..., map_name: _builtins.str=..., slam_version: _builtins.str=..., config: _builtins.str=..., error_msg: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['time_cloud_run_job_ended', b'time_cloud_run_job_ended', 'time_cloud_run_job_started', b'time_cloud_run_job_started', 'time_end_submitted', b'time_end_submitted', 'time_start_submitted', b'time_start_submitted'] - def HasField(self, field_name: typing.Literal['time_cloud_run_job_ended', b'time_cloud_run_job_ended', 'time_cloud_run_job_started', b'time_cloud_run_job_started', 'time_end_submitted', b'time_end_submitted', 'time_start_submitted', b'time_start_submitted']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['cloud_run_job_id', b'cloud_run_job_id', 'config', b'config', 'end_status', b'end_status', 'error_msg', b'error_msg', 'location_id', b'location_id', 'map_name', b'map_name', 'org_id', b'org_id', 'robot_id', b'robot_id', 'slam_version', b'slam_version', 'time_cloud_run_job_ended', b'time_cloud_run_job_ended', 'time_cloud_run_job_started', b'time_cloud_run_job_started', 'time_end_submitted', b'time_end_submitted', 'time_start_submitted', b'time_start_submitted', 'viam_server_version', b'viam_server_version'] - def ClearField(self, field_name: typing.Literal['cloud_run_job_id', b'cloud_run_job_id', 'config', b'config', 'end_status', b'end_status', 'error_msg', b'error_msg', 'location_id', b'location_id', 'map_name', b'map_name', 'org_id', b'org_id', 'robot_id', b'robot_id', 'slam_version', b'slam_version', 'time_cloud_run_job_ended', b'time_cloud_run_job_ended', 'time_cloud_run_job_started', b'time_cloud_run_job_started', 'time_end_submitted', b'time_end_submitted', 'time_start_submitted', b'time_start_submitted', 'viam_server_version', b'viam_server_version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MappingMetadata = MappingMetadata \ No newline at end of file +Global___MappingMetadata: _TypeAlias = MappingMetadata \ No newline at end of file diff --git a/src/viam/gen/app/data/v1/data_pb2.py b/src/viam/gen/app/data/v1/data_pb2.py index 4658fc1080..5aed9f78c5 100644 --- a/src/viam/gen/app/data/v1/data_pb2.py +++ b/src/viam/gen/app/data/v1/data_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'app/data/v1/data.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/data/v1/data.proto') _sym_db = _symbol_database.Default() from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 diff --git a/src/viam/gen/app/data/v1/data_pb2.pyi b/src/viam/gen/app/data/v1/data_pb2.pyi index 07ccaf099d..6b226638a5 100644 --- a/src/viam/gen/app/data/v1/data_pb2.pyi +++ b/src/viam/gen/app/data/v1/data_pb2.pyi @@ -2,29 +2,33 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.any_pb2 -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 -import google.protobuf.timestamp_pb2 +from collections import abc as _abc +from google.protobuf import any_pb2 as _any_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +if sys.version_info >= (3, 13): + from warnings import deprecated as _deprecated +else: + from typing_extensions import deprecated as _deprecated +DESCRIPTOR: _descriptor.FileDescriptor class _Order: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _OrderEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Order.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _OrderEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_Order.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor ORDER_UNSPECIFIED: _Order.ValueType ORDER_DESCENDING: _Order.ValueType ORDER_ASCENDING: _Order.ValueType @@ -34,14 +38,14 @@ class Order(_Order, metaclass=_OrderEnumTypeWrapper): ORDER_UNSPECIFIED: Order.ValueType ORDER_DESCENDING: Order.ValueType ORDER_ASCENDING: Order.ValueType -global___Order = Order +Global___Order: _TypeAlias = Order class _TagsFilterType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _TagsFilterTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TagsFilterType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _TagsFilterTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_TagsFilterType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor TAGS_FILTER_TYPE_UNSPECIFIED: _TagsFilterType.ValueType TAGS_FILTER_TYPE_MATCH_BY_OR: _TagsFilterType.ValueType 'TAGS_FILTER_TYPE_MATCH_BY_OR specifies documents matched (using logical OR) on the tags field in the TagsFilter.' @@ -59,14 +63,14 @@ TAGS_FILTER_TYPE_TAGGED: TagsFilterType.ValueType 'TAGS_FILTER_TYPE_TAGGED specifies that all tagged documents should be returned.' TAGS_FILTER_TYPE_UNTAGGED: TagsFilterType.ValueType 'TAGS_FILTER_TYPE_UNTAGGED specifes that all untagged documents should be returned.' -global___TagsFilterType = TagsFilterType +Global___TagsFilterType: _TypeAlias = TagsFilterType class _TabularDataSourceType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _TabularDataSourceTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TabularDataSourceType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _TabularDataSourceTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_TabularDataSourceType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor TABULAR_DATA_SOURCE_TYPE_UNSPECIFIED: _TabularDataSourceType.ValueType TABULAR_DATA_SOURCE_TYPE_STANDARD: _TabularDataSourceType.ValueType 'TABULAR_DATA_SOURCE_TYPE_STANDARD indicates reading from standard storage. This is\n the default option and available for all data synced to Viam.\n ' @@ -84,14 +88,14 @@ TABULAR_DATA_SOURCE_TYPE_HOT_STORAGE: TabularDataSourceType.ValueType 'TABULAR_DATA_SOURCE_TYPE_HOT_STORAGE indicates reading from hot storage. This is a\npremium feature requiring opting in specific data sources.\nSee docs at https://docs.viam.com/data-ai/capture-data/advanced/advanced-data-capture-sync/#capture-to-the-hot-data-store\n' TABULAR_DATA_SOURCE_TYPE_PIPELINE_SINK: TabularDataSourceType.ValueType 'TABULAR_DATA_SOURCE_TYPE_PIPELINE_SINK indicates reading the output data of\na data pipeline. When using this, a pipeline ID needs to be specified.\n' -global___TabularDataSourceType = TabularDataSourceType +Global___TabularDataSourceType: _TypeAlias = TabularDataSourceType class _IndexableCollection: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _IndexableCollectionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_IndexableCollection.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _IndexableCollectionEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_IndexableCollection.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor INDEXABLE_COLLECTION_UNSPECIFIED: _IndexableCollection.ValueType INDEXABLE_COLLECTION_HOT_STORE: _IndexableCollection.ValueType INDEXABLE_COLLECTION_PIPELINE_SINK: _IndexableCollection.ValueType @@ -101,14 +105,14 @@ class IndexableCollection(_IndexableCollection, metaclass=_IndexableCollectionEn INDEXABLE_COLLECTION_UNSPECIFIED: IndexableCollection.ValueType INDEXABLE_COLLECTION_HOT_STORE: IndexableCollection.ValueType INDEXABLE_COLLECTION_PIPELINE_SINK: IndexableCollection.ValueType -global___IndexableCollection = IndexableCollection +Global___IndexableCollection: _TypeAlias = IndexableCollection class _IndexCreator: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _IndexCreatorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_IndexCreator.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _IndexCreatorEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_IndexCreator.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor INDEX_CREATOR_UNSPECIFIED: _IndexCreator.ValueType INDEX_CREATOR_VIAM: _IndexCreator.ValueType INDEX_CREATOR_CUSTOMER: _IndexCreator.ValueType @@ -118,10 +122,10 @@ class IndexCreator(_IndexCreator, metaclass=_IndexCreatorEnumTypeWrapper): INDEX_CREATOR_UNSPECIFIED: IndexCreator.ValueType INDEX_CREATOR_VIAM: IndexCreator.ValueType INDEX_CREATOR_CUSTOMER: IndexCreator.ValueType -global___IndexCreator = IndexCreator +Global___IndexCreator: _TypeAlias = IndexCreator -@typing.final -class DataRequest(google.protobuf.message.Message): +@_typing.final +class DataRequest(_message.Message): """DataRequest encapsulates the filter for the data, a limit on the maximum results returned, a last string associated with the last returned document, and the sorting order by time. last is returned in the responses TabularDataByFilterResponse and BinaryDataByFilterResponse @@ -129,862 +133,939 @@ class DataRequest(google.protobuf.message.Message): We can then use the last string from the previous API calls in the subsequent request to get the next set of ordered documents. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FILTER_FIELD_NUMBER: builtins.int - LIMIT_FIELD_NUMBER: builtins.int - LAST_FIELD_NUMBER: builtins.int - SORT_ORDER_FIELD_NUMBER: builtins.int - limit: builtins.int - last: builtins.str - sort_order: global___Order.ValueType + DESCRIPTOR: _descriptor.Descriptor + FILTER_FIELD_NUMBER: _builtins.int + LIMIT_FIELD_NUMBER: _builtins.int + LAST_FIELD_NUMBER: _builtins.int + SORT_ORDER_FIELD_NUMBER: _builtins.int + limit: _builtins.int + last: _builtins.str + sort_order: Global___Order.ValueType - @property - def filter(self) -> global___Filter: + @_builtins.property + def filter(self) -> Global___Filter: ... - def __init__(self, *, filter: global___Filter | None=..., limit: builtins.int=..., last: builtins.str=..., sort_order: global___Order.ValueType=...) -> None: + def __init__(self, *, filter: Global___Filter | None=..., limit: _builtins.int=..., last: _builtins.str=..., sort_order: Global___Order.ValueType=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['filter', b'filter'] - def HasField(self, field_name: typing.Literal['filter', b'filter']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['filter', b'filter', 'last', b'last', 'limit', b'limit', 'sort_order', b'sort_order'] - def ClearField(self, field_name: typing.Literal['filter', b'filter', 'last', b'last', 'limit', b'limit', 'sort_order', b'sort_order']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DataRequest = DataRequest +Global___DataRequest: _TypeAlias = DataRequest -@typing.final -class Filter(google.protobuf.message.Message): +@_typing.final +class Filter(_message.Message): """Filter defines the fields over which we can filter data using a logic AND. For example, if component_type and robot_id are specified, only data from that `robot_id` of type `component_type` is returned. However, we logical OR over the specified tags and bounding box labels, such that if component_type, robot_id, tagA, tagB are specified, we return data from that `robot_id` of type `component_type` with `tagA` or `tagB`. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - COMPONENT_NAME_FIELD_NUMBER: builtins.int - COMPONENT_TYPE_FIELD_NUMBER: builtins.int - METHOD_FIELD_NUMBER: builtins.int - ROBOT_NAME_FIELD_NUMBER: builtins.int - ROBOT_ID_FIELD_NUMBER: builtins.int - PART_NAME_FIELD_NUMBER: builtins.int - PART_ID_FIELD_NUMBER: builtins.int - LOCATION_IDS_FIELD_NUMBER: builtins.int - ORGANIZATION_IDS_FIELD_NUMBER: builtins.int - MIME_TYPE_FIELD_NUMBER: builtins.int - INTERVAL_FIELD_NUMBER: builtins.int - TAGS_FILTER_FIELD_NUMBER: builtins.int - BBOX_LABELS_FIELD_NUMBER: builtins.int - DATASET_ID_FIELD_NUMBER: builtins.int - component_name: builtins.str - component_type: builtins.str - method: builtins.str - robot_name: builtins.str - robot_id: builtins.str - part_name: builtins.str - part_id: builtins.str - dataset_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + COMPONENT_NAME_FIELD_NUMBER: _builtins.int + COMPONENT_TYPE_FIELD_NUMBER: _builtins.int + METHOD_FIELD_NUMBER: _builtins.int + ROBOT_NAME_FIELD_NUMBER: _builtins.int + ROBOT_ID_FIELD_NUMBER: _builtins.int + PART_NAME_FIELD_NUMBER: _builtins.int + PART_ID_FIELD_NUMBER: _builtins.int + LOCATION_IDS_FIELD_NUMBER: _builtins.int + ORGANIZATION_IDS_FIELD_NUMBER: _builtins.int + MIME_TYPE_FIELD_NUMBER: _builtins.int + INTERVAL_FIELD_NUMBER: _builtins.int + TAGS_FILTER_FIELD_NUMBER: _builtins.int + BBOX_LABELS_FIELD_NUMBER: _builtins.int + DATASET_ID_FIELD_NUMBER: _builtins.int + component_name: _builtins.str + component_type: _builtins.str + method: _builtins.str + robot_name: _builtins.str + robot_id: _builtins.str + part_name: _builtins.str + part_id: _builtins.str + dataset_id: _builtins.str - @property - def location_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def location_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def organization_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def organization_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def mime_type(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def mime_type(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def interval(self) -> global___CaptureInterval: + @_builtins.property + def interval(self) -> Global___CaptureInterval: ... - @property - def tags_filter(self) -> global___TagsFilter: + @_builtins.property + def tags_filter(self) -> Global___TagsFilter: ... - @property - def bbox_labels(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def bbox_labels(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """bbox_labels are used to match documents with the specified bounding box labels (using logical OR).""" - def __init__(self, *, component_name: builtins.str=..., component_type: builtins.str=..., method: builtins.str=..., robot_name: builtins.str=..., robot_id: builtins.str=..., part_name: builtins.str=..., part_id: builtins.str=..., location_ids: collections.abc.Iterable[builtins.str] | None=..., organization_ids: collections.abc.Iterable[builtins.str] | None=..., mime_type: collections.abc.Iterable[builtins.str] | None=..., interval: global___CaptureInterval | None=..., tags_filter: global___TagsFilter | None=..., bbox_labels: collections.abc.Iterable[builtins.str] | None=..., dataset_id: builtins.str=...) -> None: + def __init__(self, *, component_name: _builtins.str=..., component_type: _builtins.str=..., method: _builtins.str=..., robot_name: _builtins.str=..., robot_id: _builtins.str=..., part_name: _builtins.str=..., part_id: _builtins.str=..., location_ids: _abc.Iterable[_builtins.str] | None=..., organization_ids: _abc.Iterable[_builtins.str] | None=..., mime_type: _abc.Iterable[_builtins.str] | None=..., interval: Global___CaptureInterval | None=..., tags_filter: Global___TagsFilter | None=..., bbox_labels: _abc.Iterable[_builtins.str] | None=..., dataset_id: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['interval', b'interval', 'tags_filter', b'tags_filter'] - def HasField(self, field_name: typing.Literal['interval', b'interval', 'tags_filter', b'tags_filter']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['bbox_labels', b'bbox_labels', 'component_name', b'component_name', 'component_type', b'component_type', 'dataset_id', b'dataset_id', 'interval', b'interval', 'location_ids', b'location_ids', 'method', b'method', 'mime_type', b'mime_type', 'organization_ids', b'organization_ids', 'part_id', b'part_id', 'part_name', b'part_name', 'robot_id', b'robot_id', 'robot_name', b'robot_name', 'tags_filter', b'tags_filter'] - def ClearField(self, field_name: typing.Literal['bbox_labels', b'bbox_labels', 'component_name', b'component_name', 'component_type', b'component_type', 'dataset_id', b'dataset_id', 'interval', b'interval', 'location_ids', b'location_ids', 'method', b'method', 'mime_type', b'mime_type', 'organization_ids', b'organization_ids', 'part_id', b'part_id', 'part_name', b'part_name', 'robot_id', b'robot_id', 'robot_name', b'robot_name', 'tags_filter', b'tags_filter']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Filter = Filter +Global___Filter: _TypeAlias = Filter -@typing.final -class TagsFilter(google.protobuf.message.Message): +@_typing.final +class TagsFilter(_message.Message): """TagsFilter defines the type of filtering and, if applicable, over which tags to perform a logical OR.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TYPE_FIELD_NUMBER: builtins.int - TAGS_FIELD_NUMBER: builtins.int - type: global___TagsFilterType.ValueType + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + TAGS_FIELD_NUMBER: _builtins.int + type: Global___TagsFilterType.ValueType - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """Tags are used to match documents if `type` is UNSPECIFIED or MATCH_BY_OR.""" - def __init__(self, *, type: global___TagsFilterType.ValueType=..., tags: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, type: Global___TagsFilterType.ValueType=..., tags: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['tags', b'tags', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['tags', b'tags', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TagsFilter = TagsFilter +Global___TagsFilter: _TypeAlias = TagsFilter -@typing.final -class CaptureMetadata(google.protobuf.message.Message): +@_typing.final +class CaptureMetadata(_message.Message): """CaptureMetadata contains information on the settings used for the data capture.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class MethodParametersEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str + @_typing.final + class MethodParametersEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str - @property - def value(self) -> google.protobuf.any_pb2.Any: + @_builtins.property + def value(self) -> _any_pb2.Any: ... - def __init__(self, *, key: builtins.str=..., value: google.protobuf.any_pb2.Any | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _any_pb2.Any | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def HasField(self, field_name: typing.Literal['value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - LOCATION_ID_FIELD_NUMBER: builtins.int - ROBOT_NAME_FIELD_NUMBER: builtins.int - ROBOT_ID_FIELD_NUMBER: builtins.int - PART_NAME_FIELD_NUMBER: builtins.int - PART_ID_FIELD_NUMBER: builtins.int - COMPONENT_TYPE_FIELD_NUMBER: builtins.int - COMPONENT_NAME_FIELD_NUMBER: builtins.int - METHOD_NAME_FIELD_NUMBER: builtins.int - METHOD_PARAMETERS_FIELD_NUMBER: builtins.int - TAGS_FIELD_NUMBER: builtins.int - MIME_TYPE_FIELD_NUMBER: builtins.int - organization_id: builtins.str - location_id: builtins.str - robot_name: builtins.str - robot_id: builtins.str - part_name: builtins.str - part_id: builtins.str - component_type: builtins.str - component_name: builtins.str - method_name: builtins.str - mime_type: builtins.str - - @property - def method_parameters(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, google.protobuf.any_pb2.Any]: - ... - - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: - ... - - def __init__(self, *, organization_id: builtins.str=..., location_id: builtins.str=..., robot_name: builtins.str=..., robot_id: builtins.str=..., part_name: builtins.str=..., part_id: builtins.str=..., component_type: builtins.str=..., component_name: builtins.str=..., method_name: builtins.str=..., method_parameters: collections.abc.Mapping[builtins.str, google.protobuf.any_pb2.Any] | None=..., tags: collections.abc.Iterable[builtins.str] | None=..., mime_type: builtins.str=...) -> None: - ... - - def ClearField(self, field_name: typing.Literal['component_name', b'component_name', 'component_type', b'component_type', 'location_id', b'location_id', 'method_name', b'method_name', 'method_parameters', b'method_parameters', 'mime_type', b'mime_type', 'organization_id', b'organization_id', 'part_id', b'part_id', 'part_name', b'part_name', 'robot_id', b'robot_id', 'robot_name', b'robot_name', 'tags', b'tags']) -> None: - ... -global___CaptureMetadata = CaptureMetadata - -@typing.final -class CaptureInterval(google.protobuf.message.Message): + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + LOCATION_ID_FIELD_NUMBER: _builtins.int + ROBOT_NAME_FIELD_NUMBER: _builtins.int + ROBOT_ID_FIELD_NUMBER: _builtins.int + PART_NAME_FIELD_NUMBER: _builtins.int + PART_ID_FIELD_NUMBER: _builtins.int + COMPONENT_TYPE_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_FIELD_NUMBER: _builtins.int + METHOD_NAME_FIELD_NUMBER: _builtins.int + METHOD_PARAMETERS_FIELD_NUMBER: _builtins.int + TAGS_FIELD_NUMBER: _builtins.int + MIME_TYPE_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + location_id: _builtins.str + robot_name: _builtins.str + robot_id: _builtins.str + part_name: _builtins.str + part_id: _builtins.str + component_type: _builtins.str + component_name: _builtins.str + method_name: _builtins.str + mime_type: _builtins.str + + @_builtins.property + def method_parameters(self) -> _containers.MessageMap[_builtins.str, _any_pb2.Any]: + ... + + @_builtins.property + def tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + ... + + def __init__(self, *, organization_id: _builtins.str=..., location_id: _builtins.str=..., robot_name: _builtins.str=..., robot_id: _builtins.str=..., part_name: _builtins.str=..., part_id: _builtins.str=..., component_type: _builtins.str=..., component_name: _builtins.str=..., method_name: _builtins.str=..., method_parameters: _abc.Mapping[_builtins.str, _any_pb2.Any] | None=..., tags: _abc.Iterable[_builtins.str] | None=..., mime_type: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['component_name', b'component_name', 'component_type', b'component_type', 'location_id', b'location_id', 'method_name', b'method_name', 'method_parameters', b'method_parameters', 'mime_type', b'mime_type', 'organization_id', b'organization_id', 'part_id', b'part_id', 'part_name', b'part_name', 'robot_id', b'robot_id', 'robot_name', b'robot_name', 'tags', b'tags'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___CaptureMetadata: _TypeAlias = CaptureMetadata + +@_typing.final +class CaptureInterval(_message.Message): """CaptureInterval describes the start and end time of the capture in this file.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - START_FIELD_NUMBER: builtins.int - END_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + START_FIELD_NUMBER: _builtins.int + END_FIELD_NUMBER: _builtins.int - @property - def start(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def start(self) -> _timestamp_pb2.Timestamp: ... - @property - def end(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def end(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, start: google.protobuf.timestamp_pb2.Timestamp | None=..., end: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, start: _timestamp_pb2.Timestamp | None=..., end: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['end', b'end', 'start', b'start'] - def HasField(self, field_name: typing.Literal['end', b'end', 'start', b'start']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['end', b'end', 'start', b'start'] - def ClearField(self, field_name: typing.Literal['end', b'end', 'start', b'start']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CaptureInterval = CaptureInterval +Global___CaptureInterval: _TypeAlias = CaptureInterval -@typing.final -class TabularDataByFilterRequest(google.protobuf.message.Message): +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class TabularDataByFilterRequest(_message.Message): """TabularDataByFilterRequest requests tabular data based on filter values.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_REQUEST_FIELD_NUMBER: builtins.int - COUNT_ONLY_FIELD_NUMBER: builtins.int - INCLUDE_INTERNAL_DATA_FIELD_NUMBER: builtins.int - count_only: builtins.bool - include_internal_data: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + DATA_REQUEST_FIELD_NUMBER: _builtins.int + COUNT_ONLY_FIELD_NUMBER: _builtins.int + INCLUDE_INTERNAL_DATA_FIELD_NUMBER: _builtins.int + count_only: _builtins.bool + include_internal_data: _builtins.bool - @property - def data_request(self) -> global___DataRequest: + @_builtins.property + def data_request(self) -> Global___DataRequest: ... - def __init__(self, *, data_request: global___DataRequest | None=..., count_only: builtins.bool=..., include_internal_data: builtins.bool=...) -> None: + def __init__(self, *, data_request: Global___DataRequest | None=..., count_only: _builtins.bool=..., include_internal_data: _builtins.bool=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['data_request', b'data_request'] - def HasField(self, field_name: typing.Literal['data_request', b'data_request']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['count_only', b'count_only', 'data_request', b'data_request', 'include_internal_data', b'include_internal_data'] - def ClearField(self, field_name: typing.Literal['count_only', b'count_only', 'data_request', b'data_request', 'include_internal_data', b'include_internal_data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TabularDataByFilterRequest = TabularDataByFilterRequest +Global___TabularDataByFilterRequest: _TypeAlias = TabularDataByFilterRequest -@typing.final -class TabularDataByFilterResponse(google.protobuf.message.Message): +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class TabularDataByFilterResponse(_message.Message): """TabularDataByFilterResponse provides the data and metadata of tabular data.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - METADATA_FIELD_NUMBER: builtins.int - DATA_FIELD_NUMBER: builtins.int - COUNT_FIELD_NUMBER: builtins.int - LAST_FIELD_NUMBER: builtins.int - TOTAL_SIZE_BYTES_FIELD_NUMBER: builtins.int - count: builtins.int - last: builtins.str - total_size_bytes: builtins.int + DESCRIPTOR: _descriptor.Descriptor + METADATA_FIELD_NUMBER: _builtins.int + DATA_FIELD_NUMBER: _builtins.int + COUNT_FIELD_NUMBER: _builtins.int + LAST_FIELD_NUMBER: _builtins.int + TOTAL_SIZE_BYTES_FIELD_NUMBER: _builtins.int + count: _builtins.int + last: _builtins.str + total_size_bytes: _builtins.int - @property - def metadata(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CaptureMetadata]: + @_builtins.property + def metadata(self) -> _containers.RepeatedCompositeFieldContainer[Global___CaptureMetadata]: ... - @property - def data(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TabularData]: + @_builtins.property + def data(self) -> _containers.RepeatedCompositeFieldContainer[Global___TabularData]: ... - def __init__(self, *, metadata: collections.abc.Iterable[global___CaptureMetadata] | None=..., data: collections.abc.Iterable[global___TabularData] | None=..., count: builtins.int=..., last: builtins.str=..., total_size_bytes: builtins.int=...) -> None: + def __init__(self, *, metadata: _abc.Iterable[Global___CaptureMetadata] | None=..., data: _abc.Iterable[Global___TabularData] | None=..., count: _builtins.int=..., last: _builtins.str=..., total_size_bytes: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['count', b'count', 'data', b'data', 'last', b'last', 'metadata', b'metadata', 'total_size_bytes', b'total_size_bytes'] - def ClearField(self, field_name: typing.Literal['count', b'count', 'data', b'data', 'last', b'last', 'metadata', b'metadata', 'total_size_bytes', b'total_size_bytes']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TabularDataByFilterResponse = TabularDataByFilterResponse +Global___TabularDataByFilterResponse: _TypeAlias = TabularDataByFilterResponse -@typing.final -class TabularData(google.protobuf.message.Message): +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class TabularData(_message.Message): """TabularData contains data and metadata associated with tabular data.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int - METADATA_INDEX_FIELD_NUMBER: builtins.int - TIME_REQUESTED_FIELD_NUMBER: builtins.int - TIME_RECEIVED_FIELD_NUMBER: builtins.int - metadata_index: builtins.int + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int + METADATA_INDEX_FIELD_NUMBER: _builtins.int + TIME_REQUESTED_FIELD_NUMBER: _builtins.int + TIME_RECEIVED_FIELD_NUMBER: _builtins.int + metadata_index: _builtins.int - @property - def data(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def data(self) -> _struct_pb2.Struct: ... - @property - def time_requested(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time_requested(self) -> _timestamp_pb2.Timestamp: ... - @property - def time_received(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time_received(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, data: google.protobuf.struct_pb2.Struct | None=..., metadata_index: builtins.int=..., time_requested: google.protobuf.timestamp_pb2.Timestamp | None=..., time_received: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, data: _struct_pb2.Struct | None=..., metadata_index: _builtins.int=..., time_requested: _timestamp_pb2.Timestamp | None=..., time_received: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['data', b'data', 'time_received', b'time_received', 'time_requested', b'time_requested'] - def HasField(self, field_name: typing.Literal['data', b'data', 'time_received', b'time_received', 'time_requested', b'time_requested']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data', 'metadata_index', b'metadata_index', 'time_received', b'time_received', 'time_requested', b'time_requested'] - def ClearField(self, field_name: typing.Literal['data', b'data', 'metadata_index', b'metadata_index', 'time_received', b'time_received', 'time_requested', b'time_requested']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TabularData = TabularData +Global___TabularData: _TypeAlias = TabularData -@typing.final -class TabularDataBySQLRequest(google.protobuf.message.Message): +@_typing.final +class TabularDataBySQLRequest(_message.Message): """TabularDataBySQLRequest requests tabular data using a SQL query.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - SQL_QUERY_FIELD_NUMBER: builtins.int - organization_id: builtins.str - sql_query: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + SQL_QUERY_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + sql_query: _builtins.str 'sql_query accepts any valid SQL SELECT statement. Tabular data is held in a database\n called "sensorData" and a table called readings, so queries should select from "readings"\n or "sensorData.readings".\n ' - def __init__(self, *, organization_id: builtins.str=..., sql_query: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., sql_query: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_id', b'organization_id', 'sql_query', b'sql_query'] - def ClearField(self, field_name: typing.Literal['organization_id', b'organization_id', 'sql_query', b'sql_query']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TabularDataBySQLRequest = TabularDataBySQLRequest +Global___TabularDataBySQLRequest: _TypeAlias = TabularDataBySQLRequest -@typing.final -class TabularDataBySQLResponse(google.protobuf.message.Message): +@_typing.final +class TabularDataBySQLResponse(_message.Message): """TabularDataBySQLResponse provides unified tabular data and metadata, queried with SQL.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RAW_DATA_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + RAW_DATA_FIELD_NUMBER: _builtins.int - @property - def raw_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: + @_builtins.property + def raw_data(self) -> _containers.RepeatedScalarFieldContainer[_builtins.bytes]: ... - def __init__(self, *, raw_data: collections.abc.Iterable[builtins.bytes] | None=...) -> None: + def __init__(self, *, raw_data: _abc.Iterable[_builtins.bytes] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['raw_data', b'raw_data'] - def ClearField(self, field_name: typing.Literal['raw_data', b'raw_data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TabularDataBySQLResponse = TabularDataBySQLResponse +Global___TabularDataBySQLResponse: _TypeAlias = TabularDataBySQLResponse -@typing.final -class TabularDataSource(google.protobuf.message.Message): +@_typing.final +class TabularDataSource(_message.Message): """TabularDataSource specifies the data source for user queries to execute on.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TYPE_FIELD_NUMBER: builtins.int - PIPELINE_ID_FIELD_NUMBER: builtins.int - type: global___TabularDataSourceType.ValueType - pipeline_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + PIPELINE_ID_FIELD_NUMBER: _builtins.int + type: Global___TabularDataSourceType.ValueType + pipeline_id: _builtins.str 'pipeline_id is the ID of the pipeline to query. Required when using\n TABULAR_DATA_SOURCE_TYPE_PIPELINE_SINK.\n ' - def __init__(self, *, type: global___TabularDataSourceType.ValueType=..., pipeline_id: builtins.str | None=...) -> None: + def __init__(self, *, type: Global___TabularDataSourceType.ValueType=..., pipeline_id: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_pipeline_id', b'_pipeline_id', 'pipeline_id', b'pipeline_id'] - def HasField(self, field_name: typing.Literal['_pipeline_id', b'_pipeline_id', 'pipeline_id', b'pipeline_id']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_pipeline_id', b'_pipeline_id', 'pipeline_id', b'pipeline_id', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['_pipeline_id', b'_pipeline_id', 'pipeline_id', b'pipeline_id', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__pipeline_id: _TypeAlias = _typing.Literal['pipeline_id'] + _WhichOneofArgType__pipeline_id: _TypeAlias = _typing.Literal['_pipeline_id', b'_pipeline_id'] - def WhichOneof(self, oneof_group: typing.Literal['_pipeline_id', b'_pipeline_id']) -> typing.Literal['pipeline_id'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__pipeline_id) -> _WhichOneofReturnType__pipeline_id | None: ... -global___TabularDataSource = TabularDataSource +Global___TabularDataSource: _TypeAlias = TabularDataSource -@typing.final -class TabularDataByMQLRequest(google.protobuf.message.Message): +@_typing.final +class TabularDataByMQLRequest(_message.Message): """TabularDataByMQLRequest requests tabular data using an MQL query.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - MQL_BINARY_FIELD_NUMBER: builtins.int - USE_RECENT_DATA_FIELD_NUMBER: builtins.int - DATA_SOURCE_FIELD_NUMBER: builtins.int - QUERY_PREFIX_NAME_FIELD_NUMBER: builtins.int - organization_id: builtins.str - use_recent_data: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + MQL_BINARY_FIELD_NUMBER: _builtins.int + USE_RECENT_DATA_FIELD_NUMBER: _builtins.int + DATA_SOURCE_FIELD_NUMBER: _builtins.int + QUERY_PREFIX_NAME_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + use_recent_data: _builtins.bool 'Deprecated, please use TABULAR_DATA_SOURCE_TYPE_HOT_STORAGE instead.' - query_prefix_name: builtins.str + query_prefix_name: _builtins.str 'query_prefix_name is an optional field that can be used to specify a saved query to run' - @property - def mql_binary(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: + @_builtins.property + def mql_binary(self) -> _containers.RepeatedScalarFieldContainer[_builtins.bytes]: """mql_binary accepts a MongoDB aggregation pipeline as a list of BSON documents, where each document is one stage in the pipeline. The pipeline is run on the "sensorData.readings" namespace, which holds the Viam organization's tabular data. """ - @property - def data_source(self) -> global___TabularDataSource: + @_builtins.property + def data_source(self) -> Global___TabularDataSource: """data_source is an optional field that can be used to specify the data source for the query. If not specified, the query will run on "standard" storage. """ - def __init__(self, *, organization_id: builtins.str=..., mql_binary: collections.abc.Iterable[builtins.bytes] | None=..., use_recent_data: builtins.bool | None=..., data_source: global___TabularDataSource | None=..., query_prefix_name: builtins.str | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., mql_binary: _abc.Iterable[_builtins.bytes] | None=..., use_recent_data: _builtins.bool | None=..., data_source: Global___TabularDataSource | None=..., query_prefix_name: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_data_source', b'_data_source', '_query_prefix_name', b'_query_prefix_name', '_use_recent_data', b'_use_recent_data', 'data_source', b'data_source', 'query_prefix_name', b'query_prefix_name', 'use_recent_data', b'use_recent_data'] - def HasField(self, field_name: typing.Literal['_data_source', b'_data_source', '_query_prefix_name', b'_query_prefix_name', '_use_recent_data', b'_use_recent_data', 'data_source', b'data_source', 'query_prefix_name', b'query_prefix_name', 'use_recent_data', b'use_recent_data']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_data_source', b'_data_source', '_query_prefix_name', b'_query_prefix_name', '_use_recent_data', b'_use_recent_data', 'data_source', b'data_source', 'mql_binary', b'mql_binary', 'organization_id', b'organization_id', 'query_prefix_name', b'query_prefix_name', 'use_recent_data', b'use_recent_data'] - def ClearField(self, field_name: typing.Literal['_data_source', b'_data_source', '_query_prefix_name', b'_query_prefix_name', '_use_recent_data', b'_use_recent_data', 'data_source', b'data_source', 'mql_binary', b'mql_binary', 'organization_id', b'organization_id', 'query_prefix_name', b'query_prefix_name', 'use_recent_data', b'use_recent_data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__data_source: _TypeAlias = _typing.Literal['data_source'] + _WhichOneofArgType__data_source: _TypeAlias = _typing.Literal['_data_source', b'_data_source'] + _WhichOneofReturnType__query_prefix_name: _TypeAlias = _typing.Literal['query_prefix_name'] + _WhichOneofArgType__query_prefix_name: _TypeAlias = _typing.Literal['_query_prefix_name', b'_query_prefix_name'] + _WhichOneofReturnType__use_recent_data: _TypeAlias = _typing.Literal['use_recent_data'] + _WhichOneofArgType__use_recent_data: _TypeAlias = _typing.Literal['_use_recent_data', b'_use_recent_data'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_data_source', b'_data_source']) -> typing.Literal['data_source'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__data_source) -> _WhichOneofReturnType__data_source | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_query_prefix_name', b'_query_prefix_name']) -> typing.Literal['query_prefix_name'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__query_prefix_name) -> _WhichOneofReturnType__query_prefix_name | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_use_recent_data', b'_use_recent_data']) -> typing.Literal['use_recent_data'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__use_recent_data) -> _WhichOneofReturnType__use_recent_data | None: ... -global___TabularDataByMQLRequest = TabularDataByMQLRequest +Global___TabularDataByMQLRequest: _TypeAlias = TabularDataByMQLRequest -@typing.final -class TabularDataByMQLResponse(google.protobuf.message.Message): +@_typing.final +class TabularDataByMQLResponse(_message.Message): """TabularDataByMQLResponse provides unified tabular data and metadata, queried with MQL.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RAW_DATA_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + RAW_DATA_FIELD_NUMBER: _builtins.int - @property - def raw_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: + @_builtins.property + def raw_data(self) -> _containers.RepeatedScalarFieldContainer[_builtins.bytes]: ... - def __init__(self, *, raw_data: collections.abc.Iterable[builtins.bytes] | None=...) -> None: + def __init__(self, *, raw_data: _abc.Iterable[_builtins.bytes] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['raw_data', b'raw_data'] - def ClearField(self, field_name: typing.Literal['raw_data', b'raw_data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TabularDataByMQLResponse = TabularDataByMQLResponse +Global___TabularDataByMQLResponse: _TypeAlias = TabularDataByMQLResponse -@typing.final -class ExportTabularDataRequest(google.protobuf.message.Message): +@_typing.final +class ExportTabularDataRequest(_message.Message): """ExportTabularDataRequest requests tabular data from the specified data source.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PART_ID_FIELD_NUMBER: builtins.int - RESOURCE_NAME_FIELD_NUMBER: builtins.int - RESOURCE_SUBTYPE_FIELD_NUMBER: builtins.int - METHOD_NAME_FIELD_NUMBER: builtins.int - INTERVAL_FIELD_NUMBER: builtins.int - ADDITIONAL_PARAMETERS_FIELD_NUMBER: builtins.int - part_id: builtins.str - resource_name: builtins.str - resource_subtype: builtins.str - method_name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + PART_ID_FIELD_NUMBER: _builtins.int + RESOURCE_NAME_FIELD_NUMBER: _builtins.int + RESOURCE_SUBTYPE_FIELD_NUMBER: _builtins.int + METHOD_NAME_FIELD_NUMBER: _builtins.int + INTERVAL_FIELD_NUMBER: _builtins.int + ADDITIONAL_PARAMETERS_FIELD_NUMBER: _builtins.int + part_id: _builtins.str + resource_name: _builtins.str + resource_subtype: _builtins.str + method_name: _builtins.str - @property - def interval(self) -> global___CaptureInterval: + @_builtins.property + def interval(self) -> Global___CaptureInterval: ... - @property - def additional_parameters(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def additional_parameters(self) -> _struct_pb2.Struct: ... - def __init__(self, *, part_id: builtins.str=..., resource_name: builtins.str=..., resource_subtype: builtins.str=..., method_name: builtins.str=..., interval: global___CaptureInterval | None=..., additional_parameters: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, part_id: _builtins.str=..., resource_name: _builtins.str=..., resource_subtype: _builtins.str=..., method_name: _builtins.str=..., interval: Global___CaptureInterval | None=..., additional_parameters: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_additional_parameters', b'_additional_parameters', 'additional_parameters', b'additional_parameters', 'interval', b'interval'] - def HasField(self, field_name: typing.Literal['_additional_parameters', b'_additional_parameters', 'additional_parameters', b'additional_parameters', 'interval', b'interval']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_additional_parameters', b'_additional_parameters', 'additional_parameters', b'additional_parameters', 'interval', b'interval', 'method_name', b'method_name', 'part_id', b'part_id', 'resource_name', b'resource_name', 'resource_subtype', b'resource_subtype'] - def ClearField(self, field_name: typing.Literal['_additional_parameters', b'_additional_parameters', 'additional_parameters', b'additional_parameters', 'interval', b'interval', 'method_name', b'method_name', 'part_id', b'part_id', 'resource_name', b'resource_name', 'resource_subtype', b'resource_subtype']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__additional_parameters: _TypeAlias = _typing.Literal['additional_parameters'] + _WhichOneofArgType__additional_parameters: _TypeAlias = _typing.Literal['_additional_parameters', b'_additional_parameters'] - def WhichOneof(self, oneof_group: typing.Literal['_additional_parameters', b'_additional_parameters']) -> typing.Literal['additional_parameters'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__additional_parameters) -> _WhichOneofReturnType__additional_parameters | None: ... -global___ExportTabularDataRequest = ExportTabularDataRequest +Global___ExportTabularDataRequest: _TypeAlias = ExportTabularDataRequest -@typing.final -class ExportTabularDataResponse(google.protobuf.message.Message): +@_typing.final +class ExportTabularDataResponse(_message.Message): """ExportTabularDataResponse provides unified tabular data and metadata for a single data point from the specified data source.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PART_ID_FIELD_NUMBER: builtins.int - RESOURCE_NAME_FIELD_NUMBER: builtins.int - RESOURCE_SUBTYPE_FIELD_NUMBER: builtins.int - METHOD_NAME_FIELD_NUMBER: builtins.int - TIME_CAPTURED_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - LOCATION_ID_FIELD_NUMBER: builtins.int - ROBOT_NAME_FIELD_NUMBER: builtins.int - ROBOT_ID_FIELD_NUMBER: builtins.int - PART_NAME_FIELD_NUMBER: builtins.int - METHOD_PARAMETERS_FIELD_NUMBER: builtins.int - TAGS_FIELD_NUMBER: builtins.int - PAYLOAD_FIELD_NUMBER: builtins.int - part_id: builtins.str - resource_name: builtins.str - resource_subtype: builtins.str - method_name: builtins.str - organization_id: builtins.str - location_id: builtins.str - robot_name: builtins.str - robot_id: builtins.str - part_name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + PART_ID_FIELD_NUMBER: _builtins.int + RESOURCE_NAME_FIELD_NUMBER: _builtins.int + RESOURCE_SUBTYPE_FIELD_NUMBER: _builtins.int + METHOD_NAME_FIELD_NUMBER: _builtins.int + TIME_CAPTURED_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + LOCATION_ID_FIELD_NUMBER: _builtins.int + ROBOT_NAME_FIELD_NUMBER: _builtins.int + ROBOT_ID_FIELD_NUMBER: _builtins.int + PART_NAME_FIELD_NUMBER: _builtins.int + METHOD_PARAMETERS_FIELD_NUMBER: _builtins.int + TAGS_FIELD_NUMBER: _builtins.int + PAYLOAD_FIELD_NUMBER: _builtins.int + part_id: _builtins.str + resource_name: _builtins.str + resource_subtype: _builtins.str + method_name: _builtins.str + organization_id: _builtins.str + location_id: _builtins.str + robot_name: _builtins.str + robot_id: _builtins.str + part_name: _builtins.str - @property - def time_captured(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time_captured(self) -> _timestamp_pb2.Timestamp: ... - @property - def method_parameters(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def method_parameters(self) -> _struct_pb2.Struct: ... - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def payload(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def payload(self) -> _struct_pb2.Struct: ... - def __init__(self, *, part_id: builtins.str=..., resource_name: builtins.str=..., resource_subtype: builtins.str=..., method_name: builtins.str=..., time_captured: google.protobuf.timestamp_pb2.Timestamp | None=..., organization_id: builtins.str=..., location_id: builtins.str=..., robot_name: builtins.str=..., robot_id: builtins.str=..., part_name: builtins.str=..., method_parameters: google.protobuf.struct_pb2.Struct | None=..., tags: collections.abc.Iterable[builtins.str] | None=..., payload: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, part_id: _builtins.str=..., resource_name: _builtins.str=..., resource_subtype: _builtins.str=..., method_name: _builtins.str=..., time_captured: _timestamp_pb2.Timestamp | None=..., organization_id: _builtins.str=..., location_id: _builtins.str=..., robot_name: _builtins.str=..., robot_id: _builtins.str=..., part_name: _builtins.str=..., method_parameters: _struct_pb2.Struct | None=..., tags: _abc.Iterable[_builtins.str] | None=..., payload: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['method_parameters', b'method_parameters', 'payload', b'payload', 'time_captured', b'time_captured'] - def HasField(self, field_name: typing.Literal['method_parameters', b'method_parameters', 'payload', b'payload', 'time_captured', b'time_captured']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id', 'method_name', b'method_name', 'method_parameters', b'method_parameters', 'organization_id', b'organization_id', 'part_id', b'part_id', 'part_name', b'part_name', 'payload', b'payload', 'resource_name', b'resource_name', 'resource_subtype', b'resource_subtype', 'robot_id', b'robot_id', 'robot_name', b'robot_name', 'tags', b'tags', 'time_captured', b'time_captured'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id', 'method_name', b'method_name', 'method_parameters', b'method_parameters', 'organization_id', b'organization_id', 'part_id', b'part_id', 'part_name', b'part_name', 'payload', b'payload', 'resource_name', b'resource_name', 'resource_subtype', b'resource_subtype', 'robot_id', b'robot_id', 'robot_name', b'robot_name', 'tags', b'tags', 'time_captured', b'time_captured']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ExportTabularDataResponse = ExportTabularDataResponse +Global___ExportTabularDataResponse: _TypeAlias = ExportTabularDataResponse -@typing.final -class GetLatestTabularDataRequest(google.protobuf.message.Message): +@_typing.final +class GetLatestTabularDataRequest(_message.Message): """GetLatestTabularDataRequest requests the most recent tabular data captured from the specified data source.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PART_ID_FIELD_NUMBER: builtins.int - RESOURCE_NAME_FIELD_NUMBER: builtins.int - METHOD_NAME_FIELD_NUMBER: builtins.int - RESOURCE_SUBTYPE_FIELD_NUMBER: builtins.int - ADDITIONAL_PARAMETERS_FIELD_NUMBER: builtins.int - part_id: builtins.str - resource_name: builtins.str - method_name: builtins.str - resource_subtype: builtins.str + DESCRIPTOR: _descriptor.Descriptor + PART_ID_FIELD_NUMBER: _builtins.int + RESOURCE_NAME_FIELD_NUMBER: _builtins.int + METHOD_NAME_FIELD_NUMBER: _builtins.int + RESOURCE_SUBTYPE_FIELD_NUMBER: _builtins.int + ADDITIONAL_PARAMETERS_FIELD_NUMBER: _builtins.int + part_id: _builtins.str + resource_name: _builtins.str + method_name: _builtins.str + resource_subtype: _builtins.str - @property - def additional_parameters(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def additional_parameters(self) -> _struct_pb2.Struct: ... - def __init__(self, *, part_id: builtins.str=..., resource_name: builtins.str=..., method_name: builtins.str=..., resource_subtype: builtins.str=..., additional_parameters: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, part_id: _builtins.str=..., resource_name: _builtins.str=..., method_name: _builtins.str=..., resource_subtype: _builtins.str=..., additional_parameters: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_additional_parameters', b'_additional_parameters', 'additional_parameters', b'additional_parameters'] - def HasField(self, field_name: typing.Literal['_additional_parameters', b'_additional_parameters', 'additional_parameters', b'additional_parameters']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_additional_parameters', b'_additional_parameters', 'additional_parameters', b'additional_parameters', 'method_name', b'method_name', 'part_id', b'part_id', 'resource_name', b'resource_name', 'resource_subtype', b'resource_subtype'] - def ClearField(self, field_name: typing.Literal['_additional_parameters', b'_additional_parameters', 'additional_parameters', b'additional_parameters', 'method_name', b'method_name', 'part_id', b'part_id', 'resource_name', b'resource_name', 'resource_subtype', b'resource_subtype']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__additional_parameters: _TypeAlias = _typing.Literal['additional_parameters'] + _WhichOneofArgType__additional_parameters: _TypeAlias = _typing.Literal['_additional_parameters', b'_additional_parameters'] - def WhichOneof(self, oneof_group: typing.Literal['_additional_parameters', b'_additional_parameters']) -> typing.Literal['additional_parameters'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__additional_parameters) -> _WhichOneofReturnType__additional_parameters | None: ... -global___GetLatestTabularDataRequest = GetLatestTabularDataRequest +Global___GetLatestTabularDataRequest: _TypeAlias = GetLatestTabularDataRequest -@typing.final -class GetLatestTabularDataResponse(google.protobuf.message.Message): +@_typing.final +class GetLatestTabularDataResponse(_message.Message): """GetLatestTabularDataResponse provides the data, time synced, and time captured of the most recent tabular data captured from the requested data source, as long as it was synced within the last year. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TIME_CAPTURED_FIELD_NUMBER: builtins.int - TIME_SYNCED_FIELD_NUMBER: builtins.int - PAYLOAD_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + TIME_CAPTURED_FIELD_NUMBER: _builtins.int + TIME_SYNCED_FIELD_NUMBER: _builtins.int + PAYLOAD_FIELD_NUMBER: _builtins.int - @property - def time_captured(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time_captured(self) -> _timestamp_pb2.Timestamp: ... - @property - def time_synced(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time_synced(self) -> _timestamp_pb2.Timestamp: ... - @property - def payload(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def payload(self) -> _struct_pb2.Struct: ... - def __init__(self, *, time_captured: google.protobuf.timestamp_pb2.Timestamp | None=..., time_synced: google.protobuf.timestamp_pb2.Timestamp | None=..., payload: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, time_captured: _timestamp_pb2.Timestamp | None=..., time_synced: _timestamp_pb2.Timestamp | None=..., payload: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['payload', b'payload', 'time_captured', b'time_captured', 'time_synced', b'time_synced'] - def HasField(self, field_name: typing.Literal['payload', b'payload', 'time_captured', b'time_captured', 'time_synced', b'time_synced']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['payload', b'payload', 'time_captured', b'time_captured', 'time_synced', b'time_synced'] - def ClearField(self, field_name: typing.Literal['payload', b'payload', 'time_captured', b'time_captured', 'time_synced', b'time_synced']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetLatestTabularDataResponse = GetLatestTabularDataResponse +Global___GetLatestTabularDataResponse: _TypeAlias = GetLatestTabularDataResponse -@typing.final -class BinaryData(google.protobuf.message.Message): +@_typing.final +class BinaryData(_message.Message): """BinaryData contains data and metadata associated with binary data.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BINARY_FIELD_NUMBER: builtins.int - METADATA_FIELD_NUMBER: builtins.int - binary: builtins.bytes + DESCRIPTOR: _descriptor.Descriptor + BINARY_FIELD_NUMBER: _builtins.int + METADATA_FIELD_NUMBER: _builtins.int + binary: _builtins.bytes - @property - def metadata(self) -> global___BinaryMetadata: + @_builtins.property + def metadata(self) -> Global___BinaryMetadata: ... - def __init__(self, *, binary: builtins.bytes=..., metadata: global___BinaryMetadata | None=...) -> None: + def __init__(self, *, binary: _builtins.bytes=..., metadata: Global___BinaryMetadata | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['metadata', b'metadata'] - def HasField(self, field_name: typing.Literal['metadata', b'metadata']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['binary', b'binary', 'metadata', b'metadata'] - def ClearField(self, field_name: typing.Literal['binary', b'binary', 'metadata', b'metadata']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___BinaryData = BinaryData +Global___BinaryData: _TypeAlias = BinaryData -@typing.final -class BinaryDataByFilterRequest(google.protobuf.message.Message): +@_typing.final +class BinaryDataByFilterRequest(_message.Message): """BinaryDataByFilterRequest requests the data and metadata of binary (image + file) data when a filter is provided.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_REQUEST_FIELD_NUMBER: builtins.int - INCLUDE_BINARY_FIELD_NUMBER: builtins.int - COUNT_ONLY_FIELD_NUMBER: builtins.int - INCLUDE_INTERNAL_DATA_FIELD_NUMBER: builtins.int - include_binary: builtins.bool - count_only: builtins.bool - include_internal_data: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + DATA_REQUEST_FIELD_NUMBER: _builtins.int + INCLUDE_BINARY_FIELD_NUMBER: _builtins.int + COUNT_ONLY_FIELD_NUMBER: _builtins.int + INCLUDE_INTERNAL_DATA_FIELD_NUMBER: _builtins.int + include_binary: _builtins.bool + count_only: _builtins.bool + include_internal_data: _builtins.bool - @property - def data_request(self) -> global___DataRequest: + @_builtins.property + def data_request(self) -> Global___DataRequest: ... - def __init__(self, *, data_request: global___DataRequest | None=..., include_binary: builtins.bool=..., count_only: builtins.bool=..., include_internal_data: builtins.bool=...) -> None: + def __init__(self, *, data_request: Global___DataRequest | None=..., include_binary: _builtins.bool=..., count_only: _builtins.bool=..., include_internal_data: _builtins.bool=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['data_request', b'data_request'] - def HasField(self, field_name: typing.Literal['data_request', b'data_request']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['count_only', b'count_only', 'data_request', b'data_request', 'include_binary', b'include_binary', 'include_internal_data', b'include_internal_data'] - def ClearField(self, field_name: typing.Literal['count_only', b'count_only', 'data_request', b'data_request', 'include_binary', b'include_binary', 'include_internal_data', b'include_internal_data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___BinaryDataByFilterRequest = BinaryDataByFilterRequest +Global___BinaryDataByFilterRequest: _TypeAlias = BinaryDataByFilterRequest -@typing.final -class BinaryDataByFilterResponse(google.protobuf.message.Message): +@_typing.final +class BinaryDataByFilterResponse(_message.Message): """BinaryDataByFilterResponse provides the data and metadata of binary (image + file) data when a filter is provided.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int - COUNT_FIELD_NUMBER: builtins.int - LAST_FIELD_NUMBER: builtins.int - TOTAL_SIZE_BYTES_FIELD_NUMBER: builtins.int - count: builtins.int - last: builtins.str - total_size_bytes: builtins.int + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int + COUNT_FIELD_NUMBER: _builtins.int + LAST_FIELD_NUMBER: _builtins.int + TOTAL_SIZE_BYTES_FIELD_NUMBER: _builtins.int + count: _builtins.int + last: _builtins.str + total_size_bytes: _builtins.int - @property - def data(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryData]: + @_builtins.property + def data(self) -> _containers.RepeatedCompositeFieldContainer[Global___BinaryData]: ... - def __init__(self, *, data: collections.abc.Iterable[global___BinaryData] | None=..., count: builtins.int=..., last: builtins.str=..., total_size_bytes: builtins.int=...) -> None: + def __init__(self, *, data: _abc.Iterable[Global___BinaryData] | None=..., count: _builtins.int=..., last: _builtins.str=..., total_size_bytes: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['count', b'count', 'data', b'data', 'last', b'last', 'total_size_bytes', b'total_size_bytes'] - def ClearField(self, field_name: typing.Literal['count', b'count', 'data', b'data', 'last', b'last', 'total_size_bytes', b'total_size_bytes']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___BinaryDataByFilterResponse = BinaryDataByFilterResponse +Global___BinaryDataByFilterResponse: _TypeAlias = BinaryDataByFilterResponse -@typing.final -class BinaryID(google.protobuf.message.Message): +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class BinaryID(_message.Message): """BinaryID is the unique identifier for a file that one can request to be retrieved or modified.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FILE_ID_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - LOCATION_ID_FIELD_NUMBER: builtins.int - file_id: builtins.str - organization_id: builtins.str - location_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + FILE_ID_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + LOCATION_ID_FIELD_NUMBER: _builtins.int + file_id: _builtins.str + organization_id: _builtins.str + location_id: _builtins.str - def __init__(self, *, file_id: builtins.str=..., organization_id: builtins.str=..., location_id: builtins.str=...) -> None: + def __init__(self, *, file_id: _builtins.str=..., organization_id: _builtins.str=..., location_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['file_id', b'file_id', 'location_id', b'location_id', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['file_id', b'file_id', 'location_id', b'location_id', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___BinaryID = BinaryID +Global___BinaryID: _TypeAlias = BinaryID -@typing.final -class BinaryDataByIDsRequest(google.protobuf.message.Message): +@_typing.final +class BinaryDataByIDsRequest(_message.Message): """BinaryDataByFilterRequest requests the data and metadata of binary (image + file) data by binary ids.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - INCLUDE_BINARY_FIELD_NUMBER: builtins.int - BINARY_IDS_FIELD_NUMBER: builtins.int - BINARY_DATA_IDS_FIELD_NUMBER: builtins.int - include_binary: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + INCLUDE_BINARY_FIELD_NUMBER: _builtins.int + BINARY_IDS_FIELD_NUMBER: _builtins.int + BINARY_DATA_IDS_FIELD_NUMBER: _builtins.int + include_binary: _builtins.bool - @property - def binary_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryID]: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def binary_ids(self) -> _containers.RepeatedCompositeFieldContainer[Global___BinaryID]: ... - @property - def binary_data_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def binary_data_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, include_binary: builtins.bool=..., binary_ids: collections.abc.Iterable[global___BinaryID] | None=..., binary_data_ids: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, include_binary: _builtins.bool=..., binary_ids: _abc.Iterable[Global___BinaryID] | None=..., binary_data_ids: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['binary_data_ids', b'binary_data_ids', 'binary_ids', b'binary_ids', 'include_binary', b'include_binary'] - def ClearField(self, field_name: typing.Literal['binary_data_ids', b'binary_data_ids', 'binary_ids', b'binary_ids', 'include_binary', b'include_binary']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___BinaryDataByIDsRequest = BinaryDataByIDsRequest +Global___BinaryDataByIDsRequest: _TypeAlias = BinaryDataByIDsRequest -@typing.final -class BinaryDataByIDsResponse(google.protobuf.message.Message): +@_typing.final +class BinaryDataByIDsResponse(_message.Message): """BinaryDataByIDsResponse provides the data and metadata of binary (image + file) data when a filter is provided.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int - COUNT_FIELD_NUMBER: builtins.int - count: builtins.int + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int + COUNT_FIELD_NUMBER: _builtins.int + count: _builtins.int - @property - def data(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryData]: + @_builtins.property + def data(self) -> _containers.RepeatedCompositeFieldContainer[Global___BinaryData]: ... - def __init__(self, *, data: collections.abc.Iterable[global___BinaryData] | None=..., count: builtins.int=...) -> None: + def __init__(self, *, data: _abc.Iterable[Global___BinaryData] | None=..., count: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['count', b'count', 'data', b'data'] - def ClearField(self, field_name: typing.Literal['count', b'count', 'data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___BinaryDataByIDsResponse = BinaryDataByIDsResponse +Global___BinaryDataByIDsResponse: _TypeAlias = BinaryDataByIDsResponse -@typing.final -class BoundingBox(google.protobuf.message.Message): +@_typing.final +class BoundingBox(_message.Message): """BoundingBox represents a labeled bounding box on an image. x and y values are normalized ratios between 0 and 1. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - LABEL_FIELD_NUMBER: builtins.int - X_MIN_NORMALIZED_FIELD_NUMBER: builtins.int - Y_MIN_NORMALIZED_FIELD_NUMBER: builtins.int - X_MAX_NORMALIZED_FIELD_NUMBER: builtins.int - Y_MAX_NORMALIZED_FIELD_NUMBER: builtins.int - CONFIDENCE_FIELD_NUMBER: builtins.int - id: builtins.str - label: builtins.str - x_min_normalized: builtins.float - y_min_normalized: builtins.float - x_max_normalized: builtins.float - y_max_normalized: builtins.float - confidence: builtins.float + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + LABEL_FIELD_NUMBER: _builtins.int + X_MIN_NORMALIZED_FIELD_NUMBER: _builtins.int + Y_MIN_NORMALIZED_FIELD_NUMBER: _builtins.int + X_MAX_NORMALIZED_FIELD_NUMBER: _builtins.int + Y_MAX_NORMALIZED_FIELD_NUMBER: _builtins.int + CONFIDENCE_FIELD_NUMBER: _builtins.int + id: _builtins.str + label: _builtins.str + x_min_normalized: _builtins.float + y_min_normalized: _builtins.float + x_max_normalized: _builtins.float + y_max_normalized: _builtins.float + confidence: _builtins.float 'confidence is an optional range from 0 - 1' - def __init__(self, *, id: builtins.str=..., label: builtins.str=..., x_min_normalized: builtins.float=..., y_min_normalized: builtins.float=..., x_max_normalized: builtins.float=..., y_max_normalized: builtins.float=..., confidence: builtins.float | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., label: _builtins.str=..., x_min_normalized: _builtins.float=..., y_min_normalized: _builtins.float=..., x_max_normalized: _builtins.float=..., y_max_normalized: _builtins.float=..., confidence: _builtins.float | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_confidence', b'_confidence', 'confidence', b'confidence'] - def HasField(self, field_name: typing.Literal['_confidence', b'_confidence', 'confidence', b'confidence']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_confidence', b'_confidence', 'confidence', b'confidence', 'id', b'id', 'label', b'label', 'x_max_normalized', b'x_max_normalized', 'x_min_normalized', b'x_min_normalized', 'y_max_normalized', b'y_max_normalized', 'y_min_normalized', b'y_min_normalized'] - def ClearField(self, field_name: typing.Literal['_confidence', b'_confidence', 'confidence', b'confidence', 'id', b'id', 'label', b'label', 'x_max_normalized', b'x_max_normalized', 'x_min_normalized', b'x_min_normalized', 'y_max_normalized', b'y_max_normalized', 'y_min_normalized', b'y_min_normalized']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__confidence: _TypeAlias = _typing.Literal['confidence'] + _WhichOneofArgType__confidence: _TypeAlias = _typing.Literal['_confidence', b'_confidence'] - def WhichOneof(self, oneof_group: typing.Literal['_confidence', b'_confidence']) -> typing.Literal['confidence'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__confidence) -> _WhichOneofReturnType__confidence | None: ... -global___BoundingBox = BoundingBox +Global___BoundingBox: _TypeAlias = BoundingBox -@typing.final -class Classification(google.protobuf.message.Message): +@_typing.final +class Classification(_message.Message): """Classification represents a confidence score with a label.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - LABEL_FIELD_NUMBER: builtins.int - CONFIDENCE_FIELD_NUMBER: builtins.int - id: builtins.str - label: builtins.str - confidence: builtins.float + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + LABEL_FIELD_NUMBER: _builtins.int + CONFIDENCE_FIELD_NUMBER: _builtins.int + id: _builtins.str + label: _builtins.str + confidence: _builtins.float 'confidence is an optional range from 0 - 1' - def __init__(self, *, id: builtins.str=..., label: builtins.str=..., confidence: builtins.float | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., label: _builtins.str=..., confidence: _builtins.float | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_confidence', b'_confidence', 'confidence', b'confidence'] - def HasField(self, field_name: typing.Literal['_confidence', b'_confidence', 'confidence', b'confidence']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_confidence', b'_confidence', 'confidence', b'confidence', 'id', b'id', 'label', b'label'] - def ClearField(self, field_name: typing.Literal['_confidence', b'_confidence', 'confidence', b'confidence', 'id', b'id', 'label', b'label']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__confidence: _TypeAlias = _typing.Literal['confidence'] + _WhichOneofArgType__confidence: _TypeAlias = _typing.Literal['_confidence', b'_confidence'] - def WhichOneof(self, oneof_group: typing.Literal['_confidence', b'_confidence']) -> typing.Literal['confidence'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__confidence) -> _WhichOneofReturnType__confidence | None: ... -global___Classification = Classification +Global___Classification: _TypeAlias = Classification -@typing.final -class Annotations(google.protobuf.message.Message): +@_typing.final +class Annotations(_message.Message): """Annotations are data annotations used for machine learning.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BBOXES_FIELD_NUMBER: builtins.int - CLASSIFICATIONS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + BBOXES_FIELD_NUMBER: _builtins.int + CLASSIFICATIONS_FIELD_NUMBER: _builtins.int - @property - def bboxes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BoundingBox]: + @_builtins.property + def bboxes(self) -> _containers.RepeatedCompositeFieldContainer[Global___BoundingBox]: ... - @property - def classifications(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Classification]: + @_builtins.property + def classifications(self) -> _containers.RepeatedCompositeFieldContainer[Global___Classification]: ... - def __init__(self, *, bboxes: collections.abc.Iterable[global___BoundingBox] | None=..., classifications: collections.abc.Iterable[global___Classification] | None=...) -> None: + def __init__(self, *, bboxes: _abc.Iterable[Global___BoundingBox] | None=..., classifications: _abc.Iterable[Global___Classification] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['bboxes', b'bboxes', 'classifications', b'classifications'] - def ClearField(self, field_name: typing.Literal['bboxes', b'bboxes', 'classifications', b'classifications']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Annotations = Annotations +Global___Annotations: _TypeAlias = Annotations -@typing.final -class BinaryMetadata(google.protobuf.message.Message): +@_typing.final +class BinaryMetadata(_message.Message): """BinaryMetadata is the metadata associated with binary data.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - CAPTURE_METADATA_FIELD_NUMBER: builtins.int - TIME_REQUESTED_FIELD_NUMBER: builtins.int - TIME_RECEIVED_FIELD_NUMBER: builtins.int - FILE_NAME_FIELD_NUMBER: builtins.int - FILE_EXT_FIELD_NUMBER: builtins.int - URI_FIELD_NUMBER: builtins.int - ANNOTATIONS_FIELD_NUMBER: builtins.int - DATASET_IDS_FIELD_NUMBER: builtins.int - BINARY_DATA_ID_FIELD_NUMBER: builtins.int - id: builtins.str - file_name: builtins.str - file_ext: builtins.str - uri: builtins.str - binary_data_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + CAPTURE_METADATA_FIELD_NUMBER: _builtins.int + TIME_REQUESTED_FIELD_NUMBER: _builtins.int + TIME_RECEIVED_FIELD_NUMBER: _builtins.int + FILE_NAME_FIELD_NUMBER: _builtins.int + FILE_EXT_FIELD_NUMBER: _builtins.int + URI_FIELD_NUMBER: _builtins.int + ANNOTATIONS_FIELD_NUMBER: _builtins.int + DATASET_IDS_FIELD_NUMBER: _builtins.int + BINARY_DATA_ID_FIELD_NUMBER: _builtins.int + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def id(self) -> _builtins.str: + ... + + @id.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def id(self, value: _builtins.str) -> None: + ... + file_name: _builtins.str + file_ext: _builtins.str + uri: _builtins.str + binary_data_id: _builtins.str - @property - def capture_metadata(self) -> global___CaptureMetadata: + @_builtins.property + def capture_metadata(self) -> Global___CaptureMetadata: ... - @property - def time_requested(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time_requested(self) -> _timestamp_pb2.Timestamp: ... - @property - def time_received(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time_received(self) -> _timestamp_pb2.Timestamp: ... - @property - def annotations(self) -> global___Annotations: + @_builtins.property + def annotations(self) -> Global___Annotations: ... - @property - def dataset_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def dataset_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, id: builtins.str=..., capture_metadata: global___CaptureMetadata | None=..., time_requested: google.protobuf.timestamp_pb2.Timestamp | None=..., time_received: google.protobuf.timestamp_pb2.Timestamp | None=..., file_name: builtins.str=..., file_ext: builtins.str=..., uri: builtins.str=..., annotations: global___Annotations | None=..., dataset_ids: collections.abc.Iterable[builtins.str] | None=..., binary_data_id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., capture_metadata: Global___CaptureMetadata | None=..., time_requested: _timestamp_pb2.Timestamp | None=..., time_received: _timestamp_pb2.Timestamp | None=..., file_name: _builtins.str=..., file_ext: _builtins.str=..., uri: _builtins.str=..., annotations: Global___Annotations | None=..., dataset_ids: _abc.Iterable[_builtins.str] | None=..., binary_data_id: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['annotations', b'annotations', 'capture_metadata', b'capture_metadata', 'time_received', b'time_received', 'time_requested', b'time_requested'] - def HasField(self, field_name: typing.Literal['annotations', b'annotations', 'capture_metadata', b'capture_metadata', 'time_received', b'time_received', 'time_requested', b'time_requested']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['annotations', b'annotations', 'binary_data_id', b'binary_data_id', 'capture_metadata', b'capture_metadata', 'dataset_ids', b'dataset_ids', 'file_ext', b'file_ext', 'file_name', b'file_name', 'id', b'id', 'time_received', b'time_received', 'time_requested', b'time_requested', 'uri', b'uri'] - def ClearField(self, field_name: typing.Literal['annotations', b'annotations', 'binary_data_id', b'binary_data_id', 'capture_metadata', b'capture_metadata', 'dataset_ids', b'dataset_ids', 'file_ext', b'file_ext', 'file_name', b'file_name', 'id', b'id', 'time_received', b'time_received', 'time_requested', b'time_requested', 'uri', b'uri']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___BinaryMetadata = BinaryMetadata +Global___BinaryMetadata: _TypeAlias = BinaryMetadata -@typing.final -class DeleteTabularFilter(google.protobuf.message.Message): +@_typing.final +class DeleteTabularFilter(_message.Message): """TabularFilter filters tabular data. All fields are optional; omitted fields are treated as unconstrained.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_IDS_FIELD_NUMBER: builtins.int - ROBOT_ID_FIELD_NUMBER: builtins.int - PART_ID_FIELD_NUMBER: builtins.int - COMPONENT_TYPE_FIELD_NUMBER: builtins.int - COMPONENT_NAME_FIELD_NUMBER: builtins.int - METHOD_FIELD_NUMBER: builtins.int - TAGS_FILTER_FIELD_NUMBER: builtins.int - robot_id: builtins.str - part_id: builtins.str - component_type: builtins.str - component_name: builtins.str - method: builtins.str + DESCRIPTOR: _descriptor.Descriptor + LOCATION_IDS_FIELD_NUMBER: _builtins.int + ROBOT_ID_FIELD_NUMBER: _builtins.int + PART_ID_FIELD_NUMBER: _builtins.int + COMPONENT_TYPE_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_FIELD_NUMBER: _builtins.int + METHOD_FIELD_NUMBER: _builtins.int + TAGS_FILTER_FIELD_NUMBER: _builtins.int + robot_id: _builtins.str + part_id: _builtins.str + component_type: _builtins.str + component_name: _builtins.str + method: _builtins.str - @property - def location_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def location_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def tags_filter(self) -> global___TagsFilter: + @_builtins.property + def tags_filter(self) -> Global___TagsFilter: ... - def __init__(self, *, location_ids: collections.abc.Iterable[builtins.str] | None=..., robot_id: builtins.str=..., part_id: builtins.str=..., component_type: builtins.str=..., component_name: builtins.str=..., method: builtins.str=..., tags_filter: global___TagsFilter | None=...) -> None: + def __init__(self, *, location_ids: _abc.Iterable[_builtins.str] | None=..., robot_id: _builtins.str=..., part_id: _builtins.str=..., component_type: _builtins.str=..., component_name: _builtins.str=..., method: _builtins.str=..., tags_filter: Global___TagsFilter | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['tags_filter', b'tags_filter'] - def HasField(self, field_name: typing.Literal['tags_filter', b'tags_filter']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['component_name', b'component_name', 'component_type', b'component_type', 'location_ids', b'location_ids', 'method', b'method', 'part_id', b'part_id', 'robot_id', b'robot_id', 'tags_filter', b'tags_filter'] - def ClearField(self, field_name: typing.Literal['component_name', b'component_name', 'component_type', b'component_type', 'location_ids', b'location_ids', 'method', b'method', 'part_id', b'part_id', 'robot_id', b'robot_id', 'tags_filter', b'tags_filter']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteTabularFilter = DeleteTabularFilter +Global___DeleteTabularFilter: _TypeAlias = DeleteTabularFilter -@typing.final -class DeleteTabularDataRequest(google.protobuf.message.Message): +@_typing.final +class DeleteTabularDataRequest(_message.Message): """DeleteTabularDataRequest deletes the data from the organization that is older than `delete_older_than_days` in UTC time. For example, if delete_older_than_days=1 and the request is made at 1AM EST on March 11 (March 11 5AM UTC), this deletes all data captured through March 10 11:59:59PM UTC. @@ -993,984 +1074,1084 @@ class DeleteTabularDataRequest(google.protobuf.message.Message): If delete_older_than_days is 0, all existing data is deleted. If no filter is provided, data will be deleted based on organization_id. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - DELETE_OLDER_THAN_DAYS_FIELD_NUMBER: builtins.int - FILTER_FIELD_NUMBER: builtins.int - organization_id: builtins.str - delete_older_than_days: builtins.int + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + DELETE_OLDER_THAN_DAYS_FIELD_NUMBER: _builtins.int + FILTER_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + delete_older_than_days: _builtins.int - @property - def filter(self) -> global___DeleteTabularFilter: + @_builtins.property + def filter(self) -> Global___DeleteTabularFilter: ... - def __init__(self, *, organization_id: builtins.str=..., delete_older_than_days: builtins.int=..., filter: global___DeleteTabularFilter | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., delete_older_than_days: _builtins.int=..., filter: Global___DeleteTabularFilter | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_filter', b'_filter', 'filter', b'filter'] - def HasField(self, field_name: typing.Literal['_filter', b'_filter', 'filter', b'filter']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_filter', b'_filter', 'delete_older_than_days', b'delete_older_than_days', 'filter', b'filter', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['_filter', b'_filter', 'delete_older_than_days', b'delete_older_than_days', 'filter', b'filter', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__filter: _TypeAlias = _typing.Literal['filter'] + _WhichOneofArgType__filter: _TypeAlias = _typing.Literal['_filter', b'_filter'] - def WhichOneof(self, oneof_group: typing.Literal['_filter', b'_filter']) -> typing.Literal['filter'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__filter) -> _WhichOneofReturnType__filter | None: ... -global___DeleteTabularDataRequest = DeleteTabularDataRequest +Global___DeleteTabularDataRequest: _TypeAlias = DeleteTabularDataRequest -@typing.final -class DeleteTabularDataResponse(google.protobuf.message.Message): +@_typing.final +class DeleteTabularDataResponse(_message.Message): """DeleteBinaryDataResponse returns the number of tabular datapoints deleted.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DELETED_COUNT_FIELD_NUMBER: builtins.int - deleted_count: builtins.int + DESCRIPTOR: _descriptor.Descriptor + DELETED_COUNT_FIELD_NUMBER: _builtins.int + deleted_count: _builtins.int - def __init__(self, *, deleted_count: builtins.int=...) -> None: + def __init__(self, *, deleted_count: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['deleted_count', b'deleted_count'] - def ClearField(self, field_name: typing.Literal['deleted_count', b'deleted_count']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteTabularDataResponse = DeleteTabularDataResponse +Global___DeleteTabularDataResponse: _TypeAlias = DeleteTabularDataResponse -@typing.final -class DeleteBinaryDataByFilterRequest(google.protobuf.message.Message): +@_typing.final +class DeleteBinaryDataByFilterRequest(_message.Message): """DeleteBinaryDataByFilterRequest deletes the data and metadata of binary data when a filter is provided.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FILTER_FIELD_NUMBER: builtins.int - INCLUDE_INTERNAL_DATA_FIELD_NUMBER: builtins.int - include_internal_data: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + FILTER_FIELD_NUMBER: _builtins.int + INCLUDE_INTERNAL_DATA_FIELD_NUMBER: _builtins.int + include_internal_data: _builtins.bool - @property - def filter(self) -> global___Filter: + @_builtins.property + def filter(self) -> Global___Filter: ... - def __init__(self, *, filter: global___Filter | None=..., include_internal_data: builtins.bool=...) -> None: + def __init__(self, *, filter: Global___Filter | None=..., include_internal_data: _builtins.bool=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['filter', b'filter'] - def HasField(self, field_name: typing.Literal['filter', b'filter']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['filter', b'filter', 'include_internal_data', b'include_internal_data'] - def ClearField(self, field_name: typing.Literal['filter', b'filter', 'include_internal_data', b'include_internal_data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteBinaryDataByFilterRequest = DeleteBinaryDataByFilterRequest +Global___DeleteBinaryDataByFilterRequest: _TypeAlias = DeleteBinaryDataByFilterRequest -@typing.final -class DeleteBinaryDataByFilterResponse(google.protobuf.message.Message): +@_typing.final +class DeleteBinaryDataByFilterResponse(_message.Message): """DeleteBinaryDataByFilterResponse returns the number of binary files deleted when a filter is provided.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DELETED_COUNT_FIELD_NUMBER: builtins.int - deleted_count: builtins.int + DESCRIPTOR: _descriptor.Descriptor + DELETED_COUNT_FIELD_NUMBER: _builtins.int + deleted_count: _builtins.int - def __init__(self, *, deleted_count: builtins.int=...) -> None: + def __init__(self, *, deleted_count: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['deleted_count', b'deleted_count'] - def ClearField(self, field_name: typing.Literal['deleted_count', b'deleted_count']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteBinaryDataByFilterResponse = DeleteBinaryDataByFilterResponse +Global___DeleteBinaryDataByFilterResponse: _TypeAlias = DeleteBinaryDataByFilterResponse -@typing.final -class DeleteBinaryDataByIDsRequest(google.protobuf.message.Message): +@_typing.final +class DeleteBinaryDataByIDsRequest(_message.Message): """DeleteBinaryDataByIDsRequest deletes the data and metadata of binary data when binary ids are provided.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BINARY_IDS_FIELD_NUMBER: builtins.int - BINARY_DATA_IDS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + BINARY_IDS_FIELD_NUMBER: _builtins.int + BINARY_DATA_IDS_FIELD_NUMBER: _builtins.int - @property - def binary_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryID]: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def binary_ids(self) -> _containers.RepeatedCompositeFieldContainer[Global___BinaryID]: ... - @property - def binary_data_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def binary_data_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, binary_ids: collections.abc.Iterable[global___BinaryID] | None=..., binary_data_ids: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, binary_ids: _abc.Iterable[Global___BinaryID] | None=..., binary_data_ids: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['binary_data_ids', b'binary_data_ids', 'binary_ids', b'binary_ids'] - def ClearField(self, field_name: typing.Literal['binary_data_ids', b'binary_data_ids', 'binary_ids', b'binary_ids']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteBinaryDataByIDsRequest = DeleteBinaryDataByIDsRequest +Global___DeleteBinaryDataByIDsRequest: _TypeAlias = DeleteBinaryDataByIDsRequest -@typing.final -class DeleteBinaryDataByIDsResponse(google.protobuf.message.Message): +@_typing.final +class DeleteBinaryDataByIDsResponse(_message.Message): """DeleteBinaryDataByIDsResponse returns the number of binary files deleted when binary ids are provided.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DELETED_COUNT_FIELD_NUMBER: builtins.int - deleted_count: builtins.int + DESCRIPTOR: _descriptor.Descriptor + DELETED_COUNT_FIELD_NUMBER: _builtins.int + deleted_count: _builtins.int - def __init__(self, *, deleted_count: builtins.int=...) -> None: + def __init__(self, *, deleted_count: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['deleted_count', b'deleted_count'] - def ClearField(self, field_name: typing.Literal['deleted_count', b'deleted_count']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteBinaryDataByIDsResponse = DeleteBinaryDataByIDsResponse +Global___DeleteBinaryDataByIDsResponse: _TypeAlias = DeleteBinaryDataByIDsResponse -@typing.final -class AddTagsToBinaryDataByIDsRequest(google.protobuf.message.Message): +@_typing.final +class AddTagsToBinaryDataByIDsRequest(_message.Message): """AddTagsToBinaryDataByIDsRequest requests adding all specified tags to each of the files when binary ids are provided.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BINARY_IDS_FIELD_NUMBER: builtins.int - BINARY_DATA_IDS_FIELD_NUMBER: builtins.int - TAGS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + BINARY_IDS_FIELD_NUMBER: _builtins.int + BINARY_DATA_IDS_FIELD_NUMBER: _builtins.int + TAGS_FIELD_NUMBER: _builtins.int - @property - def binary_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryID]: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def binary_ids(self) -> _containers.RepeatedCompositeFieldContainer[Global___BinaryID]: ... - @property - def binary_data_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def binary_data_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, binary_ids: collections.abc.Iterable[global___BinaryID] | None=..., binary_data_ids: collections.abc.Iterable[builtins.str] | None=..., tags: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, binary_ids: _abc.Iterable[Global___BinaryID] | None=..., binary_data_ids: _abc.Iterable[_builtins.str] | None=..., tags: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['binary_data_ids', b'binary_data_ids', 'binary_ids', b'binary_ids', 'tags', b'tags'] - def ClearField(self, field_name: typing.Literal['binary_data_ids', b'binary_data_ids', 'binary_ids', b'binary_ids', 'tags', b'tags']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AddTagsToBinaryDataByIDsRequest = AddTagsToBinaryDataByIDsRequest +Global___AddTagsToBinaryDataByIDsRequest: _TypeAlias = AddTagsToBinaryDataByIDsRequest -@typing.final -class AddTagsToBinaryDataByIDsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class AddTagsToBinaryDataByIDsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___AddTagsToBinaryDataByIDsResponse = AddTagsToBinaryDataByIDsResponse +Global___AddTagsToBinaryDataByIDsResponse: _TypeAlias = AddTagsToBinaryDataByIDsResponse -@typing.final -class AddTagsToBinaryDataByFilterRequest(google.protobuf.message.Message): +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class AddTagsToBinaryDataByFilterRequest(_message.Message): """AddTagsToBinaryDataByFilterRequest requests adding all specified tags to each of the files when a filter is provided.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FILTER_FIELD_NUMBER: builtins.int - TAGS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + FILTER_FIELD_NUMBER: _builtins.int + TAGS_FIELD_NUMBER: _builtins.int - @property - def filter(self) -> global___Filter: + @_builtins.property + def filter(self) -> Global___Filter: ... - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, filter: global___Filter | None=..., tags: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, filter: Global___Filter | None=..., tags: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['filter', b'filter'] - def HasField(self, field_name: typing.Literal['filter', b'filter']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['filter', b'filter', 'tags', b'tags'] - def ClearField(self, field_name: typing.Literal['filter', b'filter', 'tags', b'tags']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AddTagsToBinaryDataByFilterRequest = AddTagsToBinaryDataByFilterRequest +Global___AddTagsToBinaryDataByFilterRequest: _TypeAlias = AddTagsToBinaryDataByFilterRequest -@typing.final -class AddTagsToBinaryDataByFilterResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class AddTagsToBinaryDataByFilterResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___AddTagsToBinaryDataByFilterResponse = AddTagsToBinaryDataByFilterResponse +Global___AddTagsToBinaryDataByFilterResponse: _TypeAlias = AddTagsToBinaryDataByFilterResponse -@typing.final -class RemoveTagsFromBinaryDataByIDsRequest(google.protobuf.message.Message): +@_typing.final +class RemoveTagsFromBinaryDataByIDsRequest(_message.Message): """RemoveTagsFromBinaryDataByIDsRequest requests removing the given tags value from each file when binary ids are provided.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BINARY_IDS_FIELD_NUMBER: builtins.int - BINARY_DATA_IDS_FIELD_NUMBER: builtins.int - TAGS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + BINARY_IDS_FIELD_NUMBER: _builtins.int + BINARY_DATA_IDS_FIELD_NUMBER: _builtins.int + TAGS_FIELD_NUMBER: _builtins.int - @property - def binary_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryID]: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def binary_ids(self) -> _containers.RepeatedCompositeFieldContainer[Global___BinaryID]: ... - @property - def binary_data_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def binary_data_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, binary_ids: collections.abc.Iterable[global___BinaryID] | None=..., binary_data_ids: collections.abc.Iterable[builtins.str] | None=..., tags: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, binary_ids: _abc.Iterable[Global___BinaryID] | None=..., binary_data_ids: _abc.Iterable[_builtins.str] | None=..., tags: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['binary_data_ids', b'binary_data_ids', 'binary_ids', b'binary_ids', 'tags', b'tags'] - def ClearField(self, field_name: typing.Literal['binary_data_ids', b'binary_data_ids', 'binary_ids', b'binary_ids', 'tags', b'tags']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RemoveTagsFromBinaryDataByIDsRequest = RemoveTagsFromBinaryDataByIDsRequest +Global___RemoveTagsFromBinaryDataByIDsRequest: _TypeAlias = RemoveTagsFromBinaryDataByIDsRequest -@typing.final -class RemoveTagsFromBinaryDataByIDsResponse(google.protobuf.message.Message): +@_typing.final +class RemoveTagsFromBinaryDataByIDsResponse(_message.Message): """RemoveTagsFromBinaryDataByIDsResponse returns the number of binary files which had tags removed""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DELETED_COUNT_FIELD_NUMBER: builtins.int - deleted_count: builtins.int + DESCRIPTOR: _descriptor.Descriptor + DELETED_COUNT_FIELD_NUMBER: _builtins.int + deleted_count: _builtins.int - def __init__(self, *, deleted_count: builtins.int=...) -> None: + def __init__(self, *, deleted_count: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['deleted_count', b'deleted_count'] - def ClearField(self, field_name: typing.Literal['deleted_count', b'deleted_count']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RemoveTagsFromBinaryDataByIDsResponse = RemoveTagsFromBinaryDataByIDsResponse +Global___RemoveTagsFromBinaryDataByIDsResponse: _TypeAlias = RemoveTagsFromBinaryDataByIDsResponse -@typing.final -class RemoveTagsFromBinaryDataByFilterRequest(google.protobuf.message.Message): +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class RemoveTagsFromBinaryDataByFilterRequest(_message.Message): """RemoveTagsFromBinaryDataByFilterRequest requests removing the given tags value from each file when a filter is provided.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FILTER_FIELD_NUMBER: builtins.int - TAGS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + FILTER_FIELD_NUMBER: _builtins.int + TAGS_FIELD_NUMBER: _builtins.int - @property - def filter(self) -> global___Filter: + @_builtins.property + def filter(self) -> Global___Filter: ... - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, filter: global___Filter | None=..., tags: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, filter: Global___Filter | None=..., tags: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['filter', b'filter'] - def HasField(self, field_name: typing.Literal['filter', b'filter']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['filter', b'filter', 'tags', b'tags'] - def ClearField(self, field_name: typing.Literal['filter', b'filter', 'tags', b'tags']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RemoveTagsFromBinaryDataByFilterRequest = RemoveTagsFromBinaryDataByFilterRequest +Global___RemoveTagsFromBinaryDataByFilterRequest: _TypeAlias = RemoveTagsFromBinaryDataByFilterRequest -@typing.final -class RemoveTagsFromBinaryDataByFilterResponse(google.protobuf.message.Message): +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class RemoveTagsFromBinaryDataByFilterResponse(_message.Message): """RemoveTagsFromBinaryDataByFilterResponse returns the number of binary files which had tags removed.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DELETED_COUNT_FIELD_NUMBER: builtins.int - deleted_count: builtins.int + DESCRIPTOR: _descriptor.Descriptor + DELETED_COUNT_FIELD_NUMBER: _builtins.int + deleted_count: _builtins.int - def __init__(self, *, deleted_count: builtins.int=...) -> None: + def __init__(self, *, deleted_count: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['deleted_count', b'deleted_count'] - def ClearField(self, field_name: typing.Literal['deleted_count', b'deleted_count']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RemoveTagsFromBinaryDataByFilterResponse = RemoveTagsFromBinaryDataByFilterResponse +Global___RemoveTagsFromBinaryDataByFilterResponse: _TypeAlias = RemoveTagsFromBinaryDataByFilterResponse -@typing.final -class TagsByFilterRequest(google.protobuf.message.Message): +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class TagsByFilterRequest(_message.Message): """TagsByFilterRequest requests the unique tags from data based on given filter.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FILTER_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + FILTER_FIELD_NUMBER: _builtins.int - @property - def filter(self) -> global___Filter: + @_builtins.property + def filter(self) -> Global___Filter: ... - def __init__(self, *, filter: global___Filter | None=...) -> None: + def __init__(self, *, filter: Global___Filter | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['filter', b'filter'] - def HasField(self, field_name: typing.Literal['filter', b'filter']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['filter', b'filter'] - def ClearField(self, field_name: typing.Literal['filter', b'filter']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TagsByFilterRequest = TagsByFilterRequest +Global___TagsByFilterRequest: _TypeAlias = TagsByFilterRequest -@typing.final -class TagsByFilterResponse(google.protobuf.message.Message): +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class TagsByFilterResponse(_message.Message): """TagsByFilterResponse returns the unique tags from data based on given filter.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TAGS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + TAGS_FIELD_NUMBER: _builtins.int - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, tags: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, tags: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['tags', b'tags'] - def ClearField(self, field_name: typing.Literal['tags', b'tags']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TagsByFilterResponse = TagsByFilterResponse +Global___TagsByFilterResponse: _TypeAlias = TagsByFilterResponse -@typing.final -class AddBoundingBoxToImageByIDRequest(google.protobuf.message.Message): +@_typing.final +class AddBoundingBoxToImageByIDRequest(_message.Message): """AddBoundingBoxToImageByIDRequest specifies the binary ID to which a bounding box with the associated label and position in normalized coordinates will be added. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BINARY_ID_FIELD_NUMBER: builtins.int - BINARY_DATA_ID_FIELD_NUMBER: builtins.int - LABEL_FIELD_NUMBER: builtins.int - X_MIN_NORMALIZED_FIELD_NUMBER: builtins.int - Y_MIN_NORMALIZED_FIELD_NUMBER: builtins.int - X_MAX_NORMALIZED_FIELD_NUMBER: builtins.int - Y_MAX_NORMALIZED_FIELD_NUMBER: builtins.int - CONFIDENCE_FIELD_NUMBER: builtins.int - binary_data_id: builtins.str - label: builtins.str - x_min_normalized: builtins.float - y_min_normalized: builtins.float - x_max_normalized: builtins.float - y_max_normalized: builtins.float - confidence: builtins.float + DESCRIPTOR: _descriptor.Descriptor + BINARY_ID_FIELD_NUMBER: _builtins.int + BINARY_DATA_ID_FIELD_NUMBER: _builtins.int + LABEL_FIELD_NUMBER: _builtins.int + X_MIN_NORMALIZED_FIELD_NUMBER: _builtins.int + Y_MIN_NORMALIZED_FIELD_NUMBER: _builtins.int + X_MAX_NORMALIZED_FIELD_NUMBER: _builtins.int + Y_MAX_NORMALIZED_FIELD_NUMBER: _builtins.int + CONFIDENCE_FIELD_NUMBER: _builtins.int + binary_data_id: _builtins.str + label: _builtins.str + x_min_normalized: _builtins.float + y_min_normalized: _builtins.float + x_max_normalized: _builtins.float + y_max_normalized: _builtins.float + confidence: _builtins.float - @property - def binary_id(self) -> global___BinaryID: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def binary_id(self) -> Global___BinaryID: ... - def __init__(self, *, binary_id: global___BinaryID | None=..., binary_data_id: builtins.str=..., label: builtins.str=..., x_min_normalized: builtins.float=..., y_min_normalized: builtins.float=..., x_max_normalized: builtins.float=..., y_max_normalized: builtins.float=..., confidence: builtins.float | None=...) -> None: + def __init__(self, *, binary_id: Global___BinaryID | None=..., binary_data_id: _builtins.str=..., label: _builtins.str=..., x_min_normalized: _builtins.float=..., y_min_normalized: _builtins.float=..., x_max_normalized: _builtins.float=..., y_max_normalized: _builtins.float=..., confidence: _builtins.float | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_confidence', b'_confidence', 'binary_id', b'binary_id', 'confidence', b'confidence'] - def HasField(self, field_name: typing.Literal['_confidence', b'_confidence', 'binary_id', b'binary_id', 'confidence', b'confidence']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_confidence', b'_confidence', 'binary_data_id', b'binary_data_id', 'binary_id', b'binary_id', 'confidence', b'confidence', 'label', b'label', 'x_max_normalized', b'x_max_normalized', 'x_min_normalized', b'x_min_normalized', 'y_max_normalized', b'y_max_normalized', 'y_min_normalized', b'y_min_normalized'] - def ClearField(self, field_name: typing.Literal['_confidence', b'_confidence', 'binary_data_id', b'binary_data_id', 'binary_id', b'binary_id', 'confidence', b'confidence', 'label', b'label', 'x_max_normalized', b'x_max_normalized', 'x_min_normalized', b'x_min_normalized', 'y_max_normalized', b'y_max_normalized', 'y_min_normalized', b'y_min_normalized']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__confidence: _TypeAlias = _typing.Literal['confidence'] + _WhichOneofArgType__confidence: _TypeAlias = _typing.Literal['_confidence', b'_confidence'] - def WhichOneof(self, oneof_group: typing.Literal['_confidence', b'_confidence']) -> typing.Literal['confidence'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__confidence) -> _WhichOneofReturnType__confidence | None: ... -global___AddBoundingBoxToImageByIDRequest = AddBoundingBoxToImageByIDRequest +Global___AddBoundingBoxToImageByIDRequest: _TypeAlias = AddBoundingBoxToImageByIDRequest -@typing.final -class AddBoundingBoxToImageByIDResponse(google.protobuf.message.Message): +@_typing.final +class AddBoundingBoxToImageByIDResponse(_message.Message): """AddBoundingBoxToImageByIDResponse returns the bounding box ID of the successfully added bounding box.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BBOX_ID_FIELD_NUMBER: builtins.int - bbox_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + BBOX_ID_FIELD_NUMBER: _builtins.int + bbox_id: _builtins.str - def __init__(self, *, bbox_id: builtins.str=...) -> None: + def __init__(self, *, bbox_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['bbox_id', b'bbox_id'] - def ClearField(self, field_name: typing.Literal['bbox_id', b'bbox_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AddBoundingBoxToImageByIDResponse = AddBoundingBoxToImageByIDResponse +Global___AddBoundingBoxToImageByIDResponse: _TypeAlias = AddBoundingBoxToImageByIDResponse -@typing.final -class RemoveBoundingBoxFromImageByIDRequest(google.protobuf.message.Message): +@_typing.final +class RemoveBoundingBoxFromImageByIDRequest(_message.Message): """RemoveBoundingBoxFromImageByIDRequest removes the bounding box with specified bounding box ID for the file represented by the binary ID.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BINARY_ID_FIELD_NUMBER: builtins.int - BINARY_DATA_ID_FIELD_NUMBER: builtins.int - BBOX_ID_FIELD_NUMBER: builtins.int - binary_data_id: builtins.str - bbox_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + BINARY_ID_FIELD_NUMBER: _builtins.int + BINARY_DATA_ID_FIELD_NUMBER: _builtins.int + BBOX_ID_FIELD_NUMBER: _builtins.int + binary_data_id: _builtins.str + bbox_id: _builtins.str - @property - def binary_id(self) -> global___BinaryID: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def binary_id(self) -> Global___BinaryID: ... - def __init__(self, *, binary_id: global___BinaryID | None=..., binary_data_id: builtins.str=..., bbox_id: builtins.str=...) -> None: + def __init__(self, *, binary_id: Global___BinaryID | None=..., binary_data_id: _builtins.str=..., bbox_id: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['binary_id', b'binary_id'] - def HasField(self, field_name: typing.Literal['binary_id', b'binary_id']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['bbox_id', b'bbox_id', 'binary_data_id', b'binary_data_id', 'binary_id', b'binary_id'] - def ClearField(self, field_name: typing.Literal['bbox_id', b'bbox_id', 'binary_data_id', b'binary_data_id', 'binary_id', b'binary_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RemoveBoundingBoxFromImageByIDRequest = RemoveBoundingBoxFromImageByIDRequest +Global___RemoveBoundingBoxFromImageByIDRequest: _TypeAlias = RemoveBoundingBoxFromImageByIDRequest -@typing.final -class RemoveBoundingBoxFromImageByIDResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class RemoveBoundingBoxFromImageByIDResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___RemoveBoundingBoxFromImageByIDResponse = RemoveBoundingBoxFromImageByIDResponse +Global___RemoveBoundingBoxFromImageByIDResponse: _TypeAlias = RemoveBoundingBoxFromImageByIDResponse -@typing.final -class UpdateBoundingBoxRequest(google.protobuf.message.Message): +@_typing.final +class UpdateBoundingBoxRequest(_message.Message): """UpdateBoundingBoxRequest updates the bounding box with specified bounding box ID for the file represented by the binary ID.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BINARY_ID_FIELD_NUMBER: builtins.int - BINARY_DATA_ID_FIELD_NUMBER: builtins.int - BBOX_ID_FIELD_NUMBER: builtins.int - LABEL_FIELD_NUMBER: builtins.int - X_MIN_NORMALIZED_FIELD_NUMBER: builtins.int - Y_MIN_NORMALIZED_FIELD_NUMBER: builtins.int - X_MAX_NORMALIZED_FIELD_NUMBER: builtins.int - Y_MAX_NORMALIZED_FIELD_NUMBER: builtins.int - CONFIDENCE_FIELD_NUMBER: builtins.int - binary_data_id: builtins.str - bbox_id: builtins.str - label: builtins.str - x_min_normalized: builtins.float - y_min_normalized: builtins.float - x_max_normalized: builtins.float - y_max_normalized: builtins.float - confidence: builtins.float + DESCRIPTOR: _descriptor.Descriptor + BINARY_ID_FIELD_NUMBER: _builtins.int + BINARY_DATA_ID_FIELD_NUMBER: _builtins.int + BBOX_ID_FIELD_NUMBER: _builtins.int + LABEL_FIELD_NUMBER: _builtins.int + X_MIN_NORMALIZED_FIELD_NUMBER: _builtins.int + Y_MIN_NORMALIZED_FIELD_NUMBER: _builtins.int + X_MAX_NORMALIZED_FIELD_NUMBER: _builtins.int + Y_MAX_NORMALIZED_FIELD_NUMBER: _builtins.int + CONFIDENCE_FIELD_NUMBER: _builtins.int + binary_data_id: _builtins.str + bbox_id: _builtins.str + label: _builtins.str + x_min_normalized: _builtins.float + y_min_normalized: _builtins.float + x_max_normalized: _builtins.float + y_max_normalized: _builtins.float + confidence: _builtins.float - @property - def binary_id(self) -> global___BinaryID: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def binary_id(self) -> Global___BinaryID: ... - def __init__(self, *, binary_id: global___BinaryID | None=..., binary_data_id: builtins.str=..., bbox_id: builtins.str=..., label: builtins.str | None=..., x_min_normalized: builtins.float | None=..., y_min_normalized: builtins.float | None=..., x_max_normalized: builtins.float | None=..., y_max_normalized: builtins.float | None=..., confidence: builtins.float | None=...) -> None: + def __init__(self, *, binary_id: Global___BinaryID | None=..., binary_data_id: _builtins.str=..., bbox_id: _builtins.str=..., label: _builtins.str | None=..., x_min_normalized: _builtins.float | None=..., y_min_normalized: _builtins.float | None=..., x_max_normalized: _builtins.float | None=..., y_max_normalized: _builtins.float | None=..., confidence: _builtins.float | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_confidence', b'_confidence', '_label', b'_label', '_x_max_normalized', b'_x_max_normalized', '_x_min_normalized', b'_x_min_normalized', '_y_max_normalized', b'_y_max_normalized', '_y_min_normalized', b'_y_min_normalized', 'binary_id', b'binary_id', 'confidence', b'confidence', 'label', b'label', 'x_max_normalized', b'x_max_normalized', 'x_min_normalized', b'x_min_normalized', 'y_max_normalized', b'y_max_normalized', 'y_min_normalized', b'y_min_normalized'] - def HasField(self, field_name: typing.Literal['_confidence', b'_confidence', '_label', b'_label', '_x_max_normalized', b'_x_max_normalized', '_x_min_normalized', b'_x_min_normalized', '_y_max_normalized', b'_y_max_normalized', '_y_min_normalized', b'_y_min_normalized', 'binary_id', b'binary_id', 'confidence', b'confidence', 'label', b'label', 'x_max_normalized', b'x_max_normalized', 'x_min_normalized', b'x_min_normalized', 'y_max_normalized', b'y_max_normalized', 'y_min_normalized', b'y_min_normalized']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_confidence', b'_confidence', '_label', b'_label', '_x_max_normalized', b'_x_max_normalized', '_x_min_normalized', b'_x_min_normalized', '_y_max_normalized', b'_y_max_normalized', '_y_min_normalized', b'_y_min_normalized', 'bbox_id', b'bbox_id', 'binary_data_id', b'binary_data_id', 'binary_id', b'binary_id', 'confidence', b'confidence', 'label', b'label', 'x_max_normalized', b'x_max_normalized', 'x_min_normalized', b'x_min_normalized', 'y_max_normalized', b'y_max_normalized', 'y_min_normalized', b'y_min_normalized'] - def ClearField(self, field_name: typing.Literal['_confidence', b'_confidence', '_label', b'_label', '_x_max_normalized', b'_x_max_normalized', '_x_min_normalized', b'_x_min_normalized', '_y_max_normalized', b'_y_max_normalized', '_y_min_normalized', b'_y_min_normalized', 'bbox_id', b'bbox_id', 'binary_data_id', b'binary_data_id', 'binary_id', b'binary_id', 'confidence', b'confidence', 'label', b'label', 'x_max_normalized', b'x_max_normalized', 'x_min_normalized', b'x_min_normalized', 'y_max_normalized', b'y_max_normalized', 'y_min_normalized', b'y_min_normalized']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__confidence: _TypeAlias = _typing.Literal['confidence'] + _WhichOneofArgType__confidence: _TypeAlias = _typing.Literal['_confidence', b'_confidence'] + _WhichOneofReturnType__label: _TypeAlias = _typing.Literal['label'] + _WhichOneofArgType__label: _TypeAlias = _typing.Literal['_label', b'_label'] + _WhichOneofReturnType__x_max_normalized: _TypeAlias = _typing.Literal['x_max_normalized'] + _WhichOneofArgType__x_max_normalized: _TypeAlias = _typing.Literal['_x_max_normalized', b'_x_max_normalized'] + _WhichOneofReturnType__x_min_normalized: _TypeAlias = _typing.Literal['x_min_normalized'] + _WhichOneofArgType__x_min_normalized: _TypeAlias = _typing.Literal['_x_min_normalized', b'_x_min_normalized'] + _WhichOneofReturnType__y_max_normalized: _TypeAlias = _typing.Literal['y_max_normalized'] + _WhichOneofArgType__y_max_normalized: _TypeAlias = _typing.Literal['_y_max_normalized', b'_y_max_normalized'] + _WhichOneofReturnType__y_min_normalized: _TypeAlias = _typing.Literal['y_min_normalized'] + _WhichOneofArgType__y_min_normalized: _TypeAlias = _typing.Literal['_y_min_normalized', b'_y_min_normalized'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_confidence', b'_confidence']) -> typing.Literal['confidence'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__confidence) -> _WhichOneofReturnType__confidence | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_label', b'_label']) -> typing.Literal['label'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__label) -> _WhichOneofReturnType__label | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_x_max_normalized', b'_x_max_normalized']) -> typing.Literal['x_max_normalized'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__x_max_normalized) -> _WhichOneofReturnType__x_max_normalized | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_x_min_normalized', b'_x_min_normalized']) -> typing.Literal['x_min_normalized'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__x_min_normalized) -> _WhichOneofReturnType__x_min_normalized | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_y_max_normalized', b'_y_max_normalized']) -> typing.Literal['y_max_normalized'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__y_max_normalized) -> _WhichOneofReturnType__y_max_normalized | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_y_min_normalized', b'_y_min_normalized']) -> typing.Literal['y_min_normalized'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__y_min_normalized) -> _WhichOneofReturnType__y_min_normalized | None: ... -global___UpdateBoundingBoxRequest = UpdateBoundingBoxRequest +Global___UpdateBoundingBoxRequest: _TypeAlias = UpdateBoundingBoxRequest -@typing.final -class UpdateBoundingBoxResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class UpdateBoundingBoxResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___UpdateBoundingBoxResponse = UpdateBoundingBoxResponse +Global___UpdateBoundingBoxResponse: _TypeAlias = UpdateBoundingBoxResponse -@typing.final -class BoundingBoxLabelsByFilterRequest(google.protobuf.message.Message): +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class BoundingBoxLabelsByFilterRequest(_message.Message): """BoundingBoxLabelsByFilterRequest requests all the labels of the bounding boxes from files from a given filter.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FILTER_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + FILTER_FIELD_NUMBER: _builtins.int - @property - def filter(self) -> global___Filter: + @_builtins.property + def filter(self) -> Global___Filter: ... - def __init__(self, *, filter: global___Filter | None=...) -> None: + def __init__(self, *, filter: Global___Filter | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['filter', b'filter'] - def HasField(self, field_name: typing.Literal['filter', b'filter']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['filter', b'filter'] - def ClearField(self, field_name: typing.Literal['filter', b'filter']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___BoundingBoxLabelsByFilterRequest = BoundingBoxLabelsByFilterRequest +Global___BoundingBoxLabelsByFilterRequest: _TypeAlias = BoundingBoxLabelsByFilterRequest -@typing.final -class BoundingBoxLabelsByFilterResponse(google.protobuf.message.Message): +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class BoundingBoxLabelsByFilterResponse(_message.Message): """BoundingBoxLabelsByFilterRequest returns all the labels of the bounding boxes from files from a given filter.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LABELS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + LABELS_FIELD_NUMBER: _builtins.int - @property - def labels(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def labels(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, labels: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, labels: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['labels', b'labels'] - def ClearField(self, field_name: typing.Literal['labels', b'labels']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___BoundingBoxLabelsByFilterResponse = BoundingBoxLabelsByFilterResponse +Global___BoundingBoxLabelsByFilterResponse: _TypeAlias = BoundingBoxLabelsByFilterResponse -@typing.final -class ConfigureDatabaseUserRequest(google.protobuf.message.Message): +@_typing.final +class ConfigureDatabaseUserRequest(_message.Message): """ConfigureDatabaseUserRequest accepts a Viam organization ID and a password for the database user being configured. Viam uses gRPC over TLS, so the entire request will be encrypted while in flight, including the password. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - PASSWORD_FIELD_NUMBER: builtins.int - organization_id: builtins.str - password: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + PASSWORD_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + password: _builtins.str - def __init__(self, *, organization_id: builtins.str=..., password: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., password: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_id', b'organization_id', 'password', b'password'] - def ClearField(self, field_name: typing.Literal['organization_id', b'organization_id', 'password', b'password']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ConfigureDatabaseUserRequest = ConfigureDatabaseUserRequest +Global___ConfigureDatabaseUserRequest: _TypeAlias = ConfigureDatabaseUserRequest -@typing.final -class ConfigureDatabaseUserResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ConfigureDatabaseUserResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ConfigureDatabaseUserResponse = ConfigureDatabaseUserResponse +Global___ConfigureDatabaseUserResponse: _TypeAlias = ConfigureDatabaseUserResponse -@typing.final -class GetDatabaseConnectionRequest(google.protobuf.message.Message): +@_typing.final +class GetDatabaseConnectionRequest(_message.Message): """GetDatabaseConnectionRequest requests the database connection hostname.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - organization_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str - def __init__(self, *, organization_id: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetDatabaseConnectionRequest = GetDatabaseConnectionRequest +Global___GetDatabaseConnectionRequest: _TypeAlias = GetDatabaseConnectionRequest -@typing.final -class GetDatabaseConnectionResponse(google.protobuf.message.Message): +@_typing.final +class GetDatabaseConnectionResponse(_message.Message): """GetDatabaseConnectionResponse returns the database connection hostname endpoint. It also returns a URI that can be used to connect to the database instance through MongoDB clients, as well as information on whether the Viam organization has a database user configured. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - HOSTNAME_FIELD_NUMBER: builtins.int - MONGODB_URI_FIELD_NUMBER: builtins.int - HAS_DATABASE_USER_FIELD_NUMBER: builtins.int - hostname: builtins.str - mongodb_uri: builtins.str - has_database_user: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + HOSTNAME_FIELD_NUMBER: _builtins.int + MONGODB_URI_FIELD_NUMBER: _builtins.int + HAS_DATABASE_USER_FIELD_NUMBER: _builtins.int + hostname: _builtins.str + mongodb_uri: _builtins.str + has_database_user: _builtins.bool - def __init__(self, *, hostname: builtins.str=..., mongodb_uri: builtins.str=..., has_database_user: builtins.bool=...) -> None: + def __init__(self, *, hostname: _builtins.str=..., mongodb_uri: _builtins.str=..., has_database_user: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['has_database_user', b'has_database_user', 'hostname', b'hostname', 'mongodb_uri', b'mongodb_uri'] - def ClearField(self, field_name: typing.Literal['has_database_user', b'has_database_user', 'hostname', b'hostname', 'mongodb_uri', b'mongodb_uri']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetDatabaseConnectionResponse = GetDatabaseConnectionResponse +Global___GetDatabaseConnectionResponse: _TypeAlias = GetDatabaseConnectionResponse -@typing.final -class AddBinaryDataToDatasetByIDsRequest(google.protobuf.message.Message): +@_typing.final +class AddBinaryDataToDatasetByIDsRequest(_message.Message): """AddBinaryDataToDatasetByIDsRequest adds the binary data with the given binary IDs to a dataset with dataset_id.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BINARY_IDS_FIELD_NUMBER: builtins.int - BINARY_DATA_IDS_FIELD_NUMBER: builtins.int - DATASET_ID_FIELD_NUMBER: builtins.int - dataset_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + BINARY_IDS_FIELD_NUMBER: _builtins.int + BINARY_DATA_IDS_FIELD_NUMBER: _builtins.int + DATASET_ID_FIELD_NUMBER: _builtins.int + dataset_id: _builtins.str - @property - def binary_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryID]: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def binary_ids(self) -> _containers.RepeatedCompositeFieldContainer[Global___BinaryID]: ... - @property - def binary_data_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def binary_data_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, binary_ids: collections.abc.Iterable[global___BinaryID] | None=..., binary_data_ids: collections.abc.Iterable[builtins.str] | None=..., dataset_id: builtins.str=...) -> None: + def __init__(self, *, binary_ids: _abc.Iterable[Global___BinaryID] | None=..., binary_data_ids: _abc.Iterable[_builtins.str] | None=..., dataset_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['binary_data_ids', b'binary_data_ids', 'binary_ids', b'binary_ids', 'dataset_id', b'dataset_id'] - def ClearField(self, field_name: typing.Literal['binary_data_ids', b'binary_data_ids', 'binary_ids', b'binary_ids', 'dataset_id', b'dataset_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AddBinaryDataToDatasetByIDsRequest = AddBinaryDataToDatasetByIDsRequest +Global___AddBinaryDataToDatasetByIDsRequest: _TypeAlias = AddBinaryDataToDatasetByIDsRequest -@typing.final -class AddBinaryDataToDatasetByIDsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class AddBinaryDataToDatasetByIDsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___AddBinaryDataToDatasetByIDsResponse = AddBinaryDataToDatasetByIDsResponse +Global___AddBinaryDataToDatasetByIDsResponse: _TypeAlias = AddBinaryDataToDatasetByIDsResponse -@typing.final -class RemoveBinaryDataFromDatasetByIDsRequest(google.protobuf.message.Message): +@_typing.final +class RemoveBinaryDataFromDatasetByIDsRequest(_message.Message): """RemoveBinaryDataFromDatasetByIDsRequest removes the specified binary IDs from a dataset with dataset_id.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BINARY_IDS_FIELD_NUMBER: builtins.int - BINARY_DATA_IDS_FIELD_NUMBER: builtins.int - DATASET_ID_FIELD_NUMBER: builtins.int - dataset_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + BINARY_IDS_FIELD_NUMBER: _builtins.int + BINARY_DATA_IDS_FIELD_NUMBER: _builtins.int + DATASET_ID_FIELD_NUMBER: _builtins.int + dataset_id: _builtins.str - @property - def binary_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryID]: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def binary_ids(self) -> _containers.RepeatedCompositeFieldContainer[Global___BinaryID]: ... - @property - def binary_data_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def binary_data_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, binary_ids: collections.abc.Iterable[global___BinaryID] | None=..., binary_data_ids: collections.abc.Iterable[builtins.str] | None=..., dataset_id: builtins.str=...) -> None: + def __init__(self, *, binary_ids: _abc.Iterable[Global___BinaryID] | None=..., binary_data_ids: _abc.Iterable[_builtins.str] | None=..., dataset_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['binary_data_ids', b'binary_data_ids', 'binary_ids', b'binary_ids', 'dataset_id', b'dataset_id'] - def ClearField(self, field_name: typing.Literal['binary_data_ids', b'binary_data_ids', 'binary_ids', b'binary_ids', 'dataset_id', b'dataset_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RemoveBinaryDataFromDatasetByIDsRequest = RemoveBinaryDataFromDatasetByIDsRequest +Global___RemoveBinaryDataFromDatasetByIDsRequest: _TypeAlias = RemoveBinaryDataFromDatasetByIDsRequest -@typing.final -class RemoveBinaryDataFromDatasetByIDsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class RemoveBinaryDataFromDatasetByIDsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___RemoveBinaryDataFromDatasetByIDsResponse = RemoveBinaryDataFromDatasetByIDsResponse +Global___RemoveBinaryDataFromDatasetByIDsResponse: _TypeAlias = RemoveBinaryDataFromDatasetByIDsResponse -@typing.final -class CreateIndexRequest(google.protobuf.message.Message): +@_typing.final +class CreateIndexRequest(_message.Message): """CreateIndexRequest starts a custom index build""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - COLLECTION_TYPE_FIELD_NUMBER: builtins.int - PIPELINE_NAME_FIELD_NUMBER: builtins.int - INDEX_SPEC_FIELD_NUMBER: builtins.int - organization_id: builtins.str - collection_type: global___IndexableCollection.ValueType - pipeline_name: builtins.str - - @property - def index_spec(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + COLLECTION_TYPE_FIELD_NUMBER: _builtins.int + PIPELINE_NAME_FIELD_NUMBER: _builtins.int + INDEX_SPEC_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + collection_type: Global___IndexableCollection.ValueType + pipeline_name: _builtins.str + + @_builtins.property + def index_spec(self) -> _containers.RepeatedScalarFieldContainer[_builtins.bytes]: """index_spec accepts a MongoDB index specification defined in JSON format""" - def __init__(self, *, organization_id: builtins.str=..., collection_type: global___IndexableCollection.ValueType=..., pipeline_name: builtins.str | None=..., index_spec: collections.abc.Iterable[builtins.bytes] | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., collection_type: Global___IndexableCollection.ValueType=..., pipeline_name: _builtins.str | None=..., index_spec: _abc.Iterable[_builtins.bytes] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_pipeline_name', b'_pipeline_name', 'pipeline_name', b'pipeline_name'] - def HasField(self, field_name: typing.Literal['_pipeline_name', b'_pipeline_name', 'pipeline_name', b'pipeline_name']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_pipeline_name', b'_pipeline_name', 'collection_type', b'collection_type', 'index_spec', b'index_spec', 'organization_id', b'organization_id', 'pipeline_name', b'pipeline_name'] - def ClearField(self, field_name: typing.Literal['_pipeline_name', b'_pipeline_name', 'collection_type', b'collection_type', 'index_spec', b'index_spec', 'organization_id', b'organization_id', 'pipeline_name', b'pipeline_name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__pipeline_name: _TypeAlias = _typing.Literal['pipeline_name'] + _WhichOneofArgType__pipeline_name: _TypeAlias = _typing.Literal['_pipeline_name', b'_pipeline_name'] - def WhichOneof(self, oneof_group: typing.Literal['_pipeline_name', b'_pipeline_name']) -> typing.Literal['pipeline_name'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__pipeline_name) -> _WhichOneofReturnType__pipeline_name | None: ... -global___CreateIndexRequest = CreateIndexRequest +Global___CreateIndexRequest: _TypeAlias = CreateIndexRequest -@typing.final -class CreateIndexResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class CreateIndexResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___CreateIndexResponse = CreateIndexResponse +Global___CreateIndexResponse: _TypeAlias = CreateIndexResponse -@typing.final -class DeleteIndexRequest(google.protobuf.message.Message): +@_typing.final +class DeleteIndexRequest(_message.Message): """DeleteIndexRequest drops the specified custom index from a collection""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - COLLECTION_TYPE_FIELD_NUMBER: builtins.int - PIPELINE_NAME_FIELD_NUMBER: builtins.int - INDEX_NAME_FIELD_NUMBER: builtins.int - organization_id: builtins.str - collection_type: global___IndexableCollection.ValueType - pipeline_name: builtins.str - index_name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + COLLECTION_TYPE_FIELD_NUMBER: _builtins.int + PIPELINE_NAME_FIELD_NUMBER: _builtins.int + INDEX_NAME_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + collection_type: Global___IndexableCollection.ValueType + pipeline_name: _builtins.str + index_name: _builtins.str - def __init__(self, *, organization_id: builtins.str=..., collection_type: global___IndexableCollection.ValueType=..., pipeline_name: builtins.str | None=..., index_name: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., collection_type: Global___IndexableCollection.ValueType=..., pipeline_name: _builtins.str | None=..., index_name: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_pipeline_name', b'_pipeline_name', 'pipeline_name', b'pipeline_name'] - def HasField(self, field_name: typing.Literal['_pipeline_name', b'_pipeline_name', 'pipeline_name', b'pipeline_name']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_pipeline_name', b'_pipeline_name', 'collection_type', b'collection_type', 'index_name', b'index_name', 'organization_id', b'organization_id', 'pipeline_name', b'pipeline_name'] - def ClearField(self, field_name: typing.Literal['_pipeline_name', b'_pipeline_name', 'collection_type', b'collection_type', 'index_name', b'index_name', 'organization_id', b'organization_id', 'pipeline_name', b'pipeline_name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__pipeline_name: _TypeAlias = _typing.Literal['pipeline_name'] + _WhichOneofArgType__pipeline_name: _TypeAlias = _typing.Literal['_pipeline_name', b'_pipeline_name'] - def WhichOneof(self, oneof_group: typing.Literal['_pipeline_name', b'_pipeline_name']) -> typing.Literal['pipeline_name'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__pipeline_name) -> _WhichOneofReturnType__pipeline_name | None: ... -global___DeleteIndexRequest = DeleteIndexRequest +Global___DeleteIndexRequest: _TypeAlias = DeleteIndexRequest -@typing.final -class DeleteIndexResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteIndexResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteIndexResponse = DeleteIndexResponse +Global___DeleteIndexResponse: _TypeAlias = DeleteIndexResponse -@typing.final -class ListIndexesRequest(google.protobuf.message.Message): +@_typing.final +class ListIndexesRequest(_message.Message): """ListIndexesRequest returns all the indexes for a given collection""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - COLLECTION_TYPE_FIELD_NUMBER: builtins.int - PIPELINE_NAME_FIELD_NUMBER: builtins.int - organization_id: builtins.str - collection_type: global___IndexableCollection.ValueType - pipeline_name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + COLLECTION_TYPE_FIELD_NUMBER: _builtins.int + PIPELINE_NAME_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + collection_type: Global___IndexableCollection.ValueType + pipeline_name: _builtins.str - def __init__(self, *, organization_id: builtins.str=..., collection_type: global___IndexableCollection.ValueType=..., pipeline_name: builtins.str | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., collection_type: Global___IndexableCollection.ValueType=..., pipeline_name: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_pipeline_name', b'_pipeline_name', 'pipeline_name', b'pipeline_name'] - def HasField(self, field_name: typing.Literal['_pipeline_name', b'_pipeline_name', 'pipeline_name', b'pipeline_name']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_pipeline_name', b'_pipeline_name', 'collection_type', b'collection_type', 'organization_id', b'organization_id', 'pipeline_name', b'pipeline_name'] - def ClearField(self, field_name: typing.Literal['_pipeline_name', b'_pipeline_name', 'collection_type', b'collection_type', 'organization_id', b'organization_id', 'pipeline_name', b'pipeline_name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__pipeline_name: _TypeAlias = _typing.Literal['pipeline_name'] + _WhichOneofArgType__pipeline_name: _TypeAlias = _typing.Literal['_pipeline_name', b'_pipeline_name'] - def WhichOneof(self, oneof_group: typing.Literal['_pipeline_name', b'_pipeline_name']) -> typing.Literal['pipeline_name'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__pipeline_name) -> _WhichOneofReturnType__pipeline_name | None: ... -global___ListIndexesRequest = ListIndexesRequest +Global___ListIndexesRequest: _TypeAlias = ListIndexesRequest -@typing.final -class ListIndexesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - INDEXES_FIELD_NUMBER: builtins.int +@_typing.final +class ListIndexesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + INDEXES_FIELD_NUMBER: _builtins.int - @property - def indexes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Index]: + @_builtins.property + def indexes(self) -> _containers.RepeatedCompositeFieldContainer[Global___Index]: ... - def __init__(self, *, indexes: collections.abc.Iterable[global___Index] | None=...) -> None: + def __init__(self, *, indexes: _abc.Iterable[Global___Index] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['indexes', b'indexes'] - def ClearField(self, field_name: typing.Literal['indexes', b'indexes']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListIndexesResponse = ListIndexesResponse +Global___ListIndexesResponse: _TypeAlias = ListIndexesResponse -@typing.final -class Index(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - COLLECTION_TYPE_FIELD_NUMBER: builtins.int - PIPELINE_NAME_FIELD_NUMBER: builtins.int - INDEX_NAME_FIELD_NUMBER: builtins.int - INDEX_SPEC_FIELD_NUMBER: builtins.int - CREATED_BY_FIELD_NUMBER: builtins.int - collection_type: global___IndexableCollection.ValueType - pipeline_name: builtins.str - index_name: builtins.str - created_by: global___IndexCreator.ValueType +@_typing.final +class Index(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + COLLECTION_TYPE_FIELD_NUMBER: _builtins.int + PIPELINE_NAME_FIELD_NUMBER: _builtins.int + INDEX_NAME_FIELD_NUMBER: _builtins.int + INDEX_SPEC_FIELD_NUMBER: _builtins.int + CREATED_BY_FIELD_NUMBER: _builtins.int + collection_type: Global___IndexableCollection.ValueType + pipeline_name: _builtins.str + index_name: _builtins.str + created_by: Global___IndexCreator.ValueType - @property - def index_spec(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: + @_builtins.property + def index_spec(self) -> _containers.RepeatedScalarFieldContainer[_builtins.bytes]: """index_spec defines a MongoDB index in JSON format""" - def __init__(self, *, collection_type: global___IndexableCollection.ValueType=..., pipeline_name: builtins.str | None=..., index_name: builtins.str=..., index_spec: collections.abc.Iterable[builtins.bytes] | None=..., created_by: global___IndexCreator.ValueType=...) -> None: + def __init__(self, *, collection_type: Global___IndexableCollection.ValueType=..., pipeline_name: _builtins.str | None=..., index_name: _builtins.str=..., index_spec: _abc.Iterable[_builtins.bytes] | None=..., created_by: Global___IndexCreator.ValueType=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_pipeline_name', b'_pipeline_name', 'pipeline_name', b'pipeline_name'] - def HasField(self, field_name: typing.Literal['_pipeline_name', b'_pipeline_name', 'pipeline_name', b'pipeline_name']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_pipeline_name', b'_pipeline_name', 'collection_type', b'collection_type', 'created_by', b'created_by', 'index_name', b'index_name', 'index_spec', b'index_spec', 'pipeline_name', b'pipeline_name'] - def ClearField(self, field_name: typing.Literal['_pipeline_name', b'_pipeline_name', 'collection_type', b'collection_type', 'created_by', b'created_by', 'index_name', b'index_name', 'index_spec', b'index_spec', 'pipeline_name', b'pipeline_name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__pipeline_name: _TypeAlias = _typing.Literal['pipeline_name'] + _WhichOneofArgType__pipeline_name: _TypeAlias = _typing.Literal['_pipeline_name', b'_pipeline_name'] - def WhichOneof(self, oneof_group: typing.Literal['_pipeline_name', b'_pipeline_name']) -> typing.Literal['pipeline_name'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__pipeline_name) -> _WhichOneofReturnType__pipeline_name | None: ... -global___Index = Index +Global___Index: _TypeAlias = Index -@typing.final -class CreateSavedQueryRequest(google.protobuf.message.Message): +@_typing.final +class CreateSavedQueryRequest(_message.Message): """CreateSavedQueryRequest saves a mql query.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - MQL_BINARY_FIELD_NUMBER: builtins.int - organization_id: builtins.str - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + MQL_BINARY_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + name: _builtins.str - @property - def mql_binary(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: + @_builtins.property + def mql_binary(self) -> _containers.RepeatedScalarFieldContainer[_builtins.bytes]: ... - def __init__(self, *, organization_id: builtins.str=..., name: builtins.str=..., mql_binary: collections.abc.Iterable[builtins.bytes] | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., name: _builtins.str=..., mql_binary: _abc.Iterable[_builtins.bytes] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['mql_binary', b'mql_binary', 'name', b'name', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['mql_binary', b'mql_binary', 'name', b'name', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateSavedQueryRequest = CreateSavedQueryRequest +Global___CreateSavedQueryRequest: _TypeAlias = CreateSavedQueryRequest -@typing.final -class CreateSavedQueryResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class CreateSavedQueryResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateSavedQueryResponse = CreateSavedQueryResponse +Global___CreateSavedQueryResponse: _TypeAlias = CreateSavedQueryResponse -@typing.final -class Query(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - MQL_BINARY_FIELD_NUMBER: builtins.int - CREATED_ON_FIELD_NUMBER: builtins.int - UPDATED_AT_FIELD_NUMBER: builtins.int - id: builtins.str - organization_id: builtins.str - name: builtins.str +@_typing.final +class Query(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + MQL_BINARY_FIELD_NUMBER: _builtins.int + CREATED_ON_FIELD_NUMBER: _builtins.int + UPDATED_AT_FIELD_NUMBER: _builtins.int + id: _builtins.str + organization_id: _builtins.str + name: _builtins.str - @property - def mql_binary(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: + @_builtins.property + def mql_binary(self) -> _containers.RepeatedScalarFieldContainer[_builtins.bytes]: ... - @property - def created_on(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def created_on(self) -> _timestamp_pb2.Timestamp: ... - @property - def updated_at(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def updated_at(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, id: builtins.str=..., organization_id: builtins.str=..., name: builtins.str=..., mql_binary: collections.abc.Iterable[builtins.bytes] | None=..., created_on: google.protobuf.timestamp_pb2.Timestamp | None=..., updated_at: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., organization_id: _builtins.str=..., name: _builtins.str=..., mql_binary: _abc.Iterable[_builtins.bytes] | None=..., created_on: _timestamp_pb2.Timestamp | None=..., updated_at: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on', 'updated_at', b'updated_at'] - def HasField(self, field_name: typing.Literal['created_on', b'created_on', 'updated_at', b'updated_at']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on', 'id', b'id', 'mql_binary', b'mql_binary', 'name', b'name', 'organization_id', b'organization_id', 'updated_at', b'updated_at'] - def ClearField(self, field_name: typing.Literal['created_on', b'created_on', 'id', b'id', 'mql_binary', b'mql_binary', 'name', b'name', 'organization_id', b'organization_id', 'updated_at', b'updated_at']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Query = Query +Global___Query: _TypeAlias = Query -@typing.final -class DeleteSavedQueryRequest(google.protobuf.message.Message): +@_typing.final +class DeleteSavedQueryRequest(_message.Message): """DeleteSavedQuery deletes a saved query based on the given id.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteSavedQueryRequest = DeleteSavedQueryRequest +Global___DeleteSavedQueryRequest: _TypeAlias = DeleteSavedQueryRequest -@typing.final -class DeleteSavedQueryResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteSavedQueryResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteSavedQueryResponse = DeleteSavedQueryResponse +Global___DeleteSavedQueryResponse: _TypeAlias = DeleteSavedQueryResponse -@typing.final -class GetSavedQueryRequest(google.protobuf.message.Message): +@_typing.final +class GetSavedQueryRequest(_message.Message): """GetSavedQuery retrieves a saved query by id.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetSavedQueryRequest = GetSavedQueryRequest +Global___GetSavedQueryRequest: _TypeAlias = GetSavedQueryRequest -@typing.final -class GetSavedQueryResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SAVED_QUERY_FIELD_NUMBER: builtins.int +@_typing.final +class GetSavedQueryResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SAVED_QUERY_FIELD_NUMBER: _builtins.int - @property - def saved_query(self) -> global___Query: + @_builtins.property + def saved_query(self) -> Global___Query: ... - def __init__(self, *, saved_query: global___Query | None=...) -> None: + def __init__(self, *, saved_query: Global___Query | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['saved_query', b'saved_query'] - def HasField(self, field_name: typing.Literal['saved_query', b'saved_query']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['saved_query', b'saved_query'] - def ClearField(self, field_name: typing.Literal['saved_query', b'saved_query']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetSavedQueryResponse = GetSavedQueryResponse +Global___GetSavedQueryResponse: _TypeAlias = GetSavedQueryResponse -@typing.final -class UpdateSavedQueryRequest(google.protobuf.message.Message): +@_typing.final +class UpdateSavedQueryRequest(_message.Message): """UpdateSavedQuery updates the saved query with the given id.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - MQL_BINARY_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + MQL_BINARY_FIELD_NUMBER: _builtins.int + id: _builtins.str + name: _builtins.str - @property - def mql_binary(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: + @_builtins.property + def mql_binary(self) -> _containers.RepeatedScalarFieldContainer[_builtins.bytes]: ... - def __init__(self, *, id: builtins.str=..., name: builtins.str=..., mql_binary: collections.abc.Iterable[builtins.bytes] | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=..., mql_binary: _abc.Iterable[_builtins.bytes] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'mql_binary', b'mql_binary', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'mql_binary', b'mql_binary', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateSavedQueryRequest = UpdateSavedQueryRequest +Global___UpdateSavedQueryRequest: _TypeAlias = UpdateSavedQueryRequest -@typing.final -class UpdateSavedQueryResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class UpdateSavedQueryResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___UpdateSavedQueryResponse = UpdateSavedQueryResponse +Global___UpdateSavedQueryResponse: _TypeAlias = UpdateSavedQueryResponse -@typing.final -class ListSavedQueriesRequest(google.protobuf.message.Message): +@_typing.final +class ListSavedQueriesRequest(_message.Message): """ListSavedQueries lists saved queries for a given organization.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - LIMIT_FIELD_NUMBER: builtins.int - organization_id: builtins.str - limit: builtins.int + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + LIMIT_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + limit: _builtins.int - def __init__(self, *, organization_id: builtins.str=..., limit: builtins.int=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., limit: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['limit', b'limit', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['limit', b'limit', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListSavedQueriesRequest = ListSavedQueriesRequest +Global___ListSavedQueriesRequest: _TypeAlias = ListSavedQueriesRequest -@typing.final -class ListSavedQueriesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - QUERIES_FIELD_NUMBER: builtins.int +@_typing.final +class ListSavedQueriesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + QUERIES_FIELD_NUMBER: _builtins.int - @property - def queries(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Query]: + @_builtins.property + def queries(self) -> _containers.RepeatedCompositeFieldContainer[Global___Query]: ... - def __init__(self, *, queries: collections.abc.Iterable[global___Query] | None=...) -> None: + def __init__(self, *, queries: _abc.Iterable[Global___Query] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['queries', b'queries'] - def ClearField(self, field_name: typing.Literal['queries', b'queries']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListSavedQueriesResponse = ListSavedQueriesResponse +Global___ListSavedQueriesResponse: _TypeAlias = ListSavedQueriesResponse -@typing.final -class CreateBinaryDataSignedURLRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BINARY_DATA_ID_FIELD_NUMBER: builtins.int - EXPIRATION_MINUTES_FIELD_NUMBER: builtins.int - binary_data_id: builtins.str +@_typing.final +class CreateBinaryDataSignedURLRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + BINARY_DATA_ID_FIELD_NUMBER: _builtins.int + EXPIRATION_MINUTES_FIELD_NUMBER: _builtins.int + binary_data_id: _builtins.str 'The binary data ID of the file to create a signed URL for.' - expiration_minutes: builtins.int + expiration_minutes: _builtins.int 'Expiration time in minutes. Defaults to 15 minutes if not specified.\n Maximum allowed is 10080 minutes (7 days).\n ' - def __init__(self, *, binary_data_id: builtins.str=..., expiration_minutes: builtins.int | None=...) -> None: + def __init__(self, *, binary_data_id: _builtins.str=..., expiration_minutes: _builtins.int | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_expiration_minutes', b'_expiration_minutes', 'expiration_minutes', b'expiration_minutes'] - def HasField(self, field_name: typing.Literal['_expiration_minutes', b'_expiration_minutes', 'expiration_minutes', b'expiration_minutes']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_expiration_minutes', b'_expiration_minutes', 'binary_data_id', b'binary_data_id', 'expiration_minutes', b'expiration_minutes'] - def ClearField(self, field_name: typing.Literal['_expiration_minutes', b'_expiration_minutes', 'binary_data_id', b'binary_data_id', 'expiration_minutes', b'expiration_minutes']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__expiration_minutes: _TypeAlias = _typing.Literal['expiration_minutes'] + _WhichOneofArgType__expiration_minutes: _TypeAlias = _typing.Literal['_expiration_minutes', b'_expiration_minutes'] - def WhichOneof(self, oneof_group: typing.Literal['_expiration_minutes', b'_expiration_minutes']) -> typing.Literal['expiration_minutes'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__expiration_minutes) -> _WhichOneofReturnType__expiration_minutes | None: ... -global___CreateBinaryDataSignedURLRequest = CreateBinaryDataSignedURLRequest +Global___CreateBinaryDataSignedURLRequest: _TypeAlias = CreateBinaryDataSignedURLRequest -@typing.final -class CreateBinaryDataSignedURLResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SIGNED_URL_FIELD_NUMBER: builtins.int - EXPIRES_AT_FIELD_NUMBER: builtins.int - signed_url: builtins.str +@_typing.final +class CreateBinaryDataSignedURLResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SIGNED_URL_FIELD_NUMBER: _builtins.int + EXPIRES_AT_FIELD_NUMBER: _builtins.int + signed_url: _builtins.str 'The signed URL for the binary data file.' - @property - def expires_at(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def expires_at(self) -> _timestamp_pb2.Timestamp: """Expiration time of the signed URL token.""" - def __init__(self, *, signed_url: builtins.str=..., expires_at: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, signed_url: _builtins.str=..., expires_at: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['expires_at', b'expires_at'] - def HasField(self, field_name: typing.Literal['expires_at', b'expires_at']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['expires_at', b'expires_at', 'signed_url', b'signed_url'] - def ClearField(self, field_name: typing.Literal['expires_at', b'expires_at', 'signed_url', b'signed_url']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateBinaryDataSignedURLResponse = CreateBinaryDataSignedURLResponse \ No newline at end of file +Global___CreateBinaryDataSignedURLResponse: _TypeAlias = CreateBinaryDataSignedURLResponse \ No newline at end of file diff --git a/src/viam/gen/app/datapipelines/v1/data_pipelines_pb2.py b/src/viam/gen/app/datapipelines/v1/data_pipelines_pb2.py index a0a8af47c3..5846f027b9 100644 --- a/src/viam/gen/app/datapipelines/v1/data_pipelines_pb2.py +++ b/src/viam/gen/app/datapipelines/v1/data_pipelines_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'app/datapipelines/v1/data_pipelines.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/datapipelines/v1/data_pipelines.proto') _sym_db = _symbol_database.Default() from ....app.data.v1 import data_pb2 as app_dot_data_dot_v1_dot_data__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 diff --git a/src/viam/gen/app/datapipelines/v1/data_pipelines_pb2.pyi b/src/viam/gen/app/datapipelines/v1/data_pipelines_pb2.pyi index 526ba9c407..296a25aa35 100644 --- a/src/viam/gen/app/datapipelines/v1/data_pipelines_pb2.pyi +++ b/src/viam/gen/app/datapipelines/v1/data_pipelines_pb2.pyi @@ -2,28 +2,28 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -from .... import app -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.timestamp_pb2 +from app.data.v1 import data_pb2 as _data_pb2 +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor class _DataPipelineRunStatus: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _DataPipelineRunStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DataPipelineRunStatus.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _DataPipelineRunStatusEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_DataPipelineRunStatus.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor DATA_PIPELINE_RUN_STATUS_UNSPECIFIED: _DataPipelineRunStatus.ValueType DATA_PIPELINE_RUN_STATUS_SCHEDULED: _DataPipelineRunStatus.ValueType DATA_PIPELINE_RUN_STATUS_STARTED: _DataPipelineRunStatus.ValueType @@ -37,351 +37,375 @@ DATA_PIPELINE_RUN_STATUS_SCHEDULED: DataPipelineRunStatus.ValueType DATA_PIPELINE_RUN_STATUS_STARTED: DataPipelineRunStatus.ValueType DATA_PIPELINE_RUN_STATUS_COMPLETED: DataPipelineRunStatus.ValueType DATA_PIPELINE_RUN_STATUS_FAILED: DataPipelineRunStatus.ValueType -global___DataPipelineRunStatus = DataPipelineRunStatus - -@typing.final -class DataPipeline(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - MQL_BINARY_FIELD_NUMBER: builtins.int - SCHEDULE_FIELD_NUMBER: builtins.int - ENABLED_FIELD_NUMBER: builtins.int - CREATED_ON_FIELD_NUMBER: builtins.int - UPDATED_AT_FIELD_NUMBER: builtins.int - DATA_SOURCE_TYPE_FIELD_NUMBER: builtins.int - id: builtins.str - organization_id: builtins.str +Global___DataPipelineRunStatus: _TypeAlias = DataPipelineRunStatus + +@_typing.final +class DataPipeline(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + MQL_BINARY_FIELD_NUMBER: _builtins.int + SCHEDULE_FIELD_NUMBER: _builtins.int + ENABLED_FIELD_NUMBER: _builtins.int + CREATED_ON_FIELD_NUMBER: _builtins.int + UPDATED_AT_FIELD_NUMBER: _builtins.int + DATA_SOURCE_TYPE_FIELD_NUMBER: _builtins.int + id: _builtins.str + organization_id: _builtins.str 'The associated Viam organization ID.' - name: builtins.str + name: _builtins.str 'A unique identifier at the org level.' - schedule: builtins.str + schedule: _builtins.str 'A cron expression representing the expected execution schedule in UTC (note this also\n defines the input time window; an hourly schedule would process 1 hour of data at a time).\n ' - enabled: builtins.bool + enabled: _builtins.bool 'Whether or not the pipeline is enabled.' - data_source_type: app.data.v1.data_pb2.TabularDataSourceType.ValueType + data_source_type: _data_pb2.TabularDataSourceType.ValueType 'The type of data source for the pipeline. If not specified, default is standard data storage.' - @property - def mql_binary(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: + @_builtins.property + def mql_binary(self) -> _containers.RepeatedScalarFieldContainer[_builtins.bytes]: """A MongoDB aggregation pipeline as a list of BSON documents, where each document is one stage in the pipeline. """ - @property - def created_on(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def created_on(self) -> _timestamp_pb2.Timestamp: """The time the pipeline was created.""" - @property - def updated_at(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def updated_at(self) -> _timestamp_pb2.Timestamp: """The time the pipeline was last updated.""" - def __init__(self, *, id: builtins.str=..., organization_id: builtins.str=..., name: builtins.str=..., mql_binary: collections.abc.Iterable[builtins.bytes] | None=..., schedule: builtins.str=..., enabled: builtins.bool=..., created_on: google.protobuf.timestamp_pb2.Timestamp | None=..., updated_at: google.protobuf.timestamp_pb2.Timestamp | None=..., data_source_type: app.data.v1.data_pb2.TabularDataSourceType.ValueType | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., organization_id: _builtins.str=..., name: _builtins.str=..., mql_binary: _abc.Iterable[_builtins.bytes] | None=..., schedule: _builtins.str=..., enabled: _builtins.bool=..., created_on: _timestamp_pb2.Timestamp | None=..., updated_at: _timestamp_pb2.Timestamp | None=..., data_source_type: _data_pb2.TabularDataSourceType.ValueType | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_data_source_type', b'_data_source_type', 'created_on', b'created_on', 'data_source_type', b'data_source_type', 'updated_at', b'updated_at'] - def HasField(self, field_name: typing.Literal['_data_source_type', b'_data_source_type', 'created_on', b'created_on', 'data_source_type', b'data_source_type', 'updated_at', b'updated_at']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_data_source_type', b'_data_source_type', 'created_on', b'created_on', 'data_source_type', b'data_source_type', 'enabled', b'enabled', 'id', b'id', 'mql_binary', b'mql_binary', 'name', b'name', 'organization_id', b'organization_id', 'schedule', b'schedule', 'updated_at', b'updated_at'] - def ClearField(self, field_name: typing.Literal['_data_source_type', b'_data_source_type', 'created_on', b'created_on', 'data_source_type', b'data_source_type', 'enabled', b'enabled', 'id', b'id', 'mql_binary', b'mql_binary', 'name', b'name', 'organization_id', b'organization_id', 'schedule', b'schedule', 'updated_at', b'updated_at']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__data_source_type: _TypeAlias = _typing.Literal['data_source_type'] + _WhichOneofArgType__data_source_type: _TypeAlias = _typing.Literal['_data_source_type', b'_data_source_type'] - def WhichOneof(self, oneof_group: typing.Literal['_data_source_type', b'_data_source_type']) -> typing.Literal['data_source_type'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__data_source_type) -> _WhichOneofReturnType__data_source_type | None: ... -global___DataPipeline = DataPipeline +Global___DataPipeline: _TypeAlias = DataPipeline -@typing.final -class GetDataPipelineRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class GetDataPipelineRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str 'The ID of the data pipeline to retrieve.' - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetDataPipelineRequest = GetDataPipelineRequest +Global___GetDataPipelineRequest: _TypeAlias = GetDataPipelineRequest -@typing.final -class GetDataPipelineResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_PIPELINE_FIELD_NUMBER: builtins.int +@_typing.final +class GetDataPipelineResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_PIPELINE_FIELD_NUMBER: _builtins.int - @property - def data_pipeline(self) -> global___DataPipeline: + @_builtins.property + def data_pipeline(self) -> Global___DataPipeline: ... - def __init__(self, *, data_pipeline: global___DataPipeline | None=...) -> None: + def __init__(self, *, data_pipeline: Global___DataPipeline | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['data_pipeline', b'data_pipeline'] - def HasField(self, field_name: typing.Literal['data_pipeline', b'data_pipeline']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data_pipeline', b'data_pipeline'] - def ClearField(self, field_name: typing.Literal['data_pipeline', b'data_pipeline']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetDataPipelineResponse = GetDataPipelineResponse +Global___GetDataPipelineResponse: _TypeAlias = GetDataPipelineResponse -@typing.final -class ListDataPipelinesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - organization_id: builtins.str +@_typing.final +class ListDataPipelinesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str 'The associated Viam organization ID.' - def __init__(self, *, organization_id: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListDataPipelinesRequest = ListDataPipelinesRequest +Global___ListDataPipelinesRequest: _TypeAlias = ListDataPipelinesRequest -@typing.final -class ListDataPipelinesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_PIPELINES_FIELD_NUMBER: builtins.int +@_typing.final +class ListDataPipelinesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_PIPELINES_FIELD_NUMBER: _builtins.int - @property - def data_pipelines(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DataPipeline]: + @_builtins.property + def data_pipelines(self) -> _containers.RepeatedCompositeFieldContainer[Global___DataPipeline]: ... - def __init__(self, *, data_pipelines: collections.abc.Iterable[global___DataPipeline] | None=...) -> None: + def __init__(self, *, data_pipelines: _abc.Iterable[Global___DataPipeline] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data_pipelines', b'data_pipelines'] - def ClearField(self, field_name: typing.Literal['data_pipelines', b'data_pipelines']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListDataPipelinesResponse = ListDataPipelinesResponse +Global___ListDataPipelinesResponse: _TypeAlias = ListDataPipelinesResponse -@typing.final -class CreateDataPipelineRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - MQL_BINARY_FIELD_NUMBER: builtins.int - SCHEDULE_FIELD_NUMBER: builtins.int - ENABLE_BACKFILL_FIELD_NUMBER: builtins.int - DATA_SOURCE_TYPE_FIELD_NUMBER: builtins.int - organization_id: builtins.str +@_typing.final +class CreateDataPipelineRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + MQL_BINARY_FIELD_NUMBER: _builtins.int + SCHEDULE_FIELD_NUMBER: _builtins.int + ENABLE_BACKFILL_FIELD_NUMBER: _builtins.int + DATA_SOURCE_TYPE_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str 'The associated Viam organization ID.' - name: builtins.str + name: _builtins.str 'A unique identifier at the org level.' - schedule: builtins.str + schedule: _builtins.str 'A cron expression representing the expected execution schedule in UTC (note this also\n defines the input time window; an hourly schedule would process 1 hour of data at a time).\n ' - enable_backfill: builtins.bool + enable_backfill: _builtins.bool "When true, pipeline runs will be scheduled for the organization's past data." - data_source_type: app.data.v1.data_pb2.TabularDataSourceType.ValueType + data_source_type: _data_pb2.TabularDataSourceType.ValueType 'The type of data source for the pipeline. If not specified, default is standard data storage.' - @property - def mql_binary(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: + @_builtins.property + def mql_binary(self) -> _containers.RepeatedScalarFieldContainer[_builtins.bytes]: """A MongoDB aggregation pipeline as a list of BSON documents, where each document is one stage in the pipeline. """ - def __init__(self, *, organization_id: builtins.str=..., name: builtins.str=..., mql_binary: collections.abc.Iterable[builtins.bytes] | None=..., schedule: builtins.str=..., enable_backfill: builtins.bool | None=..., data_source_type: app.data.v1.data_pb2.TabularDataSourceType.ValueType | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., name: _builtins.str=..., mql_binary: _abc.Iterable[_builtins.bytes] | None=..., schedule: _builtins.str=..., enable_backfill: _builtins.bool | None=..., data_source_type: _data_pb2.TabularDataSourceType.ValueType | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_data_source_type', b'_data_source_type', '_enable_backfill', b'_enable_backfill', 'data_source_type', b'data_source_type', 'enable_backfill', b'enable_backfill'] - def HasField(self, field_name: typing.Literal['_data_source_type', b'_data_source_type', '_enable_backfill', b'_enable_backfill', 'data_source_type', b'data_source_type', 'enable_backfill', b'enable_backfill']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_data_source_type', b'_data_source_type', '_enable_backfill', b'_enable_backfill', 'data_source_type', b'data_source_type', 'enable_backfill', b'enable_backfill', 'mql_binary', b'mql_binary', 'name', b'name', 'organization_id', b'organization_id', 'schedule', b'schedule'] - def ClearField(self, field_name: typing.Literal['_data_source_type', b'_data_source_type', '_enable_backfill', b'_enable_backfill', 'data_source_type', b'data_source_type', 'enable_backfill', b'enable_backfill', 'mql_binary', b'mql_binary', 'name', b'name', 'organization_id', b'organization_id', 'schedule', b'schedule']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__data_source_type: _TypeAlias = _typing.Literal['data_source_type'] + _WhichOneofArgType__data_source_type: _TypeAlias = _typing.Literal['_data_source_type', b'_data_source_type'] + _WhichOneofReturnType__enable_backfill: _TypeAlias = _typing.Literal['enable_backfill'] + _WhichOneofArgType__enable_backfill: _TypeAlias = _typing.Literal['_enable_backfill', b'_enable_backfill'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_data_source_type', b'_data_source_type']) -> typing.Literal['data_source_type'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__data_source_type) -> _WhichOneofReturnType__data_source_type | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_enable_backfill', b'_enable_backfill']) -> typing.Literal['enable_backfill'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__enable_backfill) -> _WhichOneofReturnType__enable_backfill | None: ... -global___CreateDataPipelineRequest = CreateDataPipelineRequest +Global___CreateDataPipelineRequest: _TypeAlias = CreateDataPipelineRequest -@typing.final -class CreateDataPipelineResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class CreateDataPipelineResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str 'The ID of the newly created data pipeline.' - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateDataPipelineResponse = CreateDataPipelineResponse +Global___CreateDataPipelineResponse: _TypeAlias = CreateDataPipelineResponse -@typing.final -class RenameDataPipelineRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class RenameDataPipelineRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + id: _builtins.str 'The ID of the data pipeline to rename.' - name: builtins.str + name: _builtins.str 'A unique identifier at the organization level.' - def __init__(self, *, id: builtins.str=..., name: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RenameDataPipelineRequest = RenameDataPipelineRequest +Global___RenameDataPipelineRequest: _TypeAlias = RenameDataPipelineRequest -@typing.final -class RenameDataPipelineResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class RenameDataPipelineResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___RenameDataPipelineResponse = RenameDataPipelineResponse +Global___RenameDataPipelineResponse: _TypeAlias = RenameDataPipelineResponse -@typing.final -class DeleteDataPipelineRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class DeleteDataPipelineRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str 'The ID of the data pipeline to delete.' - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteDataPipelineRequest = DeleteDataPipelineRequest +Global___DeleteDataPipelineRequest: _TypeAlias = DeleteDataPipelineRequest -@typing.final -class DeleteDataPipelineResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteDataPipelineResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteDataPipelineResponse = DeleteDataPipelineResponse +Global___DeleteDataPipelineResponse: _TypeAlias = DeleteDataPipelineResponse -@typing.final -class EnableDataPipelineRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class EnableDataPipelineRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str 'The ID of the data pipeline to enable.' - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EnableDataPipelineRequest = EnableDataPipelineRequest +Global___EnableDataPipelineRequest: _TypeAlias = EnableDataPipelineRequest -@typing.final -class EnableDataPipelineResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class EnableDataPipelineResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___EnableDataPipelineResponse = EnableDataPipelineResponse +Global___EnableDataPipelineResponse: _TypeAlias = EnableDataPipelineResponse -@typing.final -class DisableDataPipelineRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class DisableDataPipelineRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str 'The ID of the data pipeline to disable.' - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DisableDataPipelineRequest = DisableDataPipelineRequest +Global___DisableDataPipelineRequest: _TypeAlias = DisableDataPipelineRequest -@typing.final -class DisableDataPipelineResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DisableDataPipelineResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DisableDataPipelineResponse = DisableDataPipelineResponse +Global___DisableDataPipelineResponse: _TypeAlias = DisableDataPipelineResponse -@typing.final -class ListDataPipelineRunsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - PAGE_SIZE_FIELD_NUMBER: builtins.int - PAGE_TOKEN_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class ListDataPipelineRunsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + PAGE_SIZE_FIELD_NUMBER: _builtins.int + PAGE_TOKEN_FIELD_NUMBER: _builtins.int + id: _builtins.str 'The ID of the data pipeline to list runs for.' - page_size: builtins.int + page_size: _builtins.int 'pagination fields' - page_token: builtins.str + page_token: _builtins.str - def __init__(self, *, id: builtins.str=..., page_size: builtins.int=..., page_token: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., page_size: _builtins.int=..., page_token: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'page_size', b'page_size', 'page_token', b'page_token'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'page_size', b'page_size', 'page_token', b'page_token']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListDataPipelineRunsRequest = ListDataPipelineRunsRequest +Global___ListDataPipelineRunsRequest: _TypeAlias = ListDataPipelineRunsRequest -@typing.final -class ListDataPipelineRunsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PIPELINE_ID_FIELD_NUMBER: builtins.int - RUNS_FIELD_NUMBER: builtins.int - NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int - pipeline_id: builtins.str +@_typing.final +class ListDataPipelineRunsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PIPELINE_ID_FIELD_NUMBER: _builtins.int + RUNS_FIELD_NUMBER: _builtins.int + NEXT_PAGE_TOKEN_FIELD_NUMBER: _builtins.int + pipeline_id: _builtins.str 'The ID of the data pipeline the runs are for.' - next_page_token: builtins.str + next_page_token: _builtins.str 'A token to retrieve the next page of results.' - @property - def runs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DataPipelineRun]: + @_builtins.property + def runs(self) -> _containers.RepeatedCompositeFieldContainer[Global___DataPipelineRun]: """The runs that were run.""" - def __init__(self, *, pipeline_id: builtins.str=..., runs: collections.abc.Iterable[global___DataPipelineRun] | None=..., next_page_token: builtins.str=...) -> None: + def __init__(self, *, pipeline_id: _builtins.str=..., runs: _abc.Iterable[Global___DataPipelineRun] | None=..., next_page_token: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['next_page_token', b'next_page_token', 'pipeline_id', b'pipeline_id', 'runs', b'runs'] - def ClearField(self, field_name: typing.Literal['next_page_token', b'next_page_token', 'pipeline_id', b'pipeline_id', 'runs', b'runs']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListDataPipelineRunsResponse = ListDataPipelineRunsResponse +Global___ListDataPipelineRunsResponse: _TypeAlias = ListDataPipelineRunsResponse -@typing.final -class DataPipelineRun(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - START_TIME_FIELD_NUMBER: builtins.int - END_TIME_FIELD_NUMBER: builtins.int - DATA_START_TIME_FIELD_NUMBER: builtins.int - DATA_END_TIME_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - ERROR_MESSAGE_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class DataPipelineRun(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + START_TIME_FIELD_NUMBER: _builtins.int + END_TIME_FIELD_NUMBER: _builtins.int + DATA_START_TIME_FIELD_NUMBER: _builtins.int + DATA_END_TIME_FIELD_NUMBER: _builtins.int + STATUS_FIELD_NUMBER: _builtins.int + ERROR_MESSAGE_FIELD_NUMBER: _builtins.int + id: _builtins.str 'The ID of the run.' - status: global___DataPipelineRunStatus.ValueType + status: Global___DataPipelineRunStatus.ValueType 'The status of the run.' - error_message: builtins.str + error_message: _builtins.str 'The error message if the run failed.' - @property - def start_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def start_time(self) -> _timestamp_pb2.Timestamp: """The time the run started.""" - @property - def end_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def end_time(self) -> _timestamp_pb2.Timestamp: """The time the run ended.""" - @property - def data_start_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def data_start_time(self) -> _timestamp_pb2.Timestamp: """The start time of the data that was processed in the run.""" - @property - def data_end_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def data_end_time(self) -> _timestamp_pb2.Timestamp: """The end time of the data that was processed in the run.""" - def __init__(self, *, id: builtins.str=..., start_time: google.protobuf.timestamp_pb2.Timestamp | None=..., end_time: google.protobuf.timestamp_pb2.Timestamp | None=..., data_start_time: google.protobuf.timestamp_pb2.Timestamp | None=..., data_end_time: google.protobuf.timestamp_pb2.Timestamp | None=..., status: global___DataPipelineRunStatus.ValueType=..., error_message: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., start_time: _timestamp_pb2.Timestamp | None=..., end_time: _timestamp_pb2.Timestamp | None=..., data_start_time: _timestamp_pb2.Timestamp | None=..., data_end_time: _timestamp_pb2.Timestamp | None=..., status: Global___DataPipelineRunStatus.ValueType=..., error_message: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['data_end_time', b'data_end_time', 'data_start_time', b'data_start_time', 'end_time', b'end_time', 'start_time', b'start_time'] - def HasField(self, field_name: typing.Literal['data_end_time', b'data_end_time', 'data_start_time', b'data_start_time', 'end_time', b'end_time', 'start_time', b'start_time']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data_end_time', b'data_end_time', 'data_start_time', b'data_start_time', 'end_time', b'end_time', 'error_message', b'error_message', 'id', b'id', 'start_time', b'start_time', 'status', b'status'] - def ClearField(self, field_name: typing.Literal['data_end_time', b'data_end_time', 'data_start_time', b'data_start_time', 'end_time', b'end_time', 'error_message', b'error_message', 'id', b'id', 'start_time', b'start_time', 'status', b'status']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DataPipelineRun = DataPipelineRun \ No newline at end of file +Global___DataPipelineRun: _TypeAlias = DataPipelineRun \ No newline at end of file diff --git a/src/viam/gen/app/dataset/v1/dataset_pb2.py b/src/viam/gen/app/dataset/v1/dataset_pb2.py index 3b0f67f09d..23a0a3117d 100644 --- a/src/viam/gen/app/dataset/v1/dataset_pb2.py +++ b/src/viam/gen/app/dataset/v1/dataset_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'app/dataset/v1/dataset.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/dataset/v1/dataset.proto') _sym_db = _symbol_database.Default() from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1capp/dataset/v1/dataset.proto\x12\x13viam.app.dataset.v1\x1a\x1fgoogle/protobuf/timestamp.proto"\x95\x01\n\x07Dataset\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\'\n\x0forganization_id\x18\x03 \x01(\tR\x0eorganizationId\x12=\n\x0ctime_created\x18\x04 \x01(\x0b2\x1a.google.protobuf.TimestampR\x0btimeCreated"S\n\x14CreateDatasetRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\'\n\x0forganization_id\x18\x02 \x01(\tR\x0eorganizationId"\'\n\x15CreateDatasetResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"&\n\x14DeleteDatasetRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"\x17\n\x15DeleteDatasetResponse":\n\x14RenameDatasetRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name"\x17\n\x15RenameDatasetResponse"N\n#ListDatasetsByOrganizationIDRequest\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId"`\n$ListDatasetsByOrganizationIDResponse\x128\n\x08datasets\x18\x01 \x03(\x0b2\x1c.viam.app.dataset.v1.DatasetR\x08datasets",\n\x18ListDatasetsByIDsRequest\x12\x10\n\x03ids\x18\x01 \x03(\tR\x03ids"U\n\x19ListDatasetsByIDsResponse\x128\n\x08datasets\x18\x01 \x03(\x0b2\x1c.viam.app.dataset.v1.DatasetR\x08datasets"t\n\x14MergeDatasetsRequest\x12\x1f\n\x0bdataset_ids\x18\x01 \x03(\tR\ndatasetIds\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\'\n\x0forganization_id\x18\x03 \x01(\tR\x0eorganizationId"6\n\x15MergeDatasetsResponse\x12\x1d\n\ndataset_id\x18\x01 \x01(\tR\tdatasetId2\xba\x05\n\x0eDatasetService\x12f\n\rCreateDataset\x12).viam.app.dataset.v1.CreateDatasetRequest\x1a*.viam.app.dataset.v1.CreateDatasetResponse\x12f\n\rDeleteDataset\x12).viam.app.dataset.v1.DeleteDatasetRequest\x1a*.viam.app.dataset.v1.DeleteDatasetResponse\x12f\n\rRenameDataset\x12).viam.app.dataset.v1.RenameDatasetRequest\x1a*.viam.app.dataset.v1.RenameDatasetResponse\x12\x93\x01\n\x1cListDatasetsByOrganizationID\x128.viam.app.dataset.v1.ListDatasetsByOrganizationIDRequest\x1a9.viam.app.dataset.v1.ListDatasetsByOrganizationIDResponse\x12r\n\x11ListDatasetsByIDs\x12-.viam.app.dataset.v1.ListDatasetsByIDsRequest\x1a..viam.app.dataset.v1.ListDatasetsByIDsResponse\x12f\n\rMergeDatasets\x12).viam.app.dataset.v1.MergeDatasetsRequest\x1a*.viam.app.dataset.v1.MergeDatasetsResponseB Z\x1ego.viam.com/api/app/dataset/v1b\x06proto3') diff --git a/src/viam/gen/app/dataset/v1/dataset_pb2.pyi b/src/viam/gen/app/dataset/v1/dataset_pb2.pyi index 2fd5e06124..b2b05793cd 100644 --- a/src/viam/gen/app/dataset/v1/dataset_pb2.pyi +++ b/src/viam/gen/app/dataset/v1/dataset_pb2.pyi @@ -2,213 +2,230 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import google.protobuf.timestamp_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class Dataset(google.protobuf.message.Message): +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class Dataset(_message.Message): """Dataset stores the metadata of a dataset.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - TIME_CREATED_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str - organization_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + TIME_CREATED_FIELD_NUMBER: _builtins.int + id: _builtins.str + name: _builtins.str + organization_id: _builtins.str - @property - def time_created(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time_created(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, id: builtins.str=..., name: builtins.str=..., organization_id: builtins.str=..., time_created: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=..., organization_id: _builtins.str=..., time_created: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['time_created', b'time_created'] - def HasField(self, field_name: typing.Literal['time_created', b'time_created']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'name', b'name', 'organization_id', b'organization_id', 'time_created', b'time_created'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'name', b'name', 'organization_id', b'organization_id', 'time_created', b'time_created']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Dataset = Dataset +Global___Dataset: _TypeAlias = Dataset -@typing.final -class CreateDatasetRequest(google.protobuf.message.Message): +@_typing.final +class CreateDatasetRequest(_message.Message): """CreateDatasetRequest defines the name and organization ID of a dataset.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - name: builtins.str - organization_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + name: _builtins.str + organization_id: _builtins.str - def __init__(self, *, name: builtins.str=..., organization_id: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=..., organization_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['name', b'name', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateDatasetRequest = CreateDatasetRequest +Global___CreateDatasetRequest: _TypeAlias = CreateDatasetRequest -@typing.final -class CreateDatasetResponse(google.protobuf.message.Message): +@_typing.final +class CreateDatasetResponse(_message.Message): """CreateDatasetResponse returns the dataset ID of the created dataset.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateDatasetResponse = CreateDatasetResponse +Global___CreateDatasetResponse: _TypeAlias = CreateDatasetResponse -@typing.final -class DeleteDatasetRequest(google.protobuf.message.Message): +@_typing.final +class DeleteDatasetRequest(_message.Message): """DeleteDatasetRequest deletes the dataset specified by the dataset ID.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteDatasetRequest = DeleteDatasetRequest +Global___DeleteDatasetRequest: _TypeAlias = DeleteDatasetRequest -@typing.final -class DeleteDatasetResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteDatasetResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteDatasetResponse = DeleteDatasetResponse +Global___DeleteDatasetResponse: _TypeAlias = DeleteDatasetResponse -@typing.final -class RenameDatasetRequest(google.protobuf.message.Message): +@_typing.final +class RenameDatasetRequest(_message.Message): """RenameDatasetRequest applies the new name to the dataset specified by the dataset ID.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + id: _builtins.str + name: _builtins.str - def __init__(self, *, id: builtins.str=..., name: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RenameDatasetRequest = RenameDatasetRequest +Global___RenameDatasetRequest: _TypeAlias = RenameDatasetRequest -@typing.final -class RenameDatasetResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class RenameDatasetResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___RenameDatasetResponse = RenameDatasetResponse +Global___RenameDatasetResponse: _TypeAlias = RenameDatasetResponse -@typing.final -class ListDatasetsByOrganizationIDRequest(google.protobuf.message.Message): +@_typing.final +class ListDatasetsByOrganizationIDRequest(_message.Message): """ListDatasetsByOrganizationIDRequest requests all of the datasets for an organization.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - organization_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str - def __init__(self, *, organization_id: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListDatasetsByOrganizationIDRequest = ListDatasetsByOrganizationIDRequest +Global___ListDatasetsByOrganizationIDRequest: _TypeAlias = ListDatasetsByOrganizationIDRequest -@typing.final -class ListDatasetsByOrganizationIDResponse(google.protobuf.message.Message): +@_typing.final +class ListDatasetsByOrganizationIDResponse(_message.Message): """ListDatasetsByOrganizationIDResponse returns all the dataset metadata for the organization.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATASETS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + DATASETS_FIELD_NUMBER: _builtins.int - @property - def datasets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Dataset]: + @_builtins.property + def datasets(self) -> _containers.RepeatedCompositeFieldContainer[Global___Dataset]: ... - def __init__(self, *, datasets: collections.abc.Iterable[global___Dataset] | None=...) -> None: + def __init__(self, *, datasets: _abc.Iterable[Global___Dataset] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['datasets', b'datasets'] - def ClearField(self, field_name: typing.Literal['datasets', b'datasets']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListDatasetsByOrganizationIDResponse = ListDatasetsByOrganizationIDResponse +Global___ListDatasetsByOrganizationIDResponse: _TypeAlias = ListDatasetsByOrganizationIDResponse -@typing.final -class ListDatasetsByIDsRequest(google.protobuf.message.Message): +@_typing.final +class ListDatasetsByIDsRequest(_message.Message): """ListDatasetsByIDsRequest requests all of the datasets by their dataset IDs.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - IDS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + IDS_FIELD_NUMBER: _builtins.int - @property - def ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, ids: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, ids: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['ids', b'ids'] - def ClearField(self, field_name: typing.Literal['ids', b'ids']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListDatasetsByIDsRequest = ListDatasetsByIDsRequest +Global___ListDatasetsByIDsRequest: _TypeAlias = ListDatasetsByIDsRequest -@typing.final -class ListDatasetsByIDsResponse(google.protobuf.message.Message): +@_typing.final +class ListDatasetsByIDsResponse(_message.Message): """ListDatasetsByIDsResponse returns all the dataset metadata for the associated dataset IDs.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATASETS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + DATASETS_FIELD_NUMBER: _builtins.int - @property - def datasets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Dataset]: + @_builtins.property + def datasets(self) -> _containers.RepeatedCompositeFieldContainer[Global___Dataset]: ... - def __init__(self, *, datasets: collections.abc.Iterable[global___Dataset] | None=...) -> None: + def __init__(self, *, datasets: _abc.Iterable[Global___Dataset] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['datasets', b'datasets'] - def ClearField(self, field_name: typing.Literal['datasets', b'datasets']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListDatasetsByIDsResponse = ListDatasetsByIDsResponse +Global___ListDatasetsByIDsResponse: _TypeAlias = ListDatasetsByIDsResponse -@typing.final -class MergeDatasetsRequest(google.protobuf.message.Message): +@_typing.final +class MergeDatasetsRequest(_message.Message): """MergeDatasetsRequest merges multiple datasets specified by their dataset IDs into a new dataset.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATASET_IDS_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - name: builtins.str - organization_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + DATASET_IDS_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + name: _builtins.str + organization_id: _builtins.str - @property - def dataset_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def dataset_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, dataset_ids: collections.abc.Iterable[builtins.str] | None=..., name: builtins.str=..., organization_id: builtins.str=...) -> None: + def __init__(self, *, dataset_ids: _abc.Iterable[_builtins.str] | None=..., name: _builtins.str=..., organization_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['dataset_ids', b'dataset_ids', 'name', b'name', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['dataset_ids', b'dataset_ids', 'name', b'name', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MergeDatasetsRequest = MergeDatasetsRequest +Global___MergeDatasetsRequest: _TypeAlias = MergeDatasetsRequest -@typing.final -class MergeDatasetsResponse(google.protobuf.message.Message): +@_typing.final +class MergeDatasetsResponse(_message.Message): """MergeDatasetsResponse returns the dataset ID of the newly created merged dataset.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATASET_ID_FIELD_NUMBER: builtins.int - dataset_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + DATASET_ID_FIELD_NUMBER: _builtins.int + dataset_id: _builtins.str - def __init__(self, *, dataset_id: builtins.str=...) -> None: + def __init__(self, *, dataset_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['dataset_id', b'dataset_id'] - def ClearField(self, field_name: typing.Literal['dataset_id', b'dataset_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MergeDatasetsResponse = MergeDatasetsResponse \ No newline at end of file +Global___MergeDatasetsResponse: _TypeAlias = MergeDatasetsResponse \ No newline at end of file diff --git a/src/viam/gen/app/datasync/v1/data_sync_grpc.py b/src/viam/gen/app/datasync/v1/data_sync_grpc.py index 2fbf2ed00d..6119114f0e 100644 --- a/src/viam/gen/app/datasync/v1/data_sync_grpc.py +++ b/src/viam/gen/app/datasync/v1/data_sync_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import app -import google.api.annotations_pb2 +from .... import google import google.protobuf.any_pb2 import google.protobuf.struct_pb2 import google.protobuf.timestamp_pb2 diff --git a/src/viam/gen/app/datasync/v1/data_sync_pb2.py b/src/viam/gen/app/datasync/v1/data_sync_pb2.py index 0fd2816e45..8c764c3bc1 100644 --- a/src/viam/gen/app/datasync/v1/data_sync_pb2.py +++ b/src/viam/gen/app/datasync/v1/data_sync_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'app/datasync/v1/data_sync.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/datasync/v1/data_sync.proto') _sym_db = _symbol_database.Default() from ....app.data.v1 import data_pb2 as app_dot_data_dot_v1_dot_data__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 diff --git a/src/viam/gen/app/datasync/v1/data_sync_pb2.pyi b/src/viam/gen/app/datasync/v1/data_sync_pb2.pyi index eb644f6bdb..4fa1770232 100644 --- a/src/viam/gen/app/datasync/v1/data_sync_pb2.pyi +++ b/src/viam/gen/app/datasync/v1/data_sync_pb2.pyi @@ -2,30 +2,34 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -from .... import app -import builtins -import collections.abc -import google.protobuf.any_pb2 -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 -import google.protobuf.timestamp_pb2 +from app.data.v1 import data_pb2 as _data_pb2 +from collections import abc as _abc +from google.protobuf import any_pb2 as _any_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +if sys.version_info >= (3, 13): + from warnings import deprecated as _deprecated +else: + from typing_extensions import deprecated as _deprecated +DESCRIPTOR: _descriptor.FileDescriptor class _MimeType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _MimeTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MimeType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _MimeTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_MimeType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor MIME_TYPE_UNSPECIFIED: _MimeType.ValueType MIME_TYPE_IMAGE_JPEG: _MimeType.ValueType MIME_TYPE_IMAGE_PNG: _MimeType.ValueType @@ -39,14 +43,14 @@ MIME_TYPE_IMAGE_JPEG: MimeType.ValueType MIME_TYPE_IMAGE_PNG: MimeType.ValueType MIME_TYPE_APPLICATION_PCD: MimeType.ValueType MIME_TYPE_VIDEO_MP4: MimeType.ValueType -global___MimeType = MimeType +Global___MimeType: _TypeAlias = MimeType class _DataType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _DataTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DataType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _DataTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_DataType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor DATA_TYPE_UNSPECIFIED: _DataType.ValueType DATA_TYPE_BINARY_SENSOR: _DataType.ValueType DATA_TYPE_TABULAR_SENSOR: _DataType.ValueType @@ -58,392 +62,450 @@ DATA_TYPE_UNSPECIFIED: DataType.ValueType DATA_TYPE_BINARY_SENSOR: DataType.ValueType DATA_TYPE_TABULAR_SENSOR: DataType.ValueType DATA_TYPE_FILE: DataType.ValueType -global___DataType = DataType +Global___DataType: _TypeAlias = DataType -@typing.final -class DataCaptureUploadRequest(google.protobuf.message.Message): +@_typing.final +class DataCaptureUploadRequest(_message.Message): """DataCaptureUploadRequest requests to upload the contents and metadata for tabular data.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - METADATA_FIELD_NUMBER: builtins.int - SENSOR_CONTENTS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + METADATA_FIELD_NUMBER: _builtins.int + SENSOR_CONTENTS_FIELD_NUMBER: _builtins.int - @property - def metadata(self) -> global___UploadMetadata: + @_builtins.property + def metadata(self) -> Global___UploadMetadata: ... - @property - def sensor_contents(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SensorData]: + @_builtins.property + def sensor_contents(self) -> _containers.RepeatedCompositeFieldContainer[Global___SensorData]: ... - def __init__(self, *, metadata: global___UploadMetadata | None=..., sensor_contents: collections.abc.Iterable[global___SensorData] | None=...) -> None: + def __init__(self, *, metadata: Global___UploadMetadata | None=..., sensor_contents: _abc.Iterable[Global___SensorData] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['metadata', b'metadata'] - def HasField(self, field_name: typing.Literal['metadata', b'metadata']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['metadata', b'metadata', 'sensor_contents', b'sensor_contents'] - def ClearField(self, field_name: typing.Literal['metadata', b'metadata', 'sensor_contents', b'sensor_contents']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DataCaptureUploadRequest = DataCaptureUploadRequest +Global___DataCaptureUploadRequest: _TypeAlias = DataCaptureUploadRequest -@typing.final -class DataCaptureUploadResponse(google.protobuf.message.Message): +@_typing.final +class DataCaptureUploadResponse(_message.Message): """DataCaptureUploadResponse returns the file id of the uploaded contents and metadata for tabular data.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FILE_ID_FIELD_NUMBER: builtins.int - BINARY_DATA_ID_FIELD_NUMBER: builtins.int - file_id: builtins.str - binary_data_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + FILE_ID_FIELD_NUMBER: _builtins.int + BINARY_DATA_ID_FIELD_NUMBER: _builtins.int + file_id: _builtins.str + binary_data_id: _builtins.str - def __init__(self, *, file_id: builtins.str=..., binary_data_id: builtins.str=...) -> None: + def __init__(self, *, file_id: _builtins.str=..., binary_data_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['binary_data_id', b'binary_data_id', 'file_id', b'file_id'] - def ClearField(self, field_name: typing.Literal['binary_data_id', b'binary_data_id', 'file_id', b'file_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DataCaptureUploadResponse = DataCaptureUploadResponse +Global___DataCaptureUploadResponse: _TypeAlias = DataCaptureUploadResponse -@typing.final -class FileUploadRequest(google.protobuf.message.Message): +@_typing.final +class FileUploadRequest(_message.Message): """FileUploadRequest requests to upload the contents and metadata for binary (image + file) data. The first packet must be the UploadMetadata associated with the binary data. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - METADATA_FIELD_NUMBER: builtins.int - FILE_CONTENTS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + METADATA_FIELD_NUMBER: _builtins.int + FILE_CONTENTS_FIELD_NUMBER: _builtins.int - @property - def metadata(self) -> global___UploadMetadata: + @_builtins.property + def metadata(self) -> Global___UploadMetadata: ... - @property - def file_contents(self) -> global___FileData: + @_builtins.property + def file_contents(self) -> Global___FileData: ... - def __init__(self, *, metadata: global___UploadMetadata | None=..., file_contents: global___FileData | None=...) -> None: + def __init__(self, *, metadata: Global___UploadMetadata | None=..., file_contents: Global___FileData | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['file_contents', b'file_contents', 'metadata', b'metadata', 'upload_packet', b'upload_packet'] - def HasField(self, field_name: typing.Literal['file_contents', b'file_contents', 'metadata', b'metadata', 'upload_packet', b'upload_packet']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['file_contents', b'file_contents', 'metadata', b'metadata', 'upload_packet', b'upload_packet'] - def ClearField(self, field_name: typing.Literal['file_contents', b'file_contents', 'metadata', b'metadata', 'upload_packet', b'upload_packet']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_upload_packet: _TypeAlias = _typing.Literal['metadata', 'file_contents'] + _WhichOneofArgType_upload_packet: _TypeAlias = _typing.Literal['upload_packet', b'upload_packet'] - def WhichOneof(self, oneof_group: typing.Literal['upload_packet', b'upload_packet']) -> typing.Literal['metadata', 'file_contents'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_upload_packet) -> _WhichOneofReturnType_upload_packet | None: ... -global___FileUploadRequest = FileUploadRequest +Global___FileUploadRequest: _TypeAlias = FileUploadRequest -@typing.final -class FileUploadResponse(google.protobuf.message.Message): +@_typing.final +class FileUploadResponse(_message.Message): """FileUploadResponse returns the file id of the uploaded contents and metadata for binary (image + file) data.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FILE_ID_FIELD_NUMBER: builtins.int - BINARY_DATA_ID_FIELD_NUMBER: builtins.int - file_id: builtins.str - binary_data_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + FILE_ID_FIELD_NUMBER: _builtins.int + BINARY_DATA_ID_FIELD_NUMBER: _builtins.int + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def file_id(self) -> _builtins.str: + ... - def __init__(self, *, file_id: builtins.str=..., binary_data_id: builtins.str=...) -> None: + @file_id.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def file_id(self, value: _builtins.str) -> None: ... + binary_data_id: _builtins.str - def ClearField(self, field_name: typing.Literal['binary_data_id', b'binary_data_id', 'file_id', b'file_id']) -> None: + def __init__(self, *, file_id: _builtins.str=..., binary_data_id: _builtins.str=...) -> None: ... -global___FileUploadResponse = FileUploadResponse + _ClearFieldArgType: _TypeAlias = _typing.Literal['binary_data_id', b'binary_data_id', 'file_id', b'file_id'] -@typing.final -class StreamingDataCaptureUploadRequest(google.protobuf.message.Message): + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___FileUploadResponse: _TypeAlias = FileUploadResponse + +@_typing.final +class StreamingDataCaptureUploadRequest(_message.Message): """StreamingDataCaptureUploadRequest requests to upload the contents and metadata for streaming binary (image + file) data. The first packet must be the DataCaptureUploadMetadata associated with the data. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - METADATA_FIELD_NUMBER: builtins.int - DATA_FIELD_NUMBER: builtins.int - data: builtins.bytes + DESCRIPTOR: _descriptor.Descriptor + METADATA_FIELD_NUMBER: _builtins.int + DATA_FIELD_NUMBER: _builtins.int + data: _builtins.bytes - @property - def metadata(self) -> global___DataCaptureUploadMetadata: + @_builtins.property + def metadata(self) -> Global___DataCaptureUploadMetadata: ... - def __init__(self, *, metadata: global___DataCaptureUploadMetadata | None=..., data: builtins.bytes=...) -> None: + def __init__(self, *, metadata: Global___DataCaptureUploadMetadata | None=..., data: _builtins.bytes=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['data', b'data', 'metadata', b'metadata', 'upload_packet', b'upload_packet'] - def HasField(self, field_name: typing.Literal['data', b'data', 'metadata', b'metadata', 'upload_packet', b'upload_packet']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data', 'metadata', b'metadata', 'upload_packet', b'upload_packet'] - def ClearField(self, field_name: typing.Literal['data', b'data', 'metadata', b'metadata', 'upload_packet', b'upload_packet']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_upload_packet: _TypeAlias = _typing.Literal['metadata', 'data'] + _WhichOneofArgType_upload_packet: _TypeAlias = _typing.Literal['upload_packet', b'upload_packet'] - def WhichOneof(self, oneof_group: typing.Literal['upload_packet', b'upload_packet']) -> typing.Literal['metadata', 'data'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_upload_packet) -> _WhichOneofReturnType_upload_packet | None: ... -global___StreamingDataCaptureUploadRequest = StreamingDataCaptureUploadRequest +Global___StreamingDataCaptureUploadRequest: _TypeAlias = StreamingDataCaptureUploadRequest -@typing.final -class StreamingDataCaptureUploadResponse(google.protobuf.message.Message): +@_typing.final +class StreamingDataCaptureUploadResponse(_message.Message): """StreamingDataCaptureUploadResponse returns the file id of the uploaded contents and metadata for streaming binary (image + file) data.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FILE_ID_FIELD_NUMBER: builtins.int - BINARY_DATA_ID_FIELD_NUMBER: builtins.int - file_id: builtins.str - binary_data_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + FILE_ID_FIELD_NUMBER: _builtins.int + BINARY_DATA_ID_FIELD_NUMBER: _builtins.int + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def file_id(self) -> _builtins.str: + ... - def __init__(self, *, file_id: builtins.str=..., binary_data_id: builtins.str=...) -> None: + @file_id.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def file_id(self, value: _builtins.str) -> None: ... + binary_data_id: _builtins.str - def ClearField(self, field_name: typing.Literal['binary_data_id', b'binary_data_id', 'file_id', b'file_id']) -> None: + def __init__(self, *, file_id: _builtins.str=..., binary_data_id: _builtins.str=...) -> None: ... -global___StreamingDataCaptureUploadResponse = StreamingDataCaptureUploadResponse + _ClearFieldArgType: _TypeAlias = _typing.Literal['binary_data_id', b'binary_data_id', 'file_id', b'file_id'] -@typing.final -class SensorMetadata(google.protobuf.message.Message): + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___StreamingDataCaptureUploadResponse: _TypeAlias = StreamingDataCaptureUploadResponse + +@_typing.final +class SensorMetadata(_message.Message): """SensorMetadata contains the time the sensor data was requested and was received. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TIME_REQUESTED_FIELD_NUMBER: builtins.int - TIME_RECEIVED_FIELD_NUMBER: builtins.int - MIME_TYPE_FIELD_NUMBER: builtins.int - ANNOTATIONS_FIELD_NUMBER: builtins.int - mime_type: global___MimeType.ValueType + DESCRIPTOR: _descriptor.Descriptor + TIME_REQUESTED_FIELD_NUMBER: _builtins.int + TIME_RECEIVED_FIELD_NUMBER: _builtins.int + MIME_TYPE_FIELD_NUMBER: _builtins.int + ANNOTATIONS_FIELD_NUMBER: _builtins.int + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def mime_type(self) -> Global___MimeType.ValueType: + ... + + @mime_type.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def mime_type(self, value: Global___MimeType.ValueType) -> None: + ... - @property - def time_requested(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time_requested(self) -> _timestamp_pb2.Timestamp: ... - @property - def time_received(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time_received(self) -> _timestamp_pb2.Timestamp: ... - @property - def annotations(self) -> app.data.v1.data_pb2.Annotations: + @_builtins.property + def annotations(self) -> _data_pb2.Annotations: ... - def __init__(self, *, time_requested: google.protobuf.timestamp_pb2.Timestamp | None=..., time_received: google.protobuf.timestamp_pb2.Timestamp | None=..., mime_type: global___MimeType.ValueType=..., annotations: app.data.v1.data_pb2.Annotations | None=...) -> None: + def __init__(self, *, time_requested: _timestamp_pb2.Timestamp | None=..., time_received: _timestamp_pb2.Timestamp | None=..., mime_type: Global___MimeType.ValueType=..., annotations: _data_pb2.Annotations | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['annotations', b'annotations', 'time_received', b'time_received', 'time_requested', b'time_requested'] - def HasField(self, field_name: typing.Literal['annotations', b'annotations', 'time_received', b'time_received', 'time_requested', b'time_requested']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['annotations', b'annotations', 'mime_type', b'mime_type', 'time_received', b'time_received', 'time_requested', b'time_requested'] - def ClearField(self, field_name: typing.Literal['annotations', b'annotations', 'mime_type', b'mime_type', 'time_received', b'time_received', 'time_requested', b'time_requested']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SensorMetadata = SensorMetadata +Global___SensorMetadata: _TypeAlias = SensorMetadata -@typing.final -class SensorData(google.protobuf.message.Message): +@_typing.final +class SensorData(_message.Message): """SensorData contains the contents and metadata for tabular data.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - METADATA_FIELD_NUMBER: builtins.int - STRUCT_FIELD_NUMBER: builtins.int - BINARY_FIELD_NUMBER: builtins.int - binary: builtins.bytes + DESCRIPTOR: _descriptor.Descriptor + METADATA_FIELD_NUMBER: _builtins.int + STRUCT_FIELD_NUMBER: _builtins.int + BINARY_FIELD_NUMBER: _builtins.int + binary: _builtins.bytes - @property - def metadata(self) -> global___SensorMetadata: + @_builtins.property + def metadata(self) -> Global___SensorMetadata: ... - @property - def struct(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def struct(self) -> _struct_pb2.Struct: ... - def __init__(self, *, metadata: global___SensorMetadata | None=..., struct: google.protobuf.struct_pb2.Struct | None=..., binary: builtins.bytes=...) -> None: + def __init__(self, *, metadata: Global___SensorMetadata | None=..., struct: _struct_pb2.Struct | None=..., binary: _builtins.bytes=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['binary', b'binary', 'data', b'data', 'metadata', b'metadata', 'struct', b'struct'] - def HasField(self, field_name: typing.Literal['binary', b'binary', 'data', b'data', 'metadata', b'metadata', 'struct', b'struct']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['binary', b'binary', 'data', b'data', 'metadata', b'metadata', 'struct', b'struct'] - def ClearField(self, field_name: typing.Literal['binary', b'binary', 'data', b'data', 'metadata', b'metadata', 'struct', b'struct']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_data: _TypeAlias = _typing.Literal['struct', 'binary'] + _WhichOneofArgType_data: _TypeAlias = _typing.Literal['data', b'data'] - def WhichOneof(self, oneof_group: typing.Literal['data', b'data']) -> typing.Literal['struct', 'binary'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_data) -> _WhichOneofReturnType_data | None: ... -global___SensorData = SensorData +Global___SensorData: _TypeAlias = SensorData -@typing.final -class FileData(google.protobuf.message.Message): +@_typing.final +class FileData(_message.Message): """FileData contains the contents of binary (image + file) data.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int - data: builtins.bytes + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int + data: _builtins.bytes - def __init__(self, *, data: builtins.bytes=...) -> None: + def __init__(self, *, data: _builtins.bytes=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FileData = FileData +Global___FileData: _TypeAlias = FileData -@typing.final -class UploadMetadata(google.protobuf.message.Message): +@_typing.final +class UploadMetadata(_message.Message): """UploadMetadata contains the metadata for binary (image + file) data.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class MethodParametersEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str + @_typing.final + class MethodParametersEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str - @property - def value(self) -> google.protobuf.any_pb2.Any: + @_builtins.property + def value(self) -> _any_pb2.Any: ... - def __init__(self, *, key: builtins.str=..., value: google.protobuf.any_pb2.Any | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _any_pb2.Any | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def HasField(self, field_name: typing.Literal['value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - PART_ID_FIELD_NUMBER: builtins.int - COMPONENT_TYPE_FIELD_NUMBER: builtins.int - COMPONENT_NAME_FIELD_NUMBER: builtins.int - METHOD_NAME_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - METHOD_PARAMETERS_FIELD_NUMBER: builtins.int - FILE_NAME_FIELD_NUMBER: builtins.int - FILE_EXTENSION_FIELD_NUMBER: builtins.int - FILE_CREATE_TIME_FIELD_NUMBER: builtins.int - FILE_MODIFY_TIME_FIELD_NUMBER: builtins.int - TAGS_FIELD_NUMBER: builtins.int - DATASET_IDS_FIELD_NUMBER: builtins.int - MIME_TYPE_FIELD_NUMBER: builtins.int - part_id: builtins.str - component_type: builtins.str - component_name: builtins.str - method_name: builtins.str - type: global___DataType.ValueType - file_name: builtins.str - file_extension: builtins.str - mime_type: builtins.str + PART_ID_FIELD_NUMBER: _builtins.int + COMPONENT_TYPE_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_FIELD_NUMBER: _builtins.int + METHOD_NAME_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + METHOD_PARAMETERS_FIELD_NUMBER: _builtins.int + FILE_NAME_FIELD_NUMBER: _builtins.int + FILE_EXTENSION_FIELD_NUMBER: _builtins.int + FILE_CREATE_TIME_FIELD_NUMBER: _builtins.int + FILE_MODIFY_TIME_FIELD_NUMBER: _builtins.int + TAGS_FIELD_NUMBER: _builtins.int + DATASET_IDS_FIELD_NUMBER: _builtins.int + MIME_TYPE_FIELD_NUMBER: _builtins.int + part_id: _builtins.str + component_type: _builtins.str + component_name: _builtins.str + method_name: _builtins.str + type: Global___DataType.ValueType + file_name: _builtins.str + file_extension: _builtins.str + mime_type: _builtins.str - @property - def method_parameters(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, google.protobuf.any_pb2.Any]: + @_builtins.property + def method_parameters(self) -> _containers.MessageMap[_builtins.str, _any_pb2.Any]: ... - @property - def file_create_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def file_create_time(self) -> _timestamp_pb2.Timestamp: ... - @property - def file_modify_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def file_modify_time(self) -> _timestamp_pb2.Timestamp: ... - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def dataset_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def dataset_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, part_id: builtins.str=..., component_type: builtins.str=..., component_name: builtins.str=..., method_name: builtins.str=..., type: global___DataType.ValueType=..., method_parameters: collections.abc.Mapping[builtins.str, google.protobuf.any_pb2.Any] | None=..., file_name: builtins.str=..., file_extension: builtins.str=..., file_create_time: google.protobuf.timestamp_pb2.Timestamp | None=..., file_modify_time: google.protobuf.timestamp_pb2.Timestamp | None=..., tags: collections.abc.Iterable[builtins.str] | None=..., dataset_ids: collections.abc.Iterable[builtins.str] | None=..., mime_type: builtins.str=...) -> None: + def __init__(self, *, part_id: _builtins.str=..., component_type: _builtins.str=..., component_name: _builtins.str=..., method_name: _builtins.str=..., type: Global___DataType.ValueType=..., method_parameters: _abc.Mapping[_builtins.str, _any_pb2.Any] | None=..., file_name: _builtins.str=..., file_extension: _builtins.str=..., file_create_time: _timestamp_pb2.Timestamp | None=..., file_modify_time: _timestamp_pb2.Timestamp | None=..., tags: _abc.Iterable[_builtins.str] | None=..., dataset_ids: _abc.Iterable[_builtins.str] | None=..., mime_type: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['file_create_time', b'file_create_time', 'file_modify_time', b'file_modify_time'] - def HasField(self, field_name: typing.Literal['file_create_time', b'file_create_time', 'file_modify_time', b'file_modify_time']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['component_name', b'component_name', 'component_type', b'component_type', 'dataset_ids', b'dataset_ids', 'file_create_time', b'file_create_time', 'file_extension', b'file_extension', 'file_modify_time', b'file_modify_time', 'file_name', b'file_name', 'method_name', b'method_name', 'method_parameters', b'method_parameters', 'mime_type', b'mime_type', 'part_id', b'part_id', 'tags', b'tags', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['component_name', b'component_name', 'component_type', b'component_type', 'dataset_ids', b'dataset_ids', 'file_create_time', b'file_create_time', 'file_extension', b'file_extension', 'file_modify_time', b'file_modify_time', 'file_name', b'file_name', 'method_name', b'method_name', 'method_parameters', b'method_parameters', 'mime_type', b'mime_type', 'part_id', b'part_id', 'tags', b'tags', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UploadMetadata = UploadMetadata +Global___UploadMetadata: _TypeAlias = UploadMetadata -@typing.final -class CaptureInterval(google.protobuf.message.Message): +@_typing.final +class CaptureInterval(_message.Message): """CaptureInterval specifies the start and end times of the data capture.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - START_FIELD_NUMBER: builtins.int - END_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + START_FIELD_NUMBER: _builtins.int + END_FIELD_NUMBER: _builtins.int - @property - def start(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def start(self) -> _timestamp_pb2.Timestamp: ... - @property - def end(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def end(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, start: google.protobuf.timestamp_pb2.Timestamp | None=..., end: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, start: _timestamp_pb2.Timestamp | None=..., end: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['end', b'end', 'start', b'start'] - def HasField(self, field_name: typing.Literal['end', b'end', 'start', b'start']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['end', b'end', 'start', b'start'] - def ClearField(self, field_name: typing.Literal['end', b'end', 'start', b'start']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CaptureInterval = CaptureInterval +Global___CaptureInterval: _TypeAlias = CaptureInterval -@typing.final -class DataCaptureMetadata(google.protobuf.message.Message): +@_typing.final +class DataCaptureMetadata(_message.Message): """DataCaptureMetadata contains the metadata for data captured by collectors.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class MethodParametersEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str + @_typing.final + class MethodParametersEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str - @property - def value(self) -> google.protobuf.any_pb2.Any: + @_builtins.property + def value(self) -> _any_pb2.Any: ... - def __init__(self, *, key: builtins.str=..., value: google.protobuf.any_pb2.Any | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _any_pb2.Any | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def HasField(self, field_name: typing.Literal['value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - COMPONENT_TYPE_FIELD_NUMBER: builtins.int - COMPONENT_NAME_FIELD_NUMBER: builtins.int - METHOD_NAME_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - METHOD_PARAMETERS_FIELD_NUMBER: builtins.int - FILE_EXTENSION_FIELD_NUMBER: builtins.int - TAGS_FIELD_NUMBER: builtins.int - MIME_TYPE_FIELD_NUMBER: builtins.int - component_type: builtins.str - component_name: builtins.str - method_name: builtins.str - type: global___DataType.ValueType - file_extension: builtins.str - mime_type: builtins.str + COMPONENT_TYPE_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_FIELD_NUMBER: _builtins.int + METHOD_NAME_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + METHOD_PARAMETERS_FIELD_NUMBER: _builtins.int + FILE_EXTENSION_FIELD_NUMBER: _builtins.int + TAGS_FIELD_NUMBER: _builtins.int + MIME_TYPE_FIELD_NUMBER: _builtins.int + component_type: _builtins.str + component_name: _builtins.str + method_name: _builtins.str + type: Global___DataType.ValueType + file_extension: _builtins.str + mime_type: _builtins.str - @property - def method_parameters(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, google.protobuf.any_pb2.Any]: + @_builtins.property + def method_parameters(self) -> _containers.MessageMap[_builtins.str, _any_pb2.Any]: ... - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, component_type: builtins.str=..., component_name: builtins.str=..., method_name: builtins.str=..., type: global___DataType.ValueType=..., method_parameters: collections.abc.Mapping[builtins.str, google.protobuf.any_pb2.Any] | None=..., file_extension: builtins.str=..., tags: collections.abc.Iterable[builtins.str] | None=..., mime_type: builtins.str=...) -> None: + def __init__(self, *, component_type: _builtins.str=..., component_name: _builtins.str=..., method_name: _builtins.str=..., type: Global___DataType.ValueType=..., method_parameters: _abc.Mapping[_builtins.str, _any_pb2.Any] | None=..., file_extension: _builtins.str=..., tags: _abc.Iterable[_builtins.str] | None=..., mime_type: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['component_name', b'component_name', 'component_type', b'component_type', 'file_extension', b'file_extension', 'method_name', b'method_name', 'method_parameters', b'method_parameters', 'mime_type', b'mime_type', 'tags', b'tags', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['component_name', b'component_name', 'component_type', b'component_type', 'file_extension', b'file_extension', 'method_name', b'method_name', 'method_parameters', b'method_parameters', 'mime_type', b'mime_type', 'tags', b'tags', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DataCaptureMetadata = DataCaptureMetadata +Global___DataCaptureMetadata: _TypeAlias = DataCaptureMetadata -@typing.final -class DataCaptureUploadMetadata(google.protobuf.message.Message): +@_typing.final +class DataCaptureUploadMetadata(_message.Message): """DataCaptureUploadMetadata contains the metadata for streaming binary (image + file) data.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - UPLOAD_METADATA_FIELD_NUMBER: builtins.int - SENSOR_METADATA_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + UPLOAD_METADATA_FIELD_NUMBER: _builtins.int + SENSOR_METADATA_FIELD_NUMBER: _builtins.int - @property - def upload_metadata(self) -> global___UploadMetadata: + @_builtins.property + def upload_metadata(self) -> Global___UploadMetadata: ... - @property - def sensor_metadata(self) -> global___SensorMetadata: + @_builtins.property + def sensor_metadata(self) -> Global___SensorMetadata: ... - def __init__(self, *, upload_metadata: global___UploadMetadata | None=..., sensor_metadata: global___SensorMetadata | None=...) -> None: + def __init__(self, *, upload_metadata: Global___UploadMetadata | None=..., sensor_metadata: Global___SensorMetadata | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['sensor_metadata', b'sensor_metadata', 'upload_metadata', b'upload_metadata'] - def HasField(self, field_name: typing.Literal['sensor_metadata', b'sensor_metadata', 'upload_metadata', b'upload_metadata']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['sensor_metadata', b'sensor_metadata', 'upload_metadata', b'upload_metadata'] - def ClearField(self, field_name: typing.Literal['sensor_metadata', b'sensor_metadata', 'upload_metadata', b'upload_metadata']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DataCaptureUploadMetadata = DataCaptureUploadMetadata \ No newline at end of file +Global___DataCaptureUploadMetadata: _TypeAlias = DataCaptureUploadMetadata \ No newline at end of file diff --git a/src/viam/gen/app/mlinference/v1/ml_inference_pb2.py b/src/viam/gen/app/mlinference/v1/ml_inference_pb2.py index e1f8780c9c..1d74afc016 100644 --- a/src/viam/gen/app/mlinference/v1/ml_inference_pb2.py +++ b/src/viam/gen/app/mlinference/v1/ml_inference_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'app/mlinference/v1/ml_inference.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/mlinference/v1/ml_inference.proto') _sym_db = _symbol_database.Default() from ....app.data.v1 import data_pb2 as app_dot_data_dot_v1_dot_data__pb2 from ....service.mlmodel.v1 import mlmodel_pb2 as service_dot_mlmodel_dot_v1_dot_mlmodel__pb2 diff --git a/src/viam/gen/app/mlinference/v1/ml_inference_pb2.pyi b/src/viam/gen/app/mlinference/v1/ml_inference_pb2.pyi index b154ca9d26..211919d55c 100644 --- a/src/viam/gen/app/mlinference/v1/ml_inference_pb2.pyi +++ b/src/viam/gen/app/mlinference/v1/ml_inference_pb2.pyi @@ -2,62 +2,71 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -from .... import app -import builtins -import google.protobuf.descriptor -import google.protobuf.message -from .... import service -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class GetInferenceRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - REGISTRY_ITEM_ID_FIELD_NUMBER: builtins.int - REGISTRY_ITEM_VERSION_FIELD_NUMBER: builtins.int - BINARY_ID_FIELD_NUMBER: builtins.int - BINARY_DATA_ID_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - registry_item_id: builtins.str +from app.data.v1 import data_pb2 as _data_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from service.mlmodel.v1 import mlmodel_pb2 as _mlmodel_pb2 +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class GetInferenceRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + REGISTRY_ITEM_ID_FIELD_NUMBER: _builtins.int + REGISTRY_ITEM_VERSION_FIELD_NUMBER: _builtins.int + BINARY_ID_FIELD_NUMBER: _builtins.int + BINARY_DATA_ID_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + registry_item_id: _builtins.str 'The model framework and model type are inferred from the ML model registry item;\n For valid model types (classification, detections) we will return the formatted\n labels or annotations from the associated inference outputs.\n ' - registry_item_version: builtins.str - binary_data_id: builtins.str - organization_id: builtins.str + registry_item_version: _builtins.str + binary_data_id: _builtins.str + organization_id: _builtins.str - @property - def binary_id(self) -> app.data.v1.data_pb2.BinaryID: + @_builtins.property + def binary_id(self) -> _data_pb2.BinaryID: ... - def __init__(self, *, registry_item_id: builtins.str=..., registry_item_version: builtins.str=..., binary_id: app.data.v1.data_pb2.BinaryID | None=..., binary_data_id: builtins.str=..., organization_id: builtins.str=...) -> None: + def __init__(self, *, registry_item_id: _builtins.str=..., registry_item_version: _builtins.str=..., binary_id: _data_pb2.BinaryID | None=..., binary_data_id: _builtins.str=..., organization_id: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['binary_id', b'binary_id'] - def HasField(self, field_name: typing.Literal['binary_id', b'binary_id']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['binary_data_id', b'binary_data_id', 'binary_id', b'binary_id', 'organization_id', b'organization_id', 'registry_item_id', b'registry_item_id', 'registry_item_version', b'registry_item_version'] - def ClearField(self, field_name: typing.Literal['binary_data_id', b'binary_data_id', 'binary_id', b'binary_id', 'organization_id', b'organization_id', 'registry_item_id', b'registry_item_id', 'registry_item_version', b'registry_item_version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetInferenceRequest = GetInferenceRequest +Global___GetInferenceRequest: _TypeAlias = GetInferenceRequest -@typing.final -class GetInferenceResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - OUTPUT_TENSORS_FIELD_NUMBER: builtins.int - ANNOTATIONS_FIELD_NUMBER: builtins.int +@_typing.final +class GetInferenceResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + OUTPUT_TENSORS_FIELD_NUMBER: _builtins.int + ANNOTATIONS_FIELD_NUMBER: _builtins.int - @property - def output_tensors(self) -> service.mlmodel.v1.mlmodel_pb2.FlatTensors: + @_builtins.property + def output_tensors(self) -> _mlmodel_pb2.FlatTensors: ... - @property - def annotations(self) -> app.data.v1.data_pb2.Annotations: + @_builtins.property + def annotations(self) -> _data_pb2.Annotations: ... - def __init__(self, *, output_tensors: service.mlmodel.v1.mlmodel_pb2.FlatTensors | None=..., annotations: app.data.v1.data_pb2.Annotations | None=...) -> None: + def __init__(self, *, output_tensors: _mlmodel_pb2.FlatTensors | None=..., annotations: _data_pb2.Annotations | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['annotations', b'annotations', 'output_tensors', b'output_tensors'] - def HasField(self, field_name: typing.Literal['annotations', b'annotations', 'output_tensors', b'output_tensors']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['annotations', b'annotations', 'output_tensors', b'output_tensors'] - def ClearField(self, field_name: typing.Literal['annotations', b'annotations', 'output_tensors', b'output_tensors']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetInferenceResponse = GetInferenceResponse \ No newline at end of file +Global___GetInferenceResponse: _TypeAlias = GetInferenceResponse \ No newline at end of file diff --git a/src/viam/gen/app/mltraining/v1/ml_training_grpc.py b/src/viam/gen/app/mltraining/v1/ml_training_grpc.py index 6360dcc369..81890b3baa 100644 --- a/src/viam/gen/app/mltraining/v1/ml_training_grpc.py +++ b/src/viam/gen/app/mltraining/v1/ml_training_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server import google.protobuf.timestamp_pb2 -import google.rpc.status_pb2 +from .... import google from .... import tagger from .... import app diff --git a/src/viam/gen/app/mltraining/v1/ml_training_pb2.py b/src/viam/gen/app/mltraining/v1/ml_training_pb2.py index ba4c8bf010..ba656ca06e 100644 --- a/src/viam/gen/app/mltraining/v1/ml_training_pb2.py +++ b/src/viam/gen/app/mltraining/v1/ml_training_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'app/mltraining/v1/ml_training.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/mltraining/v1/ml_training.proto') _sym_db = _symbol_database.Default() from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -from google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 +from ....google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 from ....tagger.v1 import tagger_pb2 as tagger_dot_v1_dot_tagger__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#app/mltraining/v1/ml_training.proto\x12\x16viam.app.mltraining.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\x1a\x16tagger/v1/tagger.proto"\x90\x05\n\x18SubmitTrainingJobRequest\x12G\n\ndataset_id\x18\x07 \x01(\tB(\x9a\x84\x9e\x03#bson:"dataset_id" json:"dataset_id"R\tdatasetId\x12[\n\x0forganization_id\x18\x02 \x01(\tB2\x9a\x84\x9e\x03-bson:"organization_id" json:"organization_id"R\x0eorganizationId\x12G\n\nmodel_name\x18\x03 \x01(\tB(\x9a\x84\x9e\x03#bson:"model_name" json:"model_name"R\tmodelName\x12S\n\rmodel_version\x18\x04 \x01(\tB.\x9a\x84\x9e\x03)bson:"model_version" json:"model_version"R\x0cmodelVersion\x12j\n\nmodel_type\x18\x05 \x01(\x0e2!.viam.app.mltraining.v1.ModelTypeB(\x9a\x84\x9e\x03#bson:"model_type" json:"model_type"R\tmodelType\x12\x83\x01\n\x0fmodel_framework\x18\x08 \x01(\x0e2&.viam.app.mltraining.v1.ModelFrameworkB2\x9a\x84\x9e\x03-bson:"model_framework" json:"model_framework"R\x0emodelFramework\x120\n\x04tags\x18\x06 \x03(\tB\x1c\x9a\x84\x9e\x03\x17bson:"tags" json:"tags"R\x04tagsJ\x04\x08\x01\x10\x02R\x06filter"+\n\x19SubmitTrainingJobResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"\x88\x06\n\x1eSubmitCustomTrainingJobRequest\x12G\n\ndataset_id\x18\x01 \x01(\tB(\x9a\x84\x9e\x03#bson:"dataset_id" json:"dataset_id"R\tdatasetId\x12^\n\x10registry_item_id\x18\x02 \x01(\tB4\x9a\x84\x9e\x03/bson:"registry_item_id" json:"registry_item_id"R\x0eregistryItemId\x12r\n\x15registry_item_version\x18\x06 \x01(\tB>\x9a\x84\x9e\x039bson:"registry_item_version" json:"registry_item_version"R\x13registryItemVersion\x12[\n\x0forganization_id\x18\x03 \x01(\tB2\x9a\x84\x9e\x03-bson:"organization_id" json:"organization_id"R\x0eorganizationId\x12G\n\nmodel_name\x18\x04 \x01(\tB(\x9a\x84\x9e\x03#bson:"model_name" json:"model_name"R\tmodelName\x12S\n\rmodel_version\x18\x05 \x01(\tB.\x9a\x84\x9e\x03)bson:"model_version" json:"model_version"R\x0cmodelVersion\x12c\n\targuments\x18\x07 \x03(\x0b2E.viam.app.mltraining.v1.SubmitCustomTrainingJobRequest.ArgumentsEntryR\targuments\x12+\n\x11container_version\x18\x08 \x01(\tR\x10containerVersion\x1a<\n\x0eArgumentsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01"1\n\x1fSubmitCustomTrainingJobResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"\'\n\x15GetTrainingJobRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"a\n\x16GetTrainingJobResponse\x12G\n\x08metadata\x18\x01 \x01(\x0b2+.viam.app.mltraining.v1.TrainingJobMetadataR\x08metadata"\x82\x01\n\x17ListTrainingJobsRequest\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12>\n\x06status\x18\x02 \x01(\x0e2&.viam.app.mltraining.v1.TrainingStatusR\x06status"[\n\x18ListTrainingJobsResponse\x12?\n\x04jobs\x18\x01 \x03(\x0b2+.viam.app.mltraining.v1.TrainingJobMetadataR\x04jobs"\x8c\x10\n\x13TrainingJobMetadata\x123\n\x02id\x18\x07 \x01(\tB#\x9a\x84\x9e\x03\x1ebson:"_id" json:"id,omitempty"R\x02id\x12G\n\ndataset_id\x18\x0b \x01(\tB(\x9a\x84\x9e\x03#bson:"dataset_id" json:"dataset_id"R\tdatasetId\x12[\n\x0forganization_id\x18\x0c \x01(\tB2\x9a\x84\x9e\x03-bson:"organization_id" json:"organization_id"R\x0eorganizationId\x12G\n\nmodel_name\x18\r \x01(\tB(\x9a\x84\x9e\x03#bson:"model_name" json:"model_name"R\tmodelName\x12S\n\rmodel_version\x18\x0e \x01(\tB.\x9a\x84\x9e\x03)bson:"model_version" json:"model_version"R\x0cmodelVersion\x12j\n\nmodel_type\x18\x0f \x01(\x0e2!.viam.app.mltraining.v1.ModelTypeB(\x9a\x84\x9e\x03#bson:"model_type" json:"model_type"R\tmodelType\x12\x83\x01\n\x0fmodel_framework\x18\x11 \x01(\x0e2&.viam.app.mltraining.v1.ModelFrameworkB2\x9a\x84\x9e\x03-bson:"model_framework" json:"model_framework"R\x0emodelFramework\x12R\n\ris_custom_job\x18\x12 \x01(\x08B.\x9a\x84\x9e\x03)bson:"is_custom_job" json:"is_custom_job"R\x0bisCustomJob\x12^\n\x10registry_item_id\x18\x13 \x01(\tB4\x9a\x84\x9e\x03/bson:"registry_item_id" json:"registry_item_id"R\x0eregistryItemId\x12r\n\x15registry_item_version\x18\x14 \x01(\tB>\x9a\x84\x9e\x039bson:"registry_item_version" json:"registry_item_version"R\x13registryItemVersion\x12`\n\x06status\x18\x02 \x01(\x0e2&.viam.app.mltraining.v1.TrainingStatusB \x9a\x84\x9e\x03\x1bbson:"status" json:"status"R\x06status\x12c\n\x0cerror_status\x18\x08 \x01(\x0b2\x12.google.rpc.StatusB,\x9a\x84\x9e\x03\'bson:"error_status" json:"error_status"R\x0berrorStatus\x12c\n\ncreated_on\x18\x03 \x01(\x0b2\x1a.google.protobuf.TimestampB(\x9a\x84\x9e\x03#bson:"created_on" json:"created_on"R\tcreatedOn\x12o\n\rlast_modified\x18\x04 \x01(\x0b2\x1a.google.protobuf.TimestampB.\x9a\x84\x9e\x03)bson:"last_modified" json:"last_modified"R\x0clastModified\x12{\n\x10training_started\x18\t \x01(\x0b2\x1a.google.protobuf.TimestampB4\x9a\x84\x9e\x03/bson:"training_started" json:"training_started"R\x0ftrainingStarted\x12s\n\x0etraining_ended\x18\n \x01(\x0b2\x1a.google.protobuf.TimestampB0\x9a\x84\x9e\x03+bson:"training_ended" json:"training_ended"R\rtrainingEnded\x12Z\n\x0fsynced_model_id\x18\x05 \x01(\tB2\x9a\x84\x9e\x03-bson:"synced_model_id" json:"synced_model_id"R\rsyncedModelId\x120\n\x04tags\x18\x10 \x03(\tB\x1c\x9a\x84\x9e\x03\x17bson:"tags" json:"tags"R\x04tags\x12\x80\x01\n\targuments\x18\x15 \x03(\x0b2:.viam.app.mltraining.v1.TrainingJobMetadata.ArgumentsEntryB&\x9a\x84\x9e\x03!bson:"arguments" json:"arguments"R\targuments\x12c\n\x11container_version\x18\x16 \x01(\tB6\x9a\x84\x9e\x031bson:"container_version" json:"container_version"R\x10containerVersion\x1a<\n\x0eArgumentsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01J\x04\x08\x01\x10\x02J\x04\x08\x06\x10\x07R\x07requestR\nuser_email"*\n\x18CancelTrainingJobRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"\x1b\n\x19CancelTrainingJobResponse"3\n!DeleteCompletedTrainingJobRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"$\n"DeleteCompletedTrainingJobResponse"u\n\x13TrainingJobLogEntry\x12\x14\n\x05level\x18\x01 \x01(\tR\x05level\x12.\n\x04time\x18\x02 \x01(\x0b2\x1a.google.protobuf.TimestampR\x04time\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message"^\n\x19GetTrainingJobLogsRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12"\n\npage_token\x18\x02 \x01(\tH\x00R\tpageToken\x88\x01\x01B\r\n\x0b_page_token"\x85\x01\n\x1aGetTrainingJobLogsResponse\x12?\n\x04logs\x18\x01 \x03(\x0b2+.viam.app.mltraining.v1.TrainingJobLogEntryR\x04logs\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken" \n\x1eListSupportedContainersRequest"\xf5\x01\n\x1fListSupportedContainersResponse\x12n\n\rcontainer_map\x18\x01 \x03(\x0b2I.viam.app.mltraining.v1.ListSupportedContainersResponse.ContainerMapEntryR\x0ccontainerMap\x1ab\n\x11ContainerMapEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x127\n\x05value\x18\x02 \x01(\x0b2!.viam.app.mltraining.v1.ContainerR\x05value:\x028\x01"\x9d\x01\n\tContainer\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x10\n\x03uri\x18\x02 \x01(\tR\x03uri\x12\x1c\n\tframework\x18\x03 \x01(\tR\tframework\x12 \n\x0bdescription\x18\x04 \x01(\tR\x0bdescription\x12,\n\x03eol\x18\x05 \x01(\x0b2\x1a.google.protobuf.TimestampR\x03eol*\x9f\x01\n\tModelType\x12\x1a\n\x16MODEL_TYPE_UNSPECIFIED\x10\x00\x12*\n&MODEL_TYPE_SINGLE_LABEL_CLASSIFICATION\x10\x01\x12)\n%MODEL_TYPE_MULTI_LABEL_CLASSIFICATION\x10\x02\x12\x1f\n\x1bMODEL_TYPE_OBJECT_DETECTION\x10\x03*\xa4\x01\n\x0eModelFramework\x12\x1f\n\x1bMODEL_FRAMEWORK_UNSPECIFIED\x10\x00\x12\x1a\n\x16MODEL_FRAMEWORK_TFLITE\x10\x01\x12\x1e\n\x1aMODEL_FRAMEWORK_TENSORFLOW\x10\x02\x12\x1b\n\x17MODEL_FRAMEWORK_PYTORCH\x10\x03\x12\x18\n\x14MODEL_FRAMEWORK_ONNX\x10\x04*\xe7\x01\n\x0eTrainingStatus\x12\x1f\n\x1bTRAINING_STATUS_UNSPECIFIED\x10\x00\x12\x1b\n\x17TRAINING_STATUS_PENDING\x10\x01\x12\x1f\n\x1bTRAINING_STATUS_IN_PROGRESS\x10\x02\x12\x1d\n\x19TRAINING_STATUS_COMPLETED\x10\x03\x12\x1a\n\x16TRAINING_STATUS_FAILED\x10\x04\x12\x1c\n\x18TRAINING_STATUS_CANCELED\x10\x05\x12\x1d\n\x19TRAINING_STATUS_CANCELING\x10\x062\x9c\x08\n\x11MLTrainingService\x12x\n\x11SubmitTrainingJob\x120.viam.app.mltraining.v1.SubmitTrainingJobRequest\x1a1.viam.app.mltraining.v1.SubmitTrainingJobResponse\x12\x8a\x01\n\x17SubmitCustomTrainingJob\x126.viam.app.mltraining.v1.SubmitCustomTrainingJobRequest\x1a7.viam.app.mltraining.v1.SubmitCustomTrainingJobResponse\x12o\n\x0eGetTrainingJob\x12-.viam.app.mltraining.v1.GetTrainingJobRequest\x1a..viam.app.mltraining.v1.GetTrainingJobResponse\x12u\n\x10ListTrainingJobs\x12/.viam.app.mltraining.v1.ListTrainingJobsRequest\x1a0.viam.app.mltraining.v1.ListTrainingJobsResponse\x12x\n\x11CancelTrainingJob\x120.viam.app.mltraining.v1.CancelTrainingJobRequest\x1a1.viam.app.mltraining.v1.CancelTrainingJobResponse\x12\x93\x01\n\x1aDeleteCompletedTrainingJob\x129.viam.app.mltraining.v1.DeleteCompletedTrainingJobRequest\x1a:.viam.app.mltraining.v1.DeleteCompletedTrainingJobResponse\x12{\n\x12GetTrainingJobLogs\x121.viam.app.mltraining.v1.GetTrainingJobLogsRequest\x1a2.viam.app.mltraining.v1.GetTrainingJobLogsResponse\x12\x8a\x01\n\x17ListSupportedContainers\x126.viam.app.mltraining.v1.ListSupportedContainersRequest\x1a7.viam.app.mltraining.v1.ListSupportedContainersResponseB#Z!go.viam.com/api/app/mltraining/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/app/mltraining/v1/ml_training_pb2.pyi b/src/viam/gen/app/mltraining/v1/ml_training_pb2.pyi index 52560b424c..8b7e3b2e9a 100644 --- a/src/viam/gen/app/mltraining/v1/ml_training_pb2.pyi +++ b/src/viam/gen/app/mltraining/v1/ml_training_pb2.pyi @@ -2,28 +2,28 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.timestamp_pb2 -import google.rpc.status_pb2 +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.rpc import status_pb2 as _status_pb2 +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor class _ModelType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _ModelTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ModelType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _ModelTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_ModelType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor MODEL_TYPE_UNSPECIFIED: _ModelType.ValueType MODEL_TYPE_SINGLE_LABEL_CLASSIFICATION: _ModelType.ValueType MODEL_TYPE_MULTI_LABEL_CLASSIFICATION: _ModelType.ValueType @@ -35,14 +35,14 @@ MODEL_TYPE_UNSPECIFIED: ModelType.ValueType MODEL_TYPE_SINGLE_LABEL_CLASSIFICATION: ModelType.ValueType MODEL_TYPE_MULTI_LABEL_CLASSIFICATION: ModelType.ValueType MODEL_TYPE_OBJECT_DETECTION: ModelType.ValueType -global___ModelType = ModelType +Global___ModelType: _TypeAlias = ModelType class _ModelFramework: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _ModelFrameworkEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ModelFramework.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _ModelFrameworkEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_ModelFramework.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor MODEL_FRAMEWORK_UNSPECIFIED: _ModelFramework.ValueType MODEL_FRAMEWORK_TFLITE: _ModelFramework.ValueType MODEL_FRAMEWORK_TENSORFLOW: _ModelFramework.ValueType @@ -56,14 +56,14 @@ MODEL_FRAMEWORK_TFLITE: ModelFramework.ValueType MODEL_FRAMEWORK_TENSORFLOW: ModelFramework.ValueType MODEL_FRAMEWORK_PYTORCH: ModelFramework.ValueType MODEL_FRAMEWORK_ONNX: ModelFramework.ValueType -global___ModelFramework = ModelFramework +Global___ModelFramework: _TypeAlias = ModelFramework class _TrainingStatus: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _TrainingStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TrainingStatus.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _TrainingStatusEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_TrainingStatus.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor TRAINING_STATUS_UNSPECIFIED: _TrainingStatus.ValueType TRAINING_STATUS_PENDING: _TrainingStatus.ValueType TRAINING_STATUS_IN_PROGRESS: _TrainingStatus.ValueType @@ -81,397 +81,421 @@ TRAINING_STATUS_COMPLETED: TrainingStatus.ValueType TRAINING_STATUS_FAILED: TrainingStatus.ValueType TRAINING_STATUS_CANCELED: TrainingStatus.ValueType TRAINING_STATUS_CANCELING: TrainingStatus.ValueType -global___TrainingStatus = TrainingStatus +Global___TrainingStatus: _TypeAlias = TrainingStatus -@typing.final -class SubmitTrainingJobRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATASET_ID_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - MODEL_NAME_FIELD_NUMBER: builtins.int - MODEL_VERSION_FIELD_NUMBER: builtins.int - MODEL_TYPE_FIELD_NUMBER: builtins.int - MODEL_FRAMEWORK_FIELD_NUMBER: builtins.int - TAGS_FIELD_NUMBER: builtins.int - dataset_id: builtins.str - organization_id: builtins.str - model_name: builtins.str - model_version: builtins.str - model_type: global___ModelType.ValueType - model_framework: global___ModelFramework.ValueType +@_typing.final +class SubmitTrainingJobRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATASET_ID_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + MODEL_NAME_FIELD_NUMBER: _builtins.int + MODEL_VERSION_FIELD_NUMBER: _builtins.int + MODEL_TYPE_FIELD_NUMBER: _builtins.int + MODEL_FRAMEWORK_FIELD_NUMBER: _builtins.int + TAGS_FIELD_NUMBER: _builtins.int + dataset_id: _builtins.str + organization_id: _builtins.str + model_name: _builtins.str + model_version: _builtins.str + model_type: Global___ModelType.ValueType + model_framework: Global___ModelFramework.ValueType - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, dataset_id: builtins.str=..., organization_id: builtins.str=..., model_name: builtins.str=..., model_version: builtins.str=..., model_type: global___ModelType.ValueType=..., model_framework: global___ModelFramework.ValueType=..., tags: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, dataset_id: _builtins.str=..., organization_id: _builtins.str=..., model_name: _builtins.str=..., model_version: _builtins.str=..., model_type: Global___ModelType.ValueType=..., model_framework: Global___ModelFramework.ValueType=..., tags: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['dataset_id', b'dataset_id', 'model_framework', b'model_framework', 'model_name', b'model_name', 'model_type', b'model_type', 'model_version', b'model_version', 'organization_id', b'organization_id', 'tags', b'tags'] - def ClearField(self, field_name: typing.Literal['dataset_id', b'dataset_id', 'model_framework', b'model_framework', 'model_name', b'model_name', 'model_type', b'model_type', 'model_version', b'model_version', 'organization_id', b'organization_id', 'tags', b'tags']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SubmitTrainingJobRequest = SubmitTrainingJobRequest +Global___SubmitTrainingJobRequest: _TypeAlias = SubmitTrainingJobRequest -@typing.final -class SubmitTrainingJobResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class SubmitTrainingJobResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SubmitTrainingJobResponse = SubmitTrainingJobResponse +Global___SubmitTrainingJobResponse: _TypeAlias = SubmitTrainingJobResponse -@typing.final -class SubmitCustomTrainingJobRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SubmitCustomTrainingJobRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class ArgumentsEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str - value: builtins.str + @_typing.final + class ArgumentsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str - def __init__(self, *, key: builtins.str=..., value: builtins.str=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - DATASET_ID_FIELD_NUMBER: builtins.int - REGISTRY_ITEM_ID_FIELD_NUMBER: builtins.int - REGISTRY_ITEM_VERSION_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - MODEL_NAME_FIELD_NUMBER: builtins.int - MODEL_VERSION_FIELD_NUMBER: builtins.int - ARGUMENTS_FIELD_NUMBER: builtins.int - CONTAINER_VERSION_FIELD_NUMBER: builtins.int - dataset_id: builtins.str - registry_item_id: builtins.str - registry_item_version: builtins.str - organization_id: builtins.str - model_name: builtins.str - model_version: builtins.str - container_version: builtins.str + DATASET_ID_FIELD_NUMBER: _builtins.int + REGISTRY_ITEM_ID_FIELD_NUMBER: _builtins.int + REGISTRY_ITEM_VERSION_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + MODEL_NAME_FIELD_NUMBER: _builtins.int + MODEL_VERSION_FIELD_NUMBER: _builtins.int + ARGUMENTS_FIELD_NUMBER: _builtins.int + CONTAINER_VERSION_FIELD_NUMBER: _builtins.int + dataset_id: _builtins.str + registry_item_id: _builtins.str + registry_item_version: _builtins.str + organization_id: _builtins.str + model_name: _builtins.str + model_version: _builtins.str + container_version: _builtins.str - @property - def arguments(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + @_builtins.property + def arguments(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: ... - def __init__(self, *, dataset_id: builtins.str=..., registry_item_id: builtins.str=..., registry_item_version: builtins.str=..., organization_id: builtins.str=..., model_name: builtins.str=..., model_version: builtins.str=..., arguments: collections.abc.Mapping[builtins.str, builtins.str] | None=..., container_version: builtins.str=...) -> None: + def __init__(self, *, dataset_id: _builtins.str=..., registry_item_id: _builtins.str=..., registry_item_version: _builtins.str=..., organization_id: _builtins.str=..., model_name: _builtins.str=..., model_version: _builtins.str=..., arguments: _abc.Mapping[_builtins.str, _builtins.str] | None=..., container_version: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['arguments', b'arguments', 'container_version', b'container_version', 'dataset_id', b'dataset_id', 'model_name', b'model_name', 'model_version', b'model_version', 'organization_id', b'organization_id', 'registry_item_id', b'registry_item_id', 'registry_item_version', b'registry_item_version'] - def ClearField(self, field_name: typing.Literal['arguments', b'arguments', 'container_version', b'container_version', 'dataset_id', b'dataset_id', 'model_name', b'model_name', 'model_version', b'model_version', 'organization_id', b'organization_id', 'registry_item_id', b'registry_item_id', 'registry_item_version', b'registry_item_version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SubmitCustomTrainingJobRequest = SubmitCustomTrainingJobRequest +Global___SubmitCustomTrainingJobRequest: _TypeAlias = SubmitCustomTrainingJobRequest -@typing.final -class SubmitCustomTrainingJobResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class SubmitCustomTrainingJobResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SubmitCustomTrainingJobResponse = SubmitCustomTrainingJobResponse +Global___SubmitCustomTrainingJobResponse: _TypeAlias = SubmitCustomTrainingJobResponse -@typing.final -class GetTrainingJobRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class GetTrainingJobRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetTrainingJobRequest = GetTrainingJobRequest +Global___GetTrainingJobRequest: _TypeAlias = GetTrainingJobRequest -@typing.final -class GetTrainingJobResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - METADATA_FIELD_NUMBER: builtins.int +@_typing.final +class GetTrainingJobResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + METADATA_FIELD_NUMBER: _builtins.int - @property - def metadata(self) -> global___TrainingJobMetadata: + @_builtins.property + def metadata(self) -> Global___TrainingJobMetadata: ... - def __init__(self, *, metadata: global___TrainingJobMetadata | None=...) -> None: + def __init__(self, *, metadata: Global___TrainingJobMetadata | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['metadata', b'metadata'] - def HasField(self, field_name: typing.Literal['metadata', b'metadata']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['metadata', b'metadata'] - def ClearField(self, field_name: typing.Literal['metadata', b'metadata']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetTrainingJobResponse = GetTrainingJobResponse +Global___GetTrainingJobResponse: _TypeAlias = GetTrainingJobResponse -@typing.final -class ListTrainingJobsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - organization_id: builtins.str - status: global___TrainingStatus.ValueType +@_typing.final +class ListTrainingJobsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + STATUS_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + status: Global___TrainingStatus.ValueType - def __init__(self, *, organization_id: builtins.str=..., status: global___TrainingStatus.ValueType=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., status: Global___TrainingStatus.ValueType=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_id', b'organization_id', 'status', b'status'] - def ClearField(self, field_name: typing.Literal['organization_id', b'organization_id', 'status', b'status']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListTrainingJobsRequest = ListTrainingJobsRequest +Global___ListTrainingJobsRequest: _TypeAlias = ListTrainingJobsRequest -@typing.final -class ListTrainingJobsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - JOBS_FIELD_NUMBER: builtins.int +@_typing.final +class ListTrainingJobsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + JOBS_FIELD_NUMBER: _builtins.int - @property - def jobs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TrainingJobMetadata]: + @_builtins.property + def jobs(self) -> _containers.RepeatedCompositeFieldContainer[Global___TrainingJobMetadata]: ... - def __init__(self, *, jobs: collections.abc.Iterable[global___TrainingJobMetadata] | None=...) -> None: + def __init__(self, *, jobs: _abc.Iterable[Global___TrainingJobMetadata] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['jobs', b'jobs'] - def ClearField(self, field_name: typing.Literal['jobs', b'jobs']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListTrainingJobsResponse = ListTrainingJobsResponse +Global___ListTrainingJobsResponse: _TypeAlias = ListTrainingJobsResponse -@typing.final -class TrainingJobMetadata(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class TrainingJobMetadata(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class ArgumentsEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str - value: builtins.str + @_typing.final + class ArgumentsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str - def __init__(self, *, key: builtins.str=..., value: builtins.str=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - ID_FIELD_NUMBER: builtins.int - DATASET_ID_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - MODEL_NAME_FIELD_NUMBER: builtins.int - MODEL_VERSION_FIELD_NUMBER: builtins.int - MODEL_TYPE_FIELD_NUMBER: builtins.int - MODEL_FRAMEWORK_FIELD_NUMBER: builtins.int - IS_CUSTOM_JOB_FIELD_NUMBER: builtins.int - REGISTRY_ITEM_ID_FIELD_NUMBER: builtins.int - REGISTRY_ITEM_VERSION_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - ERROR_STATUS_FIELD_NUMBER: builtins.int - CREATED_ON_FIELD_NUMBER: builtins.int - LAST_MODIFIED_FIELD_NUMBER: builtins.int - TRAINING_STARTED_FIELD_NUMBER: builtins.int - TRAINING_ENDED_FIELD_NUMBER: builtins.int - SYNCED_MODEL_ID_FIELD_NUMBER: builtins.int - TAGS_FIELD_NUMBER: builtins.int - ARGUMENTS_FIELD_NUMBER: builtins.int - CONTAINER_VERSION_FIELD_NUMBER: builtins.int - id: builtins.str - dataset_id: builtins.str - organization_id: builtins.str - model_name: builtins.str - model_version: builtins.str - model_type: global___ModelType.ValueType - model_framework: global___ModelFramework.ValueType - is_custom_job: builtins.bool - registry_item_id: builtins.str - registry_item_version: builtins.str - status: global___TrainingStatus.ValueType - synced_model_id: builtins.str - container_version: builtins.str + ID_FIELD_NUMBER: _builtins.int + DATASET_ID_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + MODEL_NAME_FIELD_NUMBER: _builtins.int + MODEL_VERSION_FIELD_NUMBER: _builtins.int + MODEL_TYPE_FIELD_NUMBER: _builtins.int + MODEL_FRAMEWORK_FIELD_NUMBER: _builtins.int + IS_CUSTOM_JOB_FIELD_NUMBER: _builtins.int + REGISTRY_ITEM_ID_FIELD_NUMBER: _builtins.int + REGISTRY_ITEM_VERSION_FIELD_NUMBER: _builtins.int + STATUS_FIELD_NUMBER: _builtins.int + ERROR_STATUS_FIELD_NUMBER: _builtins.int + CREATED_ON_FIELD_NUMBER: _builtins.int + LAST_MODIFIED_FIELD_NUMBER: _builtins.int + TRAINING_STARTED_FIELD_NUMBER: _builtins.int + TRAINING_ENDED_FIELD_NUMBER: _builtins.int + SYNCED_MODEL_ID_FIELD_NUMBER: _builtins.int + TAGS_FIELD_NUMBER: _builtins.int + ARGUMENTS_FIELD_NUMBER: _builtins.int + CONTAINER_VERSION_FIELD_NUMBER: _builtins.int + id: _builtins.str + dataset_id: _builtins.str + organization_id: _builtins.str + model_name: _builtins.str + model_version: _builtins.str + model_type: Global___ModelType.ValueType + model_framework: Global___ModelFramework.ValueType + is_custom_job: _builtins.bool + registry_item_id: _builtins.str + registry_item_version: _builtins.str + status: Global___TrainingStatus.ValueType + synced_model_id: _builtins.str + container_version: _builtins.str - @property - def error_status(self) -> google.rpc.status_pb2.Status: + @_builtins.property + def error_status(self) -> _status_pb2.Status: ... - @property - def created_on(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def created_on(self) -> _timestamp_pb2.Timestamp: ... - @property - def last_modified(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def last_modified(self) -> _timestamp_pb2.Timestamp: ... - @property - def training_started(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def training_started(self) -> _timestamp_pb2.Timestamp: ... - @property - def training_ended(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def training_ended(self) -> _timestamp_pb2.Timestamp: ... - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def arguments(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + @_builtins.property + def arguments(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: ... - def __init__(self, *, id: builtins.str=..., dataset_id: builtins.str=..., organization_id: builtins.str=..., model_name: builtins.str=..., model_version: builtins.str=..., model_type: global___ModelType.ValueType=..., model_framework: global___ModelFramework.ValueType=..., is_custom_job: builtins.bool=..., registry_item_id: builtins.str=..., registry_item_version: builtins.str=..., status: global___TrainingStatus.ValueType=..., error_status: google.rpc.status_pb2.Status | None=..., created_on: google.protobuf.timestamp_pb2.Timestamp | None=..., last_modified: google.protobuf.timestamp_pb2.Timestamp | None=..., training_started: google.protobuf.timestamp_pb2.Timestamp | None=..., training_ended: google.protobuf.timestamp_pb2.Timestamp | None=..., synced_model_id: builtins.str=..., tags: collections.abc.Iterable[builtins.str] | None=..., arguments: collections.abc.Mapping[builtins.str, builtins.str] | None=..., container_version: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., dataset_id: _builtins.str=..., organization_id: _builtins.str=..., model_name: _builtins.str=..., model_version: _builtins.str=..., model_type: Global___ModelType.ValueType=..., model_framework: Global___ModelFramework.ValueType=..., is_custom_job: _builtins.bool=..., registry_item_id: _builtins.str=..., registry_item_version: _builtins.str=..., status: Global___TrainingStatus.ValueType=..., error_status: _status_pb2.Status | None=..., created_on: _timestamp_pb2.Timestamp | None=..., last_modified: _timestamp_pb2.Timestamp | None=..., training_started: _timestamp_pb2.Timestamp | None=..., training_ended: _timestamp_pb2.Timestamp | None=..., synced_model_id: _builtins.str=..., tags: _abc.Iterable[_builtins.str] | None=..., arguments: _abc.Mapping[_builtins.str, _builtins.str] | None=..., container_version: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on', 'error_status', b'error_status', 'last_modified', b'last_modified', 'training_ended', b'training_ended', 'training_started', b'training_started'] - def HasField(self, field_name: typing.Literal['created_on', b'created_on', 'error_status', b'error_status', 'last_modified', b'last_modified', 'training_ended', b'training_ended', 'training_started', b'training_started']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['arguments', b'arguments', 'container_version', b'container_version', 'created_on', b'created_on', 'dataset_id', b'dataset_id', 'error_status', b'error_status', 'id', b'id', 'is_custom_job', b'is_custom_job', 'last_modified', b'last_modified', 'model_framework', b'model_framework', 'model_name', b'model_name', 'model_type', b'model_type', 'model_version', b'model_version', 'organization_id', b'organization_id', 'registry_item_id', b'registry_item_id', 'registry_item_version', b'registry_item_version', 'status', b'status', 'synced_model_id', b'synced_model_id', 'tags', b'tags', 'training_ended', b'training_ended', 'training_started', b'training_started'] - def ClearField(self, field_name: typing.Literal['arguments', b'arguments', 'container_version', b'container_version', 'created_on', b'created_on', 'dataset_id', b'dataset_id', 'error_status', b'error_status', 'id', b'id', 'is_custom_job', b'is_custom_job', 'last_modified', b'last_modified', 'model_framework', b'model_framework', 'model_name', b'model_name', 'model_type', b'model_type', 'model_version', b'model_version', 'organization_id', b'organization_id', 'registry_item_id', b'registry_item_id', 'registry_item_version', b'registry_item_version', 'status', b'status', 'synced_model_id', b'synced_model_id', 'tags', b'tags', 'training_ended', b'training_ended', 'training_started', b'training_started']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TrainingJobMetadata = TrainingJobMetadata +Global___TrainingJobMetadata: _TypeAlias = TrainingJobMetadata -@typing.final -class CancelTrainingJobRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class CancelTrainingJobRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CancelTrainingJobRequest = CancelTrainingJobRequest +Global___CancelTrainingJobRequest: _TypeAlias = CancelTrainingJobRequest -@typing.final -class CancelTrainingJobResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class CancelTrainingJobResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___CancelTrainingJobResponse = CancelTrainingJobResponse +Global___CancelTrainingJobResponse: _TypeAlias = CancelTrainingJobResponse -@typing.final -class DeleteCompletedTrainingJobRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class DeleteCompletedTrainingJobRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteCompletedTrainingJobRequest = DeleteCompletedTrainingJobRequest +Global___DeleteCompletedTrainingJobRequest: _TypeAlias = DeleteCompletedTrainingJobRequest -@typing.final -class DeleteCompletedTrainingJobResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteCompletedTrainingJobResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteCompletedTrainingJobResponse = DeleteCompletedTrainingJobResponse +Global___DeleteCompletedTrainingJobResponse: _TypeAlias = DeleteCompletedTrainingJobResponse -@typing.final -class TrainingJobLogEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LEVEL_FIELD_NUMBER: builtins.int - TIME_FIELD_NUMBER: builtins.int - MESSAGE_FIELD_NUMBER: builtins.int - level: builtins.str - message: builtins.str +@_typing.final +class TrainingJobLogEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LEVEL_FIELD_NUMBER: _builtins.int + TIME_FIELD_NUMBER: _builtins.int + MESSAGE_FIELD_NUMBER: _builtins.int + level: _builtins.str + message: _builtins.str - @property - def time(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, level: builtins.str=..., time: google.protobuf.timestamp_pb2.Timestamp | None=..., message: builtins.str=...) -> None: + def __init__(self, *, level: _builtins.str=..., time: _timestamp_pb2.Timestamp | None=..., message: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['time', b'time'] - def HasField(self, field_name: typing.Literal['time', b'time']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['level', b'level', 'message', b'message', 'time', b'time'] - def ClearField(self, field_name: typing.Literal['level', b'level', 'message', b'message', 'time', b'time']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TrainingJobLogEntry = TrainingJobLogEntry +Global___TrainingJobLogEntry: _TypeAlias = TrainingJobLogEntry -@typing.final -class GetTrainingJobLogsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - PAGE_TOKEN_FIELD_NUMBER: builtins.int - id: builtins.str - page_token: builtins.str +@_typing.final +class GetTrainingJobLogsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + PAGE_TOKEN_FIELD_NUMBER: _builtins.int + id: _builtins.str + page_token: _builtins.str - def __init__(self, *, id: builtins.str=..., page_token: builtins.str | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., page_token: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_page_token', b'_page_token', 'page_token', b'page_token'] - def HasField(self, field_name: typing.Literal['_page_token', b'_page_token', 'page_token', b'page_token']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_page_token', b'_page_token', 'id', b'id', 'page_token', b'page_token'] - def ClearField(self, field_name: typing.Literal['_page_token', b'_page_token', 'id', b'id', 'page_token', b'page_token']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__page_token: _TypeAlias = _typing.Literal['page_token'] + _WhichOneofArgType__page_token: _TypeAlias = _typing.Literal['_page_token', b'_page_token'] - def WhichOneof(self, oneof_group: typing.Literal['_page_token', b'_page_token']) -> typing.Literal['page_token'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__page_token) -> _WhichOneofReturnType__page_token | None: ... -global___GetTrainingJobLogsRequest = GetTrainingJobLogsRequest +Global___GetTrainingJobLogsRequest: _TypeAlias = GetTrainingJobLogsRequest -@typing.final -class GetTrainingJobLogsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOGS_FIELD_NUMBER: builtins.int - NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int - next_page_token: builtins.str +@_typing.final +class GetTrainingJobLogsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOGS_FIELD_NUMBER: _builtins.int + NEXT_PAGE_TOKEN_FIELD_NUMBER: _builtins.int + next_page_token: _builtins.str - @property - def logs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TrainingJobLogEntry]: + @_builtins.property + def logs(self) -> _containers.RepeatedCompositeFieldContainer[Global___TrainingJobLogEntry]: ... - def __init__(self, *, logs: collections.abc.Iterable[global___TrainingJobLogEntry] | None=..., next_page_token: builtins.str=...) -> None: + def __init__(self, *, logs: _abc.Iterable[Global___TrainingJobLogEntry] | None=..., next_page_token: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['logs', b'logs', 'next_page_token', b'next_page_token'] - def ClearField(self, field_name: typing.Literal['logs', b'logs', 'next_page_token', b'next_page_token']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetTrainingJobLogsResponse = GetTrainingJobLogsResponse +Global___GetTrainingJobLogsResponse: _TypeAlias = GetTrainingJobLogsResponse -@typing.final -class ListSupportedContainersRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ListSupportedContainersRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ListSupportedContainersRequest = ListSupportedContainersRequest +Global___ListSupportedContainersRequest: _TypeAlias = ListSupportedContainersRequest -@typing.final -class ListSupportedContainersResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ListSupportedContainersResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class ContainerMapEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str + @_typing.final + class ContainerMapEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str - @property - def value(self) -> global___Container: + @_builtins.property + def value(self) -> Global___Container: ... - def __init__(self, *, key: builtins.str=..., value: global___Container | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: Global___Container | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def HasField(self, field_name: typing.Literal['value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - CONTAINER_MAP_FIELD_NUMBER: builtins.int + CONTAINER_MAP_FIELD_NUMBER: _builtins.int - @property - def container_map(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Container]: + @_builtins.property + def container_map(self) -> _containers.MessageMap[_builtins.str, Global___Container]: """ex value: container_map: { "tf:2.15": Container { @@ -483,36 +507,39 @@ class ListSupportedContainersResponse(google.protobuf.message.Message): } """ - def __init__(self, *, container_map: collections.abc.Mapping[builtins.str, global___Container] | None=...) -> None: + def __init__(self, *, container_map: _abc.Mapping[_builtins.str, Global___Container] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['container_map', b'container_map'] - def ClearField(self, field_name: typing.Literal['container_map', b'container_map']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListSupportedContainersResponse = ListSupportedContainersResponse +Global___ListSupportedContainersResponse: _TypeAlias = ListSupportedContainersResponse -@typing.final -class Container(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - URI_FIELD_NUMBER: builtins.int - FRAMEWORK_FIELD_NUMBER: builtins.int - DESCRIPTION_FIELD_NUMBER: builtins.int - EOL_FIELD_NUMBER: builtins.int - key: builtins.str - uri: builtins.str - framework: builtins.str - description: builtins.str +@_typing.final +class Container(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + URI_FIELD_NUMBER: _builtins.int + FRAMEWORK_FIELD_NUMBER: _builtins.int + DESCRIPTION_FIELD_NUMBER: _builtins.int + EOL_FIELD_NUMBER: _builtins.int + key: _builtins.str + uri: _builtins.str + framework: _builtins.str + description: _builtins.str - @property - def eol(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def eol(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, key: builtins.str=..., uri: builtins.str=..., framework: builtins.str=..., description: builtins.str=..., eol: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., uri: _builtins.str=..., framework: _builtins.str=..., description: _builtins.str=..., eol: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['eol', b'eol'] - def HasField(self, field_name: typing.Literal['eol', b'eol']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['description', b'description', 'eol', b'eol', 'framework', b'framework', 'key', b'key', 'uri', b'uri'] - def ClearField(self, field_name: typing.Literal['description', b'description', 'eol', b'eol', 'framework', b'framework', 'key', b'key', 'uri', b'uri']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Container = Container \ No newline at end of file +Global___Container: _TypeAlias = Container \ No newline at end of file diff --git a/src/viam/gen/app/packages/v1/packages_grpc.py b/src/viam/gen/app/packages/v1/packages_grpc.py index 0f0009c3cb..55b73df0af 100644 --- a/src/viam/gen/app/packages/v1/packages_grpc.py +++ b/src/viam/gen/app/packages/v1/packages_grpc.py @@ -5,7 +5,7 @@ import grpclib.exceptions if typing.TYPE_CHECKING: import grpclib.server -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 import google.protobuf.timestamp_pb2 from .... import app diff --git a/src/viam/gen/app/packages/v1/packages_pb2.py b/src/viam/gen/app/packages/v1/packages_pb2.py index 2db022d22b..6be869e327 100644 --- a/src/viam/gen/app/packages/v1/packages_pb2.py +++ b/src/viam/gen/app/packages/v1/packages_pb2.py @@ -4,9 +4,9 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'app/packages/v1/packages.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/packages/v1/packages.proto') _sym_db = _symbol_database.Default() -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1eapp/packages/v1/packages.proto\x12\x14viam.app.packages.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto"k\n\x08FileInfo\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04size\x18\x02 \x01(\x04R\x04size\x12&\n\x0cis_directory\x18\x03 \x01(\x08H\x00R\x0bisDirectory\x88\x01\x01B\x0f\n\r_is_directory"\xb4\x02\n\x0bPackageInfo\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x18\n\x07version\x18\x03 \x01(\tR\x07version\x125\n\x04type\x18\x04 \x01(\x0e2!.viam.app.packages.v1.PackageTypeR\x04type\x12\x1f\n\x08platform\x18\x07 \x01(\tH\x00R\x08platform\x88\x01\x01\x124\n\x05files\x18\x05 \x03(\x0b2\x1e.viam.app.packages.v1.FileInfoR\x05files\x123\n\x08metadata\x18\x06 \x01(\x0b2\x17.google.protobuf.StructR\x08metadataB\x0b\n\t_platform"x\n\x14CreatePackageRequest\x127\n\x04info\x18\x01 \x01(\x0b2!.viam.app.packages.v1.PackageInfoH\x00R\x04info\x12\x1c\n\x08contents\x18\x02 \x01(\x0cH\x00R\x08contentsB\t\n\x07package"A\n\x15CreatePackageResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version"w\n\x14DeletePackageRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version\x125\n\x04type\x18\x03 \x01(\x0e2!.viam.app.packages.v1.PackageTypeR\x04type"\x17\n\x15DeletePackageResponse"\xb9\x01\n\x07Package\x125\n\x04info\x18\x01 \x01(\x0b2!.viam.app.packages.v1.PackageInfoR\x04info\x12\x10\n\x03url\x18\x02 \x01(\tR\x03url\x129\n\ncreated_on\x18\x03 \x01(\x0b2\x1a.google.protobuf.TimestampR\tcreatedOn\x12\x1a\n\x08checksum\x18\x04 \x01(\tR\x08checksum\x12\x0e\n\x02id\x18\x05 \x01(\tR\x02id"\xe6\x01\n\x11GetPackageRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version\x12$\n\x0binclude_url\x18\x03 \x01(\x08H\x00R\nincludeUrl\x88\x01\x01\x12:\n\x04type\x18\x04 \x01(\x0e2!.viam.app.packages.v1.PackageTypeH\x01R\x04type\x88\x01\x01\x12\x1f\n\x08platform\x18\x05 \x01(\tH\x02R\x08platform\x88\x01\x01B\x0e\n\x0c_include_urlB\x07\n\x05_typeB\x0b\n\t_platform"M\n\x12GetPackageResponse\x127\n\x07package\x18\x01 \x01(\x0b2\x1d.viam.app.packages.v1.PackageR\x07package"\x86\x02\n\x13ListPackagesRequest\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12\x17\n\x04name\x18\x02 \x01(\tH\x00R\x04name\x88\x01\x01\x12\x1d\n\x07version\x18\x03 \x01(\tH\x01R\x07version\x88\x01\x01\x12:\n\x04type\x18\x04 \x01(\x0e2!.viam.app.packages.v1.PackageTypeH\x02R\x04type\x88\x01\x01\x12$\n\x0binclude_url\x18\x05 \x01(\x08H\x03R\nincludeUrl\x88\x01\x01B\x07\n\x05_nameB\n\n\x08_versionB\x07\n\x05_typeB\x0e\n\x0c_include_url"Q\n\x14ListPackagesResponse\x129\n\x08packages\x18\x01 \x03(\x0b2\x1d.viam.app.packages.v1.PackageR\x08packages*\xb2\x01\n\x0bPackageType\x12\x1c\n\x18PACKAGE_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14PACKAGE_TYPE_ARCHIVE\x10\x01\x12\x19\n\x15PACKAGE_TYPE_ML_MODEL\x10\x02\x12\x17\n\x13PACKAGE_TYPE_MODULE\x10\x03\x12\x19\n\x15PACKAGE_TYPE_SLAM_MAP\x10\x04\x12\x1c\n\x18PACKAGE_TYPE_ML_TRAINING\x10\x052\xa0\x04\n\x0ePackageService\x12\x87\x01\n\rCreatePackage\x12*.viam.app.packages.v1.CreatePackageRequest\x1a+.viam.app.packages.v1.CreatePackageResponse"\x1b\x82\xd3\xe4\x93\x02\x15"\x13/packages/v1/create(\x01\x12\x85\x01\n\rDeletePackage\x12*.viam.app.packages.v1.DeletePackageRequest\x1a+.viam.app.packages.v1.DeletePackageResponse"\x1b\x82\xd3\xe4\x93\x02\x15*\x13/packages/v1/delete\x12y\n\nGetPackage\x12\'.viam.app.packages.v1.GetPackageRequest\x1a(.viam.app.packages.v1.GetPackageResponse"\x18\x82\xd3\xe4\x93\x02\x12\x12\x10/packages/v1/get\x12\x80\x01\n\x0cListPackages\x12).viam.app.packages.v1.ListPackagesRequest\x1a*.viam.app.packages.v1.ListPackagesResponse"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/packages/v1/listB!Z\x1fgo.viam.com/api/app/packages/v1b\x06proto3') diff --git a/src/viam/gen/app/packages/v1/packages_pb2.pyi b/src/viam/gen/app/packages/v1/packages_pb2.pyi index 16bee16490..ad7c941926 100644 --- a/src/viam/gen/app/packages/v1/packages_pb2.pyi +++ b/src/viam/gen/app/packages/v1/packages_pb2.pyi @@ -2,28 +2,28 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 -import google.protobuf.timestamp_pb2 +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor class _PackageType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _PackageTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PackageType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _PackageTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_PackageType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor PACKAGE_TYPE_UNSPECIFIED: _PackageType.ValueType PACKAGE_TYPE_ARCHIVE: _PackageType.ValueType PACKAGE_TYPE_ML_MODEL: _PackageType.ValueType @@ -39,273 +39,310 @@ PACKAGE_TYPE_ML_MODEL: PackageType.ValueType PACKAGE_TYPE_MODULE: PackageType.ValueType PACKAGE_TYPE_SLAM_MAP: PackageType.ValueType PACKAGE_TYPE_ML_TRAINING: PackageType.ValueType -global___PackageType = PackageType +Global___PackageType: _TypeAlias = PackageType -@typing.final -class FileInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - SIZE_FIELD_NUMBER: builtins.int - IS_DIRECTORY_FIELD_NUMBER: builtins.int - name: builtins.str - size: builtins.int - is_directory: builtins.bool +@_typing.final +class FileInfo(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + SIZE_FIELD_NUMBER: _builtins.int + IS_DIRECTORY_FIELD_NUMBER: _builtins.int + name: _builtins.str + size: _builtins.int + is_directory: _builtins.bool - def __init__(self, *, name: builtins.str=..., size: builtins.int=..., is_directory: builtins.bool | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., size: _builtins.int=..., is_directory: _builtins.bool | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_is_directory', b'_is_directory', 'is_directory', b'is_directory'] - def HasField(self, field_name: typing.Literal['_is_directory', b'_is_directory', 'is_directory', b'is_directory']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_is_directory', b'_is_directory', 'is_directory', b'is_directory', 'name', b'name', 'size', b'size'] - def ClearField(self, field_name: typing.Literal['_is_directory', b'_is_directory', 'is_directory', b'is_directory', 'name', b'name', 'size', b'size']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__is_directory: _TypeAlias = _typing.Literal['is_directory'] + _WhichOneofArgType__is_directory: _TypeAlias = _typing.Literal['_is_directory', b'_is_directory'] - def WhichOneof(self, oneof_group: typing.Literal['_is_directory', b'_is_directory']) -> typing.Literal['is_directory'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__is_directory) -> _WhichOneofReturnType__is_directory | None: ... -global___FileInfo = FileInfo +Global___FileInfo: _TypeAlias = FileInfo -@typing.final -class PackageInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - PLATFORM_FIELD_NUMBER: builtins.int - FILES_FIELD_NUMBER: builtins.int - METADATA_FIELD_NUMBER: builtins.int - organization_id: builtins.str - name: builtins.str - version: builtins.str - type: global___PackageType.ValueType - platform: builtins.str +@_typing.final +class PackageInfo(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + PLATFORM_FIELD_NUMBER: _builtins.int + FILES_FIELD_NUMBER: _builtins.int + METADATA_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + name: _builtins.str + version: _builtins.str + type: Global___PackageType.ValueType + platform: _builtins.str - @property - def files(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FileInfo]: + @_builtins.property + def files(self) -> _containers.RepeatedCompositeFieldContainer[Global___FileInfo]: ... - @property - def metadata(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def metadata(self) -> _struct_pb2.Struct: ... - def __init__(self, *, organization_id: builtins.str=..., name: builtins.str=..., version: builtins.str=..., type: global___PackageType.ValueType=..., platform: builtins.str | None=..., files: collections.abc.Iterable[global___FileInfo] | None=..., metadata: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., name: _builtins.str=..., version: _builtins.str=..., type: Global___PackageType.ValueType=..., platform: _builtins.str | None=..., files: _abc.Iterable[Global___FileInfo] | None=..., metadata: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_platform', b'_platform', 'metadata', b'metadata', 'platform', b'platform'] - def HasField(self, field_name: typing.Literal['_platform', b'_platform', 'metadata', b'metadata', 'platform', b'platform']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_platform', b'_platform', 'files', b'files', 'metadata', b'metadata', 'name', b'name', 'organization_id', b'organization_id', 'platform', b'platform', 'type', b'type', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['_platform', b'_platform', 'files', b'files', 'metadata', b'metadata', 'name', b'name', 'organization_id', b'organization_id', 'platform', b'platform', 'type', b'type', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__platform: _TypeAlias = _typing.Literal['platform'] + _WhichOneofArgType__platform: _TypeAlias = _typing.Literal['_platform', b'_platform'] - def WhichOneof(self, oneof_group: typing.Literal['_platform', b'_platform']) -> typing.Literal['platform'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__platform) -> _WhichOneofReturnType__platform | None: ... -global___PackageInfo = PackageInfo +Global___PackageInfo: _TypeAlias = PackageInfo -@typing.final -class CreatePackageRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - INFO_FIELD_NUMBER: builtins.int - CONTENTS_FIELD_NUMBER: builtins.int - contents: builtins.bytes +@_typing.final +class CreatePackageRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + INFO_FIELD_NUMBER: _builtins.int + CONTENTS_FIELD_NUMBER: _builtins.int + contents: _builtins.bytes '.tar.gz file' - @property - def info(self) -> global___PackageInfo: + @_builtins.property + def info(self) -> Global___PackageInfo: ... - def __init__(self, *, info: global___PackageInfo | None=..., contents: builtins.bytes=...) -> None: + def __init__(self, *, info: Global___PackageInfo | None=..., contents: _builtins.bytes=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['contents', b'contents', 'info', b'info', 'package', b'package'] - def HasField(self, field_name: typing.Literal['contents', b'contents', 'info', b'info', 'package', b'package']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['contents', b'contents', 'info', b'info', 'package', b'package'] - def ClearField(self, field_name: typing.Literal['contents', b'contents', 'info', b'info', 'package', b'package']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_package: _TypeAlias = _typing.Literal['info', 'contents'] + _WhichOneofArgType_package: _TypeAlias = _typing.Literal['package', b'package'] - def WhichOneof(self, oneof_group: typing.Literal['package', b'package']) -> typing.Literal['info', 'contents'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_package) -> _WhichOneofReturnType_package | None: ... -global___CreatePackageRequest = CreatePackageRequest +Global___CreatePackageRequest: _TypeAlias = CreatePackageRequest -@typing.final -class CreatePackageResponse(google.protobuf.message.Message): +@_typing.final +class CreatePackageResponse(_message.Message): """Returns the package ID and version which are populated in GetPackageRequest and DeletePackageRequest to retrieve or delete this package. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - id: builtins.str - version: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + id: _builtins.str + version: _builtins.str - def __init__(self, *, id: builtins.str=..., version: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., version: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreatePackageResponse = CreatePackageResponse +Global___CreatePackageResponse: _TypeAlias = CreatePackageResponse -@typing.final -class DeletePackageRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - id: builtins.str - version: builtins.str - type: global___PackageType.ValueType +@_typing.final +class DeletePackageRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + id: _builtins.str + version: _builtins.str + type: Global___PackageType.ValueType - def __init__(self, *, id: builtins.str=..., version: builtins.str=..., type: global___PackageType.ValueType=...) -> None: + def __init__(self, *, id: _builtins.str=..., version: _builtins.str=..., type: Global___PackageType.ValueType=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'type', b'type', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'type', b'type', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeletePackageRequest = DeletePackageRequest +Global___DeletePackageRequest: _TypeAlias = DeletePackageRequest -@typing.final -class DeletePackageResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeletePackageResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeletePackageResponse = DeletePackageResponse +Global___DeletePackageResponse: _TypeAlias = DeletePackageResponse -@typing.final -class Package(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - INFO_FIELD_NUMBER: builtins.int - URL_FIELD_NUMBER: builtins.int - CREATED_ON_FIELD_NUMBER: builtins.int - CHECKSUM_FIELD_NUMBER: builtins.int - ID_FIELD_NUMBER: builtins.int - url: builtins.str - checksum: builtins.str - id: builtins.str +@_typing.final +class Package(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + INFO_FIELD_NUMBER: _builtins.int + URL_FIELD_NUMBER: _builtins.int + CREATED_ON_FIELD_NUMBER: _builtins.int + CHECKSUM_FIELD_NUMBER: _builtins.int + ID_FIELD_NUMBER: _builtins.int + url: _builtins.str + checksum: _builtins.str + id: _builtins.str - @property - def info(self) -> global___PackageInfo: + @_builtins.property + def info(self) -> Global___PackageInfo: ... - @property - def created_on(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def created_on(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, info: global___PackageInfo | None=..., url: builtins.str=..., created_on: google.protobuf.timestamp_pb2.Timestamp | None=..., checksum: builtins.str=..., id: builtins.str=...) -> None: + def __init__(self, *, info: Global___PackageInfo | None=..., url: _builtins.str=..., created_on: _timestamp_pb2.Timestamp | None=..., checksum: _builtins.str=..., id: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on', 'info', b'info'] - def HasField(self, field_name: typing.Literal['created_on', b'created_on', 'info', b'info']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['checksum', b'checksum', 'created_on', b'created_on', 'id', b'id', 'info', b'info', 'url', b'url'] - def ClearField(self, field_name: typing.Literal['checksum', b'checksum', 'created_on', b'created_on', 'id', b'id', 'info', b'info', 'url', b'url']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Package = Package +Global___Package: _TypeAlias = Package -@typing.final -class GetPackageRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - INCLUDE_URL_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - PLATFORM_FIELD_NUMBER: builtins.int - id: builtins.str - version: builtins.str - include_url: builtins.bool - type: global___PackageType.ValueType - platform: builtins.str +@_typing.final +class GetPackageRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + INCLUDE_URL_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + PLATFORM_FIELD_NUMBER: _builtins.int + id: _builtins.str + version: _builtins.str + include_url: _builtins.bool + type: Global___PackageType.ValueType + platform: _builtins.str - def __init__(self, *, id: builtins.str=..., version: builtins.str=..., include_url: builtins.bool | None=..., type: global___PackageType.ValueType | None=..., platform: builtins.str | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., version: _builtins.str=..., include_url: _builtins.bool | None=..., type: Global___PackageType.ValueType | None=..., platform: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_include_url', b'_include_url', '_platform', b'_platform', '_type', b'_type', 'include_url', b'include_url', 'platform', b'platform', 'type', b'type'] - def HasField(self, field_name: typing.Literal['_include_url', b'_include_url', '_platform', b'_platform', '_type', b'_type', 'include_url', b'include_url', 'platform', b'platform', 'type', b'type']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_include_url', b'_include_url', '_platform', b'_platform', '_type', b'_type', 'id', b'id', 'include_url', b'include_url', 'platform', b'platform', 'type', b'type', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['_include_url', b'_include_url', '_platform', b'_platform', '_type', b'_type', 'id', b'id', 'include_url', b'include_url', 'platform', b'platform', 'type', b'type', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__include_url: _TypeAlias = _typing.Literal['include_url'] + _WhichOneofArgType__include_url: _TypeAlias = _typing.Literal['_include_url', b'_include_url'] + _WhichOneofReturnType__platform: _TypeAlias = _typing.Literal['platform'] + _WhichOneofArgType__platform: _TypeAlias = _typing.Literal['_platform', b'_platform'] + _WhichOneofReturnType__type: _TypeAlias = _typing.Literal['type'] + _WhichOneofArgType__type: _TypeAlias = _typing.Literal['_type', b'_type'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_include_url', b'_include_url']) -> typing.Literal['include_url'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__include_url) -> _WhichOneofReturnType__include_url | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_platform', b'_platform']) -> typing.Literal['platform'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__platform) -> _WhichOneofReturnType__platform | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_type', b'_type']) -> typing.Literal['type'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__type) -> _WhichOneofReturnType__type | None: ... -global___GetPackageRequest = GetPackageRequest +Global___GetPackageRequest: _TypeAlias = GetPackageRequest -@typing.final -class GetPackageResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PACKAGE_FIELD_NUMBER: builtins.int +@_typing.final +class GetPackageResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PACKAGE_FIELD_NUMBER: _builtins.int - @property - def package(self) -> global___Package: + @_builtins.property + def package(self) -> Global___Package: ... - def __init__(self, *, package: global___Package | None=...) -> None: + def __init__(self, *, package: Global___Package | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['package', b'package'] - def HasField(self, field_name: typing.Literal['package', b'package']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['package', b'package'] - def ClearField(self, field_name: typing.Literal['package', b'package']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPackageResponse = GetPackageResponse +Global___GetPackageResponse: _TypeAlias = GetPackageResponse -@typing.final -class ListPackagesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - INCLUDE_URL_FIELD_NUMBER: builtins.int - organization_id: builtins.str - name: builtins.str - version: builtins.str - type: global___PackageType.ValueType - include_url: builtins.bool +@_typing.final +class ListPackagesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + INCLUDE_URL_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + name: _builtins.str + version: _builtins.str + type: Global___PackageType.ValueType + include_url: _builtins.bool - def __init__(self, *, organization_id: builtins.str=..., name: builtins.str | None=..., version: builtins.str | None=..., type: global___PackageType.ValueType | None=..., include_url: builtins.bool | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., name: _builtins.str | None=..., version: _builtins.str | None=..., type: Global___PackageType.ValueType | None=..., include_url: _builtins.bool | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_include_url', b'_include_url', '_name', b'_name', '_type', b'_type', '_version', b'_version', 'include_url', b'include_url', 'name', b'name', 'type', b'type', 'version', b'version'] - def HasField(self, field_name: typing.Literal['_include_url', b'_include_url', '_name', b'_name', '_type', b'_type', '_version', b'_version', 'include_url', b'include_url', 'name', b'name', 'type', b'type', 'version', b'version']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_include_url', b'_include_url', '_name', b'_name', '_type', b'_type', '_version', b'_version', 'include_url', b'include_url', 'name', b'name', 'organization_id', b'organization_id', 'type', b'type', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['_include_url', b'_include_url', '_name', b'_name', '_type', b'_type', '_version', b'_version', 'include_url', b'include_url', 'name', b'name', 'organization_id', b'organization_id', 'type', b'type', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__include_url: _TypeAlias = _typing.Literal['include_url'] + _WhichOneofArgType__include_url: _TypeAlias = _typing.Literal['_include_url', b'_include_url'] + _WhichOneofReturnType__name: _TypeAlias = _typing.Literal['name'] + _WhichOneofArgType__name: _TypeAlias = _typing.Literal['_name', b'_name'] + _WhichOneofReturnType__type: _TypeAlias = _typing.Literal['type'] + _WhichOneofArgType__type: _TypeAlias = _typing.Literal['_type', b'_type'] + _WhichOneofReturnType__version: _TypeAlias = _typing.Literal['version'] + _WhichOneofArgType__version: _TypeAlias = _typing.Literal['_version', b'_version'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_include_url', b'_include_url']) -> typing.Literal['include_url'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__include_url) -> _WhichOneofReturnType__include_url | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_name', b'_name']) -> typing.Literal['name'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__name) -> _WhichOneofReturnType__name | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_type', b'_type']) -> typing.Literal['type'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__type) -> _WhichOneofReturnType__type | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_version', b'_version']) -> typing.Literal['version'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__version) -> _WhichOneofReturnType__version | None: ... -global___ListPackagesRequest = ListPackagesRequest +Global___ListPackagesRequest: _TypeAlias = ListPackagesRequest -@typing.final -class ListPackagesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PACKAGES_FIELD_NUMBER: builtins.int +@_typing.final +class ListPackagesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PACKAGES_FIELD_NUMBER: _builtins.int - @property - def packages(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Package]: + @_builtins.property + def packages(self) -> _containers.RepeatedCompositeFieldContainer[Global___Package]: ... - def __init__(self, *, packages: collections.abc.Iterable[global___Package] | None=...) -> None: + def __init__(self, *, packages: _abc.Iterable[Global___Package] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['packages', b'packages'] - def ClearField(self, field_name: typing.Literal['packages', b'packages']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListPackagesResponse = ListPackagesResponse \ No newline at end of file +Global___ListPackagesResponse: _TypeAlias = ListPackagesResponse \ No newline at end of file diff --git a/src/viam/gen/app/v1/app_pb2.py b/src/viam/gen/app/v1/app_pb2.py index a607842ffa..df9130446e 100644 --- a/src/viam/gen/app/v1/app_pb2.py +++ b/src/viam/gen/app/v1/app_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'app/v1/app.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/v1/app.proto') _sym_db = _symbol_database.Default() from ...app.mltraining.v1 import ml_training_pb2 as app_dot_mltraining_dot_v1_dot_ml__training__pb2 from ...app.packages.v1 import packages_pb2 as app_dot_packages_dot_v1_dot_packages__pb2 diff --git a/src/viam/gen/app/v1/app_pb2.pyi b/src/viam/gen/app/v1/app_pb2.pyi index 0a5c441a82..95bbd31f14 100644 --- a/src/viam/gen/app/v1/app_pb2.pyi +++ b/src/viam/gen/app/v1/app_pb2.pyi @@ -2,30 +2,35 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -from ... import app -import builtins -import collections.abc -from ... import common -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 -import google.protobuf.timestamp_pb2 +from app.mltraining.v1 import ml_training_pb2 as _ml_training_pb2 +from app.packages.v1 import packages_pb2 as _packages_pb2 +from collections import abc as _abc +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +if sys.version_info >= (3, 13): + from warnings import deprecated as _deprecated +else: + from typing_extensions import deprecated as _deprecated +DESCRIPTOR: _descriptor.FileDescriptor class _OnlineState: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _OnlineStateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_OnlineState.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _OnlineStateEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_OnlineState.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor ONLINE_STATE_UNSPECIFIED: _OnlineState.ValueType ONLINE_STATE_ONLINE: _OnlineState.ValueType ONLINE_STATE_OFFLINE: _OnlineState.ValueType @@ -37,14 +42,14 @@ ONLINE_STATE_UNSPECIFIED: OnlineState.ValueType ONLINE_STATE_ONLINE: OnlineState.ValueType ONLINE_STATE_OFFLINE: OnlineState.ValueType ONLINE_STATE_AWAITING_SETUP: OnlineState.ValueType -global___OnlineState = OnlineState +Global___OnlineState: _TypeAlias = OnlineState class _AuthenticationType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _AuthenticationTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AuthenticationType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _AuthenticationTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_AuthenticationType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor AUTHENTICATION_TYPE_UNSPECIFIED: _AuthenticationType.ValueType AUTHENTICATION_TYPE_WEB_OAUTH: _AuthenticationType.ValueType AUTHENTICATION_TYPE_API_KEY: _AuthenticationType.ValueType @@ -58,14 +63,14 @@ AUTHENTICATION_TYPE_WEB_OAUTH: AuthenticationType.ValueType AUTHENTICATION_TYPE_API_KEY: AuthenticationType.ValueType AUTHENTICATION_TYPE_ROBOT_PART_SECRET: AuthenticationType.ValueType AUTHENTICATION_TYPE_LOCATION_SECRET: AuthenticationType.ValueType -global___AuthenticationType = AuthenticationType +Global___AuthenticationType: _TypeAlias = AuthenticationType class _FragmentVisibility: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _FragmentVisibilityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_FragmentVisibility.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _FragmentVisibilityEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_FragmentVisibility.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor FRAGMENT_VISIBILITY_UNSPECIFIED: _FragmentVisibility.ValueType FRAGMENT_VISIBILITY_PRIVATE: _FragmentVisibility.ValueType FRAGMENT_VISIBILITY_PUBLIC: _FragmentVisibility.ValueType @@ -77,14 +82,14 @@ FRAGMENT_VISIBILITY_UNSPECIFIED: FragmentVisibility.ValueType FRAGMENT_VISIBILITY_PRIVATE: FragmentVisibility.ValueType FRAGMENT_VISIBILITY_PUBLIC: FragmentVisibility.ValueType FRAGMENT_VISIBILITY_PUBLIC_UNLISTED: FragmentVisibility.ValueType -global___FragmentVisibility = FragmentVisibility +Global___FragmentVisibility: _TypeAlias = FragmentVisibility class _FragmentErrorType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _FragmentErrorTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_FragmentErrorType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _FragmentErrorTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_FragmentErrorType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor FRAGMENT_ERROR_TYPE_UNSPECIFIED: _FragmentErrorType.ValueType FRAGMENT_ERROR_TYPE_NO_ACCESS: _FragmentErrorType.ValueType FRAGMENT_ERROR_TYPE_NESTING_LIMIT_EXCEEDED: _FragmentErrorType.ValueType @@ -98,14 +103,14 @@ FRAGMENT_ERROR_TYPE_NO_ACCESS: FragmentErrorType.ValueType FRAGMENT_ERROR_TYPE_NESTING_LIMIT_EXCEEDED: FragmentErrorType.ValueType FRAGMENT_ERROR_TYPE_CHILD_ID_INVALID: FragmentErrorType.ValueType FRAGMENT_ERROR_TYPE_CYCLE_DETECTED: FragmentErrorType.ValueType -global___FragmentErrorType = FragmentErrorType +Global___FragmentErrorType: _TypeAlias = FragmentErrorType class _ModuleSourceType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _ModuleSourceTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ModuleSourceType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _ModuleSourceTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_ModuleSourceType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor MODULE_SOURCE_TYPE_UNSPECIFIED: _ModuleSourceType.ValueType MODULE_SOURCE_TYPE_EXTERNAL: _ModuleSourceType.ValueType 'Module source code is stored externally, such as in github.' @@ -119,14 +124,14 @@ MODULE_SOURCE_TYPE_EXTERNAL: ModuleSourceType.ValueType 'Module source code is stored externally, such as in github.' MODULE_SOURCE_TYPE_VIAM_HOSTED: ModuleSourceType.ValueType 'Module source code is versioned and managed within Viam.' -global___ModuleSourceType = ModuleSourceType +Global___ModuleSourceType: _TypeAlias = ModuleSourceType class _ModuleLanguage: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _ModuleLanguageEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ModuleLanguage.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _ModuleLanguageEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_ModuleLanguage.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor MODULE_LANGUAGE_UNSPECIFIED: _ModuleLanguage.ValueType MODULE_LANGUAGE_GOLANG: _ModuleLanguage.ValueType MODULE_LANGUAGE_PYTHON: _ModuleLanguage.ValueType @@ -138,14 +143,14 @@ MODULE_LANGUAGE_UNSPECIFIED: ModuleLanguage.ValueType MODULE_LANGUAGE_GOLANG: ModuleLanguage.ValueType MODULE_LANGUAGE_PYTHON: ModuleLanguage.ValueType MODULE_LANGUAGE_CPP: ModuleLanguage.ValueType -global___ModuleLanguage = ModuleLanguage +Global___ModuleLanguage: _TypeAlias = ModuleLanguage class _RegistryItemStatus: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _RegistryItemStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_RegistryItemStatus.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _RegistryItemStatusEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_RegistryItemStatus.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor REGISTRY_ITEM_STATUS_UNSPECIFIED: _RegistryItemStatus.ValueType REGISTRY_ITEM_STATUS_PUBLISHED: _RegistryItemStatus.ValueType REGISTRY_ITEM_STATUS_IN_DEVELOPMENT: _RegistryItemStatus.ValueType @@ -155,14 +160,14 @@ class RegistryItemStatus(_RegistryItemStatus, metaclass=_RegistryItemStatusEnumT REGISTRY_ITEM_STATUS_UNSPECIFIED: RegistryItemStatus.ValueType REGISTRY_ITEM_STATUS_PUBLISHED: RegistryItemStatus.ValueType REGISTRY_ITEM_STATUS_IN_DEVELOPMENT: RegistryItemStatus.ValueType -global___RegistryItemStatus = RegistryItemStatus +Global___RegistryItemStatus: _TypeAlias = RegistryItemStatus class _Visibility: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _VisibilityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Visibility.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _VisibilityEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_Visibility.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor VISIBILITY_UNSPECIFIED: _Visibility.ValueType VISIBILITY_PRIVATE: _Visibility.ValueType 'Private registry items are visible only within the owning org' @@ -180,14 +185,14 @@ VISIBILITY_PUBLIC: Visibility.ValueType 'Public registry items are visible to everyone' VISIBILITY_PUBLIC_UNLISTED: Visibility.ValueType "Public Unlisted registry items are usable in everyone's robot but are hidden from the registry page as if they are private" -global___Visibility = Visibility +Global___Visibility: _TypeAlias = Visibility class _AppType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _AppTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AppType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _AppTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_AppType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor APP_TYPE_UNSPECIFIED: _AppType.ValueType APP_TYPE_SINGLE_MACHINE: _AppType.ValueType APP_TYPE_MULTI_MACHINE: _AppType.ValueType @@ -197,14 +202,14 @@ class AppType(_AppType, metaclass=_AppTypeEnumTypeWrapper): APP_TYPE_UNSPECIFIED: AppType.ValueType APP_TYPE_SINGLE_MACHINE: AppType.ValueType APP_TYPE_MULTI_MACHINE: AppType.ValueType -global___AppType = AppType +Global___AppType: _TypeAlias = AppType class _ClientAuthentication: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _ClientAuthenticationEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ClientAuthentication.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _ClientAuthenticationEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_ClientAuthentication.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor CLIENT_AUTHENTICATION_UNSPECIFIED: _ClientAuthentication.ValueType CLIENT_AUTHENTICATION_REQUIRED: _ClientAuthentication.ValueType CLIENT_AUTHENTICATION_NOT_REQUIRED: _ClientAuthentication.ValueType @@ -216,14 +221,14 @@ CLIENT_AUTHENTICATION_UNSPECIFIED: ClientAuthentication.ValueType CLIENT_AUTHENTICATION_REQUIRED: ClientAuthentication.ValueType CLIENT_AUTHENTICATION_NOT_REQUIRED: ClientAuthentication.ValueType CLIENT_AUTHENTICATION_NOT_REQUIRED_WHEN_USING_PKCE: ClientAuthentication.ValueType -global___ClientAuthentication = ClientAuthentication +Global___ClientAuthentication: _TypeAlias = ClientAuthentication class _PKCE: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _PKCEEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PKCE.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _PKCEEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_PKCE.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor PKCE_UNSPECIFIED: _PKCE.ValueType PKCE_REQUIRED: _PKCE.ValueType PKCE_NOT_REQUIRED: _PKCE.ValueType @@ -235,14 +240,14 @@ PKCE_UNSPECIFIED: PKCE.ValueType PKCE_REQUIRED: PKCE.ValueType PKCE_NOT_REQUIRED: PKCE.ValueType PKCE_NOT_REQUIRED_WHEN_USING_CLIENT_AUTHENTICATION: PKCE.ValueType -global___PKCE = PKCE +Global___PKCE: _TypeAlias = PKCE class _URLValidation: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _URLValidationEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_URLValidation.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _URLValidationEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_URLValidation.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor URL_VALIDATION_UNSPECIFIED: _URLValidation.ValueType URL_VALIDATION_EXACT_MATCH: _URLValidation.ValueType URL_VALIDATION_ALLOW_WILDCARDS: _URLValidation.ValueType @@ -252,14 +257,14 @@ class URLValidation(_URLValidation, metaclass=_URLValidationEnumTypeWrapper): URL_VALIDATION_UNSPECIFIED: URLValidation.ValueType URL_VALIDATION_EXACT_MATCH: URLValidation.ValueType URL_VALIDATION_ALLOW_WILDCARDS: URLValidation.ValueType -global___URLValidation = URLValidation +Global___URLValidation: _TypeAlias = URLValidation class _EnabledGrant: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _EnabledGrantEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_EnabledGrant.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _EnabledGrantEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_EnabledGrant.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor ENABLED_GRANT_UNSPECIFIED: _EnabledGrant.ValueType ENABLED_GRANT_AUTHORIZATION_CODE: _EnabledGrant.ValueType ENABLED_GRANT_IMPLICIT: _EnabledGrant.ValueType @@ -275,1145 +280,1249 @@ ENABLED_GRANT_IMPLICIT: EnabledGrant.ValueType ENABLED_GRANT_PASSWORD: EnabledGrant.ValueType ENABLED_GRANT_REFRESH_TOKEN: EnabledGrant.ValueType ENABLED_GRANT_DEVICE_CODE: EnabledGrant.ValueType -global___EnabledGrant = EnabledGrant - -@typing.final -class Robot(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - LOCATION_FIELD_NUMBER: builtins.int - LAST_ACCESS_FIELD_NUMBER: builtins.int - CREATED_ON_FIELD_NUMBER: builtins.int - ONLINE_STATE_FIELD_NUMBER: builtins.int - SECONDS_SINCE_ONLINE_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str - location: builtins.str - online_state: global___OnlineState.ValueType - seconds_since_online: builtins.int - - @property - def last_access(self) -> google.protobuf.timestamp_pb2.Timestamp: - ... - - @property - def created_on(self) -> google.protobuf.timestamp_pb2.Timestamp: - ... - - def __init__(self, *, id: builtins.str=..., name: builtins.str=..., location: builtins.str=..., last_access: google.protobuf.timestamp_pb2.Timestamp | None=..., created_on: google.protobuf.timestamp_pb2.Timestamp | None=..., online_state: global___OnlineState.ValueType=..., seconds_since_online: builtins.int=...) -> None: - ... - - def HasField(self, field_name: typing.Literal['created_on', b'created_on', 'last_access', b'last_access']) -> builtins.bool: - ... - - def ClearField(self, field_name: typing.Literal['created_on', b'created_on', 'id', b'id', 'last_access', b'last_access', 'location', b'location', 'name', b'name', 'online_state', b'online_state', 'seconds_since_online', b'seconds_since_online']) -> None: - ... -global___Robot = Robot - -@typing.final -class RobotPart(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - DNS_NAME_FIELD_NUMBER: builtins.int - SECRET_FIELD_NUMBER: builtins.int - ROBOT_FIELD_NUMBER: builtins.int - LOCATION_ID_FIELD_NUMBER: builtins.int - ROBOT_CONFIG_FIELD_NUMBER: builtins.int - LAST_ACCESS_FIELD_NUMBER: builtins.int - USER_SUPPLIED_INFO_FIELD_NUMBER: builtins.int - MAIN_PART_FIELD_NUMBER: builtins.int - FQDN_FIELD_NUMBER: builtins.int - LOCAL_FQDN_FIELD_NUMBER: builtins.int - CREATED_ON_FIELD_NUMBER: builtins.int - SECRETS_FIELD_NUMBER: builtins.int - LAST_UPDATED_FIELD_NUMBER: builtins.int - ONLINE_STATE_FIELD_NUMBER: builtins.int - SECONDS_SINCE_ONLINE_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str - dns_name: builtins.str +Global___EnabledGrant: _TypeAlias = EnabledGrant + +@_typing.final +class Robot(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + LOCATION_FIELD_NUMBER: _builtins.int + LAST_ACCESS_FIELD_NUMBER: _builtins.int + CREATED_ON_FIELD_NUMBER: _builtins.int + ONLINE_STATE_FIELD_NUMBER: _builtins.int + SECONDS_SINCE_ONLINE_FIELD_NUMBER: _builtins.int + id: _builtins.str + name: _builtins.str + location: _builtins.str + online_state: Global___OnlineState.ValueType + seconds_since_online: _builtins.int + + @_builtins.property + def last_access(self) -> _timestamp_pb2.Timestamp: + ... + + @_builtins.property + def created_on(self) -> _timestamp_pb2.Timestamp: + ... + + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=..., location: _builtins.str=..., last_access: _timestamp_pb2.Timestamp | None=..., created_on: _timestamp_pb2.Timestamp | None=..., online_state: Global___OnlineState.ValueType=..., seconds_since_online: _builtins.int=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on', 'last_access', b'last_access'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on', 'id', b'id', 'last_access', b'last_access', 'location', b'location', 'name', b'name', 'online_state', b'online_state', 'seconds_since_online', b'seconds_since_online'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___Robot: _TypeAlias = Robot + +@_typing.final +class RobotPart(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + DNS_NAME_FIELD_NUMBER: _builtins.int + SECRET_FIELD_NUMBER: _builtins.int + ROBOT_FIELD_NUMBER: _builtins.int + LOCATION_ID_FIELD_NUMBER: _builtins.int + ROBOT_CONFIG_FIELD_NUMBER: _builtins.int + LAST_ACCESS_FIELD_NUMBER: _builtins.int + USER_SUPPLIED_INFO_FIELD_NUMBER: _builtins.int + MAIN_PART_FIELD_NUMBER: _builtins.int + FQDN_FIELD_NUMBER: _builtins.int + LOCAL_FQDN_FIELD_NUMBER: _builtins.int + CREATED_ON_FIELD_NUMBER: _builtins.int + SECRETS_FIELD_NUMBER: _builtins.int + LAST_UPDATED_FIELD_NUMBER: _builtins.int + ONLINE_STATE_FIELD_NUMBER: _builtins.int + SECONDS_SINCE_ONLINE_FIELD_NUMBER: _builtins.int + id: _builtins.str + name: _builtins.str + dns_name: _builtins.str 'dns_name part name used for fqdn and local fqdn. Anytime the Name is updated this should be sanitized and updated as well.' - secret: builtins.str - robot: builtins.str - location_id: builtins.str + secret: _builtins.str + robot: _builtins.str + location_id: _builtins.str 'Store the location_id to allow for unique indexes across parts and locations. This filed MUST be updated each time the robots location\n changes.\n ' - main_part: builtins.bool - fqdn: builtins.str - local_fqdn: builtins.str - online_state: global___OnlineState.ValueType - seconds_since_online: builtins.int + main_part: _builtins.bool + fqdn: _builtins.str + local_fqdn: _builtins.str + online_state: Global___OnlineState.ValueType + seconds_since_online: _builtins.int - @property - def robot_config(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def robot_config(self) -> _struct_pb2.Struct: ... - @property - def last_access(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def last_access(self) -> _timestamp_pb2.Timestamp: ... - @property - def user_supplied_info(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def user_supplied_info(self) -> _struct_pb2.Struct: ... - @property - def created_on(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def created_on(self) -> _timestamp_pb2.Timestamp: ... - @property - def secrets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SharedSecret]: + @_builtins.property + def secrets(self) -> _containers.RepeatedCompositeFieldContainer[Global___SharedSecret]: """List of secrets allowed for authentication.""" - @property - def last_updated(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def last_updated(self) -> _timestamp_pb2.Timestamp: """latest timestamp when a robot part was updated""" - def __init__(self, *, id: builtins.str=..., name: builtins.str=..., dns_name: builtins.str=..., secret: builtins.str=..., robot: builtins.str=..., location_id: builtins.str=..., robot_config: google.protobuf.struct_pb2.Struct | None=..., last_access: google.protobuf.timestamp_pb2.Timestamp | None=..., user_supplied_info: google.protobuf.struct_pb2.Struct | None=..., main_part: builtins.bool=..., fqdn: builtins.str=..., local_fqdn: builtins.str=..., created_on: google.protobuf.timestamp_pb2.Timestamp | None=..., secrets: collections.abc.Iterable[global___SharedSecret] | None=..., last_updated: google.protobuf.timestamp_pb2.Timestamp | None=..., online_state: global___OnlineState.ValueType=..., seconds_since_online: builtins.int=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=..., dns_name: _builtins.str=..., secret: _builtins.str=..., robot: _builtins.str=..., location_id: _builtins.str=..., robot_config: _struct_pb2.Struct | None=..., last_access: _timestamp_pb2.Timestamp | None=..., user_supplied_info: _struct_pb2.Struct | None=..., main_part: _builtins.bool=..., fqdn: _builtins.str=..., local_fqdn: _builtins.str=..., created_on: _timestamp_pb2.Timestamp | None=..., secrets: _abc.Iterable[Global___SharedSecret] | None=..., last_updated: _timestamp_pb2.Timestamp | None=..., online_state: Global___OnlineState.ValueType=..., seconds_since_online: _builtins.int=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on', 'last_access', b'last_access', 'last_updated', b'last_updated', 'robot_config', b'robot_config', 'user_supplied_info', b'user_supplied_info'] - def HasField(self, field_name: typing.Literal['created_on', b'created_on', 'last_access', b'last_access', 'last_updated', b'last_updated', 'robot_config', b'robot_config', 'user_supplied_info', b'user_supplied_info']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on', 'dns_name', b'dns_name', 'fqdn', b'fqdn', 'id', b'id', 'last_access', b'last_access', 'last_updated', b'last_updated', 'local_fqdn', b'local_fqdn', 'location_id', b'location_id', 'main_part', b'main_part', 'name', b'name', 'online_state', b'online_state', 'robot', b'robot', 'robot_config', b'robot_config', 'seconds_since_online', b'seconds_since_online', 'secret', b'secret', 'secrets', b'secrets', 'user_supplied_info', b'user_supplied_info'] - def ClearField(self, field_name: typing.Literal['created_on', b'created_on', 'dns_name', b'dns_name', 'fqdn', b'fqdn', 'id', b'id', 'last_access', b'last_access', 'last_updated', b'last_updated', 'local_fqdn', b'local_fqdn', 'location_id', b'location_id', 'main_part', b'main_part', 'name', b'name', 'online_state', b'online_state', 'robot', b'robot', 'robot_config', b'robot_config', 'seconds_since_online', b'seconds_since_online', 'secret', b'secret', 'secrets', b'secrets', 'user_supplied_info', b'user_supplied_info']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RobotPart = RobotPart +Global___RobotPart: _TypeAlias = RobotPart -@typing.final -class RobotPartHistoryEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PART_FIELD_NUMBER: builtins.int - ROBOT_FIELD_NUMBER: builtins.int - WHEN_FIELD_NUMBER: builtins.int - OLD_FIELD_NUMBER: builtins.int - EDITED_BY_FIELD_NUMBER: builtins.int - part: builtins.str - robot: builtins.str +@_typing.final +class RobotPartHistoryEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PART_FIELD_NUMBER: _builtins.int + ROBOT_FIELD_NUMBER: _builtins.int + WHEN_FIELD_NUMBER: _builtins.int + OLD_FIELD_NUMBER: _builtins.int + EDITED_BY_FIELD_NUMBER: _builtins.int + part: _builtins.str + robot: _builtins.str - @property - def when(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def when(self) -> _timestamp_pb2.Timestamp: ... - @property - def old(self) -> global___RobotPart: + @_builtins.property + def old(self) -> Global___RobotPart: ... - @property - def edited_by(self) -> global___AuthenticatorInfo: + @_builtins.property + def edited_by(self) -> Global___AuthenticatorInfo: ... - def __init__(self, *, part: builtins.str=..., robot: builtins.str=..., when: google.protobuf.timestamp_pb2.Timestamp | None=..., old: global___RobotPart | None=..., edited_by: global___AuthenticatorInfo | None=...) -> None: + def __init__(self, *, part: _builtins.str=..., robot: _builtins.str=..., when: _timestamp_pb2.Timestamp | None=..., old: Global___RobotPart | None=..., edited_by: Global___AuthenticatorInfo | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['edited_by', b'edited_by', 'old', b'old', 'when', b'when'] - def HasField(self, field_name: typing.Literal['edited_by', b'edited_by', 'old', b'old', 'when', b'when']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['edited_by', b'edited_by', 'old', b'old', 'part', b'part', 'robot', b'robot', 'when', b'when'] - def ClearField(self, field_name: typing.Literal['edited_by', b'edited_by', 'old', b'old', 'part', b'part', 'robot', b'robot', 'when', b'when']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RobotPartHistoryEntry = RobotPartHistoryEntry +Global___RobotPartHistoryEntry: _TypeAlias = RobotPartHistoryEntry -@typing.final -class AuthenticatorInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TYPE_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - IS_DEACTIVATED_FIELD_NUMBER: builtins.int - type: global___AuthenticationType.ValueType - value: builtins.str - is_deactivated: builtins.bool +@_typing.final +class AuthenticatorInfo(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + IS_DEACTIVATED_FIELD_NUMBER: _builtins.int + type: Global___AuthenticationType.ValueType + value: _builtins.str + is_deactivated: _builtins.bool - def __init__(self, *, type: global___AuthenticationType.ValueType=..., value: builtins.str=..., is_deactivated: builtins.bool=...) -> None: + def __init__(self, *, type: Global___AuthenticationType.ValueType=..., value: _builtins.str=..., is_deactivated: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['is_deactivated', b'is_deactivated', 'type', b'type', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['is_deactivated', b'is_deactivated', 'type', b'type', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AuthenticatorInfo = AuthenticatorInfo +Global___AuthenticatorInfo: _TypeAlias = AuthenticatorInfo -@typing.final -class ListOrganizationsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ListOrganizationsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ListOrganizationsRequest = ListOrganizationsRequest - -@typing.final -class Organization(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - CREATED_ON_FIELD_NUMBER: builtins.int - PUBLIC_NAMESPACE_FIELD_NUMBER: builtins.int - DEFAULT_REGION_FIELD_NUMBER: builtins.int - CID_FIELD_NUMBER: builtins.int - DEFAULT_FRAGMENTS_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str - public_namespace: builtins.str - default_region: builtins.str +Global___ListOrganizationsRequest: _TypeAlias = ListOrganizationsRequest + +@_typing.final +class Organization(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + CREATED_ON_FIELD_NUMBER: _builtins.int + PUBLIC_NAMESPACE_FIELD_NUMBER: _builtins.int + DEFAULT_REGION_FIELD_NUMBER: _builtins.int + CID_FIELD_NUMBER: _builtins.int + DEFAULT_FRAGMENTS_FIELD_NUMBER: _builtins.int + id: _builtins.str + name: _builtins.str + public_namespace: _builtins.str + default_region: _builtins.str 'GCS region of the organization. Locations created under this org will have their GCS region set to this by default and packages\n associated with this org will be stored in this region.\n ' - cid: builtins.str + cid: _builtins.str - @property - def created_on(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def created_on(self) -> _timestamp_pb2.Timestamp: ... - @property - def default_fragments(self) -> global___FragmentImportList: + @_builtins.property + def default_fragments(self) -> Global___FragmentImportList: ... - def __init__(self, *, id: builtins.str=..., name: builtins.str=..., created_on: google.protobuf.timestamp_pb2.Timestamp | None=..., public_namespace: builtins.str=..., default_region: builtins.str=..., cid: builtins.str | None=..., default_fragments: global___FragmentImportList | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=..., created_on: _timestamp_pb2.Timestamp | None=..., public_namespace: _builtins.str=..., default_region: _builtins.str=..., cid: _builtins.str | None=..., default_fragments: Global___FragmentImportList | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_cid', b'_cid', '_default_fragments', b'_default_fragments', 'cid', b'cid', 'created_on', b'created_on', 'default_fragments', b'default_fragments'] - def HasField(self, field_name: typing.Literal['_cid', b'_cid', '_default_fragments', b'_default_fragments', 'cid', b'cid', 'created_on', b'created_on', 'default_fragments', b'default_fragments']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_cid', b'_cid', '_default_fragments', b'_default_fragments', 'cid', b'cid', 'created_on', b'created_on', 'default_fragments', b'default_fragments', 'default_region', b'default_region', 'id', b'id', 'name', b'name', 'public_namespace', b'public_namespace'] - def ClearField(self, field_name: typing.Literal['_cid', b'_cid', '_default_fragments', b'_default_fragments', 'cid', b'cid', 'created_on', b'created_on', 'default_fragments', b'default_fragments', 'default_region', b'default_region', 'id', b'id', 'name', b'name', 'public_namespace', b'public_namespace']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__cid: _TypeAlias = _typing.Literal['cid'] + _WhichOneofArgType__cid: _TypeAlias = _typing.Literal['_cid', b'_cid'] + _WhichOneofReturnType__default_fragments: _TypeAlias = _typing.Literal['default_fragments'] + _WhichOneofArgType__default_fragments: _TypeAlias = _typing.Literal['_default_fragments', b'_default_fragments'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_cid', b'_cid']) -> typing.Literal['cid'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__cid) -> _WhichOneofReturnType__cid | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_default_fragments', b'_default_fragments']) -> typing.Literal['default_fragments'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__default_fragments) -> _WhichOneofReturnType__default_fragments | None: ... -global___Organization = Organization +Global___Organization: _TypeAlias = Organization -@typing.final -class OrganizationMember(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - USER_ID_FIELD_NUMBER: builtins.int - EMAILS_FIELD_NUMBER: builtins.int - DATE_ADDED_FIELD_NUMBER: builtins.int - LAST_LOGIN_FIELD_NUMBER: builtins.int - LAST_ACCESS_FIELD_NUMBER: builtins.int - user_id: builtins.str +@_typing.final +class OrganizationMember(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + USER_ID_FIELD_NUMBER: _builtins.int + EMAILS_FIELD_NUMBER: _builtins.int + DATE_ADDED_FIELD_NUMBER: _builtins.int + LAST_LOGIN_FIELD_NUMBER: _builtins.int + LAST_ACCESS_FIELD_NUMBER: _builtins.int + user_id: _builtins.str - @property - def emails(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def emails(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def date_added(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def date_added(self) -> _timestamp_pb2.Timestamp: ... - @property - def last_login(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def last_login(self) -> _timestamp_pb2.Timestamp: ... - @property - def last_access(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def last_access(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, user_id: builtins.str=..., emails: collections.abc.Iterable[builtins.str] | None=..., date_added: google.protobuf.timestamp_pb2.Timestamp | None=..., last_login: google.protobuf.timestamp_pb2.Timestamp | None=..., last_access: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, user_id: _builtins.str=..., emails: _abc.Iterable[_builtins.str] | None=..., date_added: _timestamp_pb2.Timestamp | None=..., last_login: _timestamp_pb2.Timestamp | None=..., last_access: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_last_access', b'_last_access', '_last_login', b'_last_login', 'date_added', b'date_added', 'last_access', b'last_access', 'last_login', b'last_login'] - def HasField(self, field_name: typing.Literal['_last_access', b'_last_access', '_last_login', b'_last_login', 'date_added', b'date_added', 'last_access', b'last_access', 'last_login', b'last_login']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_last_access', b'_last_access', '_last_login', b'_last_login', 'date_added', b'date_added', 'emails', b'emails', 'last_access', b'last_access', 'last_login', b'last_login', 'user_id', b'user_id'] - def ClearField(self, field_name: typing.Literal['_last_access', b'_last_access', '_last_login', b'_last_login', 'date_added', b'date_added', 'emails', b'emails', 'last_access', b'last_access', 'last_login', b'last_login', 'user_id', b'user_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__last_access: _TypeAlias = _typing.Literal['last_access'] + _WhichOneofArgType__last_access: _TypeAlias = _typing.Literal['_last_access', b'_last_access'] + _WhichOneofReturnType__last_login: _TypeAlias = _typing.Literal['last_login'] + _WhichOneofArgType__last_login: _TypeAlias = _typing.Literal['_last_login', b'_last_login'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_last_access', b'_last_access']) -> typing.Literal['last_access'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__last_access) -> _WhichOneofReturnType__last_access | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_last_login', b'_last_login']) -> typing.Literal['last_login'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__last_login) -> _WhichOneofReturnType__last_login | None: ... -global___OrganizationMember = OrganizationMember +Global___OrganizationMember: _TypeAlias = OrganizationMember -@typing.final -class ListOrganizationsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATIONS_FIELD_NUMBER: builtins.int +@_typing.final +class ListOrganizationsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATIONS_FIELD_NUMBER: _builtins.int - @property - def organizations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Organization]: + @_builtins.property + def organizations(self) -> _containers.RepeatedCompositeFieldContainer[Global___Organization]: ... - def __init__(self, *, organizations: collections.abc.Iterable[global___Organization] | None=...) -> None: + def __init__(self, *, organizations: _abc.Iterable[Global___Organization] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organizations', b'organizations'] - def ClearField(self, field_name: typing.Literal['organizations', b'organizations']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListOrganizationsResponse = ListOrganizationsResponse +Global___ListOrganizationsResponse: _TypeAlias = ListOrganizationsResponse -@typing.final -class OrganizationInvite(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - EMAIL_FIELD_NUMBER: builtins.int - CREATED_ON_FIELD_NUMBER: builtins.int - AUTHORIZATIONS_FIELD_NUMBER: builtins.int - organization_id: builtins.str - email: builtins.str +@_typing.final +class OrganizationInvite(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + EMAIL_FIELD_NUMBER: _builtins.int + CREATED_ON_FIELD_NUMBER: _builtins.int + AUTHORIZATIONS_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + email: _builtins.str - @property - def created_on(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def created_on(self) -> _timestamp_pb2.Timestamp: ... - @property - def authorizations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Authorization]: + @_builtins.property + def authorizations(self) -> _containers.RepeatedCompositeFieldContainer[Global___Authorization]: ... - def __init__(self, *, organization_id: builtins.str=..., email: builtins.str=..., created_on: google.protobuf.timestamp_pb2.Timestamp | None=..., authorizations: collections.abc.Iterable[global___Authorization] | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., email: _builtins.str=..., created_on: _timestamp_pb2.Timestamp | None=..., authorizations: _abc.Iterable[Global___Authorization] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on'] - def HasField(self, field_name: typing.Literal['created_on', b'created_on']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['authorizations', b'authorizations', 'created_on', b'created_on', 'email', b'email', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['authorizations', b'authorizations', 'created_on', b'created_on', 'email', b'email', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___OrganizationInvite = OrganizationInvite +Global___OrganizationInvite: _TypeAlias = OrganizationInvite -@typing.final -class CreateOrganizationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class CreateOrganizationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateOrganizationRequest = CreateOrganizationRequest +Global___CreateOrganizationRequest: _TypeAlias = CreateOrganizationRequest -@typing.final -class CreateOrganizationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_FIELD_NUMBER: builtins.int +@_typing.final +class CreateOrganizationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_FIELD_NUMBER: _builtins.int - @property - def organization(self) -> global___Organization: + @_builtins.property + def organization(self) -> Global___Organization: ... - def __init__(self, *, organization: global___Organization | None=...) -> None: + def __init__(self, *, organization: Global___Organization | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['organization', b'organization'] - def HasField(self, field_name: typing.Literal['organization', b'organization']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization', b'organization'] - def ClearField(self, field_name: typing.Literal['organization', b'organization']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateOrganizationResponse = CreateOrganizationResponse +Global___CreateOrganizationResponse: _TypeAlias = CreateOrganizationResponse -@typing.final -class GetOrganizationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - organization_id: builtins.str +@_typing.final +class GetOrganizationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str - def __init__(self, *, organization_id: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetOrganizationRequest = GetOrganizationRequest +Global___GetOrganizationRequest: _TypeAlias = GetOrganizationRequest -@typing.final -class GetOrganizationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_FIELD_NUMBER: builtins.int +@_typing.final +class GetOrganizationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_FIELD_NUMBER: _builtins.int - @property - def organization(self) -> global___Organization: + @_builtins.property + def organization(self) -> Global___Organization: ... - def __init__(self, *, organization: global___Organization | None=...) -> None: + def __init__(self, *, organization: Global___Organization | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['organization', b'organization'] - def HasField(self, field_name: typing.Literal['organization', b'organization']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization', b'organization'] - def ClearField(self, field_name: typing.Literal['organization', b'organization']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetOrganizationResponse = GetOrganizationResponse +Global___GetOrganizationResponse: _TypeAlias = GetOrganizationResponse -@typing.final -class GetOrganizationNamespaceAvailabilityRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PUBLIC_NAMESPACE_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - public_namespace: builtins.str - organization_id: builtins.str +@_typing.final +class GetOrganizationNamespaceAvailabilityRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PUBLIC_NAMESPACE_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + public_namespace: _builtins.str + organization_id: _builtins.str - def __init__(self, *, public_namespace: builtins.str=..., organization_id: builtins.str=...) -> None: + def __init__(self, *, public_namespace: _builtins.str=..., organization_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_id', b'organization_id', 'public_namespace', b'public_namespace'] - def ClearField(self, field_name: typing.Literal['organization_id', b'organization_id', 'public_namespace', b'public_namespace']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetOrganizationNamespaceAvailabilityRequest = GetOrganizationNamespaceAvailabilityRequest +Global___GetOrganizationNamespaceAvailabilityRequest: _TypeAlias = GetOrganizationNamespaceAvailabilityRequest -@typing.final -class GetOrganizationNamespaceAvailabilityResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - AVAILABLE_FIELD_NUMBER: builtins.int - available: builtins.bool +@_typing.final +class GetOrganizationNamespaceAvailabilityResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + AVAILABLE_FIELD_NUMBER: _builtins.int + available: _builtins.bool - def __init__(self, *, available: builtins.bool=...) -> None: + def __init__(self, *, available: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['available', b'available'] - def ClearField(self, field_name: typing.Literal['available', b'available']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetOrganizationNamespaceAvailabilityResponse = GetOrganizationNamespaceAvailabilityResponse +Global___GetOrganizationNamespaceAvailabilityResponse: _TypeAlias = GetOrganizationNamespaceAvailabilityResponse -@typing.final -class FragmentImportList(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENTS_FIELD_NUMBER: builtins.int +@_typing.final +class FragmentImportList(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAGMENTS_FIELD_NUMBER: _builtins.int - @property - def fragments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FragmentImport]: + @_builtins.property + def fragments(self) -> _containers.RepeatedCompositeFieldContainer[Global___FragmentImport]: ... - def __init__(self, *, fragments: collections.abc.Iterable[global___FragmentImport] | None=...) -> None: + def __init__(self, *, fragments: _abc.Iterable[Global___FragmentImport] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['fragments', b'fragments'] - def ClearField(self, field_name: typing.Literal['fragments', b'fragments']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FragmentImportList = FragmentImportList +Global___FragmentImportList: _TypeAlias = FragmentImportList -@typing.final -class UpdateOrganizationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - PUBLIC_NAMESPACE_FIELD_NUMBER: builtins.int - REGION_FIELD_NUMBER: builtins.int - CID_FIELD_NUMBER: builtins.int - DEFAULT_FRAGMENTS_FIELD_NUMBER: builtins.int - organization_id: builtins.str - name: builtins.str - public_namespace: builtins.str - region: builtins.str +@_typing.final +class UpdateOrganizationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + PUBLIC_NAMESPACE_FIELD_NUMBER: _builtins.int + REGION_FIELD_NUMBER: _builtins.int + CID_FIELD_NUMBER: _builtins.int + DEFAULT_FRAGMENTS_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + name: _builtins.str + public_namespace: _builtins.str + region: _builtins.str 'The new GCS region to associate the org with.' - cid: builtins.str + cid: _builtins.str - @property - def default_fragments(self) -> global___FragmentImportList: + @_builtins.property + def default_fragments(self) -> Global___FragmentImportList: ... - def __init__(self, *, organization_id: builtins.str=..., name: builtins.str | None=..., public_namespace: builtins.str | None=..., region: builtins.str | None=..., cid: builtins.str | None=..., default_fragments: global___FragmentImportList | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., name: _builtins.str | None=..., public_namespace: _builtins.str | None=..., region: _builtins.str | None=..., cid: _builtins.str | None=..., default_fragments: Global___FragmentImportList | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_cid', b'_cid', '_default_fragments', b'_default_fragments', '_name', b'_name', '_public_namespace', b'_public_namespace', '_region', b'_region', 'cid', b'cid', 'default_fragments', b'default_fragments', 'name', b'name', 'public_namespace', b'public_namespace', 'region', b'region'] - def HasField(self, field_name: typing.Literal['_cid', b'_cid', '_default_fragments', b'_default_fragments', '_name', b'_name', '_public_namespace', b'_public_namespace', '_region', b'_region', 'cid', b'cid', 'default_fragments', b'default_fragments', 'name', b'name', 'public_namespace', b'public_namespace', 'region', b'region']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_cid', b'_cid', '_default_fragments', b'_default_fragments', '_name', b'_name', '_public_namespace', b'_public_namespace', '_region', b'_region', 'cid', b'cid', 'default_fragments', b'default_fragments', 'name', b'name', 'organization_id', b'organization_id', 'public_namespace', b'public_namespace', 'region', b'region'] - def ClearField(self, field_name: typing.Literal['_cid', b'_cid', '_default_fragments', b'_default_fragments', '_name', b'_name', '_public_namespace', b'_public_namespace', '_region', b'_region', 'cid', b'cid', 'default_fragments', b'default_fragments', 'name', b'name', 'organization_id', b'organization_id', 'public_namespace', b'public_namespace', 'region', b'region']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__cid: _TypeAlias = _typing.Literal['cid'] + _WhichOneofArgType__cid: _TypeAlias = _typing.Literal['_cid', b'_cid'] + _WhichOneofReturnType__default_fragments: _TypeAlias = _typing.Literal['default_fragments'] + _WhichOneofArgType__default_fragments: _TypeAlias = _typing.Literal['_default_fragments', b'_default_fragments'] + _WhichOneofReturnType__name: _TypeAlias = _typing.Literal['name'] + _WhichOneofArgType__name: _TypeAlias = _typing.Literal['_name', b'_name'] + _WhichOneofReturnType__public_namespace: _TypeAlias = _typing.Literal['public_namespace'] + _WhichOneofArgType__public_namespace: _TypeAlias = _typing.Literal['_public_namespace', b'_public_namespace'] + _WhichOneofReturnType__region: _TypeAlias = _typing.Literal['region'] + _WhichOneofArgType__region: _TypeAlias = _typing.Literal['_region', b'_region'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_cid', b'_cid']) -> typing.Literal['cid'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__cid) -> _WhichOneofReturnType__cid | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_default_fragments', b'_default_fragments']) -> typing.Literal['default_fragments'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__default_fragments) -> _WhichOneofReturnType__default_fragments | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_name', b'_name']) -> typing.Literal['name'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__name) -> _WhichOneofReturnType__name | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_public_namespace', b'_public_namespace']) -> typing.Literal['public_namespace'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__public_namespace) -> _WhichOneofReturnType__public_namespace | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_region', b'_region']) -> typing.Literal['region'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__region) -> _WhichOneofReturnType__region | None: ... -global___UpdateOrganizationRequest = UpdateOrganizationRequest +Global___UpdateOrganizationRequest: _TypeAlias = UpdateOrganizationRequest -@typing.final -class UpdateOrganizationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_FIELD_NUMBER: builtins.int +@_typing.final +class UpdateOrganizationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_FIELD_NUMBER: _builtins.int - @property - def organization(self) -> global___Organization: + @_builtins.property + def organization(self) -> Global___Organization: ... - def __init__(self, *, organization: global___Organization | None=...) -> None: + def __init__(self, *, organization: Global___Organization | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['organization', b'organization'] - def HasField(self, field_name: typing.Literal['organization', b'organization']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization', b'organization'] - def ClearField(self, field_name: typing.Literal['organization', b'organization']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateOrganizationResponse = UpdateOrganizationResponse +Global___UpdateOrganizationResponse: _TypeAlias = UpdateOrganizationResponse -@typing.final -class UpdateOrganizationNamespaceRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - NEW_PUBLIC_NAMESPACE_FIELD_NUMBER: builtins.int - organization_id: builtins.str - new_public_namespace: builtins.str +@_typing.final +class UpdateOrganizationNamespaceRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + NEW_PUBLIC_NAMESPACE_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + new_public_namespace: _builtins.str - def __init__(self, *, organization_id: builtins.str=..., new_public_namespace: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., new_public_namespace: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['new_public_namespace', b'new_public_namespace', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['new_public_namespace', b'new_public_namespace', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateOrganizationNamespaceRequest = UpdateOrganizationNamespaceRequest +Global___UpdateOrganizationNamespaceRequest: _TypeAlias = UpdateOrganizationNamespaceRequest -@typing.final -class UpdateOrganizationNamespaceResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_FIELD_NUMBER: builtins.int +@_typing.final +class UpdateOrganizationNamespaceResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_FIELD_NUMBER: _builtins.int - @property - def organization(self) -> global___Organization: + @_builtins.property + def organization(self) -> Global___Organization: ... - def __init__(self, *, organization: global___Organization | None=...) -> None: + def __init__(self, *, organization: Global___Organization | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['organization', b'organization'] - def HasField(self, field_name: typing.Literal['organization', b'organization']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization', b'organization'] - def ClearField(self, field_name: typing.Literal['organization', b'organization']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateOrganizationNamespaceResponse = UpdateOrganizationNamespaceResponse +Global___UpdateOrganizationNamespaceResponse: _TypeAlias = UpdateOrganizationNamespaceResponse -@typing.final -class DeleteOrganizationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - organization_id: builtins.str +@_typing.final +class DeleteOrganizationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str - def __init__(self, *, organization_id: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteOrganizationRequest = DeleteOrganizationRequest +Global___DeleteOrganizationRequest: _TypeAlias = DeleteOrganizationRequest -@typing.final -class DeleteOrganizationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteOrganizationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteOrganizationResponse = DeleteOrganizationResponse +Global___DeleteOrganizationResponse: _TypeAlias = DeleteOrganizationResponse -@typing.final -class GetOrganizationMetadataRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - organization_id: builtins.str +@_typing.final +class GetOrganizationMetadataRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str - def __init__(self, *, organization_id: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetOrganizationMetadataRequest = GetOrganizationMetadataRequest +Global___GetOrganizationMetadataRequest: _TypeAlias = GetOrganizationMetadataRequest -@typing.final -class GetOrganizationMetadataResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int +@_typing.final +class GetOrganizationMetadataResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int - @property - def data(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def data(self) -> _struct_pb2.Struct: ... - def __init__(self, *, data: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, data: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def HasField(self, field_name: typing.Literal['data', b'data']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetOrganizationMetadataResponse = GetOrganizationMetadataResponse +Global___GetOrganizationMetadataResponse: _TypeAlias = GetOrganizationMetadataResponse -@typing.final -class UpdateOrganizationMetadataRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - DATA_FIELD_NUMBER: builtins.int - organization_id: builtins.str +@_typing.final +class UpdateOrganizationMetadataRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + DATA_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str - @property - def data(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def data(self) -> _struct_pb2.Struct: ... - def __init__(self, *, organization_id: builtins.str=..., data: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., data: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def HasField(self, field_name: typing.Literal['data', b'data']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['data', b'data', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateOrganizationMetadataRequest = UpdateOrganizationMetadataRequest +Global___UpdateOrganizationMetadataRequest: _TypeAlias = UpdateOrganizationMetadataRequest -@typing.final -class UpdateOrganizationMetadataResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class UpdateOrganizationMetadataResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___UpdateOrganizationMetadataResponse = UpdateOrganizationMetadataResponse +Global___UpdateOrganizationMetadataResponse: _TypeAlias = UpdateOrganizationMetadataResponse -@typing.final -class ListOrganizationMembersRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - organization_id: builtins.str +@_typing.final +class ListOrganizationMembersRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str - def __init__(self, *, organization_id: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListOrganizationMembersRequest = ListOrganizationMembersRequest +Global___ListOrganizationMembersRequest: _TypeAlias = ListOrganizationMembersRequest -@typing.final -class ListOrganizationMembersResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - MEMBERS_FIELD_NUMBER: builtins.int - INVITES_FIELD_NUMBER: builtins.int - organization_id: builtins.str +@_typing.final +class ListOrganizationMembersResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + MEMBERS_FIELD_NUMBER: _builtins.int + INVITES_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str - @property - def members(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___OrganizationMember]: + @_builtins.property + def members(self) -> _containers.RepeatedCompositeFieldContainer[Global___OrganizationMember]: ... - @property - def invites(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___OrganizationInvite]: + @_builtins.property + def invites(self) -> _containers.RepeatedCompositeFieldContainer[Global___OrganizationInvite]: ... - def __init__(self, *, organization_id: builtins.str=..., members: collections.abc.Iterable[global___OrganizationMember] | None=..., invites: collections.abc.Iterable[global___OrganizationInvite] | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., members: _abc.Iterable[Global___OrganizationMember] | None=..., invites: _abc.Iterable[Global___OrganizationInvite] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['invites', b'invites', 'members', b'members', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['invites', b'invites', 'members', b'members', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListOrganizationMembersResponse = ListOrganizationMembersResponse +Global___ListOrganizationMembersResponse: _TypeAlias = ListOrganizationMembersResponse -@typing.final -class CreateOrganizationInviteRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - EMAIL_FIELD_NUMBER: builtins.int - AUTHORIZATIONS_FIELD_NUMBER: builtins.int - SEND_EMAIL_INVITE_FIELD_NUMBER: builtins.int - organization_id: builtins.str - email: builtins.str - send_email_invite: builtins.bool +@_typing.final +class CreateOrganizationInviteRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + EMAIL_FIELD_NUMBER: _builtins.int + AUTHORIZATIONS_FIELD_NUMBER: _builtins.int + SEND_EMAIL_INVITE_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + email: _builtins.str + send_email_invite: _builtins.bool 'Set to true (the default) to send an email to the recipient of an invite. The user must accept the email to be added to the associated authorizations.\n When set to false, the user automatically receives the associated authorization on the next login of the user with the associated email address.\n ' - @property - def authorizations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Authorization]: + @_builtins.property + def authorizations(self) -> _containers.RepeatedCompositeFieldContainer[Global___Authorization]: ... - def __init__(self, *, organization_id: builtins.str=..., email: builtins.str=..., authorizations: collections.abc.Iterable[global___Authorization] | None=..., send_email_invite: builtins.bool | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., email: _builtins.str=..., authorizations: _abc.Iterable[Global___Authorization] | None=..., send_email_invite: _builtins.bool | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_send_email_invite', b'_send_email_invite', 'send_email_invite', b'send_email_invite'] - def HasField(self, field_name: typing.Literal['_send_email_invite', b'_send_email_invite', 'send_email_invite', b'send_email_invite']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_send_email_invite', b'_send_email_invite', 'authorizations', b'authorizations', 'email', b'email', 'organization_id', b'organization_id', 'send_email_invite', b'send_email_invite'] - def ClearField(self, field_name: typing.Literal['_send_email_invite', b'_send_email_invite', 'authorizations', b'authorizations', 'email', b'email', 'organization_id', b'organization_id', 'send_email_invite', b'send_email_invite']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__send_email_invite: _TypeAlias = _typing.Literal['send_email_invite'] + _WhichOneofArgType__send_email_invite: _TypeAlias = _typing.Literal['_send_email_invite', b'_send_email_invite'] - def WhichOneof(self, oneof_group: typing.Literal['_send_email_invite', b'_send_email_invite']) -> typing.Literal['send_email_invite'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__send_email_invite) -> _WhichOneofReturnType__send_email_invite | None: ... -global___CreateOrganizationInviteRequest = CreateOrganizationInviteRequest +Global___CreateOrganizationInviteRequest: _TypeAlias = CreateOrganizationInviteRequest -@typing.final -class CreateOrganizationInviteResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - INVITE_FIELD_NUMBER: builtins.int +@_typing.final +class CreateOrganizationInviteResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + INVITE_FIELD_NUMBER: _builtins.int - @property - def invite(self) -> global___OrganizationInvite: + @_builtins.property + def invite(self) -> Global___OrganizationInvite: ... - def __init__(self, *, invite: global___OrganizationInvite | None=...) -> None: + def __init__(self, *, invite: Global___OrganizationInvite | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['invite', b'invite'] - def HasField(self, field_name: typing.Literal['invite', b'invite']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['invite', b'invite'] - def ClearField(self, field_name: typing.Literal['invite', b'invite']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateOrganizationInviteResponse = CreateOrganizationInviteResponse +Global___CreateOrganizationInviteResponse: _TypeAlias = CreateOrganizationInviteResponse -@typing.final -class UpdateOrganizationInviteAuthorizationsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - EMAIL_FIELD_NUMBER: builtins.int - ADD_AUTHORIZATIONS_FIELD_NUMBER: builtins.int - REMOVE_AUTHORIZATIONS_FIELD_NUMBER: builtins.int - organization_id: builtins.str - email: builtins.str +@_typing.final +class UpdateOrganizationInviteAuthorizationsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + EMAIL_FIELD_NUMBER: _builtins.int + ADD_AUTHORIZATIONS_FIELD_NUMBER: _builtins.int + REMOVE_AUTHORIZATIONS_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + email: _builtins.str - @property - def add_authorizations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Authorization]: + @_builtins.property + def add_authorizations(self) -> _containers.RepeatedCompositeFieldContainer[Global___Authorization]: ... - @property - def remove_authorizations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Authorization]: + @_builtins.property + def remove_authorizations(self) -> _containers.RepeatedCompositeFieldContainer[Global___Authorization]: ... - def __init__(self, *, organization_id: builtins.str=..., email: builtins.str=..., add_authorizations: collections.abc.Iterable[global___Authorization] | None=..., remove_authorizations: collections.abc.Iterable[global___Authorization] | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., email: _builtins.str=..., add_authorizations: _abc.Iterable[Global___Authorization] | None=..., remove_authorizations: _abc.Iterable[Global___Authorization] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['add_authorizations', b'add_authorizations', 'email', b'email', 'organization_id', b'organization_id', 'remove_authorizations', b'remove_authorizations'] - def ClearField(self, field_name: typing.Literal['add_authorizations', b'add_authorizations', 'email', b'email', 'organization_id', b'organization_id', 'remove_authorizations', b'remove_authorizations']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateOrganizationInviteAuthorizationsRequest = UpdateOrganizationInviteAuthorizationsRequest +Global___UpdateOrganizationInviteAuthorizationsRequest: _TypeAlias = UpdateOrganizationInviteAuthorizationsRequest -@typing.final -class UpdateOrganizationInviteAuthorizationsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - INVITE_FIELD_NUMBER: builtins.int +@_typing.final +class UpdateOrganizationInviteAuthorizationsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + INVITE_FIELD_NUMBER: _builtins.int - @property - def invite(self) -> global___OrganizationInvite: + @_builtins.property + def invite(self) -> Global___OrganizationInvite: ... - def __init__(self, *, invite: global___OrganizationInvite | None=...) -> None: + def __init__(self, *, invite: Global___OrganizationInvite | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['invite', b'invite'] - def HasField(self, field_name: typing.Literal['invite', b'invite']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['invite', b'invite'] - def ClearField(self, field_name: typing.Literal['invite', b'invite']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateOrganizationInviteAuthorizationsResponse = UpdateOrganizationInviteAuthorizationsResponse +Global___UpdateOrganizationInviteAuthorizationsResponse: _TypeAlias = UpdateOrganizationInviteAuthorizationsResponse -@typing.final -class DeleteOrganizationInviteRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - EMAIL_FIELD_NUMBER: builtins.int - organization_id: builtins.str - email: builtins.str +@_typing.final +class DeleteOrganizationInviteRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + EMAIL_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + email: _builtins.str - def __init__(self, *, organization_id: builtins.str=..., email: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., email: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['email', b'email', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['email', b'email', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteOrganizationInviteRequest = DeleteOrganizationInviteRequest +Global___DeleteOrganizationInviteRequest: _TypeAlias = DeleteOrganizationInviteRequest -@typing.final -class DeleteOrganizationInviteResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteOrganizationInviteResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteOrganizationInviteResponse = DeleteOrganizationInviteResponse - -@typing.final -class ResendOrganizationInviteRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - EMAIL_FIELD_NUMBER: builtins.int - SEND_EMAIL_INVITE_FIELD_NUMBER: builtins.int - organization_id: builtins.str - email: builtins.str - send_email_invite: builtins.bool +Global___DeleteOrganizationInviteResponse: _TypeAlias = DeleteOrganizationInviteResponse + +@_typing.final +class ResendOrganizationInviteRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + EMAIL_FIELD_NUMBER: _builtins.int + SEND_EMAIL_INVITE_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + email: _builtins.str + send_email_invite: _builtins.bool 'Set to true (the default) to send an email to the recipient of an invite. The user must accept the email to be added to the associated authorizations.\n When set to false, the user automatically receives the associated authorization on the next login of the user with the associated email address.\n ' - def __init__(self, *, organization_id: builtins.str=..., email: builtins.str=..., send_email_invite: builtins.bool | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., email: _builtins.str=..., send_email_invite: _builtins.bool | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_send_email_invite', b'_send_email_invite', 'send_email_invite', b'send_email_invite'] - def HasField(self, field_name: typing.Literal['_send_email_invite', b'_send_email_invite', 'send_email_invite', b'send_email_invite']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_send_email_invite', b'_send_email_invite', 'email', b'email', 'organization_id', b'organization_id', 'send_email_invite', b'send_email_invite'] - def ClearField(self, field_name: typing.Literal['_send_email_invite', b'_send_email_invite', 'email', b'email', 'organization_id', b'organization_id', 'send_email_invite', b'send_email_invite']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__send_email_invite: _TypeAlias = _typing.Literal['send_email_invite'] + _WhichOneofArgType__send_email_invite: _TypeAlias = _typing.Literal['_send_email_invite', b'_send_email_invite'] - def WhichOneof(self, oneof_group: typing.Literal['_send_email_invite', b'_send_email_invite']) -> typing.Literal['send_email_invite'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__send_email_invite) -> _WhichOneofReturnType__send_email_invite | None: ... -global___ResendOrganizationInviteRequest = ResendOrganizationInviteRequest +Global___ResendOrganizationInviteRequest: _TypeAlias = ResendOrganizationInviteRequest -@typing.final -class ResendOrganizationInviteResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - INVITE_FIELD_NUMBER: builtins.int +@_typing.final +class ResendOrganizationInviteResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + INVITE_FIELD_NUMBER: _builtins.int - @property - def invite(self) -> global___OrganizationInvite: + @_builtins.property + def invite(self) -> Global___OrganizationInvite: ... - def __init__(self, *, invite: global___OrganizationInvite | None=...) -> None: + def __init__(self, *, invite: Global___OrganizationInvite | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['invite', b'invite'] - def HasField(self, field_name: typing.Literal['invite', b'invite']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['invite', b'invite'] - def ClearField(self, field_name: typing.Literal['invite', b'invite']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ResendOrganizationInviteResponse = ResendOrganizationInviteResponse +Global___ResendOrganizationInviteResponse: _TypeAlias = ResendOrganizationInviteResponse -@typing.final -class DeleteOrganizationMemberRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - USER_ID_FIELD_NUMBER: builtins.int - organization_id: builtins.str - user_id: builtins.str +@_typing.final +class DeleteOrganizationMemberRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + USER_ID_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + user_id: _builtins.str - def __init__(self, *, organization_id: builtins.str=..., user_id: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., user_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_id', b'organization_id', 'user_id', b'user_id'] - def ClearField(self, field_name: typing.Literal['organization_id', b'organization_id', 'user_id', b'user_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteOrganizationMemberRequest = DeleteOrganizationMemberRequest +Global___DeleteOrganizationMemberRequest: _TypeAlias = DeleteOrganizationMemberRequest -@typing.final -class DeleteOrganizationMemberResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteOrganizationMemberResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteOrganizationMemberResponse = DeleteOrganizationMemberResponse +Global___DeleteOrganizationMemberResponse: _TypeAlias = DeleteOrganizationMemberResponse -@typing.final -class BillingAddress(google.protobuf.message.Message): +@_typing.final +class BillingAddress(_message.Message): """Third Party Org Services""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ADDRESS_LINE_1_FIELD_NUMBER: builtins.int - ADDRESS_LINE_2_FIELD_NUMBER: builtins.int - CITY_FIELD_NUMBER: builtins.int - STATE_FIELD_NUMBER: builtins.int - ZIPCODE_FIELD_NUMBER: builtins.int - COUNTRY_FIELD_NUMBER: builtins.int - address_line_1: builtins.str - address_line_2: builtins.str - city: builtins.str - state: builtins.str - zipcode: builtins.str - country: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ADDRESS_LINE_1_FIELD_NUMBER: _builtins.int + ADDRESS_LINE_2_FIELD_NUMBER: _builtins.int + CITY_FIELD_NUMBER: _builtins.int + STATE_FIELD_NUMBER: _builtins.int + ZIPCODE_FIELD_NUMBER: _builtins.int + COUNTRY_FIELD_NUMBER: _builtins.int + address_line_1: _builtins.str + address_line_2: _builtins.str + city: _builtins.str + state: _builtins.str + zipcode: _builtins.str + country: _builtins.str - def __init__(self, *, address_line_1: builtins.str=..., address_line_2: builtins.str | None=..., city: builtins.str=..., state: builtins.str=..., zipcode: builtins.str=..., country: builtins.str=...) -> None: + def __init__(self, *, address_line_1: _builtins.str=..., address_line_2: _builtins.str | None=..., city: _builtins.str=..., state: _builtins.str=..., zipcode: _builtins.str=..., country: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_address_line_2', b'_address_line_2', 'address_line_2', b'address_line_2'] - def HasField(self, field_name: typing.Literal['_address_line_2', b'_address_line_2', 'address_line_2', b'address_line_2']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_address_line_2', b'_address_line_2', 'address_line_1', b'address_line_1', 'address_line_2', b'address_line_2', 'city', b'city', 'country', b'country', 'state', b'state', 'zipcode', b'zipcode'] - def ClearField(self, field_name: typing.Literal['_address_line_2', b'_address_line_2', 'address_line_1', b'address_line_1', 'address_line_2', b'address_line_2', 'city', b'city', 'country', b'country', 'state', b'state', 'zipcode', b'zipcode']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__address_line_2: _TypeAlias = _typing.Literal['address_line_2'] + _WhichOneofArgType__address_line_2: _TypeAlias = _typing.Literal['_address_line_2', b'_address_line_2'] - def WhichOneof(self, oneof_group: typing.Literal['_address_line_2', b'_address_line_2']) -> typing.Literal['address_line_2'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__address_line_2) -> _WhichOneofReturnType__address_line_2 | None: ... -global___BillingAddress = BillingAddress +Global___BillingAddress: _TypeAlias = BillingAddress -@typing.final -class EnableBillingServiceRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - BILLING_ADDRESS_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class EnableBillingServiceRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + BILLING_ADDRESS_FIELD_NUMBER: _builtins.int + org_id: _builtins.str - @property - def billing_address(self) -> global___BillingAddress: + @_builtins.property + def billing_address(self) -> Global___BillingAddress: ... - def __init__(self, *, org_id: builtins.str=..., billing_address: global___BillingAddress | None=...) -> None: + def __init__(self, *, org_id: _builtins.str=..., billing_address: Global___BillingAddress | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['billing_address', b'billing_address'] - def HasField(self, field_name: typing.Literal['billing_address', b'billing_address']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['billing_address', b'billing_address', 'org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['billing_address', b'billing_address', 'org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EnableBillingServiceRequest = EnableBillingServiceRequest +Global___EnableBillingServiceRequest: _TypeAlias = EnableBillingServiceRequest -@typing.final -class EnableBillingServiceResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class EnableBillingServiceResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___EnableBillingServiceResponse = EnableBillingServiceResponse +Global___EnableBillingServiceResponse: _TypeAlias = EnableBillingServiceResponse -@typing.final -class UpdateBillingServiceRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - BILLING_ADDRESS_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class UpdateBillingServiceRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + BILLING_ADDRESS_FIELD_NUMBER: _builtins.int + org_id: _builtins.str - @property - def billing_address(self) -> global___BillingAddress: + @_builtins.property + def billing_address(self) -> Global___BillingAddress: ... - def __init__(self, *, org_id: builtins.str=..., billing_address: global___BillingAddress | None=...) -> None: + def __init__(self, *, org_id: _builtins.str=..., billing_address: Global___BillingAddress | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['billing_address', b'billing_address'] - def HasField(self, field_name: typing.Literal['billing_address', b'billing_address']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['billing_address', b'billing_address', 'org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['billing_address', b'billing_address', 'org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateBillingServiceRequest = UpdateBillingServiceRequest +Global___UpdateBillingServiceRequest: _TypeAlias = UpdateBillingServiceRequest -@typing.final -class UpdateBillingServiceResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class UpdateBillingServiceResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___UpdateBillingServiceResponse = UpdateBillingServiceResponse +Global___UpdateBillingServiceResponse: _TypeAlias = UpdateBillingServiceResponse -@typing.final -class GetBillingServiceConfigRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class GetBillingServiceConfigRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str - def __init__(self, *, org_id: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetBillingServiceConfigRequest = GetBillingServiceConfigRequest +Global___GetBillingServiceConfigRequest: _TypeAlias = GetBillingServiceConfigRequest -@typing.final -class GetBillingServiceConfigResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BILLING_ADDRESS_FIELD_NUMBER: builtins.int - SUPPORT_EMAIL_FIELD_NUMBER: builtins.int - LOGO_URL_FIELD_NUMBER: builtins.int - BILLING_DASHBOARD_URL_FIELD_NUMBER: builtins.int - support_email: builtins.str - logo_url: builtins.str - billing_dashboard_url: builtins.str +@_typing.final +class GetBillingServiceConfigResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + BILLING_ADDRESS_FIELD_NUMBER: _builtins.int + SUPPORT_EMAIL_FIELD_NUMBER: _builtins.int + LOGO_URL_FIELD_NUMBER: _builtins.int + BILLING_DASHBOARD_URL_FIELD_NUMBER: _builtins.int + support_email: _builtins.str + logo_url: _builtins.str + billing_dashboard_url: _builtins.str - @property - def billing_address(self) -> global___BillingAddress: + @_builtins.property + def billing_address(self) -> Global___BillingAddress: ... - def __init__(self, *, billing_address: global___BillingAddress | None=..., support_email: builtins.str=..., logo_url: builtins.str=..., billing_dashboard_url: builtins.str=...) -> None: + def __init__(self, *, billing_address: Global___BillingAddress | None=..., support_email: _builtins.str=..., logo_url: _builtins.str=..., billing_dashboard_url: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['billing_address', b'billing_address'] - def HasField(self, field_name: typing.Literal['billing_address', b'billing_address']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['billing_address', b'billing_address', 'billing_dashboard_url', b'billing_dashboard_url', 'logo_url', b'logo_url', 'support_email', b'support_email'] - def ClearField(self, field_name: typing.Literal['billing_address', b'billing_address', 'billing_dashboard_url', b'billing_dashboard_url', 'logo_url', b'logo_url', 'support_email', b'support_email']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetBillingServiceConfigResponse = GetBillingServiceConfigResponse +Global___GetBillingServiceConfigResponse: _TypeAlias = GetBillingServiceConfigResponse -@typing.final -class DisableBillingServiceRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class DisableBillingServiceRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str - def __init__(self, *, org_id: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DisableBillingServiceRequest = DisableBillingServiceRequest +Global___DisableBillingServiceRequest: _TypeAlias = DisableBillingServiceRequest -@typing.final -class DisableBillingServiceResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DisableBillingServiceResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DisableBillingServiceResponse = DisableBillingServiceResponse +Global___DisableBillingServiceResponse: _TypeAlias = DisableBillingServiceResponse -@typing.final -class OrganizationSetSupportEmailRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - EMAIL_FIELD_NUMBER: builtins.int - org_id: builtins.str - email: builtins.str +@_typing.final +class OrganizationSetSupportEmailRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + EMAIL_FIELD_NUMBER: _builtins.int + org_id: _builtins.str + email: _builtins.str - def __init__(self, *, org_id: builtins.str=..., email: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=..., email: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['email', b'email', 'org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['email', b'email', 'org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___OrganizationSetSupportEmailRequest = OrganizationSetSupportEmailRequest +Global___OrganizationSetSupportEmailRequest: _TypeAlias = OrganizationSetSupportEmailRequest -@typing.final -class OrganizationSetSupportEmailResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class OrganizationSetSupportEmailResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___OrganizationSetSupportEmailResponse = OrganizationSetSupportEmailResponse +Global___OrganizationSetSupportEmailResponse: _TypeAlias = OrganizationSetSupportEmailResponse -@typing.final -class OrganizationGetSupportEmailRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class OrganizationGetSupportEmailRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str - def __init__(self, *, org_id: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___OrganizationGetSupportEmailRequest = OrganizationGetSupportEmailRequest +Global___OrganizationGetSupportEmailRequest: _TypeAlias = OrganizationGetSupportEmailRequest -@typing.final -class OrganizationGetSupportEmailResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - EMAIL_FIELD_NUMBER: builtins.int - email: builtins.str +@_typing.final +class OrganizationGetSupportEmailResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + EMAIL_FIELD_NUMBER: _builtins.int + email: _builtins.str - def __init__(self, *, email: builtins.str=...) -> None: + def __init__(self, *, email: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['email', b'email'] - def ClearField(self, field_name: typing.Literal['email', b'email']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___OrganizationGetSupportEmailResponse = OrganizationGetSupportEmailResponse +Global___OrganizationGetSupportEmailResponse: _TypeAlias = OrganizationGetSupportEmailResponse -@typing.final -class OrganizationIdentity(google.protobuf.message.Message): +@_typing.final +class OrganizationIdentity(_message.Message): """Location Used for rendering an organization's information on the frontend (limited to id, name, or both). """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + id: _builtins.str 'Organization ID.' - name: builtins.str + name: _builtins.str 'Organization name.' - def __init__(self, *, id: builtins.str=..., name: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___OrganizationIdentity = OrganizationIdentity +Global___OrganizationIdentity: _TypeAlias = OrganizationIdentity -@typing.final -class LocationOrganization(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - PRIMARY_FIELD_NUMBER: builtins.int - organization_id: builtins.str +@_typing.final +class LocationOrganization(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + PRIMARY_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str 'Organization ID the location is shared with.' - primary: builtins.bool + primary: _builtins.bool 'Whether the organization is the primary owner or not.' - def __init__(self, *, organization_id: builtins.str=..., primary: builtins.bool=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., primary: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_id', b'organization_id', 'primary', b'primary'] - def ClearField(self, field_name: typing.Literal['organization_id', b'organization_id', 'primary', b'primary']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___LocationOrganization = LocationOrganization +Global___LocationOrganization: _TypeAlias = LocationOrganization + +@_typing.final +class LocationAuth(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SECRET_FIELD_NUMBER: _builtins.int + LOCATION_ID_FIELD_NUMBER: _builtins.int + SECRETS_FIELD_NUMBER: _builtins.int + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def secret(self) -> _builtins.str: + """Deprecated: use secrets field.""" -@typing.final -class LocationAuth(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SECRET_FIELD_NUMBER: builtins.int - LOCATION_ID_FIELD_NUMBER: builtins.int - SECRETS_FIELD_NUMBER: builtins.int - secret: builtins.str - 'Deprecated: use secrets field.' - location_id: builtins.str + @secret.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def secret(self, value: _builtins.str) -> None: + """Deprecated: use secrets field.""" + location_id: _builtins.str 'Location ID containing this LocationAuth.' - @property - def secrets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SharedSecret]: + @_builtins.property + def secrets(self) -> _containers.RepeatedCompositeFieldContainer[Global___SharedSecret]: """List of secrets used to authenticate to the Location.""" - def __init__(self, *, secret: builtins.str=..., location_id: builtins.str=..., secrets: collections.abc.Iterable[global___SharedSecret] | None=...) -> None: + def __init__(self, *, secret: _builtins.str=..., location_id: _builtins.str=..., secrets: _abc.Iterable[Global___SharedSecret] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id', 'secret', b'secret', 'secrets', b'secrets'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id', 'secret', b'secret', 'secrets', b'secrets']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___LocationAuth = LocationAuth +Global___LocationAuth: _TypeAlias = LocationAuth -@typing.final -class StorageConfig(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - REGION_FIELD_NUMBER: builtins.int - region: builtins.str +@_typing.final +class StorageConfig(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + REGION_FIELD_NUMBER: _builtins.int + region: _builtins.str 'GCS region that data is stored in.' - def __init__(self, *, region: builtins.str=...) -> None: + def __init__(self, *, region: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['region', b'region'] - def ClearField(self, field_name: typing.Literal['region', b'region']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StorageConfig = StorageConfig +Global___StorageConfig: _TypeAlias = StorageConfig -@typing.final -class Location(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - PARENT_LOCATION_ID_FIELD_NUMBER: builtins.int - AUTH_FIELD_NUMBER: builtins.int - ORGANIZATIONS_FIELD_NUMBER: builtins.int - CREATED_ON_FIELD_NUMBER: builtins.int - ROBOT_COUNT_FIELD_NUMBER: builtins.int - CONFIG_FIELD_NUMBER: builtins.int - PRIMARY_ORG_IDENTITY_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class Location(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + PARENT_LOCATION_ID_FIELD_NUMBER: _builtins.int + AUTH_FIELD_NUMBER: _builtins.int + ORGANIZATIONS_FIELD_NUMBER: _builtins.int + CREATED_ON_FIELD_NUMBER: _builtins.int + ROBOT_COUNT_FIELD_NUMBER: _builtins.int + CONFIG_FIELD_NUMBER: _builtins.int + PRIMARY_ORG_IDENTITY_FIELD_NUMBER: _builtins.int + id: _builtins.str 'Location ID.' - name: builtins.str + name: _builtins.str 'Location name.' - parent_location_id: builtins.str + parent_location_id: _builtins.str 'Location ID of the parent location.' - robot_count: builtins.int + robot_count: _builtins.int '' - @property - def auth(self) -> global___LocationAuth: + @_builtins.property + def auth(self) -> Global___LocationAuth: """Location authentication secrets.""" - @property - def organizations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___LocationOrganization]: + @_builtins.property + def organizations(self) -> _containers.RepeatedCompositeFieldContainer[Global___LocationOrganization]: """Organizations that the location is shared with.""" - @property - def created_on(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def created_on(self) -> _timestamp_pb2.Timestamp: """Location creation timestamp.""" - @property - def config(self) -> global___StorageConfig: + @_builtins.property + def config(self) -> Global___StorageConfig: """Config for how data in this location is stored.""" - @property - def primary_org_identity(self) -> global___OrganizationIdentity: + @_builtins.property + def primary_org_identity(self) -> Global___OrganizationIdentity: """The organization that is the primary owner of the location.""" - def __init__(self, *, id: builtins.str=..., name: builtins.str=..., parent_location_id: builtins.str=..., auth: global___LocationAuth | None=..., organizations: collections.abc.Iterable[global___LocationOrganization] | None=..., created_on: google.protobuf.timestamp_pb2.Timestamp | None=..., robot_count: builtins.int=..., config: global___StorageConfig | None=..., primary_org_identity: global___OrganizationIdentity | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=..., parent_location_id: _builtins.str=..., auth: Global___LocationAuth | None=..., organizations: _abc.Iterable[Global___LocationOrganization] | None=..., created_on: _timestamp_pb2.Timestamp | None=..., robot_count: _builtins.int=..., config: Global___StorageConfig | None=..., primary_org_identity: Global___OrganizationIdentity | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_primary_org_identity', b'_primary_org_identity', 'auth', b'auth', 'config', b'config', 'created_on', b'created_on', 'primary_org_identity', b'primary_org_identity'] - def HasField(self, field_name: typing.Literal['_primary_org_identity', b'_primary_org_identity', 'auth', b'auth', 'config', b'config', 'created_on', b'created_on', 'primary_org_identity', b'primary_org_identity']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_primary_org_identity', b'_primary_org_identity', 'auth', b'auth', 'config', b'config', 'created_on', b'created_on', 'id', b'id', 'name', b'name', 'organizations', b'organizations', 'parent_location_id', b'parent_location_id', 'primary_org_identity', b'primary_org_identity', 'robot_count', b'robot_count'] - def ClearField(self, field_name: typing.Literal['_primary_org_identity', b'_primary_org_identity', 'auth', b'auth', 'config', b'config', 'created_on', b'created_on', 'id', b'id', 'name', b'name', 'organizations', b'organizations', 'parent_location_id', b'parent_location_id', 'primary_org_identity', b'primary_org_identity', 'robot_count', b'robot_count']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__primary_org_identity: _TypeAlias = _typing.Literal['primary_org_identity'] + _WhichOneofArgType__primary_org_identity: _TypeAlias = _typing.Literal['_primary_org_identity', b'_primary_org_identity'] - def WhichOneof(self, oneof_group: typing.Literal['_primary_org_identity', b'_primary_org_identity']) -> typing.Literal['primary_org_identity'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__primary_org_identity) -> _WhichOneofReturnType__primary_org_identity | None: ... -global___Location = Location +Global___Location: _TypeAlias = Location -@typing.final -class SharedSecret(google.protobuf.message.Message): +@_typing.final +class SharedSecret(_message.Message): """SharedSecret is a secret used for LocationAuth and RobotParts.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor class _State: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType - class _StateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SharedSecret._State.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + class _StateEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[SharedSecret._State.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor STATE_UNSPECIFIED: SharedSecret._State.ValueType STATE_ENABLED: SharedSecret._State.ValueType 'Secret is enabled and can be used in authentication.' @@ -1427,4428 +1536,4860 @@ class SharedSecret(google.protobuf.message.Message): 'Secret is enabled and can be used in authentication.' STATE_DISABLED: SharedSecret.State.ValueType 'Secret is disabled and must not be used to authenticate to rpc.' - ID_FIELD_NUMBER: builtins.int - SECRET_FIELD_NUMBER: builtins.int - CREATED_ON_FIELD_NUMBER: builtins.int - STATE_FIELD_NUMBER: builtins.int - id: builtins.str - secret: builtins.str + ID_FIELD_NUMBER: _builtins.int + SECRET_FIELD_NUMBER: _builtins.int + CREATED_ON_FIELD_NUMBER: _builtins.int + STATE_FIELD_NUMBER: _builtins.int + id: _builtins.str + secret: _builtins.str 'The payload of the secret. Used during authentication to the rpc framework.' - state: global___SharedSecret.State.ValueType + state: Global___SharedSecret.State.ValueType 'State of the shared secret. In most cases it should be enabled. We may support\n disabling a specific secret while keeping it in the database.\n ' - @property - def created_on(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def created_on(self) -> _timestamp_pb2.Timestamp: """Date/time the secret was first created.""" - def __init__(self, *, id: builtins.str=..., secret: builtins.str=..., created_on: google.protobuf.timestamp_pb2.Timestamp | None=..., state: global___SharedSecret.State.ValueType=...) -> None: + def __init__(self, *, id: _builtins.str=..., secret: _builtins.str=..., created_on: _timestamp_pb2.Timestamp | None=..., state: Global___SharedSecret.State.ValueType=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on'] - def HasField(self, field_name: typing.Literal['created_on', b'created_on']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on', 'id', b'id', 'secret', b'secret', 'state', b'state'] - def ClearField(self, field_name: typing.Literal['created_on', b'created_on', 'id', b'id', 'secret', b'secret', 'state', b'state']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SharedSecret = SharedSecret +Global___SharedSecret: _TypeAlias = SharedSecret -@typing.final -class CreateLocationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - PARENT_LOCATION_ID_FIELD_NUMBER: builtins.int - organization_id: builtins.str +@_typing.final +class CreateLocationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + PARENT_LOCATION_ID_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str 'Organization ID to create the location under.' - name: builtins.str + name: _builtins.str 'Name of the location.' - parent_location_id: builtins.str + parent_location_id: _builtins.str 'The new parent location to move the location under.' - def __init__(self, *, organization_id: builtins.str=..., name: builtins.str=..., parent_location_id: builtins.str | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., name: _builtins.str=..., parent_location_id: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_parent_location_id', b'_parent_location_id', 'parent_location_id', b'parent_location_id'] - def HasField(self, field_name: typing.Literal['_parent_location_id', b'_parent_location_id', 'parent_location_id', b'parent_location_id']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_parent_location_id', b'_parent_location_id', 'name', b'name', 'organization_id', b'organization_id', 'parent_location_id', b'parent_location_id'] - def ClearField(self, field_name: typing.Literal['_parent_location_id', b'_parent_location_id', 'name', b'name', 'organization_id', b'organization_id', 'parent_location_id', b'parent_location_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__parent_location_id: _TypeAlias = _typing.Literal['parent_location_id'] + _WhichOneofArgType__parent_location_id: _TypeAlias = _typing.Literal['_parent_location_id', b'_parent_location_id'] - def WhichOneof(self, oneof_group: typing.Literal['_parent_location_id', b'_parent_location_id']) -> typing.Literal['parent_location_id'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__parent_location_id) -> _WhichOneofReturnType__parent_location_id | None: ... -global___CreateLocationRequest = CreateLocationRequest +Global___CreateLocationRequest: _TypeAlias = CreateLocationRequest -@typing.final -class CreateLocationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_FIELD_NUMBER: builtins.int +@_typing.final +class CreateLocationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_FIELD_NUMBER: _builtins.int - @property - def location(self) -> global___Location: + @_builtins.property + def location(self) -> Global___Location: """Location object is returned.""" - def __init__(self, *, location: global___Location | None=...) -> None: + def __init__(self, *, location: Global___Location | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['location', b'location'] - def HasField(self, field_name: typing.Literal['location', b'location']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location', b'location'] - def ClearField(self, field_name: typing.Literal['location', b'location']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateLocationResponse = CreateLocationResponse +Global___CreateLocationResponse: _TypeAlias = CreateLocationResponse -@typing.final -class GetLocationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_ID_FIELD_NUMBER: builtins.int - location_id: builtins.str +@_typing.final +class GetLocationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_ID_FIELD_NUMBER: _builtins.int + location_id: _builtins.str 'Location ID of location to get.' - def __init__(self, *, location_id: builtins.str=...) -> None: + def __init__(self, *, location_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetLocationRequest = GetLocationRequest +Global___GetLocationRequest: _TypeAlias = GetLocationRequest -@typing.final -class GetLocationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_FIELD_NUMBER: builtins.int +@_typing.final +class GetLocationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_FIELD_NUMBER: _builtins.int - @property - def location(self) -> global___Location: + @_builtins.property + def location(self) -> Global___Location: """Location object is returned.""" - def __init__(self, *, location: global___Location | None=...) -> None: + def __init__(self, *, location: Global___Location | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['location', b'location'] - def HasField(self, field_name: typing.Literal['location', b'location']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location', b'location'] - def ClearField(self, field_name: typing.Literal['location', b'location']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetLocationResponse = GetLocationResponse +Global___GetLocationResponse: _TypeAlias = GetLocationResponse -@typing.final -class UpdateLocationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - PARENT_LOCATION_ID_FIELD_NUMBER: builtins.int - REGION_FIELD_NUMBER: builtins.int - location_id: builtins.str +@_typing.final +class UpdateLocationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + PARENT_LOCATION_ID_FIELD_NUMBER: _builtins.int + REGION_FIELD_NUMBER: _builtins.int + location_id: _builtins.str 'Location ID of location to update.' - name: builtins.str + name: _builtins.str 'The new name to be updated on location.' - parent_location_id: builtins.str + parent_location_id: _builtins.str 'The new parent location to move the location under.' - region: builtins.str + region: _builtins.str 'The new GCS region to associate the location with.' - def __init__(self, *, location_id: builtins.str=..., name: builtins.str | None=..., parent_location_id: builtins.str | None=..., region: builtins.str | None=...) -> None: + def __init__(self, *, location_id: _builtins.str=..., name: _builtins.str | None=..., parent_location_id: _builtins.str | None=..., region: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_name', b'_name', '_parent_location_id', b'_parent_location_id', '_region', b'_region', 'name', b'name', 'parent_location_id', b'parent_location_id', 'region', b'region'] - def HasField(self, field_name: typing.Literal['_name', b'_name', '_parent_location_id', b'_parent_location_id', '_region', b'_region', 'name', b'name', 'parent_location_id', b'parent_location_id', 'region', b'region']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_name', b'_name', '_parent_location_id', b'_parent_location_id', '_region', b'_region', 'location_id', b'location_id', 'name', b'name', 'parent_location_id', b'parent_location_id', 'region', b'region'] - def ClearField(self, field_name: typing.Literal['_name', b'_name', '_parent_location_id', b'_parent_location_id', '_region', b'_region', 'location_id', b'location_id', 'name', b'name', 'parent_location_id', b'parent_location_id', 'region', b'region']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__name: _TypeAlias = _typing.Literal['name'] + _WhichOneofArgType__name: _TypeAlias = _typing.Literal['_name', b'_name'] + _WhichOneofReturnType__parent_location_id: _TypeAlias = _typing.Literal['parent_location_id'] + _WhichOneofArgType__parent_location_id: _TypeAlias = _typing.Literal['_parent_location_id', b'_parent_location_id'] + _WhichOneofReturnType__region: _TypeAlias = _typing.Literal['region'] + _WhichOneofArgType__region: _TypeAlias = _typing.Literal['_region', b'_region'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_name', b'_name']) -> typing.Literal['name'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__name) -> _WhichOneofReturnType__name | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_parent_location_id', b'_parent_location_id']) -> typing.Literal['parent_location_id'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__parent_location_id) -> _WhichOneofReturnType__parent_location_id | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_region', b'_region']) -> typing.Literal['region'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__region) -> _WhichOneofReturnType__region | None: ... -global___UpdateLocationRequest = UpdateLocationRequest +Global___UpdateLocationRequest: _TypeAlias = UpdateLocationRequest -@typing.final -class UpdateLocationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_FIELD_NUMBER: builtins.int +@_typing.final +class UpdateLocationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_FIELD_NUMBER: _builtins.int - @property - def location(self) -> global___Location: + @_builtins.property + def location(self) -> Global___Location: """Location object is returned.""" - def __init__(self, *, location: global___Location | None=...) -> None: + def __init__(self, *, location: Global___Location | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['location', b'location'] - def HasField(self, field_name: typing.Literal['location', b'location']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location', b'location'] - def ClearField(self, field_name: typing.Literal['location', b'location']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateLocationResponse = UpdateLocationResponse +Global___UpdateLocationResponse: _TypeAlias = UpdateLocationResponse -@typing.final -class DeleteLocationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_ID_FIELD_NUMBER: builtins.int - location_id: builtins.str +@_typing.final +class DeleteLocationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_ID_FIELD_NUMBER: _builtins.int + location_id: _builtins.str 'Location ID of location to delete.' - def __init__(self, *, location_id: builtins.str=...) -> None: + def __init__(self, *, location_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteLocationRequest = DeleteLocationRequest +Global___DeleteLocationRequest: _TypeAlias = DeleteLocationRequest -@typing.final -class DeleteLocationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteLocationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteLocationResponse = DeleteLocationResponse +Global___DeleteLocationResponse: _TypeAlias = DeleteLocationResponse -@typing.final -class GetLocationMetadataRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_ID_FIELD_NUMBER: builtins.int - location_id: builtins.str +@_typing.final +class GetLocationMetadataRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_ID_FIELD_NUMBER: _builtins.int + location_id: _builtins.str - def __init__(self, *, location_id: builtins.str=...) -> None: + def __init__(self, *, location_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetLocationMetadataRequest = GetLocationMetadataRequest +Global___GetLocationMetadataRequest: _TypeAlias = GetLocationMetadataRequest -@typing.final -class GetLocationMetadataResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int +@_typing.final +class GetLocationMetadataResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int - @property - def data(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def data(self) -> _struct_pb2.Struct: ... - def __init__(self, *, data: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, data: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def HasField(self, field_name: typing.Literal['data', b'data']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetLocationMetadataResponse = GetLocationMetadataResponse +Global___GetLocationMetadataResponse: _TypeAlias = GetLocationMetadataResponse -@typing.final -class UpdateLocationMetadataRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_ID_FIELD_NUMBER: builtins.int - DATA_FIELD_NUMBER: builtins.int - location_id: builtins.str +@_typing.final +class UpdateLocationMetadataRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_ID_FIELD_NUMBER: _builtins.int + DATA_FIELD_NUMBER: _builtins.int + location_id: _builtins.str - @property - def data(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def data(self) -> _struct_pb2.Struct: ... - def __init__(self, *, location_id: builtins.str=..., data: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, location_id: _builtins.str=..., data: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def HasField(self, field_name: typing.Literal['data', b'data']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data', 'location_id', b'location_id'] - def ClearField(self, field_name: typing.Literal['data', b'data', 'location_id', b'location_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateLocationMetadataRequest = UpdateLocationMetadataRequest +Global___UpdateLocationMetadataRequest: _TypeAlias = UpdateLocationMetadataRequest -@typing.final -class UpdateLocationMetadataResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class UpdateLocationMetadataResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___UpdateLocationMetadataResponse = UpdateLocationMetadataResponse +Global___UpdateLocationMetadataResponse: _TypeAlias = UpdateLocationMetadataResponse -@typing.final -class GetOrganizationsWithAccessToLocationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_ID_FIELD_NUMBER: builtins.int - location_id: builtins.str +@_typing.final +class GetOrganizationsWithAccessToLocationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_ID_FIELD_NUMBER: _builtins.int + location_id: _builtins.str - def __init__(self, *, location_id: builtins.str=...) -> None: + def __init__(self, *, location_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetOrganizationsWithAccessToLocationRequest = GetOrganizationsWithAccessToLocationRequest +Global___GetOrganizationsWithAccessToLocationRequest: _TypeAlias = GetOrganizationsWithAccessToLocationRequest -@typing.final -class GetOrganizationsWithAccessToLocationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_IDENTITIES_FIELD_NUMBER: builtins.int +@_typing.final +class GetOrganizationsWithAccessToLocationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_IDENTITIES_FIELD_NUMBER: _builtins.int - @property - def organization_identities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___OrganizationIdentity]: + @_builtins.property + def organization_identities(self) -> _containers.RepeatedCompositeFieldContainer[Global___OrganizationIdentity]: ... - def __init__(self, *, organization_identities: collections.abc.Iterable[global___OrganizationIdentity] | None=...) -> None: + def __init__(self, *, organization_identities: _abc.Iterable[Global___OrganizationIdentity] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_identities', b'organization_identities'] - def ClearField(self, field_name: typing.Literal['organization_identities', b'organization_identities']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetOrganizationsWithAccessToLocationResponse = GetOrganizationsWithAccessToLocationResponse +Global___GetOrganizationsWithAccessToLocationResponse: _TypeAlias = GetOrganizationsWithAccessToLocationResponse -@typing.final -class ListLocationsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - organization_id: builtins.str +@_typing.final +class ListLocationsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str 'Organization ID under which to list all locations.' - def __init__(self, *, organization_id: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListLocationsRequest = ListLocationsRequest +Global___ListLocationsRequest: _TypeAlias = ListLocationsRequest -@typing.final -class ShareLocationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_ID_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - location_id: builtins.str +@_typing.final +class ShareLocationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_ID_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + location_id: _builtins.str 'Location ID to be shared.' - organization_id: builtins.str + organization_id: _builtins.str 'Organization ID to share the location with.' - def __init__(self, *, location_id: builtins.str=..., organization_id: builtins.str=...) -> None: + def __init__(self, *, location_id: _builtins.str=..., organization_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ShareLocationRequest = ShareLocationRequest +Global___ShareLocationRequest: _TypeAlias = ShareLocationRequest -@typing.final -class ShareLocationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ShareLocationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ShareLocationResponse = ShareLocationResponse +Global___ShareLocationResponse: _TypeAlias = ShareLocationResponse -@typing.final -class UnshareLocationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_ID_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - location_id: builtins.str +@_typing.final +class UnshareLocationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_ID_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + location_id: _builtins.str 'Location ID to be unshared.' - organization_id: builtins.str + organization_id: _builtins.str 'Organization ID to unshare the location with.' - def __init__(self, *, location_id: builtins.str=..., organization_id: builtins.str=...) -> None: + def __init__(self, *, location_id: _builtins.str=..., organization_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UnshareLocationRequest = UnshareLocationRequest +Global___UnshareLocationRequest: _TypeAlias = UnshareLocationRequest -@typing.final -class UnshareLocationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class UnshareLocationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___UnshareLocationResponse = UnshareLocationResponse +Global___UnshareLocationResponse: _TypeAlias = UnshareLocationResponse -@typing.final -class ListLocationsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATIONS_FIELD_NUMBER: builtins.int +@_typing.final +class ListLocationsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATIONS_FIELD_NUMBER: _builtins.int - @property - def locations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Location]: + @_builtins.property + def locations(self) -> _containers.RepeatedCompositeFieldContainer[Global___Location]: ... - def __init__(self, *, locations: collections.abc.Iterable[global___Location] | None=...) -> None: + def __init__(self, *, locations: _abc.Iterable[Global___Location] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['locations', b'locations'] - def ClearField(self, field_name: typing.Literal['locations', b'locations']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListLocationsResponse = ListLocationsResponse +Global___ListLocationsResponse: _TypeAlias = ListLocationsResponse -@typing.final -class CreateLocationSecretRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_ID_FIELD_NUMBER: builtins.int - location_id: builtins.str +@_typing.final +class CreateLocationSecretRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_ID_FIELD_NUMBER: _builtins.int + location_id: _builtins.str 'Location ID to create the secret in.' - def __init__(self, *, location_id: builtins.str=...) -> None: + def __init__(self, *, location_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateLocationSecretRequest = CreateLocationSecretRequest +Global___CreateLocationSecretRequest: _TypeAlias = CreateLocationSecretRequest -@typing.final -class CreateLocationSecretResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - AUTH_FIELD_NUMBER: builtins.int +@_typing.final +class CreateLocationSecretResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + AUTH_FIELD_NUMBER: _builtins.int - @property - def auth(self) -> global___LocationAuth: + @_builtins.property + def auth(self) -> Global___LocationAuth: """Location's auth after updates.""" - def __init__(self, *, auth: global___LocationAuth | None=...) -> None: + def __init__(self, *, auth: Global___LocationAuth | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['auth', b'auth'] - def HasField(self, field_name: typing.Literal['auth', b'auth']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['auth', b'auth'] - def ClearField(self, field_name: typing.Literal['auth', b'auth']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateLocationSecretResponse = CreateLocationSecretResponse +Global___CreateLocationSecretResponse: _TypeAlias = CreateLocationSecretResponse -@typing.final -class DeleteLocationSecretRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_ID_FIELD_NUMBER: builtins.int - SECRET_ID_FIELD_NUMBER: builtins.int - location_id: builtins.str - secret_id: builtins.str +@_typing.final +class DeleteLocationSecretRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_ID_FIELD_NUMBER: _builtins.int + SECRET_ID_FIELD_NUMBER: _builtins.int + location_id: _builtins.str + secret_id: _builtins.str - def __init__(self, *, location_id: builtins.str=..., secret_id: builtins.str=...) -> None: + def __init__(self, *, location_id: _builtins.str=..., secret_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id', 'secret_id', b'secret_id'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id', 'secret_id', b'secret_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteLocationSecretRequest = DeleteLocationSecretRequest +Global___DeleteLocationSecretRequest: _TypeAlias = DeleteLocationSecretRequest -@typing.final -class DeleteLocationSecretResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteLocationSecretResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteLocationSecretResponse = DeleteLocationSecretResponse +Global___DeleteLocationSecretResponse: _TypeAlias = DeleteLocationSecretResponse -@typing.final -class LocationAuthRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_ID_FIELD_NUMBER: builtins.int - location_id: builtins.str +@_typing.final +class LocationAuthRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_ID_FIELD_NUMBER: _builtins.int + location_id: _builtins.str - def __init__(self, *, location_id: builtins.str=...) -> None: + def __init__(self, *, location_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___LocationAuthRequest = LocationAuthRequest +Global___LocationAuthRequest: _TypeAlias = LocationAuthRequest -@typing.final -class LocationAuthResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - AUTH_FIELD_NUMBER: builtins.int +@_typing.final +class LocationAuthResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + AUTH_FIELD_NUMBER: _builtins.int - @property - def auth(self) -> global___LocationAuth: + @_builtins.property + def auth(self) -> Global___LocationAuth: ... - def __init__(self, *, auth: global___LocationAuth | None=...) -> None: + def __init__(self, *, auth: Global___LocationAuth | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['auth', b'auth'] - def HasField(self, field_name: typing.Literal['auth', b'auth']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['auth', b'auth'] - def ClearField(self, field_name: typing.Literal['auth', b'auth']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___LocationAuthResponse = LocationAuthResponse +Global___LocationAuthResponse: _TypeAlias = LocationAuthResponse -@typing.final -class GetRobotRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class GetRobotRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotRequest = GetRobotRequest +Global___GetRobotRequest: _TypeAlias = GetRobotRequest -@typing.final -class GetRoverRentalRobotsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class GetRoverRentalRobotsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str - def __init__(self, *, org_id: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRoverRentalRobotsRequest = GetRoverRentalRobotsRequest +Global___GetRoverRentalRobotsRequest: _TypeAlias = GetRoverRentalRobotsRequest -@typing.final -class RoverRentalRobot(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ROBOT_ID_FIELD_NUMBER: builtins.int - LOCATION_ID_FIELD_NUMBER: builtins.int - ROBOT_NAME_FIELD_NUMBER: builtins.int - ROBOT_MAIN_PART_ID_FIELD_NUMBER: builtins.int - robot_id: builtins.str - location_id: builtins.str - robot_name: builtins.str - robot_main_part_id: builtins.str +@_typing.final +class RoverRentalRobot(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ROBOT_ID_FIELD_NUMBER: _builtins.int + LOCATION_ID_FIELD_NUMBER: _builtins.int + ROBOT_NAME_FIELD_NUMBER: _builtins.int + ROBOT_MAIN_PART_ID_FIELD_NUMBER: _builtins.int + robot_id: _builtins.str + location_id: _builtins.str + robot_name: _builtins.str + robot_main_part_id: _builtins.str - def __init__(self, *, robot_id: builtins.str=..., location_id: builtins.str=..., robot_name: builtins.str=..., robot_main_part_id: builtins.str=...) -> None: + def __init__(self, *, robot_id: _builtins.str=..., location_id: _builtins.str=..., robot_name: _builtins.str=..., robot_main_part_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id', 'robot_id', b'robot_id', 'robot_main_part_id', b'robot_main_part_id', 'robot_name', b'robot_name'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id', 'robot_id', b'robot_id', 'robot_main_part_id', b'robot_main_part_id', 'robot_name', b'robot_name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RoverRentalRobot = RoverRentalRobot +Global___RoverRentalRobot: _TypeAlias = RoverRentalRobot -@typing.final -class GetRoverRentalRobotsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ROBOTS_FIELD_NUMBER: builtins.int +@_typing.final +class GetRoverRentalRobotsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ROBOTS_FIELD_NUMBER: _builtins.int - @property - def robots(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RoverRentalRobot]: + @_builtins.property + def robots(self) -> _containers.RepeatedCompositeFieldContainer[Global___RoverRentalRobot]: ... - def __init__(self, *, robots: collections.abc.Iterable[global___RoverRentalRobot] | None=...) -> None: + def __init__(self, *, robots: _abc.Iterable[Global___RoverRentalRobot] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['robots', b'robots'] - def ClearField(self, field_name: typing.Literal['robots', b'robots']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRoverRentalRobotsResponse = GetRoverRentalRobotsResponse +Global___GetRoverRentalRobotsResponse: _TypeAlias = GetRoverRentalRobotsResponse -@typing.final -class GetRobotResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ROBOT_FIELD_NUMBER: builtins.int +@_typing.final +class GetRobotResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ROBOT_FIELD_NUMBER: _builtins.int - @property - def robot(self) -> global___Robot: + @_builtins.property + def robot(self) -> Global___Robot: ... - def __init__(self, *, robot: global___Robot | None=...) -> None: + def __init__(self, *, robot: Global___Robot | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['robot', b'robot'] - def HasField(self, field_name: typing.Literal['robot', b'robot']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['robot', b'robot'] - def ClearField(self, field_name: typing.Literal['robot', b'robot']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotResponse = GetRobotResponse +Global___GetRobotResponse: _TypeAlias = GetRobotResponse -@typing.final -class GetRobotPartsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ROBOT_ID_FIELD_NUMBER: builtins.int - robot_id: builtins.str +@_typing.final +class GetRobotPartsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ROBOT_ID_FIELD_NUMBER: _builtins.int + robot_id: _builtins.str - def __init__(self, *, robot_id: builtins.str=...) -> None: + def __init__(self, *, robot_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['robot_id', b'robot_id'] - def ClearField(self, field_name: typing.Literal['robot_id', b'robot_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotPartsRequest = GetRobotPartsRequest +Global___GetRobotPartsRequest: _TypeAlias = GetRobotPartsRequest -@typing.final -class GetRobotPartsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARTS_FIELD_NUMBER: builtins.int +@_typing.final +class GetRobotPartsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PARTS_FIELD_NUMBER: _builtins.int - @property - def parts(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RobotPart]: + @_builtins.property + def parts(self) -> _containers.RepeatedCompositeFieldContainer[Global___RobotPart]: ... - def __init__(self, *, parts: collections.abc.Iterable[global___RobotPart] | None=...) -> None: + def __init__(self, *, parts: _abc.Iterable[Global___RobotPart] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['parts', b'parts'] - def ClearField(self, field_name: typing.Literal['parts', b'parts']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotPartsResponse = GetRobotPartsResponse +Global___GetRobotPartsResponse: _TypeAlias = GetRobotPartsResponse -@typing.final -class GetRobotPartRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class GetRobotPartRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotPartRequest = GetRobotPartRequest +Global___GetRobotPartRequest: _TypeAlias = GetRobotPartRequest -@typing.final -class GetRobotPartResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PART_FIELD_NUMBER: builtins.int - CONFIG_JSON_FIELD_NUMBER: builtins.int - config_json: builtins.str +@_typing.final +class GetRobotPartResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PART_FIELD_NUMBER: _builtins.int + CONFIG_JSON_FIELD_NUMBER: _builtins.int + config_json: _builtins.str - @property - def part(self) -> global___RobotPart: + @_builtins.property + def part(self) -> Global___RobotPart: ... - def __init__(self, *, part: global___RobotPart | None=..., config_json: builtins.str=...) -> None: + def __init__(self, *, part: Global___RobotPart | None=..., config_json: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['part', b'part'] - def HasField(self, field_name: typing.Literal['part', b'part']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['config_json', b'config_json', 'part', b'part'] - def ClearField(self, field_name: typing.Literal['config_json', b'config_json', 'part', b'part']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotPartResponse = GetRobotPartResponse +Global___GetRobotPartResponse: _TypeAlias = GetRobotPartResponse -@typing.final -class GetRobotPartByNameAndLocationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - LOCATION_ID_FIELD_NUMBER: builtins.int - name: builtins.str - location_id: builtins.str +@_typing.final +class GetRobotPartByNameAndLocationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + LOCATION_ID_FIELD_NUMBER: _builtins.int + name: _builtins.str + location_id: _builtins.str - def __init__(self, *, name: builtins.str=..., location_id: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=..., location_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotPartByNameAndLocationRequest = GetRobotPartByNameAndLocationRequest +Global___GetRobotPartByNameAndLocationRequest: _TypeAlias = GetRobotPartByNameAndLocationRequest -@typing.final -class GetRobotPartByNameAndLocationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PART_FIELD_NUMBER: builtins.int +@_typing.final +class GetRobotPartByNameAndLocationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PART_FIELD_NUMBER: _builtins.int - @property - def part(self) -> global___RobotPart: + @_builtins.property + def part(self) -> Global___RobotPart: ... - def __init__(self, *, part: global___RobotPart | None=...) -> None: + def __init__(self, *, part: Global___RobotPart | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['part', b'part'] - def HasField(self, field_name: typing.Literal['part', b'part']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['part', b'part'] - def ClearField(self, field_name: typing.Literal['part', b'part']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotPartByNameAndLocationResponse = GetRobotPartByNameAndLocationResponse +Global___GetRobotPartByNameAndLocationResponse: _TypeAlias = GetRobotPartByNameAndLocationResponse -@typing.final -class GetRobotPartLogsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - ERRORS_ONLY_FIELD_NUMBER: builtins.int - FILTER_FIELD_NUMBER: builtins.int - PAGE_TOKEN_FIELD_NUMBER: builtins.int - LEVELS_FIELD_NUMBER: builtins.int - START_FIELD_NUMBER: builtins.int - END_FIELD_NUMBER: builtins.int - LIMIT_FIELD_NUMBER: builtins.int - SOURCE_FIELD_NUMBER: builtins.int - USER_FACING_ONLY_FIELD_NUMBER: builtins.int - id: builtins.str - errors_only: builtins.bool - 'TODO(https://viam.atlassian.net/browse/APP-3877): Remove this field' - filter: builtins.str - page_token: builtins.str - limit: builtins.int - source: builtins.str - user_facing_only: builtins.bool +@_typing.final +class GetRobotPartLogsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + ERRORS_ONLY_FIELD_NUMBER: _builtins.int + FILTER_FIELD_NUMBER: _builtins.int + PAGE_TOKEN_FIELD_NUMBER: _builtins.int + LEVELS_FIELD_NUMBER: _builtins.int + START_FIELD_NUMBER: _builtins.int + END_FIELD_NUMBER: _builtins.int + LIMIT_FIELD_NUMBER: _builtins.int + SOURCE_FIELD_NUMBER: _builtins.int + USER_FACING_ONLY_FIELD_NUMBER: _builtins.int + id: _builtins.str - @property - def levels(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def errors_only(self) -> _builtins.bool: + """TODO(https://viam.atlassian.net/browse/APP-3877): Remove this field""" + + @errors_only.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def errors_only(self, value: _builtins.bool) -> None: + """TODO(https://viam.atlassian.net/browse/APP-3877): Remove this field""" + filter: _builtins.str + page_token: _builtins.str + limit: _builtins.int + source: _builtins.str + user_facing_only: _builtins.bool + + @_builtins.property + def levels(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """logs of all levels are returned when the levels field is empty""" - @property - def start(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def start(self) -> _timestamp_pb2.Timestamp: ... - @property - def end(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def end(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, id: builtins.str=..., errors_only: builtins.bool=..., filter: builtins.str | None=..., page_token: builtins.str | None=..., levels: collections.abc.Iterable[builtins.str] | None=..., start: google.protobuf.timestamp_pb2.Timestamp | None=..., end: google.protobuf.timestamp_pb2.Timestamp | None=..., limit: builtins.int | None=..., source: builtins.str | None=..., user_facing_only: builtins.bool | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., errors_only: _builtins.bool=..., filter: _builtins.str | None=..., page_token: _builtins.str | None=..., levels: _abc.Iterable[_builtins.str] | None=..., start: _timestamp_pb2.Timestamp | None=..., end: _timestamp_pb2.Timestamp | None=..., limit: _builtins.int | None=..., source: _builtins.str | None=..., user_facing_only: _builtins.bool | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_end', b'_end', '_filter', b'_filter', '_limit', b'_limit', '_page_token', b'_page_token', '_source', b'_source', '_start', b'_start', '_user_facing_only', b'_user_facing_only', 'end', b'end', 'filter', b'filter', 'limit', b'limit', 'page_token', b'page_token', 'source', b'source', 'start', b'start', 'user_facing_only', b'user_facing_only'] - def HasField(self, field_name: typing.Literal['_end', b'_end', '_filter', b'_filter', '_limit', b'_limit', '_page_token', b'_page_token', '_source', b'_source', '_start', b'_start', '_user_facing_only', b'_user_facing_only', 'end', b'end', 'filter', b'filter', 'limit', b'limit', 'page_token', b'page_token', 'source', b'source', 'start', b'start', 'user_facing_only', b'user_facing_only']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_end', b'_end', '_filter', b'_filter', '_limit', b'_limit', '_page_token', b'_page_token', '_source', b'_source', '_start', b'_start', '_user_facing_only', b'_user_facing_only', 'end', b'end', 'errors_only', b'errors_only', 'filter', b'filter', 'id', b'id', 'levels', b'levels', 'limit', b'limit', 'page_token', b'page_token', 'source', b'source', 'start', b'start', 'user_facing_only', b'user_facing_only'] - def ClearField(self, field_name: typing.Literal['_end', b'_end', '_filter', b'_filter', '_limit', b'_limit', '_page_token', b'_page_token', '_source', b'_source', '_start', b'_start', '_user_facing_only', b'_user_facing_only', 'end', b'end', 'errors_only', b'errors_only', 'filter', b'filter', 'id', b'id', 'levels', b'levels', 'limit', b'limit', 'page_token', b'page_token', 'source', b'source', 'start', b'start', 'user_facing_only', b'user_facing_only']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__end: _TypeAlias = _typing.Literal['end'] + _WhichOneofArgType__end: _TypeAlias = _typing.Literal['_end', b'_end'] + _WhichOneofReturnType__filter: _TypeAlias = _typing.Literal['filter'] + _WhichOneofArgType__filter: _TypeAlias = _typing.Literal['_filter', b'_filter'] + _WhichOneofReturnType__limit: _TypeAlias = _typing.Literal['limit'] + _WhichOneofArgType__limit: _TypeAlias = _typing.Literal['_limit', b'_limit'] + _WhichOneofReturnType__page_token: _TypeAlias = _typing.Literal['page_token'] + _WhichOneofArgType__page_token: _TypeAlias = _typing.Literal['_page_token', b'_page_token'] + _WhichOneofReturnType__source: _TypeAlias = _typing.Literal['source'] + _WhichOneofArgType__source: _TypeAlias = _typing.Literal['_source', b'_source'] + _WhichOneofReturnType__start: _TypeAlias = _typing.Literal['start'] + _WhichOneofArgType__start: _TypeAlias = _typing.Literal['_start', b'_start'] + _WhichOneofReturnType__user_facing_only: _TypeAlias = _typing.Literal['user_facing_only'] + _WhichOneofArgType__user_facing_only: _TypeAlias = _typing.Literal['_user_facing_only', b'_user_facing_only'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_end', b'_end']) -> typing.Literal['end'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__end) -> _WhichOneofReturnType__end | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_filter', b'_filter']) -> typing.Literal['filter'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__filter) -> _WhichOneofReturnType__filter | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_limit', b'_limit']) -> typing.Literal['limit'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__limit) -> _WhichOneofReturnType__limit | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_page_token', b'_page_token']) -> typing.Literal['page_token'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__page_token) -> _WhichOneofReturnType__page_token | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_source', b'_source']) -> typing.Literal['source'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__source) -> _WhichOneofReturnType__source | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_start', b'_start']) -> typing.Literal['start'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__start) -> _WhichOneofReturnType__start | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_user_facing_only', b'_user_facing_only']) -> typing.Literal['user_facing_only'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__user_facing_only) -> _WhichOneofReturnType__user_facing_only | None: ... -global___GetRobotPartLogsRequest = GetRobotPartLogsRequest +Global___GetRobotPartLogsRequest: _TypeAlias = GetRobotPartLogsRequest -@typing.final -class GetRobotPartLogsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOGS_FIELD_NUMBER: builtins.int - NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int - next_page_token: builtins.str +@_typing.final +class GetRobotPartLogsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOGS_FIELD_NUMBER: _builtins.int + NEXT_PAGE_TOKEN_FIELD_NUMBER: _builtins.int + next_page_token: _builtins.str - @property - def logs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.LogEntry]: + @_builtins.property + def logs(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.LogEntry]: ... - def __init__(self, *, logs: collections.abc.Iterable[common.v1.common_pb2.LogEntry] | None=..., next_page_token: builtins.str=...) -> None: + def __init__(self, *, logs: _abc.Iterable[_common_pb2.LogEntry] | None=..., next_page_token: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['logs', b'logs', 'next_page_token', b'next_page_token'] - def ClearField(self, field_name: typing.Literal['logs', b'logs', 'next_page_token', b'next_page_token']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotPartLogsResponse = GetRobotPartLogsResponse +Global___GetRobotPartLogsResponse: _TypeAlias = GetRobotPartLogsResponse -@typing.final -class TailRobotPartLogsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - ERRORS_ONLY_FIELD_NUMBER: builtins.int - FILTER_FIELD_NUMBER: builtins.int - id: builtins.str - errors_only: builtins.bool - filter: builtins.str +@_typing.final +class TailRobotPartLogsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + ERRORS_ONLY_FIELD_NUMBER: _builtins.int + FILTER_FIELD_NUMBER: _builtins.int + id: _builtins.str + errors_only: _builtins.bool + filter: _builtins.str - def __init__(self, *, id: builtins.str=..., errors_only: builtins.bool=..., filter: builtins.str | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., errors_only: _builtins.bool=..., filter: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_filter', b'_filter', 'filter', b'filter'] - def HasField(self, field_name: typing.Literal['_filter', b'_filter', 'filter', b'filter']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_filter', b'_filter', 'errors_only', b'errors_only', 'filter', b'filter', 'id', b'id'] - def ClearField(self, field_name: typing.Literal['_filter', b'_filter', 'errors_only', b'errors_only', 'filter', b'filter', 'id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__filter: _TypeAlias = _typing.Literal['filter'] + _WhichOneofArgType__filter: _TypeAlias = _typing.Literal['_filter', b'_filter'] - def WhichOneof(self, oneof_group: typing.Literal['_filter', b'_filter']) -> typing.Literal['filter'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__filter) -> _WhichOneofReturnType__filter | None: ... -global___TailRobotPartLogsRequest = TailRobotPartLogsRequest +Global___TailRobotPartLogsRequest: _TypeAlias = TailRobotPartLogsRequest -@typing.final -class TailRobotPartLogsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOGS_FIELD_NUMBER: builtins.int +@_typing.final +class TailRobotPartLogsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOGS_FIELD_NUMBER: _builtins.int - @property - def logs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.LogEntry]: + @_builtins.property + def logs(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.LogEntry]: ... - def __init__(self, *, logs: collections.abc.Iterable[common.v1.common_pb2.LogEntry] | None=...) -> None: + def __init__(self, *, logs: _abc.Iterable[_common_pb2.LogEntry] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['logs', b'logs'] - def ClearField(self, field_name: typing.Literal['logs', b'logs']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TailRobotPartLogsResponse = TailRobotPartLogsResponse +Global___TailRobotPartLogsResponse: _TypeAlias = TailRobotPartLogsResponse -@typing.final -class GetRobotPartHistoryRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class GetRobotPartHistoryRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotPartHistoryRequest = GetRobotPartHistoryRequest +Global___GetRobotPartHistoryRequest: _TypeAlias = GetRobotPartHistoryRequest -@typing.final -class GetRobotPartHistoryResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - HISTORY_FIELD_NUMBER: builtins.int +@_typing.final +class GetRobotPartHistoryResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + HISTORY_FIELD_NUMBER: _builtins.int - @property - def history(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RobotPartHistoryEntry]: + @_builtins.property + def history(self) -> _containers.RepeatedCompositeFieldContainer[Global___RobotPartHistoryEntry]: ... - def __init__(self, *, history: collections.abc.Iterable[global___RobotPartHistoryEntry] | None=...) -> None: + def __init__(self, *, history: _abc.Iterable[Global___RobotPartHistoryEntry] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['history', b'history'] - def ClearField(self, field_name: typing.Literal['history', b'history']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotPartHistoryResponse = GetRobotPartHistoryResponse +Global___GetRobotPartHistoryResponse: _TypeAlias = GetRobotPartHistoryResponse -@typing.final -class UpdateRobotPartRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - ROBOT_CONFIG_FIELD_NUMBER: builtins.int - LAST_KNOWN_UPDATE_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str +@_typing.final +class UpdateRobotPartRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + ROBOT_CONFIG_FIELD_NUMBER: _builtins.int + LAST_KNOWN_UPDATE_FIELD_NUMBER: _builtins.int + id: _builtins.str + name: _builtins.str - @property - def robot_config(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def robot_config(self) -> _struct_pb2.Struct: ... - @property - def last_known_update(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def last_known_update(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, id: builtins.str=..., name: builtins.str=..., robot_config: google.protobuf.struct_pb2.Struct | None=..., last_known_update: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=..., robot_config: _struct_pb2.Struct | None=..., last_known_update: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_last_known_update', b'_last_known_update', 'last_known_update', b'last_known_update', 'robot_config', b'robot_config'] - def HasField(self, field_name: typing.Literal['_last_known_update', b'_last_known_update', 'last_known_update', b'last_known_update', 'robot_config', b'robot_config']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_last_known_update', b'_last_known_update', 'id', b'id', 'last_known_update', b'last_known_update', 'name', b'name', 'robot_config', b'robot_config'] - def ClearField(self, field_name: typing.Literal['_last_known_update', b'_last_known_update', 'id', b'id', 'last_known_update', b'last_known_update', 'name', b'name', 'robot_config', b'robot_config']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__last_known_update: _TypeAlias = _typing.Literal['last_known_update'] + _WhichOneofArgType__last_known_update: _TypeAlias = _typing.Literal['_last_known_update', b'_last_known_update'] - def WhichOneof(self, oneof_group: typing.Literal['_last_known_update', b'_last_known_update']) -> typing.Literal['last_known_update'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__last_known_update) -> _WhichOneofReturnType__last_known_update | None: ... -global___UpdateRobotPartRequest = UpdateRobotPartRequest +Global___UpdateRobotPartRequest: _TypeAlias = UpdateRobotPartRequest -@typing.final -class UpdateRobotPartResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PART_FIELD_NUMBER: builtins.int +@_typing.final +class UpdateRobotPartResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PART_FIELD_NUMBER: _builtins.int - @property - def part(self) -> global___RobotPart: + @_builtins.property + def part(self) -> Global___RobotPart: ... - def __init__(self, *, part: global___RobotPart | None=...) -> None: + def __init__(self, *, part: Global___RobotPart | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['part', b'part'] - def HasField(self, field_name: typing.Literal['part', b'part']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['part', b'part'] - def ClearField(self, field_name: typing.Literal['part', b'part']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateRobotPartResponse = UpdateRobotPartResponse +Global___UpdateRobotPartResponse: _TypeAlias = UpdateRobotPartResponse -@typing.final -class NewRobotPartRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ROBOT_ID_FIELD_NUMBER: builtins.int - PART_NAME_FIELD_NUMBER: builtins.int - robot_id: builtins.str - part_name: builtins.str +@_typing.final +class NewRobotPartRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ROBOT_ID_FIELD_NUMBER: _builtins.int + PART_NAME_FIELD_NUMBER: _builtins.int + robot_id: _builtins.str + part_name: _builtins.str - def __init__(self, *, robot_id: builtins.str=..., part_name: builtins.str=...) -> None: + def __init__(self, *, robot_id: _builtins.str=..., part_name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['part_name', b'part_name', 'robot_id', b'robot_id'] - def ClearField(self, field_name: typing.Literal['part_name', b'part_name', 'robot_id', b'robot_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___NewRobotPartRequest = NewRobotPartRequest +Global___NewRobotPartRequest: _TypeAlias = NewRobotPartRequest -@typing.final -class NewRobotPartResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PART_ID_FIELD_NUMBER: builtins.int - part_id: builtins.str +@_typing.final +class NewRobotPartResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PART_ID_FIELD_NUMBER: _builtins.int + part_id: _builtins.str - def __init__(self, *, part_id: builtins.str=...) -> None: + def __init__(self, *, part_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['part_id', b'part_id'] - def ClearField(self, field_name: typing.Literal['part_id', b'part_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___NewRobotPartResponse = NewRobotPartResponse +Global___NewRobotPartResponse: _TypeAlias = NewRobotPartResponse -@typing.final -class DeleteRobotPartRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PART_ID_FIELD_NUMBER: builtins.int - part_id: builtins.str +@_typing.final +class DeleteRobotPartRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PART_ID_FIELD_NUMBER: _builtins.int + part_id: _builtins.str - def __init__(self, *, part_id: builtins.str=...) -> None: + def __init__(self, *, part_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['part_id', b'part_id'] - def ClearField(self, field_name: typing.Literal['part_id', b'part_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteRobotPartRequest = DeleteRobotPartRequest +Global___DeleteRobotPartRequest: _TypeAlias = DeleteRobotPartRequest -@typing.final -class GetRobotPartMetadataRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class GetRobotPartMetadataRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotPartMetadataRequest = GetRobotPartMetadataRequest +Global___GetRobotPartMetadataRequest: _TypeAlias = GetRobotPartMetadataRequest -@typing.final -class GetRobotPartMetadataResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int +@_typing.final +class GetRobotPartMetadataResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int - @property - def data(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def data(self) -> _struct_pb2.Struct: ... - def __init__(self, *, data: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, data: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def HasField(self, field_name: typing.Literal['data', b'data']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotPartMetadataResponse = GetRobotPartMetadataResponse +Global___GetRobotPartMetadataResponse: _TypeAlias = GetRobotPartMetadataResponse -@typing.final -class UpdateRobotPartMetadataRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - DATA_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class UpdateRobotPartMetadataRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + DATA_FIELD_NUMBER: _builtins.int + id: _builtins.str - @property - def data(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def data(self) -> _struct_pb2.Struct: ... - def __init__(self, *, id: builtins.str=..., data: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., data: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def HasField(self, field_name: typing.Literal['data', b'data']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data', 'id', b'id'] - def ClearField(self, field_name: typing.Literal['data', b'data', 'id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateRobotPartMetadataRequest = UpdateRobotPartMetadataRequest +Global___UpdateRobotPartMetadataRequest: _TypeAlias = UpdateRobotPartMetadataRequest -@typing.final -class UpdateRobotPartMetadataResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class UpdateRobotPartMetadataResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___UpdateRobotPartMetadataResponse = UpdateRobotPartMetadataResponse +Global___UpdateRobotPartMetadataResponse: _TypeAlias = UpdateRobotPartMetadataResponse -@typing.final -class GetRobotAPIKeysRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ROBOT_ID_FIELD_NUMBER: builtins.int - robot_id: builtins.str +@_typing.final +class GetRobotAPIKeysRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ROBOT_ID_FIELD_NUMBER: _builtins.int + robot_id: _builtins.str - def __init__(self, *, robot_id: builtins.str=...) -> None: + def __init__(self, *, robot_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['robot_id', b'robot_id'] - def ClearField(self, field_name: typing.Literal['robot_id', b'robot_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotAPIKeysRequest = GetRobotAPIKeysRequest +Global___GetRobotAPIKeysRequest: _TypeAlias = GetRobotAPIKeysRequest -@typing.final -class APIKey(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - KEY_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - CREATED_ON_FIELD_NUMBER: builtins.int - id: builtins.str - key: builtins.str - name: builtins.str +@_typing.final +class APIKey(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + KEY_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + CREATED_ON_FIELD_NUMBER: _builtins.int + id: _builtins.str + key: _builtins.str + name: _builtins.str - @property - def created_on(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def created_on(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, id: builtins.str=..., key: builtins.str=..., name: builtins.str=..., created_on: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., key: _builtins.str=..., name: _builtins.str=..., created_on: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on'] - def HasField(self, field_name: typing.Literal['created_on', b'created_on']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on', 'id', b'id', 'key', b'key', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['created_on', b'created_on', 'id', b'id', 'key', b'key', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___APIKey = APIKey +Global___APIKey: _TypeAlias = APIKey -@typing.final -class GetRobotAPIKeysResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - API_KEYS_FIELD_NUMBER: builtins.int +@_typing.final +class GetRobotAPIKeysResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + API_KEYS_FIELD_NUMBER: _builtins.int - @property - def api_keys(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___APIKeyWithAuthorizations]: + @_builtins.property + def api_keys(self) -> _containers.RepeatedCompositeFieldContainer[Global___APIKeyWithAuthorizations]: ... - def __init__(self, *, api_keys: collections.abc.Iterable[global___APIKeyWithAuthorizations] | None=...) -> None: + def __init__(self, *, api_keys: _abc.Iterable[Global___APIKeyWithAuthorizations] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['api_keys', b'api_keys'] - def ClearField(self, field_name: typing.Literal['api_keys', b'api_keys']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotAPIKeysResponse = GetRobotAPIKeysResponse +Global___GetRobotAPIKeysResponse: _TypeAlias = GetRobotAPIKeysResponse -@typing.final -class DeleteRobotPartResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteRobotPartResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteRobotPartResponse = DeleteRobotPartResponse - -@typing.final -class Fragment(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - FRAGMENT_FIELD_NUMBER: builtins.int - ORGANIZATION_OWNER_FIELD_NUMBER: builtins.int - PUBLIC_FIELD_NUMBER: builtins.int - CREATED_ON_FIELD_NUMBER: builtins.int - ORGANIZATION_NAME_FIELD_NUMBER: builtins.int - ROBOT_PART_COUNT_FIELD_NUMBER: builtins.int - ORGANIZATION_COUNT_FIELD_NUMBER: builtins.int - ONLY_USED_BY_OWNER_FIELD_NUMBER: builtins.int - VISIBILITY_FIELD_NUMBER: builtins.int - LAST_UPDATED_FIELD_NUMBER: builtins.int - REVISION_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str - organization_owner: builtins.str - public: builtins.bool - organization_name: builtins.str - robot_part_count: builtins.int +Global___DeleteRobotPartResponse: _TypeAlias = DeleteRobotPartResponse + +@_typing.final +class Fragment(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + FRAGMENT_FIELD_NUMBER: _builtins.int + ORGANIZATION_OWNER_FIELD_NUMBER: _builtins.int + PUBLIC_FIELD_NUMBER: _builtins.int + CREATED_ON_FIELD_NUMBER: _builtins.int + ORGANIZATION_NAME_FIELD_NUMBER: _builtins.int + ROBOT_PART_COUNT_FIELD_NUMBER: _builtins.int + ORGANIZATION_COUNT_FIELD_NUMBER: _builtins.int + ONLY_USED_BY_OWNER_FIELD_NUMBER: _builtins.int + VISIBILITY_FIELD_NUMBER: _builtins.int + LAST_UPDATED_FIELD_NUMBER: _builtins.int + REVISION_FIELD_NUMBER: _builtins.int + id: _builtins.str + name: _builtins.str + organization_owner: _builtins.str + public: _builtins.bool + organization_name: _builtins.str + robot_part_count: _builtins.int 'number of robot parts using this fragment' - organization_count: builtins.int + organization_count: _builtins.int 'number of organizations using this fragment' - only_used_by_owner: builtins.bool + only_used_by_owner: _builtins.bool 'whether the organization(s) using this fragment is the same as the fragment org' - visibility: global___FragmentVisibility.ValueType + visibility: Global___FragmentVisibility.ValueType 'the visibility of a fragment; public, private or unlisted' - revision: builtins.str + revision: _builtins.str - @property - def fragment(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def fragment(self) -> _struct_pb2.Struct: ... - @property - def created_on(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def created_on(self) -> _timestamp_pb2.Timestamp: ... - @property - def last_updated(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def last_updated(self) -> _timestamp_pb2.Timestamp: """latest timestamp when fragment was updated""" - def __init__(self, *, id: builtins.str=..., name: builtins.str=..., fragment: google.protobuf.struct_pb2.Struct | None=..., organization_owner: builtins.str=..., public: builtins.bool=..., created_on: google.protobuf.timestamp_pb2.Timestamp | None=..., organization_name: builtins.str=..., robot_part_count: builtins.int=..., organization_count: builtins.int=..., only_used_by_owner: builtins.bool=..., visibility: global___FragmentVisibility.ValueType=..., last_updated: google.protobuf.timestamp_pb2.Timestamp | None=..., revision: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=..., fragment: _struct_pb2.Struct | None=..., organization_owner: _builtins.str=..., public: _builtins.bool=..., created_on: _timestamp_pb2.Timestamp | None=..., organization_name: _builtins.str=..., robot_part_count: _builtins.int=..., organization_count: _builtins.int=..., only_used_by_owner: _builtins.bool=..., visibility: Global___FragmentVisibility.ValueType=..., last_updated: _timestamp_pb2.Timestamp | None=..., revision: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on', 'fragment', b'fragment', 'last_updated', b'last_updated'] - def HasField(self, field_name: typing.Literal['created_on', b'created_on', 'fragment', b'fragment', 'last_updated', b'last_updated']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on', 'fragment', b'fragment', 'id', b'id', 'last_updated', b'last_updated', 'name', b'name', 'only_used_by_owner', b'only_used_by_owner', 'organization_count', b'organization_count', 'organization_name', b'organization_name', 'organization_owner', b'organization_owner', 'public', b'public', 'revision', b'revision', 'robot_part_count', b'robot_part_count', 'visibility', b'visibility'] - def ClearField(self, field_name: typing.Literal['created_on', b'created_on', 'fragment', b'fragment', 'id', b'id', 'last_updated', b'last_updated', 'name', b'name', 'only_used_by_owner', b'only_used_by_owner', 'organization_count', b'organization_count', 'organization_name', b'organization_name', 'organization_owner', b'organization_owner', 'public', b'public', 'revision', b'revision', 'robot_part_count', b'robot_part_count', 'visibility', b'visibility']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Fragment = Fragment +Global___Fragment: _TypeAlias = Fragment -@typing.final -class FragmentHistoryEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENT_FIELD_NUMBER: builtins.int - EDITED_ON_FIELD_NUMBER: builtins.int - OLD_FIELD_NUMBER: builtins.int - EDITED_BY_FIELD_NUMBER: builtins.int - REVISION_FIELD_NUMBER: builtins.int - CONFIG_FIELD_NUMBER: builtins.int - fragment: builtins.str - revision: builtins.str +@_typing.final +class FragmentHistoryEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAGMENT_FIELD_NUMBER: _builtins.int + EDITED_ON_FIELD_NUMBER: _builtins.int + OLD_FIELD_NUMBER: _builtins.int + EDITED_BY_FIELD_NUMBER: _builtins.int + REVISION_FIELD_NUMBER: _builtins.int + CONFIG_FIELD_NUMBER: _builtins.int + fragment: _builtins.str + revision: _builtins.str - @property - def edited_on(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def edited_on(self) -> _timestamp_pb2.Timestamp: ... - @property - def old(self) -> global___Fragment: + @_builtins.property + def old(self) -> Global___Fragment: ... - @property - def edited_by(self) -> global___AuthenticatorInfo: + @_builtins.property + def edited_by(self) -> Global___AuthenticatorInfo: ... - @property - def config(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def config(self) -> _struct_pb2.Struct: ... - def __init__(self, *, fragment: builtins.str=..., edited_on: google.protobuf.timestamp_pb2.Timestamp | None=..., old: global___Fragment | None=..., edited_by: global___AuthenticatorInfo | None=..., revision: builtins.str=..., config: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, fragment: _builtins.str=..., edited_on: _timestamp_pb2.Timestamp | None=..., old: Global___Fragment | None=..., edited_by: Global___AuthenticatorInfo | None=..., revision: _builtins.str=..., config: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['config', b'config', 'edited_by', b'edited_by', 'edited_on', b'edited_on', 'old', b'old'] - def HasField(self, field_name: typing.Literal['config', b'config', 'edited_by', b'edited_by', 'edited_on', b'edited_on', 'old', b'old']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['config', b'config', 'edited_by', b'edited_by', 'edited_on', b'edited_on', 'fragment', b'fragment', 'old', b'old', 'revision', b'revision'] - def ClearField(self, field_name: typing.Literal['config', b'config', 'edited_by', b'edited_by', 'edited_on', b'edited_on', 'fragment', b'fragment', 'old', b'old', 'revision', b'revision']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FragmentHistoryEntry = FragmentHistoryEntry +Global___FragmentHistoryEntry: _TypeAlias = FragmentHistoryEntry -@typing.final -class FragmentRevision(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - REVISION_FIELD_NUMBER: builtins.int - CREATED_AT_FIELD_NUMBER: builtins.int - revision: builtins.str +@_typing.final +class FragmentRevision(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + REVISION_FIELD_NUMBER: _builtins.int + CREATED_AT_FIELD_NUMBER: _builtins.int + revision: _builtins.str - @property - def created_at(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def created_at(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, revision: builtins.str=..., created_at: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, revision: _builtins.str=..., created_at: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['created_at', b'created_at'] - def HasField(self, field_name: typing.Literal['created_at', b'created_at']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['created_at', b'created_at', 'revision', b'revision'] - def ClearField(self, field_name: typing.Literal['created_at', b'created_at', 'revision', b'revision']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FragmentRevision = FragmentRevision +Global___FragmentRevision: _TypeAlias = FragmentRevision -@typing.final -class FragmentTag(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TAG_FIELD_NUMBER: builtins.int - REVISION_FIELD_NUMBER: builtins.int - tag: builtins.str - revision: builtins.str +@_typing.final +class FragmentTag(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + TAG_FIELD_NUMBER: _builtins.int + REVISION_FIELD_NUMBER: _builtins.int + tag: _builtins.str + revision: _builtins.str - def __init__(self, *, tag: builtins.str=..., revision: builtins.str=...) -> None: + def __init__(self, *, tag: _builtins.str=..., revision: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['revision', b'revision', 'tag', b'tag'] - def ClearField(self, field_name: typing.Literal['revision', b'revision', 'tag', b'tag']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FragmentTag = FragmentTag +Global___FragmentTag: _TypeAlias = FragmentTag -@typing.final -class FragmentError(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ERROR_TYPE_FIELD_NUMBER: builtins.int - FRAGMENT_ID_FIELD_NUMBER: builtins.int - DETAIL_FIELD_NUMBER: builtins.int - error_type: global___FragmentErrorType.ValueType - fragment_id: builtins.str - detail: builtins.str +@_typing.final +class FragmentError(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ERROR_TYPE_FIELD_NUMBER: _builtins.int + FRAGMENT_ID_FIELD_NUMBER: _builtins.int + DETAIL_FIELD_NUMBER: _builtins.int + error_type: Global___FragmentErrorType.ValueType + fragment_id: _builtins.str + detail: _builtins.str - def __init__(self, *, error_type: global___FragmentErrorType.ValueType=..., fragment_id: builtins.str=..., detail: builtins.str=...) -> None: + def __init__(self, *, error_type: Global___FragmentErrorType.ValueType=..., fragment_id: _builtins.str=..., detail: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['detail', b'detail', 'error_type', b'error_type', 'fragment_id', b'fragment_id'] - def ClearField(self, field_name: typing.Literal['detail', b'detail', 'error_type', b'error_type', 'fragment_id', b'fragment_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FragmentError = FragmentError +Global___FragmentError: _TypeAlias = FragmentError -@typing.final -class FragmentUsage(google.protobuf.message.Message): +@_typing.final +class FragmentUsage(_message.Message): """Cached fragment usage statistics""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENT_ID_FIELD_NUMBER: builtins.int - ORGANIZATIONS_FIELD_NUMBER: builtins.int - MACHINES_FIELD_NUMBER: builtins.int - MACHINES_IN_CURRENT_ORG_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - fragment_id: builtins.str - organizations: builtins.int - machines: builtins.int - machines_in_current_org: builtins.int - version: builtins.str + DESCRIPTOR: _descriptor.Descriptor + FRAGMENT_ID_FIELD_NUMBER: _builtins.int + ORGANIZATIONS_FIELD_NUMBER: _builtins.int + MACHINES_FIELD_NUMBER: _builtins.int + MACHINES_IN_CURRENT_ORG_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + fragment_id: _builtins.str + organizations: _builtins.int + machines: _builtins.int + machines_in_current_org: _builtins.int + version: _builtins.str 'revision or tag' - def __init__(self, *, fragment_id: builtins.str=..., organizations: builtins.int=..., machines: builtins.int=..., machines_in_current_org: builtins.int=..., version: builtins.str | None=...) -> None: + def __init__(self, *, fragment_id: _builtins.str=..., organizations: _builtins.int=..., machines: _builtins.int=..., machines_in_current_org: _builtins.int=..., version: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_version', b'_version', 'version', b'version'] - def HasField(self, field_name: typing.Literal['_version', b'_version', 'version', b'version']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_version', b'_version', 'fragment_id', b'fragment_id', 'machines', b'machines', 'machines_in_current_org', b'machines_in_current_org', 'organizations', b'organizations', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['_version', b'_version', 'fragment_id', b'fragment_id', 'machines', b'machines', 'machines_in_current_org', b'machines_in_current_org', 'organizations', b'organizations', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__version: _TypeAlias = _typing.Literal['version'] + _WhichOneofArgType__version: _TypeAlias = _typing.Literal['_version', b'_version'] - def WhichOneof(self, oneof_group: typing.Literal['_version', b'_version']) -> typing.Literal['version'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__version) -> _WhichOneofReturnType__version | None: ... -global___FragmentUsage = FragmentUsage +Global___FragmentUsage: _TypeAlias = FragmentUsage -@typing.final -class FragmentImport(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class FragmentImport(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class VariablesEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str - value: builtins.str + @_typing.final + class VariablesEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str - def __init__(self, *, key: builtins.str=..., value: builtins.str=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - FRAGMENT_ID_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - PREFIX_FIELD_NUMBER: builtins.int - VARIABLES_FIELD_NUMBER: builtins.int - fragment_id: builtins.str - version: builtins.str + FRAGMENT_ID_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + PREFIX_FIELD_NUMBER: _builtins.int + VARIABLES_FIELD_NUMBER: _builtins.int + fragment_id: _builtins.str + version: _builtins.str 'revision or tag' - prefix: builtins.str + prefix: _builtins.str 'namespace prefix' - @property - def variables(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + @_builtins.property + def variables(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: """key-value pairs for fragment variables""" - def __init__(self, *, fragment_id: builtins.str=..., version: builtins.str=..., prefix: builtins.str | None=..., variables: collections.abc.Mapping[builtins.str, builtins.str] | None=...) -> None: + def __init__(self, *, fragment_id: _builtins.str=..., version: _builtins.str=..., prefix: _builtins.str | None=..., variables: _abc.Mapping[_builtins.str, _builtins.str] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_prefix', b'_prefix', 'prefix', b'prefix'] - def HasField(self, field_name: typing.Literal['_prefix', b'_prefix', 'prefix', b'prefix']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_prefix', b'_prefix', 'fragment_id', b'fragment_id', 'prefix', b'prefix', 'variables', b'variables', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['_prefix', b'_prefix', 'fragment_id', b'fragment_id', 'prefix', b'prefix', 'variables', b'variables', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__prefix: _TypeAlias = _typing.Literal['prefix'] + _WhichOneofArgType__prefix: _TypeAlias = _typing.Literal['_prefix', b'_prefix'] - def WhichOneof(self, oneof_group: typing.Literal['_prefix', b'_prefix']) -> typing.Literal['prefix'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__prefix) -> _WhichOneofReturnType__prefix | None: ... -global___FragmentImport = FragmentImport +Global___FragmentImport: _TypeAlias = FragmentImport -@typing.final -class ResolvedFragment(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENT_ID_FIELD_NUMBER: builtins.int - RESOLVED_CONFIG_FIELD_NUMBER: builtins.int - ERROR_FIELD_NUMBER: builtins.int - REVISION_FIELD_NUMBER: builtins.int - fragment_id: builtins.str - revision: builtins.str +@_typing.final +class ResolvedFragment(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAGMENT_ID_FIELD_NUMBER: _builtins.int + RESOLVED_CONFIG_FIELD_NUMBER: _builtins.int + ERROR_FIELD_NUMBER: _builtins.int + REVISION_FIELD_NUMBER: _builtins.int + fragment_id: _builtins.str + revision: _builtins.str - @property - def resolved_config(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def resolved_config(self) -> _struct_pb2.Struct: ... - @property - def error(self) -> global___FragmentError: + @_builtins.property + def error(self) -> Global___FragmentError: ... - def __init__(self, *, fragment_id: builtins.str=..., resolved_config: google.protobuf.struct_pb2.Struct | None=..., error: global___FragmentError | None=..., revision: builtins.str=...) -> None: + def __init__(self, *, fragment_id: _builtins.str=..., resolved_config: _struct_pb2.Struct | None=..., error: Global___FragmentError | None=..., revision: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['error', b'error', 'resolved_config', b'resolved_config'] - def HasField(self, field_name: typing.Literal['error', b'error', 'resolved_config', b'resolved_config']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['error', b'error', 'fragment_id', b'fragment_id', 'resolved_config', b'resolved_config', 'revision', b'revision'] - def ClearField(self, field_name: typing.Literal['error', b'error', 'fragment_id', b'fragment_id', 'resolved_config', b'resolved_config', 'revision', b'revision']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ResolvedFragment = ResolvedFragment +Global___ResolvedFragment: _TypeAlias = ResolvedFragment -@typing.final -class ListFragmentsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - SHOW_PUBLIC_FIELD_NUMBER: builtins.int - FRAGMENT_VISIBILITY_FIELD_NUMBER: builtins.int - organization_id: builtins.str - show_public: builtins.bool +@_typing.final +class ListFragmentsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + SHOW_PUBLIC_FIELD_NUMBER: _builtins.int + FRAGMENT_VISIBILITY_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + show_public: _builtins.bool - @property - def fragment_visibility(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___FragmentVisibility.ValueType]: + @_builtins.property + def fragment_visibility(self) -> _containers.RepeatedScalarFieldContainer[Global___FragmentVisibility.ValueType]: ... - def __init__(self, *, organization_id: builtins.str=..., show_public: builtins.bool=..., fragment_visibility: collections.abc.Iterable[global___FragmentVisibility.ValueType] | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., show_public: _builtins.bool=..., fragment_visibility: _abc.Iterable[Global___FragmentVisibility.ValueType] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['fragment_visibility', b'fragment_visibility', 'organization_id', b'organization_id', 'show_public', b'show_public'] - def ClearField(self, field_name: typing.Literal['fragment_visibility', b'fragment_visibility', 'organization_id', b'organization_id', 'show_public', b'show_public']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListFragmentsRequest = ListFragmentsRequest +Global___ListFragmentsRequest: _TypeAlias = ListFragmentsRequest -@typing.final -class ListFragmentsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENTS_FIELD_NUMBER: builtins.int - FRAGMENT_USAGES_FIELD_NUMBER: builtins.int +@_typing.final +class ListFragmentsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAGMENTS_FIELD_NUMBER: _builtins.int + FRAGMENT_USAGES_FIELD_NUMBER: _builtins.int - @property - def fragments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Fragment]: + @_builtins.property + def fragments(self) -> _containers.RepeatedCompositeFieldContainer[Global___Fragment]: ... - @property - def fragment_usages(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FragmentUsage]: + @_builtins.property + def fragment_usages(self) -> _containers.RepeatedCompositeFieldContainer[Global___FragmentUsage]: ... - def __init__(self, *, fragments: collections.abc.Iterable[global___Fragment] | None=..., fragment_usages: collections.abc.Iterable[global___FragmentUsage] | None=...) -> None: + def __init__(self, *, fragments: _abc.Iterable[Global___Fragment] | None=..., fragment_usages: _abc.Iterable[Global___FragmentUsage] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['fragment_usages', b'fragment_usages', 'fragments', b'fragments'] - def ClearField(self, field_name: typing.Literal['fragment_usages', b'fragment_usages', 'fragments', b'fragments']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListFragmentsResponse = ListFragmentsResponse +Global___ListFragmentsResponse: _TypeAlias = ListFragmentsResponse -@typing.final -class GetFragmentRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - CURRENT_ORGANIZATION_ID_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - id: builtins.str - current_organization_id: builtins.str - version: builtins.str +@_typing.final +class GetFragmentRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + CURRENT_ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + id: _builtins.str + current_organization_id: _builtins.str + version: _builtins.str 'revision or tag' - def __init__(self, *, id: builtins.str=..., current_organization_id: builtins.str=..., version: builtins.str | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., current_organization_id: _builtins.str=..., version: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_version', b'_version', 'version', b'version'] - def HasField(self, field_name: typing.Literal['_version', b'_version', 'version', b'version']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_version', b'_version', 'current_organization_id', b'current_organization_id', 'id', b'id', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['_version', b'_version', 'current_organization_id', b'current_organization_id', 'id', b'id', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__version: _TypeAlias = _typing.Literal['version'] + _WhichOneofArgType__version: _TypeAlias = _typing.Literal['_version', b'_version'] - def WhichOneof(self, oneof_group: typing.Literal['_version', b'_version']) -> typing.Literal['version'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__version) -> _WhichOneofReturnType__version | None: ... -global___GetFragmentRequest = GetFragmentRequest +Global___GetFragmentRequest: _TypeAlias = GetFragmentRequest -@typing.final -class GetFragmentResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENT_FIELD_NUMBER: builtins.int - FRAGMENT_USAGE_FIELD_NUMBER: builtins.int - REVISIONS_FIELD_NUMBER: builtins.int - TAGS_FIELD_NUMBER: builtins.int +@_typing.final +class GetFragmentResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAGMENT_FIELD_NUMBER: _builtins.int + FRAGMENT_USAGE_FIELD_NUMBER: _builtins.int + REVISIONS_FIELD_NUMBER: _builtins.int + TAGS_FIELD_NUMBER: _builtins.int - @property - def fragment(self) -> global___Fragment: + @_builtins.property + def fragment(self) -> Global___Fragment: ... - @property - def fragment_usage(self) -> global___FragmentUsage: + @_builtins.property + def fragment_usage(self) -> Global___FragmentUsage: ... - @property - def revisions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FragmentRevision]: + @_builtins.property + def revisions(self) -> _containers.RepeatedCompositeFieldContainer[Global___FragmentRevision]: ... - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FragmentTag]: + @_builtins.property + def tags(self) -> _containers.RepeatedCompositeFieldContainer[Global___FragmentTag]: ... - def __init__(self, *, fragment: global___Fragment | None=..., fragment_usage: global___FragmentUsage | None=..., revisions: collections.abc.Iterable[global___FragmentRevision] | None=..., tags: collections.abc.Iterable[global___FragmentTag] | None=...) -> None: + def __init__(self, *, fragment: Global___Fragment | None=..., fragment_usage: Global___FragmentUsage | None=..., revisions: _abc.Iterable[Global___FragmentRevision] | None=..., tags: _abc.Iterable[Global___FragmentTag] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['fragment', b'fragment', 'fragment_usage', b'fragment_usage'] - def HasField(self, field_name: typing.Literal['fragment', b'fragment', 'fragment_usage', b'fragment_usage']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['fragment', b'fragment', 'fragment_usage', b'fragment_usage', 'revisions', b'revisions', 'tags', b'tags'] - def ClearField(self, field_name: typing.Literal['fragment', b'fragment', 'fragment_usage', b'fragment_usage', 'revisions', b'revisions', 'tags', b'tags']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetFragmentResponse = GetFragmentResponse +Global___GetFragmentResponse: _TypeAlias = GetFragmentResponse -@typing.final -class CreateFragmentRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - CONFIG_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - VISIBILITY_FIELD_NUMBER: builtins.int - name: builtins.str - organization_id: builtins.str - visibility: global___FragmentVisibility.ValueType +@_typing.final +class CreateFragmentRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + CONFIG_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + VISIBILITY_FIELD_NUMBER: _builtins.int + name: _builtins.str + organization_id: _builtins.str + visibility: Global___FragmentVisibility.ValueType - @property - def config(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def config(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., config: google.protobuf.struct_pb2.Struct | None=..., organization_id: builtins.str=..., visibility: global___FragmentVisibility.ValueType | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., config: _struct_pb2.Struct | None=..., organization_id: _builtins.str=..., visibility: Global___FragmentVisibility.ValueType | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_visibility', b'_visibility', 'config', b'config', 'visibility', b'visibility'] - def HasField(self, field_name: typing.Literal['_visibility', b'_visibility', 'config', b'config', 'visibility', b'visibility']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_visibility', b'_visibility', 'config', b'config', 'name', b'name', 'organization_id', b'organization_id', 'visibility', b'visibility'] - def ClearField(self, field_name: typing.Literal['_visibility', b'_visibility', 'config', b'config', 'name', b'name', 'organization_id', b'organization_id', 'visibility', b'visibility']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__visibility: _TypeAlias = _typing.Literal['visibility'] + _WhichOneofArgType__visibility: _TypeAlias = _typing.Literal['_visibility', b'_visibility'] - def WhichOneof(self, oneof_group: typing.Literal['_visibility', b'_visibility']) -> typing.Literal['visibility'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__visibility) -> _WhichOneofReturnType__visibility | None: ... -global___CreateFragmentRequest = CreateFragmentRequest +Global___CreateFragmentRequest: _TypeAlias = CreateFragmentRequest -@typing.final -class CreateFragmentResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENT_FIELD_NUMBER: builtins.int +@_typing.final +class CreateFragmentResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAGMENT_FIELD_NUMBER: _builtins.int - @property - def fragment(self) -> global___Fragment: + @_builtins.property + def fragment(self) -> Global___Fragment: ... - def __init__(self, *, fragment: global___Fragment | None=...) -> None: + def __init__(self, *, fragment: Global___Fragment | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['fragment', b'fragment'] - def HasField(self, field_name: typing.Literal['fragment', b'fragment']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['fragment', b'fragment'] - def ClearField(self, field_name: typing.Literal['fragment', b'fragment']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateFragmentResponse = CreateFragmentResponse +Global___CreateFragmentResponse: _TypeAlias = CreateFragmentResponse -@typing.final -class UpdateFragmentRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - CONFIG_FIELD_NUMBER: builtins.int - PUBLIC_FIELD_NUMBER: builtins.int - VISIBILITY_FIELD_NUMBER: builtins.int - LAST_KNOWN_UPDATE_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str - public: builtins.bool - visibility: global___FragmentVisibility.ValueType +@_typing.final +class UpdateFragmentRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + CONFIG_FIELD_NUMBER: _builtins.int + PUBLIC_FIELD_NUMBER: _builtins.int + VISIBILITY_FIELD_NUMBER: _builtins.int + LAST_KNOWN_UPDATE_FIELD_NUMBER: _builtins.int + id: _builtins.str + name: _builtins.str + public: _builtins.bool + visibility: Global___FragmentVisibility.ValueType - @property - def config(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def config(self) -> _struct_pb2.Struct: ... - @property - def last_known_update(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def last_known_update(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, id: builtins.str=..., name: builtins.str=..., config: google.protobuf.struct_pb2.Struct | None=..., public: builtins.bool | None=..., visibility: global___FragmentVisibility.ValueType | None=..., last_known_update: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=..., config: _struct_pb2.Struct | None=..., public: _builtins.bool | None=..., visibility: Global___FragmentVisibility.ValueType | None=..., last_known_update: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_last_known_update', b'_last_known_update', '_public', b'_public', '_visibility', b'_visibility', 'config', b'config', 'last_known_update', b'last_known_update', 'public', b'public', 'visibility', b'visibility'] - def HasField(self, field_name: typing.Literal['_last_known_update', b'_last_known_update', '_public', b'_public', '_visibility', b'_visibility', 'config', b'config', 'last_known_update', b'last_known_update', 'public', b'public', 'visibility', b'visibility']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_last_known_update', b'_last_known_update', '_public', b'_public', '_visibility', b'_visibility', 'config', b'config', 'id', b'id', 'last_known_update', b'last_known_update', 'name', b'name', 'public', b'public', 'visibility', b'visibility'] - def ClearField(self, field_name: typing.Literal['_last_known_update', b'_last_known_update', '_public', b'_public', '_visibility', b'_visibility', 'config', b'config', 'id', b'id', 'last_known_update', b'last_known_update', 'name', b'name', 'public', b'public', 'visibility', b'visibility']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__last_known_update: _TypeAlias = _typing.Literal['last_known_update'] + _WhichOneofArgType__last_known_update: _TypeAlias = _typing.Literal['_last_known_update', b'_last_known_update'] + _WhichOneofReturnType__public: _TypeAlias = _typing.Literal['public'] + _WhichOneofArgType__public: _TypeAlias = _typing.Literal['_public', b'_public'] + _WhichOneofReturnType__visibility: _TypeAlias = _typing.Literal['visibility'] + _WhichOneofArgType__visibility: _TypeAlias = _typing.Literal['_visibility', b'_visibility'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_last_known_update', b'_last_known_update']) -> typing.Literal['last_known_update'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__last_known_update) -> _WhichOneofReturnType__last_known_update | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_public', b'_public']) -> typing.Literal['public'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__public) -> _WhichOneofReturnType__public | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_visibility', b'_visibility']) -> typing.Literal['visibility'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__visibility) -> _WhichOneofReturnType__visibility | None: ... -global___UpdateFragmentRequest = UpdateFragmentRequest +Global___UpdateFragmentRequest: _TypeAlias = UpdateFragmentRequest -@typing.final -class UpdateFragmentResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENT_FIELD_NUMBER: builtins.int +@_typing.final +class UpdateFragmentResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAGMENT_FIELD_NUMBER: _builtins.int - @property - def fragment(self) -> global___Fragment: + @_builtins.property + def fragment(self) -> Global___Fragment: ... - def __init__(self, *, fragment: global___Fragment | None=...) -> None: + def __init__(self, *, fragment: Global___Fragment | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['fragment', b'fragment'] - def HasField(self, field_name: typing.Literal['fragment', b'fragment']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['fragment', b'fragment'] - def ClearField(self, field_name: typing.Literal['fragment', b'fragment']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateFragmentResponse = UpdateFragmentResponse +Global___UpdateFragmentResponse: _TypeAlias = UpdateFragmentResponse -@typing.final -class DeleteFragmentRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class DeleteFragmentRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteFragmentRequest = DeleteFragmentRequest +Global___DeleteFragmentRequest: _TypeAlias = DeleteFragmentRequest -@typing.final -class DeleteFragmentResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteFragmentResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteFragmentResponse = DeleteFragmentResponse +Global___DeleteFragmentResponse: _TypeAlias = DeleteFragmentResponse -@typing.final -class GetFragmentHistoryRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - PAGE_TOKEN_FIELD_NUMBER: builtins.int - PAGE_LIMIT_FIELD_NUMBER: builtins.int - id: builtins.str - page_token: builtins.str - page_limit: builtins.int +@_typing.final +class GetFragmentHistoryRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + PAGE_TOKEN_FIELD_NUMBER: _builtins.int + PAGE_LIMIT_FIELD_NUMBER: _builtins.int + id: _builtins.str + page_token: _builtins.str + page_limit: _builtins.int - def __init__(self, *, id: builtins.str=..., page_token: builtins.str | None=..., page_limit: builtins.int | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., page_token: _builtins.str | None=..., page_limit: _builtins.int | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_page_limit', b'_page_limit', '_page_token', b'_page_token', 'page_limit', b'page_limit', 'page_token', b'page_token'] - def HasField(self, field_name: typing.Literal['_page_limit', b'_page_limit', '_page_token', b'_page_token', 'page_limit', b'page_limit', 'page_token', b'page_token']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_page_limit', b'_page_limit', '_page_token', b'_page_token', 'id', b'id', 'page_limit', b'page_limit', 'page_token', b'page_token'] - def ClearField(self, field_name: typing.Literal['_page_limit', b'_page_limit', '_page_token', b'_page_token', 'id', b'id', 'page_limit', b'page_limit', 'page_token', b'page_token']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__page_limit: _TypeAlias = _typing.Literal['page_limit'] + _WhichOneofArgType__page_limit: _TypeAlias = _typing.Literal['_page_limit', b'_page_limit'] + _WhichOneofReturnType__page_token: _TypeAlias = _typing.Literal['page_token'] + _WhichOneofArgType__page_token: _TypeAlias = _typing.Literal['_page_token', b'_page_token'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_page_limit', b'_page_limit']) -> typing.Literal['page_limit'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__page_limit) -> _WhichOneofReturnType__page_limit | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_page_token', b'_page_token']) -> typing.Literal['page_token'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__page_token) -> _WhichOneofReturnType__page_token | None: ... -global___GetFragmentHistoryRequest = GetFragmentHistoryRequest +Global___GetFragmentHistoryRequest: _TypeAlias = GetFragmentHistoryRequest -@typing.final -class GetFragmentHistoryResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - HISTORY_FIELD_NUMBER: builtins.int - NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int - next_page_token: builtins.str +@_typing.final +class GetFragmentHistoryResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + HISTORY_FIELD_NUMBER: _builtins.int + NEXT_PAGE_TOKEN_FIELD_NUMBER: _builtins.int + next_page_token: _builtins.str - @property - def history(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FragmentHistoryEntry]: + @_builtins.property + def history(self) -> _containers.RepeatedCompositeFieldContainer[Global___FragmentHistoryEntry]: ... - def __init__(self, *, history: collections.abc.Iterable[global___FragmentHistoryEntry] | None=..., next_page_token: builtins.str=...) -> None: + def __init__(self, *, history: _abc.Iterable[Global___FragmentHistoryEntry] | None=..., next_page_token: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['history', b'history', 'next_page_token', b'next_page_token'] - def ClearField(self, field_name: typing.Literal['history', b'history', 'next_page_token', b'next_page_token']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetFragmentHistoryResponse = GetFragmentHistoryResponse +Global___GetFragmentHistoryResponse: _TypeAlias = GetFragmentHistoryResponse -@typing.final -class GetFragmentUsageRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENT_ID_FIELD_NUMBER: builtins.int - fragment_id: builtins.str +@_typing.final +class GetFragmentUsageRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAGMENT_ID_FIELD_NUMBER: _builtins.int + fragment_id: _builtins.str - def __init__(self, *, fragment_id: builtins.str=...) -> None: + def __init__(self, *, fragment_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['fragment_id', b'fragment_id'] - def ClearField(self, field_name: typing.Literal['fragment_id', b'fragment_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetFragmentUsageRequest = GetFragmentUsageRequest +Global___GetFragmentUsageRequest: _TypeAlias = GetFragmentUsageRequest -@typing.final -class GetFragmentUsageResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VERSION_USAGES_FIELD_NUMBER: builtins.int +@_typing.final +class GetFragmentUsageResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + VERSION_USAGES_FIELD_NUMBER: _builtins.int - @property - def version_usages(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FragmentUsage]: + @_builtins.property + def version_usages(self) -> _containers.RepeatedCompositeFieldContainer[Global___FragmentUsage]: ... - def __init__(self, *, version_usages: collections.abc.Iterable[global___FragmentUsage] | None=...) -> None: + def __init__(self, *, version_usages: _abc.Iterable[Global___FragmentUsage] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['version_usages', b'version_usages'] - def ClearField(self, field_name: typing.Literal['version_usages', b'version_usages']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetFragmentUsageResponse = GetFragmentUsageResponse +Global___GetFragmentUsageResponse: _TypeAlias = GetFragmentUsageResponse -@typing.final -class SetFragmentTagRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENT_ID_FIELD_NUMBER: builtins.int - TAG_FIELD_NUMBER: builtins.int - REVISION_FIELD_NUMBER: builtins.int - fragment_id: builtins.str - tag: builtins.str - revision: builtins.str +@_typing.final +class SetFragmentTagRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAGMENT_ID_FIELD_NUMBER: _builtins.int + TAG_FIELD_NUMBER: _builtins.int + REVISION_FIELD_NUMBER: _builtins.int + fragment_id: _builtins.str + tag: _builtins.str + revision: _builtins.str - def __init__(self, *, fragment_id: builtins.str=..., tag: builtins.str=..., revision: builtins.str=...) -> None: + def __init__(self, *, fragment_id: _builtins.str=..., tag: _builtins.str=..., revision: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['fragment_id', b'fragment_id', 'revision', b'revision', 'tag', b'tag'] - def ClearField(self, field_name: typing.Literal['fragment_id', b'fragment_id', 'revision', b'revision', 'tag', b'tag']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SetFragmentTagRequest = SetFragmentTagRequest +Global___SetFragmentTagRequest: _TypeAlias = SetFragmentTagRequest -@typing.final -class SetFragmentTagResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TAGS_FIELD_NUMBER: builtins.int +@_typing.final +class SetFragmentTagResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + TAGS_FIELD_NUMBER: _builtins.int - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FragmentTag]: + @_builtins.property + def tags(self) -> _containers.RepeatedCompositeFieldContainer[Global___FragmentTag]: ... - def __init__(self, *, tags: collections.abc.Iterable[global___FragmentTag] | None=...) -> None: + def __init__(self, *, tags: _abc.Iterable[Global___FragmentTag] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['tags', b'tags'] - def ClearField(self, field_name: typing.Literal['tags', b'tags']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SetFragmentTagResponse = SetFragmentTagResponse +Global___SetFragmentTagResponse: _TypeAlias = SetFragmentTagResponse -@typing.final -class DeleteFragmentTagRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENT_ID_FIELD_NUMBER: builtins.int - TAG_FIELD_NUMBER: builtins.int - fragment_id: builtins.str - tag: builtins.str +@_typing.final +class DeleteFragmentTagRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAGMENT_ID_FIELD_NUMBER: _builtins.int + TAG_FIELD_NUMBER: _builtins.int + fragment_id: _builtins.str + tag: _builtins.str - def __init__(self, *, fragment_id: builtins.str=..., tag: builtins.str=...) -> None: + def __init__(self, *, fragment_id: _builtins.str=..., tag: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['fragment_id', b'fragment_id', 'tag', b'tag'] - def ClearField(self, field_name: typing.Literal['fragment_id', b'fragment_id', 'tag', b'tag']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteFragmentTagRequest = DeleteFragmentTagRequest +Global___DeleteFragmentTagRequest: _TypeAlias = DeleteFragmentTagRequest -@typing.final -class DeleteFragmentTagResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TAGS_FIELD_NUMBER: builtins.int +@_typing.final +class DeleteFragmentTagResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + TAGS_FIELD_NUMBER: _builtins.int - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FragmentTag]: + @_builtins.property + def tags(self) -> _containers.RepeatedCompositeFieldContainer[Global___FragmentTag]: ... - def __init__(self, *, tags: collections.abc.Iterable[global___FragmentTag] | None=...) -> None: + def __init__(self, *, tags: _abc.Iterable[Global___FragmentTag] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['tags', b'tags'] - def ClearField(self, field_name: typing.Literal['tags', b'tags']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteFragmentTagResponse = DeleteFragmentTagResponse +Global___DeleteFragmentTagResponse: _TypeAlias = DeleteFragmentTagResponse -@typing.final -class ListRobotsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_ID_FIELD_NUMBER: builtins.int - location_id: builtins.str +@_typing.final +class ListRobotsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_ID_FIELD_NUMBER: _builtins.int + location_id: _builtins.str - def __init__(self, *, location_id: builtins.str=...) -> None: + def __init__(self, *, location_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListRobotsRequest = ListRobotsRequest +Global___ListRobotsRequest: _TypeAlias = ListRobotsRequest -@typing.final -class ListRobotsForLocationsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_IDS_FIELD_NUMBER: builtins.int +@_typing.final +class ListRobotsForLocationsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_IDS_FIELD_NUMBER: _builtins.int - @property - def location_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def location_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, location_ids: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, location_ids: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_ids', b'location_ids'] - def ClearField(self, field_name: typing.Literal['location_ids', b'location_ids']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListRobotsForLocationsRequest = ListRobotsForLocationsRequest +Global___ListRobotsForLocationsRequest: _TypeAlias = ListRobotsForLocationsRequest -@typing.final -class ListRobotsForOrgRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class ListRobotsForOrgRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str - def __init__(self, *, org_id: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListRobotsForOrgRequest = ListRobotsForOrgRequest +Global___ListRobotsForOrgRequest: _TypeAlias = ListRobotsForOrgRequest -@typing.final -class AdditionalFragment(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENT_ID_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - fragment_id: builtins.str - version: builtins.str +@_typing.final +class AdditionalFragment(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAGMENT_ID_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + fragment_id: _builtins.str + version: _builtins.str - def __init__(self, *, fragment_id: builtins.str=..., version: builtins.str | None=...) -> None: + def __init__(self, *, fragment_id: _builtins.str=..., version: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_version', b'_version', 'version', b'version'] - def HasField(self, field_name: typing.Literal['_version', b'_version', 'version', b'version']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_version', b'_version', 'fragment_id', b'fragment_id', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['_version', b'_version', 'fragment_id', b'fragment_id', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__version: _TypeAlias = _typing.Literal['version'] + _WhichOneofArgType__version: _TypeAlias = _typing.Literal['_version', b'_version'] - def WhichOneof(self, oneof_group: typing.Literal['_version', b'_version']) -> typing.Literal['version'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__version) -> _WhichOneofReturnType__version | None: ... -global___AdditionalFragment = AdditionalFragment +Global___AdditionalFragment: _TypeAlias = AdditionalFragment -@typing.final -class ListNestedFragmentsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENT_ID_FIELD_NUMBER: builtins.int - ADDITIONAL_FRAGMENTS_FIELD_NUMBER: builtins.int - fragment_id: builtins.str +@_typing.final +class ListNestedFragmentsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAGMENT_ID_FIELD_NUMBER: _builtins.int + ADDITIONAL_FRAGMENTS_FIELD_NUMBER: _builtins.int + fragment_id: _builtins.str - @property - def additional_fragments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AdditionalFragment]: + @_builtins.property + def additional_fragments(self) -> _containers.RepeatedCompositeFieldContainer[Global___AdditionalFragment]: ... - def __init__(self, *, fragment_id: builtins.str | None=..., additional_fragments: collections.abc.Iterable[global___AdditionalFragment] | None=...) -> None: + def __init__(self, *, fragment_id: _builtins.str | None=..., additional_fragments: _abc.Iterable[Global___AdditionalFragment] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_fragment_id', b'_fragment_id', 'fragment_id', b'fragment_id'] - def HasField(self, field_name: typing.Literal['_fragment_id', b'_fragment_id', 'fragment_id', b'fragment_id']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_fragment_id', b'_fragment_id', 'additional_fragments', b'additional_fragments', 'fragment_id', b'fragment_id'] - def ClearField(self, field_name: typing.Literal['_fragment_id', b'_fragment_id', 'additional_fragments', b'additional_fragments', 'fragment_id', b'fragment_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__fragment_id: _TypeAlias = _typing.Literal['fragment_id'] + _WhichOneofArgType__fragment_id: _TypeAlias = _typing.Literal['_fragment_id', b'_fragment_id'] - def WhichOneof(self, oneof_group: typing.Literal['_fragment_id', b'_fragment_id']) -> typing.Literal['fragment_id'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__fragment_id) -> _WhichOneofReturnType__fragment_id | None: ... -global___ListNestedFragmentsRequest = ListNestedFragmentsRequest +Global___ListNestedFragmentsRequest: _TypeAlias = ListNestedFragmentsRequest -@typing.final -class ListNestedFragmentsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENTS_FIELD_NUMBER: builtins.int - RESOLVED_FRAGMENTS_FIELD_NUMBER: builtins.int +@_typing.final +class ListNestedFragmentsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAGMENTS_FIELD_NUMBER: _builtins.int + RESOLVED_FRAGMENTS_FIELD_NUMBER: _builtins.int - @property - def fragments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Fragment]: + @_builtins.property + def fragments(self) -> _containers.RepeatedCompositeFieldContainer[Global___Fragment]: ... - @property - def resolved_fragments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ResolvedFragment]: + @_builtins.property + def resolved_fragments(self) -> _containers.RepeatedCompositeFieldContainer[Global___ResolvedFragment]: ... - def __init__(self, *, fragments: collections.abc.Iterable[global___Fragment] | None=..., resolved_fragments: collections.abc.Iterable[global___ResolvedFragment] | None=...) -> None: + def __init__(self, *, fragments: _abc.Iterable[Global___Fragment] | None=..., resolved_fragments: _abc.Iterable[Global___ResolvedFragment] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['fragments', b'fragments', 'resolved_fragments', b'resolved_fragments'] - def ClearField(self, field_name: typing.Literal['fragments', b'fragments', 'resolved_fragments', b'resolved_fragments']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListNestedFragmentsResponse = ListNestedFragmentsResponse +Global___ListNestedFragmentsResponse: _TypeAlias = ListNestedFragmentsResponse -@typing.final -class ListMachineFragmentsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MACHINE_ID_FIELD_NUMBER: builtins.int - ADDITIONAL_FRAGMENT_IDS_FIELD_NUMBER: builtins.int - ADDITIONAL_FRAGMENTS_FIELD_NUMBER: builtins.int - machine_id: builtins.str +@_typing.final +class ListMachineFragmentsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MACHINE_ID_FIELD_NUMBER: _builtins.int + ADDITIONAL_FRAGMENT_IDS_FIELD_NUMBER: _builtins.int + ADDITIONAL_FRAGMENTS_FIELD_NUMBER: _builtins.int + machine_id: _builtins.str "the machine_id used to filter fragments defined in a machine's parts.\n Also returns any fragments nested within the fragments defined in parts.\n " - @property - def additional_fragment_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def additional_fragment_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """TODO(APP-7642): Mark this field as deprecated""" - @property - def additional_fragments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AdditionalFragment]: + @_builtins.property + def additional_fragments(self) -> _containers.RepeatedCompositeFieldContainer[Global___AdditionalFragment]: """additional fragments to append to the response. useful when needing to view fragments that will be provisionally added to the machine alongside existing fragments. """ - def __init__(self, *, machine_id: builtins.str=..., additional_fragment_ids: collections.abc.Iterable[builtins.str] | None=..., additional_fragments: collections.abc.Iterable[global___AdditionalFragment] | None=...) -> None: + def __init__(self, *, machine_id: _builtins.str=..., additional_fragment_ids: _abc.Iterable[_builtins.str] | None=..., additional_fragments: _abc.Iterable[Global___AdditionalFragment] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['additional_fragment_ids', b'additional_fragment_ids', 'additional_fragments', b'additional_fragments', 'machine_id', b'machine_id'] - def ClearField(self, field_name: typing.Literal['additional_fragment_ids', b'additional_fragment_ids', 'additional_fragments', b'additional_fragments', 'machine_id', b'machine_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListMachineFragmentsRequest = ListMachineFragmentsRequest +Global___ListMachineFragmentsRequest: _TypeAlias = ListMachineFragmentsRequest -@typing.final -class ListMachineFragmentsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENTS_FIELD_NUMBER: builtins.int - RESOLVED_FRAGMENTS_FIELD_NUMBER: builtins.int +@_typing.final +class ListMachineFragmentsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAGMENTS_FIELD_NUMBER: _builtins.int + RESOLVED_FRAGMENTS_FIELD_NUMBER: _builtins.int - @property - def fragments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Fragment]: + @_builtins.property + def fragments(self) -> _containers.RepeatedCompositeFieldContainer[Global___Fragment]: ... - @property - def resolved_fragments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ResolvedFragment]: + @_builtins.property + def resolved_fragments(self) -> _containers.RepeatedCompositeFieldContainer[Global___ResolvedFragment]: ... - def __init__(self, *, fragments: collections.abc.Iterable[global___Fragment] | None=..., resolved_fragments: collections.abc.Iterable[global___ResolvedFragment] | None=...) -> None: + def __init__(self, *, fragments: _abc.Iterable[Global___Fragment] | None=..., resolved_fragments: _abc.Iterable[Global___ResolvedFragment] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['fragments', b'fragments', 'resolved_fragments', b'resolved_fragments'] - def ClearField(self, field_name: typing.Literal['fragments', b'fragments', 'resolved_fragments', b'resolved_fragments']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListMachineFragmentsResponse = ListMachineFragmentsResponse +Global___ListMachineFragmentsResponse: _TypeAlias = ListMachineFragmentsResponse -@typing.final -class ListMachineSummariesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - FRAGMENT_IDS_FIELD_NUMBER: builtins.int - LOCATION_IDS_FIELD_NUMBER: builtins.int - LIMIT_FIELD_NUMBER: builtins.int - organization_id: builtins.str +@_typing.final +class ListMachineSummariesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + FRAGMENT_IDS_FIELD_NUMBER: _builtins.int + LOCATION_IDS_FIELD_NUMBER: _builtins.int + LIMIT_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str 'Optional organization ID. If no value is set it will search among all the organanizations the caller has access to' - limit: builtins.int + limit: _builtins.int 'Optional max number of machines to return; default to 100 if unset' - @property - def fragment_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def fragment_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """Optional list of fragment IDs to filter machines that use any of these fragments""" - @property - def location_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def location_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """Optional list of location IDs to filter machines that are in any of these locations.""" - def __init__(self, *, organization_id: builtins.str=..., fragment_ids: collections.abc.Iterable[builtins.str] | None=..., location_ids: collections.abc.Iterable[builtins.str] | None=..., limit: builtins.int | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., fragment_ids: _abc.Iterable[_builtins.str] | None=..., location_ids: _abc.Iterable[_builtins.str] | None=..., limit: _builtins.int | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_limit', b'_limit', 'limit', b'limit'] - def HasField(self, field_name: typing.Literal['_limit', b'_limit', 'limit', b'limit']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_limit', b'_limit', 'fragment_ids', b'fragment_ids', 'limit', b'limit', 'location_ids', b'location_ids', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['_limit', b'_limit', 'fragment_ids', b'fragment_ids', 'limit', b'limit', 'location_ids', b'location_ids', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__limit: _TypeAlias = _typing.Literal['limit'] + _WhichOneofArgType__limit: _TypeAlias = _typing.Literal['_limit', b'_limit'] - def WhichOneof(self, oneof_group: typing.Literal['_limit', b'_limit']) -> typing.Literal['limit'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__limit) -> _WhichOneofReturnType__limit | None: ... -global___ListMachineSummariesRequest = ListMachineSummariesRequest +Global___ListMachineSummariesRequest: _TypeAlias = ListMachineSummariesRequest -@typing.final -class ListMachineSummariesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_SUMMARIES_FIELD_NUMBER: builtins.int +@_typing.final +class ListMachineSummariesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_SUMMARIES_FIELD_NUMBER: _builtins.int - @property - def location_summaries(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___LocationSummary]: + @_builtins.property + def location_summaries(self) -> _containers.RepeatedCompositeFieldContainer[Global___LocationSummary]: ... - def __init__(self, *, location_summaries: collections.abc.Iterable[global___LocationSummary] | None=...) -> None: + def __init__(self, *, location_summaries: _abc.Iterable[Global___LocationSummary] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_summaries', b'location_summaries'] - def ClearField(self, field_name: typing.Literal['location_summaries', b'location_summaries']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListMachineSummariesResponse = ListMachineSummariesResponse +Global___ListMachineSummariesResponse: _TypeAlias = ListMachineSummariesResponse -@typing.final -class LocationSummary(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_ID_FIELD_NUMBER: builtins.int - LOCATION_NAME_FIELD_NUMBER: builtins.int - MACHINE_SUMMARIES_FIELD_NUMBER: builtins.int - location_id: builtins.str - location_name: builtins.str +@_typing.final +class LocationSummary(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_ID_FIELD_NUMBER: _builtins.int + LOCATION_NAME_FIELD_NUMBER: _builtins.int + MACHINE_SUMMARIES_FIELD_NUMBER: _builtins.int + location_id: _builtins.str + location_name: _builtins.str - @property - def machine_summaries(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MachineSummary]: + @_builtins.property + def machine_summaries(self) -> _containers.RepeatedCompositeFieldContainer[Global___MachineSummary]: ... - def __init__(self, *, location_id: builtins.str=..., location_name: builtins.str=..., machine_summaries: collections.abc.Iterable[global___MachineSummary] | None=...) -> None: + def __init__(self, *, location_id: _builtins.str=..., location_name: _builtins.str=..., machine_summaries: _abc.Iterable[Global___MachineSummary] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id', 'location_name', b'location_name', 'machine_summaries', b'machine_summaries'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id', 'location_name', b'location_name', 'machine_summaries', b'machine_summaries']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___LocationSummary = LocationSummary +Global___LocationSummary: _TypeAlias = LocationSummary -@typing.final -class MachineSummary(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MACHINE_ID_FIELD_NUMBER: builtins.int - MACHINE_NAME_FIELD_NUMBER: builtins.int - PART_SUMMARIES_FIELD_NUMBER: builtins.int - machine_id: builtins.str - machine_name: builtins.str +@_typing.final +class MachineSummary(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MACHINE_ID_FIELD_NUMBER: _builtins.int + MACHINE_NAME_FIELD_NUMBER: _builtins.int + PART_SUMMARIES_FIELD_NUMBER: _builtins.int + machine_id: _builtins.str + machine_name: _builtins.str - @property - def part_summaries(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PartSummary]: + @_builtins.property + def part_summaries(self) -> _containers.RepeatedCompositeFieldContainer[Global___PartSummary]: ... - def __init__(self, *, machine_id: builtins.str=..., machine_name: builtins.str=..., part_summaries: collections.abc.Iterable[global___PartSummary] | None=...) -> None: + def __init__(self, *, machine_id: _builtins.str=..., machine_name: _builtins.str=..., part_summaries: _abc.Iterable[Global___PartSummary] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['machine_id', b'machine_id', 'machine_name', b'machine_name', 'part_summaries', b'part_summaries'] - def ClearField(self, field_name: typing.Literal['machine_id', b'machine_id', 'machine_name', b'machine_name', 'part_summaries', b'part_summaries']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MachineSummary = MachineSummary +Global___MachineSummary: _TypeAlias = MachineSummary -@typing.final -class FragmentSummary(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str +@_typing.final +class FragmentSummary(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + id: _builtins.str + name: _builtins.str - def __init__(self, *, id: builtins.str=..., name: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FragmentSummary = FragmentSummary +Global___FragmentSummary: _TypeAlias = FragmentSummary -@typing.final -class ViamServerVersion(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MAJOR_FIELD_NUMBER: builtins.int - MINOR_FIELD_NUMBER: builtins.int - major: builtins.str - minor: builtins.str +@_typing.final +class ViamServerVersion(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MAJOR_FIELD_NUMBER: _builtins.int + MINOR_FIELD_NUMBER: _builtins.int + major: _builtins.str + minor: _builtins.str - def __init__(self, *, major: builtins.str=..., minor: builtins.str=...) -> None: + def __init__(self, *, major: _builtins.str=..., minor: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['major', b'major', 'minor', b'minor', 'version', b'version'] - def HasField(self, field_name: typing.Literal['major', b'major', 'minor', b'minor', 'version', b'version']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['major', b'major', 'minor', b'minor', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['major', b'major', 'minor', b'minor', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_version: _TypeAlias = _typing.Literal['major', 'minor'] + _WhichOneofArgType_version: _TypeAlias = _typing.Literal['version', b'version'] - def WhichOneof(self, oneof_group: typing.Literal['version', b'version']) -> typing.Literal['major', 'minor'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_version) -> _WhichOneofReturnType_version | None: ... -global___ViamServerVersion = ViamServerVersion +Global___ViamServerVersion: _TypeAlias = ViamServerVersion -@typing.final -class ViamAgentVersion(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MAJOR_FIELD_NUMBER: builtins.int - MINOR_FIELD_NUMBER: builtins.int - major: builtins.str - minor: builtins.str +@_typing.final +class ViamAgentVersion(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MAJOR_FIELD_NUMBER: _builtins.int + MINOR_FIELD_NUMBER: _builtins.int + major: _builtins.str + minor: _builtins.str - def __init__(self, *, major: builtins.str=..., minor: builtins.str=...) -> None: + def __init__(self, *, major: _builtins.str=..., minor: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['major', b'major', 'minor', b'minor', 'version', b'version'] - def HasField(self, field_name: typing.Literal['major', b'major', 'minor', b'minor', 'version', b'version']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['major', b'major', 'minor', b'minor', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['major', b'major', 'minor', b'minor', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_version: _TypeAlias = _typing.Literal['major', 'minor'] + _WhichOneofArgType_version: _TypeAlias = _typing.Literal['version', b'version'] - def WhichOneof(self, oneof_group: typing.Literal['version', b'version']) -> typing.Literal['major', 'minor'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_version) -> _WhichOneofReturnType_version | None: ... -global___ViamAgentVersion = ViamAgentVersion +Global___ViamAgentVersion: _TypeAlias = ViamAgentVersion -@typing.final -class PartSummary(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PART_ID_FIELD_NUMBER: builtins.int - PART_NAME_FIELD_NUMBER: builtins.int - IS_MAIN_PART_FIELD_NUMBER: builtins.int - ONLINE_STATE_FIELD_NUMBER: builtins.int - SECONDS_SINCE_ONLINE_FIELD_NUMBER: builtins.int - LAST_ACCESS_FIELD_NUMBER: builtins.int - LAST_ONLINE_FIELD_NUMBER: builtins.int - VIAM_SERVER_VERSION_FIELD_NUMBER: builtins.int - VIAM_AGENT_VERSION_FIELD_NUMBER: builtins.int - OS_FIELD_NUMBER: builtins.int - PLATFORM_FIELD_NUMBER: builtins.int - PUBLIC_IP_ADDRESS_FIELD_NUMBER: builtins.int - DNS_NAME_FIELD_NUMBER: builtins.int - FRAGMENTS_FIELD_NUMBER: builtins.int - part_id: builtins.str - part_name: builtins.str - is_main_part: builtins.bool - online_state: global___OnlineState.ValueType - seconds_since_online: builtins.int - os: builtins.str - platform: builtins.str - public_ip_address: builtins.str - dns_name: builtins.str +@_typing.final +class PartSummary(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PART_ID_FIELD_NUMBER: _builtins.int + PART_NAME_FIELD_NUMBER: _builtins.int + IS_MAIN_PART_FIELD_NUMBER: _builtins.int + ONLINE_STATE_FIELD_NUMBER: _builtins.int + SECONDS_SINCE_ONLINE_FIELD_NUMBER: _builtins.int + LAST_ACCESS_FIELD_NUMBER: _builtins.int + LAST_ONLINE_FIELD_NUMBER: _builtins.int + VIAM_SERVER_VERSION_FIELD_NUMBER: _builtins.int + VIAM_AGENT_VERSION_FIELD_NUMBER: _builtins.int + OS_FIELD_NUMBER: _builtins.int + PLATFORM_FIELD_NUMBER: _builtins.int + PUBLIC_IP_ADDRESS_FIELD_NUMBER: _builtins.int + DNS_NAME_FIELD_NUMBER: _builtins.int + FRAGMENTS_FIELD_NUMBER: _builtins.int + part_id: _builtins.str + part_name: _builtins.str + is_main_part: _builtins.bool + online_state: Global___OnlineState.ValueType + seconds_since_online: _builtins.int + os: _builtins.str + platform: _builtins.str + public_ip_address: _builtins.str + dns_name: _builtins.str - @property - def last_access(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def last_access(self) -> _timestamp_pb2.Timestamp: ... - @property - def last_online(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def last_online(self) -> _timestamp_pb2.Timestamp: ... - @property - def viam_server_version(self) -> global___ViamServerVersion: + @_builtins.property + def viam_server_version(self) -> Global___ViamServerVersion: ... - @property - def viam_agent_version(self) -> global___ViamAgentVersion: + @_builtins.property + def viam_agent_version(self) -> Global___ViamAgentVersion: ... - @property - def fragments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FragmentSummary]: + @_builtins.property + def fragments(self) -> _containers.RepeatedCompositeFieldContainer[Global___FragmentSummary]: ... - def __init__(self, *, part_id: builtins.str=..., part_name: builtins.str=..., is_main_part: builtins.bool=..., online_state: global___OnlineState.ValueType=..., seconds_since_online: builtins.int=..., last_access: google.protobuf.timestamp_pb2.Timestamp | None=..., last_online: google.protobuf.timestamp_pb2.Timestamp | None=..., viam_server_version: global___ViamServerVersion | None=..., viam_agent_version: global___ViamAgentVersion | None=..., os: builtins.str | None=..., platform: builtins.str | None=..., public_ip_address: builtins.str | None=..., dns_name: builtins.str | None=..., fragments: collections.abc.Iterable[global___FragmentSummary] | None=...) -> None: + def __init__(self, *, part_id: _builtins.str=..., part_name: _builtins.str=..., is_main_part: _builtins.bool=..., online_state: Global___OnlineState.ValueType=..., seconds_since_online: _builtins.int=..., last_access: _timestamp_pb2.Timestamp | None=..., last_online: _timestamp_pb2.Timestamp | None=..., viam_server_version: Global___ViamServerVersion | None=..., viam_agent_version: Global___ViamAgentVersion | None=..., os: _builtins.str | None=..., platform: _builtins.str | None=..., public_ip_address: _builtins.str | None=..., dns_name: _builtins.str | None=..., fragments: _abc.Iterable[Global___FragmentSummary] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_dns_name', b'_dns_name', '_last_access', b'_last_access', '_last_online', b'_last_online', '_os', b'_os', '_platform', b'_platform', '_public_ip_address', b'_public_ip_address', '_viam_agent_version', b'_viam_agent_version', '_viam_server_version', b'_viam_server_version', 'dns_name', b'dns_name', 'last_access', b'last_access', 'last_online', b'last_online', 'os', b'os', 'platform', b'platform', 'public_ip_address', b'public_ip_address', 'viam_agent_version', b'viam_agent_version', 'viam_server_version', b'viam_server_version'] - def HasField(self, field_name: typing.Literal['_dns_name', b'_dns_name', '_last_access', b'_last_access', '_last_online', b'_last_online', '_os', b'_os', '_platform', b'_platform', '_public_ip_address', b'_public_ip_address', '_viam_agent_version', b'_viam_agent_version', '_viam_server_version', b'_viam_server_version', 'dns_name', b'dns_name', 'last_access', b'last_access', 'last_online', b'last_online', 'os', b'os', 'platform', b'platform', 'public_ip_address', b'public_ip_address', 'viam_agent_version', b'viam_agent_version', 'viam_server_version', b'viam_server_version']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_dns_name', b'_dns_name', '_last_access', b'_last_access', '_last_online', b'_last_online', '_os', b'_os', '_platform', b'_platform', '_public_ip_address', b'_public_ip_address', '_viam_agent_version', b'_viam_agent_version', '_viam_server_version', b'_viam_server_version', 'dns_name', b'dns_name', 'fragments', b'fragments', 'is_main_part', b'is_main_part', 'last_access', b'last_access', 'last_online', b'last_online', 'online_state', b'online_state', 'os', b'os', 'part_id', b'part_id', 'part_name', b'part_name', 'platform', b'platform', 'public_ip_address', b'public_ip_address', 'seconds_since_online', b'seconds_since_online', 'viam_agent_version', b'viam_agent_version', 'viam_server_version', b'viam_server_version'] - def ClearField(self, field_name: typing.Literal['_dns_name', b'_dns_name', '_last_access', b'_last_access', '_last_online', b'_last_online', '_os', b'_os', '_platform', b'_platform', '_public_ip_address', b'_public_ip_address', '_viam_agent_version', b'_viam_agent_version', '_viam_server_version', b'_viam_server_version', 'dns_name', b'dns_name', 'fragments', b'fragments', 'is_main_part', b'is_main_part', 'last_access', b'last_access', 'last_online', b'last_online', 'online_state', b'online_state', 'os', b'os', 'part_id', b'part_id', 'part_name', b'part_name', 'platform', b'platform', 'public_ip_address', b'public_ip_address', 'seconds_since_online', b'seconds_since_online', 'viam_agent_version', b'viam_agent_version', 'viam_server_version', b'viam_server_version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__dns_name: _TypeAlias = _typing.Literal['dns_name'] + _WhichOneofArgType__dns_name: _TypeAlias = _typing.Literal['_dns_name', b'_dns_name'] + _WhichOneofReturnType__last_access: _TypeAlias = _typing.Literal['last_access'] + _WhichOneofArgType__last_access: _TypeAlias = _typing.Literal['_last_access', b'_last_access'] + _WhichOneofReturnType__last_online: _TypeAlias = _typing.Literal['last_online'] + _WhichOneofArgType__last_online: _TypeAlias = _typing.Literal['_last_online', b'_last_online'] + _WhichOneofReturnType__os: _TypeAlias = _typing.Literal['os'] + _WhichOneofArgType__os: _TypeAlias = _typing.Literal['_os', b'_os'] + _WhichOneofReturnType__platform: _TypeAlias = _typing.Literal['platform'] + _WhichOneofArgType__platform: _TypeAlias = _typing.Literal['_platform', b'_platform'] + _WhichOneofReturnType__public_ip_address: _TypeAlias = _typing.Literal['public_ip_address'] + _WhichOneofArgType__public_ip_address: _TypeAlias = _typing.Literal['_public_ip_address', b'_public_ip_address'] + _WhichOneofReturnType__viam_agent_version: _TypeAlias = _typing.Literal['viam_agent_version'] + _WhichOneofArgType__viam_agent_version: _TypeAlias = _typing.Literal['_viam_agent_version', b'_viam_agent_version'] + _WhichOneofReturnType__viam_server_version: _TypeAlias = _typing.Literal['viam_server_version'] + _WhichOneofArgType__viam_server_version: _TypeAlias = _typing.Literal['_viam_server_version', b'_viam_server_version'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_dns_name', b'_dns_name']) -> typing.Literal['dns_name'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__dns_name) -> _WhichOneofReturnType__dns_name | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_last_access', b'_last_access']) -> typing.Literal['last_access'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__last_access) -> _WhichOneofReturnType__last_access | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_last_online', b'_last_online']) -> typing.Literal['last_online'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__last_online) -> _WhichOneofReturnType__last_online | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_os', b'_os']) -> typing.Literal['os'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__os) -> _WhichOneofReturnType__os | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_platform', b'_platform']) -> typing.Literal['platform'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__platform) -> _WhichOneofReturnType__platform | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_public_ip_address', b'_public_ip_address']) -> typing.Literal['public_ip_address'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__public_ip_address) -> _WhichOneofReturnType__public_ip_address | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_viam_agent_version', b'_viam_agent_version']) -> typing.Literal['viam_agent_version'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__viam_agent_version) -> _WhichOneofReturnType__viam_agent_version | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_viam_server_version', b'_viam_server_version']) -> typing.Literal['viam_server_version'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__viam_server_version) -> _WhichOneofReturnType__viam_server_version | None: ... -global___PartSummary = PartSummary +Global___PartSummary: _TypeAlias = PartSummary -@typing.final -class ListRobotsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ROBOTS_FIELD_NUMBER: builtins.int +@_typing.final +class ListRobotsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ROBOTS_FIELD_NUMBER: _builtins.int - @property - def robots(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Robot]: + @_builtins.property + def robots(self) -> _containers.RepeatedCompositeFieldContainer[Global___Robot]: ... - def __init__(self, *, robots: collections.abc.Iterable[global___Robot] | None=...) -> None: + def __init__(self, *, robots: _abc.Iterable[Global___Robot] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['robots', b'robots'] - def ClearField(self, field_name: typing.Literal['robots', b'robots']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListRobotsResponse = ListRobotsResponse +Global___ListRobotsResponse: _TypeAlias = ListRobotsResponse -@typing.final -class ListRobotsForLocationsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ROBOTS_FIELD_NUMBER: builtins.int +@_typing.final +class ListRobotsForLocationsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ROBOTS_FIELD_NUMBER: _builtins.int - @property - def robots(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Robot]: + @_builtins.property + def robots(self) -> _containers.RepeatedCompositeFieldContainer[Global___Robot]: ... - def __init__(self, *, robots: collections.abc.Iterable[global___Robot] | None=...) -> None: + def __init__(self, *, robots: _abc.Iterable[Global___Robot] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['robots', b'robots'] - def ClearField(self, field_name: typing.Literal['robots', b'robots']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListRobotsForLocationsResponse = ListRobotsForLocationsResponse +Global___ListRobotsForLocationsResponse: _TypeAlias = ListRobotsForLocationsResponse -@typing.final -class ListRobotsForOrgResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ROBOTS_FIELD_NUMBER: builtins.int +@_typing.final +class ListRobotsForOrgResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ROBOTS_FIELD_NUMBER: _builtins.int - @property - def robots(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Robot]: + @_builtins.property + def robots(self) -> _containers.RepeatedCompositeFieldContainer[Global___Robot]: ... - def __init__(self, *, robots: collections.abc.Iterable[global___Robot] | None=...) -> None: + def __init__(self, *, robots: _abc.Iterable[Global___Robot] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['robots', b'robots'] - def ClearField(self, field_name: typing.Literal['robots', b'robots']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListRobotsForOrgResponse = ListRobotsForOrgResponse +Global___ListRobotsForOrgResponse: _TypeAlias = ListRobotsForOrgResponse -@typing.final -class NewRobotRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - LOCATION_FIELD_NUMBER: builtins.int - name: builtins.str - location: builtins.str +@_typing.final +class NewRobotRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + LOCATION_FIELD_NUMBER: _builtins.int + name: _builtins.str + location: _builtins.str - def __init__(self, *, name: builtins.str=..., location: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=..., location: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location', b'location', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['location', b'location', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___NewRobotRequest = NewRobotRequest +Global___NewRobotRequest: _TypeAlias = NewRobotRequest -@typing.final -class NewRobotResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class NewRobotResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___NewRobotResponse = NewRobotResponse +Global___NewRobotResponse: _TypeAlias = NewRobotResponse -@typing.final -class UpdateRobotRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - LOCATION_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str - location: builtins.str +@_typing.final +class UpdateRobotRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + LOCATION_FIELD_NUMBER: _builtins.int + id: _builtins.str + name: _builtins.str + location: _builtins.str - def __init__(self, *, id: builtins.str=..., name: builtins.str=..., location: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=..., location: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'location', b'location', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'location', b'location', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateRobotRequest = UpdateRobotRequest +Global___UpdateRobotRequest: _TypeAlias = UpdateRobotRequest -@typing.final -class UpdateRobotResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ROBOT_FIELD_NUMBER: builtins.int +@_typing.final +class UpdateRobotResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ROBOT_FIELD_NUMBER: _builtins.int - @property - def robot(self) -> global___Robot: + @_builtins.property + def robot(self) -> Global___Robot: ... - def __init__(self, *, robot: global___Robot | None=...) -> None: + def __init__(self, *, robot: Global___Robot | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['robot', b'robot'] - def HasField(self, field_name: typing.Literal['robot', b'robot']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['robot', b'robot'] - def ClearField(self, field_name: typing.Literal['robot', b'robot']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateRobotResponse = UpdateRobotResponse +Global___UpdateRobotResponse: _TypeAlias = UpdateRobotResponse -@typing.final -class DeleteRobotRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class DeleteRobotRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteRobotRequest = DeleteRobotRequest +Global___DeleteRobotRequest: _TypeAlias = DeleteRobotRequest -@typing.final -class DeleteRobotResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteRobotResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteRobotResponse = DeleteRobotResponse +Global___DeleteRobotResponse: _TypeAlias = DeleteRobotResponse -@typing.final -class GetRobotMetadataRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class GetRobotMetadataRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotMetadataRequest = GetRobotMetadataRequest +Global___GetRobotMetadataRequest: _TypeAlias = GetRobotMetadataRequest -@typing.final -class GetRobotMetadataResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int +@_typing.final +class GetRobotMetadataResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int - @property - def data(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def data(self) -> _struct_pb2.Struct: ... - def __init__(self, *, data: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, data: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def HasField(self, field_name: typing.Literal['data', b'data']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRobotMetadataResponse = GetRobotMetadataResponse +Global___GetRobotMetadataResponse: _TypeAlias = GetRobotMetadataResponse -@typing.final -class UpdateRobotMetadataRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - DATA_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class UpdateRobotMetadataRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + DATA_FIELD_NUMBER: _builtins.int + id: _builtins.str - @property - def data(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def data(self) -> _struct_pb2.Struct: ... - def __init__(self, *, id: builtins.str=..., data: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., data: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def HasField(self, field_name: typing.Literal['data', b'data']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data', 'id', b'id'] - def ClearField(self, field_name: typing.Literal['data', b'data', 'id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateRobotMetadataRequest = UpdateRobotMetadataRequest +Global___UpdateRobotMetadataRequest: _TypeAlias = UpdateRobotMetadataRequest -@typing.final -class UpdateRobotMetadataResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class UpdateRobotMetadataResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___UpdateRobotMetadataResponse = UpdateRobotMetadataResponse +Global___UpdateRobotMetadataResponse: _TypeAlias = UpdateRobotMetadataResponse -@typing.final -class MarkPartAsMainRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PART_ID_FIELD_NUMBER: builtins.int - part_id: builtins.str +@_typing.final +class MarkPartAsMainRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PART_ID_FIELD_NUMBER: _builtins.int + part_id: _builtins.str - def __init__(self, *, part_id: builtins.str=...) -> None: + def __init__(self, *, part_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['part_id', b'part_id'] - def ClearField(self, field_name: typing.Literal['part_id', b'part_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MarkPartAsMainRequest = MarkPartAsMainRequest +Global___MarkPartAsMainRequest: _TypeAlias = MarkPartAsMainRequest -@typing.final -class MarkPartAsMainResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class MarkPartAsMainResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___MarkPartAsMainResponse = MarkPartAsMainResponse +Global___MarkPartAsMainResponse: _TypeAlias = MarkPartAsMainResponse -@typing.final -class MarkPartForRestartRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PART_ID_FIELD_NUMBER: builtins.int - part_id: builtins.str +@_typing.final +class MarkPartForRestartRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PART_ID_FIELD_NUMBER: _builtins.int + part_id: _builtins.str - def __init__(self, *, part_id: builtins.str=...) -> None: + def __init__(self, *, part_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['part_id', b'part_id'] - def ClearField(self, field_name: typing.Literal['part_id', b'part_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MarkPartForRestartRequest = MarkPartForRestartRequest +Global___MarkPartForRestartRequest: _TypeAlias = MarkPartForRestartRequest -@typing.final -class MarkPartForRestartResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class MarkPartForRestartResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___MarkPartForRestartResponse = MarkPartForRestartResponse +Global___MarkPartForRestartResponse: _TypeAlias = MarkPartForRestartResponse -@typing.final -class CreateRobotPartSecretRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PART_ID_FIELD_NUMBER: builtins.int - part_id: builtins.str +@_typing.final +class CreateRobotPartSecretRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PART_ID_FIELD_NUMBER: _builtins.int + part_id: _builtins.str 'Robot Part ID to create the secret in.' - def __init__(self, *, part_id: builtins.str=...) -> None: + def __init__(self, *, part_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['part_id', b'part_id'] - def ClearField(self, field_name: typing.Literal['part_id', b'part_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateRobotPartSecretRequest = CreateRobotPartSecretRequest +Global___CreateRobotPartSecretRequest: _TypeAlias = CreateRobotPartSecretRequest -@typing.final -class CreateRobotPartSecretResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PART_FIELD_NUMBER: builtins.int +@_typing.final +class CreateRobotPartSecretResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PART_FIELD_NUMBER: _builtins.int - @property - def part(self) -> global___RobotPart: + @_builtins.property + def part(self) -> Global___RobotPart: """Location's auth after updates.""" - def __init__(self, *, part: global___RobotPart | None=...) -> None: + def __init__(self, *, part: Global___RobotPart | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['part', b'part'] - def HasField(self, field_name: typing.Literal['part', b'part']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['part', b'part'] - def ClearField(self, field_name: typing.Literal['part', b'part']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateRobotPartSecretResponse = CreateRobotPartSecretResponse +Global___CreateRobotPartSecretResponse: _TypeAlias = CreateRobotPartSecretResponse -@typing.final -class DeleteRobotPartSecretRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PART_ID_FIELD_NUMBER: builtins.int - SECRET_ID_FIELD_NUMBER: builtins.int - part_id: builtins.str - secret_id: builtins.str +@_typing.final +class DeleteRobotPartSecretRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PART_ID_FIELD_NUMBER: _builtins.int + SECRET_ID_FIELD_NUMBER: _builtins.int + part_id: _builtins.str + secret_id: _builtins.str - def __init__(self, *, part_id: builtins.str=..., secret_id: builtins.str=...) -> None: + def __init__(self, *, part_id: _builtins.str=..., secret_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['part_id', b'part_id', 'secret_id', b'secret_id'] - def ClearField(self, field_name: typing.Literal['part_id', b'part_id', 'secret_id', b'secret_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteRobotPartSecretRequest = DeleteRobotPartSecretRequest +Global___DeleteRobotPartSecretRequest: _TypeAlias = DeleteRobotPartSecretRequest -@typing.final -class DeleteRobotPartSecretResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteRobotPartSecretResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteRobotPartSecretResponse = DeleteRobotPartSecretResponse +Global___DeleteRobotPartSecretResponse: _TypeAlias = DeleteRobotPartSecretResponse -@typing.final -class Authorization(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - AUTHORIZATION_TYPE_FIELD_NUMBER: builtins.int - AUTHORIZATION_ID_FIELD_NUMBER: builtins.int - RESOURCE_TYPE_FIELD_NUMBER: builtins.int - RESOURCE_ID_FIELD_NUMBER: builtins.int - IDENTITY_ID_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - IDENTITY_TYPE_FIELD_NUMBER: builtins.int - authorization_type: builtins.str - authorization_id: builtins.str - resource_type: builtins.str - resource_id: builtins.str - identity_id: builtins.str - organization_id: builtins.str - identity_type: builtins.str +@_typing.final +class Authorization(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + AUTHORIZATION_TYPE_FIELD_NUMBER: _builtins.int + AUTHORIZATION_ID_FIELD_NUMBER: _builtins.int + RESOURCE_TYPE_FIELD_NUMBER: _builtins.int + RESOURCE_ID_FIELD_NUMBER: _builtins.int + IDENTITY_ID_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + IDENTITY_TYPE_FIELD_NUMBER: _builtins.int + authorization_type: _builtins.str + authorization_id: _builtins.str + resource_type: _builtins.str + resource_id: _builtins.str + identity_id: _builtins.str + organization_id: _builtins.str + identity_type: _builtins.str - def __init__(self, *, authorization_type: builtins.str=..., authorization_id: builtins.str=..., resource_type: builtins.str=..., resource_id: builtins.str=..., identity_id: builtins.str=..., organization_id: builtins.str=..., identity_type: builtins.str=...) -> None: + def __init__(self, *, authorization_type: _builtins.str=..., authorization_id: _builtins.str=..., resource_type: _builtins.str=..., resource_id: _builtins.str=..., identity_id: _builtins.str=..., organization_id: _builtins.str=..., identity_type: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['authorization_id', b'authorization_id', 'authorization_type', b'authorization_type', 'identity_id', b'identity_id', 'identity_type', b'identity_type', 'organization_id', b'organization_id', 'resource_id', b'resource_id', 'resource_type', b'resource_type'] - def ClearField(self, field_name: typing.Literal['authorization_id', b'authorization_id', 'authorization_type', b'authorization_type', 'identity_id', b'identity_id', 'identity_type', b'identity_type', 'organization_id', b'organization_id', 'resource_id', b'resource_id', 'resource_type', b'resource_type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Authorization = Authorization +Global___Authorization: _TypeAlias = Authorization -@typing.final -class AddRoleRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - AUTHORIZATION_FIELD_NUMBER: builtins.int +@_typing.final +class AddRoleRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + AUTHORIZATION_FIELD_NUMBER: _builtins.int - @property - def authorization(self) -> global___Authorization: + @_builtins.property + def authorization(self) -> Global___Authorization: ... - def __init__(self, *, authorization: global___Authorization | None=...) -> None: + def __init__(self, *, authorization: Global___Authorization | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['authorization', b'authorization'] - def HasField(self, field_name: typing.Literal['authorization', b'authorization']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['authorization', b'authorization'] - def ClearField(self, field_name: typing.Literal['authorization', b'authorization']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AddRoleRequest = AddRoleRequest +Global___AddRoleRequest: _TypeAlias = AddRoleRequest -@typing.final -class AddRoleResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class AddRoleResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___AddRoleResponse = AddRoleResponse +Global___AddRoleResponse: _TypeAlias = AddRoleResponse -@typing.final -class RemoveRoleRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - AUTHORIZATION_FIELD_NUMBER: builtins.int +@_typing.final +class RemoveRoleRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + AUTHORIZATION_FIELD_NUMBER: _builtins.int - @property - def authorization(self) -> global___Authorization: + @_builtins.property + def authorization(self) -> Global___Authorization: ... - def __init__(self, *, authorization: global___Authorization | None=...) -> None: + def __init__(self, *, authorization: Global___Authorization | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['authorization', b'authorization'] - def HasField(self, field_name: typing.Literal['authorization', b'authorization']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['authorization', b'authorization'] - def ClearField(self, field_name: typing.Literal['authorization', b'authorization']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RemoveRoleRequest = RemoveRoleRequest +Global___RemoveRoleRequest: _TypeAlias = RemoveRoleRequest -@typing.final -class RemoveRoleResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class RemoveRoleResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___RemoveRoleResponse = RemoveRoleResponse +Global___RemoveRoleResponse: _TypeAlias = RemoveRoleResponse -@typing.final -class ChangeRoleRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - OLD_AUTHORIZATION_FIELD_NUMBER: builtins.int - NEW_AUTHORIZATION_FIELD_NUMBER: builtins.int +@_typing.final +class ChangeRoleRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + OLD_AUTHORIZATION_FIELD_NUMBER: _builtins.int + NEW_AUTHORIZATION_FIELD_NUMBER: _builtins.int - @property - def old_authorization(self) -> global___Authorization: + @_builtins.property + def old_authorization(self) -> Global___Authorization: ... - @property - def new_authorization(self) -> global___Authorization: + @_builtins.property + def new_authorization(self) -> Global___Authorization: ... - def __init__(self, *, old_authorization: global___Authorization | None=..., new_authorization: global___Authorization | None=...) -> None: + def __init__(self, *, old_authorization: Global___Authorization | None=..., new_authorization: Global___Authorization | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['new_authorization', b'new_authorization', 'old_authorization', b'old_authorization'] - def HasField(self, field_name: typing.Literal['new_authorization', b'new_authorization', 'old_authorization', b'old_authorization']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['new_authorization', b'new_authorization', 'old_authorization', b'old_authorization'] - def ClearField(self, field_name: typing.Literal['new_authorization', b'new_authorization', 'old_authorization', b'old_authorization']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ChangeRoleRequest = ChangeRoleRequest +Global___ChangeRoleRequest: _TypeAlias = ChangeRoleRequest -@typing.final -class ChangeRoleResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ChangeRoleResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ChangeRoleResponse = ChangeRoleResponse +Global___ChangeRoleResponse: _TypeAlias = ChangeRoleResponse -@typing.final -class ListAuthorizationsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - RESOURCE_IDS_FIELD_NUMBER: builtins.int - organization_id: builtins.str +@_typing.final +class ListAuthorizationsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + RESOURCE_IDS_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str - @property - def resource_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def resource_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """optional filter""" - def __init__(self, *, organization_id: builtins.str=..., resource_ids: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., resource_ids: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organization_id', b'organization_id', 'resource_ids', b'resource_ids'] - def ClearField(self, field_name: typing.Literal['organization_id', b'organization_id', 'resource_ids', b'resource_ids']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListAuthorizationsRequest = ListAuthorizationsRequest +Global___ListAuthorizationsRequest: _TypeAlias = ListAuthorizationsRequest -@typing.final -class ListAuthorizationsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - AUTHORIZATIONS_FIELD_NUMBER: builtins.int +@_typing.final +class ListAuthorizationsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + AUTHORIZATIONS_FIELD_NUMBER: _builtins.int - @property - def authorizations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Authorization]: + @_builtins.property + def authorizations(self) -> _containers.RepeatedCompositeFieldContainer[Global___Authorization]: ... - def __init__(self, *, authorizations: collections.abc.Iterable[global___Authorization] | None=...) -> None: + def __init__(self, *, authorizations: _abc.Iterable[Global___Authorization] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['authorizations', b'authorizations'] - def ClearField(self, field_name: typing.Literal['authorizations', b'authorizations']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListAuthorizationsResponse = ListAuthorizationsResponse +Global___ListAuthorizationsResponse: _TypeAlias = ListAuthorizationsResponse -@typing.final -class CheckPermissionsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PERMISSIONS_FIELD_NUMBER: builtins.int +@_typing.final +class CheckPermissionsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PERMISSIONS_FIELD_NUMBER: _builtins.int - @property - def permissions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AuthorizedPermissions]: + @_builtins.property + def permissions(self) -> _containers.RepeatedCompositeFieldContainer[Global___AuthorizedPermissions]: ... - def __init__(self, *, permissions: collections.abc.Iterable[global___AuthorizedPermissions] | None=...) -> None: + def __init__(self, *, permissions: _abc.Iterable[Global___AuthorizedPermissions] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['permissions', b'permissions'] - def ClearField(self, field_name: typing.Literal['permissions', b'permissions']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CheckPermissionsRequest = CheckPermissionsRequest +Global___CheckPermissionsRequest: _TypeAlias = CheckPermissionsRequest -@typing.final -class AuthorizedPermissions(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RESOURCE_TYPE_FIELD_NUMBER: builtins.int - RESOURCE_ID_FIELD_NUMBER: builtins.int - PERMISSIONS_FIELD_NUMBER: builtins.int - resource_type: builtins.str - resource_id: builtins.str +@_typing.final +class AuthorizedPermissions(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + RESOURCE_TYPE_FIELD_NUMBER: _builtins.int + RESOURCE_ID_FIELD_NUMBER: _builtins.int + PERMISSIONS_FIELD_NUMBER: _builtins.int + resource_type: _builtins.str + resource_id: _builtins.str - @property - def permissions(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def permissions(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, resource_type: builtins.str=..., resource_id: builtins.str=..., permissions: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, resource_type: _builtins.str=..., resource_id: _builtins.str=..., permissions: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['permissions', b'permissions', 'resource_id', b'resource_id', 'resource_type', b'resource_type'] - def ClearField(self, field_name: typing.Literal['permissions', b'permissions', 'resource_id', b'resource_id', 'resource_type', b'resource_type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AuthorizedPermissions = AuthorizedPermissions +Global___AuthorizedPermissions: _TypeAlias = AuthorizedPermissions -@typing.final -class CheckPermissionsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - AUTHORIZED_PERMISSIONS_FIELD_NUMBER: builtins.int +@_typing.final +class CheckPermissionsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + AUTHORIZED_PERMISSIONS_FIELD_NUMBER: _builtins.int - @property - def authorized_permissions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AuthorizedPermissions]: + @_builtins.property + def authorized_permissions(self) -> _containers.RepeatedCompositeFieldContainer[Global___AuthorizedPermissions]: ... - def __init__(self, *, authorized_permissions: collections.abc.Iterable[global___AuthorizedPermissions] | None=...) -> None: + def __init__(self, *, authorized_permissions: _abc.Iterable[Global___AuthorizedPermissions] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['authorized_permissions', b'authorized_permissions'] - def ClearField(self, field_name: typing.Literal['authorized_permissions', b'authorized_permissions']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CheckPermissionsResponse = CheckPermissionsResponse +Global___CheckPermissionsResponse: _TypeAlias = CheckPermissionsResponse -@typing.final -class ModuleVersion(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VERSION_FIELD_NUMBER: builtins.int - FILES_FIELD_NUMBER: builtins.int - MODELS_FIELD_NUMBER: builtins.int - ENTRYPOINT_FIELD_NUMBER: builtins.int - FIRST_RUN_FIELD_NUMBER: builtins.int - MARKDOWN_DESCRIPTION_FIELD_NUMBER: builtins.int - APPS_FIELD_NUMBER: builtins.int - version: builtins.str +@_typing.final +class ModuleVersion(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + VERSION_FIELD_NUMBER: _builtins.int + FILES_FIELD_NUMBER: _builtins.int + MODELS_FIELD_NUMBER: _builtins.int + ENTRYPOINT_FIELD_NUMBER: _builtins.int + FIRST_RUN_FIELD_NUMBER: _builtins.int + MARKDOWN_DESCRIPTION_FIELD_NUMBER: _builtins.int + APPS_FIELD_NUMBER: _builtins.int + version: _builtins.str 'The semver string that represents the major/minor/patch version of the module' - entrypoint: builtins.str + entrypoint: _builtins.str 'The entrypoint for this version of the module' - first_run: builtins.str + first_run: _builtins.str 'The path to a setup script that is run before a newly downloaded module starts.' - markdown_description: builtins.str + markdown_description: _builtins.str 'The markdown documentation for this version of the module' - @property - def files(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Uploads]: + @_builtins.property + def files(self) -> _containers.RepeatedCompositeFieldContainer[Global___Uploads]: """The uploads that are available for this module version""" - @property - def models(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Model]: + @_builtins.property + def models(self) -> _containers.RepeatedCompositeFieldContainer[Global___Model]: """The models that this verion of the module provides""" - @property - def apps(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___App]: + @_builtins.property + def apps(self) -> _containers.RepeatedCompositeFieldContainer[Global___App]: """A list of applications associated with the module""" - def __init__(self, *, version: builtins.str=..., files: collections.abc.Iterable[global___Uploads] | None=..., models: collections.abc.Iterable[global___Model] | None=..., entrypoint: builtins.str=..., first_run: builtins.str | None=..., markdown_description: builtins.str | None=..., apps: collections.abc.Iterable[global___App] | None=...) -> None: + def __init__(self, *, version: _builtins.str=..., files: _abc.Iterable[Global___Uploads] | None=..., models: _abc.Iterable[Global___Model] | None=..., entrypoint: _builtins.str=..., first_run: _builtins.str | None=..., markdown_description: _builtins.str | None=..., apps: _abc.Iterable[Global___App] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'first_run', b'first_run', 'markdown_description', b'markdown_description'] - def HasField(self, field_name: typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'first_run', b'first_run', 'markdown_description', b'markdown_description']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'apps', b'apps', 'entrypoint', b'entrypoint', 'files', b'files', 'first_run', b'first_run', 'markdown_description', b'markdown_description', 'models', b'models', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'apps', b'apps', 'entrypoint', b'entrypoint', 'files', b'files', 'first_run', b'first_run', 'markdown_description', b'markdown_description', 'models', b'models', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__first_run: _TypeAlias = _typing.Literal['first_run'] + _WhichOneofArgType__first_run: _TypeAlias = _typing.Literal['_first_run', b'_first_run'] + _WhichOneofReturnType__markdown_description: _TypeAlias = _typing.Literal['markdown_description'] + _WhichOneofArgType__markdown_description: _TypeAlias = _typing.Literal['_markdown_description', b'_markdown_description'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_first_run', b'_first_run']) -> typing.Literal['first_run'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__first_run) -> _WhichOneofReturnType__first_run | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_markdown_description', b'_markdown_description']) -> typing.Literal['markdown_description'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__markdown_description) -> _WhichOneofReturnType__markdown_description | None: ... -global___ModuleVersion = ModuleVersion +Global___ModuleVersion: _TypeAlias = ModuleVersion -@typing.final -class ModuleMetadata(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODELS_FIELD_NUMBER: builtins.int - VERSIONS_FIELD_NUMBER: builtins.int - ENTRYPOINT_FIELD_NUMBER: builtins.int - FIRST_RUN_FIELD_NUMBER: builtins.int - MARKDOWN_DESCRIPTION_FIELD_NUMBER: builtins.int - APPS_FIELD_NUMBER: builtins.int - SOURCE_TYPE_FIELD_NUMBER: builtins.int - LANGUAGE_FIELD_NUMBER: builtins.int - entrypoint: builtins.str +@_typing.final +class ModuleMetadata(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODELS_FIELD_NUMBER: _builtins.int + VERSIONS_FIELD_NUMBER: _builtins.int + ENTRYPOINT_FIELD_NUMBER: _builtins.int + FIRST_RUN_FIELD_NUMBER: _builtins.int + MARKDOWN_DESCRIPTION_FIELD_NUMBER: _builtins.int + APPS_FIELD_NUMBER: _builtins.int + SOURCE_TYPE_FIELD_NUMBER: _builtins.int + LANGUAGE_FIELD_NUMBER: _builtins.int + entrypoint: _builtins.str 'The executable to run to start the module program' - first_run: builtins.str + first_run: _builtins.str 'The path to a setup script that is run before a newly downloaded module starts.' - markdown_description: builtins.str + markdown_description: _builtins.str 'markdown content for the entire module' - source_type: global___ModuleSourceType.ValueType + source_type: Global___ModuleSourceType.ValueType 'Determines the type of module, either a registry module or an inline module.' - language: global___ModuleLanguage.ValueType + language: Global___ModuleLanguage.ValueType 'Specifies the language that the module is written in.' - @property - def models(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Model]: + @_builtins.property + def models(self) -> _containers.RepeatedCompositeFieldContainer[Global___Model]: """A list of models that are available in the module""" - @property - def versions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ModuleVersion]: + @_builtins.property + def versions(self) -> _containers.RepeatedCompositeFieldContainer[Global___ModuleVersion]: """A list of versions of the module that are available When this is returned from the backend, the versions are sorted in ascending order by the semver version """ - @property - def apps(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___App]: + @_builtins.property + def apps(self) -> _containers.RepeatedCompositeFieldContainer[Global___App]: """A list of applications associated with the module""" - def __init__(self, *, models: collections.abc.Iterable[global___Model] | None=..., versions: collections.abc.Iterable[global___ModuleVersion] | None=..., entrypoint: builtins.str=..., first_run: builtins.str | None=..., markdown_description: builtins.str | None=..., apps: collections.abc.Iterable[global___App] | None=..., source_type: global___ModuleSourceType.ValueType | None=..., language: global___ModuleLanguage.ValueType | None=...) -> None: + def __init__(self, *, models: _abc.Iterable[Global___Model] | None=..., versions: _abc.Iterable[Global___ModuleVersion] | None=..., entrypoint: _builtins.str=..., first_run: _builtins.str | None=..., markdown_description: _builtins.str | None=..., apps: _abc.Iterable[Global___App] | None=..., source_type: Global___ModuleSourceType.ValueType | None=..., language: Global___ModuleLanguage.ValueType | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_first_run', b'_first_run', '_language', b'_language', '_markdown_description', b'_markdown_description', '_source_type', b'_source_type', 'first_run', b'first_run', 'language', b'language', 'markdown_description', b'markdown_description', 'source_type', b'source_type'] - def HasField(self, field_name: typing.Literal['_first_run', b'_first_run', '_language', b'_language', '_markdown_description', b'_markdown_description', '_source_type', b'_source_type', 'first_run', b'first_run', 'language', b'language', 'markdown_description', b'markdown_description', 'source_type', b'source_type']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_first_run', b'_first_run', '_language', b'_language', '_markdown_description', b'_markdown_description', '_source_type', b'_source_type', 'apps', b'apps', 'entrypoint', b'entrypoint', 'first_run', b'first_run', 'language', b'language', 'markdown_description', b'markdown_description', 'models', b'models', 'source_type', b'source_type', 'versions', b'versions'] - def ClearField(self, field_name: typing.Literal['_first_run', b'_first_run', '_language', b'_language', '_markdown_description', b'_markdown_description', '_source_type', b'_source_type', 'apps', b'apps', 'entrypoint', b'entrypoint', 'first_run', b'first_run', 'language', b'language', 'markdown_description', b'markdown_description', 'models', b'models', 'source_type', b'source_type', 'versions', b'versions']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__first_run: _TypeAlias = _typing.Literal['first_run'] + _WhichOneofArgType__first_run: _TypeAlias = _typing.Literal['_first_run', b'_first_run'] + _WhichOneofReturnType__language: _TypeAlias = _typing.Literal['language'] + _WhichOneofArgType__language: _TypeAlias = _typing.Literal['_language', b'_language'] + _WhichOneofReturnType__markdown_description: _TypeAlias = _typing.Literal['markdown_description'] + _WhichOneofArgType__markdown_description: _TypeAlias = _typing.Literal['_markdown_description', b'_markdown_description'] + _WhichOneofReturnType__source_type: _TypeAlias = _typing.Literal['source_type'] + _WhichOneofArgType__source_type: _TypeAlias = _typing.Literal['_source_type', b'_source_type'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_first_run', b'_first_run']) -> typing.Literal['first_run'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__first_run) -> _WhichOneofReturnType__first_run | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_language', b'_language']) -> typing.Literal['language'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__language) -> _WhichOneofReturnType__language | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_markdown_description', b'_markdown_description']) -> typing.Literal['markdown_description'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__markdown_description) -> _WhichOneofReturnType__markdown_description | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_source_type', b'_source_type']) -> typing.Literal['source_type'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__source_type) -> _WhichOneofReturnType__source_type | None: ... -global___ModuleMetadata = ModuleMetadata +Global___ModuleMetadata: _TypeAlias = ModuleMetadata -@typing.final -class MLModelVersion(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VERSION_FIELD_NUMBER: builtins.int - CREATED_ON_FIELD_NUMBER: builtins.int - version: builtins.str +@_typing.final +class MLModelVersion(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + VERSION_FIELD_NUMBER: _builtins.int + CREATED_ON_FIELD_NUMBER: _builtins.int + version: _builtins.str - @property - def created_on(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def created_on(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, version: builtins.str=..., created_on: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, version: _builtins.str=..., created_on: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on'] - def HasField(self, field_name: typing.Literal['created_on', b'created_on']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['created_on', b'created_on', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MLModelVersion = MLModelVersion +Global___MLModelVersion: _TypeAlias = MLModelVersion -@typing.final -class MLModelMetadata(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VERSIONS_FIELD_NUMBER: builtins.int - MODEL_TYPE_FIELD_NUMBER: builtins.int - MODEL_FRAMEWORK_FIELD_NUMBER: builtins.int - DETAILED_VERSIONS_FIELD_NUMBER: builtins.int - model_type: app.mltraining.v1.ml_training_pb2.ModelType.ValueType - model_framework: app.mltraining.v1.ml_training_pb2.ModelFramework.ValueType +@_typing.final +class MLModelMetadata(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + VERSIONS_FIELD_NUMBER: _builtins.int + MODEL_TYPE_FIELD_NUMBER: _builtins.int + MODEL_FRAMEWORK_FIELD_NUMBER: _builtins.int + DETAILED_VERSIONS_FIELD_NUMBER: _builtins.int + model_type: _ml_training_pb2.ModelType.ValueType + model_framework: _ml_training_pb2.ModelFramework.ValueType - @property - def versions(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def versions(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """A list of package versions for a ML model""" - @property - def detailed_versions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MLModelVersion]: + @_builtins.property + def detailed_versions(self) -> _containers.RepeatedCompositeFieldContainer[Global___MLModelVersion]: ... - def __init__(self, *, versions: collections.abc.Iterable[builtins.str] | None=..., model_type: app.mltraining.v1.ml_training_pb2.ModelType.ValueType=..., model_framework: app.mltraining.v1.ml_training_pb2.ModelFramework.ValueType=..., detailed_versions: collections.abc.Iterable[global___MLModelVersion] | None=...) -> None: + def __init__(self, *, versions: _abc.Iterable[_builtins.str] | None=..., model_type: _ml_training_pb2.ModelType.ValueType=..., model_framework: _ml_training_pb2.ModelFramework.ValueType=..., detailed_versions: _abc.Iterable[Global___MLModelVersion] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['detailed_versions', b'detailed_versions', 'model_framework', b'model_framework', 'model_type', b'model_type', 'versions', b'versions'] - def ClearField(self, field_name: typing.Literal['detailed_versions', b'detailed_versions', 'model_framework', b'model_framework', 'model_type', b'model_type', 'versions', b'versions']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MLModelMetadata = MLModelMetadata +Global___MLModelMetadata: _TypeAlias = MLModelMetadata -@typing.final -class MLTrainingVersion(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VERSION_FIELD_NUMBER: builtins.int - CREATED_ON_FIELD_NUMBER: builtins.int - version: builtins.str +@_typing.final +class MLTrainingVersion(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + VERSION_FIELD_NUMBER: _builtins.int + CREATED_ON_FIELD_NUMBER: _builtins.int + version: _builtins.str - @property - def created_on(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def created_on(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, version: builtins.str=..., created_on: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, version: _builtins.str=..., created_on: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on'] - def HasField(self, field_name: typing.Literal['created_on', b'created_on']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['created_on', b'created_on', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['created_on', b'created_on', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MLTrainingVersion = MLTrainingVersion +Global___MLTrainingVersion: _TypeAlias = MLTrainingVersion -@typing.final -class MLTrainingMetadata(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VERSIONS_FIELD_NUMBER: builtins.int - MODEL_TYPE_FIELD_NUMBER: builtins.int - MODEL_FRAMEWORK_FIELD_NUMBER: builtins.int - DRAFT_FIELD_NUMBER: builtins.int - model_type: app.mltraining.v1.ml_training_pb2.ModelType.ValueType - model_framework: app.mltraining.v1.ml_training_pb2.ModelFramework.ValueType - draft: builtins.bool +@_typing.final +class MLTrainingMetadata(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + VERSIONS_FIELD_NUMBER: _builtins.int + MODEL_TYPE_FIELD_NUMBER: _builtins.int + MODEL_FRAMEWORK_FIELD_NUMBER: _builtins.int + DRAFT_FIELD_NUMBER: _builtins.int + model_type: _ml_training_pb2.ModelType.ValueType + model_framework: _ml_training_pb2.ModelFramework.ValueType + draft: _builtins.bool - @property - def versions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MLTrainingVersion]: + @_builtins.property + def versions(self) -> _containers.RepeatedCompositeFieldContainer[Global___MLTrainingVersion]: """A list of package versions for ML training source distribution""" - def __init__(self, *, versions: collections.abc.Iterable[global___MLTrainingVersion] | None=..., model_type: app.mltraining.v1.ml_training_pb2.ModelType.ValueType=..., model_framework: app.mltraining.v1.ml_training_pb2.ModelFramework.ValueType=..., draft: builtins.bool=...) -> None: - ... - - def ClearField(self, field_name: typing.Literal['draft', b'draft', 'model_framework', b'model_framework', 'model_type', b'model_type', 'versions', b'versions']) -> None: - ... -global___MLTrainingMetadata = MLTrainingMetadata - -@typing.final -class RegistryItem(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ITEM_ID_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - PUBLIC_NAMESPACE_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - VISIBILITY_FIELD_NUMBER: builtins.int - URL_FIELD_NUMBER: builtins.int - DESCRIPTION_FIELD_NUMBER: builtins.int - TOTAL_ROBOT_USAGE_FIELD_NUMBER: builtins.int - TOTAL_EXTERNAL_ROBOT_USAGE_FIELD_NUMBER: builtins.int - TOTAL_ORGANIZATION_USAGE_FIELD_NUMBER: builtins.int - TOTAL_EXTERNAL_ORGANIZATION_USAGE_FIELD_NUMBER: builtins.int - MODULE_METADATA_FIELD_NUMBER: builtins.int - ML_MODEL_METADATA_FIELD_NUMBER: builtins.int - ML_TRAINING_METADATA_FIELD_NUMBER: builtins.int - CREATED_AT_FIELD_NUMBER: builtins.int - UPDATED_AT_FIELD_NUMBER: builtins.int - item_id: builtins.str + def __init__(self, *, versions: _abc.Iterable[Global___MLTrainingVersion] | None=..., model_type: _ml_training_pb2.ModelType.ValueType=..., model_framework: _ml_training_pb2.ModelFramework.ValueType=..., draft: _builtins.bool=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['draft', b'draft', 'model_framework', b'model_framework', 'model_type', b'model_type', 'versions', b'versions'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___MLTrainingMetadata: _TypeAlias = MLTrainingMetadata + +@_typing.final +class RegistryItem(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ITEM_ID_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + PUBLIC_NAMESPACE_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + VISIBILITY_FIELD_NUMBER: _builtins.int + URL_FIELD_NUMBER: _builtins.int + DESCRIPTION_FIELD_NUMBER: _builtins.int + TOTAL_ROBOT_USAGE_FIELD_NUMBER: _builtins.int + TOTAL_EXTERNAL_ROBOT_USAGE_FIELD_NUMBER: _builtins.int + TOTAL_ORGANIZATION_USAGE_FIELD_NUMBER: _builtins.int + TOTAL_EXTERNAL_ORGANIZATION_USAGE_FIELD_NUMBER: _builtins.int + MODULE_METADATA_FIELD_NUMBER: _builtins.int + ML_MODEL_METADATA_FIELD_NUMBER: _builtins.int + ML_TRAINING_METADATA_FIELD_NUMBER: _builtins.int + CREATED_AT_FIELD_NUMBER: _builtins.int + UPDATED_AT_FIELD_NUMBER: _builtins.int + item_id: _builtins.str 'The id of the item, containing either:\n namespace:item_name when a namespace exists on the org.\n org_id:item_name when a namespace does not exist.\n ' - organization_id: builtins.str + organization_id: _builtins.str 'The id of the organization that owns the item' - public_namespace: builtins.str + public_namespace: _builtins.str 'The public namespace of the organization that owns the module\n This is empty if no public namespace is set\n ' - name: builtins.str + name: _builtins.str 'The name of the registry item' - type: app.packages.v1.packages_pb2.PackageType.ValueType + type: _packages_pb2.PackageType.ValueType 'The type of the item in the registry' - visibility: global___Visibility.ValueType + visibility: Global___Visibility.ValueType 'The visibility of the registry item' - url: builtins.str + url: _builtins.str 'The url to reference for documentation, code, etc.' - description: builtins.str + description: _builtins.str 'A short description of the item that explains its purpose' - total_robot_usage: builtins.int + total_robot_usage: _builtins.int 'The total number of robots using this item' - total_external_robot_usage: builtins.int + total_external_robot_usage: _builtins.int 'The total number of robots using this item outside of the owning org' - total_organization_usage: builtins.int + total_organization_usage: _builtins.int 'The total number of organizations using this item' - total_external_organization_usage: builtins.int + total_external_organization_usage: _builtins.int 'The total number of organizations using this item outside of the owning org' - @property - def module_metadata(self) -> global___ModuleMetadata: + @_builtins.property + def module_metadata(self) -> Global___ModuleMetadata: ... - @property - def ml_model_metadata(self) -> global___MLModelMetadata: + @_builtins.property + def ml_model_metadata(self) -> Global___MLModelMetadata: ... - @property - def ml_training_metadata(self) -> global___MLTrainingMetadata: + @_builtins.property + def ml_training_metadata(self) -> Global___MLTrainingMetadata: ... - @property - def created_at(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def created_at(self) -> _timestamp_pb2.Timestamp: """When the item was created""" - @property - def updated_at(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def updated_at(self) -> _timestamp_pb2.Timestamp: """When the item was last updated, either through an update or upload.""" - def __init__(self, *, item_id: builtins.str=..., organization_id: builtins.str=..., public_namespace: builtins.str=..., name: builtins.str=..., type: app.packages.v1.packages_pb2.PackageType.ValueType=..., visibility: global___Visibility.ValueType=..., url: builtins.str=..., description: builtins.str=..., total_robot_usage: builtins.int=..., total_external_robot_usage: builtins.int=..., total_organization_usage: builtins.int=..., total_external_organization_usage: builtins.int=..., module_metadata: global___ModuleMetadata | None=..., ml_model_metadata: global___MLModelMetadata | None=..., ml_training_metadata: global___MLTrainingMetadata | None=..., created_at: google.protobuf.timestamp_pb2.Timestamp | None=..., updated_at: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, item_id: _builtins.str=..., organization_id: _builtins.str=..., public_namespace: _builtins.str=..., name: _builtins.str=..., type: _packages_pb2.PackageType.ValueType=..., visibility: Global___Visibility.ValueType=..., url: _builtins.str=..., description: _builtins.str=..., total_robot_usage: _builtins.int=..., total_external_robot_usage: _builtins.int=..., total_organization_usage: _builtins.int=..., total_external_organization_usage: _builtins.int=..., module_metadata: Global___ModuleMetadata | None=..., ml_model_metadata: Global___MLModelMetadata | None=..., ml_training_metadata: Global___MLTrainingMetadata | None=..., created_at: _timestamp_pb2.Timestamp | None=..., updated_at: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['created_at', b'created_at', 'metadata', b'metadata', 'ml_model_metadata', b'ml_model_metadata', 'ml_training_metadata', b'ml_training_metadata', 'module_metadata', b'module_metadata', 'updated_at', b'updated_at'] - def HasField(self, field_name: typing.Literal['created_at', b'created_at', 'metadata', b'metadata', 'ml_model_metadata', b'ml_model_metadata', 'ml_training_metadata', b'ml_training_metadata', 'module_metadata', b'module_metadata', 'updated_at', b'updated_at']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['created_at', b'created_at', 'description', b'description', 'item_id', b'item_id', 'metadata', b'metadata', 'ml_model_metadata', b'ml_model_metadata', 'ml_training_metadata', b'ml_training_metadata', 'module_metadata', b'module_metadata', 'name', b'name', 'organization_id', b'organization_id', 'public_namespace', b'public_namespace', 'total_external_organization_usage', b'total_external_organization_usage', 'total_external_robot_usage', b'total_external_robot_usage', 'total_organization_usage', b'total_organization_usage', 'total_robot_usage', b'total_robot_usage', 'type', b'type', 'updated_at', b'updated_at', 'url', b'url', 'visibility', b'visibility'] - def ClearField(self, field_name: typing.Literal['created_at', b'created_at', 'description', b'description', 'item_id', b'item_id', 'metadata', b'metadata', 'ml_model_metadata', b'ml_model_metadata', 'ml_training_metadata', b'ml_training_metadata', 'module_metadata', b'module_metadata', 'name', b'name', 'organization_id', b'organization_id', 'public_namespace', b'public_namespace', 'total_external_organization_usage', b'total_external_organization_usage', 'total_external_robot_usage', b'total_external_robot_usage', 'total_organization_usage', b'total_organization_usage', 'total_robot_usage', b'total_robot_usage', 'type', b'type', 'updated_at', b'updated_at', 'url', b'url', 'visibility', b'visibility']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_metadata: _TypeAlias = _typing.Literal['module_metadata', 'ml_model_metadata', 'ml_training_metadata'] + _WhichOneofArgType_metadata: _TypeAlias = _typing.Literal['metadata', b'metadata'] - def WhichOneof(self, oneof_group: typing.Literal['metadata', b'metadata']) -> typing.Literal['module_metadata', 'ml_model_metadata', 'ml_training_metadata'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_metadata) -> _WhichOneofReturnType_metadata | None: ... -global___RegistryItem = RegistryItem +Global___RegistryItem: _TypeAlias = RegistryItem -@typing.final -class GetRegistryItemRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ITEM_ID_FIELD_NUMBER: builtins.int - INCLUDE_MARKDOWN_DOCUMENTATION_FIELD_NUMBER: builtins.int - item_id: builtins.str - include_markdown_documentation: builtins.bool +@_typing.final +class GetRegistryItemRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ITEM_ID_FIELD_NUMBER: _builtins.int + INCLUDE_MARKDOWN_DOCUMENTATION_FIELD_NUMBER: _builtins.int + item_id: _builtins.str + include_markdown_documentation: _builtins.bool - def __init__(self, *, item_id: builtins.str=..., include_markdown_documentation: builtins.bool | None=...) -> None: + def __init__(self, *, item_id: _builtins.str=..., include_markdown_documentation: _builtins.bool | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', 'include_markdown_documentation', b'include_markdown_documentation'] - def HasField(self, field_name: typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', 'include_markdown_documentation', b'include_markdown_documentation']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', 'include_markdown_documentation', b'include_markdown_documentation', 'item_id', b'item_id'] - def ClearField(self, field_name: typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', 'include_markdown_documentation', b'include_markdown_documentation', 'item_id', b'item_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__include_markdown_documentation: _TypeAlias = _typing.Literal['include_markdown_documentation'] + _WhichOneofArgType__include_markdown_documentation: _TypeAlias = _typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation'] - def WhichOneof(self, oneof_group: typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation']) -> typing.Literal['include_markdown_documentation'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__include_markdown_documentation) -> _WhichOneofReturnType__include_markdown_documentation | None: ... -global___GetRegistryItemRequest = GetRegistryItemRequest +Global___GetRegistryItemRequest: _TypeAlias = GetRegistryItemRequest -@typing.final -class GetRegistryItemResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ITEM_FIELD_NUMBER: builtins.int +@_typing.final +class GetRegistryItemResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ITEM_FIELD_NUMBER: _builtins.int - @property - def item(self) -> global___RegistryItem: + @_builtins.property + def item(self) -> Global___RegistryItem: ... - def __init__(self, *, item: global___RegistryItem | None=...) -> None: + def __init__(self, *, item: Global___RegistryItem | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['item', b'item'] - def HasField(self, field_name: typing.Literal['item', b'item']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['item', b'item'] - def ClearField(self, field_name: typing.Literal['item', b'item']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetRegistryItemResponse = GetRegistryItemResponse +Global___GetRegistryItemResponse: _TypeAlias = GetRegistryItemResponse -@typing.final -class CreateRegistryItemRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - organization_id: builtins.str +@_typing.final +class CreateRegistryItemRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str 'The organization to create the registry item under' - name: builtins.str + name: _builtins.str 'The name of the registry item, which must be unique within your org' - type: app.packages.v1.packages_pb2.PackageType.ValueType + type: _packages_pb2.PackageType.ValueType 'The type of the item in the registry' - def __init__(self, *, organization_id: builtins.str=..., name: builtins.str=..., type: app.packages.v1.packages_pb2.PackageType.ValueType=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., name: _builtins.str=..., type: _packages_pb2.PackageType.ValueType=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'organization_id', b'organization_id', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['name', b'name', 'organization_id', b'organization_id', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateRegistryItemRequest = CreateRegistryItemRequest +Global___CreateRegistryItemRequest: _TypeAlias = CreateRegistryItemRequest -@typing.final -class CreateRegistryItemResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class CreateRegistryItemResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___CreateRegistryItemResponse = CreateRegistryItemResponse +Global___CreateRegistryItemResponse: _TypeAlias = CreateRegistryItemResponse -@typing.final -class UpdateRegistryItemRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ITEM_ID_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - DESCRIPTION_FIELD_NUMBER: builtins.int - VISIBILITY_FIELD_NUMBER: builtins.int - URL_FIELD_NUMBER: builtins.int - UPDATE_MODULE_METADATA_FIELD_NUMBER: builtins.int - UPDATE_ML_MODEL_METADATA_FIELD_NUMBER: builtins.int - UPDATE_ML_TRAINING_METADATA_FIELD_NUMBER: builtins.int - MARKDOWN_DESCRIPTION_FIELD_NUMBER: builtins.int - item_id: builtins.str - type: app.packages.v1.packages_pb2.PackageType.ValueType - description: builtins.str - visibility: global___Visibility.ValueType - url: builtins.str - markdown_description: builtins.str +@_typing.final +class UpdateRegistryItemRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ITEM_ID_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + DESCRIPTION_FIELD_NUMBER: _builtins.int + VISIBILITY_FIELD_NUMBER: _builtins.int + URL_FIELD_NUMBER: _builtins.int + UPDATE_MODULE_METADATA_FIELD_NUMBER: _builtins.int + UPDATE_ML_MODEL_METADATA_FIELD_NUMBER: _builtins.int + UPDATE_ML_TRAINING_METADATA_FIELD_NUMBER: _builtins.int + MARKDOWN_DESCRIPTION_FIELD_NUMBER: _builtins.int + item_id: _builtins.str + type: _packages_pb2.PackageType.ValueType + description: _builtins.str + visibility: Global___Visibility.ValueType + url: _builtins.str + markdown_description: _builtins.str - @property - def update_module_metadata(self) -> global___UpdateModuleMetadata: + @_builtins.property + def update_module_metadata(self) -> Global___UpdateModuleMetadata: ... - @property - def update_ml_model_metadata(self) -> global___UpdateMLModelMetadata: + @_builtins.property + def update_ml_model_metadata(self) -> Global___UpdateMLModelMetadata: ... - @property - def update_ml_training_metadata(self) -> global___UpdateMLTrainingMetadata: + @_builtins.property + def update_ml_training_metadata(self) -> Global___UpdateMLTrainingMetadata: ... - def __init__(self, *, item_id: builtins.str=..., type: app.packages.v1.packages_pb2.PackageType.ValueType=..., description: builtins.str=..., visibility: global___Visibility.ValueType=..., url: builtins.str | None=..., update_module_metadata: global___UpdateModuleMetadata | None=..., update_ml_model_metadata: global___UpdateMLModelMetadata | None=..., update_ml_training_metadata: global___UpdateMLTrainingMetadata | None=..., markdown_description: builtins.str | None=...) -> None: + def __init__(self, *, item_id: _builtins.str=..., type: _packages_pb2.PackageType.ValueType=..., description: _builtins.str=..., visibility: Global___Visibility.ValueType=..., url: _builtins.str | None=..., update_module_metadata: Global___UpdateModuleMetadata | None=..., update_ml_model_metadata: Global___UpdateMLModelMetadata | None=..., update_ml_training_metadata: Global___UpdateMLTrainingMetadata | None=..., markdown_description: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_markdown_description', b'_markdown_description', '_url', b'_url', 'markdown_description', b'markdown_description', 'metadata', b'metadata', 'update_ml_model_metadata', b'update_ml_model_metadata', 'update_ml_training_metadata', b'update_ml_training_metadata', 'update_module_metadata', b'update_module_metadata', 'url', b'url'] - def HasField(self, field_name: typing.Literal['_markdown_description', b'_markdown_description', '_url', b'_url', 'markdown_description', b'markdown_description', 'metadata', b'metadata', 'update_ml_model_metadata', b'update_ml_model_metadata', 'update_ml_training_metadata', b'update_ml_training_metadata', 'update_module_metadata', b'update_module_metadata', 'url', b'url']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_markdown_description', b'_markdown_description', '_url', b'_url', 'description', b'description', 'item_id', b'item_id', 'markdown_description', b'markdown_description', 'metadata', b'metadata', 'type', b'type', 'update_ml_model_metadata', b'update_ml_model_metadata', 'update_ml_training_metadata', b'update_ml_training_metadata', 'update_module_metadata', b'update_module_metadata', 'url', b'url', 'visibility', b'visibility'] - def ClearField(self, field_name: typing.Literal['_markdown_description', b'_markdown_description', '_url', b'_url', 'description', b'description', 'item_id', b'item_id', 'markdown_description', b'markdown_description', 'metadata', b'metadata', 'type', b'type', 'update_ml_model_metadata', b'update_ml_model_metadata', 'update_ml_training_metadata', b'update_ml_training_metadata', 'update_module_metadata', b'update_module_metadata', 'url', b'url', 'visibility', b'visibility']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__markdown_description: _TypeAlias = _typing.Literal['markdown_description'] + _WhichOneofArgType__markdown_description: _TypeAlias = _typing.Literal['_markdown_description', b'_markdown_description'] + _WhichOneofReturnType__url: _TypeAlias = _typing.Literal['url'] + _WhichOneofArgType__url: _TypeAlias = _typing.Literal['_url', b'_url'] + _WhichOneofReturnType_metadata: _TypeAlias = _typing.Literal['update_module_metadata', 'update_ml_model_metadata', 'update_ml_training_metadata'] + _WhichOneofArgType_metadata: _TypeAlias = _typing.Literal['metadata', b'metadata'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_markdown_description', b'_markdown_description']) -> typing.Literal['markdown_description'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__markdown_description) -> _WhichOneofReturnType__markdown_description | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_url', b'_url']) -> typing.Literal['url'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__url) -> _WhichOneofReturnType__url | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['metadata', b'metadata']) -> typing.Literal['update_module_metadata', 'update_ml_model_metadata', 'update_ml_training_metadata'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType_metadata) -> _WhichOneofReturnType_metadata | None: ... -global___UpdateRegistryItemRequest = UpdateRegistryItemRequest +Global___UpdateRegistryItemRequest: _TypeAlias = UpdateRegistryItemRequest -@typing.final -class UpdateRegistryItemResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class UpdateRegistryItemResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___UpdateRegistryItemResponse = UpdateRegistryItemResponse - -@typing.final -class ListRegistryItemsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - TYPES_FIELD_NUMBER: builtins.int - VISIBILITIES_FIELD_NUMBER: builtins.int - PLATFORMS_FIELD_NUMBER: builtins.int - STATUSES_FIELD_NUMBER: builtins.int - SEARCH_TERM_FIELD_NUMBER: builtins.int - PAGE_TOKEN_FIELD_NUMBER: builtins.int - PUBLIC_NAMESPACES_FIELD_NUMBER: builtins.int - INCLUDE_MARKDOWN_DOCUMENTATION_FIELD_NUMBER: builtins.int - MODULE_SOURCE_TYPES_FIELD_NUMBER: builtins.int - MODULE_LANGUAGES_FIELD_NUMBER: builtins.int - organization_id: builtins.str +Global___UpdateRegistryItemResponse: _TypeAlias = UpdateRegistryItemResponse + +@_typing.final +class ListRegistryItemsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + TYPES_FIELD_NUMBER: _builtins.int + VISIBILITIES_FIELD_NUMBER: _builtins.int + PLATFORMS_FIELD_NUMBER: _builtins.int + STATUSES_FIELD_NUMBER: _builtins.int + SEARCH_TERM_FIELD_NUMBER: _builtins.int + PAGE_TOKEN_FIELD_NUMBER: _builtins.int + PUBLIC_NAMESPACES_FIELD_NUMBER: _builtins.int + INCLUDE_MARKDOWN_DOCUMENTATION_FIELD_NUMBER: _builtins.int + MODULE_SOURCE_TYPES_FIELD_NUMBER: _builtins.int + MODULE_LANGUAGES_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str 'The id of the organization to return registry items for.' - search_term: builtins.str - page_token: builtins.str - include_markdown_documentation: builtins.bool + search_term: _builtins.str + page_token: _builtins.str + include_markdown_documentation: _builtins.bool - @property - def types(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[app.packages.v1.packages_pb2.PackageType.ValueType]: + @_builtins.property + def types(self) -> _containers.RepeatedScalarFieldContainer[_packages_pb2.PackageType.ValueType]: ... - @property - def visibilities(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___Visibility.ValueType]: + @_builtins.property + def visibilities(self) -> _containers.RepeatedScalarFieldContainer[Global___Visibility.ValueType]: ... - @property - def platforms(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def platforms(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def statuses(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___RegistryItemStatus.ValueType]: + @_builtins.property + def statuses(self) -> _containers.RepeatedScalarFieldContainer[Global___RegistryItemStatus.ValueType]: ... - @property - def public_namespaces(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def public_namespaces(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """One or more public namespaces to return results for.""" - @property - def module_source_types(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___ModuleSourceType.ValueType]: + @_builtins.property + def module_source_types(self) -> _containers.RepeatedScalarFieldContainer[Global___ModuleSourceType.ValueType]: ... - @property - def module_languages(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___ModuleLanguage.ValueType]: + @_builtins.property + def module_languages(self) -> _containers.RepeatedScalarFieldContainer[Global___ModuleLanguage.ValueType]: ... - def __init__(self, *, organization_id: builtins.str | None=..., types: collections.abc.Iterable[app.packages.v1.packages_pb2.PackageType.ValueType] | None=..., visibilities: collections.abc.Iterable[global___Visibility.ValueType] | None=..., platforms: collections.abc.Iterable[builtins.str] | None=..., statuses: collections.abc.Iterable[global___RegistryItemStatus.ValueType] | None=..., search_term: builtins.str | None=..., page_token: builtins.str | None=..., public_namespaces: collections.abc.Iterable[builtins.str] | None=..., include_markdown_documentation: builtins.bool | None=..., module_source_types: collections.abc.Iterable[global___ModuleSourceType.ValueType] | None=..., module_languages: collections.abc.Iterable[global___ModuleLanguage.ValueType] | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str | None=..., types: _abc.Iterable[_packages_pb2.PackageType.ValueType] | None=..., visibilities: _abc.Iterable[Global___Visibility.ValueType] | None=..., platforms: _abc.Iterable[_builtins.str] | None=..., statuses: _abc.Iterable[Global___RegistryItemStatus.ValueType] | None=..., search_term: _builtins.str | None=..., page_token: _builtins.str | None=..., public_namespaces: _abc.Iterable[_builtins.str] | None=..., include_markdown_documentation: _builtins.bool | None=..., module_source_types: _abc.Iterable[Global___ModuleSourceType.ValueType] | None=..., module_languages: _abc.Iterable[Global___ModuleLanguage.ValueType] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', '_organization_id', b'_organization_id', '_page_token', b'_page_token', '_search_term', b'_search_term', 'include_markdown_documentation', b'include_markdown_documentation', 'organization_id', b'organization_id', 'page_token', b'page_token', 'search_term', b'search_term'] - def HasField(self, field_name: typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', '_organization_id', b'_organization_id', '_page_token', b'_page_token', '_search_term', b'_search_term', 'include_markdown_documentation', b'include_markdown_documentation', 'organization_id', b'organization_id', 'page_token', b'page_token', 'search_term', b'search_term']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', '_organization_id', b'_organization_id', '_page_token', b'_page_token', '_search_term', b'_search_term', 'include_markdown_documentation', b'include_markdown_documentation', 'module_languages', b'module_languages', 'module_source_types', b'module_source_types', 'organization_id', b'organization_id', 'page_token', b'page_token', 'platforms', b'platforms', 'public_namespaces', b'public_namespaces', 'search_term', b'search_term', 'statuses', b'statuses', 'types', b'types', 'visibilities', b'visibilities'] - def ClearField(self, field_name: typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', '_organization_id', b'_organization_id', '_page_token', b'_page_token', '_search_term', b'_search_term', 'include_markdown_documentation', b'include_markdown_documentation', 'module_languages', b'module_languages', 'module_source_types', b'module_source_types', 'organization_id', b'organization_id', 'page_token', b'page_token', 'platforms', b'platforms', 'public_namespaces', b'public_namespaces', 'search_term', b'search_term', 'statuses', b'statuses', 'types', b'types', 'visibilities', b'visibilities']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__include_markdown_documentation: _TypeAlias = _typing.Literal['include_markdown_documentation'] + _WhichOneofArgType__include_markdown_documentation: _TypeAlias = _typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation'] + _WhichOneofReturnType__organization_id: _TypeAlias = _typing.Literal['organization_id'] + _WhichOneofArgType__organization_id: _TypeAlias = _typing.Literal['_organization_id', b'_organization_id'] + _WhichOneofReturnType__page_token: _TypeAlias = _typing.Literal['page_token'] + _WhichOneofArgType__page_token: _TypeAlias = _typing.Literal['_page_token', b'_page_token'] + _WhichOneofReturnType__search_term: _TypeAlias = _typing.Literal['search_term'] + _WhichOneofArgType__search_term: _TypeAlias = _typing.Literal['_search_term', b'_search_term'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation']) -> typing.Literal['include_markdown_documentation'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__include_markdown_documentation) -> _WhichOneofReturnType__include_markdown_documentation | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_organization_id', b'_organization_id']) -> typing.Literal['organization_id'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__organization_id) -> _WhichOneofReturnType__organization_id | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_page_token', b'_page_token']) -> typing.Literal['page_token'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__page_token) -> _WhichOneofReturnType__page_token | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_search_term', b'_search_term']) -> typing.Literal['search_term'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__search_term) -> _WhichOneofReturnType__search_term | None: ... -global___ListRegistryItemsRequest = ListRegistryItemsRequest +Global___ListRegistryItemsRequest: _TypeAlias = ListRegistryItemsRequest -@typing.final -class ListRegistryItemsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ITEMS_FIELD_NUMBER: builtins.int +@_typing.final +class ListRegistryItemsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ITEMS_FIELD_NUMBER: _builtins.int - @property - def items(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RegistryItem]: + @_builtins.property + def items(self) -> _containers.RepeatedCompositeFieldContainer[Global___RegistryItem]: ... - def __init__(self, *, items: collections.abc.Iterable[global___RegistryItem] | None=...) -> None: + def __init__(self, *, items: _abc.Iterable[Global___RegistryItem] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['items', b'items'] - def ClearField(self, field_name: typing.Literal['items', b'items']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListRegistryItemsResponse = ListRegistryItemsResponse +Global___ListRegistryItemsResponse: _TypeAlias = ListRegistryItemsResponse -@typing.final -class DeleteRegistryItemRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ITEM_ID_FIELD_NUMBER: builtins.int - item_id: builtins.str +@_typing.final +class DeleteRegistryItemRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ITEM_ID_FIELD_NUMBER: _builtins.int + item_id: _builtins.str "The id of the item (formatted as prefix:name where prefix is the owner's orgid or namespace)" - def __init__(self, *, item_id: builtins.str=...) -> None: + def __init__(self, *, item_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['item_id', b'item_id'] - def ClearField(self, field_name: typing.Literal['item_id', b'item_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteRegistryItemRequest = DeleteRegistryItemRequest +Global___DeleteRegistryItemRequest: _TypeAlias = DeleteRegistryItemRequest -@typing.final -class DeleteRegistryItemResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteRegistryItemResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteRegistryItemResponse = DeleteRegistryItemResponse +Global___DeleteRegistryItemResponse: _TypeAlias = DeleteRegistryItemResponse -@typing.final -class RenameRegistryItemRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ITEM_ID_FIELD_NUMBER: builtins.int - NEW_NAME_FIELD_NUMBER: builtins.int - item_id: builtins.str - new_name: builtins.str +@_typing.final +class RenameRegistryItemRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ITEM_ID_FIELD_NUMBER: _builtins.int + NEW_NAME_FIELD_NUMBER: _builtins.int + item_id: _builtins.str + new_name: _builtins.str - def __init__(self, *, item_id: builtins.str=..., new_name: builtins.str=...) -> None: + def __init__(self, *, item_id: _builtins.str=..., new_name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['item_id', b'item_id', 'new_name', b'new_name'] - def ClearField(self, field_name: typing.Literal['item_id', b'item_id', 'new_name', b'new_name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RenameRegistryItemRequest = RenameRegistryItemRequest +Global___RenameRegistryItemRequest: _TypeAlias = RenameRegistryItemRequest -@typing.final -class RenameRegistryItemResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ITEM_FIELD_NUMBER: builtins.int +@_typing.final +class RenameRegistryItemResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ITEM_FIELD_NUMBER: _builtins.int - @property - def item(self) -> global___RegistryItem: + @_builtins.property + def item(self) -> Global___RegistryItem: ... - def __init__(self, *, item: global___RegistryItem | None=...) -> None: + def __init__(self, *, item: Global___RegistryItem | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['item', b'item'] - def HasField(self, field_name: typing.Literal['item', b'item']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['item', b'item'] - def ClearField(self, field_name: typing.Literal['item', b'item']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RenameRegistryItemResponse = RenameRegistryItemResponse +Global___RenameRegistryItemResponse: _TypeAlias = RenameRegistryItemResponse -@typing.final -class TransferRegistryItemRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ITEM_ID_FIELD_NUMBER: builtins.int - NEW_PUBLIC_NAMESPACE_FIELD_NUMBER: builtins.int - item_id: builtins.str - new_public_namespace: builtins.str +@_typing.final +class TransferRegistryItemRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ITEM_ID_FIELD_NUMBER: _builtins.int + NEW_PUBLIC_NAMESPACE_FIELD_NUMBER: _builtins.int + item_id: _builtins.str + new_public_namespace: _builtins.str - def __init__(self, *, item_id: builtins.str=..., new_public_namespace: builtins.str=...) -> None: + def __init__(self, *, item_id: _builtins.str=..., new_public_namespace: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['item_id', b'item_id', 'new_public_namespace', b'new_public_namespace'] - def ClearField(self, field_name: typing.Literal['item_id', b'item_id', 'new_public_namespace', b'new_public_namespace']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TransferRegistryItemRequest = TransferRegistryItemRequest +Global___TransferRegistryItemRequest: _TypeAlias = TransferRegistryItemRequest -@typing.final -class TransferRegistryItemResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class TransferRegistryItemResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___TransferRegistryItemResponse = TransferRegistryItemResponse +Global___TransferRegistryItemResponse: _TypeAlias = TransferRegistryItemResponse -@typing.final -class CreateModuleRequest(google.protobuf.message.Message): +@_typing.final +class CreateModuleRequest(_message.Message): """Modules""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - organization_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str 'The organization to create the module under' - name: builtins.str + name: _builtins.str 'The name of the module, which must be unique within your org' - def __init__(self, *, organization_id: builtins.str=..., name: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['name', b'name', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateModuleRequest = CreateModuleRequest +Global___CreateModuleRequest: _TypeAlias = CreateModuleRequest -@typing.final -class CreateModuleResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODULE_ID_FIELD_NUMBER: builtins.int - URL_FIELD_NUMBER: builtins.int - module_id: builtins.str +@_typing.final +class CreateModuleResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODULE_ID_FIELD_NUMBER: _builtins.int + URL_FIELD_NUMBER: _builtins.int + module_id: _builtins.str "The id of the module (formatted as prefix:name where prefix is the module owner's orgid or namespace)" - url: builtins.str + url: _builtins.str 'The detail page of the module' - def __init__(self, *, module_id: builtins.str=..., url: builtins.str=...) -> None: + def __init__(self, *, module_id: _builtins.str=..., url: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['module_id', b'module_id', 'url', b'url'] - def ClearField(self, field_name: typing.Literal['module_id', b'module_id', 'url', b'url']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateModuleResponse = CreateModuleResponse +Global___CreateModuleResponse: _TypeAlias = CreateModuleResponse -@typing.final -class UpdateModuleRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODULE_ID_FIELD_NUMBER: builtins.int - VISIBILITY_FIELD_NUMBER: builtins.int - URL_FIELD_NUMBER: builtins.int - DESCRIPTION_FIELD_NUMBER: builtins.int - MODELS_FIELD_NUMBER: builtins.int - ENTRYPOINT_FIELD_NUMBER: builtins.int - FIRST_RUN_FIELD_NUMBER: builtins.int - APPS_FIELD_NUMBER: builtins.int - MARKDOWN_DESCRIPTION_FIELD_NUMBER: builtins.int - module_id: builtins.str +@_typing.final +class UpdateModuleRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODULE_ID_FIELD_NUMBER: _builtins.int + VISIBILITY_FIELD_NUMBER: _builtins.int + URL_FIELD_NUMBER: _builtins.int + DESCRIPTION_FIELD_NUMBER: _builtins.int + MODELS_FIELD_NUMBER: _builtins.int + ENTRYPOINT_FIELD_NUMBER: _builtins.int + FIRST_RUN_FIELD_NUMBER: _builtins.int + APPS_FIELD_NUMBER: _builtins.int + MARKDOWN_DESCRIPTION_FIELD_NUMBER: _builtins.int + module_id: _builtins.str "The id of the module (formatted as prefix:name where prefix is the module owner's orgid or namespace)" - visibility: global___Visibility.ValueType + visibility: Global___Visibility.ValueType 'The visibility that should be set for the module' - url: builtins.str + url: _builtins.str 'The url to reference for documentation, code, etc.' - description: builtins.str + description: _builtins.str 'A short description of the module that explains its purpose' - entrypoint: builtins.str + entrypoint: _builtins.str 'The executable to run to start the module program' - first_run: builtins.str + first_run: _builtins.str 'The path to a setup script that is run before a newly downloaded module starts.' - markdown_description: builtins.str + markdown_description: _builtins.str 'longer documentation provided in markdown format' - @property - def models(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Model]: + @_builtins.property + def models(self) -> _containers.RepeatedCompositeFieldContainer[Global___Model]: """A list of models that are available in the module""" - @property - def apps(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___App]: + @_builtins.property + def apps(self) -> _containers.RepeatedCompositeFieldContainer[Global___App]: """A list of applications associated with the module""" - def __init__(self, *, module_id: builtins.str=..., visibility: global___Visibility.ValueType=..., url: builtins.str=..., description: builtins.str=..., models: collections.abc.Iterable[global___Model] | None=..., entrypoint: builtins.str=..., first_run: builtins.str | None=..., apps: collections.abc.Iterable[global___App] | None=..., markdown_description: builtins.str | None=...) -> None: + def __init__(self, *, module_id: _builtins.str=..., visibility: Global___Visibility.ValueType=..., url: _builtins.str=..., description: _builtins.str=..., models: _abc.Iterable[Global___Model] | None=..., entrypoint: _builtins.str=..., first_run: _builtins.str | None=..., apps: _abc.Iterable[Global___App] | None=..., markdown_description: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'first_run', b'first_run', 'markdown_description', b'markdown_description'] - def HasField(self, field_name: typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'first_run', b'first_run', 'markdown_description', b'markdown_description']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'apps', b'apps', 'description', b'description', 'entrypoint', b'entrypoint', 'first_run', b'first_run', 'markdown_description', b'markdown_description', 'models', b'models', 'module_id', b'module_id', 'url', b'url', 'visibility', b'visibility'] - def ClearField(self, field_name: typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'apps', b'apps', 'description', b'description', 'entrypoint', b'entrypoint', 'first_run', b'first_run', 'markdown_description', b'markdown_description', 'models', b'models', 'module_id', b'module_id', 'url', b'url', 'visibility', b'visibility']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__first_run: _TypeAlias = _typing.Literal['first_run'] + _WhichOneofArgType__first_run: _TypeAlias = _typing.Literal['_first_run', b'_first_run'] + _WhichOneofReturnType__markdown_description: _TypeAlias = _typing.Literal['markdown_description'] + _WhichOneofArgType__markdown_description: _TypeAlias = _typing.Literal['_markdown_description', b'_markdown_description'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_first_run', b'_first_run']) -> typing.Literal['first_run'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__first_run) -> _WhichOneofReturnType__first_run | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_markdown_description', b'_markdown_description']) -> typing.Literal['markdown_description'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__markdown_description) -> _WhichOneofReturnType__markdown_description | None: ... -global___UpdateModuleRequest = UpdateModuleRequest +Global___UpdateModuleRequest: _TypeAlias = UpdateModuleRequest -@typing.final -class App(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - ENTRYPOINT_FIELD_NUMBER: builtins.int - FRAGMENT_IDS_FIELD_NUMBER: builtins.int - LOGO_PATH_FIELD_NUMBER: builtins.int - CUSTOMIZATIONS_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class App(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + ENTRYPOINT_FIELD_NUMBER: _builtins.int + FRAGMENT_IDS_FIELD_NUMBER: _builtins.int + LOGO_PATH_FIELD_NUMBER: _builtins.int + CUSTOMIZATIONS_FIELD_NUMBER: _builtins.int + name: _builtins.str 'The name of the application' - type: builtins.str + type: _builtins.str 'The type of the application' - entrypoint: builtins.str + entrypoint: _builtins.str 'The entrypoint of the application' - logo_path: builtins.str + logo_path: _builtins.str 'Optional: path to a custom logo for branding' - @property - def fragment_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def fragment_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """Optional: fragment IDs to filter machines in the picker""" - @property - def customizations(self) -> global___AppCustomizations: + @_builtins.property + def customizations(self) -> Global___AppCustomizations: """Optional: structured customizations for the app (e.g., machine picker headings)""" - def __init__(self, *, name: builtins.str=..., type: builtins.str=..., entrypoint: builtins.str=..., fragment_ids: collections.abc.Iterable[builtins.str] | None=..., logo_path: builtins.str | None=..., customizations: global___AppCustomizations | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., type: _builtins.str=..., entrypoint: _builtins.str=..., fragment_ids: _abc.Iterable[_builtins.str] | None=..., logo_path: _builtins.str | None=..., customizations: Global___AppCustomizations | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_logo_path', b'_logo_path', 'customizations', b'customizations', 'logo_path', b'logo_path'] - def HasField(self, field_name: typing.Literal['_logo_path', b'_logo_path', 'customizations', b'customizations', 'logo_path', b'logo_path']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_logo_path', b'_logo_path', 'customizations', b'customizations', 'entrypoint', b'entrypoint', 'fragment_ids', b'fragment_ids', 'logo_path', b'logo_path', 'name', b'name', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['_logo_path', b'_logo_path', 'customizations', b'customizations', 'entrypoint', b'entrypoint', 'fragment_ids', b'fragment_ids', 'logo_path', b'logo_path', 'name', b'name', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__logo_path: _TypeAlias = _typing.Literal['logo_path'] + _WhichOneofArgType__logo_path: _TypeAlias = _typing.Literal['_logo_path', b'_logo_path'] - def WhichOneof(self, oneof_group: typing.Literal['_logo_path', b'_logo_path']) -> typing.Literal['logo_path'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__logo_path) -> _WhichOneofReturnType__logo_path | None: ... -global___App = App +Global___App: _TypeAlias = App -@typing.final -class UpdateModuleResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - URL_FIELD_NUMBER: builtins.int - url: builtins.str +@_typing.final +class UpdateModuleResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + URL_FIELD_NUMBER: _builtins.int + url: _builtins.str 'The detail page of the module' - def __init__(self, *, url: builtins.str=...) -> None: + def __init__(self, *, url: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['url', b'url'] - def ClearField(self, field_name: typing.Literal['url', b'url']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateModuleResponse = UpdateModuleResponse +Global___UpdateModuleResponse: _TypeAlias = UpdateModuleResponse -@typing.final -class UpdateModuleMetadata(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODELS_FIELD_NUMBER: builtins.int - ENTRYPOINT_FIELD_NUMBER: builtins.int - APPS_FIELD_NUMBER: builtins.int - SOURCE_TYPE_FIELD_NUMBER: builtins.int - LANGUAGE_FIELD_NUMBER: builtins.int - entrypoint: builtins.str +@_typing.final +class UpdateModuleMetadata(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODELS_FIELD_NUMBER: _builtins.int + ENTRYPOINT_FIELD_NUMBER: _builtins.int + APPS_FIELD_NUMBER: _builtins.int + SOURCE_TYPE_FIELD_NUMBER: _builtins.int + LANGUAGE_FIELD_NUMBER: _builtins.int + entrypoint: _builtins.str 'The executable to run to start the module program' - source_type: global___ModuleSourceType.ValueType + source_type: Global___ModuleSourceType.ValueType 'Determines where the source code of module is managed, either externally or hosted by viam.' - language: global___ModuleLanguage.ValueType + language: Global___ModuleLanguage.ValueType 'The language the module is written in' - @property - def models(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Model]: + @_builtins.property + def models(self) -> _containers.RepeatedCompositeFieldContainer[Global___Model]: """A list of models that are available in the module""" - @property - def apps(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___App]: + @_builtins.property + def apps(self) -> _containers.RepeatedCompositeFieldContainer[Global___App]: """A list of applications associated with the module""" - def __init__(self, *, models: collections.abc.Iterable[global___Model] | None=..., entrypoint: builtins.str=..., apps: collections.abc.Iterable[global___App] | None=..., source_type: global___ModuleSourceType.ValueType | None=..., language: global___ModuleLanguage.ValueType | None=...) -> None: + def __init__(self, *, models: _abc.Iterable[Global___Model] | None=..., entrypoint: _builtins.str=..., apps: _abc.Iterable[Global___App] | None=..., source_type: Global___ModuleSourceType.ValueType | None=..., language: Global___ModuleLanguage.ValueType | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_language', b'_language', '_source_type', b'_source_type', 'language', b'language', 'source_type', b'source_type'] - def HasField(self, field_name: typing.Literal['_language', b'_language', '_source_type', b'_source_type', 'language', b'language', 'source_type', b'source_type']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_language', b'_language', '_source_type', b'_source_type', 'apps', b'apps', 'entrypoint', b'entrypoint', 'language', b'language', 'models', b'models', 'source_type', b'source_type'] - def ClearField(self, field_name: typing.Literal['_language', b'_language', '_source_type', b'_source_type', 'apps', b'apps', 'entrypoint', b'entrypoint', 'language', b'language', 'models', b'models', 'source_type', b'source_type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__language: _TypeAlias = _typing.Literal['language'] + _WhichOneofArgType__language: _TypeAlias = _typing.Literal['_language', b'_language'] + _WhichOneofReturnType__source_type: _TypeAlias = _typing.Literal['source_type'] + _WhichOneofArgType__source_type: _TypeAlias = _typing.Literal['_source_type', b'_source_type'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_language', b'_language']) -> typing.Literal['language'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__language) -> _WhichOneofReturnType__language | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_source_type', b'_source_type']) -> typing.Literal['source_type'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__source_type) -> _WhichOneofReturnType__source_type | None: ... -global___UpdateModuleMetadata = UpdateModuleMetadata +Global___UpdateModuleMetadata: _TypeAlias = UpdateModuleMetadata -@typing.final -class UpdateMLModelMetadata(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODEL_TYPE_FIELD_NUMBER: builtins.int - MODEL_FRAMEWORK_FIELD_NUMBER: builtins.int - model_type: app.mltraining.v1.ml_training_pb2.ModelType.ValueType - model_framework: app.mltraining.v1.ml_training_pb2.ModelFramework.ValueType +@_typing.final +class UpdateMLModelMetadata(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODEL_TYPE_FIELD_NUMBER: _builtins.int + MODEL_FRAMEWORK_FIELD_NUMBER: _builtins.int + model_type: _ml_training_pb2.ModelType.ValueType + model_framework: _ml_training_pb2.ModelFramework.ValueType - def __init__(self, *, model_type: app.mltraining.v1.ml_training_pb2.ModelType.ValueType=..., model_framework: app.mltraining.v1.ml_training_pb2.ModelFramework.ValueType=...) -> None: + def __init__(self, *, model_type: _ml_training_pb2.ModelType.ValueType=..., model_framework: _ml_training_pb2.ModelFramework.ValueType=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['model_framework', b'model_framework', 'model_type', b'model_type'] - def ClearField(self, field_name: typing.Literal['model_framework', b'model_framework', 'model_type', b'model_type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateMLModelMetadata = UpdateMLModelMetadata +Global___UpdateMLModelMetadata: _TypeAlias = UpdateMLModelMetadata -@typing.final -class UpdateMLTrainingMetadata(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODEL_TYPE_FIELD_NUMBER: builtins.int - MODEL_FRAMEWORK_FIELD_NUMBER: builtins.int - DRAFT_FIELD_NUMBER: builtins.int - model_type: app.mltraining.v1.ml_training_pb2.ModelType.ValueType - model_framework: app.mltraining.v1.ml_training_pb2.ModelFramework.ValueType - draft: builtins.bool +@_typing.final +class UpdateMLTrainingMetadata(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODEL_TYPE_FIELD_NUMBER: _builtins.int + MODEL_FRAMEWORK_FIELD_NUMBER: _builtins.int + DRAFT_FIELD_NUMBER: _builtins.int + model_type: _ml_training_pb2.ModelType.ValueType + model_framework: _ml_training_pb2.ModelFramework.ValueType + draft: _builtins.bool - def __init__(self, *, model_type: app.mltraining.v1.ml_training_pb2.ModelType.ValueType=..., model_framework: app.mltraining.v1.ml_training_pb2.ModelFramework.ValueType=..., draft: builtins.bool=...) -> None: + def __init__(self, *, model_type: _ml_training_pb2.ModelType.ValueType=..., model_framework: _ml_training_pb2.ModelFramework.ValueType=..., draft: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['draft', b'draft', 'model_framework', b'model_framework', 'model_type', b'model_type'] - def ClearField(self, field_name: typing.Literal['draft', b'draft', 'model_framework', b'model_framework', 'model_type', b'model_type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateMLTrainingMetadata = UpdateMLTrainingMetadata +Global___UpdateMLTrainingMetadata: _TypeAlias = UpdateMLTrainingMetadata -@typing.final -class Model(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - API_FIELD_NUMBER: builtins.int - MODEL_FIELD_NUMBER: builtins.int - MARKDOWN_DOCUMENTATION_FIELD_NUMBER: builtins.int - DESCRIPTION_FIELD_NUMBER: builtins.int - SUPPORTED_HARDWARE_FIELD_NUMBER: builtins.int - api: builtins.str +@_typing.final +class Model(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + API_FIELD_NUMBER: _builtins.int + MODEL_FIELD_NUMBER: _builtins.int + MARKDOWN_DOCUMENTATION_FIELD_NUMBER: _builtins.int + DESCRIPTION_FIELD_NUMBER: _builtins.int + SUPPORTED_HARDWARE_FIELD_NUMBER: _builtins.int + api: _builtins.str 'The colon-delimited-triplet of the api implemented by the model' - model: builtins.str + model: _builtins.str 'The colon-delimited-triplet of the model' - markdown_documentation: builtins.str + markdown_documentation: _builtins.str 'The markdown content describing the usage of the model' - description: builtins.str + description: _builtins.str 'A short description of the model that explains its purpose' - @property - def supported_hardware(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def supported_hardware(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """A list of supported hardware names""" - def __init__(self, *, api: builtins.str=..., model: builtins.str=..., markdown_documentation: builtins.str | None=..., description: builtins.str | None=..., supported_hardware: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, api: _builtins.str=..., model: _builtins.str=..., markdown_documentation: _builtins.str | None=..., description: _builtins.str | None=..., supported_hardware: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_description', b'_description', '_markdown_documentation', b'_markdown_documentation', 'description', b'description', 'markdown_documentation', b'markdown_documentation'] - def HasField(self, field_name: typing.Literal['_description', b'_description', '_markdown_documentation', b'_markdown_documentation', 'description', b'description', 'markdown_documentation', b'markdown_documentation']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_description', b'_description', '_markdown_documentation', b'_markdown_documentation', 'api', b'api', 'description', b'description', 'markdown_documentation', b'markdown_documentation', 'model', b'model', 'supported_hardware', b'supported_hardware'] - def ClearField(self, field_name: typing.Literal['_description', b'_description', '_markdown_documentation', b'_markdown_documentation', 'api', b'api', 'description', b'description', 'markdown_documentation', b'markdown_documentation', 'model', b'model', 'supported_hardware', b'supported_hardware']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__description: _TypeAlias = _typing.Literal['description'] + _WhichOneofArgType__description: _TypeAlias = _typing.Literal['_description', b'_description'] + _WhichOneofReturnType__markdown_documentation: _TypeAlias = _typing.Literal['markdown_documentation'] + _WhichOneofArgType__markdown_documentation: _TypeAlias = _typing.Literal['_markdown_documentation', b'_markdown_documentation'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_description', b'_description']) -> typing.Literal['description'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__description) -> _WhichOneofReturnType__description | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_markdown_documentation', b'_markdown_documentation']) -> typing.Literal['markdown_documentation'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__markdown_documentation) -> _WhichOneofReturnType__markdown_documentation | None: ... -global___Model = Model +Global___Model: _TypeAlias = Model -@typing.final -class ModuleFileInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODULE_ID_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - PLATFORM_FIELD_NUMBER: builtins.int - PLATFORM_TAGS_FIELD_NUMBER: builtins.int - module_id: builtins.str +@_typing.final +class ModuleFileInfo(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODULE_ID_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + PLATFORM_FIELD_NUMBER: _builtins.int + PLATFORM_TAGS_FIELD_NUMBER: _builtins.int + module_id: _builtins.str "The id of the module (formatted as prefix:name where prefix is the module owner's orgid or namespace)" - version: builtins.str + version: _builtins.str 'The semver string that represents the new major/minor/patch version of the module' - platform: builtins.str + platform: _builtins.str 'The platform that the file is built to run on' - @property - def platform_tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def platform_tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """Platform tag constraints. When a robot requests its config, it uploads a platform and a list of platform tags. The platform is checked against `platform` above, and the tags are checked against this list. """ - def __init__(self, *, module_id: builtins.str=..., version: builtins.str=..., platform: builtins.str=..., platform_tags: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, module_id: _builtins.str=..., version: _builtins.str=..., platform: _builtins.str=..., platform_tags: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['module_id', b'module_id', 'platform', b'platform', 'platform_tags', b'platform_tags', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['module_id', b'module_id', 'platform', b'platform', 'platform_tags', b'platform_tags', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ModuleFileInfo = ModuleFileInfo +Global___ModuleFileInfo: _TypeAlias = ModuleFileInfo -@typing.final -class UploadModuleFileRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODULE_FILE_INFO_FIELD_NUMBER: builtins.int - FILE_FIELD_NUMBER: builtins.int - file: builtins.bytes +@_typing.final +class UploadModuleFileRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODULE_FILE_INFO_FIELD_NUMBER: _builtins.int + FILE_FIELD_NUMBER: _builtins.int + file: _builtins.bytes 'The file contents to be uploaded' - @property - def module_file_info(self) -> global___ModuleFileInfo: + @_builtins.property + def module_file_info(self) -> Global___ModuleFileInfo: """The information about the module file being uploaded""" - def __init__(self, *, module_file_info: global___ModuleFileInfo | None=..., file: builtins.bytes=...) -> None: + def __init__(self, *, module_file_info: Global___ModuleFileInfo | None=..., file: _builtins.bytes=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['file', b'file', 'module_file', b'module_file', 'module_file_info', b'module_file_info'] - def HasField(self, field_name: typing.Literal['file', b'file', 'module_file', b'module_file', 'module_file_info', b'module_file_info']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['file', b'file', 'module_file', b'module_file', 'module_file_info', b'module_file_info'] - def ClearField(self, field_name: typing.Literal['file', b'file', 'module_file', b'module_file', 'module_file_info', b'module_file_info']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_module_file: _TypeAlias = _typing.Literal['module_file_info', 'file'] + _WhichOneofArgType_module_file: _TypeAlias = _typing.Literal['module_file', b'module_file'] - def WhichOneof(self, oneof_group: typing.Literal['module_file', b'module_file']) -> typing.Literal['module_file_info', 'file'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_module_file) -> _WhichOneofReturnType_module_file | None: ... -global___UploadModuleFileRequest = UploadModuleFileRequest +Global___UploadModuleFileRequest: _TypeAlias = UploadModuleFileRequest -@typing.final -class UploadModuleFileResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - URL_FIELD_NUMBER: builtins.int - url: builtins.str +@_typing.final +class UploadModuleFileResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + URL_FIELD_NUMBER: _builtins.int + url: _builtins.str 'The detail page of the module' - def __init__(self, *, url: builtins.str=...) -> None: + def __init__(self, *, url: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['url', b'url'] - def ClearField(self, field_name: typing.Literal['url', b'url']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UploadModuleFileResponse = UploadModuleFileResponse +Global___UploadModuleFileResponse: _TypeAlias = UploadModuleFileResponse -@typing.final -class GetModuleRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODULE_ID_FIELD_NUMBER: builtins.int - INCLUDE_MARKDOWN_DOCUMENTATION_FIELD_NUMBER: builtins.int - module_id: builtins.str +@_typing.final +class GetModuleRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODULE_ID_FIELD_NUMBER: _builtins.int + INCLUDE_MARKDOWN_DOCUMENTATION_FIELD_NUMBER: _builtins.int + module_id: _builtins.str "The id of the module (formatted as prefix:name where prefix is the module owner's orgid or namespace)" - include_markdown_documentation: builtins.bool + include_markdown_documentation: _builtins.bool - def __init__(self, *, module_id: builtins.str=..., include_markdown_documentation: builtins.bool | None=...) -> None: + def __init__(self, *, module_id: _builtins.str=..., include_markdown_documentation: _builtins.bool | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', 'include_markdown_documentation', b'include_markdown_documentation'] - def HasField(self, field_name: typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', 'include_markdown_documentation', b'include_markdown_documentation']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', 'include_markdown_documentation', b'include_markdown_documentation', 'module_id', b'module_id'] - def ClearField(self, field_name: typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', 'include_markdown_documentation', b'include_markdown_documentation', 'module_id', b'module_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__include_markdown_documentation: _TypeAlias = _typing.Literal['include_markdown_documentation'] + _WhichOneofArgType__include_markdown_documentation: _TypeAlias = _typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation'] - def WhichOneof(self, oneof_group: typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation']) -> typing.Literal['include_markdown_documentation'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__include_markdown_documentation) -> _WhichOneofReturnType__include_markdown_documentation | None: ... -global___GetModuleRequest = GetModuleRequest +Global___GetModuleRequest: _TypeAlias = GetModuleRequest -@typing.final -class GetModuleResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODULE_FIELD_NUMBER: builtins.int +@_typing.final +class GetModuleResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODULE_FIELD_NUMBER: _builtins.int - @property - def module(self) -> global___Module: + @_builtins.property + def module(self) -> Global___Module: """The module object""" - def __init__(self, *, module: global___Module | None=...) -> None: - ... - - def HasField(self, field_name: typing.Literal['module', b'module']) -> builtins.bool: - ... - - def ClearField(self, field_name: typing.Literal['module', b'module']) -> None: - ... -global___GetModuleResponse = GetModuleResponse - -@typing.final -class Module(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODULE_ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - VISIBILITY_FIELD_NUMBER: builtins.int - VERSIONS_FIELD_NUMBER: builtins.int - URL_FIELD_NUMBER: builtins.int - DESCRIPTION_FIELD_NUMBER: builtins.int - MODELS_FIELD_NUMBER: builtins.int - TOTAL_ROBOT_USAGE_FIELD_NUMBER: builtins.int - TOTAL_ORGANIZATION_USAGE_FIELD_NUMBER: builtins.int - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - ENTRYPOINT_FIELD_NUMBER: builtins.int - PUBLIC_NAMESPACE_FIELD_NUMBER: builtins.int - FIRST_RUN_FIELD_NUMBER: builtins.int - MARKDOWN_DESCRIPTION_FIELD_NUMBER: builtins.int - APPS_FIELD_NUMBER: builtins.int - module_id: builtins.str + def __init__(self, *, module: Global___Module | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['module', b'module'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['module', b'module'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___GetModuleResponse: _TypeAlias = GetModuleResponse + +@_typing.final +class Module(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODULE_ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + VISIBILITY_FIELD_NUMBER: _builtins.int + VERSIONS_FIELD_NUMBER: _builtins.int + URL_FIELD_NUMBER: _builtins.int + DESCRIPTION_FIELD_NUMBER: _builtins.int + MODELS_FIELD_NUMBER: _builtins.int + TOTAL_ROBOT_USAGE_FIELD_NUMBER: _builtins.int + TOTAL_ORGANIZATION_USAGE_FIELD_NUMBER: _builtins.int + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + ENTRYPOINT_FIELD_NUMBER: _builtins.int + PUBLIC_NAMESPACE_FIELD_NUMBER: _builtins.int + FIRST_RUN_FIELD_NUMBER: _builtins.int + MARKDOWN_DESCRIPTION_FIELD_NUMBER: _builtins.int + APPS_FIELD_NUMBER: _builtins.int + module_id: _builtins.str "The id of the module (formatted as prefix:name where prefix is the module owner's orgid or namespace)" - name: builtins.str + name: _builtins.str 'The name of the module' - visibility: global___Visibility.ValueType + visibility: Global___Visibility.ValueType 'The visibility of the module' - url: builtins.str + url: _builtins.str 'The url to reference for documentation, code, etc.' - description: builtins.str + description: _builtins.str 'A short description of the module that explains its purpose' - total_robot_usage: builtins.int + total_robot_usage: _builtins.int 'The total number of robots using this module' - total_organization_usage: builtins.int + total_organization_usage: _builtins.int 'The total number of organizations using this module' - organization_id: builtins.str + organization_id: _builtins.str 'The id of the organization that owns the module' - entrypoint: builtins.str + entrypoint: _builtins.str 'The executable to run to start the module program' - public_namespace: builtins.str + public_namespace: _builtins.str 'The public namespace of the organization that owns the module\n This is empty if no public namespace is set\n ' - first_run: builtins.str + first_run: _builtins.str 'The path to a setup script that is run before a newly downloaded module starts.' - markdown_description: builtins.str + markdown_description: _builtins.str 'Longer documentation provided in markdown format' - @property - def versions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___VersionHistory]: + @_builtins.property + def versions(self) -> _containers.RepeatedCompositeFieldContainer[Global___VersionHistory]: """The versions of the module that are available When this is returned from the backend, the versions are sorted in ascending order by the semver version """ - @property - def models(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Model]: + @_builtins.property + def models(self) -> _containers.RepeatedCompositeFieldContainer[Global___Model]: """A list of models that are available in the module""" - @property - def apps(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___App]: + @_builtins.property + def apps(self) -> _containers.RepeatedCompositeFieldContainer[Global___App]: """A list of applications associated with the module""" - def __init__(self, *, module_id: builtins.str=..., name: builtins.str=..., visibility: global___Visibility.ValueType=..., versions: collections.abc.Iterable[global___VersionHistory] | None=..., url: builtins.str=..., description: builtins.str=..., models: collections.abc.Iterable[global___Model] | None=..., total_robot_usage: builtins.int=..., total_organization_usage: builtins.int=..., organization_id: builtins.str=..., entrypoint: builtins.str=..., public_namespace: builtins.str=..., first_run: builtins.str | None=..., markdown_description: builtins.str | None=..., apps: collections.abc.Iterable[global___App] | None=...) -> None: + def __init__(self, *, module_id: _builtins.str=..., name: _builtins.str=..., visibility: Global___Visibility.ValueType=..., versions: _abc.Iterable[Global___VersionHistory] | None=..., url: _builtins.str=..., description: _builtins.str=..., models: _abc.Iterable[Global___Model] | None=..., total_robot_usage: _builtins.int=..., total_organization_usage: _builtins.int=..., organization_id: _builtins.str=..., entrypoint: _builtins.str=..., public_namespace: _builtins.str=..., first_run: _builtins.str | None=..., markdown_description: _builtins.str | None=..., apps: _abc.Iterable[Global___App] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'first_run', b'first_run', 'markdown_description', b'markdown_description'] - def HasField(self, field_name: typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'first_run', b'first_run', 'markdown_description', b'markdown_description']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'apps', b'apps', 'description', b'description', 'entrypoint', b'entrypoint', 'first_run', b'first_run', 'markdown_description', b'markdown_description', 'models', b'models', 'module_id', b'module_id', 'name', b'name', 'organization_id', b'organization_id', 'public_namespace', b'public_namespace', 'total_organization_usage', b'total_organization_usage', 'total_robot_usage', b'total_robot_usage', 'url', b'url', 'versions', b'versions', 'visibility', b'visibility'] - def ClearField(self, field_name: typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'apps', b'apps', 'description', b'description', 'entrypoint', b'entrypoint', 'first_run', b'first_run', 'markdown_description', b'markdown_description', 'models', b'models', 'module_id', b'module_id', 'name', b'name', 'organization_id', b'organization_id', 'public_namespace', b'public_namespace', 'total_organization_usage', b'total_organization_usage', 'total_robot_usage', b'total_robot_usage', 'url', b'url', 'versions', b'versions', 'visibility', b'visibility']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__first_run: _TypeAlias = _typing.Literal['first_run'] + _WhichOneofArgType__first_run: _TypeAlias = _typing.Literal['_first_run', b'_first_run'] + _WhichOneofReturnType__markdown_description: _TypeAlias = _typing.Literal['markdown_description'] + _WhichOneofArgType__markdown_description: _TypeAlias = _typing.Literal['_markdown_description', b'_markdown_description'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_first_run', b'_first_run']) -> typing.Literal['first_run'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__first_run) -> _WhichOneofReturnType__first_run | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_markdown_description', b'_markdown_description']) -> typing.Literal['markdown_description'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__markdown_description) -> _WhichOneofReturnType__markdown_description | None: ... -global___Module = Module +Global___Module: _TypeAlias = Module -@typing.final -class VersionHistory(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VERSION_FIELD_NUMBER: builtins.int - FILES_FIELD_NUMBER: builtins.int - MODELS_FIELD_NUMBER: builtins.int - ENTRYPOINT_FIELD_NUMBER: builtins.int - FIRST_RUN_FIELD_NUMBER: builtins.int - MARKDOWN_DESCRIPTION_FIELD_NUMBER: builtins.int - APPS_FIELD_NUMBER: builtins.int - version: builtins.str +@_typing.final +class VersionHistory(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + VERSION_FIELD_NUMBER: _builtins.int + FILES_FIELD_NUMBER: _builtins.int + MODELS_FIELD_NUMBER: _builtins.int + ENTRYPOINT_FIELD_NUMBER: _builtins.int + FIRST_RUN_FIELD_NUMBER: _builtins.int + MARKDOWN_DESCRIPTION_FIELD_NUMBER: _builtins.int + APPS_FIELD_NUMBER: _builtins.int + version: _builtins.str 'The semver string that represents the major/minor/patch version of the module' - entrypoint: builtins.str + entrypoint: _builtins.str 'The entrypoint for this version of the module' - first_run: builtins.str + first_run: _builtins.str 'The path to a setup script that is run before a newly downloaded module starts.' - markdown_description: builtins.str + markdown_description: _builtins.str 'The markdown documentation for this version of the module' - @property - def files(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Uploads]: + @_builtins.property + def files(self) -> _containers.RepeatedCompositeFieldContainer[Global___Uploads]: """The uploads that are available for this module version""" - @property - def models(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Model]: + @_builtins.property + def models(self) -> _containers.RepeatedCompositeFieldContainer[Global___Model]: """The models that this verion of the module provides""" - @property - def apps(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___App]: + @_builtins.property + def apps(self) -> _containers.RepeatedCompositeFieldContainer[Global___App]: """A list of applications associated with the module""" - def __init__(self, *, version: builtins.str=..., files: collections.abc.Iterable[global___Uploads] | None=..., models: collections.abc.Iterable[global___Model] | None=..., entrypoint: builtins.str=..., first_run: builtins.str | None=..., markdown_description: builtins.str | None=..., apps: collections.abc.Iterable[global___App] | None=...) -> None: + def __init__(self, *, version: _builtins.str=..., files: _abc.Iterable[Global___Uploads] | None=..., models: _abc.Iterable[Global___Model] | None=..., entrypoint: _builtins.str=..., first_run: _builtins.str | None=..., markdown_description: _builtins.str | None=..., apps: _abc.Iterable[Global___App] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'first_run', b'first_run', 'markdown_description', b'markdown_description'] - def HasField(self, field_name: typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'first_run', b'first_run', 'markdown_description', b'markdown_description']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'apps', b'apps', 'entrypoint', b'entrypoint', 'files', b'files', 'first_run', b'first_run', 'markdown_description', b'markdown_description', 'models', b'models', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['_first_run', b'_first_run', '_markdown_description', b'_markdown_description', 'apps', b'apps', 'entrypoint', b'entrypoint', 'files', b'files', 'first_run', b'first_run', 'markdown_description', b'markdown_description', 'models', b'models', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__first_run: _TypeAlias = _typing.Literal['first_run'] + _WhichOneofArgType__first_run: _TypeAlias = _typing.Literal['_first_run', b'_first_run'] + _WhichOneofReturnType__markdown_description: _TypeAlias = _typing.Literal['markdown_description'] + _WhichOneofArgType__markdown_description: _TypeAlias = _typing.Literal['_markdown_description', b'_markdown_description'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_first_run', b'_first_run']) -> typing.Literal['first_run'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__first_run) -> _WhichOneofReturnType__first_run | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_markdown_description', b'_markdown_description']) -> typing.Literal['markdown_description'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__markdown_description) -> _WhichOneofReturnType__markdown_description | None: ... -global___VersionHistory = VersionHistory +Global___VersionHistory: _TypeAlias = VersionHistory -@typing.final -class Uploads(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PLATFORM_FIELD_NUMBER: builtins.int - UPLOADED_AT_FIELD_NUMBER: builtins.int - platform: builtins.str +@_typing.final +class Uploads(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PLATFORM_FIELD_NUMBER: _builtins.int + UPLOADED_AT_FIELD_NUMBER: _builtins.int + platform: _builtins.str 'The OS and architecture the module is built to run on' - @property - def uploaded_at(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def uploaded_at(self) -> _timestamp_pb2.Timestamp: """The time when the file was uploaded""" - def __init__(self, *, platform: builtins.str=..., uploaded_at: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, platform: _builtins.str=..., uploaded_at: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['uploaded_at', b'uploaded_at'] - def HasField(self, field_name: typing.Literal['uploaded_at', b'uploaded_at']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['platform', b'platform', 'uploaded_at', b'uploaded_at'] - def ClearField(self, field_name: typing.Literal['platform', b'platform', 'uploaded_at', b'uploaded_at']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Uploads = Uploads +Global___Uploads: _TypeAlias = Uploads -@typing.final -class ListModulesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - INCLUDE_MARKDOWN_DOCUMENTATION_FIELD_NUMBER: builtins.int - organization_id: builtins.str +@_typing.final +class ListModulesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + INCLUDE_MARKDOWN_DOCUMENTATION_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str 'The id of the organization to return private modules for.' - include_markdown_documentation: builtins.bool + include_markdown_documentation: _builtins.bool - def __init__(self, *, organization_id: builtins.str | None=..., include_markdown_documentation: builtins.bool | None=...) -> None: + def __init__(self, *, organization_id: _builtins.str | None=..., include_markdown_documentation: _builtins.bool | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', '_organization_id', b'_organization_id', 'include_markdown_documentation', b'include_markdown_documentation', 'organization_id', b'organization_id'] - def HasField(self, field_name: typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', '_organization_id', b'_organization_id', 'include_markdown_documentation', b'include_markdown_documentation', 'organization_id', b'organization_id']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', '_organization_id', b'_organization_id', 'include_markdown_documentation', b'include_markdown_documentation', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation', '_organization_id', b'_organization_id', 'include_markdown_documentation', b'include_markdown_documentation', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__include_markdown_documentation: _TypeAlias = _typing.Literal['include_markdown_documentation'] + _WhichOneofArgType__include_markdown_documentation: _TypeAlias = _typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation'] + _WhichOneofReturnType__organization_id: _TypeAlias = _typing.Literal['organization_id'] + _WhichOneofArgType__organization_id: _TypeAlias = _typing.Literal['_organization_id', b'_organization_id'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_include_markdown_documentation', b'_include_markdown_documentation']) -> typing.Literal['include_markdown_documentation'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__include_markdown_documentation) -> _WhichOneofReturnType__include_markdown_documentation | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_organization_id', b'_organization_id']) -> typing.Literal['organization_id'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__organization_id) -> _WhichOneofReturnType__organization_id | None: ... -global___ListModulesRequest = ListModulesRequest +Global___ListModulesRequest: _TypeAlias = ListModulesRequest -@typing.final -class ListModulesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODULES_FIELD_NUMBER: builtins.int +@_typing.final +class ListModulesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODULES_FIELD_NUMBER: _builtins.int - @property - def modules(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Module]: + @_builtins.property + def modules(self) -> _containers.RepeatedCompositeFieldContainer[Global___Module]: """A listed of modules. When authenticated, this API will return modules that are private for this org. Public modules are always returned.""" - def __init__(self, *, modules: collections.abc.Iterable[global___Module] | None=...) -> None: + def __init__(self, *, modules: _abc.Iterable[Global___Module] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['modules', b'modules'] - def ClearField(self, field_name: typing.Literal['modules', b'modules']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListModulesResponse = ListModulesResponse +Global___ListModulesResponse: _TypeAlias = ListModulesResponse -@typing.final -class GetUserIDByEmailRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - EMAIL_FIELD_NUMBER: builtins.int - email: builtins.str +@_typing.final +class GetUserIDByEmailRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + EMAIL_FIELD_NUMBER: _builtins.int + email: _builtins.str - def __init__(self, *, email: builtins.str=...) -> None: + def __init__(self, *, email: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['email', b'email'] - def ClearField(self, field_name: typing.Literal['email', b'email']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetUserIDByEmailRequest = GetUserIDByEmailRequest +Global___GetUserIDByEmailRequest: _TypeAlias = GetUserIDByEmailRequest -@typing.final -class GetUserIDByEmailResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - USER_ID_FIELD_NUMBER: builtins.int - user_id: builtins.str +@_typing.final +class GetUserIDByEmailResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + USER_ID_FIELD_NUMBER: _builtins.int + user_id: _builtins.str - def __init__(self, *, user_id: builtins.str=...) -> None: + def __init__(self, *, user_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['user_id', b'user_id'] - def ClearField(self, field_name: typing.Literal['user_id', b'user_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetUserIDByEmailResponse = GetUserIDByEmailResponse +Global___GetUserIDByEmailResponse: _TypeAlias = GetUserIDByEmailResponse -@typing.final -class ListOrganizationsByUserRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - USER_ID_FIELD_NUMBER: builtins.int - user_id: builtins.str +@_typing.final +class ListOrganizationsByUserRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + USER_ID_FIELD_NUMBER: _builtins.int + user_id: _builtins.str - def __init__(self, *, user_id: builtins.str=...) -> None: + def __init__(self, *, user_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['user_id', b'user_id'] - def ClearField(self, field_name: typing.Literal['user_id', b'user_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListOrganizationsByUserRequest = ListOrganizationsByUserRequest +Global___ListOrganizationsByUserRequest: _TypeAlias = ListOrganizationsByUserRequest -@typing.final -class OrgDetails(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - ORG_NAME_FIELD_NUMBER: builtins.int - ORG_CID_FIELD_NUMBER: builtins.int - PUBLIC_NAMESPACE_FIELD_NUMBER: builtins.int - BILLING_TIER_FIELD_NUMBER: builtins.int - org_id: builtins.str - org_name: builtins.str - org_cid: builtins.str - public_namespace: builtins.str - billing_tier: builtins.str +@_typing.final +class OrgDetails(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + ORG_NAME_FIELD_NUMBER: _builtins.int + ORG_CID_FIELD_NUMBER: _builtins.int + PUBLIC_NAMESPACE_FIELD_NUMBER: _builtins.int + BILLING_TIER_FIELD_NUMBER: _builtins.int + org_id: _builtins.str + org_name: _builtins.str + org_cid: _builtins.str + public_namespace: _builtins.str + billing_tier: _builtins.str - def __init__(self, *, org_id: builtins.str=..., org_name: builtins.str=..., org_cid: builtins.str | None=..., public_namespace: builtins.str | None=..., billing_tier: builtins.str | None=...) -> None: + def __init__(self, *, org_id: _builtins.str=..., org_name: _builtins.str=..., org_cid: _builtins.str | None=..., public_namespace: _builtins.str | None=..., billing_tier: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_billing_tier', b'_billing_tier', '_org_cid', b'_org_cid', '_public_namespace', b'_public_namespace', 'billing_tier', b'billing_tier', 'org_cid', b'org_cid', 'public_namespace', b'public_namespace'] - def HasField(self, field_name: typing.Literal['_billing_tier', b'_billing_tier', '_org_cid', b'_org_cid', '_public_namespace', b'_public_namespace', 'billing_tier', b'billing_tier', 'org_cid', b'org_cid', 'public_namespace', b'public_namespace']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_billing_tier', b'_billing_tier', '_org_cid', b'_org_cid', '_public_namespace', b'_public_namespace', 'billing_tier', b'billing_tier', 'org_cid', b'org_cid', 'org_id', b'org_id', 'org_name', b'org_name', 'public_namespace', b'public_namespace'] - def ClearField(self, field_name: typing.Literal['_billing_tier', b'_billing_tier', '_org_cid', b'_org_cid', '_public_namespace', b'_public_namespace', 'billing_tier', b'billing_tier', 'org_cid', b'org_cid', 'org_id', b'org_id', 'org_name', b'org_name', 'public_namespace', b'public_namespace']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__billing_tier: _TypeAlias = _typing.Literal['billing_tier'] + _WhichOneofArgType__billing_tier: _TypeAlias = _typing.Literal['_billing_tier', b'_billing_tier'] + _WhichOneofReturnType__org_cid: _TypeAlias = _typing.Literal['org_cid'] + _WhichOneofArgType__org_cid: _TypeAlias = _typing.Literal['_org_cid', b'_org_cid'] + _WhichOneofReturnType__public_namespace: _TypeAlias = _typing.Literal['public_namespace'] + _WhichOneofArgType__public_namespace: _TypeAlias = _typing.Literal['_public_namespace', b'_public_namespace'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_billing_tier', b'_billing_tier']) -> typing.Literal['billing_tier'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__billing_tier) -> _WhichOneofReturnType__billing_tier | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_org_cid', b'_org_cid']) -> typing.Literal['org_cid'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__org_cid) -> _WhichOneofReturnType__org_cid | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_public_namespace', b'_public_namespace']) -> typing.Literal['public_namespace'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__public_namespace) -> _WhichOneofReturnType__public_namespace | None: ... -global___OrgDetails = OrgDetails +Global___OrgDetails: _TypeAlias = OrgDetails -@typing.final -class ListOrganizationsByUserResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGS_FIELD_NUMBER: builtins.int +@_typing.final +class ListOrganizationsByUserResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGS_FIELD_NUMBER: _builtins.int - @property - def orgs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___OrgDetails]: + @_builtins.property + def orgs(self) -> _containers.RepeatedCompositeFieldContainer[Global___OrgDetails]: ... - def __init__(self, *, orgs: collections.abc.Iterable[global___OrgDetails] | None=...) -> None: + def __init__(self, *, orgs: _abc.Iterable[Global___OrgDetails] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['orgs', b'orgs'] - def ClearField(self, field_name: typing.Literal['orgs', b'orgs']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListOrganizationsByUserResponse = ListOrganizationsByUserResponse +Global___ListOrganizationsByUserResponse: _TypeAlias = ListOrganizationsByUserResponse -@typing.final -class SearchOrganizationsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - ORG_NAME_FIELD_NUMBER: builtins.int - CID_FIELD_NUMBER: builtins.int - PUBLIC_NAMESPACE_FIELD_NUMBER: builtins.int - org_id: builtins.str - org_name: builtins.str - cid: builtins.str - public_namespace: builtins.str +@_typing.final +class SearchOrganizationsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + ORG_NAME_FIELD_NUMBER: _builtins.int + CID_FIELD_NUMBER: _builtins.int + PUBLIC_NAMESPACE_FIELD_NUMBER: _builtins.int + org_id: _builtins.str + org_name: _builtins.str + cid: _builtins.str + public_namespace: _builtins.str - def __init__(self, *, org_id: builtins.str | None=..., org_name: builtins.str | None=..., cid: builtins.str | None=..., public_namespace: builtins.str | None=...) -> None: + def __init__(self, *, org_id: _builtins.str | None=..., org_name: _builtins.str | None=..., cid: _builtins.str | None=..., public_namespace: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_cid', b'_cid', '_org_id', b'_org_id', '_org_name', b'_org_name', '_public_namespace', b'_public_namespace', 'cid', b'cid', 'org_id', b'org_id', 'org_name', b'org_name', 'public_namespace', b'public_namespace'] - def HasField(self, field_name: typing.Literal['_cid', b'_cid', '_org_id', b'_org_id', '_org_name', b'_org_name', '_public_namespace', b'_public_namespace', 'cid', b'cid', 'org_id', b'org_id', 'org_name', b'org_name', 'public_namespace', b'public_namespace']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_cid', b'_cid', '_org_id', b'_org_id', '_org_name', b'_org_name', '_public_namespace', b'_public_namespace', 'cid', b'cid', 'org_id', b'org_id', 'org_name', b'org_name', 'public_namespace', b'public_namespace'] - def ClearField(self, field_name: typing.Literal['_cid', b'_cid', '_org_id', b'_org_id', '_org_name', b'_org_name', '_public_namespace', b'_public_namespace', 'cid', b'cid', 'org_id', b'org_id', 'org_name', b'org_name', 'public_namespace', b'public_namespace']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__cid: _TypeAlias = _typing.Literal['cid'] + _WhichOneofArgType__cid: _TypeAlias = _typing.Literal['_cid', b'_cid'] + _WhichOneofReturnType__org_id: _TypeAlias = _typing.Literal['org_id'] + _WhichOneofArgType__org_id: _TypeAlias = _typing.Literal['_org_id', b'_org_id'] + _WhichOneofReturnType__org_name: _TypeAlias = _typing.Literal['org_name'] + _WhichOneofArgType__org_name: _TypeAlias = _typing.Literal['_org_name', b'_org_name'] + _WhichOneofReturnType__public_namespace: _TypeAlias = _typing.Literal['public_namespace'] + _WhichOneofArgType__public_namespace: _TypeAlias = _typing.Literal['_public_namespace', b'_public_namespace'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_cid', b'_cid']) -> typing.Literal['cid'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__cid) -> _WhichOneofReturnType__cid | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_org_id', b'_org_id']) -> typing.Literal['org_id'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__org_id) -> _WhichOneofReturnType__org_id | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_org_name', b'_org_name']) -> typing.Literal['org_name'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__org_name) -> _WhichOneofReturnType__org_name | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_public_namespace', b'_public_namespace']) -> typing.Literal['public_namespace'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__public_namespace) -> _WhichOneofReturnType__public_namespace | None: ... -global___SearchOrganizationsRequest = SearchOrganizationsRequest +Global___SearchOrganizationsRequest: _TypeAlias = SearchOrganizationsRequest -@typing.final -class SearchOrganizationsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATIONS_FIELD_NUMBER: builtins.int +@_typing.final +class SearchOrganizationsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATIONS_FIELD_NUMBER: _builtins.int - @property - def organizations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___OrgDetails]: + @_builtins.property + def organizations(self) -> _containers.RepeatedCompositeFieldContainer[Global___OrgDetails]: ... - def __init__(self, *, organizations: collections.abc.Iterable[global___OrgDetails] | None=...) -> None: + def __init__(self, *, organizations: _abc.Iterable[Global___OrgDetails] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['organizations', b'organizations'] - def ClearField(self, field_name: typing.Literal['organizations', b'organizations']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SearchOrganizationsResponse = SearchOrganizationsResponse +Global___SearchOrganizationsResponse: _TypeAlias = SearchOrganizationsResponse -@typing.final -class CreateKeyRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - AUTHORIZATIONS_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class CreateKeyRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + AUTHORIZATIONS_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def authorizations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Authorization]: + @_builtins.property + def authorizations(self) -> _containers.RepeatedCompositeFieldContainer[Global___Authorization]: ... - def __init__(self, *, authorizations: collections.abc.Iterable[global___Authorization] | None=..., name: builtins.str=...) -> None: + def __init__(self, *, authorizations: _abc.Iterable[Global___Authorization] | None=..., name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['authorizations', b'authorizations', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['authorizations', b'authorizations', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateKeyRequest = CreateKeyRequest +Global___CreateKeyRequest: _TypeAlias = CreateKeyRequest -@typing.final -class CreateKeyResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - ID_FIELD_NUMBER: builtins.int - key: builtins.str - id: builtins.str +@_typing.final +class CreateKeyResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + ID_FIELD_NUMBER: _builtins.int + key: _builtins.str + id: _builtins.str - def __init__(self, *, key: builtins.str=..., id: builtins.str=...) -> None: + def __init__(self, *, key: _builtins.str=..., id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'key', b'key'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'key', b'key']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateKeyResponse = CreateKeyResponse +Global___CreateKeyResponse: _TypeAlias = CreateKeyResponse -@typing.final -class DeleteKeyRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class DeleteKeyRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteKeyRequest = DeleteKeyRequest +Global___DeleteKeyRequest: _TypeAlias = DeleteKeyRequest -@typing.final -class DeleteKeyResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteKeyResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteKeyResponse = DeleteKeyResponse +Global___DeleteKeyResponse: _TypeAlias = DeleteKeyResponse -@typing.final -class RenameKeyRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str +@_typing.final +class RenameKeyRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + id: _builtins.str + name: _builtins.str - def __init__(self, *, id: builtins.str=..., name: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RenameKeyRequest = RenameKeyRequest +Global___RenameKeyRequest: _TypeAlias = RenameKeyRequest -@typing.final -class RenameKeyResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str +@_typing.final +class RenameKeyResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + id: _builtins.str + name: _builtins.str - def __init__(self, *, id: builtins.str=..., name: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RenameKeyResponse = RenameKeyResponse +Global___RenameKeyResponse: _TypeAlias = RenameKeyResponse -@typing.final -class AuthorizationDetails(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - AUTHORIZATION_TYPE_FIELD_NUMBER: builtins.int - AUTHORIZATION_ID_FIELD_NUMBER: builtins.int - RESOURCE_TYPE_FIELD_NUMBER: builtins.int - RESOURCE_ID_FIELD_NUMBER: builtins.int - ORG_ID_FIELD_NUMBER: builtins.int - authorization_type: builtins.str - authorization_id: builtins.str - resource_type: builtins.str - resource_id: builtins.str - org_id: builtins.str +@_typing.final +class AuthorizationDetails(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + AUTHORIZATION_TYPE_FIELD_NUMBER: _builtins.int + AUTHORIZATION_ID_FIELD_NUMBER: _builtins.int + RESOURCE_TYPE_FIELD_NUMBER: _builtins.int + RESOURCE_ID_FIELD_NUMBER: _builtins.int + ORG_ID_FIELD_NUMBER: _builtins.int + authorization_type: _builtins.str + authorization_id: _builtins.str + resource_type: _builtins.str + resource_id: _builtins.str + org_id: _builtins.str - def __init__(self, *, authorization_type: builtins.str=..., authorization_id: builtins.str=..., resource_type: builtins.str=..., resource_id: builtins.str=..., org_id: builtins.str=...) -> None: + def __init__(self, *, authorization_type: _builtins.str=..., authorization_id: _builtins.str=..., resource_type: _builtins.str=..., resource_id: _builtins.str=..., org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['authorization_id', b'authorization_id', 'authorization_type', b'authorization_type', 'org_id', b'org_id', 'resource_id', b'resource_id', 'resource_type', b'resource_type'] - def ClearField(self, field_name: typing.Literal['authorization_id', b'authorization_id', 'authorization_type', b'authorization_type', 'org_id', b'org_id', 'resource_id', b'resource_id', 'resource_type', b'resource_type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AuthorizationDetails = AuthorizationDetails +Global___AuthorizationDetails: _TypeAlias = AuthorizationDetails -@typing.final -class APIKeyWithAuthorizations(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - API_KEY_FIELD_NUMBER: builtins.int - AUTHORIZATIONS_FIELD_NUMBER: builtins.int +@_typing.final +class APIKeyWithAuthorizations(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + API_KEY_FIELD_NUMBER: _builtins.int + AUTHORIZATIONS_FIELD_NUMBER: _builtins.int - @property - def api_key(self) -> global___APIKey: + @_builtins.property + def api_key(self) -> Global___APIKey: ... - @property - def authorizations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AuthorizationDetails]: + @_builtins.property + def authorizations(self) -> _containers.RepeatedCompositeFieldContainer[Global___AuthorizationDetails]: ... - def __init__(self, *, api_key: global___APIKey | None=..., authorizations: collections.abc.Iterable[global___AuthorizationDetails] | None=...) -> None: + def __init__(self, *, api_key: Global___APIKey | None=..., authorizations: _abc.Iterable[Global___AuthorizationDetails] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['api_key', b'api_key'] - def HasField(self, field_name: typing.Literal['api_key', b'api_key']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['api_key', b'api_key', 'authorizations', b'authorizations'] - def ClearField(self, field_name: typing.Literal['api_key', b'api_key', 'authorizations', b'authorizations']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___APIKeyWithAuthorizations = APIKeyWithAuthorizations +Global___APIKeyWithAuthorizations: _TypeAlias = APIKeyWithAuthorizations -@typing.final -class ListKeysRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class ListKeysRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str - def __init__(self, *, org_id: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListKeysRequest = ListKeysRequest +Global___ListKeysRequest: _TypeAlias = ListKeysRequest -@typing.final -class ListKeysResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - API_KEYS_FIELD_NUMBER: builtins.int +@_typing.final +class ListKeysResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + API_KEYS_FIELD_NUMBER: _builtins.int - @property - def api_keys(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___APIKeyWithAuthorizations]: + @_builtins.property + def api_keys(self) -> _containers.RepeatedCompositeFieldContainer[Global___APIKeyWithAuthorizations]: ... - def __init__(self, *, api_keys: collections.abc.Iterable[global___APIKeyWithAuthorizations] | None=...) -> None: + def __init__(self, *, api_keys: _abc.Iterable[Global___APIKeyWithAuthorizations] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['api_keys', b'api_keys'] - def ClearField(self, field_name: typing.Literal['api_keys', b'api_keys']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListKeysResponse = ListKeysResponse +Global___ListKeysResponse: _TypeAlias = ListKeysResponse -@typing.final -class RotateKeyRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class RotateKeyRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RotateKeyRequest = RotateKeyRequest +Global___RotateKeyRequest: _TypeAlias = RotateKeyRequest -@typing.final -class RotateKeyResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - KEY_FIELD_NUMBER: builtins.int - id: builtins.str - key: builtins.str +@_typing.final +class RotateKeyResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + KEY_FIELD_NUMBER: _builtins.int + id: _builtins.str + key: _builtins.str - def __init__(self, *, id: builtins.str=..., key: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., key: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'key', b'key'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'key', b'key']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RotateKeyResponse = RotateKeyResponse +Global___RotateKeyResponse: _TypeAlias = RotateKeyResponse -@typing.final -class CreateKeyFromExistingKeyAuthorizationsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class CreateKeyFromExistingKeyAuthorizationsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateKeyFromExistingKeyAuthorizationsRequest = CreateKeyFromExistingKeyAuthorizationsRequest +Global___CreateKeyFromExistingKeyAuthorizationsRequest: _TypeAlias = CreateKeyFromExistingKeyAuthorizationsRequest -@typing.final -class CreateKeyFromExistingKeyAuthorizationsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - KEY_FIELD_NUMBER: builtins.int - id: builtins.str - key: builtins.str +@_typing.final +class CreateKeyFromExistingKeyAuthorizationsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + KEY_FIELD_NUMBER: _builtins.int + id: _builtins.str + key: _builtins.str - def __init__(self, *, id: builtins.str=..., key: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., key: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'key', b'key'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'key', b'key']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateKeyFromExistingKeyAuthorizationsResponse = CreateKeyFromExistingKeyAuthorizationsResponse +Global___CreateKeyFromExistingKeyAuthorizationsResponse: _TypeAlias = CreateKeyFromExistingKeyAuthorizationsResponse -@typing.final -class GetAppContentRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PUBLIC_NAMESPACE_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - public_namespace: builtins.str - name: builtins.str +@_typing.final +class GetAppContentRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PUBLIC_NAMESPACE_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + public_namespace: _builtins.str + name: _builtins.str - def __init__(self, *, public_namespace: builtins.str=..., name: builtins.str=...) -> None: + def __init__(self, *, public_namespace: _builtins.str=..., name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'public_namespace', b'public_namespace'] - def ClearField(self, field_name: typing.Literal['name', b'name', 'public_namespace', b'public_namespace']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetAppContentRequest = GetAppContentRequest +Global___GetAppContentRequest: _TypeAlias = GetAppContentRequest -@typing.final -class GetAppContentResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BLOB_PATH_FIELD_NUMBER: builtins.int - ENTRYPOINT_FIELD_NUMBER: builtins.int - APP_TYPE_FIELD_NUMBER: builtins.int - PUBLIC_FIELD_NUMBER: builtins.int - blob_path: builtins.str - entrypoint: builtins.str - app_type: global___AppType.ValueType - public: builtins.bool +@_typing.final +class GetAppContentResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + BLOB_PATH_FIELD_NUMBER: _builtins.int + ENTRYPOINT_FIELD_NUMBER: _builtins.int + APP_TYPE_FIELD_NUMBER: _builtins.int + PUBLIC_FIELD_NUMBER: _builtins.int + blob_path: _builtins.str + entrypoint: _builtins.str + app_type: Global___AppType.ValueType + public: _builtins.bool - def __init__(self, *, blob_path: builtins.str=..., entrypoint: builtins.str=..., app_type: global___AppType.ValueType=..., public: builtins.bool=...) -> None: + def __init__(self, *, blob_path: _builtins.str=..., entrypoint: _builtins.str=..., app_type: Global___AppType.ValueType=..., public: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['app_type', b'app_type', 'blob_path', b'blob_path', 'entrypoint', b'entrypoint', 'public', b'public'] - def ClearField(self, field_name: typing.Literal['app_type', b'app_type', 'blob_path', b'blob_path', 'entrypoint', b'entrypoint', 'public', b'public']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetAppContentResponse = GetAppContentResponse +Global___GetAppContentResponse: _TypeAlias = GetAppContentResponse -@typing.final -class OrganizationSetLogoRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - LOGO_FIELD_NUMBER: builtins.int - org_id: builtins.str - logo: builtins.bytes +@_typing.final +class OrganizationSetLogoRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + LOGO_FIELD_NUMBER: _builtins.int + org_id: _builtins.str + logo: _builtins.bytes - def __init__(self, *, org_id: builtins.str=..., logo: builtins.bytes=...) -> None: + def __init__(self, *, org_id: _builtins.str=..., logo: _builtins.bytes=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['logo', b'logo', 'org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['logo', b'logo', 'org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___OrganizationSetLogoRequest = OrganizationSetLogoRequest +Global___OrganizationSetLogoRequest: _TypeAlias = OrganizationSetLogoRequest -@typing.final -class OrganizationSetLogoResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class OrganizationSetLogoResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___OrganizationSetLogoResponse = OrganizationSetLogoResponse +Global___OrganizationSetLogoResponse: _TypeAlias = OrganizationSetLogoResponse -@typing.final -class OrganizationGetLogoRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class OrganizationGetLogoRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str - def __init__(self, *, org_id: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___OrganizationGetLogoRequest = OrganizationGetLogoRequest +Global___OrganizationGetLogoRequest: _TypeAlias = OrganizationGetLogoRequest -@typing.final -class OrganizationGetLogoResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - URL_FIELD_NUMBER: builtins.int - url: builtins.str +@_typing.final +class OrganizationGetLogoResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + URL_FIELD_NUMBER: _builtins.int + url: _builtins.str - def __init__(self, *, url: builtins.str=...) -> None: + def __init__(self, *, url: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['url', b'url'] - def ClearField(self, field_name: typing.Literal['url', b'url']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___OrganizationGetLogoResponse = OrganizationGetLogoResponse +Global___OrganizationGetLogoResponse: _TypeAlias = OrganizationGetLogoResponse -@typing.final -class EnableAuthServiceRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class EnableAuthServiceRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str - def __init__(self, *, org_id: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EnableAuthServiceRequest = EnableAuthServiceRequest +Global___EnableAuthServiceRequest: _TypeAlias = EnableAuthServiceRequest -@typing.final -class EnableAuthServiceResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class EnableAuthServiceResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___EnableAuthServiceResponse = EnableAuthServiceResponse +Global___EnableAuthServiceResponse: _TypeAlias = EnableAuthServiceResponse -@typing.final -class DisableAuthServiceRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class DisableAuthServiceRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str - def __init__(self, *, org_id: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DisableAuthServiceRequest = DisableAuthServiceRequest +Global___DisableAuthServiceRequest: _TypeAlias = DisableAuthServiceRequest -@typing.final -class DisableAuthServiceResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DisableAuthServiceResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DisableAuthServiceResponse = DisableAuthServiceResponse +Global___DisableAuthServiceResponse: _TypeAlias = DisableAuthServiceResponse -@typing.final -class CreateOAuthAppRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - CLIENT_NAME_FIELD_NUMBER: builtins.int - OAUTH_CONFIG_FIELD_NUMBER: builtins.int - org_id: builtins.str - client_name: builtins.str +@_typing.final +class CreateOAuthAppRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + CLIENT_NAME_FIELD_NUMBER: _builtins.int + OAUTH_CONFIG_FIELD_NUMBER: _builtins.int + org_id: _builtins.str + client_name: _builtins.str - @property - def oauth_config(self) -> global___OAuthConfig: + @_builtins.property + def oauth_config(self) -> Global___OAuthConfig: ... - def __init__(self, *, org_id: builtins.str=..., client_name: builtins.str=..., oauth_config: global___OAuthConfig | None=...) -> None: + def __init__(self, *, org_id: _builtins.str=..., client_name: _builtins.str=..., oauth_config: Global___OAuthConfig | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['oauth_config', b'oauth_config'] - def HasField(self, field_name: typing.Literal['oauth_config', b'oauth_config']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['client_name', b'client_name', 'oauth_config', b'oauth_config', 'org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['client_name', b'client_name', 'oauth_config', b'oauth_config', 'org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateOAuthAppRequest = CreateOAuthAppRequest +Global___CreateOAuthAppRequest: _TypeAlias = CreateOAuthAppRequest -@typing.final -class CreateOAuthAppResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CLIENT_ID_FIELD_NUMBER: builtins.int - CLIENT_SECRET_FIELD_NUMBER: builtins.int - client_id: builtins.str - client_secret: builtins.str +@_typing.final +class CreateOAuthAppResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CLIENT_ID_FIELD_NUMBER: _builtins.int + CLIENT_SECRET_FIELD_NUMBER: _builtins.int + client_id: _builtins.str + client_secret: _builtins.str - def __init__(self, *, client_id: builtins.str=..., client_secret: builtins.str=...) -> None: + def __init__(self, *, client_id: _builtins.str=..., client_secret: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['client_id', b'client_id', 'client_secret', b'client_secret'] - def ClearField(self, field_name: typing.Literal['client_id', b'client_id', 'client_secret', b'client_secret']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateOAuthAppResponse = CreateOAuthAppResponse +Global___CreateOAuthAppResponse: _TypeAlias = CreateOAuthAppResponse -@typing.final -class ReadOAuthAppRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - CLIENT_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str - client_id: builtins.str +@_typing.final +class ReadOAuthAppRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + CLIENT_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str + client_id: _builtins.str - def __init__(self, *, org_id: builtins.str=..., client_id: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=..., client_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['client_id', b'client_id', 'org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['client_id', b'client_id', 'org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ReadOAuthAppRequest = ReadOAuthAppRequest +Global___ReadOAuthAppRequest: _TypeAlias = ReadOAuthAppRequest -@typing.final -class ReadOAuthAppResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CLIENT_NAME_FIELD_NUMBER: builtins.int - CLIENT_SECRET_FIELD_NUMBER: builtins.int - OAUTH_CONFIG_FIELD_NUMBER: builtins.int - client_name: builtins.str - client_secret: builtins.str +@_typing.final +class ReadOAuthAppResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CLIENT_NAME_FIELD_NUMBER: _builtins.int + CLIENT_SECRET_FIELD_NUMBER: _builtins.int + OAUTH_CONFIG_FIELD_NUMBER: _builtins.int + client_name: _builtins.str + client_secret: _builtins.str - @property - def oauth_config(self) -> global___OAuthConfig: + @_builtins.property + def oauth_config(self) -> Global___OAuthConfig: ... - def __init__(self, *, client_name: builtins.str=..., client_secret: builtins.str=..., oauth_config: global___OAuthConfig | None=...) -> None: + def __init__(self, *, client_name: _builtins.str=..., client_secret: _builtins.str=..., oauth_config: Global___OAuthConfig | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['oauth_config', b'oauth_config'] - def HasField(self, field_name: typing.Literal['oauth_config', b'oauth_config']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['client_name', b'client_name', 'client_secret', b'client_secret', 'oauth_config', b'oauth_config'] - def ClearField(self, field_name: typing.Literal['client_name', b'client_name', 'client_secret', b'client_secret', 'oauth_config', b'oauth_config']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ReadOAuthAppResponse = ReadOAuthAppResponse +Global___ReadOAuthAppResponse: _TypeAlias = ReadOAuthAppResponse -@typing.final -class UpdateOAuthAppRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - CLIENT_ID_FIELD_NUMBER: builtins.int - CLIENT_NAME_FIELD_NUMBER: builtins.int - OAUTH_CONFIG_FIELD_NUMBER: builtins.int - org_id: builtins.str - client_id: builtins.str - client_name: builtins.str +@_typing.final +class UpdateOAuthAppRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + CLIENT_ID_FIELD_NUMBER: _builtins.int + CLIENT_NAME_FIELD_NUMBER: _builtins.int + OAUTH_CONFIG_FIELD_NUMBER: _builtins.int + org_id: _builtins.str + client_id: _builtins.str + client_name: _builtins.str - @property - def oauth_config(self) -> global___OAuthConfig: + @_builtins.property + def oauth_config(self) -> Global___OAuthConfig: ... - def __init__(self, *, org_id: builtins.str=..., client_id: builtins.str=..., client_name: builtins.str=..., oauth_config: global___OAuthConfig | None=...) -> None: + def __init__(self, *, org_id: _builtins.str=..., client_id: _builtins.str=..., client_name: _builtins.str=..., oauth_config: Global___OAuthConfig | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['oauth_config', b'oauth_config'] - def HasField(self, field_name: typing.Literal['oauth_config', b'oauth_config']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['client_id', b'client_id', 'client_name', b'client_name', 'oauth_config', b'oauth_config', 'org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['client_id', b'client_id', 'client_name', b'client_name', 'oauth_config', b'oauth_config', 'org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateOAuthAppRequest = UpdateOAuthAppRequest +Global___UpdateOAuthAppRequest: _TypeAlias = UpdateOAuthAppRequest -@typing.final -class UpdateOAuthAppResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class UpdateOAuthAppResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___UpdateOAuthAppResponse = UpdateOAuthAppResponse +Global___UpdateOAuthAppResponse: _TypeAlias = UpdateOAuthAppResponse -@typing.final -class DeleteOAuthAppRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - CLIENT_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str - client_id: builtins.str +@_typing.final +class DeleteOAuthAppRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + CLIENT_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str + client_id: _builtins.str - def __init__(self, *, org_id: builtins.str=..., client_id: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=..., client_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['client_id', b'client_id', 'org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['client_id', b'client_id', 'org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DeleteOAuthAppRequest = DeleteOAuthAppRequest +Global___DeleteOAuthAppRequest: _TypeAlias = DeleteOAuthAppRequest -@typing.final -class DeleteOAuthAppResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class DeleteOAuthAppResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___DeleteOAuthAppResponse = DeleteOAuthAppResponse +Global___DeleteOAuthAppResponse: _TypeAlias = DeleteOAuthAppResponse -@typing.final -class ListOAuthAppsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class ListOAuthAppsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str - def __init__(self, *, org_id: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListOAuthAppsRequest = ListOAuthAppsRequest +Global___ListOAuthAppsRequest: _TypeAlias = ListOAuthAppsRequest -@typing.final -class ListOAuthAppsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CLIENT_IDS_FIELD_NUMBER: builtins.int +@_typing.final +class ListOAuthAppsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CLIENT_IDS_FIELD_NUMBER: _builtins.int - @property - def client_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def client_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, client_ids: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, client_ids: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['client_ids', b'client_ids'] - def ClearField(self, field_name: typing.Literal['client_ids', b'client_ids']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListOAuthAppsResponse = ListOAuthAppsResponse +Global___ListOAuthAppsResponse: _TypeAlias = ListOAuthAppsResponse -@typing.final -class OAuthConfig(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CLIENT_AUTHENTICATION_FIELD_NUMBER: builtins.int - PKCE_FIELD_NUMBER: builtins.int - URL_VALIDATION_FIELD_NUMBER: builtins.int - ORIGIN_URIS_FIELD_NUMBER: builtins.int - REDIRECT_URIS_FIELD_NUMBER: builtins.int - LOGOUT_URI_FIELD_NUMBER: builtins.int - ENABLED_GRANTS_FIELD_NUMBER: builtins.int - client_authentication: global___ClientAuthentication.ValueType - pkce: global___PKCE.ValueType - url_validation: global___URLValidation.ValueType - logout_uri: builtins.str +@_typing.final +class OAuthConfig(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CLIENT_AUTHENTICATION_FIELD_NUMBER: _builtins.int + PKCE_FIELD_NUMBER: _builtins.int + URL_VALIDATION_FIELD_NUMBER: _builtins.int + ORIGIN_URIS_FIELD_NUMBER: _builtins.int + REDIRECT_URIS_FIELD_NUMBER: _builtins.int + LOGOUT_URI_FIELD_NUMBER: _builtins.int + ENABLED_GRANTS_FIELD_NUMBER: _builtins.int + client_authentication: Global___ClientAuthentication.ValueType + pkce: Global___PKCE.ValueType + url_validation: Global___URLValidation.ValueType + logout_uri: _builtins.str - @property - def origin_uris(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def origin_uris(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def redirect_uris(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def redirect_uris(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def enabled_grants(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___EnabledGrant.ValueType]: + @_builtins.property + def enabled_grants(self) -> _containers.RepeatedScalarFieldContainer[Global___EnabledGrant.ValueType]: ... - def __init__(self, *, client_authentication: global___ClientAuthentication.ValueType=..., pkce: global___PKCE.ValueType=..., url_validation: global___URLValidation.ValueType=..., origin_uris: collections.abc.Iterable[builtins.str] | None=..., redirect_uris: collections.abc.Iterable[builtins.str] | None=..., logout_uri: builtins.str=..., enabled_grants: collections.abc.Iterable[global___EnabledGrant.ValueType] | None=...) -> None: + def __init__(self, *, client_authentication: Global___ClientAuthentication.ValueType=..., pkce: Global___PKCE.ValueType=..., url_validation: Global___URLValidation.ValueType=..., origin_uris: _abc.Iterable[_builtins.str] | None=..., redirect_uris: _abc.Iterable[_builtins.str] | None=..., logout_uri: _builtins.str=..., enabled_grants: _abc.Iterable[Global___EnabledGrant.ValueType] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['client_authentication', b'client_authentication', 'enabled_grants', b'enabled_grants', 'logout_uri', b'logout_uri', 'origin_uris', b'origin_uris', 'pkce', b'pkce', 'redirect_uris', b'redirect_uris', 'url_validation', b'url_validation'] - def ClearField(self, field_name: typing.Literal['client_authentication', b'client_authentication', 'enabled_grants', b'enabled_grants', 'logout_uri', b'logout_uri', 'origin_uris', b'origin_uris', 'pkce', b'pkce', 'redirect_uris', b'redirect_uris', 'url_validation', b'url_validation']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___OAuthConfig = OAuthConfig +Global___OAuthConfig: _TypeAlias = OAuthConfig -@typing.final -class GetAppBrandingRequest(google.protobuf.message.Message): +@_typing.final +class GetAppBrandingRequest(_message.Message): """Branding and customization for app machine picker""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PUBLIC_NAMESPACE_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - public_namespace: builtins.str - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + PUBLIC_NAMESPACE_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + public_namespace: _builtins.str + name: _builtins.str - def __init__(self, *, public_namespace: builtins.str=..., name: builtins.str=...) -> None: + def __init__(self, *, public_namespace: _builtins.str=..., name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'public_namespace', b'public_namespace'] - def ClearField(self, field_name: typing.Literal['name', b'name', 'public_namespace', b'public_namespace']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetAppBrandingRequest = GetAppBrandingRequest +Global___GetAppBrandingRequest: _TypeAlias = GetAppBrandingRequest -@typing.final -class TextOverrides(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class TextOverrides(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class FieldsEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str - value: builtins.str + @_typing.final + class FieldsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str - def __init__(self, *, key: builtins.str=..., value: builtins.str=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - FIELDS_FIELD_NUMBER: builtins.int + FIELDS_FIELD_NUMBER: _builtins.int - @property - def fields(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + @_builtins.property + def fields(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: ... - def __init__(self, *, fields: collections.abc.Mapping[builtins.str, builtins.str] | None=...) -> None: + def __init__(self, *, fields: _abc.Mapping[_builtins.str, _builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['fields', b'fields'] - def ClearField(self, field_name: typing.Literal['fields', b'fields']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TextOverrides = TextOverrides +Global___TextOverrides: _TypeAlias = TextOverrides -@typing.final -class GetAppBrandingResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GetAppBrandingResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class TextCustomizationsEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str + @_typing.final + class TextCustomizationsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str - @property - def value(self) -> global___TextOverrides: + @_builtins.property + def value(self) -> Global___TextOverrides: ... - def __init__(self, *, key: builtins.str=..., value: global___TextOverrides | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: Global___TextOverrides | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def HasField(self, field_name: typing.Literal['value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - LOGO_PATH_FIELD_NUMBER: builtins.int - TEXT_CUSTOMIZATIONS_FIELD_NUMBER: builtins.int - FRAGMENT_IDS_FIELD_NUMBER: builtins.int - logo_path: builtins.str + LOGO_PATH_FIELD_NUMBER: _builtins.int + TEXT_CUSTOMIZATIONS_FIELD_NUMBER: _builtins.int + FRAGMENT_IDS_FIELD_NUMBER: _builtins.int + logo_path: _builtins.str - @property - def text_customizations(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___TextOverrides]: + @_builtins.property + def text_customizations(self) -> _containers.MessageMap[_builtins.str, Global___TextOverrides]: ... - @property - def fragment_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def fragment_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, logo_path: builtins.str | None=..., text_customizations: collections.abc.Mapping[builtins.str, global___TextOverrides] | None=..., fragment_ids: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, logo_path: _builtins.str | None=..., text_customizations: _abc.Mapping[_builtins.str, Global___TextOverrides] | None=..., fragment_ids: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_logo_path', b'_logo_path', 'logo_path', b'logo_path'] - def HasField(self, field_name: typing.Literal['_logo_path', b'_logo_path', 'logo_path', b'logo_path']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_logo_path', b'_logo_path', 'fragment_ids', b'fragment_ids', 'logo_path', b'logo_path', 'text_customizations', b'text_customizations'] - def ClearField(self, field_name: typing.Literal['_logo_path', b'_logo_path', 'fragment_ids', b'fragment_ids', 'logo_path', b'logo_path', 'text_customizations', b'text_customizations']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__logo_path: _TypeAlias = _typing.Literal['logo_path'] + _WhichOneofArgType__logo_path: _TypeAlias = _typing.Literal['_logo_path', b'_logo_path'] - def WhichOneof(self, oneof_group: typing.Literal['_logo_path', b'_logo_path']) -> typing.Literal['logo_path'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__logo_path) -> _WhichOneofReturnType__logo_path | None: ... -global___GetAppBrandingResponse = GetAppBrandingResponse +Global___GetAppBrandingResponse: _TypeAlias = GetAppBrandingResponse -@typing.final -class AppCustomizations(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MACHINE_PICKER_FIELD_NUMBER: builtins.int +@_typing.final +class AppCustomizations(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MACHINE_PICKER_FIELD_NUMBER: _builtins.int - @property - def machine_picker(self) -> global___MachinePickerCustomizations: + @_builtins.property + def machine_picker(self) -> Global___MachinePickerCustomizations: ... - def __init__(self, *, machine_picker: global___MachinePickerCustomizations | None=...) -> None: + def __init__(self, *, machine_picker: Global___MachinePickerCustomizations | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['machine_picker', b'machine_picker'] - def HasField(self, field_name: typing.Literal['machine_picker', b'machine_picker']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['machine_picker', b'machine_picker'] - def ClearField(self, field_name: typing.Literal['machine_picker', b'machine_picker']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AppCustomizations = AppCustomizations +Global___AppCustomizations: _TypeAlias = AppCustomizations -@typing.final -class MachinePickerCustomizations(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - HEADING_FIELD_NUMBER: builtins.int - SUBHEADING_FIELD_NUMBER: builtins.int - heading: builtins.str - subheading: builtins.str +@_typing.final +class MachinePickerCustomizations(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + HEADING_FIELD_NUMBER: _builtins.int + SUBHEADING_FIELD_NUMBER: _builtins.int + heading: _builtins.str + subheading: _builtins.str - def __init__(self, *, heading: builtins.str | None=..., subheading: builtins.str | None=...) -> None: + def __init__(self, *, heading: _builtins.str | None=..., subheading: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_heading', b'_heading', '_subheading', b'_subheading', 'heading', b'heading', 'subheading', b'subheading'] - def HasField(self, field_name: typing.Literal['_heading', b'_heading', '_subheading', b'_subheading', 'heading', b'heading', 'subheading', b'subheading']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_heading', b'_heading', '_subheading', b'_subheading', 'heading', b'heading', 'subheading', b'subheading'] - def ClearField(self, field_name: typing.Literal['_heading', b'_heading', '_subheading', b'_subheading', 'heading', b'heading', 'subheading', b'subheading']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__heading: _TypeAlias = _typing.Literal['heading'] + _WhichOneofArgType__heading: _TypeAlias = _typing.Literal['_heading', b'_heading'] + _WhichOneofReturnType__subheading: _TypeAlias = _typing.Literal['subheading'] + _WhichOneofArgType__subheading: _TypeAlias = _typing.Literal['_subheading', b'_subheading'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_heading', b'_heading']) -> typing.Literal['heading'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__heading) -> _WhichOneofReturnType__heading | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_subheading', b'_subheading']) -> typing.Literal['subheading'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__subheading) -> _WhichOneofReturnType__subheading | None: ... -global___MachinePickerCustomizations = MachinePickerCustomizations \ No newline at end of file +Global___MachinePickerCustomizations: _TypeAlias = MachinePickerCustomizations \ No newline at end of file diff --git a/src/viam/gen/app/v1/billing_pb2.py b/src/viam/gen/app/v1/billing_pb2.py index d1ae179ec6..16dfca275f 100644 --- a/src/viam/gen/app/v1/billing_pb2.py +++ b/src/viam/gen/app/v1/billing_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'app/v1/billing.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/v1/billing.proto') _sym_db = _symbol_database.Default() from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14app/v1/billing.proto\x12\x0bviam.app.v1\x1a\x1fgoogle/protobuf/timestamp.proto"\x8e\x02\n\x0eInvoiceSummary\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12=\n\x0cinvoice_date\x18\x02 \x01(\x0b2\x1a.google.protobuf.TimestampR\x0binvoiceDate\x12%\n\x0einvoice_amount\x18\x03 \x01(\x01R\rinvoiceAmount\x12\x16\n\x06status\x18\x04 \x01(\tR\x06status\x125\n\x08due_date\x18\x05 \x01(\x0b2\x1a.google.protobuf.TimestampR\x07dueDate\x127\n\tpaid_date\x18\x06 \x01(\x0b2\x1a.google.protobuf.TimestampR\x08paidDate"S\n\x11PaymentMethodCard\x12\x14\n\x05brand\x18\x01 \x01(\tR\x05brand\x12(\n\x10last_four_digits\x18\x02 \x01(\tR\x0elastFourDigits"v\n\x10VerificationInfo\x12!\n\x0carrival_date\x18\x01 \x01(\x03R\x0barrivalDate\x12?\n\x1chosted_verification_page_url\x18\x02 \x01(\tR\x19hostedVerificationPageUrl"\xb0\x02\n\x1aPaymentMethodUSBankAccount\x12\x1b\n\tbank_name\x18\x01 \x01(\tR\x08bankName\x12D\n\x1flast_four_digits_account_number\x18\x02 \x01(\tR\x1blastFourDigitsAccountNumber\x12%\n\x0erouting_number\x18\x03 \x01(\tR\rroutingNumber\x12!\n\x0caccount_type\x18\x04 \x01(\tR\x0baccountType\x12O\n\x11verification_info\x18\x05 \x01(\x0b2\x1d.viam.app.v1.VerificationInfoH\x00R\x10verificationInfo\x88\x01\x01B\x14\n\x12_verification_info"4\n\x1bGetCurrentMonthUsageRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId"`\n\tUsageCost\x12?\n\rresource_type\x18\x01 \x01(\x0e2\x1a.viam.app.v1.UsageCostTypeR\x0cresourceType\x12\x12\n\x04cost\x18\x02 \x01(\x01R\x04cost"\xc6\x01\n\x1aResourceUsageCostsBySource\x128\n\x0bsource_type\x18\x01 \x01(\x0e2\x17.viam.app.v1.SourceTypeR\nsourceType\x12Q\n\x14resource_usage_costs\x18\x02 \x01(\x0b2\x1f.viam.app.v1.ResourceUsageCostsR\x12resourceUsageCosts\x12\x1b\n\ttier_name\x18\x03 \x01(\tR\x08tierName"\xcf\x01\n\x12ResourceUsageCosts\x127\n\x0busage_costs\x18\x01 \x03(\x0b2\x16.viam.app.v1.UsageCostR\nusageCosts\x12\x1a\n\x08discount\x18\x02 \x01(\x01R\x08discount\x12.\n\x13total_with_discount\x18\x03 \x01(\x01R\x11totalWithDiscount\x124\n\x16total_without_discount\x18\x04 \x01(\x01R\x14totalWithoutDiscount"\xcd\x07\n\x1cGetCurrentMonthUsageResponse\x129\n\nstart_date\x18\x01 \x01(\x0b2\x1a.google.protobuf.TimestampR\tstartDate\x125\n\x08end_date\x18\x02 \x01(\x0b2\x1a.google.protobuf.TimestampR\x07endDate\x12k\n\x1eresource_usage_costs_by_source\x18\x0e \x03(\x0b2\'.viam.app.v1.ResourceUsageCostsBySourceR\x1aresourceUsageCostsBySource\x12\x1a\n\x08subtotal\x18\x0f \x01(\x01R\x08subtotal\x12;\n\x18cloud_storage_usage_cost\x18\x03 \x01(\x01B\x02\x18\x01R\x15cloudStorageUsageCost\x127\n\x16data_upload_usage_cost\x18\x04 \x01(\x01B\x02\x18\x01R\x13dataUploadUsageCost\x125\n\x15data_egres_usage_cost\x18\x05 \x01(\x01B\x02\x18\x01R\x12dataEgresUsageCost\x12=\n\x19remote_control_usage_cost\x18\x06 \x01(\x01B\x02\x18\x01R\x16remoteControlUsageCost\x12A\n\x1bstandard_compute_usage_cost\x18\x07 \x01(\x01B\x02\x18\x01R\x18standardComputeUsageCost\x12+\n\x0fdiscount_amount\x18\x08 \x01(\x01B\x02\x18\x01R\x0ediscountAmount\x12=\n\x19total_usage_with_discount\x18\t \x01(\x01B\x02\x18\x01R\x16totalUsageWithDiscount\x12C\n\x1ctotal_usage_without_discount\x18\n \x01(\x01B\x02\x18\x01R\x19totalUsageWithoutDiscount\x127\n\x16per_machine_usage_cost\x18\x0b \x01(\x01B\x02\x18\x01R\x13perMachineUsageCost\x12Q\n$binary_data_cloud_storage_usage_cost\x18\x0c \x01(\x01B\x02\x18\x01R\x1fbinaryDataCloudStorageUsageCost\x12F\n\x1eother_cloud_storage_usage_cost\x18\r \x01(\x01B\x02\x18\x01R\x1aotherCloudStorageUsageCost"8\n\x1fGetOrgBillingInformationRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId"\xfa\x02\n GetOrgBillingInformationResponse\x122\n\x04type\x18\x01 \x01(\x0e2\x1e.viam.app.v1.PaymentMethodTypeR\x04type\x12#\n\rbilling_email\x18\x02 \x01(\tR\x0cbillingEmail\x12;\n\x06method\x18\x03 \x01(\x0b2\x1e.viam.app.v1.PaymentMethodCardH\x00R\x06method\x88\x01\x01\x12&\n\x0cbilling_tier\x18\x04 \x01(\tH\x01R\x0bbillingTier\x88\x01\x01\x12a\n\x16method_us_bank_account\x18\x05 \x01(\x0b2\'.viam.app.v1.PaymentMethodUSBankAccountH\x02R\x13methodUsBankAccount\x88\x01\x01B\t\n\x07_methodB\x0f\n\r_billing_tierB\x19\n\x17_method_us_bank_account"2\n\x19GetInvoicesSummaryRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId"\x86\x01\n\x1aGetInvoicesSummaryResponse\x12/\n\x13outstanding_balance\x18\x01 \x01(\x01R\x12outstandingBalance\x127\n\x08invoices\x18\x02 \x03(\x0b2\x1b.viam.app.v1.InvoiceSummaryR\x08invoices"=\n\x14GetInvoicePdfRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06org_id\x18\x02 \x01(\tR\x05orgId"-\n\x15GetInvoicePdfResponse\x12\x14\n\x05chunk\x18\x01 \x01(\x0cR\x05chunk"z\n\x1fSendPaymentRequiredEmailRequest\x12&\n\x0fcustomer_org_id\x18\x01 \x01(\tR\rcustomerOrgId\x12/\n\x14billing_owner_org_id\x18\x02 \x01(\tR\x11billingOwnerOrgId""\n SendPaymentRequiredEmailResponse"!\n\x1fGetAvailableBillingTiersRequest"8\n GetAvailableBillingTiersResponse\x12\x14\n\x05tiers\x18\x01 \x03(\tR\x05tiers"r\n$UpdateOrganizationBillingTierRequest\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12!\n\x0cbilling_tier\x18\x02 \x01(\tR\x0bbillingTier"\'\n%UpdateOrganizationBillingTierResponse"H\n%GetLocationBillingOrganizationRequest\x12\x1f\n\x0blocation_id\x18\x01 \x01(\tR\nlocationId"`\n&GetLocationBillingOrganizationResponse\x126\n\x17billing_organization_id\x18\x01 \x01(\tR\x15billingOrganizationId"\x83\x01\n(UpdateLocationBillingOrganizationRequest\x12\x1f\n\x0blocation_id\x18\x01 \x01(\tR\nlocationId\x126\n\x17billing_organization_id\x18\x02 \x01(\tR\x15billingOrganizationId"+\n)UpdateLocationBillingOrganizationResponse"\xb3\x02\n\x19ChargeOrganizationRequest\x12\'\n\x10org_id_to_charge\x18\x01 \x01(\tR\rorgIdToCharge\x12%\n\x0bdescription\x18\x02 \x01(\tH\x00R\x0bdescription\x88\x01\x01\x12\x1a\n\x08subtotal\x18\x03 \x01(\x01R\x08subtotal\x12\x10\n\x03tax\x18\x04 \x01(\x01R\x03tax\x122\n\x13org_id_for_branding\x18\x05 \x01(\tH\x01R\x10orgIdForBranding\x88\x01\x01\x12<\n\x1adisable_confirmation_email\x18\x06 \x01(\x08R\x18disableConfirmationEmailB\x0e\n\x0c_descriptionB\x16\n\x14_org_id_for_branding";\n\x1aChargeOrganizationResponse\x12\x1d\n\ninvoice_id\x18\x01 \x01(\tR\tinvoiceId"\x93\x02\n(CreateInvoiceAndChargeImmediatelyRequest\x12\'\n\x10org_id_to_charge\x18\x01 \x01(\tR\rorgIdToCharge\x12\x16\n\x06amount\x18\x02 \x01(\x01R\x06amount\x12%\n\x0bdescription\x18\x03 \x01(\tH\x00R\x0bdescription\x88\x01\x01\x122\n\x13org_id_for_branding\x18\x04 \x01(\tH\x01R\x10orgIdForBranding\x88\x01\x01\x12#\n\rdisable_email\x18\x05 \x01(\x08R\x0cdisableEmailB\x0e\n\x0c_descriptionB\x16\n\x14_org_id_for_branding"J\n)CreateInvoiceAndChargeImmediatelyResponse\x12\x1d\n\ninvoice_id\x18\x01 \x01(\tR\tinvoiceId*}\n\x11PaymentMethodType\x12#\n\x1fPAYMENT_METHOD_TYPE_UNSPECIFIED\x10\x00\x12\x1c\n\x18PAYMENT_METHOD_TYPE_CARD\x10\x01\x12%\n!PAYMENT_METHOD_TYPE_USBANKACCOUNT\x10\x02*\x84\t\n\rUsageCostType\x12\x1f\n\x1bUSAGE_COST_TYPE_UNSPECIFIED\x10\x00\x12#\n\x1bUSAGE_COST_TYPE_DATA_UPLOAD\x10\x01\x1a\x02\x08\x01\x12#\n\x1bUSAGE_COST_TYPE_DATA_EGRESS\x10\x02\x1a\x02\x08\x01\x12"\n\x1eUSAGE_COST_TYPE_REMOTE_CONTROL\x10\x03\x12$\n USAGE_COST_TYPE_STANDARD_COMPUTE\x10\x04\x12%\n\x1dUSAGE_COST_TYPE_CLOUD_STORAGE\x10\x05\x1a\x02\x08\x01\x12-\n)USAGE_COST_TYPE_BINARY_DATA_CLOUD_STORAGE\x10\x06\x12+\n#USAGE_COST_TYPE_OTHER_CLOUD_STORAGE\x10\x07\x1a\x02\x08\x01\x12\x1f\n\x1bUSAGE_COST_TYPE_PER_MACHINE\x10\x08\x12(\n$USAGE_COST_TYPE_TRIGGER_NOTIFICATION\x10\t\x12.\n*USAGE_COST_TYPE_TABULAR_DATA_CLOUD_STORAGE\x10\n\x120\n,USAGE_COST_TYPE_CONFIG_HISTORY_CLOUD_STORAGE\x10\x0b\x12&\n"USAGE_COST_TYPE_LOGS_CLOUD_STORAGE\x10\x0c\x12/\n+USAGE_COST_TYPE_TRAINING_LOGS_CLOUD_STORAGE\x10\r\x12*\n&USAGE_COST_TYPE_PACKAGES_CLOUD_STORAGE\x10\x0e\x12&\n"USAGE_COST_TYPE_BINARY_DATA_UPLOAD\x10\x0f\x12\'\n#USAGE_COST_TYPE_TABULAR_DATA_UPLOAD\x10\x10\x12\x1f\n\x1bUSAGE_COST_TYPE_LOGS_UPLOAD\x10\x11\x12&\n"USAGE_COST_TYPE_BINARY_DATA_EGRESS\x10\x12\x12\'\n#USAGE_COST_TYPE_TABULAR_DATA_EGRESS\x10\x13\x12\x1f\n\x1bUSAGE_COST_TYPE_LOGS_EGRESS\x10\x14\x12(\n$USAGE_COST_TYPE_TRAINING_LOGS_EGRESS\x10\x15\x127\n3USAGE_COST_TYPE_TABULAR_DATA_DATABASE_CLOUD_STORAGE\x10\x16\x121\n-USAGE_COST_TYPE_TABULAR_DATA_DATABASE_COMPUTE\x10\x17\x123\n/USAGE_COST_TYPE_BINARY_DATA_CROSS_REGION_EGRESS\x10\x18\x12/\n+USAGE_COST_TYPE_PIPELINE_SINK_CLOUD_STORAGE\x10\x19\x12)\n%USAGE_COST_TYPE_PIPELINE_SINK_COMPUTE\x10\x1a*X\n\nSourceType\x12\x1b\n\x17SOURCE_TYPE_UNSPECIFIED\x10\x00\x12\x13\n\x0fSOURCE_TYPE_ORG\x10\x01\x12\x18\n\x14SOURCE_TYPE_FRAGMENT\x10\x022\xcf\n\n\x0eBillingService\x12k\n\x14GetCurrentMonthUsage\x12(.viam.app.v1.GetCurrentMonthUsageRequest\x1a).viam.app.v1.GetCurrentMonthUsageResponse\x12w\n\x18GetOrgBillingInformation\x12,.viam.app.v1.GetOrgBillingInformationRequest\x1a-.viam.app.v1.GetOrgBillingInformationResponse\x12e\n\x12GetInvoicesSummary\x12&.viam.app.v1.GetInvoicesSummaryRequest\x1a\'.viam.app.v1.GetInvoicesSummaryResponse\x12X\n\rGetInvoicePdf\x12!.viam.app.v1.GetInvoicePdfRequest\x1a".viam.app.v1.GetInvoicePdfResponse0\x01\x12w\n\x18SendPaymentRequiredEmail\x12,.viam.app.v1.SendPaymentRequiredEmailRequest\x1a-.viam.app.v1.SendPaymentRequiredEmailResponse\x12w\n\x18GetAvailableBillingTiers\x12,.viam.app.v1.GetAvailableBillingTiersRequest\x1a-.viam.app.v1.GetAvailableBillingTiersResponse\x12\x86\x01\n\x1dUpdateOrganizationBillingTier\x121.viam.app.v1.UpdateOrganizationBillingTierRequest\x1a2.viam.app.v1.UpdateOrganizationBillingTierResponse\x12\x89\x01\n\x1eGetLocationBillingOrganization\x122.viam.app.v1.GetLocationBillingOrganizationRequest\x1a3.viam.app.v1.GetLocationBillingOrganizationResponse\x12\x92\x01\n!UpdateLocationBillingOrganization\x125.viam.app.v1.UpdateLocationBillingOrganizationRequest\x1a6.viam.app.v1.UpdateLocationBillingOrganizationResponse\x12e\n\x12ChargeOrganization\x12&.viam.app.v1.ChargeOrganizationRequest\x1a\'.viam.app.v1.ChargeOrganizationResponse\x12\x92\x01\n!CreateInvoiceAndChargeImmediately\x125.viam.app.v1.CreateInvoiceAndChargeImmediatelyRequest\x1a6.viam.app.v1.CreateInvoiceAndChargeImmediatelyResponseB\x18Z\x16go.viam.com/api/app/v1b\x06proto3') diff --git a/src/viam/gen/app/v1/billing_pb2.pyi b/src/viam/gen/app/v1/billing_pb2.pyi index 268b7ddee1..90874e83a2 100644 --- a/src/viam/gen/app/v1/billing_pb2.pyi +++ b/src/viam/gen/app/v1/billing_pb2.pyi @@ -2,27 +2,31 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.timestamp_pb2 +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +if sys.version_info >= (3, 13): + from warnings import deprecated as _deprecated +else: + from typing_extensions import deprecated as _deprecated +DESCRIPTOR: _descriptor.FileDescriptor class _PaymentMethodType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _PaymentMethodTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PaymentMethodType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _PaymentMethodTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_PaymentMethodType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor PAYMENT_METHOD_TYPE_UNSPECIFIED: _PaymentMethodType.ValueType PAYMENT_METHOD_TYPE_CARD: _PaymentMethodType.ValueType PAYMENT_METHOD_TYPE_USBANKACCOUNT: _PaymentMethodType.ValueType @@ -32,22 +36,38 @@ class PaymentMethodType(_PaymentMethodType, metaclass=_PaymentMethodTypeEnumType PAYMENT_METHOD_TYPE_UNSPECIFIED: PaymentMethodType.ValueType PAYMENT_METHOD_TYPE_CARD: PaymentMethodType.ValueType PAYMENT_METHOD_TYPE_USBANKACCOUNT: PaymentMethodType.ValueType -global___PaymentMethodType = PaymentMethodType +Global___PaymentMethodType: _TypeAlias = PaymentMethodType class _UsageCostType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _UsageCostTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_UsageCostType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _UsageCostTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_UsageCostType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor USAGE_COST_TYPE_UNSPECIFIED: _UsageCostType.ValueType - USAGE_COST_TYPE_DATA_UPLOAD: _UsageCostType.ValueType - USAGE_COST_TYPE_DATA_EGRESS: _UsageCostType.ValueType + + @_builtins.property + @_deprecated('This enum value has been marked as deprecated using proto enum value options.') + def USAGE_COST_TYPE_DATA_UPLOAD(self) -> _UsageCostType.ValueType: + ... + + @_builtins.property + @_deprecated('This enum value has been marked as deprecated using proto enum value options.') + def USAGE_COST_TYPE_DATA_EGRESS(self) -> _UsageCostType.ValueType: + ... USAGE_COST_TYPE_REMOTE_CONTROL: _UsageCostType.ValueType USAGE_COST_TYPE_STANDARD_COMPUTE: _UsageCostType.ValueType - USAGE_COST_TYPE_CLOUD_STORAGE: _UsageCostType.ValueType + + @_builtins.property + @_deprecated('This enum value has been marked as deprecated using proto enum value options.') + def USAGE_COST_TYPE_CLOUD_STORAGE(self) -> _UsageCostType.ValueType: + ... USAGE_COST_TYPE_BINARY_DATA_CLOUD_STORAGE: _UsageCostType.ValueType - USAGE_COST_TYPE_OTHER_CLOUD_STORAGE: _UsageCostType.ValueType + + @_builtins.property + @_deprecated('This enum value has been marked as deprecated using proto enum value options.') + def USAGE_COST_TYPE_OTHER_CLOUD_STORAGE(self) -> _UsageCostType.ValueType: + ... USAGE_COST_TYPE_PER_MACHINE: _UsageCostType.ValueType USAGE_COST_TYPE_TRIGGER_NOTIFICATION: _UsageCostType.ValueType USAGE_COST_TYPE_TABULAR_DATA_CLOUD_STORAGE: _UsageCostType.ValueType @@ -97,14 +117,14 @@ USAGE_COST_TYPE_TABULAR_DATA_DATABASE_COMPUTE: UsageCostType.ValueType USAGE_COST_TYPE_BINARY_DATA_CROSS_REGION_EGRESS: UsageCostType.ValueType USAGE_COST_TYPE_PIPELINE_SINK_CLOUD_STORAGE: UsageCostType.ValueType USAGE_COST_TYPE_PIPELINE_SINK_COMPUTE: UsageCostType.ValueType -global___UsageCostType = UsageCostType +Global___UsageCostType: _TypeAlias = UsageCostType class _SourceType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _SourceTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SourceType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _SourceTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_SourceType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor SOURCE_TYPE_UNSPECIFIED: _SourceType.ValueType SOURCE_TYPE_ORG: _SourceType.ValueType SOURCE_TYPE_FRAGMENT: _SourceType.ValueType @@ -114,555 +134,701 @@ class SourceType(_SourceType, metaclass=_SourceTypeEnumTypeWrapper): SOURCE_TYPE_UNSPECIFIED: SourceType.ValueType SOURCE_TYPE_ORG: SourceType.ValueType SOURCE_TYPE_FRAGMENT: SourceType.ValueType -global___SourceType = SourceType +Global___SourceType: _TypeAlias = SourceType -@typing.final -class InvoiceSummary(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - INVOICE_DATE_FIELD_NUMBER: builtins.int - INVOICE_AMOUNT_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - DUE_DATE_FIELD_NUMBER: builtins.int - PAID_DATE_FIELD_NUMBER: builtins.int - id: builtins.str - invoice_amount: builtins.float - status: builtins.str +@_typing.final +class InvoiceSummary(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + INVOICE_DATE_FIELD_NUMBER: _builtins.int + INVOICE_AMOUNT_FIELD_NUMBER: _builtins.int + STATUS_FIELD_NUMBER: _builtins.int + DUE_DATE_FIELD_NUMBER: _builtins.int + PAID_DATE_FIELD_NUMBER: _builtins.int + id: _builtins.str + invoice_amount: _builtins.float + status: _builtins.str - @property - def invoice_date(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def invoice_date(self) -> _timestamp_pb2.Timestamp: ... - @property - def due_date(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def due_date(self) -> _timestamp_pb2.Timestamp: ... - @property - def paid_date(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def paid_date(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, id: builtins.str=..., invoice_date: google.protobuf.timestamp_pb2.Timestamp | None=..., invoice_amount: builtins.float=..., status: builtins.str=..., due_date: google.protobuf.timestamp_pb2.Timestamp | None=..., paid_date: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., invoice_date: _timestamp_pb2.Timestamp | None=..., invoice_amount: _builtins.float=..., status: _builtins.str=..., due_date: _timestamp_pb2.Timestamp | None=..., paid_date: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['due_date', b'due_date', 'invoice_date', b'invoice_date', 'paid_date', b'paid_date'] - def HasField(self, field_name: typing.Literal['due_date', b'due_date', 'invoice_date', b'invoice_date', 'paid_date', b'paid_date']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['due_date', b'due_date', 'id', b'id', 'invoice_amount', b'invoice_amount', 'invoice_date', b'invoice_date', 'paid_date', b'paid_date', 'status', b'status'] - def ClearField(self, field_name: typing.Literal['due_date', b'due_date', 'id', b'id', 'invoice_amount', b'invoice_amount', 'invoice_date', b'invoice_date', 'paid_date', b'paid_date', 'status', b'status']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___InvoiceSummary = InvoiceSummary +Global___InvoiceSummary: _TypeAlias = InvoiceSummary -@typing.final -class PaymentMethodCard(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BRAND_FIELD_NUMBER: builtins.int - LAST_FOUR_DIGITS_FIELD_NUMBER: builtins.int - brand: builtins.str - last_four_digits: builtins.str +@_typing.final +class PaymentMethodCard(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + BRAND_FIELD_NUMBER: _builtins.int + LAST_FOUR_DIGITS_FIELD_NUMBER: _builtins.int + brand: _builtins.str + last_four_digits: _builtins.str - def __init__(self, *, brand: builtins.str=..., last_four_digits: builtins.str=...) -> None: + def __init__(self, *, brand: _builtins.str=..., last_four_digits: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['brand', b'brand', 'last_four_digits', b'last_four_digits'] - def ClearField(self, field_name: typing.Literal['brand', b'brand', 'last_four_digits', b'last_four_digits']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PaymentMethodCard = PaymentMethodCard +Global___PaymentMethodCard: _TypeAlias = PaymentMethodCard -@typing.final -class VerificationInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ARRIVAL_DATE_FIELD_NUMBER: builtins.int - HOSTED_VERIFICATION_PAGE_URL_FIELD_NUMBER: builtins.int - arrival_date: builtins.int - hosted_verification_page_url: builtins.str +@_typing.final +class VerificationInfo(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ARRIVAL_DATE_FIELD_NUMBER: _builtins.int + HOSTED_VERIFICATION_PAGE_URL_FIELD_NUMBER: _builtins.int + arrival_date: _builtins.int + hosted_verification_page_url: _builtins.str - def __init__(self, *, arrival_date: builtins.int=..., hosted_verification_page_url: builtins.str=...) -> None: + def __init__(self, *, arrival_date: _builtins.int=..., hosted_verification_page_url: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['arrival_date', b'arrival_date', 'hosted_verification_page_url', b'hosted_verification_page_url'] - def ClearField(self, field_name: typing.Literal['arrival_date', b'arrival_date', 'hosted_verification_page_url', b'hosted_verification_page_url']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___VerificationInfo = VerificationInfo +Global___VerificationInfo: _TypeAlias = VerificationInfo -@typing.final -class PaymentMethodUSBankAccount(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BANK_NAME_FIELD_NUMBER: builtins.int - LAST_FOUR_DIGITS_ACCOUNT_NUMBER_FIELD_NUMBER: builtins.int - ROUTING_NUMBER_FIELD_NUMBER: builtins.int - ACCOUNT_TYPE_FIELD_NUMBER: builtins.int - VERIFICATION_INFO_FIELD_NUMBER: builtins.int - bank_name: builtins.str - last_four_digits_account_number: builtins.str - routing_number: builtins.str - account_type: builtins.str +@_typing.final +class PaymentMethodUSBankAccount(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + BANK_NAME_FIELD_NUMBER: _builtins.int + LAST_FOUR_DIGITS_ACCOUNT_NUMBER_FIELD_NUMBER: _builtins.int + ROUTING_NUMBER_FIELD_NUMBER: _builtins.int + ACCOUNT_TYPE_FIELD_NUMBER: _builtins.int + VERIFICATION_INFO_FIELD_NUMBER: _builtins.int + bank_name: _builtins.str + last_four_digits_account_number: _builtins.str + routing_number: _builtins.str + account_type: _builtins.str - @property - def verification_info(self) -> global___VerificationInfo: + @_builtins.property + def verification_info(self) -> Global___VerificationInfo: """this is only set if the account is not verified""" - def __init__(self, *, bank_name: builtins.str=..., last_four_digits_account_number: builtins.str=..., routing_number: builtins.str=..., account_type: builtins.str=..., verification_info: global___VerificationInfo | None=...) -> None: + def __init__(self, *, bank_name: _builtins.str=..., last_four_digits_account_number: _builtins.str=..., routing_number: _builtins.str=..., account_type: _builtins.str=..., verification_info: Global___VerificationInfo | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_verification_info', b'_verification_info', 'verification_info', b'verification_info'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_verification_info', b'_verification_info', 'account_type', b'account_type', 'bank_name', b'bank_name', 'last_four_digits_account_number', b'last_four_digits_account_number', 'routing_number', b'routing_number', 'verification_info', b'verification_info'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__verification_info: _TypeAlias = _typing.Literal['verification_info'] + _WhichOneofArgType__verification_info: _TypeAlias = _typing.Literal['_verification_info', b'_verification_info'] - def HasField(self, field_name: typing.Literal['_verification_info', b'_verification_info', 'verification_info', b'verification_info']) -> builtins.bool: + def WhichOneof(self, oneof_group: _WhichOneofArgType__verification_info) -> _WhichOneofReturnType__verification_info | None: ... +Global___PaymentMethodUSBankAccount: _TypeAlias = PaymentMethodUSBankAccount - def ClearField(self, field_name: typing.Literal['_verification_info', b'_verification_info', 'account_type', b'account_type', 'bank_name', b'bank_name', 'last_four_digits_account_number', b'last_four_digits_account_number', 'routing_number', b'routing_number', 'verification_info', b'verification_info']) -> None: +@_typing.final +class GetCurrentMonthUsageRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str + + def __init__(self, *, org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['org_id', b'org_id'] - def WhichOneof(self, oneof_group: typing.Literal['_verification_info', b'_verification_info']) -> typing.Literal['verification_info'] | None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PaymentMethodUSBankAccount = PaymentMethodUSBankAccount +Global___GetCurrentMonthUsageRequest: _TypeAlias = GetCurrentMonthUsageRequest -@typing.final -class GetCurrentMonthUsageRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class UsageCost(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + RESOURCE_TYPE_FIELD_NUMBER: _builtins.int + COST_FIELD_NUMBER: _builtins.int + resource_type: Global___UsageCostType.ValueType + cost: _builtins.float - def __init__(self, *, org_id: builtins.str=...) -> None: + def __init__(self, *, resource_type: Global___UsageCostType.ValueType=..., cost: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['cost', b'cost', 'resource_type', b'resource_type'] - def ClearField(self, field_name: typing.Literal['org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetCurrentMonthUsageRequest = GetCurrentMonthUsageRequest +Global___UsageCost: _TypeAlias = UsageCost -@typing.final -class UsageCost(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RESOURCE_TYPE_FIELD_NUMBER: builtins.int - COST_FIELD_NUMBER: builtins.int - resource_type: global___UsageCostType.ValueType - cost: builtins.float +@_typing.final +class ResourceUsageCostsBySource(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SOURCE_TYPE_FIELD_NUMBER: _builtins.int + RESOURCE_USAGE_COSTS_FIELD_NUMBER: _builtins.int + TIER_NAME_FIELD_NUMBER: _builtins.int + source_type: Global___SourceType.ValueType + tier_name: _builtins.str - def __init__(self, *, resource_type: global___UsageCostType.ValueType=..., cost: builtins.float=...) -> None: + @_builtins.property + def resource_usage_costs(self) -> Global___ResourceUsageCosts: ... - def ClearField(self, field_name: typing.Literal['cost', b'cost', 'resource_type', b'resource_type']) -> None: + def __init__(self, *, source_type: Global___SourceType.ValueType=..., resource_usage_costs: Global___ResourceUsageCosts | None=..., tier_name: _builtins.str=...) -> None: ... -global___UsageCost = UsageCost + _HasFieldArgType: _TypeAlias = _typing.Literal['resource_usage_costs', b'resource_usage_costs'] -@typing.final -class ResourceUsageCostsBySource(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SOURCE_TYPE_FIELD_NUMBER: builtins.int - RESOURCE_USAGE_COSTS_FIELD_NUMBER: builtins.int - TIER_NAME_FIELD_NUMBER: builtins.int - source_type: global___SourceType.ValueType - tier_name: builtins.str + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['resource_usage_costs', b'resource_usage_costs', 'source_type', b'source_type', 'tier_name', b'tier_name'] - @property - def resource_usage_costs(self) -> global___ResourceUsageCosts: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... +Global___ResourceUsageCostsBySource: _TypeAlias = ResourceUsageCostsBySource - def __init__(self, *, source_type: global___SourceType.ValueType=..., resource_usage_costs: global___ResourceUsageCosts | None=..., tier_name: builtins.str=...) -> None: +@_typing.final +class ResourceUsageCosts(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + USAGE_COSTS_FIELD_NUMBER: _builtins.int + DISCOUNT_FIELD_NUMBER: _builtins.int + TOTAL_WITH_DISCOUNT_FIELD_NUMBER: _builtins.int + TOTAL_WITHOUT_DISCOUNT_FIELD_NUMBER: _builtins.int + discount: _builtins.float + total_with_discount: _builtins.float + total_without_discount: _builtins.float + + @_builtins.property + def usage_costs(self) -> _containers.RepeatedCompositeFieldContainer[Global___UsageCost]: ... - def HasField(self, field_name: typing.Literal['resource_usage_costs', b'resource_usage_costs']) -> builtins.bool: + def __init__(self, *, usage_costs: _abc.Iterable[Global___UsageCost] | None=..., discount: _builtins.float=..., total_with_discount: _builtins.float=..., total_without_discount: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['discount', b'discount', 'total_with_discount', b'total_with_discount', 'total_without_discount', b'total_without_discount', 'usage_costs', b'usage_costs'] - def ClearField(self, field_name: typing.Literal['resource_usage_costs', b'resource_usage_costs', 'source_type', b'source_type', 'tier_name', b'tier_name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ResourceUsageCostsBySource = ResourceUsageCostsBySource +Global___ResourceUsageCosts: _TypeAlias = ResourceUsageCosts + +@_typing.final +class GetCurrentMonthUsageResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + START_DATE_FIELD_NUMBER: _builtins.int + END_DATE_FIELD_NUMBER: _builtins.int + RESOURCE_USAGE_COSTS_BY_SOURCE_FIELD_NUMBER: _builtins.int + SUBTOTAL_FIELD_NUMBER: _builtins.int + CLOUD_STORAGE_USAGE_COST_FIELD_NUMBER: _builtins.int + DATA_UPLOAD_USAGE_COST_FIELD_NUMBER: _builtins.int + DATA_EGRES_USAGE_COST_FIELD_NUMBER: _builtins.int + REMOTE_CONTROL_USAGE_COST_FIELD_NUMBER: _builtins.int + STANDARD_COMPUTE_USAGE_COST_FIELD_NUMBER: _builtins.int + DISCOUNT_AMOUNT_FIELD_NUMBER: _builtins.int + TOTAL_USAGE_WITH_DISCOUNT_FIELD_NUMBER: _builtins.int + TOTAL_USAGE_WITHOUT_DISCOUNT_FIELD_NUMBER: _builtins.int + PER_MACHINE_USAGE_COST_FIELD_NUMBER: _builtins.int + BINARY_DATA_CLOUD_STORAGE_USAGE_COST_FIELD_NUMBER: _builtins.int + OTHER_CLOUD_STORAGE_USAGE_COST_FIELD_NUMBER: _builtins.int + subtotal: _builtins.float -@typing.final -class ResourceUsageCosts(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - USAGE_COSTS_FIELD_NUMBER: builtins.int - DISCOUNT_FIELD_NUMBER: builtins.int - TOTAL_WITH_DISCOUNT_FIELD_NUMBER: builtins.int - TOTAL_WITHOUT_DISCOUNT_FIELD_NUMBER: builtins.int - discount: builtins.float - total_with_discount: builtins.float - total_without_discount: builtins.float + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def cloud_storage_usage_cost(self) -> _builtins.float: + """all fields below are deprecated""" + + @cloud_storage_usage_cost.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def cloud_storage_usage_cost(self, value: _builtins.float) -> None: + """all fields below are deprecated""" + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def data_upload_usage_cost(self) -> _builtins.float: + ... + + @data_upload_usage_cost.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def data_upload_usage_cost(self, value: _builtins.float) -> None: + ... + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def data_egres_usage_cost(self) -> _builtins.float: + ... + + @data_egres_usage_cost.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def data_egres_usage_cost(self, value: _builtins.float) -> None: + ... - @property - def usage_costs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UsageCost]: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def remote_control_usage_cost(self) -> _builtins.float: ... - def __init__(self, *, usage_costs: collections.abc.Iterable[global___UsageCost] | None=..., discount: builtins.float=..., total_with_discount: builtins.float=..., total_without_discount: builtins.float=...) -> None: + @remote_control_usage_cost.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def remote_control_usage_cost(self, value: _builtins.float) -> None: ... - def ClearField(self, field_name: typing.Literal['discount', b'discount', 'total_with_discount', b'total_with_discount', 'total_without_discount', b'total_without_discount', 'usage_costs', b'usage_costs']) -> None: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def standard_compute_usage_cost(self) -> _builtins.float: ... -global___ResourceUsageCosts = ResourceUsageCosts -@typing.final -class GetCurrentMonthUsageResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - START_DATE_FIELD_NUMBER: builtins.int - END_DATE_FIELD_NUMBER: builtins.int - RESOURCE_USAGE_COSTS_BY_SOURCE_FIELD_NUMBER: builtins.int - SUBTOTAL_FIELD_NUMBER: builtins.int - CLOUD_STORAGE_USAGE_COST_FIELD_NUMBER: builtins.int - DATA_UPLOAD_USAGE_COST_FIELD_NUMBER: builtins.int - DATA_EGRES_USAGE_COST_FIELD_NUMBER: builtins.int - REMOTE_CONTROL_USAGE_COST_FIELD_NUMBER: builtins.int - STANDARD_COMPUTE_USAGE_COST_FIELD_NUMBER: builtins.int - DISCOUNT_AMOUNT_FIELD_NUMBER: builtins.int - TOTAL_USAGE_WITH_DISCOUNT_FIELD_NUMBER: builtins.int - TOTAL_USAGE_WITHOUT_DISCOUNT_FIELD_NUMBER: builtins.int - PER_MACHINE_USAGE_COST_FIELD_NUMBER: builtins.int - BINARY_DATA_CLOUD_STORAGE_USAGE_COST_FIELD_NUMBER: builtins.int - OTHER_CLOUD_STORAGE_USAGE_COST_FIELD_NUMBER: builtins.int - subtotal: builtins.float - cloud_storage_usage_cost: builtins.float - 'all fields below are deprecated' - data_upload_usage_cost: builtins.float - data_egres_usage_cost: builtins.float - remote_control_usage_cost: builtins.float - standard_compute_usage_cost: builtins.float - discount_amount: builtins.float - total_usage_with_discount: builtins.float - total_usage_without_discount: builtins.float - per_machine_usage_cost: builtins.float - binary_data_cloud_storage_usage_cost: builtins.float - other_cloud_storage_usage_cost: builtins.float + @standard_compute_usage_cost.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def standard_compute_usage_cost(self, value: _builtins.float) -> None: + ... + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def discount_amount(self) -> _builtins.float: + ... + + @discount_amount.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def discount_amount(self, value: _builtins.float) -> None: + ... + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def total_usage_with_discount(self) -> _builtins.float: + ... + + @total_usage_with_discount.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def total_usage_with_discount(self, value: _builtins.float) -> None: + ... + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def total_usage_without_discount(self) -> _builtins.float: + ... + + @total_usage_without_discount.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def total_usage_without_discount(self, value: _builtins.float) -> None: + ... + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def per_machine_usage_cost(self) -> _builtins.float: + ... + + @per_machine_usage_cost.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def per_machine_usage_cost(self, value: _builtins.float) -> None: + ... + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def binary_data_cloud_storage_usage_cost(self) -> _builtins.float: + ... + + @binary_data_cloud_storage_usage_cost.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def binary_data_cloud_storage_usage_cost(self, value: _builtins.float) -> None: + ... + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def other_cloud_storage_usage_cost(self) -> _builtins.float: + ... + + @other_cloud_storage_usage_cost.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def other_cloud_storage_usage_cost(self, value: _builtins.float) -> None: + ... - @property - def start_date(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def start_date(self) -> _timestamp_pb2.Timestamp: ... - @property - def end_date(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def end_date(self) -> _timestamp_pb2.Timestamp: ... - @property - def resource_usage_costs_by_source(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ResourceUsageCostsBySource]: + @_builtins.property + def resource_usage_costs_by_source(self) -> _containers.RepeatedCompositeFieldContainer[Global___ResourceUsageCostsBySource]: ... - def __init__(self, *, start_date: google.protobuf.timestamp_pb2.Timestamp | None=..., end_date: google.protobuf.timestamp_pb2.Timestamp | None=..., resource_usage_costs_by_source: collections.abc.Iterable[global___ResourceUsageCostsBySource] | None=..., subtotal: builtins.float=..., cloud_storage_usage_cost: builtins.float=..., data_upload_usage_cost: builtins.float=..., data_egres_usage_cost: builtins.float=..., remote_control_usage_cost: builtins.float=..., standard_compute_usage_cost: builtins.float=..., discount_amount: builtins.float=..., total_usage_with_discount: builtins.float=..., total_usage_without_discount: builtins.float=..., per_machine_usage_cost: builtins.float=..., binary_data_cloud_storage_usage_cost: builtins.float=..., other_cloud_storage_usage_cost: builtins.float=...) -> None: + def __init__(self, *, start_date: _timestamp_pb2.Timestamp | None=..., end_date: _timestamp_pb2.Timestamp | None=..., resource_usage_costs_by_source: _abc.Iterable[Global___ResourceUsageCostsBySource] | None=..., subtotal: _builtins.float=..., cloud_storage_usage_cost: _builtins.float=..., data_upload_usage_cost: _builtins.float=..., data_egres_usage_cost: _builtins.float=..., remote_control_usage_cost: _builtins.float=..., standard_compute_usage_cost: _builtins.float=..., discount_amount: _builtins.float=..., total_usage_with_discount: _builtins.float=..., total_usage_without_discount: _builtins.float=..., per_machine_usage_cost: _builtins.float=..., binary_data_cloud_storage_usage_cost: _builtins.float=..., other_cloud_storage_usage_cost: _builtins.float=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['end_date', b'end_date', 'start_date', b'start_date'] - def HasField(self, field_name: typing.Literal['end_date', b'end_date', 'start_date', b'start_date']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['binary_data_cloud_storage_usage_cost', b'binary_data_cloud_storage_usage_cost', 'cloud_storage_usage_cost', b'cloud_storage_usage_cost', 'data_egres_usage_cost', b'data_egres_usage_cost', 'data_upload_usage_cost', b'data_upload_usage_cost', 'discount_amount', b'discount_amount', 'end_date', b'end_date', 'other_cloud_storage_usage_cost', b'other_cloud_storage_usage_cost', 'per_machine_usage_cost', b'per_machine_usage_cost', 'remote_control_usage_cost', b'remote_control_usage_cost', 'resource_usage_costs_by_source', b'resource_usage_costs_by_source', 'standard_compute_usage_cost', b'standard_compute_usage_cost', 'start_date', b'start_date', 'subtotal', b'subtotal', 'total_usage_with_discount', b'total_usage_with_discount', 'total_usage_without_discount', b'total_usage_without_discount'] - def ClearField(self, field_name: typing.Literal['binary_data_cloud_storage_usage_cost', b'binary_data_cloud_storage_usage_cost', 'cloud_storage_usage_cost', b'cloud_storage_usage_cost', 'data_egres_usage_cost', b'data_egres_usage_cost', 'data_upload_usage_cost', b'data_upload_usage_cost', 'discount_amount', b'discount_amount', 'end_date', b'end_date', 'other_cloud_storage_usage_cost', b'other_cloud_storage_usage_cost', 'per_machine_usage_cost', b'per_machine_usage_cost', 'remote_control_usage_cost', b'remote_control_usage_cost', 'resource_usage_costs_by_source', b'resource_usage_costs_by_source', 'standard_compute_usage_cost', b'standard_compute_usage_cost', 'start_date', b'start_date', 'subtotal', b'subtotal', 'total_usage_with_discount', b'total_usage_with_discount', 'total_usage_without_discount', b'total_usage_without_discount']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetCurrentMonthUsageResponse = GetCurrentMonthUsageResponse +Global___GetCurrentMonthUsageResponse: _TypeAlias = GetCurrentMonthUsageResponse -@typing.final -class GetOrgBillingInformationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class GetOrgBillingInformationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str - def __init__(self, *, org_id: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetOrgBillingInformationRequest = GetOrgBillingInformationRequest +Global___GetOrgBillingInformationRequest: _TypeAlias = GetOrgBillingInformationRequest -@typing.final -class GetOrgBillingInformationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TYPE_FIELD_NUMBER: builtins.int - BILLING_EMAIL_FIELD_NUMBER: builtins.int - METHOD_FIELD_NUMBER: builtins.int - BILLING_TIER_FIELD_NUMBER: builtins.int - METHOD_US_BANK_ACCOUNT_FIELD_NUMBER: builtins.int - type: global___PaymentMethodType.ValueType - billing_email: builtins.str - billing_tier: builtins.str +@_typing.final +class GetOrgBillingInformationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + BILLING_EMAIL_FIELD_NUMBER: _builtins.int + METHOD_FIELD_NUMBER: _builtins.int + BILLING_TIER_FIELD_NUMBER: _builtins.int + METHOD_US_BANK_ACCOUNT_FIELD_NUMBER: _builtins.int + type: Global___PaymentMethodType.ValueType + billing_email: _builtins.str + billing_tier: _builtins.str 'Only return billing_tier for billing dashboard admin users' - @property - def method(self) -> global___PaymentMethodCard: + @_builtins.property + def method(self) -> Global___PaymentMethodCard: """defined if type is PAYMENT_METHOD_TYPE_CARD""" - @property - def method_us_bank_account(self) -> global___PaymentMethodUSBankAccount: + @_builtins.property + def method_us_bank_account(self) -> Global___PaymentMethodUSBankAccount: """defined if type is PAYMENT_METHOD_TYPE_USBANKACCOUNT""" - def __init__(self, *, type: global___PaymentMethodType.ValueType=..., billing_email: builtins.str=..., method: global___PaymentMethodCard | None=..., billing_tier: builtins.str | None=..., method_us_bank_account: global___PaymentMethodUSBankAccount | None=...) -> None: + def __init__(self, *, type: Global___PaymentMethodType.ValueType=..., billing_email: _builtins.str=..., method: Global___PaymentMethodCard | None=..., billing_tier: _builtins.str | None=..., method_us_bank_account: Global___PaymentMethodUSBankAccount | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_billing_tier', b'_billing_tier', '_method', b'_method', '_method_us_bank_account', b'_method_us_bank_account', 'billing_tier', b'billing_tier', 'method', b'method', 'method_us_bank_account', b'method_us_bank_account'] - def HasField(self, field_name: typing.Literal['_billing_tier', b'_billing_tier', '_method', b'_method', '_method_us_bank_account', b'_method_us_bank_account', 'billing_tier', b'billing_tier', 'method', b'method', 'method_us_bank_account', b'method_us_bank_account']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_billing_tier', b'_billing_tier', '_method', b'_method', '_method_us_bank_account', b'_method_us_bank_account', 'billing_email', b'billing_email', 'billing_tier', b'billing_tier', 'method', b'method', 'method_us_bank_account', b'method_us_bank_account', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['_billing_tier', b'_billing_tier', '_method', b'_method', '_method_us_bank_account', b'_method_us_bank_account', 'billing_email', b'billing_email', 'billing_tier', b'billing_tier', 'method', b'method', 'method_us_bank_account', b'method_us_bank_account', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__billing_tier: _TypeAlias = _typing.Literal['billing_tier'] + _WhichOneofArgType__billing_tier: _TypeAlias = _typing.Literal['_billing_tier', b'_billing_tier'] + _WhichOneofReturnType__method: _TypeAlias = _typing.Literal['method'] + _WhichOneofArgType__method: _TypeAlias = _typing.Literal['_method', b'_method'] + _WhichOneofReturnType__method_us_bank_account: _TypeAlias = _typing.Literal['method_us_bank_account'] + _WhichOneofArgType__method_us_bank_account: _TypeAlias = _typing.Literal['_method_us_bank_account', b'_method_us_bank_account'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_billing_tier', b'_billing_tier']) -> typing.Literal['billing_tier'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__billing_tier) -> _WhichOneofReturnType__billing_tier | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_method', b'_method']) -> typing.Literal['method'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__method) -> _WhichOneofReturnType__method | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_method_us_bank_account', b'_method_us_bank_account']) -> typing.Literal['method_us_bank_account'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__method_us_bank_account) -> _WhichOneofReturnType__method_us_bank_account | None: ... -global___GetOrgBillingInformationResponse = GetOrgBillingInformationResponse +Global___GetOrgBillingInformationResponse: _TypeAlias = GetOrgBillingInformationResponse -@typing.final -class GetInvoicesSummaryRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str +@_typing.final +class GetInvoicesSummaryRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str - def __init__(self, *, org_id: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetInvoicesSummaryRequest = GetInvoicesSummaryRequest +Global___GetInvoicesSummaryRequest: _TypeAlias = GetInvoicesSummaryRequest -@typing.final -class GetInvoicesSummaryResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - OUTSTANDING_BALANCE_FIELD_NUMBER: builtins.int - INVOICES_FIELD_NUMBER: builtins.int - outstanding_balance: builtins.float +@_typing.final +class GetInvoicesSummaryResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + OUTSTANDING_BALANCE_FIELD_NUMBER: _builtins.int + INVOICES_FIELD_NUMBER: _builtins.int + outstanding_balance: _builtins.float 'all unpaid balances at the end of the last billing cycle' - @property - def invoices(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___InvoiceSummary]: + @_builtins.property + def invoices(self) -> _containers.RepeatedCompositeFieldContainer[Global___InvoiceSummary]: """all previous invoices""" - def __init__(self, *, outstanding_balance: builtins.float=..., invoices: collections.abc.Iterable[global___InvoiceSummary] | None=...) -> None: + def __init__(self, *, outstanding_balance: _builtins.float=..., invoices: _abc.Iterable[Global___InvoiceSummary] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['invoices', b'invoices', 'outstanding_balance', b'outstanding_balance'] - def ClearField(self, field_name: typing.Literal['invoices', b'invoices', 'outstanding_balance', b'outstanding_balance']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetInvoicesSummaryResponse = GetInvoicesSummaryResponse +Global___GetInvoicesSummaryResponse: _TypeAlias = GetInvoicesSummaryResponse -@typing.final -class GetInvoicePdfRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - ORG_ID_FIELD_NUMBER: builtins.int - id: builtins.str - org_id: builtins.str +@_typing.final +class GetInvoicePdfRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + ORG_ID_FIELD_NUMBER: _builtins.int + id: _builtins.str + org_id: _builtins.str - def __init__(self, *, id: builtins.str=..., org_id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetInvoicePdfRequest = GetInvoicePdfRequest +Global___GetInvoicePdfRequest: _TypeAlias = GetInvoicePdfRequest -@typing.final -class GetInvoicePdfResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CHUNK_FIELD_NUMBER: builtins.int - chunk: builtins.bytes +@_typing.final +class GetInvoicePdfResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CHUNK_FIELD_NUMBER: _builtins.int + chunk: _builtins.bytes - def __init__(self, *, chunk: builtins.bytes=...) -> None: + def __init__(self, *, chunk: _builtins.bytes=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['chunk', b'chunk'] - def ClearField(self, field_name: typing.Literal['chunk', b'chunk']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetInvoicePdfResponse = GetInvoicePdfResponse +Global___GetInvoicePdfResponse: _TypeAlias = GetInvoicePdfResponse -@typing.final -class SendPaymentRequiredEmailRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CUSTOMER_ORG_ID_FIELD_NUMBER: builtins.int - BILLING_OWNER_ORG_ID_FIELD_NUMBER: builtins.int - customer_org_id: builtins.str - billing_owner_org_id: builtins.str +@_typing.final +class SendPaymentRequiredEmailRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CUSTOMER_ORG_ID_FIELD_NUMBER: _builtins.int + BILLING_OWNER_ORG_ID_FIELD_NUMBER: _builtins.int + customer_org_id: _builtins.str + billing_owner_org_id: _builtins.str - def __init__(self, *, customer_org_id: builtins.str=..., billing_owner_org_id: builtins.str=...) -> None: + def __init__(self, *, customer_org_id: _builtins.str=..., billing_owner_org_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['billing_owner_org_id', b'billing_owner_org_id', 'customer_org_id', b'customer_org_id'] - def ClearField(self, field_name: typing.Literal['billing_owner_org_id', b'billing_owner_org_id', 'customer_org_id', b'customer_org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SendPaymentRequiredEmailRequest = SendPaymentRequiredEmailRequest +Global___SendPaymentRequiredEmailRequest: _TypeAlias = SendPaymentRequiredEmailRequest -@typing.final -class SendPaymentRequiredEmailResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SendPaymentRequiredEmailResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SendPaymentRequiredEmailResponse = SendPaymentRequiredEmailResponse +Global___SendPaymentRequiredEmailResponse: _TypeAlias = SendPaymentRequiredEmailResponse -@typing.final -class GetAvailableBillingTiersRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GetAvailableBillingTiersRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___GetAvailableBillingTiersRequest = GetAvailableBillingTiersRequest +Global___GetAvailableBillingTiersRequest: _TypeAlias = GetAvailableBillingTiersRequest -@typing.final -class GetAvailableBillingTiersResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TIERS_FIELD_NUMBER: builtins.int +@_typing.final +class GetAvailableBillingTiersResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + TIERS_FIELD_NUMBER: _builtins.int - @property - def tiers(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def tiers(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, tiers: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, tiers: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['tiers', b'tiers'] - def ClearField(self, field_name: typing.Literal['tiers', b'tiers']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetAvailableBillingTiersResponse = GetAvailableBillingTiersResponse +Global___GetAvailableBillingTiersResponse: _TypeAlias = GetAvailableBillingTiersResponse -@typing.final -class UpdateOrganizationBillingTierRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORGANIZATION_ID_FIELD_NUMBER: builtins.int - BILLING_TIER_FIELD_NUMBER: builtins.int - organization_id: builtins.str - billing_tier: builtins.str +@_typing.final +class UpdateOrganizationBillingTierRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + BILLING_TIER_FIELD_NUMBER: _builtins.int + organization_id: _builtins.str + billing_tier: _builtins.str - def __init__(self, *, organization_id: builtins.str=..., billing_tier: builtins.str=...) -> None: + def __init__(self, *, organization_id: _builtins.str=..., billing_tier: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['billing_tier', b'billing_tier', 'organization_id', b'organization_id'] - def ClearField(self, field_name: typing.Literal['billing_tier', b'billing_tier', 'organization_id', b'organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateOrganizationBillingTierRequest = UpdateOrganizationBillingTierRequest +Global___UpdateOrganizationBillingTierRequest: _TypeAlias = UpdateOrganizationBillingTierRequest -@typing.final -class UpdateOrganizationBillingTierResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class UpdateOrganizationBillingTierResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___UpdateOrganizationBillingTierResponse = UpdateOrganizationBillingTierResponse +Global___UpdateOrganizationBillingTierResponse: _TypeAlias = UpdateOrganizationBillingTierResponse -@typing.final -class GetLocationBillingOrganizationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_ID_FIELD_NUMBER: builtins.int - location_id: builtins.str +@_typing.final +class GetLocationBillingOrganizationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_ID_FIELD_NUMBER: _builtins.int + location_id: _builtins.str - def __init__(self, *, location_id: builtins.str=...) -> None: + def __init__(self, *, location_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id'] - def ClearField(self, field_name: typing.Literal['location_id', b'location_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetLocationBillingOrganizationRequest = GetLocationBillingOrganizationRequest +Global___GetLocationBillingOrganizationRequest: _TypeAlias = GetLocationBillingOrganizationRequest -@typing.final -class GetLocationBillingOrganizationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BILLING_ORGANIZATION_ID_FIELD_NUMBER: builtins.int - billing_organization_id: builtins.str +@_typing.final +class GetLocationBillingOrganizationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + BILLING_ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + billing_organization_id: _builtins.str - def __init__(self, *, billing_organization_id: builtins.str=...) -> None: + def __init__(self, *, billing_organization_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['billing_organization_id', b'billing_organization_id'] - def ClearField(self, field_name: typing.Literal['billing_organization_id', b'billing_organization_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetLocationBillingOrganizationResponse = GetLocationBillingOrganizationResponse +Global___GetLocationBillingOrganizationResponse: _TypeAlias = GetLocationBillingOrganizationResponse -@typing.final -class UpdateLocationBillingOrganizationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_ID_FIELD_NUMBER: builtins.int - BILLING_ORGANIZATION_ID_FIELD_NUMBER: builtins.int - location_id: builtins.str - billing_organization_id: builtins.str +@_typing.final +class UpdateLocationBillingOrganizationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_ID_FIELD_NUMBER: _builtins.int + BILLING_ORGANIZATION_ID_FIELD_NUMBER: _builtins.int + location_id: _builtins.str + billing_organization_id: _builtins.str - def __init__(self, *, location_id: builtins.str=..., billing_organization_id: builtins.str=...) -> None: + def __init__(self, *, location_id: _builtins.str=..., billing_organization_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['billing_organization_id', b'billing_organization_id', 'location_id', b'location_id'] - def ClearField(self, field_name: typing.Literal['billing_organization_id', b'billing_organization_id', 'location_id', b'location_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateLocationBillingOrganizationRequest = UpdateLocationBillingOrganizationRequest +Global___UpdateLocationBillingOrganizationRequest: _TypeAlias = UpdateLocationBillingOrganizationRequest -@typing.final -class UpdateLocationBillingOrganizationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class UpdateLocationBillingOrganizationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___UpdateLocationBillingOrganizationResponse = UpdateLocationBillingOrganizationResponse +Global___UpdateLocationBillingOrganizationResponse: _TypeAlias = UpdateLocationBillingOrganizationResponse -@typing.final -class ChargeOrganizationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_TO_CHARGE_FIELD_NUMBER: builtins.int - DESCRIPTION_FIELD_NUMBER: builtins.int - SUBTOTAL_FIELD_NUMBER: builtins.int - TAX_FIELD_NUMBER: builtins.int - ORG_ID_FOR_BRANDING_FIELD_NUMBER: builtins.int - DISABLE_CONFIRMATION_EMAIL_FIELD_NUMBER: builtins.int - org_id_to_charge: builtins.str - description: builtins.str - subtotal: builtins.float - tax: builtins.float - org_id_for_branding: builtins.str - disable_confirmation_email: builtins.bool +@_typing.final +class ChargeOrganizationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_TO_CHARGE_FIELD_NUMBER: _builtins.int + DESCRIPTION_FIELD_NUMBER: _builtins.int + SUBTOTAL_FIELD_NUMBER: _builtins.int + TAX_FIELD_NUMBER: _builtins.int + ORG_ID_FOR_BRANDING_FIELD_NUMBER: _builtins.int + DISABLE_CONFIRMATION_EMAIL_FIELD_NUMBER: _builtins.int + org_id_to_charge: _builtins.str + description: _builtins.str + subtotal: _builtins.float + tax: _builtins.float + org_id_for_branding: _builtins.str + disable_confirmation_email: _builtins.bool - def __init__(self, *, org_id_to_charge: builtins.str=..., description: builtins.str | None=..., subtotal: builtins.float=..., tax: builtins.float=..., org_id_for_branding: builtins.str | None=..., disable_confirmation_email: builtins.bool=...) -> None: + def __init__(self, *, org_id_to_charge: _builtins.str=..., description: _builtins.str | None=..., subtotal: _builtins.float=..., tax: _builtins.float=..., org_id_for_branding: _builtins.str | None=..., disable_confirmation_email: _builtins.bool=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_description', b'_description', '_org_id_for_branding', b'_org_id_for_branding', 'description', b'description', 'org_id_for_branding', b'org_id_for_branding'] - def HasField(self, field_name: typing.Literal['_description', b'_description', '_org_id_for_branding', b'_org_id_for_branding', 'description', b'description', 'org_id_for_branding', b'org_id_for_branding']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_description', b'_description', '_org_id_for_branding', b'_org_id_for_branding', 'description', b'description', 'disable_confirmation_email', b'disable_confirmation_email', 'org_id_for_branding', b'org_id_for_branding', 'org_id_to_charge', b'org_id_to_charge', 'subtotal', b'subtotal', 'tax', b'tax'] - def ClearField(self, field_name: typing.Literal['_description', b'_description', '_org_id_for_branding', b'_org_id_for_branding', 'description', b'description', 'disable_confirmation_email', b'disable_confirmation_email', 'org_id_for_branding', b'org_id_for_branding', 'org_id_to_charge', b'org_id_to_charge', 'subtotal', b'subtotal', 'tax', b'tax']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__description: _TypeAlias = _typing.Literal['description'] + _WhichOneofArgType__description: _TypeAlias = _typing.Literal['_description', b'_description'] + _WhichOneofReturnType__org_id_for_branding: _TypeAlias = _typing.Literal['org_id_for_branding'] + _WhichOneofArgType__org_id_for_branding: _TypeAlias = _typing.Literal['_org_id_for_branding', b'_org_id_for_branding'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_description', b'_description']) -> typing.Literal['description'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__description) -> _WhichOneofReturnType__description | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_org_id_for_branding', b'_org_id_for_branding']) -> typing.Literal['org_id_for_branding'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__org_id_for_branding) -> _WhichOneofReturnType__org_id_for_branding | None: ... -global___ChargeOrganizationRequest = ChargeOrganizationRequest +Global___ChargeOrganizationRequest: _TypeAlias = ChargeOrganizationRequest -@typing.final -class ChargeOrganizationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - INVOICE_ID_FIELD_NUMBER: builtins.int - invoice_id: builtins.str +@_typing.final +class ChargeOrganizationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + INVOICE_ID_FIELD_NUMBER: _builtins.int + invoice_id: _builtins.str - def __init__(self, *, invoice_id: builtins.str=...) -> None: + def __init__(self, *, invoice_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['invoice_id', b'invoice_id'] - def ClearField(self, field_name: typing.Literal['invoice_id', b'invoice_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ChargeOrganizationResponse = ChargeOrganizationResponse +Global___ChargeOrganizationResponse: _TypeAlias = ChargeOrganizationResponse -@typing.final -class CreateInvoiceAndChargeImmediatelyRequest(google.protobuf.message.Message): +@_typing.final +class CreateInvoiceAndChargeImmediatelyRequest(_message.Message): """Deprecated: Use ChargeOrganizationRequest instead""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_TO_CHARGE_FIELD_NUMBER: builtins.int - AMOUNT_FIELD_NUMBER: builtins.int - DESCRIPTION_FIELD_NUMBER: builtins.int - ORG_ID_FOR_BRANDING_FIELD_NUMBER: builtins.int - DISABLE_EMAIL_FIELD_NUMBER: builtins.int - org_id_to_charge: builtins.str - amount: builtins.float - description: builtins.str - org_id_for_branding: builtins.str - disable_email: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_TO_CHARGE_FIELD_NUMBER: _builtins.int + AMOUNT_FIELD_NUMBER: _builtins.int + DESCRIPTION_FIELD_NUMBER: _builtins.int + ORG_ID_FOR_BRANDING_FIELD_NUMBER: _builtins.int + DISABLE_EMAIL_FIELD_NUMBER: _builtins.int + org_id_to_charge: _builtins.str + amount: _builtins.float + description: _builtins.str + org_id_for_branding: _builtins.str + disable_email: _builtins.bool - def __init__(self, *, org_id_to_charge: builtins.str=..., amount: builtins.float=..., description: builtins.str | None=..., org_id_for_branding: builtins.str | None=..., disable_email: builtins.bool=...) -> None: + def __init__(self, *, org_id_to_charge: _builtins.str=..., amount: _builtins.float=..., description: _builtins.str | None=..., org_id_for_branding: _builtins.str | None=..., disable_email: _builtins.bool=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_description', b'_description', '_org_id_for_branding', b'_org_id_for_branding', 'description', b'description', 'org_id_for_branding', b'org_id_for_branding'] - def HasField(self, field_name: typing.Literal['_description', b'_description', '_org_id_for_branding', b'_org_id_for_branding', 'description', b'description', 'org_id_for_branding', b'org_id_for_branding']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_description', b'_description', '_org_id_for_branding', b'_org_id_for_branding', 'amount', b'amount', 'description', b'description', 'disable_email', b'disable_email', 'org_id_for_branding', b'org_id_for_branding', 'org_id_to_charge', b'org_id_to_charge'] - def ClearField(self, field_name: typing.Literal['_description', b'_description', '_org_id_for_branding', b'_org_id_for_branding', 'amount', b'amount', 'description', b'description', 'disable_email', b'disable_email', 'org_id_for_branding', b'org_id_for_branding', 'org_id_to_charge', b'org_id_to_charge']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__description: _TypeAlias = _typing.Literal['description'] + _WhichOneofArgType__description: _TypeAlias = _typing.Literal['_description', b'_description'] + _WhichOneofReturnType__org_id_for_branding: _TypeAlias = _typing.Literal['org_id_for_branding'] + _WhichOneofArgType__org_id_for_branding: _TypeAlias = _typing.Literal['_org_id_for_branding', b'_org_id_for_branding'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_description', b'_description']) -> typing.Literal['description'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__description) -> _WhichOneofReturnType__description | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_org_id_for_branding', b'_org_id_for_branding']) -> typing.Literal['org_id_for_branding'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__org_id_for_branding) -> _WhichOneofReturnType__org_id_for_branding | None: ... -global___CreateInvoiceAndChargeImmediatelyRequest = CreateInvoiceAndChargeImmediatelyRequest +Global___CreateInvoiceAndChargeImmediatelyRequest: _TypeAlias = CreateInvoiceAndChargeImmediatelyRequest -@typing.final -class CreateInvoiceAndChargeImmediatelyResponse(google.protobuf.message.Message): +@_typing.final +class CreateInvoiceAndChargeImmediatelyResponse(_message.Message): """Deprecated: Use ChargeOrganizationResponse instead""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - INVOICE_ID_FIELD_NUMBER: builtins.int - invoice_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + INVOICE_ID_FIELD_NUMBER: _builtins.int + invoice_id: _builtins.str - def __init__(self, *, invoice_id: builtins.str=...) -> None: + def __init__(self, *, invoice_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['invoice_id', b'invoice_id'] - def ClearField(self, field_name: typing.Literal['invoice_id', b'invoice_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CreateInvoiceAndChargeImmediatelyResponse = CreateInvoiceAndChargeImmediatelyResponse \ No newline at end of file +Global___CreateInvoiceAndChargeImmediatelyResponse: _TypeAlias = CreateInvoiceAndChargeImmediatelyResponse \ No newline at end of file diff --git a/src/viam/gen/app/v1/end_user_pb2.py b/src/viam/gen/app/v1/end_user_pb2.py index 5ee6dd8a55..98c7477815 100644 --- a/src/viam/gen/app/v1/end_user_pb2.py +++ b/src/viam/gen/app/v1/end_user_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'app/v1/end_user.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/v1/end_user.proto') _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15app/v1/end_user.proto\x12\x0bviam.app.v1"\x18\n\x16IsLegalAcceptedRequest"@\n\x17IsLegalAcceptedResponse\x12%\n\x0eaccepted_legal\x18\x01 \x01(\x08R\racceptedLegal"\x14\n\x12AcceptLegalRequest"\x15\n\x13AcceptLegalResponse"\xcb\x01\n\x1eRegisterAuthApplicationRequest\x12)\n\x10application_name\x18\x01 \x01(\tR\x0fapplicationName\x12\x15\n\x06org_id\x18\x02 \x01(\tR\x05orgId\x12\x1f\n\x0borigin_uris\x18\x03 \x03(\tR\noriginUris\x12#\n\rredirect_uris\x18\x04 \x03(\tR\x0credirectUris\x12\x1d\n\nlogout_uri\x18\x05 \x01(\tR\tlogoutUri:\x02\x18\x01"\x9c\x01\n\x1fRegisterAuthApplicationResponse\x12%\n\x0eapplication_id\x18\x01 \x01(\tR\rapplicationId\x12)\n\x10application_name\x18\x02 \x01(\tR\x0fapplicationName\x12#\n\rclient_secret\x18\x03 \x01(\tR\x0cclientSecret:\x02\x18\x01"\xf0\x01\n\x1cUpdateAuthApplicationRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12%\n\x0eapplication_id\x18\x02 \x01(\tR\rapplicationId\x12)\n\x10application_name\x18\x03 \x01(\tR\x0fapplicationName\x12\x1f\n\x0borigin_uris\x18\x04 \x03(\tR\noriginUris\x12#\n\rredirect_uris\x18\x05 \x03(\tR\x0credirectUris\x12\x1d\n\nlogout_uri\x18\x06 \x01(\tR\tlogoutUri:\x02\x18\x01"u\n\x1dUpdateAuthApplicationResponse\x12%\n\x0eapplication_id\x18\x01 \x01(\tR\rapplicationId\x12)\n\x10application_name\x18\x02 \x01(\tR\x0fapplicationName:\x02\x18\x01"]\n\x19GetAuthApplicationRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12%\n\x0eapplication_id\x18\x02 \x01(\tR\rapplicationId:\x02\x18\x01"\xfc\x01\n\x1aGetAuthApplicationResponse\x12%\n\x0eapplication_id\x18\x01 \x01(\tR\rapplicationId\x12)\n\x10application_name\x18\x02 \x01(\tR\x0fapplicationName\x12#\n\rclient_secret\x18\x03 \x01(\tR\x0cclientSecret\x12\x1f\n\x0borigin_uris\x18\x04 \x03(\tR\noriginUris\x12#\n\rredirect_uris\x18\x05 \x03(\tR\x0credirectUris\x12\x1d\n\nlogout_uri\x18\x06 \x01(\tR\tlogoutUri:\x02\x18\x012\x9c\x04\n\x0eEndUserService\x12\\\n\x0fIsLegalAccepted\x12#.viam.app.v1.IsLegalAcceptedRequest\x1a$.viam.app.v1.IsLegalAcceptedResponse\x12P\n\x0bAcceptLegal\x12\x1f.viam.app.v1.AcceptLegalRequest\x1a .viam.app.v1.AcceptLegalResponse\x12y\n\x17RegisterAuthApplication\x12+.viam.app.v1.RegisterAuthApplicationRequest\x1a,.viam.app.v1.RegisterAuthApplicationResponse"\x03\x88\x02\x01\x12s\n\x15UpdateAuthApplication\x12).viam.app.v1.UpdateAuthApplicationRequest\x1a*.viam.app.v1.UpdateAuthApplicationResponse"\x03\x88\x02\x01\x12j\n\x12GetAuthApplication\x12&.viam.app.v1.GetAuthApplicationRequest\x1a\'.viam.app.v1.GetAuthApplicationResponse"\x03\x88\x02\x01B\x18Z\x16go.viam.com/api/app/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/app/v1/end_user_pb2.pyi b/src/viam/gen/app/v1/end_user_pb2.pyi index 350e74d231..3e9b30dcc1 100644 --- a/src/viam/gen/app/v1/end_user_pb2.pyi +++ b/src/viam/gen/app/v1/end_user_pb2.pyi @@ -2,180 +2,202 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class IsLegalAcceptedRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +if sys.version_info >= (3, 13): + from warnings import deprecated as _deprecated +else: + from typing_extensions import deprecated as _deprecated +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class IsLegalAcceptedRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___IsLegalAcceptedRequest = IsLegalAcceptedRequest +Global___IsLegalAcceptedRequest: _TypeAlias = IsLegalAcceptedRequest -@typing.final -class IsLegalAcceptedResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ACCEPTED_LEGAL_FIELD_NUMBER: builtins.int - accepted_legal: builtins.bool +@_typing.final +class IsLegalAcceptedResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ACCEPTED_LEGAL_FIELD_NUMBER: _builtins.int + accepted_legal: _builtins.bool 'If false, the user should not be able to use the application.' - def __init__(self, *, accepted_legal: builtins.bool=...) -> None: + def __init__(self, *, accepted_legal: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['accepted_legal', b'accepted_legal'] - def ClearField(self, field_name: typing.Literal['accepted_legal', b'accepted_legal']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsLegalAcceptedResponse = IsLegalAcceptedResponse +Global___IsLegalAcceptedResponse: _TypeAlias = IsLegalAcceptedResponse -@typing.final -class AcceptLegalRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class AcceptLegalRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___AcceptLegalRequest = AcceptLegalRequest +Global___AcceptLegalRequest: _TypeAlias = AcceptLegalRequest -@typing.final -class AcceptLegalResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class AcceptLegalResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___AcceptLegalResponse = AcceptLegalResponse +Global___AcceptLegalResponse: _TypeAlias = AcceptLegalResponse -@typing.final -class RegisterAuthApplicationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - APPLICATION_NAME_FIELD_NUMBER: builtins.int - ORG_ID_FIELD_NUMBER: builtins.int - ORIGIN_URIS_FIELD_NUMBER: builtins.int - REDIRECT_URIS_FIELD_NUMBER: builtins.int - LOGOUT_URI_FIELD_NUMBER: builtins.int - application_name: builtins.str - org_id: builtins.str - logout_uri: builtins.str +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class RegisterAuthApplicationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + APPLICATION_NAME_FIELD_NUMBER: _builtins.int + ORG_ID_FIELD_NUMBER: _builtins.int + ORIGIN_URIS_FIELD_NUMBER: _builtins.int + REDIRECT_URIS_FIELD_NUMBER: _builtins.int + LOGOUT_URI_FIELD_NUMBER: _builtins.int + application_name: _builtins.str + org_id: _builtins.str + logout_uri: _builtins.str - @property - def origin_uris(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def origin_uris(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def redirect_uris(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def redirect_uris(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, application_name: builtins.str=..., org_id: builtins.str=..., origin_uris: collections.abc.Iterable[builtins.str] | None=..., redirect_uris: collections.abc.Iterable[builtins.str] | None=..., logout_uri: builtins.str=...) -> None: + def __init__(self, *, application_name: _builtins.str=..., org_id: _builtins.str=..., origin_uris: _abc.Iterable[_builtins.str] | None=..., redirect_uris: _abc.Iterable[_builtins.str] | None=..., logout_uri: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['application_name', b'application_name', 'logout_uri', b'logout_uri', 'org_id', b'org_id', 'origin_uris', b'origin_uris', 'redirect_uris', b'redirect_uris'] - def ClearField(self, field_name: typing.Literal['application_name', b'application_name', 'logout_uri', b'logout_uri', 'org_id', b'org_id', 'origin_uris', b'origin_uris', 'redirect_uris', b'redirect_uris']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RegisterAuthApplicationRequest = RegisterAuthApplicationRequest +Global___RegisterAuthApplicationRequest: _TypeAlias = RegisterAuthApplicationRequest -@typing.final -class RegisterAuthApplicationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - APPLICATION_ID_FIELD_NUMBER: builtins.int - APPLICATION_NAME_FIELD_NUMBER: builtins.int - CLIENT_SECRET_FIELD_NUMBER: builtins.int - application_id: builtins.str - application_name: builtins.str - client_secret: builtins.str +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class RegisterAuthApplicationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + APPLICATION_ID_FIELD_NUMBER: _builtins.int + APPLICATION_NAME_FIELD_NUMBER: _builtins.int + CLIENT_SECRET_FIELD_NUMBER: _builtins.int + application_id: _builtins.str + application_name: _builtins.str + client_secret: _builtins.str - def __init__(self, *, application_id: builtins.str=..., application_name: builtins.str=..., client_secret: builtins.str=...) -> None: + def __init__(self, *, application_id: _builtins.str=..., application_name: _builtins.str=..., client_secret: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['application_id', b'application_id', 'application_name', b'application_name', 'client_secret', b'client_secret'] - def ClearField(self, field_name: typing.Literal['application_id', b'application_id', 'application_name', b'application_name', 'client_secret', b'client_secret']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RegisterAuthApplicationResponse = RegisterAuthApplicationResponse +Global___RegisterAuthApplicationResponse: _TypeAlias = RegisterAuthApplicationResponse -@typing.final -class UpdateAuthApplicationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - APPLICATION_ID_FIELD_NUMBER: builtins.int - APPLICATION_NAME_FIELD_NUMBER: builtins.int - ORIGIN_URIS_FIELD_NUMBER: builtins.int - REDIRECT_URIS_FIELD_NUMBER: builtins.int - LOGOUT_URI_FIELD_NUMBER: builtins.int - org_id: builtins.str - application_id: builtins.str - application_name: builtins.str - logout_uri: builtins.str +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class UpdateAuthApplicationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + APPLICATION_ID_FIELD_NUMBER: _builtins.int + APPLICATION_NAME_FIELD_NUMBER: _builtins.int + ORIGIN_URIS_FIELD_NUMBER: _builtins.int + REDIRECT_URIS_FIELD_NUMBER: _builtins.int + LOGOUT_URI_FIELD_NUMBER: _builtins.int + org_id: _builtins.str + application_id: _builtins.str + application_name: _builtins.str + logout_uri: _builtins.str - @property - def origin_uris(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def origin_uris(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def redirect_uris(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def redirect_uris(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, org_id: builtins.str=..., application_id: builtins.str=..., application_name: builtins.str=..., origin_uris: collections.abc.Iterable[builtins.str] | None=..., redirect_uris: collections.abc.Iterable[builtins.str] | None=..., logout_uri: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=..., application_id: _builtins.str=..., application_name: _builtins.str=..., origin_uris: _abc.Iterable[_builtins.str] | None=..., redirect_uris: _abc.Iterable[_builtins.str] | None=..., logout_uri: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['application_id', b'application_id', 'application_name', b'application_name', 'logout_uri', b'logout_uri', 'org_id', b'org_id', 'origin_uris', b'origin_uris', 'redirect_uris', b'redirect_uris'] - def ClearField(self, field_name: typing.Literal['application_id', b'application_id', 'application_name', b'application_name', 'logout_uri', b'logout_uri', 'org_id', b'org_id', 'origin_uris', b'origin_uris', 'redirect_uris', b'redirect_uris']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateAuthApplicationRequest = UpdateAuthApplicationRequest +Global___UpdateAuthApplicationRequest: _TypeAlias = UpdateAuthApplicationRequest -@typing.final -class UpdateAuthApplicationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - APPLICATION_ID_FIELD_NUMBER: builtins.int - APPLICATION_NAME_FIELD_NUMBER: builtins.int - application_id: builtins.str - application_name: builtins.str +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class UpdateAuthApplicationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + APPLICATION_ID_FIELD_NUMBER: _builtins.int + APPLICATION_NAME_FIELD_NUMBER: _builtins.int + application_id: _builtins.str + application_name: _builtins.str - def __init__(self, *, application_id: builtins.str=..., application_name: builtins.str=...) -> None: + def __init__(self, *, application_id: _builtins.str=..., application_name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['application_id', b'application_id', 'application_name', b'application_name'] - def ClearField(self, field_name: typing.Literal['application_id', b'application_id', 'application_name', b'application_name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UpdateAuthApplicationResponse = UpdateAuthApplicationResponse +Global___UpdateAuthApplicationResponse: _TypeAlias = UpdateAuthApplicationResponse -@typing.final -class GetAuthApplicationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORG_ID_FIELD_NUMBER: builtins.int - APPLICATION_ID_FIELD_NUMBER: builtins.int - org_id: builtins.str - application_id: builtins.str +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class GetAuthApplicationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORG_ID_FIELD_NUMBER: _builtins.int + APPLICATION_ID_FIELD_NUMBER: _builtins.int + org_id: _builtins.str + application_id: _builtins.str - def __init__(self, *, org_id: builtins.str=..., application_id: builtins.str=...) -> None: + def __init__(self, *, org_id: _builtins.str=..., application_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['application_id', b'application_id', 'org_id', b'org_id'] - def ClearField(self, field_name: typing.Literal['application_id', b'application_id', 'org_id', b'org_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetAuthApplicationRequest = GetAuthApplicationRequest +Global___GetAuthApplicationRequest: _TypeAlias = GetAuthApplicationRequest -@typing.final -class GetAuthApplicationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - APPLICATION_ID_FIELD_NUMBER: builtins.int - APPLICATION_NAME_FIELD_NUMBER: builtins.int - CLIENT_SECRET_FIELD_NUMBER: builtins.int - ORIGIN_URIS_FIELD_NUMBER: builtins.int - REDIRECT_URIS_FIELD_NUMBER: builtins.int - LOGOUT_URI_FIELD_NUMBER: builtins.int - application_id: builtins.str - application_name: builtins.str - client_secret: builtins.str - logout_uri: builtins.str +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class GetAuthApplicationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + APPLICATION_ID_FIELD_NUMBER: _builtins.int + APPLICATION_NAME_FIELD_NUMBER: _builtins.int + CLIENT_SECRET_FIELD_NUMBER: _builtins.int + ORIGIN_URIS_FIELD_NUMBER: _builtins.int + REDIRECT_URIS_FIELD_NUMBER: _builtins.int + LOGOUT_URI_FIELD_NUMBER: _builtins.int + application_id: _builtins.str + application_name: _builtins.str + client_secret: _builtins.str + logout_uri: _builtins.str - @property - def origin_uris(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def origin_uris(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def redirect_uris(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def redirect_uris(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, application_id: builtins.str=..., application_name: builtins.str=..., client_secret: builtins.str=..., origin_uris: collections.abc.Iterable[builtins.str] | None=..., redirect_uris: collections.abc.Iterable[builtins.str] | None=..., logout_uri: builtins.str=...) -> None: + def __init__(self, *, application_id: _builtins.str=..., application_name: _builtins.str=..., client_secret: _builtins.str=..., origin_uris: _abc.Iterable[_builtins.str] | None=..., redirect_uris: _abc.Iterable[_builtins.str] | None=..., logout_uri: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['application_id', b'application_id', 'application_name', b'application_name', 'client_secret', b'client_secret', 'logout_uri', b'logout_uri', 'origin_uris', b'origin_uris', 'redirect_uris', b'redirect_uris'] - def ClearField(self, field_name: typing.Literal['application_id', b'application_id', 'application_name', b'application_name', 'client_secret', b'client_secret', 'logout_uri', b'logout_uri', 'origin_uris', b'origin_uris', 'redirect_uris', b'redirect_uris']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetAuthApplicationResponse = GetAuthApplicationResponse \ No newline at end of file +Global___GetAuthApplicationResponse: _TypeAlias = GetAuthApplicationResponse \ No newline at end of file diff --git a/src/viam/gen/app/v1/robot_pb2.py b/src/viam/gen/app/v1/robot_pb2.py index 9683734c12..0427a948fc 100644 --- a/src/viam/gen/app/v1/robot_pb2.py +++ b/src/viam/gen/app/v1/robot_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'app/v1/robot.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/v1/robot.proto') _sym_db = _symbol_database.Default() from ...common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 diff --git a/src/viam/gen/app/v1/robot_pb2.pyi b/src/viam/gen/app/v1/robot_pb2.pyi index ec2d1d140e..35084b472e 100644 --- a/src/viam/gen/app/v1/robot_pb2.pyi +++ b/src/viam/gen/app/v1/robot_pb2.pyi @@ -2,29 +2,33 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -from ... import common -import google.protobuf.descriptor -import google.protobuf.duration_pb2 -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 +from collections import abc as _abc +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import duration_pb2 as _duration_pb2 +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +if sys.version_info >= (3, 13): + from warnings import deprecated as _deprecated +else: + from typing_extensions import deprecated as _deprecated +DESCRIPTOR: _descriptor.FileDescriptor class _CredentialsType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _CredentialsTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CredentialsType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _CredentialsTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_CredentialsType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor CREDENTIALS_TYPE_UNSPECIFIED: _CredentialsType.ValueType CREDENTIALS_TYPE_INTERNAL: _CredentialsType.ValueType CREDENTIALS_TYPE_API_KEY: _CredentialsType.ValueType @@ -38,704 +42,762 @@ CREDENTIALS_TYPE_INTERNAL: CredentialsType.ValueType CREDENTIALS_TYPE_API_KEY: CredentialsType.ValueType CREDENTIALS_TYPE_ROBOT_SECRET: CredentialsType.ValueType CREDENTIALS_TYPE_ROBOT_LOCATION_SECRET: CredentialsType.ValueType -global___CredentialsType = CredentialsType - -@typing.final -class RobotConfig(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CLOUD_FIELD_NUMBER: builtins.int - REMOTES_FIELD_NUMBER: builtins.int - COMPONENTS_FIELD_NUMBER: builtins.int - PROCESSES_FIELD_NUMBER: builtins.int - SERVICES_FIELD_NUMBER: builtins.int - NETWORK_FIELD_NUMBER: builtins.int - AUTH_FIELD_NUMBER: builtins.int - DEBUG_FIELD_NUMBER: builtins.int - MODULES_FIELD_NUMBER: builtins.int - DISABLE_PARTIAL_START_FIELD_NUMBER: builtins.int - PACKAGES_FIELD_NUMBER: builtins.int - OVERWRITE_FRAGMENT_STATUS_FIELD_NUMBER: builtins.int - ENABLE_WEB_PROFILE_FIELD_NUMBER: builtins.int - LOG_FIELD_NUMBER: builtins.int - REVISION_FIELD_NUMBER: builtins.int - MAINTENANCE_FIELD_NUMBER: builtins.int - DISABLE_LOG_DEDUPLICATION_FIELD_NUMBER: builtins.int - JOBS_FIELD_NUMBER: builtins.int - TRACING_FIELD_NUMBER: builtins.int - debug: builtins.bool +Global___CredentialsType: _TypeAlias = CredentialsType + +@_typing.final +class RobotConfig(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CLOUD_FIELD_NUMBER: _builtins.int + REMOTES_FIELD_NUMBER: _builtins.int + COMPONENTS_FIELD_NUMBER: _builtins.int + PROCESSES_FIELD_NUMBER: _builtins.int + SERVICES_FIELD_NUMBER: _builtins.int + NETWORK_FIELD_NUMBER: _builtins.int + AUTH_FIELD_NUMBER: _builtins.int + DEBUG_FIELD_NUMBER: _builtins.int + MODULES_FIELD_NUMBER: _builtins.int + DISABLE_PARTIAL_START_FIELD_NUMBER: _builtins.int + PACKAGES_FIELD_NUMBER: _builtins.int + OVERWRITE_FRAGMENT_STATUS_FIELD_NUMBER: _builtins.int + ENABLE_WEB_PROFILE_FIELD_NUMBER: _builtins.int + LOG_FIELD_NUMBER: _builtins.int + REVISION_FIELD_NUMBER: _builtins.int + MAINTENANCE_FIELD_NUMBER: _builtins.int + DISABLE_LOG_DEDUPLICATION_FIELD_NUMBER: _builtins.int + JOBS_FIELD_NUMBER: _builtins.int + TRACING_FIELD_NUMBER: _builtins.int + debug: _builtins.bool 'Turns on debug mode for robot, adding an echo server and more logging and tracing. Only works after restart' - disable_partial_start: builtins.bool - enable_web_profile: builtins.bool + disable_partial_start: _builtins.bool + enable_web_profile: _builtins.bool 'Turns on pprof http server on localhost. By default false.' - revision: builtins.str + revision: _builtins.str 'Attributes a particular revision to the config.' - disable_log_deduplication: builtins.bool + disable_log_deduplication: _builtins.bool "Disables the robot's log deduplication (identical, noisy logs will still\n be output individually instead of aggregated.)\n " - @property - def cloud(self) -> global___CloudConfig: + @_builtins.property + def cloud(self) -> Global___CloudConfig: ... - @property - def remotes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RemoteConfig]: + @_builtins.property + def remotes(self) -> _containers.RepeatedCompositeFieldContainer[Global___RemoteConfig]: ... - @property - def components(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ComponentConfig]: + @_builtins.property + def components(self) -> _containers.RepeatedCompositeFieldContainer[Global___ComponentConfig]: ... - @property - def processes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ProcessConfig]: + @_builtins.property + def processes(self) -> _containers.RepeatedCompositeFieldContainer[Global___ProcessConfig]: ... - @property - def services(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ServiceConfig]: + @_builtins.property + def services(self) -> _containers.RepeatedCompositeFieldContainer[Global___ServiceConfig]: ... - @property - def network(self) -> global___NetworkConfig: + @_builtins.property + def network(self) -> Global___NetworkConfig: ... - @property - def auth(self) -> global___AuthConfig: + @_builtins.property + def auth(self) -> Global___AuthConfig: ... - @property - def modules(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ModuleConfig]: + @_builtins.property + def modules(self) -> _containers.RepeatedCompositeFieldContainer[Global___ModuleConfig]: ... - @property - def packages(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PackageConfig]: + @_builtins.property + def packages(self) -> _containers.RepeatedCompositeFieldContainer[Global___PackageConfig]: ... - @property - def overwrite_fragment_status(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AppValidationStatus]: + @_builtins.property + def overwrite_fragment_status(self) -> _containers.RepeatedCompositeFieldContainer[Global___AppValidationStatus]: ... - @property - def log(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___LogPatternConfig]: + @_builtins.property + def log(self) -> _containers.RepeatedCompositeFieldContainer[Global___LogPatternConfig]: ... - @property - def maintenance(self) -> global___MaintenanceConfig: + @_builtins.property + def maintenance(self) -> Global___MaintenanceConfig: ... - @property - def jobs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___JobConfig]: + @_builtins.property + def jobs(self) -> _containers.RepeatedCompositeFieldContainer[Global___JobConfig]: ... - @property - def tracing(self) -> global___TracingConfig: + @_builtins.property + def tracing(self) -> Global___TracingConfig: ... - def __init__(self, *, cloud: global___CloudConfig | None=..., remotes: collections.abc.Iterable[global___RemoteConfig] | None=..., components: collections.abc.Iterable[global___ComponentConfig] | None=..., processes: collections.abc.Iterable[global___ProcessConfig] | None=..., services: collections.abc.Iterable[global___ServiceConfig] | None=..., network: global___NetworkConfig | None=..., auth: global___AuthConfig | None=..., debug: builtins.bool | None=..., modules: collections.abc.Iterable[global___ModuleConfig] | None=..., disable_partial_start: builtins.bool | None=..., packages: collections.abc.Iterable[global___PackageConfig] | None=..., overwrite_fragment_status: collections.abc.Iterable[global___AppValidationStatus] | None=..., enable_web_profile: builtins.bool=..., log: collections.abc.Iterable[global___LogPatternConfig] | None=..., revision: builtins.str=..., maintenance: global___MaintenanceConfig | None=..., disable_log_deduplication: builtins.bool=..., jobs: collections.abc.Iterable[global___JobConfig] | None=..., tracing: global___TracingConfig | None=...) -> None: + def __init__(self, *, cloud: Global___CloudConfig | None=..., remotes: _abc.Iterable[Global___RemoteConfig] | None=..., components: _abc.Iterable[Global___ComponentConfig] | None=..., processes: _abc.Iterable[Global___ProcessConfig] | None=..., services: _abc.Iterable[Global___ServiceConfig] | None=..., network: Global___NetworkConfig | None=..., auth: Global___AuthConfig | None=..., debug: _builtins.bool | None=..., modules: _abc.Iterable[Global___ModuleConfig] | None=..., disable_partial_start: _builtins.bool | None=..., packages: _abc.Iterable[Global___PackageConfig] | None=..., overwrite_fragment_status: _abc.Iterable[Global___AppValidationStatus] | None=..., enable_web_profile: _builtins.bool=..., log: _abc.Iterable[Global___LogPatternConfig] | None=..., revision: _builtins.str=..., maintenance: Global___MaintenanceConfig | None=..., disable_log_deduplication: _builtins.bool=..., jobs: _abc.Iterable[Global___JobConfig] | None=..., tracing: Global___TracingConfig | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_auth', b'_auth', '_debug', b'_debug', '_disable_partial_start', b'_disable_partial_start', '_maintenance', b'_maintenance', '_network', b'_network', '_tracing', b'_tracing', 'auth', b'auth', 'cloud', b'cloud', 'debug', b'debug', 'disable_partial_start', b'disable_partial_start', 'maintenance', b'maintenance', 'network', b'network', 'tracing', b'tracing'] - def HasField(self, field_name: typing.Literal['_auth', b'_auth', '_debug', b'_debug', '_disable_partial_start', b'_disable_partial_start', '_maintenance', b'_maintenance', '_network', b'_network', '_tracing', b'_tracing', 'auth', b'auth', 'cloud', b'cloud', 'debug', b'debug', 'disable_partial_start', b'disable_partial_start', 'maintenance', b'maintenance', 'network', b'network', 'tracing', b'tracing']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_auth', b'_auth', '_debug', b'_debug', '_disable_partial_start', b'_disable_partial_start', '_maintenance', b'_maintenance', '_network', b'_network', '_tracing', b'_tracing', 'auth', b'auth', 'cloud', b'cloud', 'components', b'components', 'debug', b'debug', 'disable_log_deduplication', b'disable_log_deduplication', 'disable_partial_start', b'disable_partial_start', 'enable_web_profile', b'enable_web_profile', 'jobs', b'jobs', 'log', b'log', 'maintenance', b'maintenance', 'modules', b'modules', 'network', b'network', 'overwrite_fragment_status', b'overwrite_fragment_status', 'packages', b'packages', 'processes', b'processes', 'remotes', b'remotes', 'revision', b'revision', 'services', b'services', 'tracing', b'tracing'] - def ClearField(self, field_name: typing.Literal['_auth', b'_auth', '_debug', b'_debug', '_disable_partial_start', b'_disable_partial_start', '_maintenance', b'_maintenance', '_network', b'_network', '_tracing', b'_tracing', 'auth', b'auth', 'cloud', b'cloud', 'components', b'components', 'debug', b'debug', 'disable_log_deduplication', b'disable_log_deduplication', 'disable_partial_start', b'disable_partial_start', 'enable_web_profile', b'enable_web_profile', 'jobs', b'jobs', 'log', b'log', 'maintenance', b'maintenance', 'modules', b'modules', 'network', b'network', 'overwrite_fragment_status', b'overwrite_fragment_status', 'packages', b'packages', 'processes', b'processes', 'remotes', b'remotes', 'revision', b'revision', 'services', b'services', 'tracing', b'tracing']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__auth: _TypeAlias = _typing.Literal['auth'] + _WhichOneofArgType__auth: _TypeAlias = _typing.Literal['_auth', b'_auth'] + _WhichOneofReturnType__debug: _TypeAlias = _typing.Literal['debug'] + _WhichOneofArgType__debug: _TypeAlias = _typing.Literal['_debug', b'_debug'] + _WhichOneofReturnType__disable_partial_start: _TypeAlias = _typing.Literal['disable_partial_start'] + _WhichOneofArgType__disable_partial_start: _TypeAlias = _typing.Literal['_disable_partial_start', b'_disable_partial_start'] + _WhichOneofReturnType__maintenance: _TypeAlias = _typing.Literal['maintenance'] + _WhichOneofArgType__maintenance: _TypeAlias = _typing.Literal['_maintenance', b'_maintenance'] + _WhichOneofReturnType__network: _TypeAlias = _typing.Literal['network'] + _WhichOneofArgType__network: _TypeAlias = _typing.Literal['_network', b'_network'] + _WhichOneofReturnType__tracing: _TypeAlias = _typing.Literal['tracing'] + _WhichOneofArgType__tracing: _TypeAlias = _typing.Literal['_tracing', b'_tracing'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_auth', b'_auth']) -> typing.Literal['auth'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__auth) -> _WhichOneofReturnType__auth | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_debug', b'_debug']) -> typing.Literal['debug'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__debug) -> _WhichOneofReturnType__debug | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_disable_partial_start', b'_disable_partial_start']) -> typing.Literal['disable_partial_start'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__disable_partial_start) -> _WhichOneofReturnType__disable_partial_start | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_maintenance', b'_maintenance']) -> typing.Literal['maintenance'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__maintenance) -> _WhichOneofReturnType__maintenance | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_network', b'_network']) -> typing.Literal['network'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__network) -> _WhichOneofReturnType__network | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_tracing', b'_tracing']) -> typing.Literal['tracing'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__tracing) -> _WhichOneofReturnType__tracing | None: ... -global___RobotConfig = RobotConfig +Global___RobotConfig: _TypeAlias = RobotConfig -@typing.final -class LogPatternConfig(google.protobuf.message.Message): +@_typing.final +class LogPatternConfig(_message.Message): """LogPatternConfig allows you to specify a 2-tuple consisting of a logger name and its corresponding log level. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PATTERN_FIELD_NUMBER: builtins.int - LEVEL_FIELD_NUMBER: builtins.int - pattern: builtins.str - level: builtins.str - - def __init__(self, *, pattern: builtins.str=..., level: builtins.str=...) -> None: - ... - - def ClearField(self, field_name: typing.Literal['level', b'level', 'pattern', b'pattern']) -> None: - ... -global___LogPatternConfig = LogPatternConfig - -@typing.final -class JobConfig(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - SCHEDULE_FIELD_NUMBER: builtins.int - RESOURCE_FIELD_NUMBER: builtins.int - METHOD_FIELD_NUMBER: builtins.int - COMMAND_FIELD_NUMBER: builtins.int - LOG_CONFIGURATION_FIELD_NUMBER: builtins.int - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + PATTERN_FIELD_NUMBER: _builtins.int + LEVEL_FIELD_NUMBER: _builtins.int + pattern: _builtins.str + level: _builtins.str + + def __init__(self, *, pattern: _builtins.str=..., level: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['level', b'level', 'pattern', b'pattern'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___LogPatternConfig: _TypeAlias = LogPatternConfig + +@_typing.final +class JobConfig(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + SCHEDULE_FIELD_NUMBER: _builtins.int + RESOURCE_FIELD_NUMBER: _builtins.int + METHOD_FIELD_NUMBER: _builtins.int + COMMAND_FIELD_NUMBER: _builtins.int + LOG_CONFIGURATION_FIELD_NUMBER: _builtins.int + name: _builtins.str 'unique name of the job.' - schedule: builtins.str + schedule: _builtins.str 'a unix-cron string or a Golang-parsable duration string,\n specifies the interval at which the job is run.\n ' - resource: builtins.str + resource: _builtins.str 'the resource associated with this job.' - method: builtins.str + method: _builtins.str "the gRPC request of this job's resource." - @property - def command(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def command(self) -> _struct_pb2.Struct: """in case method is "DoCommand", specifies the command argument of the gRPC request. """ - @property - def log_configuration(self) -> global___LogConfiguration: + @_builtins.property + def log_configuration(self) -> Global___LogConfiguration: """configuration for this job's logger.""" - def __init__(self, *, name: builtins.str=..., schedule: builtins.str=..., resource: builtins.str=..., method: builtins.str=..., command: google.protobuf.struct_pb2.Struct | None=..., log_configuration: global___LogConfiguration | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., schedule: _builtins.str=..., resource: _builtins.str=..., method: _builtins.str=..., command: _struct_pb2.Struct | None=..., log_configuration: Global___LogConfiguration | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['command', b'command', 'log_configuration', b'log_configuration'] - def HasField(self, field_name: typing.Literal['command', b'command', 'log_configuration', b'log_configuration']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['command', b'command', 'log_configuration', b'log_configuration', 'method', b'method', 'name', b'name', 'resource', b'resource', 'schedule', b'schedule'] - def ClearField(self, field_name: typing.Literal['command', b'command', 'log_configuration', b'log_configuration', 'method', b'method', 'name', b'name', 'resource', b'resource', 'schedule', b'schedule']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___JobConfig = JobConfig +Global___JobConfig: _TypeAlias = JobConfig -@typing.final -class TracingConfig(google.protobuf.message.Message): +@_typing.final +class TracingConfig(_message.Message): """TracingConfig configures whether viam-server will record traces and if so where it will export them. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ENABLED_FIELD_NUMBER: builtins.int - DISK_FIELD_NUMBER: builtins.int - CONSOLE_FIELD_NUMBER: builtins.int - OTLP_ENDPOINT_FIELD_NUMBER: builtins.int - enabled: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + ENABLED_FIELD_NUMBER: _builtins.int + DISK_FIELD_NUMBER: _builtins.int + CONSOLE_FIELD_NUMBER: _builtins.int + OTLP_ENDPOINT_FIELD_NUMBER: _builtins.int + enabled: _builtins.bool 'Globally enable or disable tracing support.' - disk: builtins.bool + disk: _builtins.bool 'Save trace spans to a file on disk.' - console: builtins.bool + console: _builtins.bool 'Print trace spans to the console.' - otlp_endpoint: builtins.str + otlp_endpoint: _builtins.str 'Send trace spans to an OTLP gRPC endpoint.' - def __init__(self, *, enabled: builtins.bool=..., disk: builtins.bool=..., console: builtins.bool=..., otlp_endpoint: builtins.str=...) -> None: + def __init__(self, *, enabled: _builtins.bool=..., disk: _builtins.bool=..., console: _builtins.bool=..., otlp_endpoint: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['console', b'console', 'disk', b'disk', 'enabled', b'enabled', 'otlp_endpoint', b'otlp_endpoint'] - def ClearField(self, field_name: typing.Literal['console', b'console', 'disk', b'disk', 'enabled', b'enabled', 'otlp_endpoint', b'otlp_endpoint']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TracingConfig = TracingConfig +Global___TracingConfig: _TypeAlias = TracingConfig -@typing.final -class LocationSecret(google.protobuf.message.Message): +@_typing.final +class LocationSecret(_message.Message): """Valid location secret that can be used for authentication to the robot.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - SECRET_FIELD_NUMBER: builtins.int - id: builtins.str - secret: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + SECRET_FIELD_NUMBER: _builtins.int + id: _builtins.str + secret: _builtins.str 'secret payload' - def __init__(self, *, id: builtins.str=..., secret: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., secret: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'secret', b'secret'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'secret', b'secret']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___LocationSecret = LocationSecret +Global___LocationSecret: _TypeAlias = LocationSecret -@typing.final -class AppValidationStatus(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ERROR_FIELD_NUMBER: builtins.int - error: builtins.str +@_typing.final +class AppValidationStatus(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ERROR_FIELD_NUMBER: _builtins.int + error: _builtins.str - def __init__(self, *, error: builtins.str=...) -> None: + def __init__(self, *, error: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['error', b'error'] - def ClearField(self, field_name: typing.Literal['error', b'error']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AppValidationStatus = AppValidationStatus +Global___AppValidationStatus: _TypeAlias = AppValidationStatus -@typing.final -class CloudConfig(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - FQDN_FIELD_NUMBER: builtins.int - LOCAL_FQDN_FIELD_NUMBER: builtins.int - MANAGED_BY_FIELD_NUMBER: builtins.int - SIGNALING_ADDRESS_FIELD_NUMBER: builtins.int - SIGNALING_INSECURE_FIELD_NUMBER: builtins.int - LOCATION_SECRET_FIELD_NUMBER: builtins.int - SECRET_FIELD_NUMBER: builtins.int - LOCATION_SECRETS_FIELD_NUMBER: builtins.int - PRIMARY_ORG_ID_FIELD_NUMBER: builtins.int - LOCATION_ID_FIELD_NUMBER: builtins.int - MACHINE_ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class CloudConfig(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + FQDN_FIELD_NUMBER: _builtins.int + LOCAL_FQDN_FIELD_NUMBER: _builtins.int + MANAGED_BY_FIELD_NUMBER: _builtins.int + SIGNALING_ADDRESS_FIELD_NUMBER: _builtins.int + SIGNALING_INSECURE_FIELD_NUMBER: _builtins.int + LOCATION_SECRET_FIELD_NUMBER: _builtins.int + SECRET_FIELD_NUMBER: _builtins.int + LOCATION_SECRETS_FIELD_NUMBER: _builtins.int + PRIMARY_ORG_ID_FIELD_NUMBER: _builtins.int + LOCATION_ID_FIELD_NUMBER: _builtins.int + MACHINE_ID_FIELD_NUMBER: _builtins.int + id: _builtins.str 'Robot part id.' - fqdn: builtins.str - local_fqdn: builtins.str - managed_by: builtins.str - signaling_address: builtins.str - signaling_insecure: builtins.bool - location_secret: builtins.str - 'Deprecated use location_secrets' - secret: builtins.str + fqdn: _builtins.str + local_fqdn: _builtins.str + managed_by: _builtins.str + signaling_address: _builtins.str + signaling_insecure: _builtins.bool + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def location_secret(self) -> _builtins.str: + """Deprecated use location_secrets""" + + @location_secret.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def location_secret(self, value: _builtins.str) -> None: + """Deprecated use location_secrets""" + secret: _builtins.str 'Robot part secret' - primary_org_id: builtins.str - location_id: builtins.str - machine_id: builtins.str + primary_org_id: _builtins.str + location_id: _builtins.str + machine_id: _builtins.str - @property - def location_secrets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___LocationSecret]: + @_builtins.property + def location_secrets(self) -> _containers.RepeatedCompositeFieldContainer[Global___LocationSecret]: """All valid location secrets.""" - def __init__(self, *, id: builtins.str=..., fqdn: builtins.str=..., local_fqdn: builtins.str=..., managed_by: builtins.str=..., signaling_address: builtins.str=..., signaling_insecure: builtins.bool=..., location_secret: builtins.str=..., secret: builtins.str=..., location_secrets: collections.abc.Iterable[global___LocationSecret] | None=..., primary_org_id: builtins.str=..., location_id: builtins.str=..., machine_id: builtins.str=...) -> None: - ... - - def ClearField(self, field_name: typing.Literal['fqdn', b'fqdn', 'id', b'id', 'local_fqdn', b'local_fqdn', 'location_id', b'location_id', 'location_secret', b'location_secret', 'location_secrets', b'location_secrets', 'machine_id', b'machine_id', 'managed_by', b'managed_by', 'primary_org_id', b'primary_org_id', 'secret', b'secret', 'signaling_address', b'signaling_address', 'signaling_insecure', b'signaling_insecure']) -> None: - ... -global___CloudConfig = CloudConfig - -@typing.final -class ComponentConfig(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - NAMESPACE_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - MODEL_FIELD_NUMBER: builtins.int - FRAME_FIELD_NUMBER: builtins.int - DEPENDS_ON_FIELD_NUMBER: builtins.int - SERVICE_CONFIGS_FIELD_NUMBER: builtins.int - ATTRIBUTES_FIELD_NUMBER: builtins.int - API_FIELD_NUMBER: builtins.int - LOG_CONFIGURATION_FIELD_NUMBER: builtins.int - name: builtins.str - namespace: builtins.str + def __init__(self, *, id: _builtins.str=..., fqdn: _builtins.str=..., local_fqdn: _builtins.str=..., managed_by: _builtins.str=..., signaling_address: _builtins.str=..., signaling_insecure: _builtins.bool=..., location_secret: _builtins.str=..., secret: _builtins.str=..., location_secrets: _abc.Iterable[Global___LocationSecret] | None=..., primary_org_id: _builtins.str=..., location_id: _builtins.str=..., machine_id: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['fqdn', b'fqdn', 'id', b'id', 'local_fqdn', b'local_fqdn', 'location_id', b'location_id', 'location_secret', b'location_secret', 'location_secrets', b'location_secrets', 'machine_id', b'machine_id', 'managed_by', b'managed_by', 'primary_org_id', b'primary_org_id', 'secret', b'secret', 'signaling_address', b'signaling_address', 'signaling_insecure', b'signaling_insecure'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___CloudConfig: _TypeAlias = CloudConfig + +@_typing.final +class ComponentConfig(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + NAMESPACE_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + MODEL_FIELD_NUMBER: _builtins.int + FRAME_FIELD_NUMBER: _builtins.int + DEPENDS_ON_FIELD_NUMBER: _builtins.int + SERVICE_CONFIGS_FIELD_NUMBER: _builtins.int + ATTRIBUTES_FIELD_NUMBER: _builtins.int + API_FIELD_NUMBER: _builtins.int + LOG_CONFIGURATION_FIELD_NUMBER: _builtins.int + name: _builtins.str + namespace: _builtins.str 'deprecated; use api' - type: builtins.str + type: _builtins.str 'deprecated; use api' - model: builtins.str - api: builtins.str + model: _builtins.str + api: _builtins.str - @property - def frame(self) -> global___Frame: + @_builtins.property + def frame(self) -> Global___Frame: ... - @property - def depends_on(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def depends_on(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def service_configs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ResourceLevelServiceConfig]: + @_builtins.property + def service_configs(self) -> _containers.RepeatedCompositeFieldContainer[Global___ResourceLevelServiceConfig]: ... - @property - def attributes(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def attributes(self) -> _struct_pb2.Struct: ... - @property - def log_configuration(self) -> global___LogConfiguration: + @_builtins.property + def log_configuration(self) -> Global___LogConfiguration: ... - def __init__(self, *, name: builtins.str=..., namespace: builtins.str=..., type: builtins.str=..., model: builtins.str=..., frame: global___Frame | None=..., depends_on: collections.abc.Iterable[builtins.str] | None=..., service_configs: collections.abc.Iterable[global___ResourceLevelServiceConfig] | None=..., attributes: google.protobuf.struct_pb2.Struct | None=..., api: builtins.str=..., log_configuration: global___LogConfiguration | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., namespace: _builtins.str=..., type: _builtins.str=..., model: _builtins.str=..., frame: Global___Frame | None=..., depends_on: _abc.Iterable[_builtins.str] | None=..., service_configs: _abc.Iterable[Global___ResourceLevelServiceConfig] | None=..., attributes: _struct_pb2.Struct | None=..., api: _builtins.str=..., log_configuration: Global___LogConfiguration | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['attributes', b'attributes', 'frame', b'frame', 'log_configuration', b'log_configuration'] - def HasField(self, field_name: typing.Literal['attributes', b'attributes', 'frame', b'frame', 'log_configuration', b'log_configuration']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['api', b'api', 'attributes', b'attributes', 'depends_on', b'depends_on', 'frame', b'frame', 'log_configuration', b'log_configuration', 'model', b'model', 'name', b'name', 'namespace', b'namespace', 'service_configs', b'service_configs', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['api', b'api', 'attributes', b'attributes', 'depends_on', b'depends_on', 'frame', b'frame', 'log_configuration', b'log_configuration', 'model', b'model', 'name', b'name', 'namespace', b'namespace', 'service_configs', b'service_configs', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ComponentConfig = ComponentConfig +Global___ComponentConfig: _TypeAlias = ComponentConfig -@typing.final -class ResourceLevelServiceConfig(google.protobuf.message.Message): +@_typing.final +class ResourceLevelServiceConfig(_message.Message): """A ResourceLevelServiceConfig describes component or remote configuration for a service.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TYPE_FIELD_NUMBER: builtins.int - ATTRIBUTES_FIELD_NUMBER: builtins.int - type: builtins.str + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + ATTRIBUTES_FIELD_NUMBER: _builtins.int + type: _builtins.str - @property - def attributes(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def attributes(self) -> _struct_pb2.Struct: """TODO(adam): Should this be move to a structured type as defined in the typescript frontend.""" - def __init__(self, *, type: builtins.str=..., attributes: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, type: _builtins.str=..., attributes: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['attributes', b'attributes'] - def HasField(self, field_name: typing.Literal['attributes', b'attributes']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['attributes', b'attributes', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['attributes', b'attributes', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ResourceLevelServiceConfig = ResourceLevelServiceConfig +Global___ResourceLevelServiceConfig: _TypeAlias = ResourceLevelServiceConfig -@typing.final -class ProcessConfig(google.protobuf.message.Message): +@_typing.final +class ProcessConfig(_message.Message): """A ProcessConfig describes how to manage a system process.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class EnvEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str - value: builtins.str + @_typing.final + class EnvEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str - def __init__(self, *, key: builtins.str=..., value: builtins.str=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - ARGS_FIELD_NUMBER: builtins.int - CWD_FIELD_NUMBER: builtins.int - ONE_SHOT_FIELD_NUMBER: builtins.int - LOG_FIELD_NUMBER: builtins.int - STOP_SIGNAL_FIELD_NUMBER: builtins.int - STOP_TIMEOUT_FIELD_NUMBER: builtins.int - ENV_FIELD_NUMBER: builtins.int - USERNAME_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str - cwd: builtins.str - one_shot: builtins.bool - log: builtins.bool - stop_signal: builtins.int - username: builtins.str - - @property - def args(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: - ... - - @property - def stop_timeout(self) -> google.protobuf.duration_pb2.Duration: - ... - - @property - def env(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + ARGS_FIELD_NUMBER: _builtins.int + CWD_FIELD_NUMBER: _builtins.int + ONE_SHOT_FIELD_NUMBER: _builtins.int + LOG_FIELD_NUMBER: _builtins.int + STOP_SIGNAL_FIELD_NUMBER: _builtins.int + STOP_TIMEOUT_FIELD_NUMBER: _builtins.int + ENV_FIELD_NUMBER: _builtins.int + USERNAME_FIELD_NUMBER: _builtins.int + id: _builtins.str + name: _builtins.str + cwd: _builtins.str + one_shot: _builtins.bool + log: _builtins.bool + stop_signal: _builtins.int + username: _builtins.str + + @_builtins.property + def args(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + ... + + @_builtins.property + def stop_timeout(self) -> _duration_pb2.Duration: + ... + + @_builtins.property + def env(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: """additional environment variables passed to the process""" - def __init__(self, *, id: builtins.str=..., name: builtins.str=..., args: collections.abc.Iterable[builtins.str] | None=..., cwd: builtins.str=..., one_shot: builtins.bool=..., log: builtins.bool=..., stop_signal: builtins.int=..., stop_timeout: google.protobuf.duration_pb2.Duration | None=..., env: collections.abc.Mapping[builtins.str, builtins.str] | None=..., username: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., name: _builtins.str=..., args: _abc.Iterable[_builtins.str] | None=..., cwd: _builtins.str=..., one_shot: _builtins.bool=..., log: _builtins.bool=..., stop_signal: _builtins.int=..., stop_timeout: _duration_pb2.Duration | None=..., env: _abc.Mapping[_builtins.str, _builtins.str] | None=..., username: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['stop_timeout', b'stop_timeout'] - def HasField(self, field_name: typing.Literal['stop_timeout', b'stop_timeout']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['args', b'args', 'cwd', b'cwd', 'env', b'env', 'id', b'id', 'log', b'log', 'name', b'name', 'one_shot', b'one_shot', 'stop_signal', b'stop_signal', 'stop_timeout', b'stop_timeout', 'username', b'username'] - def ClearField(self, field_name: typing.Literal['args', b'args', 'cwd', b'cwd', 'env', b'env', 'id', b'id', 'log', b'log', 'name', b'name', 'one_shot', b'one_shot', 'stop_signal', b'stop_signal', 'stop_timeout', b'stop_timeout', 'username', b'username']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ProcessConfig = ProcessConfig +Global___ProcessConfig: _TypeAlias = ProcessConfig -@typing.final -class ServiceConfig(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - NAMESPACE_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - ATTRIBUTES_FIELD_NUMBER: builtins.int - DEPENDS_ON_FIELD_NUMBER: builtins.int - MODEL_FIELD_NUMBER: builtins.int - API_FIELD_NUMBER: builtins.int - SERVICE_CONFIGS_FIELD_NUMBER: builtins.int - LOG_CONFIGURATION_FIELD_NUMBER: builtins.int - name: builtins.str - namespace: builtins.str +@_typing.final +class ServiceConfig(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + NAMESPACE_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + ATTRIBUTES_FIELD_NUMBER: _builtins.int + DEPENDS_ON_FIELD_NUMBER: _builtins.int + MODEL_FIELD_NUMBER: _builtins.int + API_FIELD_NUMBER: _builtins.int + SERVICE_CONFIGS_FIELD_NUMBER: _builtins.int + LOG_CONFIGURATION_FIELD_NUMBER: _builtins.int + name: _builtins.str + namespace: _builtins.str 'deprecated; use api' - type: builtins.str + type: _builtins.str 'deprecated; use api' - model: builtins.str - api: builtins.str + model: _builtins.str + api: _builtins.str - @property - def attributes(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def attributes(self) -> _struct_pb2.Struct: ... - @property - def depends_on(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def depends_on(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def service_configs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ResourceLevelServiceConfig]: + @_builtins.property + def service_configs(self) -> _containers.RepeatedCompositeFieldContainer[Global___ResourceLevelServiceConfig]: ... - @property - def log_configuration(self) -> global___LogConfiguration: + @_builtins.property + def log_configuration(self) -> Global___LogConfiguration: ... - def __init__(self, *, name: builtins.str=..., namespace: builtins.str=..., type: builtins.str=..., attributes: google.protobuf.struct_pb2.Struct | None=..., depends_on: collections.abc.Iterable[builtins.str] | None=..., model: builtins.str=..., api: builtins.str=..., service_configs: collections.abc.Iterable[global___ResourceLevelServiceConfig] | None=..., log_configuration: global___LogConfiguration | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., namespace: _builtins.str=..., type: _builtins.str=..., attributes: _struct_pb2.Struct | None=..., depends_on: _abc.Iterable[_builtins.str] | None=..., model: _builtins.str=..., api: _builtins.str=..., service_configs: _abc.Iterable[Global___ResourceLevelServiceConfig] | None=..., log_configuration: Global___LogConfiguration | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['attributes', b'attributes', 'log_configuration', b'log_configuration'] - def HasField(self, field_name: typing.Literal['attributes', b'attributes', 'log_configuration', b'log_configuration']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['api', b'api', 'attributes', b'attributes', 'depends_on', b'depends_on', 'log_configuration', b'log_configuration', 'model', b'model', 'name', b'name', 'namespace', b'namespace', 'service_configs', b'service_configs', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['api', b'api', 'attributes', b'attributes', 'depends_on', b'depends_on', 'log_configuration', b'log_configuration', 'model', b'model', 'name', b'name', 'namespace', b'namespace', 'service_configs', b'service_configs', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ServiceConfig = ServiceConfig +Global___ServiceConfig: _TypeAlias = ServiceConfig -@typing.final -class NetworkConfig(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FQDN_FIELD_NUMBER: builtins.int - BIND_ADDRESS_FIELD_NUMBER: builtins.int - TLS_CERT_FILE_FIELD_NUMBER: builtins.int - TLS_KEY_FILE_FIELD_NUMBER: builtins.int - SESSIONS_FIELD_NUMBER: builtins.int - TRAFFIC_TUNNEL_ENDPOINTS_FIELD_NUMBER: builtins.int - NO_TLS_FIELD_NUMBER: builtins.int - fqdn: builtins.str - bind_address: builtins.str - tls_cert_file: builtins.str - tls_key_file: builtins.str - no_tls: builtins.bool +@_typing.final +class NetworkConfig(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FQDN_FIELD_NUMBER: _builtins.int + BIND_ADDRESS_FIELD_NUMBER: _builtins.int + TLS_CERT_FILE_FIELD_NUMBER: _builtins.int + TLS_KEY_FILE_FIELD_NUMBER: _builtins.int + SESSIONS_FIELD_NUMBER: _builtins.int + TRAFFIC_TUNNEL_ENDPOINTS_FIELD_NUMBER: _builtins.int + NO_TLS_FIELD_NUMBER: _builtins.int + fqdn: _builtins.str + bind_address: _builtins.str + tls_cert_file: _builtins.str + tls_key_file: _builtins.str + no_tls: _builtins.bool - @property - def sessions(self) -> global___SessionsConfig: + @_builtins.property + def sessions(self) -> Global___SessionsConfig: ... - @property - def traffic_tunnel_endpoints(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TrafficTunnelEndpoint]: + @_builtins.property + def traffic_tunnel_endpoints(self) -> _containers.RepeatedCompositeFieldContainer[Global___TrafficTunnelEndpoint]: ... - def __init__(self, *, fqdn: builtins.str=..., bind_address: builtins.str=..., tls_cert_file: builtins.str=..., tls_key_file: builtins.str=..., sessions: global___SessionsConfig | None=..., traffic_tunnel_endpoints: collections.abc.Iterable[global___TrafficTunnelEndpoint] | None=..., no_tls: builtins.bool=...) -> None: + def __init__(self, *, fqdn: _builtins.str=..., bind_address: _builtins.str=..., tls_cert_file: _builtins.str=..., tls_key_file: _builtins.str=..., sessions: Global___SessionsConfig | None=..., traffic_tunnel_endpoints: _abc.Iterable[Global___TrafficTunnelEndpoint] | None=..., no_tls: _builtins.bool=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['sessions', b'sessions'] - def HasField(self, field_name: typing.Literal['sessions', b'sessions']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['bind_address', b'bind_address', 'fqdn', b'fqdn', 'no_tls', b'no_tls', 'sessions', b'sessions', 'tls_cert_file', b'tls_cert_file', 'tls_key_file', b'tls_key_file', 'traffic_tunnel_endpoints', b'traffic_tunnel_endpoints'] - def ClearField(self, field_name: typing.Literal['bind_address', b'bind_address', 'fqdn', b'fqdn', 'no_tls', b'no_tls', 'sessions', b'sessions', 'tls_cert_file', b'tls_cert_file', 'tls_key_file', b'tls_key_file', 'traffic_tunnel_endpoints', b'traffic_tunnel_endpoints']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___NetworkConfig = NetworkConfig +Global___NetworkConfig: _TypeAlias = NetworkConfig -@typing.final -class SessionsConfig(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - HEARTBEAT_WINDOW_FIELD_NUMBER: builtins.int +@_typing.final +class SessionsConfig(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + HEARTBEAT_WINDOW_FIELD_NUMBER: _builtins.int - @property - def heartbeat_window(self) -> google.protobuf.duration_pb2.Duration: + @_builtins.property + def heartbeat_window(self) -> _duration_pb2.Duration: ... - def __init__(self, *, heartbeat_window: google.protobuf.duration_pb2.Duration | None=...) -> None: + def __init__(self, *, heartbeat_window: _duration_pb2.Duration | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['heartbeat_window', b'heartbeat_window'] - def HasField(self, field_name: typing.Literal['heartbeat_window', b'heartbeat_window']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['heartbeat_window', b'heartbeat_window'] - def ClearField(self, field_name: typing.Literal['heartbeat_window', b'heartbeat_window']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SessionsConfig = SessionsConfig +Global___SessionsConfig: _TypeAlias = SessionsConfig -@typing.final -class TrafficTunnelEndpoint(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PORT_FIELD_NUMBER: builtins.int - CONNECTION_TIMEOUT_FIELD_NUMBER: builtins.int - port: builtins.int +@_typing.final +class TrafficTunnelEndpoint(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PORT_FIELD_NUMBER: _builtins.int + CONNECTION_TIMEOUT_FIELD_NUMBER: _builtins.int + port: _builtins.int - @property - def connection_timeout(self) -> google.protobuf.duration_pb2.Duration: + @_builtins.property + def connection_timeout(self) -> _duration_pb2.Duration: ... - def __init__(self, *, port: builtins.int=..., connection_timeout: google.protobuf.duration_pb2.Duration | None=...) -> None: + def __init__(self, *, port: _builtins.int=..., connection_timeout: _duration_pb2.Duration | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['connection_timeout', b'connection_timeout'] - def HasField(self, field_name: typing.Literal['connection_timeout', b'connection_timeout']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['connection_timeout', b'connection_timeout', 'port', b'port'] - def ClearField(self, field_name: typing.Literal['connection_timeout', b'connection_timeout', 'port', b'port']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TrafficTunnelEndpoint = TrafficTunnelEndpoint +Global___TrafficTunnelEndpoint: _TypeAlias = TrafficTunnelEndpoint -@typing.final -class AuthConfig(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - HANDLERS_FIELD_NUMBER: builtins.int - TLS_AUTH_ENTITIES_FIELD_NUMBER: builtins.int - EXTERNAL_AUTH_CONFIG_FIELD_NUMBER: builtins.int +@_typing.final +class AuthConfig(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + HANDLERS_FIELD_NUMBER: _builtins.int + TLS_AUTH_ENTITIES_FIELD_NUMBER: _builtins.int + EXTERNAL_AUTH_CONFIG_FIELD_NUMBER: _builtins.int - @property - def handlers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AuthHandlerConfig]: + @_builtins.property + def handlers(self) -> _containers.RepeatedCompositeFieldContainer[Global___AuthHandlerConfig]: ... - @property - def tls_auth_entities(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def tls_auth_entities(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def external_auth_config(self) -> global___ExternalAuthConfig: + @_builtins.property + def external_auth_config(self) -> Global___ExternalAuthConfig: ... - def __init__(self, *, handlers: collections.abc.Iterable[global___AuthHandlerConfig] | None=..., tls_auth_entities: collections.abc.Iterable[builtins.str] | None=..., external_auth_config: global___ExternalAuthConfig | None=...) -> None: + def __init__(self, *, handlers: _abc.Iterable[Global___AuthHandlerConfig] | None=..., tls_auth_entities: _abc.Iterable[_builtins.str] | None=..., external_auth_config: Global___ExternalAuthConfig | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_external_auth_config', b'_external_auth_config', 'external_auth_config', b'external_auth_config'] - def HasField(self, field_name: typing.Literal['_external_auth_config', b'_external_auth_config', 'external_auth_config', b'external_auth_config']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_external_auth_config', b'_external_auth_config', 'external_auth_config', b'external_auth_config', 'handlers', b'handlers', 'tls_auth_entities', b'tls_auth_entities'] - def ClearField(self, field_name: typing.Literal['_external_auth_config', b'_external_auth_config', 'external_auth_config', b'external_auth_config', 'handlers', b'handlers', 'tls_auth_entities', b'tls_auth_entities']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__external_auth_config: _TypeAlias = _typing.Literal['external_auth_config'] + _WhichOneofArgType__external_auth_config: _TypeAlias = _typing.Literal['_external_auth_config', b'_external_auth_config'] - def WhichOneof(self, oneof_group: typing.Literal['_external_auth_config', b'_external_auth_config']) -> typing.Literal['external_auth_config'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__external_auth_config) -> _WhichOneofReturnType__external_auth_config | None: ... -global___AuthConfig = AuthConfig +Global___AuthConfig: _TypeAlias = AuthConfig -@typing.final -class JWKSFile(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - JSON_FIELD_NUMBER: builtins.int +@_typing.final +class JWKSFile(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + JSON_FIELD_NUMBER: _builtins.int - @property - def json(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def json(self) -> _struct_pb2.Struct: """JSON Web Keys (JWKS) file as arbitary json. See https://www.rfc-editor.org/rfc/rfc7517 """ - def __init__(self, *, json: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, json: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['json', b'json'] - def HasField(self, field_name: typing.Literal['json', b'json']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['json', b'json'] - def ClearField(self, field_name: typing.Literal['json', b'json']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___JWKSFile = JWKSFile +Global___JWKSFile: _TypeAlias = JWKSFile -@typing.final -class ExternalAuthConfig(google.protobuf.message.Message): +@_typing.final +class ExternalAuthConfig(_message.Message): """ExternalAuthConfig describes how a viam managed robot can accept credentials signed by the cloud app. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - JWKS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + JWKS_FIELD_NUMBER: _builtins.int - @property - def jwks(self) -> global___JWKSFile: + @_builtins.property + def jwks(self) -> Global___JWKSFile: ... - def __init__(self, *, jwks: global___JWKSFile | None=...) -> None: + def __init__(self, *, jwks: Global___JWKSFile | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['jwks', b'jwks'] - def HasField(self, field_name: typing.Literal['jwks', b'jwks']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['jwks', b'jwks'] - def ClearField(self, field_name: typing.Literal['jwks', b'jwks']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ExternalAuthConfig = ExternalAuthConfig +Global___ExternalAuthConfig: _TypeAlias = ExternalAuthConfig -@typing.final -class AuthHandlerConfig(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TYPE_FIELD_NUMBER: builtins.int - CONFIG_FIELD_NUMBER: builtins.int - type: global___CredentialsType.ValueType +@_typing.final +class AuthHandlerConfig(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + CONFIG_FIELD_NUMBER: _builtins.int + type: Global___CredentialsType.ValueType - @property - def config(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def config(self) -> _struct_pb2.Struct: ... - def __init__(self, *, type: global___CredentialsType.ValueType=..., config: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, type: Global___CredentialsType.ValueType=..., config: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['config', b'config'] - def HasField(self, field_name: typing.Literal['config', b'config']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['config', b'config', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['config', b'config', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AuthHandlerConfig = AuthHandlerConfig +Global___AuthHandlerConfig: _TypeAlias = AuthHandlerConfig -@typing.final -class Frame(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARENT_FIELD_NUMBER: builtins.int - TRANSLATION_FIELD_NUMBER: builtins.int - ORIENTATION_FIELD_NUMBER: builtins.int - GEOMETRY_FIELD_NUMBER: builtins.int - parent: builtins.str +@_typing.final +class Frame(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PARENT_FIELD_NUMBER: _builtins.int + TRANSLATION_FIELD_NUMBER: _builtins.int + ORIENTATION_FIELD_NUMBER: _builtins.int + GEOMETRY_FIELD_NUMBER: _builtins.int + parent: _builtins.str - @property - def translation(self) -> global___Translation: + @_builtins.property + def translation(self) -> Global___Translation: ... - @property - def orientation(self) -> global___Orientation: + @_builtins.property + def orientation(self) -> Global___Orientation: ... - @property - def geometry(self) -> common.v1.common_pb2.Geometry: + @_builtins.property + def geometry(self) -> _common_pb2.Geometry: ... - def __init__(self, *, parent: builtins.str=..., translation: global___Translation | None=..., orientation: global___Orientation | None=..., geometry: common.v1.common_pb2.Geometry | None=...) -> None: + def __init__(self, *, parent: _builtins.str=..., translation: Global___Translation | None=..., orientation: Global___Orientation | None=..., geometry: _common_pb2.Geometry | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['geometry', b'geometry', 'orientation', b'orientation', 'translation', b'translation'] - def HasField(self, field_name: typing.Literal['geometry', b'geometry', 'orientation', b'orientation', 'translation', b'translation']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['geometry', b'geometry', 'orientation', b'orientation', 'parent', b'parent', 'translation', b'translation'] - def ClearField(self, field_name: typing.Literal['geometry', b'geometry', 'orientation', b'orientation', 'parent', b'parent', 'translation', b'translation']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Frame = Frame +Global___Frame: _TypeAlias = Frame -@typing.final -class LogConfiguration(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LEVEL_FIELD_NUMBER: builtins.int - level: builtins.str +@_typing.final +class LogConfiguration(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LEVEL_FIELD_NUMBER: _builtins.int + level: _builtins.str - def __init__(self, *, level: builtins.str=...) -> None: + def __init__(self, *, level: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['level', b'level'] - def ClearField(self, field_name: typing.Literal['level', b'level']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___LogConfiguration = LogConfiguration +Global___LogConfiguration: _TypeAlias = LogConfiguration -@typing.final -class Translation(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - X_FIELD_NUMBER: builtins.int - Y_FIELD_NUMBER: builtins.int - Z_FIELD_NUMBER: builtins.int - x: builtins.float - y: builtins.float - z: builtins.float +@_typing.final +class Translation(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + X_FIELD_NUMBER: _builtins.int + Y_FIELD_NUMBER: _builtins.int + Z_FIELD_NUMBER: _builtins.int + x: _builtins.float + y: _builtins.float + z: _builtins.float - def __init__(self, *, x: builtins.float=..., y: builtins.float=..., z: builtins.float=...) -> None: + def __init__(self, *, x: _builtins.float=..., y: _builtins.float=..., z: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['x', b'x', 'y', b'y', 'z', b'z'] - def ClearField(self, field_name: typing.Literal['x', b'x', 'y', b'y', 'z', b'z']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Translation = Translation +Global___Translation: _TypeAlias = Translation -@typing.final -class Orientation(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class Orientation(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class NoOrientation(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor + @_typing.final + class NoOrientation(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... - @typing.final - class OrientationVectorRadians(google.protobuf.message.Message): + @_typing.final + class OrientationVectorRadians(_message.Message): """OrientationVector containing ox, oy, oz, theta represents an orientation vector Structured similarly to an angle axis, an orientation vector works differently. Rather than representing an orientation with an arbitrary axis and a rotation around it from an origin, an orientation vector represents orientation @@ -746,64 +808,67 @@ class Orientation(google.protobuf.message.Message): point, and the plane defined by the origin, the rx,ry,rz point, and the new local Z axis. So if theta is kept at zero as the north/south pole is circled, the Roll will correct itself to remain in-line. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - THETA_FIELD_NUMBER: builtins.int - X_FIELD_NUMBER: builtins.int - Y_FIELD_NUMBER: builtins.int - Z_FIELD_NUMBER: builtins.int - theta: builtins.float - x: builtins.float - y: builtins.float - z: builtins.float - - def __init__(self, *, theta: builtins.float=..., x: builtins.float=..., y: builtins.float=..., z: builtins.float=...) -> None: + DESCRIPTOR: _descriptor.Descriptor + THETA_FIELD_NUMBER: _builtins.int + X_FIELD_NUMBER: _builtins.int + Y_FIELD_NUMBER: _builtins.int + Z_FIELD_NUMBER: _builtins.int + theta: _builtins.float + x: _builtins.float + y: _builtins.float + z: _builtins.float + + def __init__(self, *, theta: _builtins.float=..., x: _builtins.float=..., y: _builtins.float=..., z: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['theta', b'theta', 'x', b'x', 'y', b'y', 'z', b'z'] - def ClearField(self, field_name: typing.Literal['theta', b'theta', 'x', b'x', 'y', b'y', 'z', b'z']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - @typing.final - class OrientationVectorDegrees(google.protobuf.message.Message): + @_typing.final + class OrientationVectorDegrees(_message.Message): """OrientationVectorDegrees is the orientation vector between two objects, but expressed in degrees rather than radians. Because protobuf Pose is in degrees, this is necessary. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - THETA_FIELD_NUMBER: builtins.int - X_FIELD_NUMBER: builtins.int - Y_FIELD_NUMBER: builtins.int - Z_FIELD_NUMBER: builtins.int - theta: builtins.float - x: builtins.float - y: builtins.float - z: builtins.float - - def __init__(self, *, theta: builtins.float=..., x: builtins.float=..., y: builtins.float=..., z: builtins.float=...) -> None: + DESCRIPTOR: _descriptor.Descriptor + THETA_FIELD_NUMBER: _builtins.int + X_FIELD_NUMBER: _builtins.int + Y_FIELD_NUMBER: _builtins.int + Z_FIELD_NUMBER: _builtins.int + theta: _builtins.float + x: _builtins.float + y: _builtins.float + z: _builtins.float + + def __init__(self, *, theta: _builtins.float=..., x: _builtins.float=..., y: _builtins.float=..., z: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['theta', b'theta', 'x', b'x', 'y', b'y', 'z', b'z'] - def ClearField(self, field_name: typing.Literal['theta', b'theta', 'x', b'x', 'y', b'y', 'z', b'z']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - @typing.final - class EulerAngles(google.protobuf.message.Message): + @_typing.final + class EulerAngles(_message.Message): """EulerAngles are three angles (in radians) used to represent the rotation of an object in 3D Euclidean space The Tait–Bryan angle formalism is used, with rotations around three distinct axes in the z-y′-x″ sequence. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ROLL_FIELD_NUMBER: builtins.int - PITCH_FIELD_NUMBER: builtins.int - YAW_FIELD_NUMBER: builtins.int - roll: builtins.float - pitch: builtins.float - yaw: builtins.float - - def __init__(self, *, roll: builtins.float=..., pitch: builtins.float=..., yaw: builtins.float=...) -> None: + DESCRIPTOR: _descriptor.Descriptor + ROLL_FIELD_NUMBER: _builtins.int + PITCH_FIELD_NUMBER: _builtins.int + YAW_FIELD_NUMBER: _builtins.int + roll: _builtins.float + pitch: _builtins.float + yaw: _builtins.float + + def __init__(self, *, roll: _builtins.float=..., pitch: _builtins.float=..., yaw: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['pitch', b'pitch', 'roll', b'roll', 'yaw', b'yaw'] - def ClearField(self, field_name: typing.Literal['pitch', b'pitch', 'roll', b'roll', 'yaw', b'yaw']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - @typing.final - class AxisAngles(google.protobuf.message.Message): + @_typing.final + class AxisAngles(_message.Message): """See here for a thorough explanation: https://en.wikipedia.org/wiki/Axis%E2%80%93angle_representation Basic explanation: Imagine a 3d cartesian grid centered at 0,0,0, and a sphere of radius 1 centered at that same point. An orientation can be expressed by first specifying an axis, i.e. a line from the origin @@ -812,475 +877,509 @@ class Orientation(google.protobuf.message.Message): the unit sphere components to give a vector whose length is theta and whose direction is the original axis. AxisAngles represents an R4 axis angle. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - THETA_FIELD_NUMBER: builtins.int - X_FIELD_NUMBER: builtins.int - Y_FIELD_NUMBER: builtins.int - Z_FIELD_NUMBER: builtins.int - theta: builtins.float - x: builtins.float - y: builtins.float - z: builtins.float - - def __init__(self, *, theta: builtins.float=..., x: builtins.float=..., y: builtins.float=..., z: builtins.float=...) -> None: + DESCRIPTOR: _descriptor.Descriptor + THETA_FIELD_NUMBER: _builtins.int + X_FIELD_NUMBER: _builtins.int + Y_FIELD_NUMBER: _builtins.int + Z_FIELD_NUMBER: _builtins.int + theta: _builtins.float + x: _builtins.float + y: _builtins.float + z: _builtins.float + + def __init__(self, *, theta: _builtins.float=..., x: _builtins.float=..., y: _builtins.float=..., z: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['theta', b'theta', 'x', b'x', 'y', b'y', 'z', b'z'] - def ClearField(self, field_name: typing.Literal['theta', b'theta', 'x', b'x', 'y', b'y', 'z', b'z']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - @typing.final - class Quaternion(google.protobuf.message.Message): + @_typing.final + class Quaternion(_message.Message): """Quaternion is a float64 precision quaternion.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - W_FIELD_NUMBER: builtins.int - X_FIELD_NUMBER: builtins.int - Y_FIELD_NUMBER: builtins.int - Z_FIELD_NUMBER: builtins.int - w: builtins.float - x: builtins.float - y: builtins.float - z: builtins.float - - def __init__(self, *, w: builtins.float=..., x: builtins.float=..., y: builtins.float=..., z: builtins.float=...) -> None: + DESCRIPTOR: _descriptor.Descriptor + W_FIELD_NUMBER: _builtins.int + X_FIELD_NUMBER: _builtins.int + Y_FIELD_NUMBER: _builtins.int + Z_FIELD_NUMBER: _builtins.int + w: _builtins.float + x: _builtins.float + y: _builtins.float + z: _builtins.float + + def __init__(self, *, w: _builtins.float=..., x: _builtins.float=..., y: _builtins.float=..., z: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['w', b'w', 'x', b'x', 'y', b'y', 'z', b'z'] - def ClearField(self, field_name: typing.Literal['w', b'w', 'x', b'x', 'y', b'y', 'z', b'z']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - NO_ORIENTATION_FIELD_NUMBER: builtins.int - VECTOR_RADIANS_FIELD_NUMBER: builtins.int - VECTOR_DEGREES_FIELD_NUMBER: builtins.int - EULER_ANGLES_FIELD_NUMBER: builtins.int - AXIS_ANGLES_FIELD_NUMBER: builtins.int - QUATERNION_FIELD_NUMBER: builtins.int + NO_ORIENTATION_FIELD_NUMBER: _builtins.int + VECTOR_RADIANS_FIELD_NUMBER: _builtins.int + VECTOR_DEGREES_FIELD_NUMBER: _builtins.int + EULER_ANGLES_FIELD_NUMBER: _builtins.int + AXIS_ANGLES_FIELD_NUMBER: _builtins.int + QUATERNION_FIELD_NUMBER: _builtins.int - @property - def no_orientation(self) -> global___Orientation.NoOrientation: + @_builtins.property + def no_orientation(self) -> Global___Orientation.NoOrientation: ... - @property - def vector_radians(self) -> global___Orientation.OrientationVectorRadians: + @_builtins.property + def vector_radians(self) -> Global___Orientation.OrientationVectorRadians: ... - @property - def vector_degrees(self) -> global___Orientation.OrientationVectorDegrees: + @_builtins.property + def vector_degrees(self) -> Global___Orientation.OrientationVectorDegrees: ... - @property - def euler_angles(self) -> global___Orientation.EulerAngles: + @_builtins.property + def euler_angles(self) -> Global___Orientation.EulerAngles: ... - @property - def axis_angles(self) -> global___Orientation.AxisAngles: + @_builtins.property + def axis_angles(self) -> Global___Orientation.AxisAngles: ... - @property - def quaternion(self) -> global___Orientation.Quaternion: + @_builtins.property + def quaternion(self) -> Global___Orientation.Quaternion: ... - def __init__(self, *, no_orientation: global___Orientation.NoOrientation | None=..., vector_radians: global___Orientation.OrientationVectorRadians | None=..., vector_degrees: global___Orientation.OrientationVectorDegrees | None=..., euler_angles: global___Orientation.EulerAngles | None=..., axis_angles: global___Orientation.AxisAngles | None=..., quaternion: global___Orientation.Quaternion | None=...) -> None: + def __init__(self, *, no_orientation: Global___Orientation.NoOrientation | None=..., vector_radians: Global___Orientation.OrientationVectorRadians | None=..., vector_degrees: Global___Orientation.OrientationVectorDegrees | None=..., euler_angles: Global___Orientation.EulerAngles | None=..., axis_angles: Global___Orientation.AxisAngles | None=..., quaternion: Global___Orientation.Quaternion | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['axis_angles', b'axis_angles', 'euler_angles', b'euler_angles', 'no_orientation', b'no_orientation', 'quaternion', b'quaternion', 'type', b'type', 'vector_degrees', b'vector_degrees', 'vector_radians', b'vector_radians'] - def HasField(self, field_name: typing.Literal['axis_angles', b'axis_angles', 'euler_angles', b'euler_angles', 'no_orientation', b'no_orientation', 'quaternion', b'quaternion', 'type', b'type', 'vector_degrees', b'vector_degrees', 'vector_radians', b'vector_radians']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['axis_angles', b'axis_angles', 'euler_angles', b'euler_angles', 'no_orientation', b'no_orientation', 'quaternion', b'quaternion', 'type', b'type', 'vector_degrees', b'vector_degrees', 'vector_radians', b'vector_radians'] - def ClearField(self, field_name: typing.Literal['axis_angles', b'axis_angles', 'euler_angles', b'euler_angles', 'no_orientation', b'no_orientation', 'quaternion', b'quaternion', 'type', b'type', 'vector_degrees', b'vector_degrees', 'vector_radians', b'vector_radians']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_type: _TypeAlias = _typing.Literal['no_orientation', 'vector_radians', 'vector_degrees', 'euler_angles', 'axis_angles', 'quaternion'] + _WhichOneofArgType_type: _TypeAlias = _typing.Literal['type', b'type'] - def WhichOneof(self, oneof_group: typing.Literal['type', b'type']) -> typing.Literal['no_orientation', 'vector_radians', 'vector_degrees', 'euler_angles', 'axis_angles', 'quaternion'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_type) -> _WhichOneofReturnType_type | None: ... -global___Orientation = Orientation +Global___Orientation: _TypeAlias = Orientation -@typing.final -class RemoteConfig(google.protobuf.message.Message): +@_typing.final +class RemoteConfig(_message.Message): """A RemoteConfig describes a remote robot that should be integrated. The Frame field defines how the "world" node of the remote robot should be reconciled with the "world" node of the the current robot. All components of the remote robot who have Parent as "world" will be attached to the parent defined in Frame, and with the given offset as well. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - ADDRESS_FIELD_NUMBER: builtins.int - FRAME_FIELD_NUMBER: builtins.int - AUTH_FIELD_NUMBER: builtins.int - MANAGED_BY_FIELD_NUMBER: builtins.int - INSECURE_FIELD_NUMBER: builtins.int - CONNECTION_CHECK_INTERVAL_FIELD_NUMBER: builtins.int - RECONNECT_INTERVAL_FIELD_NUMBER: builtins.int - SERVICE_CONFIGS_FIELD_NUMBER: builtins.int - SECRET_FIELD_NUMBER: builtins.int - PREFIX_FIELD_NUMBER: builtins.int - name: builtins.str - address: builtins.str - managed_by: builtins.str - insecure: builtins.bool - secret: builtins.str + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + ADDRESS_FIELD_NUMBER: _builtins.int + FRAME_FIELD_NUMBER: _builtins.int + AUTH_FIELD_NUMBER: _builtins.int + MANAGED_BY_FIELD_NUMBER: _builtins.int + INSECURE_FIELD_NUMBER: _builtins.int + CONNECTION_CHECK_INTERVAL_FIELD_NUMBER: _builtins.int + RECONNECT_INTERVAL_FIELD_NUMBER: _builtins.int + SERVICE_CONFIGS_FIELD_NUMBER: _builtins.int + SECRET_FIELD_NUMBER: _builtins.int + PREFIX_FIELD_NUMBER: _builtins.int + name: _builtins.str + address: _builtins.str + managed_by: _builtins.str + insecure: _builtins.bool + secret: _builtins.str 'Secret is a helper for a robot location secret.' - prefix: builtins.str + prefix: _builtins.str 'A string with which to prefix all resource names fetched from this remote.' - @property - def frame(self) -> global___Frame: + @_builtins.property + def frame(self) -> Global___Frame: ... - @property - def auth(self) -> global___RemoteAuth: + @_builtins.property + def auth(self) -> Global___RemoteAuth: ... - @property - def connection_check_interval(self) -> google.protobuf.duration_pb2.Duration: + @_builtins.property + def connection_check_interval(self) -> _duration_pb2.Duration: ... - @property - def reconnect_interval(self) -> google.protobuf.duration_pb2.Duration: + @_builtins.property + def reconnect_interval(self) -> _duration_pb2.Duration: ... - @property - def service_configs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ResourceLevelServiceConfig]: + @_builtins.property + def service_configs(self) -> _containers.RepeatedCompositeFieldContainer[Global___ResourceLevelServiceConfig]: ... - def __init__(self, *, name: builtins.str=..., address: builtins.str=..., frame: global___Frame | None=..., auth: global___RemoteAuth | None=..., managed_by: builtins.str=..., insecure: builtins.bool=..., connection_check_interval: google.protobuf.duration_pb2.Duration | None=..., reconnect_interval: google.protobuf.duration_pb2.Duration | None=..., service_configs: collections.abc.Iterable[global___ResourceLevelServiceConfig] | None=..., secret: builtins.str=..., prefix: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=..., address: _builtins.str=..., frame: Global___Frame | None=..., auth: Global___RemoteAuth | None=..., managed_by: _builtins.str=..., insecure: _builtins.bool=..., connection_check_interval: _duration_pb2.Duration | None=..., reconnect_interval: _duration_pb2.Duration | None=..., service_configs: _abc.Iterable[Global___ResourceLevelServiceConfig] | None=..., secret: _builtins.str=..., prefix: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['auth', b'auth', 'connection_check_interval', b'connection_check_interval', 'frame', b'frame', 'reconnect_interval', b'reconnect_interval'] - def HasField(self, field_name: typing.Literal['auth', b'auth', 'connection_check_interval', b'connection_check_interval', 'frame', b'frame', 'reconnect_interval', b'reconnect_interval']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['address', b'address', 'auth', b'auth', 'connection_check_interval', b'connection_check_interval', 'frame', b'frame', 'insecure', b'insecure', 'managed_by', b'managed_by', 'name', b'name', 'prefix', b'prefix', 'reconnect_interval', b'reconnect_interval', 'secret', b'secret', 'service_configs', b'service_configs'] - def ClearField(self, field_name: typing.Literal['address', b'address', 'auth', b'auth', 'connection_check_interval', b'connection_check_interval', 'frame', b'frame', 'insecure', b'insecure', 'managed_by', b'managed_by', 'name', b'name', 'prefix', b'prefix', 'reconnect_interval', b'reconnect_interval', 'secret', b'secret', 'service_configs', b'service_configs']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RemoteConfig = RemoteConfig +Global___RemoteConfig: _TypeAlias = RemoteConfig -@typing.final -class RemoteAuth(google.protobuf.message.Message): +@_typing.final +class RemoteAuth(_message.Message): """RemoteAuth specifies how to authenticate against a remote. If no credentials are specified, authentication does not happen. If an entity is specified, the authentication request will specify it. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class Credentials(google.protobuf.message.Message): + @_typing.final + class Credentials(_message.Message): """Credentials packages up both a type of credential along with its payload which is formatted specific to the type. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TYPE_FIELD_NUMBER: builtins.int - PAYLOAD_FIELD_NUMBER: builtins.int - type: global___CredentialsType.ValueType - payload: builtins.str + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + PAYLOAD_FIELD_NUMBER: _builtins.int + type: Global___CredentialsType.ValueType + payload: _builtins.str - def __init__(self, *, type: global___CredentialsType.ValueType=..., payload: builtins.str=...) -> None: + def __init__(self, *, type: Global___CredentialsType.ValueType=..., payload: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['payload', b'payload', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['payload', b'payload', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - CREDENTIALS_FIELD_NUMBER: builtins.int - ENTITY_FIELD_NUMBER: builtins.int - entity: builtins.str + CREDENTIALS_FIELD_NUMBER: _builtins.int + ENTITY_FIELD_NUMBER: _builtins.int + entity: _builtins.str - @property - def credentials(self) -> global___RemoteAuth.Credentials: + @_builtins.property + def credentials(self) -> Global___RemoteAuth.Credentials: ... - def __init__(self, *, credentials: global___RemoteAuth.Credentials | None=..., entity: builtins.str=...) -> None: + def __init__(self, *, credentials: Global___RemoteAuth.Credentials | None=..., entity: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['credentials', b'credentials'] - def HasField(self, field_name: typing.Literal['credentials', b'credentials']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['credentials', b'credentials', 'entity', b'entity'] - def ClearField(self, field_name: typing.Literal['credentials', b'credentials', 'entity', b'entity']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RemoteAuth = RemoteAuth +Global___RemoteAuth: _TypeAlias = RemoteAuth -@typing.final -class AgentInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - HOST_FIELD_NUMBER: builtins.int - OS_FIELD_NUMBER: builtins.int - IPS_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - GIT_REVISION_FIELD_NUMBER: builtins.int - PLATFORM_FIELD_NUMBER: builtins.int - PLATFORM_TAGS_FIELD_NUMBER: builtins.int - host: builtins.str - os: builtins.str +@_typing.final +class AgentInfo(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + HOST_FIELD_NUMBER: _builtins.int + OS_FIELD_NUMBER: _builtins.int + IPS_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + GIT_REVISION_FIELD_NUMBER: _builtins.int + PLATFORM_FIELD_NUMBER: _builtins.int + PLATFORM_TAGS_FIELD_NUMBER: _builtins.int + host: _builtins.str + os: _builtins.str 'Will soon be deprecated, use platform instead' - version: builtins.str + version: _builtins.str 'RDK version' - git_revision: builtins.str - platform: builtins.str + git_revision: _builtins.str + platform: _builtins.str 'The platform the RDK is running on. For example linux/amd64' - @property - def ips(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def ips(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """list of all ipv4 ips.""" - @property - def platform_tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def platform_tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """Optional tags to further constrain which artifact is returned for modules.""" - def __init__(self, *, host: builtins.str=..., os: builtins.str=..., ips: collections.abc.Iterable[builtins.str] | None=..., version: builtins.str=..., git_revision: builtins.str=..., platform: builtins.str | None=..., platform_tags: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, host: _builtins.str=..., os: _builtins.str=..., ips: _abc.Iterable[_builtins.str] | None=..., version: _builtins.str=..., git_revision: _builtins.str=..., platform: _builtins.str | None=..., platform_tags: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_platform', b'_platform', 'platform', b'platform'] - def HasField(self, field_name: typing.Literal['_platform', b'_platform', 'platform', b'platform']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_platform', b'_platform', 'git_revision', b'git_revision', 'host', b'host', 'ips', b'ips', 'os', b'os', 'platform', b'platform', 'platform_tags', b'platform_tags', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['_platform', b'_platform', 'git_revision', b'git_revision', 'host', b'host', 'ips', b'ips', 'os', b'os', 'platform', b'platform', 'platform_tags', b'platform_tags', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__platform: _TypeAlias = _typing.Literal['platform'] + _WhichOneofArgType__platform: _TypeAlias = _typing.Literal['_platform', b'_platform'] - def WhichOneof(self, oneof_group: typing.Literal['_platform', b'_platform']) -> typing.Literal['platform'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__platform) -> _WhichOneofReturnType__platform | None: ... -global___AgentInfo = AgentInfo +Global___AgentInfo: _TypeAlias = AgentInfo -@typing.final -class ConfigRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - AGENT_INFO_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class ConfigRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + AGENT_INFO_FIELD_NUMBER: _builtins.int + id: _builtins.str 'Robot part id.' - @property - def agent_info(self) -> global___AgentInfo: + @_builtins.property + def agent_info(self) -> Global___AgentInfo: """Details about the RDK (os, version) are updated during this request.""" - def __init__(self, *, id: builtins.str=..., agent_info: global___AgentInfo | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., agent_info: Global___AgentInfo | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_agent_info', b'_agent_info', 'agent_info', b'agent_info'] - def HasField(self, field_name: typing.Literal['_agent_info', b'_agent_info', 'agent_info', b'agent_info']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_agent_info', b'_agent_info', 'agent_info', b'agent_info', 'id', b'id'] - def ClearField(self, field_name: typing.Literal['_agent_info', b'_agent_info', 'agent_info', b'agent_info', 'id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__agent_info: _TypeAlias = _typing.Literal['agent_info'] + _WhichOneofArgType__agent_info: _TypeAlias = _typing.Literal['_agent_info', b'_agent_info'] - def WhichOneof(self, oneof_group: typing.Literal['_agent_info', b'_agent_info']) -> typing.Literal['agent_info'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__agent_info) -> _WhichOneofReturnType__agent_info | None: ... -global___ConfigRequest = ConfigRequest +Global___ConfigRequest: _TypeAlias = ConfigRequest -@typing.final -class ConfigResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CONFIG_FIELD_NUMBER: builtins.int +@_typing.final +class ConfigResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CONFIG_FIELD_NUMBER: _builtins.int - @property - def config(self) -> global___RobotConfig: + @_builtins.property + def config(self) -> Global___RobotConfig: ... - def __init__(self, *, config: global___RobotConfig | None=...) -> None: + def __init__(self, *, config: Global___RobotConfig | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['config', b'config'] - def HasField(self, field_name: typing.Literal['config', b'config']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['config', b'config'] - def ClearField(self, field_name: typing.Literal['config', b'config']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ConfigResponse = ConfigResponse +Global___ConfigResponse: _TypeAlias = ConfigResponse -@typing.final -class CertificateRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class CertificateRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str 'Robot part id.' - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CertificateRequest = CertificateRequest +Global___CertificateRequest: _TypeAlias = CertificateRequest -@typing.final -class CertificateResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - TLS_CERTIFICATE_FIELD_NUMBER: builtins.int - TLS_PRIVATE_KEY_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class CertificateResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + TLS_CERTIFICATE_FIELD_NUMBER: _builtins.int + TLS_PRIVATE_KEY_FIELD_NUMBER: _builtins.int + id: _builtins.str 'Robot part id.' - tls_certificate: builtins.str - tls_private_key: builtins.str + tls_certificate: _builtins.str + tls_private_key: _builtins.str - def __init__(self, *, id: builtins.str=..., tls_certificate: builtins.str=..., tls_private_key: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., tls_certificate: _builtins.str=..., tls_private_key: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'tls_certificate', b'tls_certificate', 'tls_private_key', b'tls_private_key'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'tls_certificate', b'tls_certificate', 'tls_private_key', b'tls_private_key']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CertificateResponse = CertificateResponse +Global___CertificateResponse: _TypeAlias = CertificateResponse -@typing.final -class LogRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - LOGS_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class LogRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + LOGS_FIELD_NUMBER: _builtins.int + id: _builtins.str 'Robot part id.' - @property - def logs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.LogEntry]: + @_builtins.property + def logs(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.LogEntry]: ... - def __init__(self, *, id: builtins.str=..., logs: collections.abc.Iterable[common.v1.common_pb2.LogEntry] | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., logs: _abc.Iterable[_common_pb2.LogEntry] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'logs', b'logs'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'logs', b'logs']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___LogRequest = LogRequest +Global___LogRequest: _TypeAlias = LogRequest -@typing.final -class LogResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class LogResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___LogResponse = LogResponse +Global___LogResponse: _TypeAlias = LogResponse -@typing.final -class NeedsRestartRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class NeedsRestartRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str 'Robot part id.' - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___NeedsRestartRequest = NeedsRestartRequest +Global___NeedsRestartRequest: _TypeAlias = NeedsRestartRequest -@typing.final -class NeedsRestartResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - MUST_RESTART_FIELD_NUMBER: builtins.int - RESTART_CHECK_INTERVAL_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class NeedsRestartResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + MUST_RESTART_FIELD_NUMBER: _builtins.int + RESTART_CHECK_INTERVAL_FIELD_NUMBER: _builtins.int + id: _builtins.str 'Robot part id.' - must_restart: builtins.bool + must_restart: _builtins.bool - @property - def restart_check_interval(self) -> google.protobuf.duration_pb2.Duration: + @_builtins.property + def restart_check_interval(self) -> _duration_pb2.Duration: ... - def __init__(self, *, id: builtins.str=..., must_restart: builtins.bool=..., restart_check_interval: google.protobuf.duration_pb2.Duration | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., must_restart: _builtins.bool=..., restart_check_interval: _duration_pb2.Duration | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['restart_check_interval', b'restart_check_interval'] - def HasField(self, field_name: typing.Literal['restart_check_interval', b'restart_check_interval']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'must_restart', b'must_restart', 'restart_check_interval', b'restart_check_interval'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'must_restart', b'must_restart', 'restart_check_interval', b'restart_check_interval']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___NeedsRestartResponse = NeedsRestartResponse +Global___NeedsRestartResponse: _TypeAlias = NeedsRestartResponse -@typing.final -class ModuleConfig(google.protobuf.message.Message): +@_typing.final +class ModuleConfig(_message.Message): """ModuleConfig is the configuration for a module.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class EnvEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str - value: builtins.str + @_typing.final + class EnvEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str - def __init__(self, *, key: builtins.str=..., value: builtins.str=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - NAME_FIELD_NUMBER: builtins.int - PATH_FIELD_NUMBER: builtins.int - LOG_LEVEL_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - MODULE_ID_FIELD_NUMBER: builtins.int - ENV_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - FIRST_RUN_TIMEOUT_FIELD_NUMBER: builtins.int - TCP_MODE_FIELD_NUMBER: builtins.int - name: builtins.str - path: builtins.str + NAME_FIELD_NUMBER: _builtins.int + PATH_FIELD_NUMBER: _builtins.int + LOG_LEVEL_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + MODULE_ID_FIELD_NUMBER: _builtins.int + ENV_FIELD_NUMBER: _builtins.int + STATUS_FIELD_NUMBER: _builtins.int + FIRST_RUN_TIMEOUT_FIELD_NUMBER: _builtins.int + TCP_MODE_FIELD_NUMBER: _builtins.int + name: _builtins.str + path: _builtins.str 'path to the executable' - log_level: builtins.str + log_level: _builtins.str 'log level for module' - type: builtins.str + type: _builtins.str 'type of the module ("local" or "registry")' - module_id: builtins.str + module_id: _builtins.str 'the id of the module if it is a registry module' - tcp_mode: builtins.bool + tcp_mode: _builtins.bool 'whether we are starting a module in TCP mode' - @property - def env(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + @_builtins.property + def env(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: """additional environment variables passed to the module process""" - @property - def status(self) -> global___AppValidationStatus: + @_builtins.property + def status(self) -> Global___AppValidationStatus: """info about the validity of the module""" - @property - def first_run_timeout(self) -> google.protobuf.duration_pb2.Duration: + @_builtins.property + def first_run_timeout(self) -> _duration_pb2.Duration: """timeout for first_run script""" - def __init__(self, *, name: builtins.str=..., path: builtins.str=..., log_level: builtins.str=..., type: builtins.str=..., module_id: builtins.str=..., env: collections.abc.Mapping[builtins.str, builtins.str] | None=..., status: global___AppValidationStatus | None=..., first_run_timeout: google.protobuf.duration_pb2.Duration | None=..., tcp_mode: builtins.bool=...) -> None: + def __init__(self, *, name: _builtins.str=..., path: _builtins.str=..., log_level: _builtins.str=..., type: _builtins.str=..., module_id: _builtins.str=..., env: _abc.Mapping[_builtins.str, _builtins.str] | None=..., status: Global___AppValidationStatus | None=..., first_run_timeout: _duration_pb2.Duration | None=..., tcp_mode: _builtins.bool=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['first_run_timeout', b'first_run_timeout', 'status', b'status'] - def HasField(self, field_name: typing.Literal['first_run_timeout', b'first_run_timeout', 'status', b'status']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['env', b'env', 'first_run_timeout', b'first_run_timeout', 'log_level', b'log_level', 'module_id', b'module_id', 'name', b'name', 'path', b'path', 'status', b'status', 'tcp_mode', b'tcp_mode', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['env', b'env', 'first_run_timeout', b'first_run_timeout', 'log_level', b'log_level', 'module_id', b'module_id', 'name', b'name', 'path', b'path', 'status', b'status', 'tcp_mode', b'tcp_mode', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ModuleConfig = ModuleConfig +Global___ModuleConfig: _TypeAlias = ModuleConfig -@typing.final -class PackageConfig(google.protobuf.message.Message): +@_typing.final +class PackageConfig(_message.Message): """PackageConfig is the configration for deployed Packages.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - PACKAGE_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + PACKAGE_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + STATUS_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name is the local name of the package on the RDK. Must be unique across Packages. Must not be empty.' - package: builtins.str + package: _builtins.str 'Package is the unique package name hosted by Viam. Must not be empty.' - version: builtins.str + version: _builtins.str 'version of the package ID hosted by Viam. If not specified "latest" is assumed.' - type: builtins.str + type: _builtins.str 'type of the package' - @property - def status(self) -> global___AppValidationStatus: + @_builtins.property + def status(self) -> Global___AppValidationStatus: """info about the validity of the package""" - def __init__(self, *, name: builtins.str=..., package: builtins.str=..., version: builtins.str=..., type: builtins.str=..., status: global___AppValidationStatus | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., package: _builtins.str=..., version: _builtins.str=..., type: _builtins.str=..., status: Global___AppValidationStatus | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['status', b'status'] - def HasField(self, field_name: typing.Literal['status', b'status']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'package', b'package', 'status', b'status', 'type', b'type', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['name', b'name', 'package', b'package', 'status', b'status', 'type', b'type', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PackageConfig = PackageConfig +Global___PackageConfig: _TypeAlias = PackageConfig -@typing.final -class MaintenanceConfig(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SENSOR_NAME_FIELD_NUMBER: builtins.int - MAINTENANCE_ALLOWED_KEY_FIELD_NUMBER: builtins.int - maintenance_allowed_key: builtins.str +@_typing.final +class MaintenanceConfig(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SENSOR_NAME_FIELD_NUMBER: _builtins.int + MAINTENANCE_ALLOWED_KEY_FIELD_NUMBER: _builtins.int + maintenance_allowed_key: _builtins.str - @property - def sensor_name(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + def sensor_name(self) -> _common_pb2.ResourceName: ... - def __init__(self, *, sensor_name: common.v1.common_pb2.ResourceName | None=..., maintenance_allowed_key: builtins.str=...) -> None: + def __init__(self, *, sensor_name: _common_pb2.ResourceName | None=..., maintenance_allowed_key: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['sensor_name', b'sensor_name'] - def HasField(self, field_name: typing.Literal['sensor_name', b'sensor_name']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['maintenance_allowed_key', b'maintenance_allowed_key', 'sensor_name', b'sensor_name'] - def ClearField(self, field_name: typing.Literal['maintenance_allowed_key', b'maintenance_allowed_key', 'sensor_name', b'sensor_name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MaintenanceConfig = MaintenanceConfig \ No newline at end of file +Global___MaintenanceConfig: _TypeAlias = MaintenanceConfig \ No newline at end of file diff --git a/src/viam/gen/common/v1/common_pb2.py b/src/viam/gen/common/v1/common_pb2.py index 6d22835067..8c1e07394e 100644 --- a/src/viam/gen/common/v1/common_pb2.py +++ b/src/viam/gen/common/v1/common_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'common/v1/common.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'common/v1/common.proto') _sym_db = _symbol_database.Default() from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 diff --git a/src/viam/gen/common/v1/common_pb2.pyi b/src/viam/gen/common/v1/common_pb2.pyi index ae38af6607..d7b1dbfdb8 100644 --- a/src/viam/gen/common/v1/common_pb2.pyi +++ b/src/viam/gen/common/v1/common_pb2.pyi @@ -2,30 +2,30 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file The following is a list of messages that are used across multiple resource subtypes""" -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.descriptor_pb2 -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.internal.extension_dict -import google.protobuf.message -import google.protobuf.struct_pb2 -import google.protobuf.timestamp_pb2 +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pb2 as _descriptor_pb2 +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf.internal import extension_dict as _extension_dict +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor class _KinematicsFileFormat: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _KinematicsFileFormatEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_KinematicsFileFormat.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _KinematicsFileFormatEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_KinematicsFileFormat.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor KINEMATICS_FILE_FORMAT_UNSPECIFIED: _KinematicsFileFormat.ValueType KINEMATICS_FILE_FORMAT_SVA: _KinematicsFileFormat.ValueType KINEMATICS_FILE_FORMAT_URDF: _KinematicsFileFormat.ValueType @@ -35,29 +35,30 @@ class KinematicsFileFormat(_KinematicsFileFormat, metaclass=_KinematicsFileForma KINEMATICS_FILE_FORMAT_UNSPECIFIED: KinematicsFileFormat.ValueType KINEMATICS_FILE_FORMAT_SVA: KinematicsFileFormat.ValueType KINEMATICS_FILE_FORMAT_URDF: KinematicsFileFormat.ValueType -global___KinematicsFileFormat = KinematicsFileFormat +Global___KinematicsFileFormat: _TypeAlias = KinematicsFileFormat -@typing.final -class ResourceName(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAMESPACE_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - SUBTYPE_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - namespace: builtins.str - type: builtins.str - subtype: builtins.str - name: builtins.str +@_typing.final +class ResourceName(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAMESPACE_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + SUBTYPE_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + namespace: _builtins.str + type: _builtins.str + subtype: _builtins.str + name: _builtins.str - def __init__(self, *, namespace: builtins.str=..., type: builtins.str=..., subtype: builtins.str=..., name: builtins.str=...) -> None: + def __init__(self, *, namespace: _builtins.str=..., type: _builtins.str=..., subtype: _builtins.str=..., name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'namespace', b'namespace', 'subtype', b'subtype', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['name', b'name', 'namespace', b'namespace', 'subtype', b'subtype', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ResourceName = ResourceName +Global___ResourceName: _TypeAlias = ResourceName -@typing.final -class Pose(google.protobuf.message.Message): +@_typing.final +class Pose(_message.Message): """Pose is a combination of location and orientation. Location is expressed as distance which is represented by x , y, z coordinates. Orientation is expressed as an orientation vector which is represented by o_x, o_y, o_z and theta. The o_x, o_y, o_z coordinates represent the point on the cartesian unit sphere that the end of @@ -67,793 +68,854 @@ class Pose(google.protobuf.message.Message): second being defined by the origin, the rx, ry, rz point and the local Z axis. Therefore, if theta is kept at zero as the north/south pole is circled, the Roll will correct itself to remain in-line. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - X_FIELD_NUMBER: builtins.int - Y_FIELD_NUMBER: builtins.int - Z_FIELD_NUMBER: builtins.int - O_X_FIELD_NUMBER: builtins.int - O_Y_FIELD_NUMBER: builtins.int - O_Z_FIELD_NUMBER: builtins.int - THETA_FIELD_NUMBER: builtins.int - x: builtins.float + DESCRIPTOR: _descriptor.Descriptor + X_FIELD_NUMBER: _builtins.int + Y_FIELD_NUMBER: _builtins.int + Z_FIELD_NUMBER: _builtins.int + O_X_FIELD_NUMBER: _builtins.int + O_Y_FIELD_NUMBER: _builtins.int + O_Z_FIELD_NUMBER: _builtins.int + THETA_FIELD_NUMBER: _builtins.int + x: _builtins.float 'millimeters from the origin' - y: builtins.float + y: _builtins.float 'millimeters from the origin' - z: builtins.float + z: _builtins.float 'millimeters from the origin' - o_x: builtins.float + o_x: _builtins.float 'z component of a vector defining axis of rotation' - o_y: builtins.float + o_y: _builtins.float 'x component of a vector defining axis of rotation' - o_z: builtins.float + o_z: _builtins.float 'y component of a vector defining axis of rotation' - theta: builtins.float + theta: _builtins.float 'degrees' - def __init__(self, *, x: builtins.float=..., y: builtins.float=..., z: builtins.float=..., o_x: builtins.float=..., o_y: builtins.float=..., o_z: builtins.float=..., theta: builtins.float=...) -> None: + def __init__(self, *, x: _builtins.float=..., y: _builtins.float=..., z: _builtins.float=..., o_x: _builtins.float=..., o_y: _builtins.float=..., o_z: _builtins.float=..., theta: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['o_x', b'o_x', 'o_y', b'o_y', 'o_z', b'o_z', 'theta', b'theta', 'x', b'x', 'y', b'y', 'z', b'z'] - def ClearField(self, field_name: typing.Literal['o_x', b'o_x', 'o_y', b'o_y', 'o_z', b'o_z', 'theta', b'theta', 'x', b'x', 'y', b'y', 'z', b'z']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Pose = Pose +Global___Pose: _TypeAlias = Pose -@typing.final -class Orientation(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - O_X_FIELD_NUMBER: builtins.int - O_Y_FIELD_NUMBER: builtins.int - O_Z_FIELD_NUMBER: builtins.int - THETA_FIELD_NUMBER: builtins.int - o_x: builtins.float +@_typing.final +class Orientation(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + O_X_FIELD_NUMBER: _builtins.int + O_Y_FIELD_NUMBER: _builtins.int + O_Z_FIELD_NUMBER: _builtins.int + THETA_FIELD_NUMBER: _builtins.int + o_x: _builtins.float 'x component of a vector defining axis of rotation' - o_y: builtins.float + o_y: _builtins.float 'y component of a vector defining axis of rotation' - o_z: builtins.float + o_z: _builtins.float 'z component of a vector defining axis of rotation' - theta: builtins.float + theta: _builtins.float 'degrees' - def __init__(self, *, o_x: builtins.float=..., o_y: builtins.float=..., o_z: builtins.float=..., theta: builtins.float=...) -> None: + def __init__(self, *, o_x: _builtins.float=..., o_y: _builtins.float=..., o_z: _builtins.float=..., theta: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['o_x', b'o_x', 'o_y', b'o_y', 'o_z', b'o_z', 'theta', b'theta'] - def ClearField(self, field_name: typing.Literal['o_x', b'o_x', 'o_y', b'o_y', 'o_z', b'o_z', 'theta', b'theta']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Orientation = Orientation +Global___Orientation: _TypeAlias = Orientation -@typing.final -class PoseInFrame(google.protobuf.message.Message): +@_typing.final +class PoseInFrame(_message.Message): """PoseInFrame contains a pose and the reference frame in which it was observed""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - REFERENCE_FRAME_FIELD_NUMBER: builtins.int - POSE_FIELD_NUMBER: builtins.int - reference_frame: builtins.str + DESCRIPTOR: _descriptor.Descriptor + REFERENCE_FRAME_FIELD_NUMBER: _builtins.int + POSE_FIELD_NUMBER: _builtins.int + reference_frame: _builtins.str - @property - def pose(self) -> global___Pose: + @_builtins.property + def pose(self) -> Global___Pose: ... - def __init__(self, *, reference_frame: builtins.str=..., pose: global___Pose | None=...) -> None: + def __init__(self, *, reference_frame: _builtins.str=..., pose: Global___Pose | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['pose', b'pose'] - def HasField(self, field_name: typing.Literal['pose', b'pose']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['pose', b'pose', 'reference_frame', b'reference_frame'] - def ClearField(self, field_name: typing.Literal['pose', b'pose', 'reference_frame', b'reference_frame']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PoseInFrame = PoseInFrame +Global___PoseInFrame: _TypeAlias = PoseInFrame -@typing.final -class Vector3(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - X_FIELD_NUMBER: builtins.int - Y_FIELD_NUMBER: builtins.int - Z_FIELD_NUMBER: builtins.int - x: builtins.float - y: builtins.float - z: builtins.float +@_typing.final +class Vector3(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + X_FIELD_NUMBER: _builtins.int + Y_FIELD_NUMBER: _builtins.int + Z_FIELD_NUMBER: _builtins.int + x: _builtins.float + y: _builtins.float + z: _builtins.float - def __init__(self, *, x: builtins.float=..., y: builtins.float=..., z: builtins.float=...) -> None: + def __init__(self, *, x: _builtins.float=..., y: _builtins.float=..., z: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['x', b'x', 'y', b'y', 'z', b'z'] - def ClearField(self, field_name: typing.Literal['x', b'x', 'y', b'y', 'z', b'z']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Vector3 = Vector3 +Global___Vector3: _TypeAlias = Vector3 -@typing.final -class Sphere(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RADIUS_MM_FIELD_NUMBER: builtins.int - radius_mm: builtins.float +@_typing.final +class Sphere(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + RADIUS_MM_FIELD_NUMBER: _builtins.int + radius_mm: _builtins.float - def __init__(self, *, radius_mm: builtins.float=...) -> None: + def __init__(self, *, radius_mm: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['radius_mm', b'radius_mm'] - def ClearField(self, field_name: typing.Literal['radius_mm', b'radius_mm']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Sphere = Sphere +Global___Sphere: _TypeAlias = Sphere -@typing.final -class Capsule(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RADIUS_MM_FIELD_NUMBER: builtins.int - LENGTH_MM_FIELD_NUMBER: builtins.int - radius_mm: builtins.float - length_mm: builtins.float +@_typing.final +class Capsule(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + RADIUS_MM_FIELD_NUMBER: _builtins.int + LENGTH_MM_FIELD_NUMBER: _builtins.int + radius_mm: _builtins.float + length_mm: _builtins.float - def __init__(self, *, radius_mm: builtins.float=..., length_mm: builtins.float=...) -> None: + def __init__(self, *, radius_mm: _builtins.float=..., length_mm: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['length_mm', b'length_mm', 'radius_mm', b'radius_mm'] - def ClearField(self, field_name: typing.Literal['length_mm', b'length_mm', 'radius_mm', b'radius_mm']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Capsule = Capsule +Global___Capsule: _TypeAlias = Capsule -@typing.final -class RectangularPrism(google.protobuf.message.Message): +@_typing.final +class RectangularPrism(_message.Message): """RectangularPrism contains a Vector3 field corresponding to the X, Y, Z dimensions of the prism in mms These dimensions are with respect to the referenceframe in which the RectangularPrism is defined """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DIMS_MM_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + DIMS_MM_FIELD_NUMBER: _builtins.int - @property - def dims_mm(self) -> global___Vector3: + @_builtins.property + def dims_mm(self) -> Global___Vector3: ... - def __init__(self, *, dims_mm: global___Vector3 | None=...) -> None: + def __init__(self, *, dims_mm: Global___Vector3 | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['dims_mm', b'dims_mm'] - def HasField(self, field_name: typing.Literal['dims_mm', b'dims_mm']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['dims_mm', b'dims_mm'] - def ClearField(self, field_name: typing.Literal['dims_mm', b'dims_mm']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RectangularPrism = RectangularPrism +Global___RectangularPrism: _TypeAlias = RectangularPrism -@typing.final -class Mesh(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CONTENT_TYPE_FIELD_NUMBER: builtins.int - MESH_FIELD_NUMBER: builtins.int - content_type: builtins.str +@_typing.final +class Mesh(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CONTENT_TYPE_FIELD_NUMBER: _builtins.int + MESH_FIELD_NUMBER: _builtins.int + content_type: _builtins.str 'Content type of mesh (e.g. ply)' - mesh: builtins.bytes + mesh: _builtins.bytes 'Contents of mesh data in binary form defined by content_type' - def __init__(self, *, content_type: builtins.str=..., mesh: builtins.bytes=...) -> None: + def __init__(self, *, content_type: _builtins.str=..., mesh: _builtins.bytes=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['content_type', b'content_type', 'mesh', b'mesh'] - def ClearField(self, field_name: typing.Literal['content_type', b'content_type', 'mesh', b'mesh']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Mesh = Mesh +Global___Mesh: _TypeAlias = Mesh -@typing.final -class PointCloud(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POINT_CLOUD_FIELD_NUMBER: builtins.int - point_cloud: builtins.bytes +@_typing.final +class PointCloud(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POINT_CLOUD_FIELD_NUMBER: _builtins.int + point_cloud: _builtins.bytes - def __init__(self, *, point_cloud: builtins.bytes=...) -> None: + def __init__(self, *, point_cloud: _builtins.bytes=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['point_cloud', b'point_cloud'] - def ClearField(self, field_name: typing.Literal['point_cloud', b'point_cloud']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PointCloud = PointCloud +Global___PointCloud: _TypeAlias = PointCloud -@typing.final -class Geometry(google.protobuf.message.Message): +@_typing.final +class Geometry(_message.Message): """Geometry contains the dimensions of a given geometry and the pose of its center. The geometry is one of either a sphere or a box.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CENTER_FIELD_NUMBER: builtins.int - SPHERE_FIELD_NUMBER: builtins.int - BOX_FIELD_NUMBER: builtins.int - CAPSULE_FIELD_NUMBER: builtins.int - MESH_FIELD_NUMBER: builtins.int - POINTCLOUD_FIELD_NUMBER: builtins.int - LABEL_FIELD_NUMBER: builtins.int - label: builtins.str + DESCRIPTOR: _descriptor.Descriptor + CENTER_FIELD_NUMBER: _builtins.int + SPHERE_FIELD_NUMBER: _builtins.int + BOX_FIELD_NUMBER: _builtins.int + CAPSULE_FIELD_NUMBER: _builtins.int + MESH_FIELD_NUMBER: _builtins.int + POINTCLOUD_FIELD_NUMBER: _builtins.int + LABEL_FIELD_NUMBER: _builtins.int + label: _builtins.str 'Label of the geometry. If none supplied, will be an empty string.' - @property - def center(self) -> global___Pose: + @_builtins.property + def center(self) -> Global___Pose: """Pose of a geometries center point""" - @property - def sphere(self) -> global___Sphere: + @_builtins.property + def sphere(self) -> Global___Sphere: ... - @property - def box(self) -> global___RectangularPrism: + @_builtins.property + def box(self) -> Global___RectangularPrism: ... - @property - def capsule(self) -> global___Capsule: + @_builtins.property + def capsule(self) -> Global___Capsule: ... - @property - def mesh(self) -> global___Mesh: + @_builtins.property + def mesh(self) -> Global___Mesh: ... - @property - def pointcloud(self) -> global___PointCloud: + @_builtins.property + def pointcloud(self) -> Global___PointCloud: ... - def __init__(self, *, center: global___Pose | None=..., sphere: global___Sphere | None=..., box: global___RectangularPrism | None=..., capsule: global___Capsule | None=..., mesh: global___Mesh | None=..., pointcloud: global___PointCloud | None=..., label: builtins.str=...) -> None: + def __init__(self, *, center: Global___Pose | None=..., sphere: Global___Sphere | None=..., box: Global___RectangularPrism | None=..., capsule: Global___Capsule | None=..., mesh: Global___Mesh | None=..., pointcloud: Global___PointCloud | None=..., label: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['box', b'box', 'capsule', b'capsule', 'center', b'center', 'geometry_type', b'geometry_type', 'mesh', b'mesh', 'pointcloud', b'pointcloud', 'sphere', b'sphere'] - def HasField(self, field_name: typing.Literal['box', b'box', 'capsule', b'capsule', 'center', b'center', 'geometry_type', b'geometry_type', 'mesh', b'mesh', 'pointcloud', b'pointcloud', 'sphere', b'sphere']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['box', b'box', 'capsule', b'capsule', 'center', b'center', 'geometry_type', b'geometry_type', 'label', b'label', 'mesh', b'mesh', 'pointcloud', b'pointcloud', 'sphere', b'sphere'] - def ClearField(self, field_name: typing.Literal['box', b'box', 'capsule', b'capsule', 'center', b'center', 'geometry_type', b'geometry_type', 'label', b'label', 'mesh', b'mesh', 'pointcloud', b'pointcloud', 'sphere', b'sphere']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_geometry_type: _TypeAlias = _typing.Literal['sphere', 'box', 'capsule', 'mesh', 'pointcloud'] + _WhichOneofArgType_geometry_type: _TypeAlias = _typing.Literal['geometry_type', b'geometry_type'] - def WhichOneof(self, oneof_group: typing.Literal['geometry_type', b'geometry_type']) -> typing.Literal['sphere', 'box', 'capsule', 'mesh', 'pointcloud'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_geometry_type) -> _WhichOneofReturnType_geometry_type | None: ... -global___Geometry = Geometry +Global___Geometry: _TypeAlias = Geometry -@typing.final -class GeometriesInFrame(google.protobuf.message.Message): +@_typing.final +class GeometriesInFrame(_message.Message): """GeometriesinFrame contains the dimensions of a given geometry, pose of its center point, and the reference frame by which it was observed. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - REFERENCE_FRAME_FIELD_NUMBER: builtins.int - GEOMETRIES_FIELD_NUMBER: builtins.int - reference_frame: builtins.str + DESCRIPTOR: _descriptor.Descriptor + REFERENCE_FRAME_FIELD_NUMBER: _builtins.int + GEOMETRIES_FIELD_NUMBER: _builtins.int + reference_frame: _builtins.str 'Reference frame of the observer of the geometry' - @property - def geometries(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Geometry]: + @_builtins.property + def geometries(self) -> _containers.RepeatedCompositeFieldContainer[Global___Geometry]: """Dimensional type""" - def __init__(self, *, reference_frame: builtins.str=..., geometries: collections.abc.Iterable[global___Geometry] | None=...) -> None: + def __init__(self, *, reference_frame: _builtins.str=..., geometries: _abc.Iterable[Global___Geometry] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['geometries', b'geometries', 'reference_frame', b'reference_frame'] - def ClearField(self, field_name: typing.Literal['geometries', b'geometries', 'reference_frame', b'reference_frame']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GeometriesInFrame = GeometriesInFrame +Global___GeometriesInFrame: _TypeAlias = GeometriesInFrame -@typing.final -class PointCloudObject(google.protobuf.message.Message): +@_typing.final +class PointCloudObject(_message.Message): """PointCloudObject contains an image in bytes with point cloud data of all of the objects captured by a given observer as well as a repeated list of geometries which respresents the center point and geometry of each of the objects within the point cloud """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POINT_CLOUD_FIELD_NUMBER: builtins.int - GEOMETRIES_FIELD_NUMBER: builtins.int - point_cloud: builtins.bytes + DESCRIPTOR: _descriptor.Descriptor + POINT_CLOUD_FIELD_NUMBER: _builtins.int + GEOMETRIES_FIELD_NUMBER: _builtins.int + point_cloud: _builtins.bytes 'image frame expressed in bytes' - @property - def geometries(self) -> global___GeometriesInFrame: + @_builtins.property + def geometries(self) -> Global___GeometriesInFrame: """volume of a given geometry""" - def __init__(self, *, point_cloud: builtins.bytes=..., geometries: global___GeometriesInFrame | None=...) -> None: + def __init__(self, *, point_cloud: _builtins.bytes=..., geometries: Global___GeometriesInFrame | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['geometries', b'geometries'] - def HasField(self, field_name: typing.Literal['geometries', b'geometries']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['geometries', b'geometries', 'point_cloud', b'point_cloud'] - def ClearField(self, field_name: typing.Literal['geometries', b'geometries', 'point_cloud', b'point_cloud']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PointCloudObject = PointCloudObject +Global___PointCloudObject: _TypeAlias = PointCloudObject -@typing.final -class GeoPoint(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LATITUDE_FIELD_NUMBER: builtins.int - LONGITUDE_FIELD_NUMBER: builtins.int - latitude: builtins.float - longitude: builtins.float +@_typing.final +class GeoPoint(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LATITUDE_FIELD_NUMBER: _builtins.int + LONGITUDE_FIELD_NUMBER: _builtins.int + latitude: _builtins.float + longitude: _builtins.float - def __init__(self, *, latitude: builtins.float=..., longitude: builtins.float=...) -> None: + def __init__(self, *, latitude: _builtins.float=..., longitude: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['latitude', b'latitude', 'longitude', b'longitude'] - def ClearField(self, field_name: typing.Literal['latitude', b'latitude', 'longitude', b'longitude']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GeoPoint = GeoPoint +Global___GeoPoint: _TypeAlias = GeoPoint -@typing.final -class GeoGeometry(google.protobuf.message.Message): +@_typing.final +class GeoGeometry(_message.Message): """GeoGeometry contains information describing Geometry(s) that is located at a GeoPoint""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_FIELD_NUMBER: builtins.int - GEOMETRIES_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + LOCATION_FIELD_NUMBER: _builtins.int + GEOMETRIES_FIELD_NUMBER: _builtins.int - @property - def location(self) -> global___GeoPoint: + @_builtins.property + def location(self) -> Global___GeoPoint: """Location of the geometry""" - @property - def geometries(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Geometry]: + @_builtins.property + def geometries(self) -> _containers.RepeatedCompositeFieldContainer[Global___Geometry]: """Geometries associated with the location, where embedded Pose data is with respect to the specified location""" - def __init__(self, *, location: global___GeoPoint | None=..., geometries: collections.abc.Iterable[global___Geometry] | None=...) -> None: + def __init__(self, *, location: Global___GeoPoint | None=..., geometries: _abc.Iterable[Global___Geometry] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['location', b'location'] - def HasField(self, field_name: typing.Literal['location', b'location']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['geometries', b'geometries', 'location', b'location'] - def ClearField(self, field_name: typing.Literal['geometries', b'geometries', 'location', b'location']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GeoGeometry = GeoGeometry +Global___GeoGeometry: _TypeAlias = GeoGeometry -@typing.final -class Transform(google.protobuf.message.Message): +@_typing.final +class Transform(_message.Message): """Transform contains a pose and two reference frames. The first reference frame is the starting reference frame, and the second reference frame is the observer reference frame. The second reference frame has a pose which represents the pose of an object in the first reference frame as observed within the second reference frame. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - REFERENCE_FRAME_FIELD_NUMBER: builtins.int - POSE_IN_OBSERVER_FRAME_FIELD_NUMBER: builtins.int - PHYSICAL_OBJECT_FIELD_NUMBER: builtins.int - UUID_FIELD_NUMBER: builtins.int - METADATA_FIELD_NUMBER: builtins.int - reference_frame: builtins.str + DESCRIPTOR: _descriptor.Descriptor + REFERENCE_FRAME_FIELD_NUMBER: _builtins.int + POSE_IN_OBSERVER_FRAME_FIELD_NUMBER: _builtins.int + PHYSICAL_OBJECT_FIELD_NUMBER: _builtins.int + UUID_FIELD_NUMBER: _builtins.int + METADATA_FIELD_NUMBER: _builtins.int + reference_frame: _builtins.str 'the name of a given reference frame' - uuid: builtins.bytes + uuid: _builtins.bytes 'The UUID of the transform' - @property - def pose_in_observer_frame(self) -> global___PoseInFrame: + @_builtins.property + def pose_in_observer_frame(self) -> Global___PoseInFrame: """the pose of the above reference frame with respect to a different observer reference frame""" - @property - def physical_object(self) -> global___Geometry: + @_builtins.property + def physical_object(self) -> Global___Geometry: ... - @property - def metadata(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def metadata(self) -> _struct_pb2.Struct: """Can hold information like color, opacity, points colors, collision_allowed, etc...""" - def __init__(self, *, reference_frame: builtins.str=..., pose_in_observer_frame: global___PoseInFrame | None=..., physical_object: global___Geometry | None=..., uuid: builtins.bytes=..., metadata: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, reference_frame: _builtins.str=..., pose_in_observer_frame: Global___PoseInFrame | None=..., physical_object: Global___Geometry | None=..., uuid: _builtins.bytes=..., metadata: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_metadata', b'_metadata', '_physical_object', b'_physical_object', 'metadata', b'metadata', 'physical_object', b'physical_object', 'pose_in_observer_frame', b'pose_in_observer_frame'] - def HasField(self, field_name: typing.Literal['_metadata', b'_metadata', '_physical_object', b'_physical_object', 'metadata', b'metadata', 'physical_object', b'physical_object', 'pose_in_observer_frame', b'pose_in_observer_frame']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_metadata', b'_metadata', '_physical_object', b'_physical_object', 'metadata', b'metadata', 'physical_object', b'physical_object', 'pose_in_observer_frame', b'pose_in_observer_frame', 'reference_frame', b'reference_frame', 'uuid', b'uuid'] - def ClearField(self, field_name: typing.Literal['_metadata', b'_metadata', '_physical_object', b'_physical_object', 'metadata', b'metadata', 'physical_object', b'physical_object', 'pose_in_observer_frame', b'pose_in_observer_frame', 'reference_frame', b'reference_frame', 'uuid', b'uuid']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__metadata: _TypeAlias = _typing.Literal['metadata'] + _WhichOneofArgType__metadata: _TypeAlias = _typing.Literal['_metadata', b'_metadata'] + _WhichOneofReturnType__physical_object: _TypeAlias = _typing.Literal['physical_object'] + _WhichOneofArgType__physical_object: _TypeAlias = _typing.Literal['_physical_object', b'_physical_object'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_metadata', b'_metadata']) -> typing.Literal['metadata'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__metadata) -> _WhichOneofReturnType__metadata | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_physical_object', b'_physical_object']) -> typing.Literal['physical_object'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__physical_object) -> _WhichOneofReturnType__physical_object | None: ... -global___Transform = Transform +Global___Transform: _TypeAlias = Transform -@typing.final -class WorldState(google.protobuf.message.Message): +@_typing.final +class WorldState(_message.Message): """WorldState contains information about the physical environment around a given robot. All of the fields within this message are optional, they can include information about the physical dimensions of an obstacle, the freespace of a robot, and any desired transforms between a given reference frame and a new target reference frame. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - OBSTACLES_FIELD_NUMBER: builtins.int - TRANSFORMS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + OBSTACLES_FIELD_NUMBER: _builtins.int + TRANSFORMS_FIELD_NUMBER: _builtins.int - @property - def obstacles(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___GeometriesInFrame]: + @_builtins.property + def obstacles(self) -> _containers.RepeatedCompositeFieldContainer[Global___GeometriesInFrame]: """a list of obstacles expressed as a geometry and the reference frame in which it was observed; this field is optional""" - @property - def transforms(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Transform]: + @_builtins.property + def transforms(self) -> _containers.RepeatedCompositeFieldContainer[Global___Transform]: """a list of Transforms, optionally with geometries. Used as supplemental transforms to transform a pose from one reference frame to another, or to attach moving geometries to the frame system. This field is optional """ - def __init__(self, *, obstacles: collections.abc.Iterable[global___GeometriesInFrame] | None=..., transforms: collections.abc.Iterable[global___Transform] | None=...) -> None: + def __init__(self, *, obstacles: _abc.Iterable[Global___GeometriesInFrame] | None=..., transforms: _abc.Iterable[Global___Transform] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['obstacles', b'obstacles', 'transforms', b'transforms'] - def ClearField(self, field_name: typing.Literal['obstacles', b'obstacles', 'transforms', b'transforms']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___WorldState = WorldState +Global___WorldState: _TypeAlias = WorldState -@typing.final -class ActuatorStatus(google.protobuf.message.Message): +@_typing.final +class ActuatorStatus(_message.Message): """ActuatorStatus is a generic status for resources that only need to return actuator status.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - IS_MOVING_FIELD_NUMBER: builtins.int - is_moving: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + IS_MOVING_FIELD_NUMBER: _builtins.int + is_moving: _builtins.bool - def __init__(self, *, is_moving: builtins.bool=...) -> None: + def __init__(self, *, is_moving: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['is_moving', b'is_moving'] - def ClearField(self, field_name: typing.Literal['is_moving', b'is_moving']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ActuatorStatus = ActuatorStatus +Global___ActuatorStatus: _TypeAlias = ActuatorStatus -@typing.final -class ResponseMetadata(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CAPTURED_AT_FIELD_NUMBER: builtins.int +@_typing.final +class ResponseMetadata(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CAPTURED_AT_FIELD_NUMBER: _builtins.int - @property - def captured_at(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def captured_at(self) -> _timestamp_pb2.Timestamp: """captured_at is the time at which the resource as close as physically possible, captured the data in the response. Note: If correlating between other resources, be sure that the means of measuring the capture are similar enough such that comparison can be made between them. """ - def __init__(self, *, captured_at: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, captured_at: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_captured_at', b'_captured_at', 'captured_at', b'captured_at'] - def HasField(self, field_name: typing.Literal['_captured_at', b'_captured_at', 'captured_at', b'captured_at']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_captured_at', b'_captured_at', 'captured_at', b'captured_at'] - def ClearField(self, field_name: typing.Literal['_captured_at', b'_captured_at', 'captured_at', b'captured_at']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__captured_at: _TypeAlias = _typing.Literal['captured_at'] + _WhichOneofArgType__captured_at: _TypeAlias = _typing.Literal['_captured_at', b'_captured_at'] - def WhichOneof(self, oneof_group: typing.Literal['_captured_at', b'_captured_at']) -> typing.Literal['captured_at'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__captured_at) -> _WhichOneofReturnType__captured_at | None: ... -global___ResponseMetadata = ResponseMetadata +Global___ResponseMetadata: _TypeAlias = ResponseMetadata -@typing.final -class DoCommandRequest(google.protobuf.message.Message): +@_typing.final +class DoCommandRequest(_message.Message): """DoCommandRequest represents a generic DoCommand input""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - COMMAND_FIELD_NUMBER: builtins.int - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + COMMAND_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def command(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def command(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., command: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., command: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['command', b'command'] - def HasField(self, field_name: typing.Literal['command', b'command']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['command', b'command', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['command', b'command', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DoCommandRequest = DoCommandRequest +Global___DoCommandRequest: _TypeAlias = DoCommandRequest -@typing.final -class DoCommandResponse(google.protobuf.message.Message): +@_typing.final +class DoCommandResponse(_message.Message): """DoCommandResponse represents a generic DoCommand output""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RESULT_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + RESULT_FIELD_NUMBER: _builtins.int - @property - def result(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def result(self) -> _struct_pb2.Struct: ... - def __init__(self, *, result: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, result: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['result', b'result'] - def HasField(self, field_name: typing.Literal['result', b'result']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['result', b'result'] - def ClearField(self, field_name: typing.Literal['result', b'result']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DoCommandResponse = DoCommandResponse +Global___DoCommandResponse: _TypeAlias = DoCommandResponse -@typing.final -class GetKinematicsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetKinematicsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'The component name' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetKinematicsRequest = GetKinematicsRequest +Global___GetKinematicsRequest: _TypeAlias = GetKinematicsRequest -@typing.final -class GetKinematicsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GetKinematicsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class MeshesByUrdfFilepathEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str + @_typing.final + class MeshesByUrdfFilepathEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str - @property - def value(self) -> global___Mesh: + @_builtins.property + def value(self) -> Global___Mesh: ... - def __init__(self, *, key: builtins.str=..., value: global___Mesh | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: Global___Mesh | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def HasField(self, field_name: typing.Literal['value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - FORMAT_FIELD_NUMBER: builtins.int - KINEMATICS_DATA_FIELD_NUMBER: builtins.int - MESHES_BY_URDF_FILEPATH_FIELD_NUMBER: builtins.int - format: global___KinematicsFileFormat.ValueType + FORMAT_FIELD_NUMBER: _builtins.int + KINEMATICS_DATA_FIELD_NUMBER: _builtins.int + MESHES_BY_URDF_FILEPATH_FIELD_NUMBER: _builtins.int + format: Global___KinematicsFileFormat.ValueType 'The kinematics of the component, in either URDF format or in Viam’s kinematic parameter format (spatial vector algebra)\n https://docs.viam.com/internals/kinematic-chain-config/#kinematic-parameters\n ' - kinematics_data: builtins.bytes + kinematics_data: _builtins.bytes 'The byte contents of the file' - @property - def meshes_by_urdf_filepath(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Mesh]: + @_builtins.property + def meshes_by_urdf_filepath(self) -> _containers.MessageMap[_builtins.str, Global___Mesh]: """Map of URDF mesh file paths to mesh data""" - def __init__(self, *, format: global___KinematicsFileFormat.ValueType=..., kinematics_data: builtins.bytes=..., meshes_by_urdf_filepath: collections.abc.Mapping[builtins.str, global___Mesh] | None=...) -> None: + def __init__(self, *, format: Global___KinematicsFileFormat.ValueType=..., kinematics_data: _builtins.bytes=..., meshes_by_urdf_filepath: _abc.Mapping[_builtins.str, Global___Mesh] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['format', b'format', 'kinematics_data', b'kinematics_data', 'meshes_by_urdf_filepath', b'meshes_by_urdf_filepath'] - def ClearField(self, field_name: typing.Literal['format', b'format', 'kinematics_data', b'kinematics_data', 'meshes_by_urdf_filepath', b'meshes_by_urdf_filepath']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetKinematicsResponse = GetKinematicsResponse +Global___GetKinematicsResponse: _TypeAlias = GetKinematicsResponse -@typing.final -class GetGeometriesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetGeometriesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'The component name' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetGeometriesRequest = GetGeometriesRequest +Global___GetGeometriesRequest: _TypeAlias = GetGeometriesRequest -@typing.final -class GetGeometriesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - GEOMETRIES_FIELD_NUMBER: builtins.int +@_typing.final +class GetGeometriesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + GEOMETRIES_FIELD_NUMBER: _builtins.int - @property - def geometries(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Geometry]: + @_builtins.property + def geometries(self) -> _containers.RepeatedCompositeFieldContainer[Global___Geometry]: """All geometries associated with the component, in their current configuration, in the frame of that component.""" - def __init__(self, *, geometries: collections.abc.Iterable[global___Geometry] | None=...) -> None: + def __init__(self, *, geometries: _abc.Iterable[Global___Geometry] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['geometries', b'geometries'] - def ClearField(self, field_name: typing.Literal['geometries', b'geometries']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetGeometriesResponse = GetGeometriesResponse +Global___GetGeometriesResponse: _TypeAlias = GetGeometriesResponse -@typing.final -class Get3DModelsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class Get3DModelsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'The component name' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Get3DModelsRequest = Get3DModelsRequest +Global___Get3DModelsRequest: _TypeAlias = Get3DModelsRequest -@typing.final -class Get3DModelsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class Get3DModelsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class ModelsEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str + @_typing.final + class ModelsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str - @property - def value(self) -> global___Mesh: + @_builtins.property + def value(self) -> Global___Mesh: ... - def __init__(self, *, key: builtins.str=..., value: global___Mesh | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: Global___Mesh | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def HasField(self, field_name: typing.Literal['value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - MODELS_FIELD_NUMBER: builtins.int + MODELS_FIELD_NUMBER: _builtins.int - @property - def models(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Mesh]: + @_builtins.property + def models(self) -> _containers.MessageMap[_builtins.str, Global___Mesh]: """the 3D models associated with the component""" - def __init__(self, *, models: collections.abc.Mapping[builtins.str, global___Mesh] | None=...) -> None: + def __init__(self, *, models: _abc.Mapping[_builtins.str, Global___Mesh] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['models', b'models'] - def ClearField(self, field_name: typing.Literal['models', b'models']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Get3DModelsResponse = Get3DModelsResponse +Global___Get3DModelsResponse: _TypeAlias = Get3DModelsResponse -@typing.final -class GetReadingsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetReadingsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a sensor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetReadingsRequest = GetReadingsRequest +Global___GetReadingsRequest: _TypeAlias = GetReadingsRequest -@typing.final -class GetReadingsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GetReadingsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class ReadingsEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str + @_typing.final + class ReadingsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str - @property - def value(self) -> google.protobuf.struct_pb2.Value: + @_builtins.property + def value(self) -> _struct_pb2.Value: ... - def __init__(self, *, key: builtins.str=..., value: google.protobuf.struct_pb2.Value | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _struct_pb2.Value | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def HasField(self, field_name: typing.Literal['value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - READINGS_FIELD_NUMBER: builtins.int + READINGS_FIELD_NUMBER: _builtins.int - @property - def readings(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, google.protobuf.struct_pb2.Value]: + @_builtins.property + def readings(self) -> _containers.MessageMap[_builtins.str, _struct_pb2.Value]: ... - def __init__(self, *, readings: collections.abc.Mapping[builtins.str, google.protobuf.struct_pb2.Value] | None=...) -> None: + def __init__(self, *, readings: _abc.Mapping[_builtins.str, _struct_pb2.Value] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['readings', b'readings'] - def ClearField(self, field_name: typing.Literal['readings', b'readings']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetReadingsResponse = GetReadingsResponse +Global___GetReadingsResponse: _TypeAlias = GetReadingsResponse -@typing.final -class LogEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - HOST_FIELD_NUMBER: builtins.int - LEVEL_FIELD_NUMBER: builtins.int - TIME_FIELD_NUMBER: builtins.int - LOGGER_NAME_FIELD_NUMBER: builtins.int - MESSAGE_FIELD_NUMBER: builtins.int - CALLER_FIELD_NUMBER: builtins.int - STACK_FIELD_NUMBER: builtins.int - FIELDS_FIELD_NUMBER: builtins.int - host: builtins.str - level: builtins.str - logger_name: builtins.str - message: builtins.str - stack: builtins.str +@_typing.final +class LogEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + HOST_FIELD_NUMBER: _builtins.int + LEVEL_FIELD_NUMBER: _builtins.int + TIME_FIELD_NUMBER: _builtins.int + LOGGER_NAME_FIELD_NUMBER: _builtins.int + MESSAGE_FIELD_NUMBER: _builtins.int + CALLER_FIELD_NUMBER: _builtins.int + STACK_FIELD_NUMBER: _builtins.int + FIELDS_FIELD_NUMBER: _builtins.int + host: _builtins.str + level: _builtins.str + logger_name: _builtins.str + message: _builtins.str + stack: _builtins.str - @property - def time(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time(self) -> _timestamp_pb2.Timestamp: ... - @property - def caller(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def caller(self) -> _struct_pb2.Struct: ... - @property - def fields(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[google.protobuf.struct_pb2.Struct]: + @_builtins.property + def fields(self) -> _containers.RepeatedCompositeFieldContainer[_struct_pb2.Struct]: ... - def __init__(self, *, host: builtins.str=..., level: builtins.str=..., time: google.protobuf.timestamp_pb2.Timestamp | None=..., logger_name: builtins.str=..., message: builtins.str=..., caller: google.protobuf.struct_pb2.Struct | None=..., stack: builtins.str=..., fields: collections.abc.Iterable[google.protobuf.struct_pb2.Struct] | None=...) -> None: + def __init__(self, *, host: _builtins.str=..., level: _builtins.str=..., time: _timestamp_pb2.Timestamp | None=..., logger_name: _builtins.str=..., message: _builtins.str=..., caller: _struct_pb2.Struct | None=..., stack: _builtins.str=..., fields: _abc.Iterable[_struct_pb2.Struct] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['caller', b'caller', 'time', b'time'] - def HasField(self, field_name: typing.Literal['caller', b'caller', 'time', b'time']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['caller', b'caller', 'fields', b'fields', 'host', b'host', 'level', b'level', 'logger_name', b'logger_name', 'message', b'message', 'stack', b'stack', 'time', b'time'] - def ClearField(self, field_name: typing.Literal['caller', b'caller', 'fields', b'fields', 'host', b'host', 'level', b'level', 'logger_name', b'logger_name', 'message', b'message', 'stack', b'stack', 'time', b'time']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___LogEntry = LogEntry +Global___LogEntry: _TypeAlias = LogEntry -@typing.final -class AudioInfo(google.protobuf.message.Message): +@_typing.final +class AudioInfo(_message.Message): """Information about an audio stream or device.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CODEC_FIELD_NUMBER: builtins.int - SAMPLE_RATE_HZ_FIELD_NUMBER: builtins.int - NUM_CHANNELS_FIELD_NUMBER: builtins.int - codec: builtins.str + DESCRIPTOR: _descriptor.Descriptor + CODEC_FIELD_NUMBER: _builtins.int + SAMPLE_RATE_HZ_FIELD_NUMBER: _builtins.int + NUM_CHANNELS_FIELD_NUMBER: _builtins.int + codec: _builtins.str 'Audio codec used for the stream or device (e.g., "pcm16", "pcm32float", "mp3")' - sample_rate_hz: builtins.int + sample_rate_hz: _builtins.int 'Sample rate of the audio in Hz' - num_channels: builtins.int + num_channels: _builtins.int 'Number of audio channels in the recording or playback' - def __init__(self, *, codec: builtins.str=..., sample_rate_hz: builtins.int=..., num_channels: builtins.int=...) -> None: + def __init__(self, *, codec: _builtins.str=..., sample_rate_hz: _builtins.int=..., num_channels: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['codec', b'codec', 'num_channels', b'num_channels', 'sample_rate_hz', b'sample_rate_hz'] - def ClearField(self, field_name: typing.Literal['codec', b'codec', 'num_channels', b'num_channels', 'sample_rate_hz', b'sample_rate_hz']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AudioInfo = AudioInfo +Global___AudioInfo: _TypeAlias = AudioInfo -@typing.final -class GetPropertiesRequest(google.protobuf.message.Message): +@_typing.final +class GetPropertiesRequest(_message.Message): """Shared properties for AudioIn and AudioOut components.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesRequest = GetPropertiesRequest +Global___GetPropertiesRequest: _TypeAlias = GetPropertiesRequest -@typing.final -class GetPropertiesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SUPPORTED_CODECS_FIELD_NUMBER: builtins.int - SAMPLE_RATE_HZ_FIELD_NUMBER: builtins.int - NUM_CHANNELS_FIELD_NUMBER: builtins.int - sample_rate_hz: builtins.int +@_typing.final +class GetPropertiesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SUPPORTED_CODECS_FIELD_NUMBER: _builtins.int + SAMPLE_RATE_HZ_FIELD_NUMBER: _builtins.int + NUM_CHANNELS_FIELD_NUMBER: _builtins.int + sample_rate_hz: _builtins.int 'current sample rate in Hz' - num_channels: builtins.int + num_channels: _builtins.int 'Maximum number of audio channels supported (e.g., 1 for mono, 2 for stereo)' - @property - def supported_codecs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def supported_codecs(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """List of audio codecs supported by the system (e.g., "mp3", "pcm16", "pcm32float")""" - def __init__(self, *, supported_codecs: collections.abc.Iterable[builtins.str] | None=..., sample_rate_hz: builtins.int=..., num_channels: builtins.int=...) -> None: + def __init__(self, *, supported_codecs: _abc.Iterable[_builtins.str] | None=..., sample_rate_hz: _builtins.int=..., num_channels: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['num_channels', b'num_channels', 'sample_rate_hz', b'sample_rate_hz', 'supported_codecs', b'supported_codecs'] - def ClearField(self, field_name: typing.Literal['num_channels', b'num_channels', 'sample_rate_hz', b'sample_rate_hz', 'supported_codecs', b'supported_codecs']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesResponse = GetPropertiesResponse -SAFETY_HEARTBEAT_MONITORED_FIELD_NUMBER: builtins.int -safety_heartbeat_monitored: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MethodOptions, builtins.bool] +Global___GetPropertiesResponse: _TypeAlias = GetPropertiesResponse +SAFETY_HEARTBEAT_MONITORED_FIELD_NUMBER: _builtins.int +safety_heartbeat_monitored: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.MethodOptions, _builtins.bool] 'safety_heartbeat_monitored is used on methods to signify that if a session is in use\nand the session was the last to call this method, the resource associated with the\nmethod will be stopped.\n' \ No newline at end of file diff --git a/src/viam/gen/component/arm/v1/arm_grpc.py b/src/viam/gen/component/arm/v1/arm_grpc.py index 45bac9ed78..cc9c88e66d 100644 --- a/src/viam/gen/component/arm/v1/arm_grpc.py +++ b/src/viam/gen/component/arm/v1/arm_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/arm/v1/arm_pb2.py b/src/viam/gen/component/arm/v1/arm_pb2.py index 84a37b9aa4..86eacac2fd 100644 --- a/src/viam/gen/component/arm/v1/arm_pb2.py +++ b/src/viam/gen/component/arm/v1/arm_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/arm/v1/arm.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/arm/v1/arm.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1acomponent/arm/v1/arm.proto\x12\x15viam.component.arm.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"Z\n\x15GetEndPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"B\n\x16GetEndPositionResponse\x12(\n\x04pose\x18\x01 \x01(\x0b2\x14.viam.common.v1.PoseR\x04pose"(\n\x0eJointPositions\x12\x16\n\x06values\x18\x01 \x03(\x01R\x06values"]\n\x18GetJointPositionsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"`\n\x19GetJointPositionsResponse\x12C\n\tpositions\x18\x01 \x01(\x0b2%.viam.component.arm.v1.JointPositionsR\tpositions"\x80\x01\n\x15MoveToPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12$\n\x02to\x18\x02 \x01(\x0b2\x14.viam.common.v1.PoseR\x02to\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x18\n\x16MoveToPositionResponse"\xa5\x01\n\x1bMoveToJointPositionsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12C\n\tpositions\x18\x02 \x01(\x0b2%.viam.component.arm.v1.JointPositionsR\tpositions\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x1e\n\x1cMoveToJointPositionsResponse"\xf9\x01\n MoveThroughJointPositionsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12C\n\tpositions\x18\x02 \x03(\x0b2%.viam.component.arm.v1.JointPositionsR\tpositions\x12A\n\x07options\x18\x03 \x01(\x0b2".viam.component.arm.v1.MoveOptionsH\x00R\x07options\x88\x01\x01\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraB\n\n\x08_options"#\n!MoveThroughJointPositionsResponse"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"\xae\x01\n\x06Status\x127\n\x0cend_position\x18\x01 \x01(\x0b2\x14.viam.common.v1.PoseR\x0bendPosition\x12N\n\x0fjoint_positions\x18\x02 \x01(\x0b2%.viam.component.arm.v1.JointPositionsR\x0ejointPositions\x12\x1b\n\tis_moving\x18\x03 \x01(\x08R\x08isMoving"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving"\xa8\x02\n\x0bMoveOptions\x123\n\x14max_vel_degs_per_sec\x18\x01 \x01(\x01H\x00R\x10maxVelDegsPerSec\x88\x01\x01\x125\n\x15max_acc_degs_per_sec2\x18\x02 \x01(\x01H\x01R\x11maxAccDegsPerSec2\x88\x01\x01\x12;\n\x1bmax_vel_degs_per_sec_joints\x18\x03 \x03(\x01R\x16maxVelDegsPerSecJoints\x12=\n\x1cmax_acc_degs_per_sec2_joints\x18\x04 \x03(\x01R\x17maxAccDegsPerSec2JointsB\x17\n\x15_max_vel_degs_per_secB\x18\n\x16_max_acc_degs_per_sec22\xff\r\n\nArmService\x12\xa1\x01\n\x0eGetEndPosition\x12,.viam.component.arm.v1.GetEndPositionRequest\x1a-.viam.component.arm.v1.GetEndPositionResponse"2\x82\xd3\xe4\x93\x02,\x12*/viam/api/v1/component/arm/{name}/position\x12\xa5\x01\n\x0eMoveToPosition\x12,.viam.component.arm.v1.MoveToPositionRequest\x1a-.viam.component.arm.v1.MoveToPositionResponse"6\xa0\x92)\x01\x82\xd3\xe4\x93\x02,\x1a*/viam/api/v1/component/arm/{name}/position\x12\xb1\x01\n\x11GetJointPositions\x12/.viam.component.arm.v1.GetJointPositionsRequest\x1a0.viam.component.arm.v1.GetJointPositionsResponse"9\x82\xd3\xe4\x93\x023\x121/viam/api/v1/component/arm/{name}/joint_positions\x12\xbe\x01\n\x14MoveToJointPositions\x122.viam.component.arm.v1.MoveToJointPositionsRequest\x1a3.viam.component.arm.v1.MoveToJointPositionsResponse"=\xa0\x92)\x01\x82\xd3\xe4\x93\x023\x1a1/viam/api/v1/component/arm/{name}/joint_positions\x12\xda\x01\n\x19MoveThroughJointPositions\x127.viam.component.arm.v1.MoveThroughJointPositionsRequest\x1a8.viam.component.arm.v1.MoveThroughJointPositionsResponse"J\xa0\x92)\x01\x82\xd3\xe4\x93\x02@">/viam/api/v1/component/arm/{name}/move_through_joint_positions\x12\x7f\n\x04Stop\x12".viam.component.arm.v1.StopRequest\x1a#.viam.component.arm.v1.StopResponse".\x82\xd3\xe4\x93\x02("&/viam/api/v1/component/arm/{name}/stop\x12\x90\x01\n\x08IsMoving\x12&.viam.component.arm.v1.IsMovingRequest\x1a\'.viam.component.arm.v1.IsMovingResponse"3\x82\xd3\xe4\x93\x02-\x12+/viam/api/v1/component/arm/{name}/is_moving\x12\x86\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"4\x82\xd3\xe4\x93\x02.",/viam/api/v1/component/arm/{name}/do_command\x12\x92\x01\n\rGetKinematics\x12$.viam.common.v1.GetKinematicsRequest\x1a%.viam.common.v1.GetKinematicsResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/arm/{name}/kinematics\x12\x92\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/arm/{name}/geometries\x12\x8b\x01\n\x0bGet3DModels\x12".viam.common.v1.Get3DModelsRequest\x1a#.viam.common.v1.Get3DModelsResponse"3\x82\xd3\xe4\x93\x02-\x12+/viam/api/v1/component/arm/{name}/3d_modelsB=\n\x19com.viam.component.arm.v1Z go.viam.com/api/component/arm/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/arm/v1/arm_pb2.pyi b/src/viam/gen/component/arm/v1/arm_pb2.pyi index d16a9462cd..f52b6e95d4 100644 --- a/src/viam/gen/component/arm/v1/arm_pb2.pyi +++ b/src/viam/gen/component/arm/v1/arm_pb2.pyi @@ -2,353 +2,387 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -from .... import common -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class GetEndPositionRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +from collections import abc as _abc +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class GetEndPositionRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of an arm' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetEndPositionRequest = GetEndPositionRequest +Global___GetEndPositionRequest: _TypeAlias = GetEndPositionRequest -@typing.final -class GetEndPositionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POSE_FIELD_NUMBER: builtins.int +@_typing.final +class GetEndPositionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POSE_FIELD_NUMBER: _builtins.int - @property - def pose(self) -> common.v1.common_pb2.Pose: + @_builtins.property + def pose(self) -> _common_pb2.Pose: """Returns 6d pose of the end effector relative to the base, represented by X,Y,Z coordinates which express millimeters and theta, ox, oy, oz coordinates which express an orientation vector """ - def __init__(self, *, pose: common.v1.common_pb2.Pose | None=...) -> None: + def __init__(self, *, pose: _common_pb2.Pose | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['pose', b'pose'] - def HasField(self, field_name: typing.Literal['pose', b'pose']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['pose', b'pose'] - def ClearField(self, field_name: typing.Literal['pose', b'pose']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetEndPositionResponse = GetEndPositionResponse +Global___GetEndPositionResponse: _TypeAlias = GetEndPositionResponse -@typing.final -class JointPositions(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VALUES_FIELD_NUMBER: builtins.int +@_typing.final +class JointPositions(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + VALUES_FIELD_NUMBER: _builtins.int - @property - def values(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: + @_builtins.property + def values(self) -> _containers.RepeatedScalarFieldContainer[_builtins.float]: """A list of joint positions. Rotations values are in degrees, translational values in mm. There should be 1 entry in the list per joint DOF, ordered spatially from the base toward the end effector of the arm """ - def __init__(self, *, values: collections.abc.Iterable[builtins.float] | None=...) -> None: + def __init__(self, *, values: _abc.Iterable[_builtins.float] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['values', b'values'] - def ClearField(self, field_name: typing.Literal['values', b'values']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___JointPositions = JointPositions +Global___JointPositions: _TypeAlias = JointPositions -@typing.final -class GetJointPositionsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetJointPositionsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of an arm' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetJointPositionsRequest = GetJointPositionsRequest +Global___GetJointPositionsRequest: _TypeAlias = GetJointPositionsRequest -@typing.final -class GetJointPositionsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POSITIONS_FIELD_NUMBER: builtins.int +@_typing.final +class GetJointPositionsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POSITIONS_FIELD_NUMBER: _builtins.int - @property - def positions(self) -> global___JointPositions: + @_builtins.property + def positions(self) -> Global___JointPositions: """a list JointPositions""" - def __init__(self, *, positions: global___JointPositions | None=...) -> None: + def __init__(self, *, positions: Global___JointPositions | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['positions', b'positions'] - def HasField(self, field_name: typing.Literal['positions', b'positions']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['positions', b'positions'] - def ClearField(self, field_name: typing.Literal['positions', b'positions']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetJointPositionsResponse = GetJointPositionsResponse +Global___GetJointPositionsResponse: _TypeAlias = GetJointPositionsResponse -@typing.final -class MoveToPositionRequest(google.protobuf.message.Message): +@_typing.final +class MoveToPositionRequest(_message.Message): """Moves an arm to the specified pose that is within the reference frame of the arm. Move request in Motion API has the same behavior except that it performs obstacle avoidance when a world_state message is specified. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - TO_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + TO_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of an arm' - @property - def to(self) -> common.v1.common_pb2.Pose: + @_builtins.property + def to(self) -> _common_pb2.Pose: """The destination to move the arm to; this is from the reference frame of the arm.""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., to: common.v1.common_pb2.Pose | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., to: _common_pb2.Pose | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'to', b'to'] - def HasField(self, field_name: typing.Literal['extra', b'extra', 'to', b'to']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'to', b'to'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'to', b'to']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MoveToPositionRequest = MoveToPositionRequest +Global___MoveToPositionRequest: _TypeAlias = MoveToPositionRequest -@typing.final -class MoveToPositionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class MoveToPositionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___MoveToPositionResponse = MoveToPositionResponse +Global___MoveToPositionResponse: _TypeAlias = MoveToPositionResponse -@typing.final -class MoveToJointPositionsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - POSITIONS_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class MoveToJointPositionsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + POSITIONS_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of an arm' - @property - def positions(self) -> global___JointPositions: + @_builtins.property + def positions(self) -> Global___JointPositions: """A list of joint positions There should be 1 entry in the list per joint DOF, ordered spatially from the base toward the end effector """ - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., positions: global___JointPositions | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., positions: Global___JointPositions | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'positions', b'positions'] - def HasField(self, field_name: typing.Literal['extra', b'extra', 'positions', b'positions']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'positions', b'positions'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'positions', b'positions']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MoveToJointPositionsRequest = MoveToJointPositionsRequest +Global___MoveToJointPositionsRequest: _TypeAlias = MoveToJointPositionsRequest -@typing.final -class MoveToJointPositionsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class MoveToJointPositionsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___MoveToJointPositionsResponse = MoveToJointPositionsResponse +Global___MoveToJointPositionsResponse: _TypeAlias = MoveToJointPositionsResponse -@typing.final -class MoveThroughJointPositionsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - POSITIONS_FIELD_NUMBER: builtins.int - OPTIONS_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class MoveThroughJointPositionsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + POSITIONS_FIELD_NUMBER: _builtins.int + OPTIONS_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of an arm' - @property - def positions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___JointPositions]: + @_builtins.property + def positions(self) -> _containers.RepeatedCompositeFieldContainer[Global___JointPositions]: """A list of joint positions which will be moved to in the order they are specified""" - @property - def options(self) -> global___MoveOptions: + @_builtins.property + def options(self) -> Global___MoveOptions: """optional specifications to be obeyed during the motion""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., positions: collections.abc.Iterable[global___JointPositions] | None=..., options: global___MoveOptions | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., positions: _abc.Iterable[Global___JointPositions] | None=..., options: Global___MoveOptions | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_options', b'_options', 'extra', b'extra', 'options', b'options'] - def HasField(self, field_name: typing.Literal['_options', b'_options', 'extra', b'extra', 'options', b'options']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_options', b'_options', 'extra', b'extra', 'name', b'name', 'options', b'options', 'positions', b'positions'] - def ClearField(self, field_name: typing.Literal['_options', b'_options', 'extra', b'extra', 'name', b'name', 'options', b'options', 'positions', b'positions']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__options: _TypeAlias = _typing.Literal['options'] + _WhichOneofArgType__options: _TypeAlias = _typing.Literal['_options', b'_options'] - def WhichOneof(self, oneof_group: typing.Literal['_options', b'_options']) -> typing.Literal['options'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__options) -> _WhichOneofReturnType__options | None: ... -global___MoveThroughJointPositionsRequest = MoveThroughJointPositionsRequest +Global___MoveThroughJointPositionsRequest: _TypeAlias = MoveThroughJointPositionsRequest -@typing.final -class MoveThroughJointPositionsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class MoveThroughJointPositionsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___MoveThroughJointPositionsResponse = MoveThroughJointPositionsResponse +Global___MoveThroughJointPositionsResponse: _TypeAlias = MoveThroughJointPositionsResponse -@typing.final -class StopRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class StopRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of an arm' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StopRequest = StopRequest +Global___StopRequest: _TypeAlias = StopRequest -@typing.final -class StopResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class StopResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___StopResponse = StopResponse +Global___StopResponse: _TypeAlias = StopResponse -@typing.final -class Status(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - END_POSITION_FIELD_NUMBER: builtins.int - JOINT_POSITIONS_FIELD_NUMBER: builtins.int - IS_MOVING_FIELD_NUMBER: builtins.int - is_moving: builtins.bool +@_typing.final +class Status(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + END_POSITION_FIELD_NUMBER: _builtins.int + JOINT_POSITIONS_FIELD_NUMBER: _builtins.int + IS_MOVING_FIELD_NUMBER: _builtins.int + is_moving: _builtins.bool - @property - def end_position(self) -> common.v1.common_pb2.Pose: + @_builtins.property + def end_position(self) -> _common_pb2.Pose: ... - @property - def joint_positions(self) -> global___JointPositions: + @_builtins.property + def joint_positions(self) -> Global___JointPositions: ... - def __init__(self, *, end_position: common.v1.common_pb2.Pose | None=..., joint_positions: global___JointPositions | None=..., is_moving: builtins.bool=...) -> None: + def __init__(self, *, end_position: _common_pb2.Pose | None=..., joint_positions: Global___JointPositions | None=..., is_moving: _builtins.bool=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['end_position', b'end_position', 'joint_positions', b'joint_positions'] - def HasField(self, field_name: typing.Literal['end_position', b'end_position', 'joint_positions', b'joint_positions']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['end_position', b'end_position', 'is_moving', b'is_moving', 'joint_positions', b'joint_positions'] - def ClearField(self, field_name: typing.Literal['end_position', b'end_position', 'is_moving', b'is_moving', 'joint_positions', b'joint_positions']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Status = Status +Global___Status: _TypeAlias = Status -@typing.final -class IsMovingRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class IsMovingRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsMovingRequest = IsMovingRequest +Global___IsMovingRequest: _TypeAlias = IsMovingRequest -@typing.final -class IsMovingResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - IS_MOVING_FIELD_NUMBER: builtins.int - is_moving: builtins.bool +@_typing.final +class IsMovingResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + IS_MOVING_FIELD_NUMBER: _builtins.int + is_moving: _builtins.bool - def __init__(self, *, is_moving: builtins.bool=...) -> None: + def __init__(self, *, is_moving: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['is_moving', b'is_moving'] - def ClearField(self, field_name: typing.Literal['is_moving', b'is_moving']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsMovingResponse = IsMovingResponse +Global___IsMovingResponse: _TypeAlias = IsMovingResponse -@typing.final -class MoveOptions(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MAX_VEL_DEGS_PER_SEC_FIELD_NUMBER: builtins.int - MAX_ACC_DEGS_PER_SEC2_FIELD_NUMBER: builtins.int - MAX_VEL_DEGS_PER_SEC_JOINTS_FIELD_NUMBER: builtins.int - MAX_ACC_DEGS_PER_SEC2_JOINTS_FIELD_NUMBER: builtins.int - max_vel_degs_per_sec: builtins.float +@_typing.final +class MoveOptions(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MAX_VEL_DEGS_PER_SEC_FIELD_NUMBER: _builtins.int + MAX_ACC_DEGS_PER_SEC2_FIELD_NUMBER: _builtins.int + MAX_VEL_DEGS_PER_SEC_JOINTS_FIELD_NUMBER: _builtins.int + MAX_ACC_DEGS_PER_SEC2_JOINTS_FIELD_NUMBER: _builtins.int + max_vel_degs_per_sec: _builtins.float 'Maximum allowable velocity of an arm joint, in degrees per second.\n Ignored when max_vel_degs_per_sec_joints is set.\n ' - max_acc_degs_per_sec2: builtins.float + max_acc_degs_per_sec2: _builtins.float 'Maximum allowable acceleration of an arm joint, in degrees per second squared.\n ignored when max_acc_degs_per_sec2_joints is set.\n ' - @property - def max_vel_degs_per_sec_joints(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: + @_builtins.property + def max_vel_degs_per_sec_joints(self) -> _containers.RepeatedScalarFieldContainer[_builtins.float]: """Per-joint maximum velocity in degrees per second.""" - @property - def max_acc_degs_per_sec2_joints(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: + @_builtins.property + def max_acc_degs_per_sec2_joints(self) -> _containers.RepeatedScalarFieldContainer[_builtins.float]: """Per-joint maximum acceleration in degrees per second squared.""" - def __init__(self, *, max_vel_degs_per_sec: builtins.float | None=..., max_acc_degs_per_sec2: builtins.float | None=..., max_vel_degs_per_sec_joints: collections.abc.Iterable[builtins.float] | None=..., max_acc_degs_per_sec2_joints: collections.abc.Iterable[builtins.float] | None=...) -> None: + def __init__(self, *, max_vel_degs_per_sec: _builtins.float | None=..., max_acc_degs_per_sec2: _builtins.float | None=..., max_vel_degs_per_sec_joints: _abc.Iterable[_builtins.float] | None=..., max_acc_degs_per_sec2_joints: _abc.Iterable[_builtins.float] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_max_acc_degs_per_sec2', b'_max_acc_degs_per_sec2', '_max_vel_degs_per_sec', b'_max_vel_degs_per_sec', 'max_acc_degs_per_sec2', b'max_acc_degs_per_sec2', 'max_vel_degs_per_sec', b'max_vel_degs_per_sec'] - def HasField(self, field_name: typing.Literal['_max_acc_degs_per_sec2', b'_max_acc_degs_per_sec2', '_max_vel_degs_per_sec', b'_max_vel_degs_per_sec', 'max_acc_degs_per_sec2', b'max_acc_degs_per_sec2', 'max_vel_degs_per_sec', b'max_vel_degs_per_sec']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_max_acc_degs_per_sec2', b'_max_acc_degs_per_sec2', '_max_vel_degs_per_sec', b'_max_vel_degs_per_sec', 'max_acc_degs_per_sec2', b'max_acc_degs_per_sec2', 'max_acc_degs_per_sec2_joints', b'max_acc_degs_per_sec2_joints', 'max_vel_degs_per_sec', b'max_vel_degs_per_sec', 'max_vel_degs_per_sec_joints', b'max_vel_degs_per_sec_joints'] - def ClearField(self, field_name: typing.Literal['_max_acc_degs_per_sec2', b'_max_acc_degs_per_sec2', '_max_vel_degs_per_sec', b'_max_vel_degs_per_sec', 'max_acc_degs_per_sec2', b'max_acc_degs_per_sec2', 'max_acc_degs_per_sec2_joints', b'max_acc_degs_per_sec2_joints', 'max_vel_degs_per_sec', b'max_vel_degs_per_sec', 'max_vel_degs_per_sec_joints', b'max_vel_degs_per_sec_joints']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__max_acc_degs_per_sec2: _TypeAlias = _typing.Literal['max_acc_degs_per_sec2'] + _WhichOneofArgType__max_acc_degs_per_sec2: _TypeAlias = _typing.Literal['_max_acc_degs_per_sec2', b'_max_acc_degs_per_sec2'] + _WhichOneofReturnType__max_vel_degs_per_sec: _TypeAlias = _typing.Literal['max_vel_degs_per_sec'] + _WhichOneofArgType__max_vel_degs_per_sec: _TypeAlias = _typing.Literal['_max_vel_degs_per_sec', b'_max_vel_degs_per_sec'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_max_acc_degs_per_sec2', b'_max_acc_degs_per_sec2']) -> typing.Literal['max_acc_degs_per_sec2'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__max_acc_degs_per_sec2) -> _WhichOneofReturnType__max_acc_degs_per_sec2 | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_max_vel_degs_per_sec', b'_max_vel_degs_per_sec']) -> typing.Literal['max_vel_degs_per_sec'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__max_vel_degs_per_sec) -> _WhichOneofReturnType__max_vel_degs_per_sec | None: ... -global___MoveOptions = MoveOptions \ No newline at end of file +Global___MoveOptions: _TypeAlias = MoveOptions \ No newline at end of file diff --git a/src/viam/gen/component/audioin/v1/audioin_grpc.py b/src/viam/gen/component/audioin/v1/audioin_grpc.py index 0346d7df08..0c419768e6 100644 --- a/src/viam/gen/component/audioin/v1/audioin_grpc.py +++ b/src/viam/gen/component/audioin/v1/audioin_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/audioin/v1/audioin_pb2.py b/src/viam/gen/component/audioin/v1/audioin_pb2.py index 687d604c01..9a553dbdb5 100644 --- a/src/viam/gen/component/audioin/v1/audioin_pb2.py +++ b/src/viam/gen/component/audioin/v1/audioin_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/audioin/v1/audioin.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/audioin/v1/audioin.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"component/audioin/v1/audioin.proto\x12\x19viam.component.audioin.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"\xfa\x01\n\x0fGetAudioRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12)\n\x10duration_seconds\x18\x02 \x01(\x02R\x0fdurationSeconds\x12\x14\n\x05codec\x18\x03 \x01(\tR\x05codec\x12\x1d\n\nrequest_id\x18\x04 \x01(\tR\trequestId\x12D\n\x1eprevious_timestamp_nanoseconds\x18\x05 \x01(\x03R\x1cpreviousTimestampNanoseconds\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"n\n\x10GetAudioResponse\x12;\n\x05audio\x18\x01 \x01(\x0b2%.viam.component.audioin.v1.AudioChunkR\x05audio\x12\x1d\n\nrequest_id\x18\x02 \x01(\tR\trequestId"\xfd\x01\n\nAudioChunk\x12\x1d\n\naudio_data\x18\x01 \x01(\x0cR\taudioData\x128\n\naudio_info\x18\x02 \x01(\x0b2\x19.viam.common.v1.AudioInfoR\taudioInfo\x12>\n\x1bstart_timestamp_nanoseconds\x18\x03 \x01(\x03R\x19startTimestampNanoseconds\x12:\n\x19end_timestamp_nanoseconds\x18\x04 \x01(\x03R\x17endTimestampNanoseconds\x12\x1a\n\x08sequence\x18\x05 \x01(\x05R\x08sequence2\xee\x04\n\x0eAudioInService\x12\x9e\x01\n\x08GetAudio\x12*.viam.component.audioin.v1.GetAudioRequest\x1a+.viam.component.audioin.v1.GetAudioResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/audioin/{name}/get_audio0\x01\x12\x96\x01\n\rGetProperties\x12$.viam.common.v1.GetPropertiesRequest\x1a%.viam.common.v1.GetPropertiesResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/audioin/{name}/properties\x12\x88\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/service/audioin/{name}/do_command\x12\x96\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/audioin/{name}/geometriesBE\n\x1dcom.viam.component.audioin.v1Z$go.viam.com/api/component/audioin/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/audioin/v1/audioin_pb2.pyi b/src/viam/gen/component/audioin/v1/audioin_pb2.pyi index e9cc39e32e..8187fa3333 100644 --- a/src/viam/gen/component/audioin/v1/audioin_pb2.pyi +++ b/src/viam/gen/component/audioin/v1/audioin_pb2.pyi @@ -2,93 +2,104 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -from .... import common -import google.protobuf.descriptor -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor -@typing.final -class GetAudioRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - DURATION_SECONDS_FIELD_NUMBER: builtins.int - CODEC_FIELD_NUMBER: builtins.int - REQUEST_ID_FIELD_NUMBER: builtins.int - PREVIOUS_TIMESTAMP_NANOSECONDS_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - duration_seconds: builtins.float +@_typing.final +class GetAudioRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + DURATION_SECONDS_FIELD_NUMBER: _builtins.int + CODEC_FIELD_NUMBER: _builtins.int + REQUEST_ID_FIELD_NUMBER: _builtins.int + PREVIOUS_TIMESTAMP_NANOSECONDS_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + duration_seconds: _builtins.float 'Desired duration of audio stream\n If not set or set to 0, the stream is infinite\n ' - codec: builtins.str + codec: _builtins.str 'Requested audio codec for the response (e.g., "mp3", "pcm16")' - request_id: builtins.str + request_id: _builtins.str "To match a request to it's responses" - previous_timestamp_nanoseconds: builtins.int + previous_timestamp_nanoseconds: _builtins.int 'Timestamp of the previous audio chunk, in nanoseconds, used for resuming and continuity.' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., duration_seconds: builtins.float=..., codec: builtins.str=..., request_id: builtins.str=..., previous_timestamp_nanoseconds: builtins.int=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., duration_seconds: _builtins.float=..., codec: _builtins.str=..., request_id: _builtins.str=..., previous_timestamp_nanoseconds: _builtins.int=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['codec', b'codec', 'duration_seconds', b'duration_seconds', 'extra', b'extra', 'name', b'name', 'previous_timestamp_nanoseconds', b'previous_timestamp_nanoseconds', 'request_id', b'request_id'] - def ClearField(self, field_name: typing.Literal['codec', b'codec', 'duration_seconds', b'duration_seconds', 'extra', b'extra', 'name', b'name', 'previous_timestamp_nanoseconds', b'previous_timestamp_nanoseconds', 'request_id', b'request_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetAudioRequest = GetAudioRequest +Global___GetAudioRequest: _TypeAlias = GetAudioRequest -@typing.final -class GetAudioResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - AUDIO_FIELD_NUMBER: builtins.int - REQUEST_ID_FIELD_NUMBER: builtins.int - request_id: builtins.str +@_typing.final +class GetAudioResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + AUDIO_FIELD_NUMBER: _builtins.int + REQUEST_ID_FIELD_NUMBER: _builtins.int + request_id: _builtins.str - @property - def audio(self) -> global___AudioChunk: + @_builtins.property + def audio(self) -> Global___AudioChunk: ... - def __init__(self, *, audio: global___AudioChunk | None=..., request_id: builtins.str=...) -> None: + def __init__(self, *, audio: Global___AudioChunk | None=..., request_id: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['audio', b'audio'] - def HasField(self, field_name: typing.Literal['audio', b'audio']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['audio', b'audio', 'request_id', b'request_id'] - def ClearField(self, field_name: typing.Literal['audio', b'audio', 'request_id', b'request_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetAudioResponse = GetAudioResponse +Global___GetAudioResponse: _TypeAlias = GetAudioResponse -@typing.final -class AudioChunk(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - AUDIO_DATA_FIELD_NUMBER: builtins.int - AUDIO_INFO_FIELD_NUMBER: builtins.int - START_TIMESTAMP_NANOSECONDS_FIELD_NUMBER: builtins.int - END_TIMESTAMP_NANOSECONDS_FIELD_NUMBER: builtins.int - SEQUENCE_FIELD_NUMBER: builtins.int - audio_data: builtins.bytes +@_typing.final +class AudioChunk(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + AUDIO_DATA_FIELD_NUMBER: _builtins.int + AUDIO_INFO_FIELD_NUMBER: _builtins.int + START_TIMESTAMP_NANOSECONDS_FIELD_NUMBER: _builtins.int + END_TIMESTAMP_NANOSECONDS_FIELD_NUMBER: _builtins.int + SEQUENCE_FIELD_NUMBER: _builtins.int + audio_data: _builtins.bytes 'Audio data for this chunk, encoded according to the requested codec.' - start_timestamp_nanoseconds: builtins.int - end_timestamp_nanoseconds: builtins.int - sequence: builtins.int + start_timestamp_nanoseconds: _builtins.int + end_timestamp_nanoseconds: _builtins.int + sequence: _builtins.int 'Sequential chunk number' - @property - def audio_info(self) -> common.v1.common_pb2.AudioInfo: + @_builtins.property + def audio_info(self) -> _common_pb2.AudioInfo: """Info about the audio stream for this chunk""" - def __init__(self, *, audio_data: builtins.bytes=..., audio_info: common.v1.common_pb2.AudioInfo | None=..., start_timestamp_nanoseconds: builtins.int=..., end_timestamp_nanoseconds: builtins.int=..., sequence: builtins.int=...) -> None: + def __init__(self, *, audio_data: _builtins.bytes=..., audio_info: _common_pb2.AudioInfo | None=..., start_timestamp_nanoseconds: _builtins.int=..., end_timestamp_nanoseconds: _builtins.int=..., sequence: _builtins.int=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['audio_info', b'audio_info'] - def HasField(self, field_name: typing.Literal['audio_info', b'audio_info']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['audio_data', b'audio_data', 'audio_info', b'audio_info', 'end_timestamp_nanoseconds', b'end_timestamp_nanoseconds', 'sequence', b'sequence', 'start_timestamp_nanoseconds', b'start_timestamp_nanoseconds'] - def ClearField(self, field_name: typing.Literal['audio_data', b'audio_data', 'audio_info', b'audio_info', 'end_timestamp_nanoseconds', b'end_timestamp_nanoseconds', 'sequence', b'sequence', 'start_timestamp_nanoseconds', b'start_timestamp_nanoseconds']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AudioChunk = AudioChunk \ No newline at end of file +Global___AudioChunk: _TypeAlias = AudioChunk \ No newline at end of file diff --git a/src/viam/gen/component/audioout/v1/audioout_grpc.py b/src/viam/gen/component/audioout/v1/audioout_grpc.py index d5c1e9ed23..8769b3ca1c 100644 --- a/src/viam/gen/component/audioout/v1/audioout_grpc.py +++ b/src/viam/gen/component/audioout/v1/audioout_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/audioout/v1/audioout_pb2.py b/src/viam/gen/component/audioout/v1/audioout_pb2.py index 87e6156019..cf5331d883 100644 --- a/src/viam/gen/component/audioout/v1/audioout_pb2.py +++ b/src/viam/gen/component/audioout/v1/audioout_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/audioout/v1/audioout.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/audioout/v1/audioout.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$component/audioout/v1/audioout.proto\x12\x1aviam.component.audioout.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"\xa9\x01\n\x0bPlayRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1d\n\naudio_data\x18\x02 \x01(\x0cR\taudioData\x128\n\naudio_info\x18\x03 \x01(\x0b2\x19.viam.common.v1.AudioInfoR\taudioInfo\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cPlayResponse2\xe2\x04\n\x0fAudioOutService\x12\x8e\x01\n\x04Play\x12\'.viam.component.audioout.v1.PlayRequest\x1a(.viam.component.audioout.v1.PlayResponse"3\x82\xd3\xe4\x93\x02-"+/viam/api/v1/component/audioout/{name}/play\x12\x97\x01\n\rGetProperties\x12$.viam.common.v1.GetPropertiesRequest\x1a%.viam.common.v1.GetPropertiesResponse"9\x82\xd3\xe4\x93\x023\x121/viam/api/v1/component/audioout/{name}/properties\x12\x89\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"7\x82\xd3\xe4\x93\x021"//viam/api/v1/service/audioout/{name}/do_command\x12\x97\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"9\x82\xd3\xe4\x93\x023\x121/viam/api/v1/component/audioout/{name}/geometriesBG\n\x1ecom.viam.component.audioout.v1Z%go.viam.com/api/component/audioout/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/audioout/v1/audioout_pb2.pyi b/src/viam/gen/component/audioout/v1/audioout_pb2.pyi index 62bb648080..ee73e6291e 100644 --- a/src/viam/gen/component/audioout/v1/audioout_pb2.pyi +++ b/src/viam/gen/component/audioout/v1/audioout_pb2.pyi @@ -2,46 +2,53 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -from .... import common -import google.protobuf.descriptor -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class PlayRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - AUDIO_DATA_FIELD_NUMBER: builtins.int - AUDIO_INFO_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - audio_data: builtins.bytes - - @property - def audio_info(self) -> common.v1.common_pb2.AudioInfo: +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class PlayRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + AUDIO_DATA_FIELD_NUMBER: _builtins.int + AUDIO_INFO_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + audio_data: _builtins.bytes + + @_builtins.property + def audio_info(self) -> _common_pb2.AudioInfo: """Info describing the audio_data""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., audio_data: builtins.bytes=..., audio_info: common.v1.common_pb2.AudioInfo | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., audio_data: _builtins.bytes=..., audio_info: _common_pb2.AudioInfo | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['audio_info', b'audio_info', 'extra', b'extra'] - def HasField(self, field_name: typing.Literal['audio_info', b'audio_info', 'extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['audio_data', b'audio_data', 'audio_info', b'audio_info', 'extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['audio_data', b'audio_data', 'audio_info', b'audio_info', 'extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PlayRequest = PlayRequest +Global___PlayRequest: _TypeAlias = PlayRequest -@typing.final -class PlayResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class PlayResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___PlayResponse = PlayResponse \ No newline at end of file +Global___PlayResponse: _TypeAlias = PlayResponse \ No newline at end of file diff --git a/src/viam/gen/component/base/v1/base_grpc.py b/src/viam/gen/component/base/v1/base_grpc.py index 74f8f2e909..b776394a33 100644 --- a/src/viam/gen/component/base/v1/base_grpc.py +++ b/src/viam/gen/component/base/v1/base_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/base/v1/base_pb2.py b/src/viam/gen/component/base/v1/base_pb2.py index a60a66ff92..4d891f4f9b 100644 --- a/src/viam/gen/component/base/v1/base_pb2.py +++ b/src/viam/gen/component/base/v1/base_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/base/v1/base.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/base/v1/base.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ccomponent/base/v1/base.proto\x12\x16viam.component.base.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"\x97\x01\n\x13MoveStraightRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x0bdistance_mm\x18\x02 \x01(\x03R\ndistanceMm\x12\x1c\n\nmm_per_sec\x18\x03 \x01(\x01R\x08mmPerSec\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x16\n\x14MoveStraightResponse"\x8f\x01\n\x0bSpinRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\tangle_deg\x18\x02 \x01(\x01R\x08angleDeg\x12 \n\x0cdegs_per_sec\x18\x03 \x01(\x01R\ndegsPerSec\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cSpinResponse"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"\xb8\x01\n\x0fSetPowerRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12/\n\x06linear\x18\x02 \x01(\x0b2\x17.viam.common.v1.Vector3R\x06linear\x121\n\x07angular\x18\x03 \x01(\x0b2\x17.viam.common.v1.Vector3R\x07angular\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x12\n\x10SetPowerResponse"\xbb\x01\n\x12SetVelocityRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12/\n\x06linear\x18\x02 \x01(\x0b2\x17.viam.common.v1.Vector3R\x06linear\x121\n\x07angular\x18\x03 \x01(\x0b2\x17.viam.common.v1.Vector3R\x07angular\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x15\n\x13SetVelocityResponse"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving"Y\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xac\x01\n\x15GetPropertiesResponse\x12!\n\x0cwidth_meters\x18\x01 \x01(\x01R\x0bwidthMeters\x122\n\x15turning_radius_meters\x18\x02 \x01(\x01R\x13turningRadiusMeters\x12<\n\x1awheel_circumference_meters\x18\x03 \x01(\x01R\x18wheelCircumferenceMeters2\xe1\n\n\x0bBaseService\x12\xa7\x01\n\x0cMoveStraight\x12+.viam.component.base.v1.MoveStraightRequest\x1a,.viam.component.base.v1.MoveStraightResponse"<\xa0\x92)\x01\x82\xd3\xe4\x93\x022"0/viam/api/v1/component/base/{name}/move_straight\x12\x86\x01\n\x04Spin\x12#.viam.component.base.v1.SpinRequest\x1a$.viam.component.base.v1.SpinResponse"3\xa0\x92)\x01\x82\xd3\xe4\x93\x02)"\'/viam/api/v1/component/base/{name}/spin\x12\x97\x01\n\x08SetPower\x12\'.viam.component.base.v1.SetPowerRequest\x1a(.viam.component.base.v1.SetPowerResponse"8\xa0\x92)\x01\x82\xd3\xe4\x93\x02.",/viam/api/v1/component/base/{name}/set_power\x12\xa3\x01\n\x0bSetVelocity\x12*.viam.component.base.v1.SetVelocityRequest\x1a+.viam.component.base.v1.SetVelocityResponse";\xa0\x92)\x01\x82\xd3\xe4\x93\x021"//viam/api/v1/component/base/{name}/set_velocity\x12\x82\x01\n\x04Stop\x12#.viam.component.base.v1.StopRequest\x1a$.viam.component.base.v1.StopResponse"/\x82\xd3\xe4\x93\x02)"\'/viam/api/v1/component/base/{name}/stop\x12\x93\x01\n\x08IsMoving\x12\'.viam.component.base.v1.IsMovingRequest\x1a(.viam.component.base.v1.IsMovingResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/base/{name}/is_moving\x12\x87\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"5\x82\xd3\xe4\x93\x02/"-/viam/api/v1/component/base/{name}/do_command\x12\x93\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"5\x82\xd3\xe4\x93\x02/\x12-/viam/api/v1/component/base/{name}/geometries\x12\xa3\x01\n\rGetProperties\x12,.viam.component.base.v1.GetPropertiesRequest\x1a-.viam.component.base.v1.GetPropertiesResponse"5\x82\xd3\xe4\x93\x02/\x12-/viam/api/v1/component/base/{name}/propertiesB?\n\x1acom.viam.component.base.v1Z!go.viam.com/api/component/base/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/base/v1/base_pb2.pyi b/src/viam/gen/component/base/v1/base_pb2.pyi index 2918d63ce3..e9defcc3f0 100644 --- a/src/viam/gen/component/base/v1/base_pb2.pyi +++ b/src/viam/gen/component/base/v1/base_pb2.pyi @@ -2,257 +2,277 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -from .... import common -import google.protobuf.descriptor -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class MoveStraightRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - DISTANCE_MM_FIELD_NUMBER: builtins.int - MM_PER_SEC_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class MoveStraightRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + DISTANCE_MM_FIELD_NUMBER: _builtins.int + MM_PER_SEC_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a base' - distance_mm: builtins.int + distance_mm: _builtins.int 'Desired travel distance in millimeters' - mm_per_sec: builtins.float + mm_per_sec: _builtins.float 'Desired travel velocity in millimeters/second' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., distance_mm: builtins.int=..., mm_per_sec: builtins.float=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., distance_mm: _builtins.int=..., mm_per_sec: _builtins.float=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['distance_mm', b'distance_mm', 'extra', b'extra', 'mm_per_sec', b'mm_per_sec', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['distance_mm', b'distance_mm', 'extra', b'extra', 'mm_per_sec', b'mm_per_sec', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MoveStraightRequest = MoveStraightRequest +Global___MoveStraightRequest: _TypeAlias = MoveStraightRequest -@typing.final -class MoveStraightResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class MoveStraightResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___MoveStraightResponse = MoveStraightResponse - -@typing.final -class SpinRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - ANGLE_DEG_FIELD_NUMBER: builtins.int - DEGS_PER_SEC_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +Global___MoveStraightResponse: _TypeAlias = MoveStraightResponse + +@_typing.final +class SpinRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + ANGLE_DEG_FIELD_NUMBER: _builtins.int + DEGS_PER_SEC_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a base' - angle_deg: builtins.float + angle_deg: _builtins.float 'Desired angle' - degs_per_sec: builtins.float + degs_per_sec: _builtins.float 'Desired angular velocity' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., angle_deg: builtins.float=..., degs_per_sec: builtins.float=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., angle_deg: _builtins.float=..., degs_per_sec: _builtins.float=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['angle_deg', b'angle_deg', 'degs_per_sec', b'degs_per_sec', 'extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['angle_deg', b'angle_deg', 'degs_per_sec', b'degs_per_sec', 'extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SpinRequest = SpinRequest +Global___SpinRequest: _TypeAlias = SpinRequest -@typing.final -class SpinResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SpinResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SpinResponse = SpinResponse - -@typing.final -class StopRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +Global___SpinResponse: _TypeAlias = SpinResponse + +@_typing.final +class StopRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a base' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StopRequest = StopRequest +Global___StopRequest: _TypeAlias = StopRequest -@typing.final -class StopResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class StopResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___StopResponse = StopResponse - -@typing.final -class SetPowerRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - LINEAR_FIELD_NUMBER: builtins.int - ANGULAR_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +Global___StopResponse: _TypeAlias = StopResponse + +@_typing.final +class SetPowerRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + LINEAR_FIELD_NUMBER: _builtins.int + ANGULAR_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a base' - @property - def linear(self) -> common.v1.common_pb2.Vector3: + @_builtins.property + def linear(self) -> _common_pb2.Vector3: """Desired linear power percentage as -1 -> 1""" - @property - def angular(self) -> common.v1.common_pb2.Vector3: + @_builtins.property + def angular(self) -> _common_pb2.Vector3: """Desired angular power percentage % as -1 -> 1""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., linear: common.v1.common_pb2.Vector3 | None=..., angular: common.v1.common_pb2.Vector3 | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., linear: _common_pb2.Vector3 | None=..., angular: _common_pb2.Vector3 | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['angular', b'angular', 'extra', b'extra', 'linear', b'linear'] - def HasField(self, field_name: typing.Literal['angular', b'angular', 'extra', b'extra', 'linear', b'linear']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['angular', b'angular', 'extra', b'extra', 'linear', b'linear', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['angular', b'angular', 'extra', b'extra', 'linear', b'linear', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SetPowerRequest = SetPowerRequest +Global___SetPowerRequest: _TypeAlias = SetPowerRequest -@typing.final -class SetPowerResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SetPowerResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SetPowerResponse = SetPowerResponse - -@typing.final -class SetVelocityRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - LINEAR_FIELD_NUMBER: builtins.int - ANGULAR_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +Global___SetPowerResponse: _TypeAlias = SetPowerResponse + +@_typing.final +class SetVelocityRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + LINEAR_FIELD_NUMBER: _builtins.int + ANGULAR_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a base' - @property - def linear(self) -> common.v1.common_pb2.Vector3: + @_builtins.property + def linear(self) -> _common_pb2.Vector3: """Desired linear velocity in mm per second""" - @property - def angular(self) -> common.v1.common_pb2.Vector3: + @_builtins.property + def angular(self) -> _common_pb2.Vector3: """Desired angular velocity in degrees per second""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., linear: common.v1.common_pb2.Vector3 | None=..., angular: common.v1.common_pb2.Vector3 | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., linear: _common_pb2.Vector3 | None=..., angular: _common_pb2.Vector3 | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['angular', b'angular', 'extra', b'extra', 'linear', b'linear'] - def HasField(self, field_name: typing.Literal['angular', b'angular', 'extra', b'extra', 'linear', b'linear']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['angular', b'angular', 'extra', b'extra', 'linear', b'linear', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['angular', b'angular', 'extra', b'extra', 'linear', b'linear', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SetVelocityRequest = SetVelocityRequest +Global___SetVelocityRequest: _TypeAlias = SetVelocityRequest -@typing.final -class SetVelocityResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SetVelocityResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SetVelocityResponse = SetVelocityResponse +Global___SetVelocityResponse: _TypeAlias = SetVelocityResponse -@typing.final -class IsMovingRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class IsMovingRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsMovingRequest = IsMovingRequest +Global___IsMovingRequest: _TypeAlias = IsMovingRequest -@typing.final -class IsMovingResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - IS_MOVING_FIELD_NUMBER: builtins.int - is_moving: builtins.bool +@_typing.final +class IsMovingResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + IS_MOVING_FIELD_NUMBER: _builtins.int + is_moving: _builtins.bool - def __init__(self, *, is_moving: builtins.bool=...) -> None: + def __init__(self, *, is_moving: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['is_moving', b'is_moving'] - def ClearField(self, field_name: typing.Literal['is_moving', b'is_moving']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsMovingResponse = IsMovingResponse - -@typing.final -class GetPropertiesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +Global___IsMovingResponse: _TypeAlias = IsMovingResponse + +@_typing.final +class GetPropertiesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of the base' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesRequest = GetPropertiesRequest - -@typing.final -class GetPropertiesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - WIDTH_METERS_FIELD_NUMBER: builtins.int - TURNING_RADIUS_METERS_FIELD_NUMBER: builtins.int - WHEEL_CIRCUMFERENCE_METERS_FIELD_NUMBER: builtins.int - width_meters: builtins.float - turning_radius_meters: builtins.float - wheel_circumference_meters: builtins.float - - def __init__(self, *, width_meters: builtins.float=..., turning_radius_meters: builtins.float=..., wheel_circumference_meters: builtins.float=...) -> None: +Global___GetPropertiesRequest: _TypeAlias = GetPropertiesRequest + +@_typing.final +class GetPropertiesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + WIDTH_METERS_FIELD_NUMBER: _builtins.int + TURNING_RADIUS_METERS_FIELD_NUMBER: _builtins.int + WHEEL_CIRCUMFERENCE_METERS_FIELD_NUMBER: _builtins.int + width_meters: _builtins.float + turning_radius_meters: _builtins.float + wheel_circumference_meters: _builtins.float + + def __init__(self, *, width_meters: _builtins.float=..., turning_radius_meters: _builtins.float=..., wheel_circumference_meters: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['turning_radius_meters', b'turning_radius_meters', 'wheel_circumference_meters', b'wheel_circumference_meters', 'width_meters', b'width_meters'] - def ClearField(self, field_name: typing.Literal['turning_radius_meters', b'turning_radius_meters', 'wheel_circumference_meters', b'wheel_circumference_meters', 'width_meters', b'width_meters']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesResponse = GetPropertiesResponse \ No newline at end of file +Global___GetPropertiesResponse: _TypeAlias = GetPropertiesResponse \ No newline at end of file diff --git a/src/viam/gen/component/board/v1/board_grpc.py b/src/viam/gen/component/board/v1/board_grpc.py index 8e061fc612..d74dabe813 100644 --- a/src/viam/gen/component/board/v1/board_grpc.py +++ b/src/viam/gen/component/board/v1/board_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.duration_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/board/v1/board_pb2.py b/src/viam/gen/component/board/v1/board_pb2.py index c1160e21f4..f58f117825 100644 --- a/src/viam/gen/component/board/v1/board_pb2.py +++ b/src/viam/gen/component/board/v1/board_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/board/v1/board.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/board/v1/board.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ecomponent/board/v1/board.proto\x12\x17viam.component.board.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto"\xb9\x02\n\x06Status\x12F\n\x07analogs\x18\x01 \x03(\x0b2,.viam.component.board.v1.Status.AnalogsEntryR\x07analogs\x12e\n\x12digital_interrupts\x18\x02 \x03(\x0b26.viam.component.board.v1.Status.DigitalInterruptsEntryR\x11digitalInterrupts\x1a:\n\x0cAnalogsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\x1aD\n\x16DigitalInterruptsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05value:\x028\x01"y\n\x0eSetGPIORequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03pin\x18\x02 \x01(\tR\x03pin\x12\x12\n\x04high\x18\x03 \x01(\x08R\x04high\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x11\n\x0fSetGPIOResponse"e\n\x0eGetGPIORequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03pin\x18\x02 \x01(\tR\x03pin\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"%\n\x0fGetGPIOResponse\x12\x12\n\x04high\x18\x01 \x01(\x08R\x04high"a\n\nPWMRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03pin\x18\x02 \x01(\tR\x03pin\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"3\n\x0bPWMResponse\x12$\n\x0eduty_cycle_pct\x18\x01 \x01(\x01R\x0cdutyCyclePct"\x8a\x01\n\rSetPWMRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03pin\x18\x02 \x01(\tR\x03pin\x12$\n\x0eduty_cycle_pct\x18\x03 \x01(\x01R\x0cdutyCyclePct\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x10\n\x0eSetPWMResponse"j\n\x13PWMFrequencyRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03pin\x18\x02 \x01(\tR\x03pin\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"9\n\x14PWMFrequencyResponse\x12!\n\x0cfrequency_hz\x18\x01 \x01(\x04R\x0bfrequencyHz"\x90\x01\n\x16SetPWMFrequencyRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03pin\x18\x02 \x01(\tR\x03pin\x12!\n\x0cfrequency_hz\x18\x03 \x01(\x04R\x0bfrequencyHz\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x19\n\x17SetPWMFrequencyResponse"\x95\x01\n\x17ReadAnalogReaderRequest\x12\x1d\n\nboard_name\x18\x01 \x01(\tR\tboardName\x12,\n\x12analog_reader_name\x18\x02 \x01(\tR\x10analogReaderName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x87\x01\n\x18ReadAnalogReaderResponse\x12\x14\n\x05value\x18\x01 \x01(\x05R\x05value\x12\x1b\n\tmin_range\x18\x02 \x01(\x02R\x08minRange\x12\x1b\n\tmax_range\x18\x03 \x01(\x02R\x08maxRange\x12\x1b\n\tstep_size\x18\x04 \x01(\x02R\x08stepSize"\x7f\n\x12WriteAnalogRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03pin\x18\x02 \x01(\tR\x03pin\x12\x14\n\x05value\x18\x03 \x01(\x05R\x05value\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x15\n\x13WriteAnalogResponse"\xa5\x01\n\x1fGetDigitalInterruptValueRequest\x12\x1d\n\nboard_name\x18\x01 \x01(\tR\tboardName\x124\n\x16digital_interrupt_name\x18\x02 \x01(\tR\x14digitalInterruptName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"8\n GetDigitalInterruptValueResponse\x12\x14\n\x05value\x18\x01 \x01(\x03R\x05value"t\n\x12StreamTicksRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\tpin_names\x18\x02 \x03(\tR\x08pinNames\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"X\n\x13StreamTicksResponse\x12\x19\n\x08pin_name\x18\x01 \x01(\tR\x07pinName\x12\x12\n\x04time\x18\x02 \x01(\x04R\x04time\x12\x12\n\x04high\x18\x03 \x01(\x08R\x04high"\xe4\x01\n\x13SetPowerModeRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12A\n\npower_mode\x18\x02 \x01(\x0e2".viam.component.board.v1.PowerModeR\tpowerMode\x12:\n\x08duration\x18\x03 \x01(\x0b2\x19.google.protobuf.DurationH\x00R\x08duration\x88\x01\x01\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraB\x0b\n\t_duration"\x16\n\x14SetPowerModeResponse*[\n\tPowerMode\x12\x1a\n\x16POWER_MODE_UNSPECIFIED\x10\x00\x12\x15\n\x11POWER_MODE_NORMAL\x10\x01\x12\x1b\n\x17POWER_MODE_OFFLINE_DEEP\x10\x022\xf0\x10\n\x0cBoardService\x12\x8e\x01\n\x07SetGPIO\x12\'.viam.component.board.v1.SetGPIORequest\x1a(.viam.component.board.v1.SetGPIOResponse"0\x82\xd3\xe4\x93\x02*\x1a(/viam/api/v1/component/board/{name}/gpio\x12\x8e\x01\n\x07GetGPIO\x12\'.viam.component.board.v1.GetGPIORequest\x1a(.viam.component.board.v1.GetGPIOResponse"0\x82\xd3\xe4\x93\x02*\x12(/viam/api/v1/component/board/{name}/gpio\x12\x81\x01\n\x03PWM\x12#.viam.component.board.v1.PWMRequest\x1a$.viam.component.board.v1.PWMResponse"/\x82\xd3\xe4\x93\x02)\x12\'/viam/api/v1/component/board/{name}/pwm\x12\x8a\x01\n\x06SetPWM\x12&.viam.component.board.v1.SetPWMRequest\x1a\'.viam.component.board.v1.SetPWMResponse"/\x82\xd3\xe4\x93\x02)\x1a\'/viam/api/v1/component/board/{name}/pwm\x12\xa1\x01\n\x0cPWMFrequency\x12,.viam.component.board.v1.PWMFrequencyRequest\x1a-.viam.component.board.v1.PWMFrequencyResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/board/{name}/pwm_freq\x12\xaa\x01\n\x0fSetPWMFrequency\x12/.viam.component.board.v1.SetPWMFrequencyRequest\x1a0.viam.component.board.v1.SetPWMFrequencyResponse"4\x82\xd3\xe4\x93\x02.\x1a,/viam/api/v1/component/board/{name}/pwm_freq\x12\x88\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/component/board/{name}/do_command\x12\xd2\x01\n\x10ReadAnalogReader\x120.viam.component.board.v1.ReadAnalogReaderRequest\x1a1.viam.component.board.v1.ReadAnalogReaderResponse"Y\x82\xd3\xe4\x93\x02S\x12Q/viam/api/v1/component/board/{board_name}/analog_reader/{analog_reader_name}/read\x12\xa2\x01\n\x0bWriteAnalog\x12+.viam.component.board.v1.WriteAnalogRequest\x1a,.viam.component.board.v1.WriteAnalogResponse"8\x82\xd3\xe4\x93\x022\x1a0/viam/api/v1/component/board/{name}/analog_write\x12\xf3\x01\n\x18GetDigitalInterruptValue\x128.viam.component.board.v1.GetDigitalInterruptValueRequest\x1a9.viam.component.board.v1.GetDigitalInterruptValueResponse"b\x82\xd3\xe4\x93\x02\\\x12Z/viam/api/v1/component/board/{board_name}/digital_interrupt/{digital_interrupt_name}/value\x12\xa3\x01\n\x0bStreamTicks\x12+.viam.component.board.v1.StreamTicksRequest\x1a,.viam.component.board.v1.StreamTicksResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/board/{name}/tick_stream0\x01\x12\xa3\x01\n\x0cSetPowerMode\x12,.viam.component.board.v1.SetPowerModeRequest\x1a-.viam.component.board.v1.SetPowerModeResponse"6\x82\xd3\xe4\x93\x020\x1a./viam/api/v1/component/board/{name}/power_mode\x12\x94\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"6\x82\xd3\xe4\x93\x020\x12./viam/api/v1/component/board/{name}/geometriesBA\n\x1bcom.viam.component.board.v1Z"go.viam.com/api/component/board/v1b\x06proto3') diff --git a/src/viam/gen/component/board/v1/board_pb2.pyi b/src/viam/gen/component/board/v1/board_pb2.pyi index 028f4c2ed7..fdabc3a537 100644 --- a/src/viam/gen/component/board/v1/board_pb2.pyi +++ b/src/viam/gen/component/board/v1/board_pb2.pyi @@ -2,28 +2,28 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.duration_pb2 -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import duration_pb2 as _duration_pb2 +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor class _PowerMode: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _PowerModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PowerMode.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _PowerModeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_PowerMode.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor POWER_MODE_UNSPECIFIED: _PowerMode.ValueType POWER_MODE_NORMAL: _PowerMode.ValueType POWER_MODE_OFFLINE_DEEP: _PowerMode.ValueType @@ -33,464 +33,497 @@ class PowerMode(_PowerMode, metaclass=_PowerModeEnumTypeWrapper): POWER_MODE_UNSPECIFIED: PowerMode.ValueType POWER_MODE_NORMAL: PowerMode.ValueType POWER_MODE_OFFLINE_DEEP: PowerMode.ValueType -global___PowerMode = PowerMode +Global___PowerMode: _TypeAlias = PowerMode -@typing.final -class Status(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class Status(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class AnalogsEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str - value: builtins.int + @_typing.final + class AnalogsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.int - def __init__(self, *, key: builtins.str=..., value: builtins.int=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - @typing.final - class DigitalInterruptsEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str - value: builtins.int + @_typing.final + class DigitalInterruptsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.int - def __init__(self, *, key: builtins.str=..., value: builtins.int=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - ANALOGS_FIELD_NUMBER: builtins.int - DIGITAL_INTERRUPTS_FIELD_NUMBER: builtins.int + ANALOGS_FIELD_NUMBER: _builtins.int + DIGITAL_INTERRUPTS_FIELD_NUMBER: _builtins.int - @property - def analogs(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.int]: + @_builtins.property + def analogs(self) -> _containers.ScalarMap[_builtins.str, _builtins.int]: ... - @property - def digital_interrupts(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.int]: + @_builtins.property + def digital_interrupts(self) -> _containers.ScalarMap[_builtins.str, _builtins.int]: ... - def __init__(self, *, analogs: collections.abc.Mapping[builtins.str, builtins.int] | None=..., digital_interrupts: collections.abc.Mapping[builtins.str, builtins.int] | None=...) -> None: + def __init__(self, *, analogs: _abc.Mapping[_builtins.str, _builtins.int] | None=..., digital_interrupts: _abc.Mapping[_builtins.str, _builtins.int] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['analogs', b'analogs', 'digital_interrupts', b'digital_interrupts'] - def ClearField(self, field_name: typing.Literal['analogs', b'analogs', 'digital_interrupts', b'digital_interrupts']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Status = Status +Global___Status: _TypeAlias = Status -@typing.final -class SetGPIORequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - PIN_FIELD_NUMBER: builtins.int - HIGH_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - pin: builtins.str - high: builtins.bool +@_typing.final +class SetGPIORequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + PIN_FIELD_NUMBER: _builtins.int + HIGH_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + pin: _builtins.str + high: _builtins.bool - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., pin: builtins.str=..., high: builtins.bool=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., pin: _builtins.str=..., high: _builtins.bool=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'high', b'high', 'name', b'name', 'pin', b'pin'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'high', b'high', 'name', b'name', 'pin', b'pin']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SetGPIORequest = SetGPIORequest +Global___SetGPIORequest: _TypeAlias = SetGPIORequest -@typing.final -class SetGPIOResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SetGPIOResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SetGPIOResponse = SetGPIOResponse +Global___SetGPIOResponse: _TypeAlias = SetGPIOResponse -@typing.final -class GetGPIORequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - PIN_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - pin: builtins.str +@_typing.final +class GetGPIORequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + PIN_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + pin: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., pin: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., pin: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'pin', b'pin'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'pin', b'pin']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetGPIORequest = GetGPIORequest +Global___GetGPIORequest: _TypeAlias = GetGPIORequest -@typing.final -class GetGPIOResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - HIGH_FIELD_NUMBER: builtins.int - high: builtins.bool +@_typing.final +class GetGPIOResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + HIGH_FIELD_NUMBER: _builtins.int + high: _builtins.bool - def __init__(self, *, high: builtins.bool=...) -> None: + def __init__(self, *, high: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['high', b'high'] - def ClearField(self, field_name: typing.Literal['high', b'high']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetGPIOResponse = GetGPIOResponse +Global___GetGPIOResponse: _TypeAlias = GetGPIOResponse -@typing.final -class PWMRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - PIN_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - pin: builtins.str +@_typing.final +class PWMRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + PIN_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + pin: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., pin: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., pin: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'pin', b'pin'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'pin', b'pin']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PWMRequest = PWMRequest +Global___PWMRequest: _TypeAlias = PWMRequest -@typing.final -class PWMResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DUTY_CYCLE_PCT_FIELD_NUMBER: builtins.int - duty_cycle_pct: builtins.float +@_typing.final +class PWMResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DUTY_CYCLE_PCT_FIELD_NUMBER: _builtins.int + duty_cycle_pct: _builtins.float '0-1' - def __init__(self, *, duty_cycle_pct: builtins.float=...) -> None: + def __init__(self, *, duty_cycle_pct: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['duty_cycle_pct', b'duty_cycle_pct'] - def ClearField(self, field_name: typing.Literal['duty_cycle_pct', b'duty_cycle_pct']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PWMResponse = PWMResponse +Global___PWMResponse: _TypeAlias = PWMResponse -@typing.final -class SetPWMRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - PIN_FIELD_NUMBER: builtins.int - DUTY_CYCLE_PCT_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - pin: builtins.str - duty_cycle_pct: builtins.float +@_typing.final +class SetPWMRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + PIN_FIELD_NUMBER: _builtins.int + DUTY_CYCLE_PCT_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + pin: _builtins.str + duty_cycle_pct: _builtins.float '0-1' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., pin: builtins.str=..., duty_cycle_pct: builtins.float=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., pin: _builtins.str=..., duty_cycle_pct: _builtins.float=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['duty_cycle_pct', b'duty_cycle_pct', 'extra', b'extra', 'name', b'name', 'pin', b'pin'] - def ClearField(self, field_name: typing.Literal['duty_cycle_pct', b'duty_cycle_pct', 'extra', b'extra', 'name', b'name', 'pin', b'pin']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SetPWMRequest = SetPWMRequest +Global___SetPWMRequest: _TypeAlias = SetPWMRequest -@typing.final -class SetPWMResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SetPWMResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SetPWMResponse = SetPWMResponse +Global___SetPWMResponse: _TypeAlias = SetPWMResponse -@typing.final -class PWMFrequencyRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - PIN_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - pin: builtins.str +@_typing.final +class PWMFrequencyRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + PIN_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + pin: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., pin: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., pin: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'pin', b'pin'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'pin', b'pin']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PWMFrequencyRequest = PWMFrequencyRequest +Global___PWMFrequencyRequest: _TypeAlias = PWMFrequencyRequest -@typing.final -class PWMFrequencyResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FREQUENCY_HZ_FIELD_NUMBER: builtins.int - frequency_hz: builtins.int +@_typing.final +class PWMFrequencyResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FREQUENCY_HZ_FIELD_NUMBER: _builtins.int + frequency_hz: _builtins.int - def __init__(self, *, frequency_hz: builtins.int=...) -> None: + def __init__(self, *, frequency_hz: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['frequency_hz', b'frequency_hz'] - def ClearField(self, field_name: typing.Literal['frequency_hz', b'frequency_hz']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PWMFrequencyResponse = PWMFrequencyResponse +Global___PWMFrequencyResponse: _TypeAlias = PWMFrequencyResponse -@typing.final -class SetPWMFrequencyRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - PIN_FIELD_NUMBER: builtins.int - FREQUENCY_HZ_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - pin: builtins.str - frequency_hz: builtins.int +@_typing.final +class SetPWMFrequencyRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + PIN_FIELD_NUMBER: _builtins.int + FREQUENCY_HZ_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + pin: _builtins.str + frequency_hz: _builtins.int - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., pin: builtins.str=..., frequency_hz: builtins.int=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., pin: _builtins.str=..., frequency_hz: _builtins.int=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'frequency_hz', b'frequency_hz', 'name', b'name', 'pin', b'pin'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'frequency_hz', b'frequency_hz', 'name', b'name', 'pin', b'pin']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SetPWMFrequencyRequest = SetPWMFrequencyRequest +Global___SetPWMFrequencyRequest: _TypeAlias = SetPWMFrequencyRequest -@typing.final -class SetPWMFrequencyResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SetPWMFrequencyResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SetPWMFrequencyResponse = SetPWMFrequencyResponse +Global___SetPWMFrequencyResponse: _TypeAlias = SetPWMFrequencyResponse -@typing.final -class ReadAnalogReaderRequest(google.protobuf.message.Message): +@_typing.final +class ReadAnalogReaderRequest(_message.Message): """Analog Reader""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BOARD_NAME_FIELD_NUMBER: builtins.int - ANALOG_READER_NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - board_name: builtins.str - analog_reader_name: builtins.str - - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + DESCRIPTOR: _descriptor.Descriptor + BOARD_NAME_FIELD_NUMBER: _builtins.int + ANALOG_READER_NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + board_name: _builtins.str + analog_reader_name: _builtins.str + + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, board_name: builtins.str=..., analog_reader_name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, board_name: _builtins.str=..., analog_reader_name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['analog_reader_name', b'analog_reader_name', 'board_name', b'board_name', 'extra', b'extra'] - def ClearField(self, field_name: typing.Literal['analog_reader_name', b'analog_reader_name', 'board_name', b'board_name', 'extra', b'extra']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ReadAnalogReaderRequest = ReadAnalogReaderRequest +Global___ReadAnalogReaderRequest: _TypeAlias = ReadAnalogReaderRequest -@typing.final -class ReadAnalogReaderResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VALUE_FIELD_NUMBER: builtins.int - MIN_RANGE_FIELD_NUMBER: builtins.int - MAX_RANGE_FIELD_NUMBER: builtins.int - STEP_SIZE_FIELD_NUMBER: builtins.int - value: builtins.int - min_range: builtins.float - max_range: builtins.float - step_size: builtins.float +@_typing.final +class ReadAnalogReaderResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + VALUE_FIELD_NUMBER: _builtins.int + MIN_RANGE_FIELD_NUMBER: _builtins.int + MAX_RANGE_FIELD_NUMBER: _builtins.int + STEP_SIZE_FIELD_NUMBER: _builtins.int + value: _builtins.int + min_range: _builtins.float + max_range: _builtins.float + step_size: _builtins.float - def __init__(self, *, value: builtins.int=..., min_range: builtins.float=..., max_range: builtins.float=..., step_size: builtins.float=...) -> None: + def __init__(self, *, value: _builtins.int=..., min_range: _builtins.float=..., max_range: _builtins.float=..., step_size: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['max_range', b'max_range', 'min_range', b'min_range', 'step_size', b'step_size', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['max_range', b'max_range', 'min_range', b'min_range', 'step_size', b'step_size', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ReadAnalogReaderResponse = ReadAnalogReaderResponse +Global___ReadAnalogReaderResponse: _TypeAlias = ReadAnalogReaderResponse -@typing.final -class WriteAnalogRequest(google.protobuf.message.Message): +@_typing.final +class WriteAnalogRequest(_message.Message): """Analog Writer""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - PIN_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - pin: builtins.str - value: builtins.int - - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + PIN_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + pin: _builtins.str + value: _builtins.int + + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., pin: builtins.str=..., value: builtins.int=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., pin: _builtins.str=..., value: _builtins.int=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'pin', b'pin', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'pin', b'pin', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___WriteAnalogRequest = WriteAnalogRequest +Global___WriteAnalogRequest: _TypeAlias = WriteAnalogRequest -@typing.final -class WriteAnalogResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class WriteAnalogResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___WriteAnalogResponse = WriteAnalogResponse +Global___WriteAnalogResponse: _TypeAlias = WriteAnalogResponse -@typing.final -class GetDigitalInterruptValueRequest(google.protobuf.message.Message): +@_typing.final +class GetDigitalInterruptValueRequest(_message.Message): """Digital Interrupt""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - BOARD_NAME_FIELD_NUMBER: builtins.int - DIGITAL_INTERRUPT_NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - board_name: builtins.str - digital_interrupt_name: builtins.str - - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + DESCRIPTOR: _descriptor.Descriptor + BOARD_NAME_FIELD_NUMBER: _builtins.int + DIGITAL_INTERRUPT_NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + board_name: _builtins.str + digital_interrupt_name: _builtins.str + + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, board_name: builtins.str=..., digital_interrupt_name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, board_name: _builtins.str=..., digital_interrupt_name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['board_name', b'board_name', 'digital_interrupt_name', b'digital_interrupt_name', 'extra', b'extra'] - def ClearField(self, field_name: typing.Literal['board_name', b'board_name', 'digital_interrupt_name', b'digital_interrupt_name', 'extra', b'extra']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetDigitalInterruptValueRequest = GetDigitalInterruptValueRequest +Global___GetDigitalInterruptValueRequest: _TypeAlias = GetDigitalInterruptValueRequest -@typing.final -class GetDigitalInterruptValueResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VALUE_FIELD_NUMBER: builtins.int - value: builtins.int +@_typing.final +class GetDigitalInterruptValueResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + VALUE_FIELD_NUMBER: _builtins.int + value: _builtins.int - def __init__(self, *, value: builtins.int=...) -> None: + def __init__(self, *, value: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def ClearField(self, field_name: typing.Literal['value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetDigitalInterruptValueResponse = GetDigitalInterruptValueResponse +Global___GetDigitalInterruptValueResponse: _TypeAlias = GetDigitalInterruptValueResponse -@typing.final -class StreamTicksRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - PIN_NAMES_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class StreamTicksRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + PIN_NAMES_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Board name' - @property - def pin_names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def pin_names(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """Name of digital interrupts to recieve ticks from""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., pin_names: collections.abc.Iterable[builtins.str] | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., pin_names: _abc.Iterable[_builtins.str] | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'pin_names', b'pin_names'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'pin_names', b'pin_names']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StreamTicksRequest = StreamTicksRequest +Global___StreamTicksRequest: _TypeAlias = StreamTicksRequest -@typing.final -class StreamTicksResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PIN_NAME_FIELD_NUMBER: builtins.int - TIME_FIELD_NUMBER: builtins.int - HIGH_FIELD_NUMBER: builtins.int - pin_name: builtins.str +@_typing.final +class StreamTicksResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PIN_NAME_FIELD_NUMBER: _builtins.int + TIME_FIELD_NUMBER: _builtins.int + HIGH_FIELD_NUMBER: _builtins.int + pin_name: _builtins.str 'name of interrupt' - time: builtins.int + time: _builtins.int 'Time in nanoseconds of a tick' - high: builtins.bool + high: _builtins.bool 'Value high or low of the tick' - def __init__(self, *, pin_name: builtins.str=..., time: builtins.int=..., high: builtins.bool=...) -> None: + def __init__(self, *, pin_name: _builtins.str=..., time: _builtins.int=..., high: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['high', b'high', 'pin_name', b'pin_name', 'time', b'time'] - def ClearField(self, field_name: typing.Literal['high', b'high', 'pin_name', b'pin_name', 'time', b'time']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StreamTicksResponse = StreamTicksResponse +Global___StreamTicksResponse: _TypeAlias = StreamTicksResponse -@typing.final -class SetPowerModeRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - POWER_MODE_FIELD_NUMBER: builtins.int - DURATION_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class SetPowerModeRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + POWER_MODE_FIELD_NUMBER: _builtins.int + DURATION_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'name of board' - power_mode: global___PowerMode.ValueType + power_mode: Global___PowerMode.ValueType 'Requested power mode' - @property - def duration(self) -> google.protobuf.duration_pb2.Duration: + @_builtins.property + def duration(self) -> _duration_pb2.Duration: """Requested duration to stay in `power_mode`""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., power_mode: global___PowerMode.ValueType=..., duration: google.protobuf.duration_pb2.Duration | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., power_mode: Global___PowerMode.ValueType=..., duration: _duration_pb2.Duration | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_duration', b'_duration', 'duration', b'duration', 'extra', b'extra'] - def HasField(self, field_name: typing.Literal['_duration', b'_duration', 'duration', b'duration', 'extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_duration', b'_duration', 'duration', b'duration', 'extra', b'extra', 'name', b'name', 'power_mode', b'power_mode'] - def ClearField(self, field_name: typing.Literal['_duration', b'_duration', 'duration', b'duration', 'extra', b'extra', 'name', b'name', 'power_mode', b'power_mode']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__duration: _TypeAlias = _typing.Literal['duration'] + _WhichOneofArgType__duration: _TypeAlias = _typing.Literal['_duration', b'_duration'] - def WhichOneof(self, oneof_group: typing.Literal['_duration', b'_duration']) -> typing.Literal['duration'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__duration) -> _WhichOneofReturnType__duration | None: ... -global___SetPowerModeRequest = SetPowerModeRequest +Global___SetPowerModeRequest: _TypeAlias = SetPowerModeRequest -@typing.final -class SetPowerModeResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SetPowerModeResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SetPowerModeResponse = SetPowerModeResponse \ No newline at end of file +Global___SetPowerModeResponse: _TypeAlias = SetPowerModeResponse \ No newline at end of file diff --git a/src/viam/gen/component/button/v1/button_grpc.py b/src/viam/gen/component/button/v1/button_grpc.py index f36d03d0bb..cab722153f 100644 --- a/src/viam/gen/component/button/v1/button_grpc.py +++ b/src/viam/gen/component/button/v1/button_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/button/v1/button_pb2.py b/src/viam/gen/component/button/v1/button_pb2.py index 21ac3f6926..788f352e9a 100644 --- a/src/viam/gen/component/button/v1/button_pb2.py +++ b/src/viam/gen/component/button/v1/button_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/button/v1/button.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/button/v1/button.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n component/button/v1/button.proto\x12\x18viam.component.button.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"P\n\x0bPushRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cPushResponse2\xaa\x02\n\rButtonService\x12\x8c\x01\n\x04Push\x12%.viam.component.button.v1.PushRequest\x1a&.viam.component.button.v1.PushResponse"5\xa0\x92)\x01\x82\xd3\xe4\x93\x02+\x1a)/viam/api/v1/component/button/{name}/push\x12\x89\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"7\x82\xd3\xe4\x93\x021"//viam/api/v1/component/button/{name}/do_commandBC\n\x1ccom.viam.component.button.v1Z#go.viam.com/api/component/button/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/button/v1/button_pb2.pyi b/src/viam/gen/component/button/v1/button_pb2.pyi index 86357245bf..1fdb4a210a 100644 --- a/src/viam/gen/component/button/v1/button_pb2.pyi +++ b/src/viam/gen/component/button/v1/button_pb2.pyi @@ -2,38 +2,45 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor -@typing.final -class PushRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class PushRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PushRequest = PushRequest +Global___PushRequest: _TypeAlias = PushRequest -@typing.final -class PushResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class PushResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___PushResponse = PushResponse \ No newline at end of file +Global___PushResponse: _TypeAlias = PushResponse \ No newline at end of file diff --git a/src/viam/gen/component/camera/v1/camera_grpc.py b/src/viam/gen/component/camera/v1/camera_grpc.py index b4856a4f10..9e26d3bce0 100644 --- a/src/viam/gen/component/camera/v1/camera_grpc.py +++ b/src/viam/gen/component/camera/v1/camera_grpc.py @@ -7,8 +7,7 @@ import grpclib.server from .... import app from .... import common -import google.api.annotations_pb2 -import google.api.httpbody_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/camera/v1/camera_pb2.py b/src/viam/gen/component/camera/v1/camera_pb2.py index 452d285941..db682b5efe 100644 --- a/src/viam/gen/component/camera/v1/camera_pb2.py +++ b/src/viam/gen/component/camera/v1/camera_pb2.py @@ -4,12 +4,12 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/camera/v1/camera.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/camera/v1/camera.proto') _sym_db = _symbol_database.Default() from ....app.data.v1 import data_pb2 as app_dot_data_dot_v1_dot_data__pb2 from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 -from google.api import httpbody_pb2 as google_dot_api_dot_httpbody__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import httpbody_pb2 as google_dot_api_dot_httpbody__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n component/camera/v1/camera.proto\x12\x18viam.component.camera.v1\x1a\x16app/data/v1/data.proto\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x19google/api/httpbody.proto\x1a\x1cgoogle/protobuf/struct.proto"q\n\x0fGetImageRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\tmime_type\x18\x02 \x01(\tR\x08mimeType\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"E\n\x10GetImageResponse\x12\x1b\n\tmime_type\x18\x01 \x01(\tR\x08mimeType\x12\x14\n\x05image\x18\x02 \x01(\x0cR\x05image"\x85\x01\n\x10GetImagesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12.\n\x13filter_source_names\x18\x02 \x03(\tR\x11filterSourceNames\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x9d\x01\n\x11GetImagesResponse\x127\n\x06images\x18\x01 \x03(\x0b2\x1f.viam.component.camera.v1.ImageR\x06images\x12O\n\x11response_metadata\x18\xa4\x92\x05 \x01(\x0b2 .viam.common.v1.ResponseMetadataR\x10responseMetadata"\xd6\x01\n\x05Image\x12\x1f\n\x0bsource_name\x18\x01 \x01(\tR\nsourceName\x128\n\x06format\x18\x02 \x01(\x0e2 .viam.component.camera.v1.FormatR\x06format\x12\x14\n\x05image\x18\x03 \x01(\x0cR\x05image\x12\x1b\n\tmime_type\x18\x04 \x01(\tR\x08mimeType\x12?\n\x0bannotations\x18\x05 \x01(\x0b2\x1d.viam.app.data.v1.AnnotationsR\x0bannotations"t\n\x12RenderFrameRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\tmime_type\x18\x02 \x01(\tR\x08mimeType\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"v\n\x14GetPointCloudRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\tmime_type\x18\x02 \x01(\tR\x08mimeType\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"U\n\x15GetPointCloudResponse\x12\x1b\n\tmime_type\x18\x01 \x01(\tR\x08mimeType\x12\x1f\n\x0bpoint_cloud\x18\x02 \x01(\x0cR\npointCloud"*\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"\xb5\x03\n\x15GetPropertiesResponse\x12!\n\x0csupports_pcd\x18\x01 \x01(\x08R\x0bsupportsPcd\x12`\n\x14intrinsic_parameters\x18\x02 \x01(\x0b2-.viam.component.camera.v1.IntrinsicParametersR\x13intrinsicParameters\x12c\n\x15distortion_parameters\x18\x03 \x01(\x0b2..viam.component.camera.v1.DistortionParametersR\x14distortionParameters\x12\x1d\n\nmime_types\x18\x04 \x03(\tR\tmimeTypes\x12"\n\nframe_rate\x18\x05 \x01(\x02H\x00R\tframeRate\x88\x01\x01\x12`\n\x14extrinsic_parameters\x18\x06 \x01(\x0b2-.viam.component.camera.v1.ExtrinsicParametersR\x13extrinsicParametersB\r\n\x0b_frame_rate"E\n\x07Webcams\x12:\n\x07webcams\x18\x01 \x03(\x0b2 .viam.component.camera.v1.WebcamR\x07webcams"\x9e\x01\n\x06Webcam\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x12\x16\n\x06status\x18\x02 \x01(\tR\x06status\x12B\n\nproperties\x18\x03 \x03(\x0b2".viam.component.camera.v1.PropertyR\nproperties\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x0e\n\x02id\x18\x05 \x01(\tR\x02id"\x84\x01\n\x08Property\x12\x19\n\x08width_px\x18\x01 \x01(\x05R\x07widthPx\x12\x1b\n\theight_px\x18\x02 \x01(\x05R\x08heightPx\x12!\n\x0cframe_format\x18\x03 \x01(\tR\x0bframeFormat\x12\x1d\n\nframe_rate\x18\x04 \x01(\x02R\tframeRate"\xc9\x01\n\x13IntrinsicParameters\x12\x19\n\x08width_px\x18\x01 \x01(\rR\x07widthPx\x12\x1b\n\theight_px\x18\x02 \x01(\rR\x08heightPx\x12\x1c\n\nfocal_x_px\x18\x03 \x01(\x01R\x08focalXPx\x12\x1c\n\nfocal_y_px\x18\x04 \x01(\x01R\x08focalYPx\x12\x1e\n\x0bcenter_x_px\x18\x05 \x01(\x01R\tcenterXPx\x12\x1e\n\x0bcenter_y_px\x18\x06 \x01(\x01R\tcenterYPx"L\n\x14DistortionParameters\x12\x14\n\x05model\x18\x01 \x01(\tR\x05model\x12\x1e\n\nparameters\x18\x02 \x03(\x01R\nparameters"\x8f\x01\n\x13ExtrinsicParameters\x129\n\x0btranslation\x18\x01 \x01(\x0b2\x17.viam.common.v1.Vector3R\x0btranslation\x12=\n\x0borientation\x18\x02 \x01(\x0b2\x1b.viam.common.v1.OrientationR\x0borientation*l\n\x06Format\x12\x16\n\x12FORMAT_UNSPECIFIED\x10\x00\x12\x13\n\x0fFORMAT_RAW_RGBA\x10\x01\x12\x14\n\x10FORMAT_RAW_DEPTH\x10\x02\x12\x0f\n\x0bFORMAT_JPEG\x10\x03\x12\x0e\n\nFORMAT_PNG\x10\x042\xcf\x08\n\rCameraService\x12\x95\x01\n\x08GetImage\x12).viam.component.camera.v1.GetImageRequest\x1a*.viam.component.camera.v1.GetImageResponse"2\x82\xd3\xe4\x93\x02,\x12*/viam/api/v1/component/camera/{name}/image\x12\x99\x01\n\tGetImages\x12*.viam.component.camera.v1.GetImagesRequest\x1a+.viam.component.camera.v1.GetImagesResponse"3\x82\xd3\xe4\x93\x02-\x12+/viam/api/v1/component/camera/{name}/images\x12\x8c\x01\n\x0bRenderFrame\x12,.viam.component.camera.v1.RenderFrameRequest\x1a\x14.google.api.HttpBody"9\x82\xd3\xe4\x93\x023\x121/viam/api/v1/component/camera/{name}/render_frame\x12\xaa\x01\n\rGetPointCloud\x12..viam.component.camera.v1.GetPointCloudRequest\x1a/.viam.component.camera.v1.GetPointCloudResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/camera/{name}/point_cloud\x12\xa9\x01\n\rGetProperties\x12..viam.component.camera.v1.GetPropertiesRequest\x1a/.viam.component.camera.v1.GetPropertiesResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/camera/{name}/properties\x12\x89\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"7\x82\xd3\xe4\x93\x021"//viam/api/v1/component/camera/{name}/do_command\x12\x95\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/camera/{name}/geometriesBC\n\x1ccom.viam.component.camera.v1Z#go.viam.com/api/component/camera/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/camera/v1/camera_pb2.pyi b/src/viam/gen/component/camera/v1/camera_pb2.pyi index 520d7f38d0..04fc9c8af6 100644 --- a/src/viam/gen/component/camera/v1/camera_pb2.pyi +++ b/src/viam/gen/component/camera/v1/camera_pb2.pyi @@ -2,29 +2,29 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -from .... import app -import builtins -import collections.abc -from .... import common -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 +from app.data.v1 import data_pb2 as _data_pb2 +from collections import abc as _abc +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor class _Format: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _FormatEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Format.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _FormatEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_Format.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor FORMAT_UNSPECIFIED: _Format.ValueType FORMAT_RAW_RGBA: _Format.ValueType FORMAT_RAW_DEPTH: _Format.ValueType @@ -38,397 +38,423 @@ FORMAT_RAW_RGBA: Format.ValueType FORMAT_RAW_DEPTH: Format.ValueType FORMAT_JPEG: Format.ValueType FORMAT_PNG: Format.ValueType -global___Format = Format - -@typing.final -class GetImageRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - MIME_TYPE_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +Global___Format: _TypeAlias = Format + +@_typing.final +class GetImageRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + MIME_TYPE_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a camera' - mime_type: builtins.str + mime_type: _builtins.str 'Requested MIME type of response' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., mime_type: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., mime_type: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'mime_type', b'mime_type', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'mime_type', b'mime_type', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetImageRequest = GetImageRequest +Global___GetImageRequest: _TypeAlias = GetImageRequest -@typing.final -class GetImageResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MIME_TYPE_FIELD_NUMBER: builtins.int - IMAGE_FIELD_NUMBER: builtins.int - mime_type: builtins.str +@_typing.final +class GetImageResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MIME_TYPE_FIELD_NUMBER: _builtins.int + IMAGE_FIELD_NUMBER: _builtins.int + mime_type: _builtins.str 'Actual MIME type of response' - image: builtins.bytes + image: _builtins.bytes 'Frame in bytes' - def __init__(self, *, mime_type: builtins.str=..., image: builtins.bytes=...) -> None: + def __init__(self, *, mime_type: _builtins.str=..., image: _builtins.bytes=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['image', b'image', 'mime_type', b'mime_type'] - def ClearField(self, field_name: typing.Literal['image', b'image', 'mime_type', b'mime_type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetImageResponse = GetImageResponse +Global___GetImageResponse: _TypeAlias = GetImageResponse -@typing.final -class GetImagesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - FILTER_SOURCE_NAMES_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetImagesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + FILTER_SOURCE_NAMES_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a camera' - @property - def filter_source_names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def filter_source_names(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """The names of the sensors to retrieve images from. If this is not provided, all images from all sensors will be returned. """ - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., filter_source_names: collections.abc.Iterable[builtins.str] | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., filter_source_names: _abc.Iterable[_builtins.str] | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'filter_source_names', b'filter_source_names', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'filter_source_names', b'filter_source_names', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetImagesRequest = GetImagesRequest +Global___GetImagesRequest: _TypeAlias = GetImagesRequest -@typing.final -class GetImagesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - IMAGES_FIELD_NUMBER: builtins.int - RESPONSE_METADATA_FIELD_NUMBER: builtins.int +@_typing.final +class GetImagesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + IMAGES_FIELD_NUMBER: _builtins.int + RESPONSE_METADATA_FIELD_NUMBER: _builtins.int - @property - def images(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Image]: + @_builtins.property + def images(self) -> _containers.RepeatedCompositeFieldContainer[Global___Image]: """list of images returned from the camera system""" - @property - def response_metadata(self) -> common.v1.common_pb2.ResponseMetadata: + @_builtins.property + def response_metadata(self) -> _common_pb2.ResponseMetadata: """contains timestamp data""" - def __init__(self, *, images: collections.abc.Iterable[global___Image] | None=..., response_metadata: common.v1.common_pb2.ResponseMetadata | None=...) -> None: + def __init__(self, *, images: _abc.Iterable[Global___Image] | None=..., response_metadata: _common_pb2.ResponseMetadata | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['response_metadata', b'response_metadata'] - def HasField(self, field_name: typing.Literal['response_metadata', b'response_metadata']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['images', b'images', 'response_metadata', b'response_metadata'] - def ClearField(self, field_name: typing.Literal['images', b'images', 'response_metadata', b'response_metadata']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetImagesResponse = GetImagesResponse +Global___GetImagesResponse: _TypeAlias = GetImagesResponse -@typing.final -class Image(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SOURCE_NAME_FIELD_NUMBER: builtins.int - FORMAT_FIELD_NUMBER: builtins.int - IMAGE_FIELD_NUMBER: builtins.int - MIME_TYPE_FIELD_NUMBER: builtins.int - ANNOTATIONS_FIELD_NUMBER: builtins.int - source_name: builtins.str +@_typing.final +class Image(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SOURCE_NAME_FIELD_NUMBER: _builtins.int + FORMAT_FIELD_NUMBER: _builtins.int + IMAGE_FIELD_NUMBER: _builtins.int + MIME_TYPE_FIELD_NUMBER: _builtins.int + ANNOTATIONS_FIELD_NUMBER: _builtins.int + source_name: _builtins.str 'the name of the sensor where the image came from' - format: global___Format.ValueType + format: Global___Format.ValueType 'format of the response image bytes' - image: builtins.bytes + image: _builtins.bytes 'image in bytes' - mime_type: builtins.str + mime_type: _builtins.str 'The mime type of the image' - @property - def annotations(self) -> app.data.v1.data_pb2.Annotations: + @_builtins.property + def annotations(self) -> _data_pb2.Annotations: """annotations can be used to store additional information about the image""" - def __init__(self, *, source_name: builtins.str=..., format: global___Format.ValueType=..., image: builtins.bytes=..., mime_type: builtins.str=..., annotations: app.data.v1.data_pb2.Annotations | None=...) -> None: + def __init__(self, *, source_name: _builtins.str=..., format: Global___Format.ValueType=..., image: _builtins.bytes=..., mime_type: _builtins.str=..., annotations: _data_pb2.Annotations | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['annotations', b'annotations'] - def HasField(self, field_name: typing.Literal['annotations', b'annotations']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['annotations', b'annotations', 'format', b'format', 'image', b'image', 'mime_type', b'mime_type', 'source_name', b'source_name'] - def ClearField(self, field_name: typing.Literal['annotations', b'annotations', 'format', b'format', 'image', b'image', 'mime_type', b'mime_type', 'source_name', b'source_name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Image = Image +Global___Image: _TypeAlias = Image -@typing.final -class RenderFrameRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - MIME_TYPE_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class RenderFrameRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + MIME_TYPE_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a camera' - mime_type: builtins.str + mime_type: _builtins.str 'Requested MIME type of response' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., mime_type: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., mime_type: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'mime_type', b'mime_type', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'mime_type', b'mime_type', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RenderFrameRequest = RenderFrameRequest +Global___RenderFrameRequest: _TypeAlias = RenderFrameRequest -@typing.final -class GetPointCloudRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - MIME_TYPE_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetPointCloudRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + MIME_TYPE_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a camera' - mime_type: builtins.str + mime_type: _builtins.str 'Requested MIME type of response' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., mime_type: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., mime_type: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'mime_type', b'mime_type', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'mime_type', b'mime_type', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPointCloudRequest = GetPointCloudRequest +Global___GetPointCloudRequest: _TypeAlias = GetPointCloudRequest -@typing.final -class GetPointCloudResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MIME_TYPE_FIELD_NUMBER: builtins.int - POINT_CLOUD_FIELD_NUMBER: builtins.int - mime_type: builtins.str +@_typing.final +class GetPointCloudResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MIME_TYPE_FIELD_NUMBER: _builtins.int + POINT_CLOUD_FIELD_NUMBER: _builtins.int + mime_type: _builtins.str 'Actual MIME type of response' - point_cloud: builtins.bytes + point_cloud: _builtins.bytes 'Frame in bytes' - def __init__(self, *, mime_type: builtins.str=..., point_cloud: builtins.bytes=...) -> None: + def __init__(self, *, mime_type: _builtins.str=..., point_cloud: _builtins.bytes=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['mime_type', b'mime_type', 'point_cloud', b'point_cloud'] - def ClearField(self, field_name: typing.Literal['mime_type', b'mime_type', 'point_cloud', b'point_cloud']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPointCloudResponse = GetPointCloudResponse +Global___GetPointCloudResponse: _TypeAlias = GetPointCloudResponse -@typing.final -class GetPropertiesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetPropertiesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a camera' - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesRequest = GetPropertiesRequest +Global___GetPropertiesRequest: _TypeAlias = GetPropertiesRequest -@typing.final -class GetPropertiesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SUPPORTS_PCD_FIELD_NUMBER: builtins.int - INTRINSIC_PARAMETERS_FIELD_NUMBER: builtins.int - DISTORTION_PARAMETERS_FIELD_NUMBER: builtins.int - MIME_TYPES_FIELD_NUMBER: builtins.int - FRAME_RATE_FIELD_NUMBER: builtins.int - EXTRINSIC_PARAMETERS_FIELD_NUMBER: builtins.int - supports_pcd: builtins.bool +@_typing.final +class GetPropertiesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SUPPORTS_PCD_FIELD_NUMBER: _builtins.int + INTRINSIC_PARAMETERS_FIELD_NUMBER: _builtins.int + DISTORTION_PARAMETERS_FIELD_NUMBER: _builtins.int + MIME_TYPES_FIELD_NUMBER: _builtins.int + FRAME_RATE_FIELD_NUMBER: _builtins.int + EXTRINSIC_PARAMETERS_FIELD_NUMBER: _builtins.int + supports_pcd: _builtins.bool 'A boolean property determining whether the camera supports the return of pointcloud data' - frame_rate: builtins.float + frame_rate: _builtins.float 'Optional camera frame rate for image capture timing' - @property - def intrinsic_parameters(self) -> global___IntrinsicParameters: + @_builtins.property + def intrinsic_parameters(self) -> Global___IntrinsicParameters: """Parameters for doing a perspective of a 3D scene to a 2D plane If camera does not provide intrinsic parameters, leave the field empty Initializing the parameters with 0-values is considered an error """ - @property - def distortion_parameters(self) -> global___DistortionParameters: + @_builtins.property + def distortion_parameters(self) -> Global___DistortionParameters: """Parameters for modeling lens distortion in cameras If camera does not provide distortion parameters, leave the field empty Initializing the parameters with 0-values is considered an error """ - @property - def mime_types(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def mime_types(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """Supported MIME types by the camera""" - @property - def extrinsic_parameters(self) -> global___ExtrinsicParameters: + @_builtins.property + def extrinsic_parameters(self) -> Global___ExtrinsicParameters: """Parameters for the camera's position relative to a reference frame If camera does not provide extrinsic parameters, leave the field empty """ - def __init__(self, *, supports_pcd: builtins.bool=..., intrinsic_parameters: global___IntrinsicParameters | None=..., distortion_parameters: global___DistortionParameters | None=..., mime_types: collections.abc.Iterable[builtins.str] | None=..., frame_rate: builtins.float | None=..., extrinsic_parameters: global___ExtrinsicParameters | None=...) -> None: + def __init__(self, *, supports_pcd: _builtins.bool=..., intrinsic_parameters: Global___IntrinsicParameters | None=..., distortion_parameters: Global___DistortionParameters | None=..., mime_types: _abc.Iterable[_builtins.str] | None=..., frame_rate: _builtins.float | None=..., extrinsic_parameters: Global___ExtrinsicParameters | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_frame_rate', b'_frame_rate', 'distortion_parameters', b'distortion_parameters', 'extrinsic_parameters', b'extrinsic_parameters', 'frame_rate', b'frame_rate', 'intrinsic_parameters', b'intrinsic_parameters'] - def HasField(self, field_name: typing.Literal['_frame_rate', b'_frame_rate', 'distortion_parameters', b'distortion_parameters', 'extrinsic_parameters', b'extrinsic_parameters', 'frame_rate', b'frame_rate', 'intrinsic_parameters', b'intrinsic_parameters']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_frame_rate', b'_frame_rate', 'distortion_parameters', b'distortion_parameters', 'extrinsic_parameters', b'extrinsic_parameters', 'frame_rate', b'frame_rate', 'intrinsic_parameters', b'intrinsic_parameters', 'mime_types', b'mime_types', 'supports_pcd', b'supports_pcd'] - def ClearField(self, field_name: typing.Literal['_frame_rate', b'_frame_rate', 'distortion_parameters', b'distortion_parameters', 'extrinsic_parameters', b'extrinsic_parameters', 'frame_rate', b'frame_rate', 'intrinsic_parameters', b'intrinsic_parameters', 'mime_types', b'mime_types', 'supports_pcd', b'supports_pcd']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__frame_rate: _TypeAlias = _typing.Literal['frame_rate'] + _WhichOneofArgType__frame_rate: _TypeAlias = _typing.Literal['_frame_rate', b'_frame_rate'] - def WhichOneof(self, oneof_group: typing.Literal['_frame_rate', b'_frame_rate']) -> typing.Literal['frame_rate'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__frame_rate) -> _WhichOneofReturnType__frame_rate | None: ... -global___GetPropertiesResponse = GetPropertiesResponse +Global___GetPropertiesResponse: _TypeAlias = GetPropertiesResponse -@typing.final -class Webcams(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - WEBCAMS_FIELD_NUMBER: builtins.int +@_typing.final +class Webcams(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + WEBCAMS_FIELD_NUMBER: _builtins.int - @property - def webcams(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Webcam]: + @_builtins.property + def webcams(self) -> _containers.RepeatedCompositeFieldContainer[Global___Webcam]: ... - def __init__(self, *, webcams: collections.abc.Iterable[global___Webcam] | None=...) -> None: + def __init__(self, *, webcams: _abc.Iterable[Global___Webcam] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['webcams', b'webcams'] - def ClearField(self, field_name: typing.Literal['webcams', b'webcams']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Webcams = Webcams +Global___Webcams: _TypeAlias = Webcams -@typing.final -class Webcam(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LABEL_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - PROPERTIES_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - ID_FIELD_NUMBER: builtins.int - label: builtins.str +@_typing.final +class Webcam(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LABEL_FIELD_NUMBER: _builtins.int + STATUS_FIELD_NUMBER: _builtins.int + PROPERTIES_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + ID_FIELD_NUMBER: _builtins.int + label: _builtins.str 'Camera driver label (for internal use only)' - status: builtins.str + status: _builtins.str 'Camera driver status' - name: builtins.str + name: _builtins.str 'Camera human-readable driver name' - id: builtins.str + id: _builtins.str 'Camera unique identifier' - @property - def properties(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Property]: + @_builtins.property + def properties(self) -> _containers.RepeatedCompositeFieldContainer[Global___Property]: """Camera properties""" - def __init__(self, *, label: builtins.str=..., status: builtins.str=..., properties: collections.abc.Iterable[global___Property] | None=..., name: builtins.str=..., id: builtins.str=...) -> None: + def __init__(self, *, label: _builtins.str=..., status: _builtins.str=..., properties: _abc.Iterable[Global___Property] | None=..., name: _builtins.str=..., id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'label', b'label', 'name', b'name', 'properties', b'properties', 'status', b'status'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'label', b'label', 'name', b'name', 'properties', b'properties', 'status', b'status']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Webcam = Webcam +Global___Webcam: _TypeAlias = Webcam -@typing.final -class Property(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - WIDTH_PX_FIELD_NUMBER: builtins.int - HEIGHT_PX_FIELD_NUMBER: builtins.int - FRAME_FORMAT_FIELD_NUMBER: builtins.int - FRAME_RATE_FIELD_NUMBER: builtins.int - width_px: builtins.int +@_typing.final +class Property(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + WIDTH_PX_FIELD_NUMBER: _builtins.int + HEIGHT_PX_FIELD_NUMBER: _builtins.int + FRAME_FORMAT_FIELD_NUMBER: _builtins.int + FRAME_RATE_FIELD_NUMBER: _builtins.int + width_px: _builtins.int 'Video resolution width in px' - height_px: builtins.int + height_px: _builtins.int 'Video resolution height in px' - frame_format: builtins.str + frame_format: _builtins.str 'Video frame format' - frame_rate: builtins.float + frame_rate: _builtins.float 'Video frame rate in fps' - def __init__(self, *, width_px: builtins.int=..., height_px: builtins.int=..., frame_format: builtins.str=..., frame_rate: builtins.float=...) -> None: + def __init__(self, *, width_px: _builtins.int=..., height_px: _builtins.int=..., frame_format: _builtins.str=..., frame_rate: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['frame_format', b'frame_format', 'frame_rate', b'frame_rate', 'height_px', b'height_px', 'width_px', b'width_px'] - def ClearField(self, field_name: typing.Literal['frame_format', b'frame_format', 'frame_rate', b'frame_rate', 'height_px', b'height_px', 'width_px', b'width_px']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Property = Property +Global___Property: _TypeAlias = Property -@typing.final -class IntrinsicParameters(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - WIDTH_PX_FIELD_NUMBER: builtins.int - HEIGHT_PX_FIELD_NUMBER: builtins.int - FOCAL_X_PX_FIELD_NUMBER: builtins.int - FOCAL_Y_PX_FIELD_NUMBER: builtins.int - CENTER_X_PX_FIELD_NUMBER: builtins.int - CENTER_Y_PX_FIELD_NUMBER: builtins.int - width_px: builtins.int - height_px: builtins.int - focal_x_px: builtins.float - focal_y_px: builtins.float - center_x_px: builtins.float - center_y_px: builtins.float +@_typing.final +class IntrinsicParameters(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + WIDTH_PX_FIELD_NUMBER: _builtins.int + HEIGHT_PX_FIELD_NUMBER: _builtins.int + FOCAL_X_PX_FIELD_NUMBER: _builtins.int + FOCAL_Y_PX_FIELD_NUMBER: _builtins.int + CENTER_X_PX_FIELD_NUMBER: _builtins.int + CENTER_Y_PX_FIELD_NUMBER: _builtins.int + width_px: _builtins.int + height_px: _builtins.int + focal_x_px: _builtins.float + focal_y_px: _builtins.float + center_x_px: _builtins.float + center_y_px: _builtins.float - def __init__(self, *, width_px: builtins.int=..., height_px: builtins.int=..., focal_x_px: builtins.float=..., focal_y_px: builtins.float=..., center_x_px: builtins.float=..., center_y_px: builtins.float=...) -> None: + def __init__(self, *, width_px: _builtins.int=..., height_px: _builtins.int=..., focal_x_px: _builtins.float=..., focal_y_px: _builtins.float=..., center_x_px: _builtins.float=..., center_y_px: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['center_x_px', b'center_x_px', 'center_y_px', b'center_y_px', 'focal_x_px', b'focal_x_px', 'focal_y_px', b'focal_y_px', 'height_px', b'height_px', 'width_px', b'width_px'] - def ClearField(self, field_name: typing.Literal['center_x_px', b'center_x_px', 'center_y_px', b'center_y_px', 'focal_x_px', b'focal_x_px', 'focal_y_px', b'focal_y_px', 'height_px', b'height_px', 'width_px', b'width_px']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IntrinsicParameters = IntrinsicParameters +Global___IntrinsicParameters: _TypeAlias = IntrinsicParameters -@typing.final -class DistortionParameters(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODEL_FIELD_NUMBER: builtins.int - PARAMETERS_FIELD_NUMBER: builtins.int - model: builtins.str +@_typing.final +class DistortionParameters(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODEL_FIELD_NUMBER: _builtins.int + PARAMETERS_FIELD_NUMBER: _builtins.int + model: _builtins.str - @property - def parameters(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: + @_builtins.property + def parameters(self) -> _containers.RepeatedScalarFieldContainer[_builtins.float]: ... - def __init__(self, *, model: builtins.str=..., parameters: collections.abc.Iterable[builtins.float] | None=...) -> None: + def __init__(self, *, model: _builtins.str=..., parameters: _abc.Iterable[_builtins.float] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['model', b'model', 'parameters', b'parameters'] - def ClearField(self, field_name: typing.Literal['model', b'model', 'parameters', b'parameters']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DistortionParameters = DistortionParameters +Global___DistortionParameters: _TypeAlias = DistortionParameters -@typing.final -class ExtrinsicParameters(google.protobuf.message.Message): +@_typing.final +class ExtrinsicParameters(_message.Message): """ExtrinsicParameters define the position of the camera relative to a reference frame (the world or another sensor). """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TRANSLATION_FIELD_NUMBER: builtins.int - ORIENTATION_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + TRANSLATION_FIELD_NUMBER: _builtins.int + ORIENTATION_FIELD_NUMBER: _builtins.int - @property - def translation(self) -> common.v1.common_pb2.Vector3: + @_builtins.property + def translation(self) -> _common_pb2.Vector3: """The translation from the reference frame to the camera.""" - @property - def orientation(self) -> common.v1.common_pb2.Orientation: + @_builtins.property + def orientation(self) -> _common_pb2.Orientation: """The orientation from the reference frame to the camera.""" - def __init__(self, *, translation: common.v1.common_pb2.Vector3 | None=..., orientation: common.v1.common_pb2.Orientation | None=...) -> None: + def __init__(self, *, translation: _common_pb2.Vector3 | None=..., orientation: _common_pb2.Orientation | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['orientation', b'orientation', 'translation', b'translation'] - def HasField(self, field_name: typing.Literal['orientation', b'orientation', 'translation', b'translation']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['orientation', b'orientation', 'translation', b'translation'] - def ClearField(self, field_name: typing.Literal['orientation', b'orientation', 'translation', b'translation']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ExtrinsicParameters = ExtrinsicParameters \ No newline at end of file +Global___ExtrinsicParameters: _TypeAlias = ExtrinsicParameters \ No newline at end of file diff --git a/src/viam/gen/component/encoder/v1/encoder_grpc.py b/src/viam/gen/component/encoder/v1/encoder_grpc.py index 64c2ee93aa..17754f9976 100644 --- a/src/viam/gen/component/encoder/v1/encoder_grpc.py +++ b/src/viam/gen/component/encoder/v1/encoder_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/encoder/v1/encoder_pb2.py b/src/viam/gen/component/encoder/v1/encoder_pb2.py index 286b8bd15b..46f1bf63d7 100644 --- a/src/viam/gen/component/encoder/v1/encoder_pb2.py +++ b/src/viam/gen/component/encoder/v1/encoder_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/encoder/v1/encoder.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/encoder/v1/encoder.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"component/encoder/v1/encoder.proto\x12\x19viam.component.encoder.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"\xbc\x01\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12Q\n\rposition_type\x18\x02 \x01(\x0e2\'.viam.component.encoder.v1.PositionTypeH\x00R\x0cpositionType\x88\x01\x01\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraB\x10\n\x0e_position_type"y\n\x13GetPositionResponse\x12\x14\n\x05value\x18\x01 \x01(\x02R\x05value\x12L\n\rposition_type\x18\x02 \x01(\x0e2\'.viam.component.encoder.v1.PositionTypeR\x0cpositionType"Y\n\x14ResetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x17\n\x15ResetPositionResponse"Y\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x83\x01\n\x15GetPropertiesResponse\x122\n\x15ticks_count_supported\x18\x01 \x01(\x08R\x13ticksCountSupported\x126\n\x17angle_degrees_supported\x18\x02 \x01(\x08R\x15angleDegreesSupported*m\n\x0cPositionType\x12\x1d\n\x19POSITION_TYPE_UNSPECIFIED\x10\x00\x12\x1d\n\x19POSITION_TYPE_TICKS_COUNT\x10\x01\x12\x1f\n\x1bPOSITION_TYPE_ANGLE_DEGREES\x10\x022\xc7\x06\n\x0eEncoderService\x12\xa8\x01\n\x0bGetPosition\x12-.viam.component.encoder.v1.GetPositionRequest\x1a..viam.component.encoder.v1.GetPositionResponse":\x82\xd3\xe4\x93\x024\x122/viam/api/v1/component/encoder/{name}/get_position\x12\xb0\x01\n\rResetPosition\x12/.viam.component.encoder.v1.ResetPositionRequest\x1a0.viam.component.encoder.v1.ResetPositionResponse"<\x82\xd3\xe4\x93\x026\x124/viam/api/v1/component/encoder/{name}/reset_position\x12\xb0\x01\n\rGetProperties\x12/.viam.component.encoder.v1.GetPropertiesRequest\x1a0.viam.component.encoder.v1.GetPropertiesResponse"<\x82\xd3\xe4\x93\x026"4/viam/api/v1/component/encoder/{name}/get_properties\x12\x8a\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/component/encoder/{name}/do_command\x12\x96\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/encoder/{name}/geometriesBE\n\x1dcom.viam.component.encoder.v1Z$go.viam.com/api/component/encoder/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/encoder/v1/encoder_pb2.pyi b/src/viam/gen/component/encoder/v1/encoder_pb2.pyi index 5f30d983cc..9384315d2f 100644 --- a/src/viam/gen/component/encoder/v1/encoder_pb2.pyi +++ b/src/viam/gen/component/encoder/v1/encoder_pb2.pyi @@ -2,25 +2,25 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor class _PositionType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _PositionTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PositionType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _PositionTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_PositionType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor POSITION_TYPE_UNSPECIFIED: _PositionType.ValueType POSITION_TYPE_TICKS_COUNT: _PositionType.ValueType "Return type for relative encoders that report\n how far they've gone from a start position\n " @@ -34,114 +34,124 @@ POSITION_TYPE_TICKS_COUNT: PositionType.ValueType "Return type for relative encoders that report\nhow far they've gone from a start position\n" POSITION_TYPE_ANGLE_DEGREES: PositionType.ValueType 'Return type for absolute encoders that report\ntheir position in degrees along the radial axis\n' -global___PositionType = PositionType - -@typing.final -class GetPositionRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - POSITION_TYPE_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +Global___PositionType: _TypeAlias = PositionType + +@_typing.final +class GetPositionRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + POSITION_TYPE_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of encoder' - position_type: global___PositionType.ValueType + position_type: Global___PositionType.ValueType 'If supplied, the response will return the specified\n position type. If the driver does not implement\n the requested type, this call will return an error.\n If position type is not specified, the response\n will return a default according to the driver.\n ' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., position_type: global___PositionType.ValueType | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., position_type: Global___PositionType.ValueType | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_position_type', b'_position_type', 'extra', b'extra', 'position_type', b'position_type'] - def HasField(self, field_name: typing.Literal['_position_type', b'_position_type', 'extra', b'extra', 'position_type', b'position_type']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_position_type', b'_position_type', 'extra', b'extra', 'name', b'name', 'position_type', b'position_type'] - def ClearField(self, field_name: typing.Literal['_position_type', b'_position_type', 'extra', b'extra', 'name', b'name', 'position_type', b'position_type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__position_type: _TypeAlias = _typing.Literal['position_type'] + _WhichOneofArgType__position_type: _TypeAlias = _typing.Literal['_position_type', b'_position_type'] - def WhichOneof(self, oneof_group: typing.Literal['_position_type', b'_position_type']) -> typing.Literal['position_type'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__position_type) -> _WhichOneofReturnType__position_type | None: ... -global___GetPositionRequest = GetPositionRequest +Global___GetPositionRequest: _TypeAlias = GetPositionRequest -@typing.final -class GetPositionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VALUE_FIELD_NUMBER: builtins.int - POSITION_TYPE_FIELD_NUMBER: builtins.int - value: builtins.float - position_type: global___PositionType.ValueType +@_typing.final +class GetPositionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + VALUE_FIELD_NUMBER: _builtins.int + POSITION_TYPE_FIELD_NUMBER: _builtins.int + value: _builtins.float + position_type: Global___PositionType.ValueType - def __init__(self, *, value: builtins.float=..., position_type: global___PositionType.ValueType=...) -> None: + def __init__(self, *, value: _builtins.float=..., position_type: Global___PositionType.ValueType=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['position_type', b'position_type', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['position_type', b'position_type', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPositionResponse = GetPositionResponse - -@typing.final -class ResetPositionRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +Global___GetPositionResponse: _TypeAlias = GetPositionResponse + +@_typing.final +class ResetPositionRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of an encoder' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ResetPositionRequest = ResetPositionRequest +Global___ResetPositionRequest: _TypeAlias = ResetPositionRequest -@typing.final -class ResetPositionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ResetPositionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ResetPositionResponse = ResetPositionResponse - -@typing.final -class GetPropertiesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +Global___ResetPositionResponse: _TypeAlias = ResetPositionResponse + +@_typing.final +class GetPropertiesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of the encoder' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesRequest = GetPropertiesRequest +Global___GetPropertiesRequest: _TypeAlias = GetPropertiesRequest -@typing.final -class GetPropertiesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TICKS_COUNT_SUPPORTED_FIELD_NUMBER: builtins.int - ANGLE_DEGREES_SUPPORTED_FIELD_NUMBER: builtins.int - ticks_count_supported: builtins.bool - angle_degrees_supported: builtins.bool +@_typing.final +class GetPropertiesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + TICKS_COUNT_SUPPORTED_FIELD_NUMBER: _builtins.int + ANGLE_DEGREES_SUPPORTED_FIELD_NUMBER: _builtins.int + ticks_count_supported: _builtins.bool + angle_degrees_supported: _builtins.bool - def __init__(self, *, ticks_count_supported: builtins.bool=..., angle_degrees_supported: builtins.bool=...) -> None: + def __init__(self, *, ticks_count_supported: _builtins.bool=..., angle_degrees_supported: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['angle_degrees_supported', b'angle_degrees_supported', 'ticks_count_supported', b'ticks_count_supported'] - def ClearField(self, field_name: typing.Literal['angle_degrees_supported', b'angle_degrees_supported', 'ticks_count_supported', b'ticks_count_supported']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesResponse = GetPropertiesResponse \ No newline at end of file +Global___GetPropertiesResponse: _TypeAlias = GetPropertiesResponse \ No newline at end of file diff --git a/src/viam/gen/component/gantry/v1/gantry_grpc.py b/src/viam/gen/component/gantry/v1/gantry_grpc.py index 1dd41b4163..02ea898039 100644 --- a/src/viam/gen/component/gantry/v1/gantry_grpc.py +++ b/src/viam/gen/component/gantry/v1/gantry_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/gantry/v1/gantry_pb2.py b/src/viam/gen/component/gantry/v1/gantry_pb2.py index f009d49f74..5d6db44a20 100644 --- a/src/viam/gen/component/gantry/v1/gantry_pb2.py +++ b/src/viam/gen/component/gantry/v1/gantry_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/gantry/v1/gantry.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/gantry/v1/gantry.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n component/gantry/v1/gantry.proto\x12\x18viam.component.gantry.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"W\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"8\n\x13GetPositionResponse\x12!\n\x0cpositions_mm\x18\x01 \x03(\x01R\x0bpositionsMm"\xa8\x01\n\x15MoveToPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12!\n\x0cpositions_mm\x18\x02 \x03(\x01R\x0bpositionsMm\x12)\n\x11speeds_mm_per_sec\x18\x03 \x03(\x01R\x0espeedsMmPerSec\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x18\n\x16MoveToPositionResponse"P\n\x0bHomeRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"$\n\x0cHomeResponse\x12\x14\n\x05homed\x18\x01 \x01(\x08R\x05homed"V\n\x11GetLengthsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"3\n\x12GetLengthsResponse\x12\x1d\n\nlengths_mm\x18\x01 \x03(\x01R\tlengthsMm"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"g\n\x06Status\x12!\n\x0cpositions_mm\x18\x01 \x03(\x01R\x0bpositionsMm\x12\x1d\n\nlengths_mm\x18\x02 \x03(\x01R\tlengthsMm\x12\x1b\n\tis_moving\x18\x03 \x01(\x08R\x08isMoving"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving2\xf2\n\n\rGantryService\x12\xa1\x01\n\x0bGetPosition\x12,.viam.component.gantry.v1.GetPositionRequest\x1a-.viam.component.gantry.v1.GetPositionResponse"5\x82\xd3\xe4\x93\x02/\x12-/viam/api/v1/component/gantry/{name}/position\x12\xae\x01\n\x0eMoveToPosition\x12/.viam.component.gantry.v1.MoveToPositionRequest\x1a0.viam.component.gantry.v1.MoveToPositionResponse"9\xa0\x92)\x01\x82\xd3\xe4\x93\x02/\x1a-/viam/api/v1/component/gantry/{name}/position\x12\x88\x01\n\x04Home\x12%.viam.component.gantry.v1.HomeRequest\x1a&.viam.component.gantry.v1.HomeResponse"1\x82\xd3\xe4\x93\x02+\x1a)/viam/api/v1/component/gantry/{name}/home\x12\x9d\x01\n\nGetLengths\x12+.viam.component.gantry.v1.GetLengthsRequest\x1a,.viam.component.gantry.v1.GetLengthsResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/gantry/{name}/lengths\x12\x88\x01\n\x04Stop\x12%.viam.component.gantry.v1.StopRequest\x1a&.viam.component.gantry.v1.StopResponse"1\x82\xd3\xe4\x93\x02+")/viam/api/v1/component/gantry/{name}/stop\x12\x99\x01\n\x08IsMoving\x12).viam.component.gantry.v1.IsMovingRequest\x1a*.viam.component.gantry.v1.IsMovingResponse"6\x82\xd3\xe4\x93\x020\x12./viam/api/v1/component/gantry/{name}/is_moving\x12\x89\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"7\x82\xd3\xe4\x93\x021"//viam/api/v1/component/gantry/{name}/do_command\x12\x95\x01\n\rGetKinematics\x12$.viam.common.v1.GetKinematicsRequest\x1a%.viam.common.v1.GetKinematicsResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/gantry/{name}/kinematics\x12\x95\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/gantry/{name}/geometriesBC\n\x1ccom.viam.component.gantry.v1Z#go.viam.com/api/component/gantry/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/gantry/v1/gantry_pb2.pyi b/src/viam/gen/component/gantry/v1/gantry_pb2.pyi index f66f0c95b7..909fcedab1 100644 --- a/src/viam/gen/component/gantry/v1/gantry_pb2.pyi +++ b/src/viam/gen/component/gantry/v1/gantry_pb2.pyi @@ -2,238 +2,259 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class GetPositionRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class GetPositionRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPositionRequest = GetPositionRequest +Global___GetPositionRequest: _TypeAlias = GetPositionRequest -@typing.final -class GetPositionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POSITIONS_MM_FIELD_NUMBER: builtins.int +@_typing.final +class GetPositionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POSITIONS_MM_FIELD_NUMBER: _builtins.int - @property - def positions_mm(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: + @_builtins.property + def positions_mm(self) -> _containers.RepeatedScalarFieldContainer[_builtins.float]: ... - def __init__(self, *, positions_mm: collections.abc.Iterable[builtins.float] | None=...) -> None: + def __init__(self, *, positions_mm: _abc.Iterable[_builtins.float] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['positions_mm', b'positions_mm'] - def ClearField(self, field_name: typing.Literal['positions_mm', b'positions_mm']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPositionResponse = GetPositionResponse +Global___GetPositionResponse: _TypeAlias = GetPositionResponse -@typing.final -class MoveToPositionRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - POSITIONS_MM_FIELD_NUMBER: builtins.int - SPEEDS_MM_PER_SEC_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class MoveToPositionRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + POSITIONS_MM_FIELD_NUMBER: _builtins.int + SPEEDS_MM_PER_SEC_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def positions_mm(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: + @_builtins.property + def positions_mm(self) -> _containers.RepeatedScalarFieldContainer[_builtins.float]: """Number of millimeters to move the gantry by respective to each axis.""" - @property - def speeds_mm_per_sec(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: + @_builtins.property + def speeds_mm_per_sec(self) -> _containers.RepeatedScalarFieldContainer[_builtins.float]: """Speeds to move each gantry axis must match length and order of positions_mm.""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., positions_mm: collections.abc.Iterable[builtins.float] | None=..., speeds_mm_per_sec: collections.abc.Iterable[builtins.float] | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., positions_mm: _abc.Iterable[_builtins.float] | None=..., speeds_mm_per_sec: _abc.Iterable[_builtins.float] | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'positions_mm', b'positions_mm', 'speeds_mm_per_sec', b'speeds_mm_per_sec'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'positions_mm', b'positions_mm', 'speeds_mm_per_sec', b'speeds_mm_per_sec']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MoveToPositionRequest = MoveToPositionRequest +Global___MoveToPositionRequest: _TypeAlias = MoveToPositionRequest -@typing.final -class MoveToPositionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class MoveToPositionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___MoveToPositionResponse = MoveToPositionResponse +Global___MoveToPositionResponse: _TypeAlias = MoveToPositionResponse -@typing.final -class HomeRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class HomeRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___HomeRequest = HomeRequest +Global___HomeRequest: _TypeAlias = HomeRequest -@typing.final -class HomeResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - HOMED_FIELD_NUMBER: builtins.int - homed: builtins.bool +@_typing.final +class HomeResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + HOMED_FIELD_NUMBER: _builtins.int + homed: _builtins.bool 'A bool describing whether the gantry has completed homing' - def __init__(self, *, homed: builtins.bool=...) -> None: + def __init__(self, *, homed: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['homed', b'homed'] - def ClearField(self, field_name: typing.Literal['homed', b'homed']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___HomeResponse = HomeResponse +Global___HomeResponse: _TypeAlias = HomeResponse -@typing.final -class GetLengthsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetLengthsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetLengthsRequest = GetLengthsRequest +Global___GetLengthsRequest: _TypeAlias = GetLengthsRequest -@typing.final -class GetLengthsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LENGTHS_MM_FIELD_NUMBER: builtins.int +@_typing.final +class GetLengthsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LENGTHS_MM_FIELD_NUMBER: _builtins.int - @property - def lengths_mm(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: + @_builtins.property + def lengths_mm(self) -> _containers.RepeatedScalarFieldContainer[_builtins.float]: ... - def __init__(self, *, lengths_mm: collections.abc.Iterable[builtins.float] | None=...) -> None: + def __init__(self, *, lengths_mm: _abc.Iterable[_builtins.float] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['lengths_mm', b'lengths_mm'] - def ClearField(self, field_name: typing.Literal['lengths_mm', b'lengths_mm']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetLengthsResponse = GetLengthsResponse +Global___GetLengthsResponse: _TypeAlias = GetLengthsResponse -@typing.final -class StopRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class StopRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a gantry' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StopRequest = StopRequest +Global___StopRequest: _TypeAlias = StopRequest -@typing.final -class StopResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class StopResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___StopResponse = StopResponse +Global___StopResponse: _TypeAlias = StopResponse -@typing.final -class Status(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POSITIONS_MM_FIELD_NUMBER: builtins.int - LENGTHS_MM_FIELD_NUMBER: builtins.int - IS_MOVING_FIELD_NUMBER: builtins.int - is_moving: builtins.bool +@_typing.final +class Status(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POSITIONS_MM_FIELD_NUMBER: _builtins.int + LENGTHS_MM_FIELD_NUMBER: _builtins.int + IS_MOVING_FIELD_NUMBER: _builtins.int + is_moving: _builtins.bool - @property - def positions_mm(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: + @_builtins.property + def positions_mm(self) -> _containers.RepeatedScalarFieldContainer[_builtins.float]: ... - @property - def lengths_mm(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: + @_builtins.property + def lengths_mm(self) -> _containers.RepeatedScalarFieldContainer[_builtins.float]: ... - def __init__(self, *, positions_mm: collections.abc.Iterable[builtins.float] | None=..., lengths_mm: collections.abc.Iterable[builtins.float] | None=..., is_moving: builtins.bool=...) -> None: + def __init__(self, *, positions_mm: _abc.Iterable[_builtins.float] | None=..., lengths_mm: _abc.Iterable[_builtins.float] | None=..., is_moving: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['is_moving', b'is_moving', 'lengths_mm', b'lengths_mm', 'positions_mm', b'positions_mm'] - def ClearField(self, field_name: typing.Literal['is_moving', b'is_moving', 'lengths_mm', b'lengths_mm', 'positions_mm', b'positions_mm']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Status = Status +Global___Status: _TypeAlias = Status -@typing.final -class IsMovingRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class IsMovingRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsMovingRequest = IsMovingRequest +Global___IsMovingRequest: _TypeAlias = IsMovingRequest -@typing.final -class IsMovingResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - IS_MOVING_FIELD_NUMBER: builtins.int - is_moving: builtins.bool +@_typing.final +class IsMovingResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + IS_MOVING_FIELD_NUMBER: _builtins.int + is_moving: _builtins.bool - def __init__(self, *, is_moving: builtins.bool=...) -> None: + def __init__(self, *, is_moving: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['is_moving', b'is_moving'] - def ClearField(self, field_name: typing.Literal['is_moving', b'is_moving']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsMovingResponse = IsMovingResponse \ No newline at end of file +Global___IsMovingResponse: _TypeAlias = IsMovingResponse \ No newline at end of file diff --git a/src/viam/gen/component/generic/v1/generic_grpc.py b/src/viam/gen/component/generic/v1/generic_grpc.py index 006daa3d67..9656da7bae 100644 --- a/src/viam/gen/component/generic/v1/generic_grpc.py +++ b/src/viam/gen/component/generic/v1/generic_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google from .... import component class GenericServiceBase(abc.ABC): diff --git a/src/viam/gen/component/generic/v1/generic_pb2.py b/src/viam/gen/component/generic/v1/generic_pb2.py index 115b69c095..d531599110 100644 --- a/src/viam/gen/component/generic/v1/generic_pb2.py +++ b/src/viam/gen/component/generic/v1/generic_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/generic/v1/generic.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/generic/v1/generic.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"component/generic/v1/generic.proto\x12\x19viam.component.generic.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto2\xb6\x02\n\x0eGenericService\x12\x8a\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/component/generic/{name}/do_command\x12\x96\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/generic/{name}/geometriesBE\n\x1dcom.viam.component.generic.v1Z$go.viam.com/api/component/generic/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/component/generic/v1/generic_pb2.pyi b/src/viam/gen/component/generic/v1/generic_pb2.pyi index ab07168813..554b3b57f8 100644 --- a/src/viam/gen/component/generic/v1/generic_pb2.pyi +++ b/src/viam/gen/component/generic/v1/generic_pb2.pyi @@ -2,5 +2,5 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import google.protobuf.descriptor -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor \ No newline at end of file +from google.protobuf import descriptor as _descriptor +DESCRIPTOR: _descriptor.FileDescriptor \ No newline at end of file diff --git a/src/viam/gen/component/gripper/v1/gripper_grpc.py b/src/viam/gen/component/gripper/v1/gripper_grpc.py index 186a26df22..72ec3218b7 100644 --- a/src/viam/gen/component/gripper/v1/gripper_grpc.py +++ b/src/viam/gen/component/gripper/v1/gripper_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/gripper/v1/gripper_pb2.py b/src/viam/gen/component/gripper/v1/gripper_pb2.py index 208e610792..8c32c58f9e 100644 --- a/src/viam/gen/component/gripper/v1/gripper_pb2.py +++ b/src/viam/gen/component/gripper/v1/gripper_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/gripper/v1/gripper.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/gripper/v1/gripper.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"component/gripper/v1/gripper.proto\x12\x19viam.component.gripper.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"P\n\x0bOpenRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cOpenResponse"P\n\x0bGrabRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"W\n\x0cGrabResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving"^\n\x19IsHoldingSomethingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"{\n\x1aIsHoldingSomethingResponse\x120\n\x14is_holding_something\x18\x01 \x01(\x08R\x12isHoldingSomething\x12+\n\x04meta\x18c \x01(\x0b2\x17.google.protobuf.StructR\x04meta2\xe8\t\n\x0eGripperService\x12\x8f\x01\n\x04Open\x12&.viam.component.gripper.v1.OpenRequest\x1a\'.viam.component.gripper.v1.OpenResponse"6\xa0\x92)\x01\x82\xd3\xe4\x93\x02,\x1a*/viam/api/v1/component/gripper/{name}/open\x12\x8f\x01\n\x04Grab\x12&.viam.component.gripper.v1.GrabRequest\x1a\'.viam.component.gripper.v1.GrabResponse"6\xa0\x92)\x01\x82\xd3\xe4\x93\x02,\x1a*/viam/api/v1/component/gripper/{name}/grab\x12\x8b\x01\n\x04Stop\x12&.viam.component.gripper.v1.StopRequest\x1a\'.viam.component.gripper.v1.StopResponse"2\x82\xd3\xe4\x93\x02,"*/viam/api/v1/component/gripper/{name}/stop\x12\x9c\x01\n\x08IsMoving\x12*.viam.component.gripper.v1.IsMovingRequest\x1a+.viam.component.gripper.v1.IsMovingResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/gripper/{name}/is_moving\x12\xc5\x01\n\x12IsHoldingSomething\x124.viam.component.gripper.v1.IsHoldingSomethingRequest\x1a5.viam.component.gripper.v1.IsHoldingSomethingResponse"B\x82\xd3\xe4\x93\x02<\x12:/viam/api/v1/component/gripper/{name}/is_holding_something\x12\x8a\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/component/gripper/{name}/do_command\x12\x96\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/gripper/{name}/geometries\x12\x96\x01\n\rGetKinematics\x12$.viam.common.v1.GetKinematicsRequest\x1a%.viam.common.v1.GetKinematicsResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/gripper/{name}/kinematicsBE\n\x1dcom.viam.component.gripper.v1Z$go.viam.com/api/component/gripper/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/gripper/v1/gripper_pb2.pyi b/src/viam/gen/component/gripper/v1/gripper_pb2.pyi index 8977788710..8623929912 100644 --- a/src/viam/gen/component/gripper/v1/gripper_pb2.pyi +++ b/src/viam/gen/component/gripper/v1/gripper_pb2.pyi @@ -2,178 +2,197 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor -@typing.final -class OpenRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class OpenRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___OpenRequest = OpenRequest +Global___OpenRequest: _TypeAlias = OpenRequest -@typing.final -class OpenResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class OpenResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___OpenResponse = OpenResponse +Global___OpenResponse: _TypeAlias = OpenResponse -@typing.final -class GrabRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GrabRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GrabRequest = GrabRequest +Global___GrabRequest: _TypeAlias = GrabRequest -@typing.final -class GrabResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SUCCESS_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - success: builtins.bool +@_typing.final +class GrabResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SUCCESS_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + success: _builtins.bool - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, success: builtins.bool=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, success: _builtins.bool=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'success', b'success'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'success', b'success']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GrabResponse = GrabResponse +Global___GrabResponse: _TypeAlias = GrabResponse -@typing.final -class StopRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class StopRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a gripper' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StopRequest = StopRequest +Global___StopRequest: _TypeAlias = StopRequest -@typing.final -class StopResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class StopResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___StopResponse = StopResponse +Global___StopResponse: _TypeAlias = StopResponse -@typing.final -class IsMovingRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class IsMovingRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsMovingRequest = IsMovingRequest +Global___IsMovingRequest: _TypeAlias = IsMovingRequest -@typing.final -class IsMovingResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - IS_MOVING_FIELD_NUMBER: builtins.int - is_moving: builtins.bool +@_typing.final +class IsMovingResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + IS_MOVING_FIELD_NUMBER: _builtins.int + is_moving: _builtins.bool - def __init__(self, *, is_moving: builtins.bool=...) -> None: + def __init__(self, *, is_moving: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['is_moving', b'is_moving'] - def ClearField(self, field_name: typing.Literal['is_moving', b'is_moving']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsMovingResponse = IsMovingResponse +Global___IsMovingResponse: _TypeAlias = IsMovingResponse -@typing.final -class IsHoldingSomethingRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class IsHoldingSomethingRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsHoldingSomethingRequest = IsHoldingSomethingRequest +Global___IsHoldingSomethingRequest: _TypeAlias = IsHoldingSomethingRequest -@typing.final -class IsHoldingSomethingResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - IS_HOLDING_SOMETHING_FIELD_NUMBER: builtins.int - META_FIELD_NUMBER: builtins.int - is_holding_something: builtins.bool +@_typing.final +class IsHoldingSomethingResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + IS_HOLDING_SOMETHING_FIELD_NUMBER: _builtins.int + META_FIELD_NUMBER: _builtins.int + is_holding_something: _builtins.bool - @property - def meta(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def meta(self) -> _struct_pb2.Struct: ... - def __init__(self, *, is_holding_something: builtins.bool=..., meta: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, is_holding_something: _builtins.bool=..., meta: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['meta', b'meta'] - def HasField(self, field_name: typing.Literal['meta', b'meta']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['is_holding_something', b'is_holding_something', 'meta', b'meta'] - def ClearField(self, field_name: typing.Literal['is_holding_something', b'is_holding_something', 'meta', b'meta']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsHoldingSomethingResponse = IsHoldingSomethingResponse \ No newline at end of file +Global___IsHoldingSomethingResponse: _TypeAlias = IsHoldingSomethingResponse \ No newline at end of file diff --git a/src/viam/gen/component/inputcontroller/v1/input_controller_grpc.py b/src/viam/gen/component/inputcontroller/v1/input_controller_grpc.py index e019ed2258..c59ea07b01 100644 --- a/src/viam/gen/component/inputcontroller/v1/input_controller_grpc.py +++ b/src/viam/gen/component/inputcontroller/v1/input_controller_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 import google.protobuf.timestamp_pb2 from .... import component diff --git a/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.py b/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.py index c1273036c9..de71cfcb52 100644 --- a/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.py +++ b/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/inputcontroller/v1/input_controller.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/inputcontroller/v1/input_controller.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n3component/inputcontroller/v1/input_controller.proto\x12!viam.component.inputcontroller.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto"c\n\x12GetControlsRequest\x12\x1e\n\ncontroller\x18\x01 \x01(\tR\ncontroller\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"1\n\x13GetControlsResponse\x12\x1a\n\x08controls\x18\x01 \x03(\tR\x08controls"a\n\x10GetEventsRequest\x12\x1e\n\ncontroller\x18\x01 \x01(\tR\ncontroller\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"U\n\x11GetEventsResponse\x12@\n\x06events\x18\x01 \x03(\x0b2(.viam.component.inputcontroller.v1.EventR\x06events"\xa4\x01\n\x13TriggerEventRequest\x12\x1e\n\ncontroller\x18\x01 \x01(\tR\ncontroller\x12>\n\x05event\x18\x02 \x01(\x0b2(.viam.component.inputcontroller.v1.EventR\x05event\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x16\n\x14TriggerEventResponse"}\n\x05Event\x12.\n\x04time\x18\x01 \x01(\x0b2\x1a.google.protobuf.TimestampR\x04time\x12\x14\n\x05event\x18\x02 \x01(\tR\x05event\x12\x18\n\x07control\x18\x03 \x01(\tR\x07control\x12\x14\n\x05value\x18\x04 \x01(\x01R\x05value"\xa2\x02\n\x13StreamEventsRequest\x12\x1e\n\ncontroller\x18\x01 \x01(\tR\ncontroller\x12U\n\x06events\x18\x02 \x03(\x0b2=.viam.component.inputcontroller.v1.StreamEventsRequest.EventsR\x06events\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra\x1ae\n\x06Events\x12\x18\n\x07control\x18\x01 \x01(\tR\x07control\x12\x16\n\x06events\x18\x02 \x03(\tR\x06events\x12)\n\x10cancelled_events\x18\x03 \x03(\tR\x0fcancelledEvents"V\n\x14StreamEventsResponse\x12>\n\x05event\x18\x01 \x01(\x0b2(.viam.component.inputcontroller.v1.EventR\x05event"J\n\x06Status\x12@\n\x06events\x18\x01 \x03(\x0b2(.viam.component.inputcontroller.v1.EventR\x06events2\xa7\x08\n\x16InputControllerService\x12\xb8\x01\n\x0bGetControls\x125.viam.component.inputcontroller.v1.GetControlsRequest\x1a6.viam.component.inputcontroller.v1.GetControlsResponse":\x82\xd3\xe4\x93\x024\x122/viam/api/v1/component/input/{controller}/controls\x12\xb0\x01\n\tGetEvents\x123.viam.component.inputcontroller.v1.GetEventsRequest\x1a4.viam.component.inputcontroller.v1.GetEventsResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/input/{controller}/events\x12\xc1\x01\n\x0cStreamEvents\x126.viam.component.inputcontroller.v1.StreamEventsRequest\x1a7.viam.component.inputcontroller.v1.StreamEventsResponse">\x82\xd3\xe4\x93\x028\x126/viam/api/v1/component/input/{controller}/event_stream0\x01\x12\xb8\x01\n\x0cTriggerEvent\x126.viam.component.inputcontroller.v1.TriggerEventRequest\x1a7.viam.component.inputcontroller.v1.TriggerEventResponse"7\x82\xd3\xe4\x93\x021"//viam/api/v1/component/input/{controller}/event\x12\x88\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/component/input/{name}/do_command\x12\x94\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"6\x82\xd3\xe4\x93\x020\x12./viam/api/v1/component/input/{name}/geometriesBU\n%com.viam.component.inputcontroller.v1Z,go.viam.com/api/component/inputcontroller/v1b\x06proto3') diff --git a/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.pyi b/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.pyi index ad7acd929d..e7246c3ef5 100644 --- a/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.pyi +++ b/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.pyi @@ -2,242 +2,263 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import google.protobuf.struct_pb2 -import google.protobuf.timestamp_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class GetControlsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CONTROLLER_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - controller: builtins.str +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class GetControlsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CONTROLLER_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + controller: _builtins.str 'Name of an input controller' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, controller: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, controller: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['controller', b'controller', 'extra', b'extra'] - def ClearField(self, field_name: typing.Literal['controller', b'controller', 'extra', b'extra']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetControlsRequest = GetControlsRequest +Global___GetControlsRequest: _TypeAlias = GetControlsRequest -@typing.final -class GetControlsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CONTROLS_FIELD_NUMBER: builtins.int +@_typing.final +class GetControlsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CONTROLS_FIELD_NUMBER: _builtins.int - @property - def controls(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def controls(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """Returns a list of all the controls (buttons and axes) that are available to a given Input Controller """ - def __init__(self, *, controls: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, controls: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['controls', b'controls'] - def ClearField(self, field_name: typing.Literal['controls', b'controls']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetControlsResponse = GetControlsResponse - -@typing.final -class GetEventsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CONTROLLER_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - controller: builtins.str +Global___GetControlsResponse: _TypeAlias = GetControlsResponse + +@_typing.final +class GetEventsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CONTROLLER_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + controller: _builtins.str 'Name of an input controller' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, controller: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, controller: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['controller', b'controller', 'extra', b'extra'] - def ClearField(self, field_name: typing.Literal['controller', b'controller', 'extra', b'extra']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetEventsRequest = GetEventsRequest +Global___GetEventsRequest: _TypeAlias = GetEventsRequest -@typing.final -class GetEventsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - EVENTS_FIELD_NUMBER: builtins.int +@_typing.final +class GetEventsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + EVENTS_FIELD_NUMBER: _builtins.int - @property - def events(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Event]: + @_builtins.property + def events(self) -> _containers.RepeatedCompositeFieldContainer[Global___Event]: """Returns a list of the most recent event for each control on a given InputController. Effectively provides the current "state" of all buttons/axes on a given input controller """ - def __init__(self, *, events: collections.abc.Iterable[global___Event] | None=...) -> None: + def __init__(self, *, events: _abc.Iterable[Global___Event] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['events', b'events'] - def ClearField(self, field_name: typing.Literal['events', b'events']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetEventsResponse = GetEventsResponse - -@typing.final -class TriggerEventRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CONTROLLER_FIELD_NUMBER: builtins.int - EVENT_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - controller: builtins.str +Global___GetEventsResponse: _TypeAlias = GetEventsResponse + +@_typing.final +class TriggerEventRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CONTROLLER_FIELD_NUMBER: _builtins.int + EVENT_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + controller: _builtins.str 'Name of an input controller' - @property - def event(self) -> global___Event: + @_builtins.property + def event(self) -> Global___Event: """Digitally assert a given event""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, controller: builtins.str=..., event: global___Event | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, controller: _builtins.str=..., event: Global___Event | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['event', b'event', 'extra', b'extra'] - def HasField(self, field_name: typing.Literal['event', b'event', 'extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['controller', b'controller', 'event', b'event', 'extra', b'extra'] - def ClearField(self, field_name: typing.Literal['controller', b'controller', 'event', b'event', 'extra', b'extra']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TriggerEventRequest = TriggerEventRequest +Global___TriggerEventRequest: _TypeAlias = TriggerEventRequest -@typing.final -class TriggerEventResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class TriggerEventResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___TriggerEventResponse = TriggerEventResponse - -@typing.final -class Event(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TIME_FIELD_NUMBER: builtins.int - EVENT_FIELD_NUMBER: builtins.int - CONTROL_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - event: builtins.str +Global___TriggerEventResponse: _TypeAlias = TriggerEventResponse + +@_typing.final +class Event(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + TIME_FIELD_NUMBER: _builtins.int + EVENT_FIELD_NUMBER: _builtins.int + CONTROL_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + event: _builtins.str 'An event type (eg: ButtonPress, ButtonRelease)' - control: builtins.str + control: _builtins.str 'A control, can be a button (eg: ButtonSouth) or an axis (eg: AbsoluteX)' - value: builtins.float + value: _builtins.float '0 or 1 for buttons, -1.0 to +1.0 for axes' - @property - def time(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def time(self) -> _timestamp_pb2.Timestamp: """Timestamp of event""" - def __init__(self, *, time: google.protobuf.timestamp_pb2.Timestamp | None=..., event: builtins.str=..., control: builtins.str=..., value: builtins.float=...) -> None: + def __init__(self, *, time: _timestamp_pb2.Timestamp | None=..., event: _builtins.str=..., control: _builtins.str=..., value: _builtins.float=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['time', b'time'] - def HasField(self, field_name: typing.Literal['time', b'time']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['control', b'control', 'event', b'event', 'time', b'time', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['control', b'control', 'event', b'event', 'time', b'time', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Event = Event - -@typing.final -class StreamEventsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - @typing.final - class Events(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CONTROL_FIELD_NUMBER: builtins.int - EVENTS_FIELD_NUMBER: builtins.int - CANCELLED_EVENTS_FIELD_NUMBER: builtins.int - control: builtins.str +Global___Event: _TypeAlias = Event + +@_typing.final +class StreamEventsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class Events(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CONTROL_FIELD_NUMBER: _builtins.int + EVENTS_FIELD_NUMBER: _builtins.int + CANCELLED_EVENTS_FIELD_NUMBER: _builtins.int + control: _builtins.str 'Name of a control (button or axis)' - @property - def events(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def events(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """Specify which event types to recieve events for""" - @property - def cancelled_events(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def cancelled_events(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """Specify which event types to stop recieving events for This can be an empty list """ - def __init__(self, *, control: builtins.str=..., events: collections.abc.Iterable[builtins.str] | None=..., cancelled_events: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, control: _builtins.str=..., events: _abc.Iterable[_builtins.str] | None=..., cancelled_events: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['cancelled_events', b'cancelled_events', 'control', b'control', 'events', b'events'] - def ClearField(self, field_name: typing.Literal['cancelled_events', b'cancelled_events', 'control', b'control', 'events', b'events']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - CONTROLLER_FIELD_NUMBER: builtins.int - EVENTS_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - controller: builtins.str + CONTROLLER_FIELD_NUMBER: _builtins.int + EVENTS_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + controller: _builtins.str 'Name of an input controller' - @property - def events(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___StreamEventsRequest.Events]: + @_builtins.property + def events(self) -> _containers.RepeatedCompositeFieldContainer[Global___StreamEventsRequest.Events]: """A list of Events""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, controller: builtins.str=..., events: collections.abc.Iterable[global___StreamEventsRequest.Events] | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, controller: _builtins.str=..., events: _abc.Iterable[Global___StreamEventsRequest.Events] | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['controller', b'controller', 'events', b'events', 'extra', b'extra'] - def ClearField(self, field_name: typing.Literal['controller', b'controller', 'events', b'events', 'extra', b'extra']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StreamEventsRequest = StreamEventsRequest +Global___StreamEventsRequest: _TypeAlias = StreamEventsRequest -@typing.final -class StreamEventsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - EVENT_FIELD_NUMBER: builtins.int +@_typing.final +class StreamEventsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + EVENT_FIELD_NUMBER: _builtins.int - @property - def event(self) -> global___Event: + @_builtins.property + def event(self) -> Global___Event: """Event for a controller""" - def __init__(self, *, event: global___Event | None=...) -> None: + def __init__(self, *, event: Global___Event | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['event', b'event'] - def HasField(self, field_name: typing.Literal['event', b'event']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['event', b'event'] - def ClearField(self, field_name: typing.Literal['event', b'event']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StreamEventsResponse = StreamEventsResponse +Global___StreamEventsResponse: _TypeAlias = StreamEventsResponse -@typing.final -class Status(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - EVENTS_FIELD_NUMBER: builtins.int +@_typing.final +class Status(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + EVENTS_FIELD_NUMBER: _builtins.int - @property - def events(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Event]: + @_builtins.property + def events(self) -> _containers.RepeatedCompositeFieldContainer[Global___Event]: ... - def __init__(self, *, events: collections.abc.Iterable[global___Event] | None=...) -> None: + def __init__(self, *, events: _abc.Iterable[Global___Event] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['events', b'events'] - def ClearField(self, field_name: typing.Literal['events', b'events']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Status = Status \ No newline at end of file +Global___Status: _TypeAlias = Status \ No newline at end of file diff --git a/src/viam/gen/component/motor/v1/motor_grpc.py b/src/viam/gen/component/motor/v1/motor_grpc.py index 23af3a8f29..6291642f41 100644 --- a/src/viam/gen/component/motor/v1/motor_grpc.py +++ b/src/viam/gen/component/motor/v1/motor_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/motor/v1/motor_pb2.py b/src/viam/gen/component/motor/v1/motor_pb2.py index 17bb3d4405..a6d4a3ff4d 100644 --- a/src/viam/gen/component/motor/v1/motor_pb2.py +++ b/src/viam/gen/component/motor/v1/motor_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/motor/v1/motor.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/motor/v1/motor.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ecomponent/motor/v1/motor.proto\x12\x17viam.component.motor.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"q\n\x0fSetPowerRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\tpower_pct\x18\x02 \x01(\x01R\x08powerPct\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x12\n\x10SetPowerResponse"\x85\x01\n\x0cGoForRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03rpm\x18\x02 \x01(\x01R\x03rpm\x12 \n\x0brevolutions\x18\x03 \x01(\x01R\x0brevolutions\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0f\n\rGoForResponse"\x95\x01\n\x0bGoToRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03rpm\x18\x02 \x01(\x01R\x03rpm\x121\n\x14position_revolutions\x18\x03 \x01(\x01R\x13positionRevolutions\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cGoToResponse"d\n\rSetRPMRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03rpm\x18\x02 \x01(\x01R\x03rpm\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x10\n\x0eSetRPMResponse"u\n\x18ResetZeroPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n\x06offset\x18\x02 \x01(\x01R\x06offset\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x1b\n\x19ResetZeroPositionResponse"W\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"1\n\x13GetPositionResponse\x12\x1a\n\x08position\x18\x01 \x01(\x01R\x08position"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"U\n\x10IsPoweredRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"E\n\x11IsPoweredResponse\x12\x13\n\x05is_on\x18\x01 \x01(\x08R\x04isOn\x12\x1b\n\tpower_pct\x18\x02 \x01(\x01R\x08powerPct"Y\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"F\n\x15GetPropertiesResponse\x12-\n\x12position_reporting\x18\x01 \x01(\x08R\x11positionReporting"`\n\x06Status\x12\x1d\n\nis_powered\x18\x01 \x01(\x08R\tisPowered\x12\x1a\n\x08position\x18\x03 \x01(\x01R\x08position\x12\x1b\n\tis_moving\x18\x04 \x01(\x08R\x08isMoving"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving2\xae\x0e\n\x0cMotorService\x12\x96\x01\n\x08SetPower\x12(.viam.component.motor.v1.SetPowerRequest\x1a).viam.component.motor.v1.SetPowerResponse"5\xa0\x92)\x01\x82\xd3\xe4\x93\x02+\x1a)/viam/api/v1/component/motor/{name}/power\x12\x8e\x01\n\x05GoFor\x12%.viam.component.motor.v1.GoForRequest\x1a&.viam.component.motor.v1.GoForResponse"6\xa0\x92)\x01\x82\xd3\xe4\x93\x02,\x1a*/viam/api/v1/component/motor/{name}/go_for\x12\x8a\x01\n\x04GoTo\x12$.viam.component.motor.v1.GoToRequest\x1a%.viam.component.motor.v1.GoToResponse"5\xa0\x92)\x01\x82\xd3\xe4\x93\x02+\x1a)/viam/api/v1/component/motor/{name}/go_to\x12\x92\x01\n\x06SetRPM\x12&.viam.component.motor.v1.SetRPMRequest\x1a\'.viam.component.motor.v1.SetRPMResponse"7\xa0\x92)\x01\x82\xd3\xe4\x93\x02-\x1a+/viam/api/v1/component/motor/{name}/set_rpm\x12\xac\x01\n\x11ResetZeroPosition\x121.viam.component.motor.v1.ResetZeroPositionRequest\x1a2.viam.component.motor.v1.ResetZeroPositionResponse"0\x82\xd3\xe4\x93\x02*\x1a(/viam/api/v1/component/motor/{name}/zero\x12\x9e\x01\n\x0bGetPosition\x12+.viam.component.motor.v1.GetPositionRequest\x1a,.viam.component.motor.v1.GetPositionResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/motor/{name}/position\x12\xa4\x01\n\rGetProperties\x12-.viam.component.motor.v1.GetPropertiesRequest\x1a..viam.component.motor.v1.GetPropertiesResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/motor/{name}/features\x12\x85\x01\n\x04Stop\x12$.viam.component.motor.v1.StopRequest\x1a%.viam.component.motor.v1.StopResponse"0\x82\xd3\xe4\x93\x02*\x1a(/viam/api/v1/component/motor/{name}/stop\x12\x97\x01\n\tIsPowered\x12).viam.component.motor.v1.IsPoweredRequest\x1a*.viam.component.motor.v1.IsPoweredResponse"3\x82\xd3\xe4\x93\x02-\x12+/viam/api/v1/component/motor/{name}/powered\x12\x96\x01\n\x08IsMoving\x12(.viam.component.motor.v1.IsMovingRequest\x1a).viam.component.motor.v1.IsMovingResponse"5\x82\xd3\xe4\x93\x02/\x12-/viam/api/v1/component/motor/{name}/is_moving\x12\x88\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/component/motor/{name}/do_command\x12\x94\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"6\x82\xd3\xe4\x93\x020\x12./viam/api/v1/component/motor/{name}/geometriesBA\n\x1bcom.viam.component.motor.v1Z"go.viam.com/api/component/motor/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/motor/v1/motor_pb2.pyi b/src/viam/gen/component/motor/v1/motor_pb2.pyi index 2a43f4f6e9..244bd36871 100644 --- a/src/viam/gen/component/motor/v1/motor_pb2.pyi +++ b/src/viam/gen/component/motor/v1/motor_pb2.pyi @@ -2,367 +2,396 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class SetPowerRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - POWER_PCT_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class SetPowerRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + POWER_PCT_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a motor' - power_pct: builtins.float + power_pct: _builtins.float "Percentage of motor's power, between -1 and 1" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., power_pct: builtins.float=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., power_pct: _builtins.float=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'power_pct', b'power_pct'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'power_pct', b'power_pct']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SetPowerRequest = SetPowerRequest +Global___SetPowerRequest: _TypeAlias = SetPowerRequest -@typing.final -class SetPowerResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SetPowerResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SetPowerResponse = SetPowerResponse +Global___SetPowerResponse: _TypeAlias = SetPowerResponse -@typing.final -class GoForRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - RPM_FIELD_NUMBER: builtins.int - REVOLUTIONS_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GoForRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + RPM_FIELD_NUMBER: _builtins.int + REVOLUTIONS_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a motor' - rpm: builtins.float + rpm: _builtins.float 'Speed of motor travel in rotations per minute' - revolutions: builtins.float + revolutions: _builtins.float "Number of revolutions relative to motor's start position" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., rpm: builtins.float=..., revolutions: builtins.float=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., rpm: _builtins.float=..., revolutions: _builtins.float=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'revolutions', b'revolutions', 'rpm', b'rpm'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'revolutions', b'revolutions', 'rpm', b'rpm']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GoForRequest = GoForRequest +Global___GoForRequest: _TypeAlias = GoForRequest -@typing.final -class GoForResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GoForResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___GoForResponse = GoForResponse +Global___GoForResponse: _TypeAlias = GoForResponse -@typing.final -class GoToRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - RPM_FIELD_NUMBER: builtins.int - POSITION_REVOLUTIONS_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GoToRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + RPM_FIELD_NUMBER: _builtins.int + POSITION_REVOLUTIONS_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a motor' - rpm: builtins.float + rpm: _builtins.float 'Speed of motor travel in rotations per minute' - position_revolutions: builtins.float + position_revolutions: _builtins.float "Number of revolutions relative to motor's home home/zero" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., rpm: builtins.float=..., position_revolutions: builtins.float=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., rpm: _builtins.float=..., position_revolutions: _builtins.float=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'position_revolutions', b'position_revolutions', 'rpm', b'rpm'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'position_revolutions', b'position_revolutions', 'rpm', b'rpm']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GoToRequest = GoToRequest +Global___GoToRequest: _TypeAlias = GoToRequest -@typing.final -class GoToResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GoToResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___GoToResponse = GoToResponse +Global___GoToResponse: _TypeAlias = GoToResponse -@typing.final -class SetRPMRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - RPM_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class SetRPMRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + RPM_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a motor' - rpm: builtins.float + rpm: _builtins.float 'Speed of motor travel in rotations per minute' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., rpm: builtins.float=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., rpm: _builtins.float=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'rpm', b'rpm'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'rpm', b'rpm']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SetRPMRequest = SetRPMRequest +Global___SetRPMRequest: _TypeAlias = SetRPMRequest -@typing.final -class SetRPMResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SetRPMResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SetRPMResponse = SetRPMResponse +Global___SetRPMResponse: _TypeAlias = SetRPMResponse -@typing.final -class ResetZeroPositionRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - OFFSET_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class ResetZeroPositionRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + OFFSET_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a motor' - offset: builtins.float + offset: _builtins.float 'Motor position' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., offset: builtins.float=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., offset: _builtins.float=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'offset', b'offset'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'offset', b'offset']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ResetZeroPositionRequest = ResetZeroPositionRequest +Global___ResetZeroPositionRequest: _TypeAlias = ResetZeroPositionRequest -@typing.final -class ResetZeroPositionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ResetZeroPositionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ResetZeroPositionResponse = ResetZeroPositionResponse +Global___ResetZeroPositionResponse: _TypeAlias = ResetZeroPositionResponse -@typing.final -class GetPositionRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetPositionRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a motor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPositionRequest = GetPositionRequest +Global___GetPositionRequest: _TypeAlias = GetPositionRequest -@typing.final -class GetPositionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POSITION_FIELD_NUMBER: builtins.int - position: builtins.float +@_typing.final +class GetPositionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POSITION_FIELD_NUMBER: _builtins.int + position: _builtins.float 'Current position of the motor relative to its home' - def __init__(self, *, position: builtins.float=...) -> None: + def __init__(self, *, position: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['position', b'position'] - def ClearField(self, field_name: typing.Literal['position', b'position']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPositionResponse = GetPositionResponse +Global___GetPositionResponse: _TypeAlias = GetPositionResponse -@typing.final -class StopRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class StopRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a motor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StopRequest = StopRequest +Global___StopRequest: _TypeAlias = StopRequest -@typing.final -class StopResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class StopResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___StopResponse = StopResponse +Global___StopResponse: _TypeAlias = StopResponse -@typing.final -class IsPoweredRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class IsPoweredRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a motor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsPoweredRequest = IsPoweredRequest +Global___IsPoweredRequest: _TypeAlias = IsPoweredRequest -@typing.final -class IsPoweredResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - IS_ON_FIELD_NUMBER: builtins.int - POWER_PCT_FIELD_NUMBER: builtins.int - is_on: builtins.bool +@_typing.final +class IsPoweredResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + IS_ON_FIELD_NUMBER: _builtins.int + POWER_PCT_FIELD_NUMBER: _builtins.int + is_on: _builtins.bool 'Returns true if the motor is on' - power_pct: builtins.float + power_pct: _builtins.float 'Returns power percent (from 0 to 1, or from -1 to 1 for motors that support negative power),\n based on the last command sent to motor. If the last command was a stop command, this value\n will be 0.\n ' - def __init__(self, *, is_on: builtins.bool=..., power_pct: builtins.float=...) -> None: + def __init__(self, *, is_on: _builtins.bool=..., power_pct: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['is_on', b'is_on', 'power_pct', b'power_pct'] - def ClearField(self, field_name: typing.Literal['is_on', b'is_on', 'power_pct', b'power_pct']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsPoweredResponse = IsPoweredResponse +Global___IsPoweredResponse: _TypeAlias = IsPoweredResponse -@typing.final -class GetPropertiesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetPropertiesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a motor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesRequest = GetPropertiesRequest +Global___GetPropertiesRequest: _TypeAlias = GetPropertiesRequest -@typing.final -class GetPropertiesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POSITION_REPORTING_FIELD_NUMBER: builtins.int - position_reporting: builtins.bool +@_typing.final +class GetPropertiesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POSITION_REPORTING_FIELD_NUMBER: _builtins.int + position_reporting: _builtins.bool 'Returns true if the motor supports reporting its position' - def __init__(self, *, position_reporting: builtins.bool=...) -> None: + def __init__(self, *, position_reporting: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['position_reporting', b'position_reporting'] - def ClearField(self, field_name: typing.Literal['position_reporting', b'position_reporting']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesResponse = GetPropertiesResponse +Global___GetPropertiesResponse: _TypeAlias = GetPropertiesResponse -@typing.final -class Status(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - IS_POWERED_FIELD_NUMBER: builtins.int - POSITION_FIELD_NUMBER: builtins.int - IS_MOVING_FIELD_NUMBER: builtins.int - is_powered: builtins.bool +@_typing.final +class Status(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + IS_POWERED_FIELD_NUMBER: _builtins.int + POSITION_FIELD_NUMBER: _builtins.int + IS_MOVING_FIELD_NUMBER: _builtins.int + is_powered: _builtins.bool 'Returns true if the motor is powered' - position: builtins.float + position: _builtins.float 'Returns current position of the motor relative to its home' - is_moving: builtins.bool + is_moving: _builtins.bool 'Returns true if the motor is moving' - def __init__(self, *, is_powered: builtins.bool=..., position: builtins.float=..., is_moving: builtins.bool=...) -> None: + def __init__(self, *, is_powered: _builtins.bool=..., position: _builtins.float=..., is_moving: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['is_moving', b'is_moving', 'is_powered', b'is_powered', 'position', b'position'] - def ClearField(self, field_name: typing.Literal['is_moving', b'is_moving', 'is_powered', b'is_powered', 'position', b'position']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Status = Status +Global___Status: _TypeAlias = Status -@typing.final -class IsMovingRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class IsMovingRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsMovingRequest = IsMovingRequest +Global___IsMovingRequest: _TypeAlias = IsMovingRequest -@typing.final -class IsMovingResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - IS_MOVING_FIELD_NUMBER: builtins.int - is_moving: builtins.bool +@_typing.final +class IsMovingResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + IS_MOVING_FIELD_NUMBER: _builtins.int + is_moving: _builtins.bool - def __init__(self, *, is_moving: builtins.bool=...) -> None: + def __init__(self, *, is_moving: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['is_moving', b'is_moving'] - def ClearField(self, field_name: typing.Literal['is_moving', b'is_moving']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsMovingResponse = IsMovingResponse \ No newline at end of file +Global___IsMovingResponse: _TypeAlias = IsMovingResponse \ No newline at end of file diff --git a/src/viam/gen/component/movementsensor/v1/movementsensor_grpc.py b/src/viam/gen/component/movementsensor/v1/movementsensor_grpc.py index b2cd971897..f404185fbf 100644 --- a/src/viam/gen/component/movementsensor/v1/movementsensor_grpc.py +++ b/src/viam/gen/component/movementsensor/v1/movementsensor_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.py b/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.py index 9b69ba69cc..746ad59262 100644 --- a/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.py +++ b/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/movementsensor/v1/movementsensor.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/movementsensor/v1/movementsensor.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n0component/movementsensor/v1/movementsensor.proto\x12 viam.component.movementsensor.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"]\n\x18GetLinearVelocityRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"]\n\x19GetLinearVelocityResponse\x12@\n\x0flinear_velocity\x18\x01 \x01(\x0b2\x17.viam.common.v1.Vector3R\x0elinearVelocity"^\n\x19GetAngularVelocityRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"`\n\x1aGetAngularVelocityResponse\x12B\n\x10angular_velocity\x18\x01 \x01(\x0b2\x17.viam.common.v1.Vector3R\x0fangularVelocity"]\n\x18GetCompassHeadingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"1\n\x19GetCompassHeadingResponse\x12\x14\n\x05value\x18\x01 \x01(\x01R\x05value"Z\n\x15GetOrientationRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"W\n\x16GetOrientationResponse\x12=\n\x0borientation\x18\x01 \x01(\x0b2\x1b.viam.common.v1.OrientationR\x0borientation"W\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"n\n\x13GetPositionResponse\x128\n\ncoordinate\x18\x01 \x01(\x0b2\x18.viam.common.v1.GeoPointR\ncoordinate\x12\x1d\n\naltitude_m\x18\x02 \x01(\x02R\taltitudeM"Y\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xf5\x02\n\x15GetPropertiesResponse\x12:\n\x19linear_velocity_supported\x18\x01 \x01(\x08R\x17linearVelocitySupported\x12<\n\x1aangular_velocity_supported\x18\x02 \x01(\x08R\x18angularVelocitySupported\x123\n\x15orientation_supported\x18\x03 \x01(\x08R\x14orientationSupported\x12-\n\x12position_supported\x18\x04 \x01(\x08R\x11positionSupported\x12:\n\x19compass_heading_supported\x18\x05 \x01(\x08R\x17compassHeadingSupported\x12B\n\x1dlinear_acceleration_supported\x18\x06 \x01(\x08R\x1blinearAccelerationSupported"W\n\x12GetAccuracyRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xd0\x03\n\x13GetAccuracyResponse\x12_\n\x08accuracy\x18\x01 \x03(\x0b2C.viam.component.movementsensor.v1.GetAccuracyResponse.AccuracyEntryR\x08accuracy\x12(\n\rposition_hdop\x18\x02 \x01(\x02H\x00R\x0cpositionHdop\x88\x01\x01\x12(\n\rposition_vdop\x18\x03 \x01(\x02H\x01R\x0cpositionVdop\x88\x01\x01\x126\n\x15position_nmea_gga_fix\x18\x04 \x01(\x05H\x02R\x12positionNmeaGgaFix\x88\x01\x01\x127\n\x15compass_degrees_error\x18\x05 \x01(\x02H\x03R\x13compassDegreesError\x88\x01\x01\x1a;\n\rAccuracyEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\x02R\x05value:\x028\x01B\x10\n\x0e_position_hdopB\x10\n\x0e_position_vdopB\x18\n\x16_position_nmea_gga_fixB\x18\n\x16_compass_degrees_error"a\n\x1cGetLinearAccelerationRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"i\n\x1dGetLinearAccelerationResponse\x12H\n\x13linear_acceleration\x18\x01 \x01(\x0b2\x17.viam.common.v1.Vector3R\x12linearAcceleration2\xcf\x10\n\x15MovementSensorService\x12\xd2\x01\n\x11GetLinearVelocity\x12:.viam.component.movementsensor.v1.GetLinearVelocityRequest\x1a;.viam.component.movementsensor.v1.GetLinearVelocityResponse"D\x82\xd3\xe4\x93\x02>\x12\x12.viam.component.movementsensor.v1.GetLinearAccelerationRequest\x1a?.viam.component.movementsensor.v1.GetLinearAccelerationResponse"H\x82\xd3\xe4\x93\x02B\x12@/viam/api/v1/component/movementsensor/{name}/linear_acceleration\x12\x91\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"?\x82\xd3\xe4\x93\x029"7/viam/api/v1/component/movementsensor/{name}/do_command\x12\x9d\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"?\x82\xd3\xe4\x93\x029\x127/viam/api/v1/component/movementsensor/{name}/geometries\x12\x95\x01\n\x0bGetReadings\x12".viam.common.v1.GetReadingsRequest\x1a#.viam.common.v1.GetReadingsResponse"=\x82\xd3\xe4\x93\x027\x125/viam/api/v1/component/movementsensor/{name}/readingsBS\n$com.viam.component.movementsensor.v1Z+go.viam.com/api/component/movementsensor/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.pyi b/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.pyi index c63d99cc25..82f4597ee2 100644 --- a/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.pyi +++ b/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.pyi @@ -2,383 +2,427 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -from .... import common -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class GetLinearVelocityRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +from collections import abc as _abc +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class GetLinearVelocityRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a movement sensor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetLinearVelocityRequest = GetLinearVelocityRequest +Global___GetLinearVelocityRequest: _TypeAlias = GetLinearVelocityRequest -@typing.final -class GetLinearVelocityResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LINEAR_VELOCITY_FIELD_NUMBER: builtins.int +@_typing.final +class GetLinearVelocityResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LINEAR_VELOCITY_FIELD_NUMBER: _builtins.int - @property - def linear_velocity(self) -> common.v1.common_pb2.Vector3: + @_builtins.property + def linear_velocity(self) -> _common_pb2.Vector3: """Linear velocity in m/s across x/y/z axes""" - def __init__(self, *, linear_velocity: common.v1.common_pb2.Vector3 | None=...) -> None: + def __init__(self, *, linear_velocity: _common_pb2.Vector3 | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['linear_velocity', b'linear_velocity'] - def HasField(self, field_name: typing.Literal['linear_velocity', b'linear_velocity']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['linear_velocity', b'linear_velocity'] - def ClearField(self, field_name: typing.Literal['linear_velocity', b'linear_velocity']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetLinearVelocityResponse = GetLinearVelocityResponse +Global___GetLinearVelocityResponse: _TypeAlias = GetLinearVelocityResponse -@typing.final -class GetAngularVelocityRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetAngularVelocityRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a movement sensor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetAngularVelocityRequest = GetAngularVelocityRequest +Global___GetAngularVelocityRequest: _TypeAlias = GetAngularVelocityRequest -@typing.final -class GetAngularVelocityResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ANGULAR_VELOCITY_FIELD_NUMBER: builtins.int +@_typing.final +class GetAngularVelocityResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ANGULAR_VELOCITY_FIELD_NUMBER: _builtins.int - @property - def angular_velocity(self) -> common.v1.common_pb2.Vector3: + @_builtins.property + def angular_velocity(self) -> _common_pb2.Vector3: """Angular velocity in degrees/s across x/y/z axes""" - def __init__(self, *, angular_velocity: common.v1.common_pb2.Vector3 | None=...) -> None: + def __init__(self, *, angular_velocity: _common_pb2.Vector3 | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['angular_velocity', b'angular_velocity'] - def HasField(self, field_name: typing.Literal['angular_velocity', b'angular_velocity']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['angular_velocity', b'angular_velocity'] - def ClearField(self, field_name: typing.Literal['angular_velocity', b'angular_velocity']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetAngularVelocityResponse = GetAngularVelocityResponse +Global___GetAngularVelocityResponse: _TypeAlias = GetAngularVelocityResponse -@typing.final -class GetCompassHeadingRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetCompassHeadingRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a movement sensor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetCompassHeadingRequest = GetCompassHeadingRequest +Global___GetCompassHeadingRequest: _TypeAlias = GetCompassHeadingRequest -@typing.final -class GetCompassHeadingResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VALUE_FIELD_NUMBER: builtins.int - value: builtins.float +@_typing.final +class GetCompassHeadingResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + VALUE_FIELD_NUMBER: _builtins.int + value: _builtins.float 'A number from 0-359 in degrees where\n 0 is North, 90 is East, 180 is South, and 270 is West\n ' - def __init__(self, *, value: builtins.float=...) -> None: + def __init__(self, *, value: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def ClearField(self, field_name: typing.Literal['value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetCompassHeadingResponse = GetCompassHeadingResponse +Global___GetCompassHeadingResponse: _TypeAlias = GetCompassHeadingResponse -@typing.final -class GetOrientationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetOrientationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a movement sensor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetOrientationRequest = GetOrientationRequest +Global___GetOrientationRequest: _TypeAlias = GetOrientationRequest -@typing.final -class GetOrientationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORIENTATION_FIELD_NUMBER: builtins.int +@_typing.final +class GetOrientationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ORIENTATION_FIELD_NUMBER: _builtins.int - @property - def orientation(self) -> common.v1.common_pb2.Orientation: + @_builtins.property + def orientation(self) -> _common_pb2.Orientation: """Orientation is returned as an orientation message with OX OY OZ as unit-normalized components of the axis of the vector, and Theta in degrees """ - def __init__(self, *, orientation: common.v1.common_pb2.Orientation | None=...) -> None: + def __init__(self, *, orientation: _common_pb2.Orientation | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['orientation', b'orientation'] - def HasField(self, field_name: typing.Literal['orientation', b'orientation']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['orientation', b'orientation'] - def ClearField(self, field_name: typing.Literal['orientation', b'orientation']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetOrientationResponse = GetOrientationResponse +Global___GetOrientationResponse: _TypeAlias = GetOrientationResponse -@typing.final -class GetPositionRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetPositionRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a movement sensor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPositionRequest = GetPositionRequest +Global___GetPositionRequest: _TypeAlias = GetPositionRequest -@typing.final -class GetPositionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - COORDINATE_FIELD_NUMBER: builtins.int - ALTITUDE_M_FIELD_NUMBER: builtins.int - altitude_m: builtins.float +@_typing.final +class GetPositionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + COORDINATE_FIELD_NUMBER: _builtins.int + ALTITUDE_M_FIELD_NUMBER: _builtins.int + altitude_m: _builtins.float - @property - def coordinate(self) -> common.v1.common_pb2.GeoPoint: + @_builtins.property + def coordinate(self) -> _common_pb2.GeoPoint: """Position is returned in a coordinate of latitute and longitude and an altidue in meters """ - def __init__(self, *, coordinate: common.v1.common_pb2.GeoPoint | None=..., altitude_m: builtins.float=...) -> None: + def __init__(self, *, coordinate: _common_pb2.GeoPoint | None=..., altitude_m: _builtins.float=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['coordinate', b'coordinate'] - def HasField(self, field_name: typing.Literal['coordinate', b'coordinate']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['altitude_m', b'altitude_m', 'coordinate', b'coordinate'] - def ClearField(self, field_name: typing.Literal['altitude_m', b'altitude_m', 'coordinate', b'coordinate']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPositionResponse = GetPositionResponse +Global___GetPositionResponse: _TypeAlias = GetPositionResponse -@typing.final -class GetPropertiesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetPropertiesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a movement sensor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesRequest = GetPropertiesRequest +Global___GetPropertiesRequest: _TypeAlias = GetPropertiesRequest -@typing.final -class GetPropertiesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LINEAR_VELOCITY_SUPPORTED_FIELD_NUMBER: builtins.int - ANGULAR_VELOCITY_SUPPORTED_FIELD_NUMBER: builtins.int - ORIENTATION_SUPPORTED_FIELD_NUMBER: builtins.int - POSITION_SUPPORTED_FIELD_NUMBER: builtins.int - COMPASS_HEADING_SUPPORTED_FIELD_NUMBER: builtins.int - LINEAR_ACCELERATION_SUPPORTED_FIELD_NUMBER: builtins.int - linear_velocity_supported: builtins.bool - angular_velocity_supported: builtins.bool - orientation_supported: builtins.bool - position_supported: builtins.bool - compass_heading_supported: builtins.bool - linear_acceleration_supported: builtins.bool +@_typing.final +class GetPropertiesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LINEAR_VELOCITY_SUPPORTED_FIELD_NUMBER: _builtins.int + ANGULAR_VELOCITY_SUPPORTED_FIELD_NUMBER: _builtins.int + ORIENTATION_SUPPORTED_FIELD_NUMBER: _builtins.int + POSITION_SUPPORTED_FIELD_NUMBER: _builtins.int + COMPASS_HEADING_SUPPORTED_FIELD_NUMBER: _builtins.int + LINEAR_ACCELERATION_SUPPORTED_FIELD_NUMBER: _builtins.int + linear_velocity_supported: _builtins.bool + angular_velocity_supported: _builtins.bool + orientation_supported: _builtins.bool + position_supported: _builtins.bool + compass_heading_supported: _builtins.bool + linear_acceleration_supported: _builtins.bool - def __init__(self, *, linear_velocity_supported: builtins.bool=..., angular_velocity_supported: builtins.bool=..., orientation_supported: builtins.bool=..., position_supported: builtins.bool=..., compass_heading_supported: builtins.bool=..., linear_acceleration_supported: builtins.bool=...) -> None: + def __init__(self, *, linear_velocity_supported: _builtins.bool=..., angular_velocity_supported: _builtins.bool=..., orientation_supported: _builtins.bool=..., position_supported: _builtins.bool=..., compass_heading_supported: _builtins.bool=..., linear_acceleration_supported: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['angular_velocity_supported', b'angular_velocity_supported', 'compass_heading_supported', b'compass_heading_supported', 'linear_acceleration_supported', b'linear_acceleration_supported', 'linear_velocity_supported', b'linear_velocity_supported', 'orientation_supported', b'orientation_supported', 'position_supported', b'position_supported'] - def ClearField(self, field_name: typing.Literal['angular_velocity_supported', b'angular_velocity_supported', 'compass_heading_supported', b'compass_heading_supported', 'linear_acceleration_supported', b'linear_acceleration_supported', 'linear_velocity_supported', b'linear_velocity_supported', 'orientation_supported', b'orientation_supported', 'position_supported', b'position_supported']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesResponse = GetPropertiesResponse +Global___GetPropertiesResponse: _TypeAlias = GetPropertiesResponse -@typing.final -class GetAccuracyRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetAccuracyRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a movement sensor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetAccuracyRequest = GetAccuracyRequest +Global___GetAccuracyRequest: _TypeAlias = GetAccuracyRequest -@typing.final -class GetAccuracyResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GetAccuracyResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class AccuracyEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str - value: builtins.float + @_typing.final + class AccuracyEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.float - def __init__(self, *, key: builtins.str=..., value: builtins.float=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - ACCURACY_FIELD_NUMBER: builtins.int - POSITION_HDOP_FIELD_NUMBER: builtins.int - POSITION_VDOP_FIELD_NUMBER: builtins.int - POSITION_NMEA_GGA_FIX_FIELD_NUMBER: builtins.int - COMPASS_DEGREES_ERROR_FIELD_NUMBER: builtins.int - position_hdop: builtins.float - position_vdop: builtins.float - position_nmea_gga_fix: builtins.int - compass_degrees_error: builtins.float + ACCURACY_FIELD_NUMBER: _builtins.int + POSITION_HDOP_FIELD_NUMBER: _builtins.int + POSITION_VDOP_FIELD_NUMBER: _builtins.int + POSITION_NMEA_GGA_FIX_FIELD_NUMBER: _builtins.int + COMPASS_DEGREES_ERROR_FIELD_NUMBER: _builtins.int + position_hdop: _builtins.float + position_vdop: _builtins.float + position_nmea_gga_fix: _builtins.int + compass_degrees_error: _builtins.float - @property - def accuracy(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.float]: + @_builtins.property + def accuracy(self) -> _containers.ScalarMap[_builtins.str, _builtins.float]: ... - def __init__(self, *, accuracy: collections.abc.Mapping[builtins.str, builtins.float] | None=..., position_hdop: builtins.float | None=..., position_vdop: builtins.float | None=..., position_nmea_gga_fix: builtins.int | None=..., compass_degrees_error: builtins.float | None=...) -> None: + def __init__(self, *, accuracy: _abc.Mapping[_builtins.str, _builtins.float] | None=..., position_hdop: _builtins.float | None=..., position_vdop: _builtins.float | None=..., position_nmea_gga_fix: _builtins.int | None=..., compass_degrees_error: _builtins.float | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_compass_degrees_error', b'_compass_degrees_error', '_position_hdop', b'_position_hdop', '_position_nmea_gga_fix', b'_position_nmea_gga_fix', '_position_vdop', b'_position_vdop', 'compass_degrees_error', b'compass_degrees_error', 'position_hdop', b'position_hdop', 'position_nmea_gga_fix', b'position_nmea_gga_fix', 'position_vdop', b'position_vdop'] - def HasField(self, field_name: typing.Literal['_compass_degrees_error', b'_compass_degrees_error', '_position_hdop', b'_position_hdop', '_position_nmea_gga_fix', b'_position_nmea_gga_fix', '_position_vdop', b'_position_vdop', 'compass_degrees_error', b'compass_degrees_error', 'position_hdop', b'position_hdop', 'position_nmea_gga_fix', b'position_nmea_gga_fix', 'position_vdop', b'position_vdop']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_compass_degrees_error', b'_compass_degrees_error', '_position_hdop', b'_position_hdop', '_position_nmea_gga_fix', b'_position_nmea_gga_fix', '_position_vdop', b'_position_vdop', 'accuracy', b'accuracy', 'compass_degrees_error', b'compass_degrees_error', 'position_hdop', b'position_hdop', 'position_nmea_gga_fix', b'position_nmea_gga_fix', 'position_vdop', b'position_vdop'] - def ClearField(self, field_name: typing.Literal['_compass_degrees_error', b'_compass_degrees_error', '_position_hdop', b'_position_hdop', '_position_nmea_gga_fix', b'_position_nmea_gga_fix', '_position_vdop', b'_position_vdop', 'accuracy', b'accuracy', 'compass_degrees_error', b'compass_degrees_error', 'position_hdop', b'position_hdop', 'position_nmea_gga_fix', b'position_nmea_gga_fix', 'position_vdop', b'position_vdop']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__compass_degrees_error: _TypeAlias = _typing.Literal['compass_degrees_error'] + _WhichOneofArgType__compass_degrees_error: _TypeAlias = _typing.Literal['_compass_degrees_error', b'_compass_degrees_error'] + _WhichOneofReturnType__position_hdop: _TypeAlias = _typing.Literal['position_hdop'] + _WhichOneofArgType__position_hdop: _TypeAlias = _typing.Literal['_position_hdop', b'_position_hdop'] + _WhichOneofReturnType__position_nmea_gga_fix: _TypeAlias = _typing.Literal['position_nmea_gga_fix'] + _WhichOneofArgType__position_nmea_gga_fix: _TypeAlias = _typing.Literal['_position_nmea_gga_fix', b'_position_nmea_gga_fix'] + _WhichOneofReturnType__position_vdop: _TypeAlias = _typing.Literal['position_vdop'] + _WhichOneofArgType__position_vdop: _TypeAlias = _typing.Literal['_position_vdop', b'_position_vdop'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_compass_degrees_error', b'_compass_degrees_error']) -> typing.Literal['compass_degrees_error'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__compass_degrees_error) -> _WhichOneofReturnType__compass_degrees_error | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_position_hdop', b'_position_hdop']) -> typing.Literal['position_hdop'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__position_hdop) -> _WhichOneofReturnType__position_hdop | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_position_nmea_gga_fix', b'_position_nmea_gga_fix']) -> typing.Literal['position_nmea_gga_fix'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__position_nmea_gga_fix) -> _WhichOneofReturnType__position_nmea_gga_fix | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_position_vdop', b'_position_vdop']) -> typing.Literal['position_vdop'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__position_vdop) -> _WhichOneofReturnType__position_vdop | None: ... -global___GetAccuracyResponse = GetAccuracyResponse +Global___GetAccuracyResponse: _TypeAlias = GetAccuracyResponse -@typing.final -class GetLinearAccelerationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetLinearAccelerationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a movement sensor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetLinearAccelerationRequest = GetLinearAccelerationRequest +Global___GetLinearAccelerationRequest: _TypeAlias = GetLinearAccelerationRequest -@typing.final -class GetLinearAccelerationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LINEAR_ACCELERATION_FIELD_NUMBER: builtins.int +@_typing.final +class GetLinearAccelerationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LINEAR_ACCELERATION_FIELD_NUMBER: _builtins.int - @property - def linear_acceleration(self) -> common.v1.common_pb2.Vector3: + @_builtins.property + def linear_acceleration(self) -> _common_pb2.Vector3: """Linear acceleration in m/s across x/y/z axes""" - def __init__(self, *, linear_acceleration: common.v1.common_pb2.Vector3 | None=...) -> None: + def __init__(self, *, linear_acceleration: _common_pb2.Vector3 | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['linear_acceleration', b'linear_acceleration'] - def HasField(self, field_name: typing.Literal['linear_acceleration', b'linear_acceleration']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['linear_acceleration', b'linear_acceleration'] - def ClearField(self, field_name: typing.Literal['linear_acceleration', b'linear_acceleration']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetLinearAccelerationResponse = GetLinearAccelerationResponse \ No newline at end of file +Global___GetLinearAccelerationResponse: _TypeAlias = GetLinearAccelerationResponse \ No newline at end of file diff --git a/src/viam/gen/component/posetracker/v1/pose_tracker_grpc.py b/src/viam/gen/component/posetracker/v1/pose_tracker_grpc.py index b02015369a..adb38d014f 100644 --- a/src/viam/gen/component/posetracker/v1/pose_tracker_grpc.py +++ b/src/viam/gen/component/posetracker/v1/pose_tracker_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.py b/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.py index fe089e8e6c..003852c665 100644 --- a/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.py +++ b/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/posetracker/v1/pose_tracker.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/posetracker/v1/pose_tracker.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+component/posetracker/v1/pose_tracker.proto\x12\x1dviam.component.posetracker.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"s\n\x0fGetPosesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1d\n\nbody_names\x18\x02 \x03(\tR\tbodyNames\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xcc\x01\n\x10GetPosesResponse\x12]\n\nbody_poses\x18\x01 \x03(\x0b2>.viam.component.posetracker.v1.GetPosesResponse.BodyPosesEntryR\tbodyPoses\x1aY\n\x0eBodyPosesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x121\n\x05value\x18\x02 \x01(\x0b2\x1b.viam.common.v1.PoseInFrameR\x05value:\x028\x012\xec\x03\n\x12PoseTrackerService\x12\xa5\x01\n\x08GetPoses\x12..viam.component.posetracker.v1.GetPosesRequest\x1a/.viam.component.posetracker.v1.GetPosesResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/pose_tracker/{name}/poses\x12\x8f\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"=\x82\xd3\xe4\x93\x027"5/viam/api/v1/component/pose_tracker/{name}/do_command\x12\x9b\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"=\x82\xd3\xe4\x93\x027\x125/viam/api/v1/component/pose_tracker/{name}/geometriesB5\n\x15com.viam.component.v1Z\x1cgo.viam.com/api/component/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.pyi b/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.pyi index 1ff7259f11..bb7b327463 100644 --- a/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.pyi +++ b/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.pyi @@ -2,78 +2,88 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -from .... import common -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +from collections import abc as _abc +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor -@typing.final -class GetPosesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - BODY_NAMES_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetPosesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + BODY_NAMES_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of the pose tracker' - @property - def body_names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def body_names(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """Names of the bodies whose poses are being requested. In the event this parameter is not supplied or is an empty list, all available poses are returned """ - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., body_names: collections.abc.Iterable[builtins.str] | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., body_names: _abc.Iterable[_builtins.str] | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['body_names', b'body_names', 'extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['body_names', b'body_names', 'extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPosesRequest = GetPosesRequest +Global___GetPosesRequest: _TypeAlias = GetPosesRequest -@typing.final -class GetPosesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GetPosesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class BodyPosesEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str + @_typing.final + class BodyPosesEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str - @property - def value(self) -> common.v1.common_pb2.PoseInFrame: + @_builtins.property + def value(self) -> _common_pb2.PoseInFrame: ... - def __init__(self, *, key: builtins.str=..., value: common.v1.common_pb2.PoseInFrame | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _common_pb2.PoseInFrame | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def HasField(self, field_name: typing.Literal['value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - BODY_POSES_FIELD_NUMBER: builtins.int + BODY_POSES_FIELD_NUMBER: _builtins.int - @property - def body_poses(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, common.v1.common_pb2.PoseInFrame]: + @_builtins.property + def body_poses(self) -> _containers.MessageMap[_builtins.str, _common_pb2.PoseInFrame]: """Mapping of each body name to the pose representing the center of the body.""" - def __init__(self, *, body_poses: collections.abc.Mapping[builtins.str, common.v1.common_pb2.PoseInFrame] | None=...) -> None: + def __init__(self, *, body_poses: _abc.Mapping[_builtins.str, _common_pb2.PoseInFrame] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['body_poses', b'body_poses'] - def ClearField(self, field_name: typing.Literal['body_poses', b'body_poses']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPosesResponse = GetPosesResponse \ No newline at end of file +Global___GetPosesResponse: _TypeAlias = GetPosesResponse \ No newline at end of file diff --git a/src/viam/gen/component/powersensor/v1/powersensor_grpc.py b/src/viam/gen/component/powersensor/v1/powersensor_grpc.py index 147144f8d3..529ae8027f 100644 --- a/src/viam/gen/component/powersensor/v1/powersensor_grpc.py +++ b/src/viam/gen/component/powersensor/v1/powersensor_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/powersensor/v1/powersensor_pb2.py b/src/viam/gen/component/powersensor/v1/powersensor_pb2.py index cef983f910..bcdf55c3e1 100644 --- a/src/viam/gen/component/powersensor/v1/powersensor_pb2.py +++ b/src/viam/gen/component/powersensor/v1/powersensor_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/powersensor/v1/powersensor.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/powersensor/v1/powersensor.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*component/powersensor/v1/powersensor.proto\x12\x1dviam.component.powersensor.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"V\n\x11GetVoltageRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"?\n\x12GetVoltageResponse\x12\x14\n\x05volts\x18\x01 \x01(\x01R\x05volts\x12\x13\n\x05is_ac\x18\x02 \x01(\x08R\x04isAc"V\n\x11GetCurrentRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"C\n\x12GetCurrentResponse\x12\x18\n\x07amperes\x18\x01 \x01(\x01R\x07amperes\x12\x13\n\x05is_ac\x18\x02 \x01(\x08R\x04isAc"T\n\x0fGetPowerRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"(\n\x10GetPowerResponse\x12\x14\n\x05watts\x18\x01 \x01(\x01R\x05watts2\xc4\x06\n\x12PowerSensorService\x12\xad\x01\n\nGetVoltage\x120.viam.component.powersensor.v1.GetVoltageRequest\x1a1.viam.component.powersensor.v1.GetVoltageResponse":\x82\xd3\xe4\x93\x024\x122/viam/api/v1/component/power_sensor/{name}/voltage\x12\xad\x01\n\nGetCurrent\x120.viam.component.powersensor.v1.GetCurrentRequest\x1a1.viam.component.powersensor.v1.GetCurrentResponse":\x82\xd3\xe4\x93\x024\x122/viam/api/v1/component/power_sensor/{name}/current\x12\xa5\x01\n\x08GetPower\x12..viam.component.powersensor.v1.GetPowerRequest\x1a/.viam.component.powersensor.v1.GetPowerResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/power_sensor/{name}/power\x12\x93\x01\n\x0bGetReadings\x12".viam.common.v1.GetReadingsRequest\x1a#.viam.common.v1.GetReadingsResponse";\x82\xd3\xe4\x93\x025\x123/viam/api/v1/component/power_sensor/{name}/readings\x12\x8f\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"=\x82\xd3\xe4\x93\x027"5/viam/api/v1/component/power_sensor/{name}/do_commandBM\n!com.viam.component.powersensor.v1Z(go.viam.com/api/component/powersensor/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/powersensor/v1/powersensor_pb2.pyi b/src/viam/gen/component/powersensor/v1/powersensor_pb2.pyi index d7fdb4669c..c3d32e6851 100644 --- a/src/viam/gen/component/powersensor/v1/powersensor_pb2.pyi +++ b/src/viam/gen/component/powersensor/v1/powersensor_pb2.pyi @@ -2,123 +2,137 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class GetVoltageRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class GetVoltageRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a power sensor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetVoltageRequest = GetVoltageRequest - -@typing.final -class GetVoltageResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VOLTS_FIELD_NUMBER: builtins.int - IS_AC_FIELD_NUMBER: builtins.int - volts: builtins.float +Global___GetVoltageRequest: _TypeAlias = GetVoltageRequest + +@_typing.final +class GetVoltageResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + VOLTS_FIELD_NUMBER: _builtins.int + IS_AC_FIELD_NUMBER: _builtins.int + volts: _builtins.float 'Voltage in volts' - is_ac: builtins.bool + is_ac: _builtins.bool 'Bool describing whether the voltage is DC or AC' - def __init__(self, *, volts: builtins.float=..., is_ac: builtins.bool=...) -> None: + def __init__(self, *, volts: _builtins.float=..., is_ac: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['is_ac', b'is_ac', 'volts', b'volts'] - def ClearField(self, field_name: typing.Literal['is_ac', b'is_ac', 'volts', b'volts']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetVoltageResponse = GetVoltageResponse - -@typing.final -class GetCurrentRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +Global___GetVoltageResponse: _TypeAlias = GetVoltageResponse + +@_typing.final +class GetCurrentRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a power sensor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetCurrentRequest = GetCurrentRequest - -@typing.final -class GetCurrentResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - AMPERES_FIELD_NUMBER: builtins.int - IS_AC_FIELD_NUMBER: builtins.int - amperes: builtins.float +Global___GetCurrentRequest: _TypeAlias = GetCurrentRequest + +@_typing.final +class GetCurrentResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + AMPERES_FIELD_NUMBER: _builtins.int + IS_AC_FIELD_NUMBER: _builtins.int + amperes: _builtins.float 'Current in amperes' - is_ac: builtins.bool + is_ac: _builtins.bool 'Bool descibing whether the current is DC or AC' - def __init__(self, *, amperes: builtins.float=..., is_ac: builtins.bool=...) -> None: + def __init__(self, *, amperes: _builtins.float=..., is_ac: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['amperes', b'amperes', 'is_ac', b'is_ac'] - def ClearField(self, field_name: typing.Literal['amperes', b'amperes', 'is_ac', b'is_ac']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetCurrentResponse = GetCurrentResponse - -@typing.final -class GetPowerRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +Global___GetCurrentResponse: _TypeAlias = GetCurrentResponse + +@_typing.final +class GetPowerRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a power sensor' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPowerRequest = GetPowerRequest +Global___GetPowerRequest: _TypeAlias = GetPowerRequest -@typing.final -class GetPowerResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - WATTS_FIELD_NUMBER: builtins.int - watts: builtins.float +@_typing.final +class GetPowerResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + WATTS_FIELD_NUMBER: _builtins.int + watts: _builtins.float 'Power in watts' - def __init__(self, *, watts: builtins.float=...) -> None: + def __init__(self, *, watts: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['watts', b'watts'] - def ClearField(self, field_name: typing.Literal['watts', b'watts']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPowerResponse = GetPowerResponse \ No newline at end of file +Global___GetPowerResponse: _TypeAlias = GetPowerResponse \ No newline at end of file diff --git a/src/viam/gen/component/sensor/v1/sensor_grpc.py b/src/viam/gen/component/sensor/v1/sensor_grpc.py index 18980fe41e..50d483f9ca 100644 --- a/src/viam/gen/component/sensor/v1/sensor_grpc.py +++ b/src/viam/gen/component/sensor/v1/sensor_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google from .... import component class SensorServiceBase(abc.ABC): diff --git a/src/viam/gen/component/sensor/v1/sensor_pb2.py b/src/viam/gen/component/sensor/v1/sensor_pb2.py index d9236b72c4..06afcf5a00 100644 --- a/src/viam/gen/component/sensor/v1/sensor_pb2.py +++ b/src/viam/gen/component/sensor/v1/sensor_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/sensor/v1/sensor.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/sensor/v1/sensor.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n component/sensor/v1/sensor.proto\x12\x18viam.component.sensor.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto2\xc3\x03\n\rSensorService\x12\x8d\x01\n\x0bGetReadings\x12".viam.common.v1.GetReadingsRequest\x1a#.viam.common.v1.GetReadingsResponse"5\x82\xd3\xe4\x93\x02/\x12-/viam/api/v1/component/sensor/{name}/readings\x12\x89\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"7\x82\xd3\xe4\x93\x021"//viam/api/v1/component/sensor/{name}/do_command\x12\x95\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/sensor/{name}/geometriesBC\n\x1ccom.viam.component.sensor.v1Z#go.viam.com/api/component/sensor/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/component/sensor/v1/sensor_pb2.pyi b/src/viam/gen/component/sensor/v1/sensor_pb2.pyi index ab07168813..554b3b57f8 100644 --- a/src/viam/gen/component/sensor/v1/sensor_pb2.pyi +++ b/src/viam/gen/component/sensor/v1/sensor_pb2.pyi @@ -2,5 +2,5 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import google.protobuf.descriptor -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor \ No newline at end of file +from google.protobuf import descriptor as _descriptor +DESCRIPTOR: _descriptor.FileDescriptor \ No newline at end of file diff --git a/src/viam/gen/component/servo/v1/servo_grpc.py b/src/viam/gen/component/servo/v1/servo_grpc.py index f2cd1ad2a4..1d270250b7 100644 --- a/src/viam/gen/component/servo/v1/servo_grpc.py +++ b/src/viam/gen/component/servo/v1/servo_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/servo/v1/servo_pb2.py b/src/viam/gen/component/servo/v1/servo_pb2.py index da9e9da06a..7b5c8a98e7 100644 --- a/src/viam/gen/component/servo/v1/servo_pb2.py +++ b/src/viam/gen/component/servo/v1/servo_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/servo/v1/servo.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/servo/v1/servo.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ecomponent/servo/v1/servo.proto\x12\x17viam.component.servo.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"m\n\x0bMoveRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\tangle_deg\x18\x02 \x01(\rR\x08angleDeg\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cMoveResponse"W\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"8\n\x13GetPositionResponse\x12!\n\x0cposition_deg\x18\x01 \x01(\rR\x0bpositionDeg"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"H\n\x06Status\x12!\n\x0cposition_deg\x18\x01 \x01(\rR\x0bpositionDeg\x12\x1b\n\tis_moving\x18\x02 \x01(\x08R\x08isMoving"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving2\xfe\x06\n\x0cServoService\x12\x89\x01\n\x04Move\x12$.viam.component.servo.v1.MoveRequest\x1a%.viam.component.servo.v1.MoveResponse"4\xa0\x92)\x01\x82\xd3\xe4\x93\x02*\x1a(/viam/api/v1/component/servo/{name}/move\x12\x9e\x01\n\x0bGetPosition\x12+.viam.component.servo.v1.GetPositionRequest\x1a,.viam.component.servo.v1.GetPositionResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/servo/{name}/position\x12\x85\x01\n\x04Stop\x12$.viam.component.servo.v1.StopRequest\x1a%.viam.component.servo.v1.StopResponse"0\x82\xd3\xe4\x93\x02*"(/viam/api/v1/component/servo/{name}/stop\x12\x96\x01\n\x08IsMoving\x12(.viam.component.servo.v1.IsMovingRequest\x1a).viam.component.servo.v1.IsMovingResponse"5\x82\xd3\xe4\x93\x02/\x12-/viam/api/v1/component/servo/{name}/is_moving\x12\x88\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/component/servo/{name}/do_command\x12\x94\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"6\x82\xd3\xe4\x93\x020\x12./viam/api/v1/component/servo/{name}/geometriesBA\n\x1bcom.viam.component.servo.v1Z"go.viam.com/api/component/servo/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/servo/v1/servo_pb2.pyi b/src/viam/gen/component/servo/v1/servo_pb2.pyi index 75602b1d07..46fd9cb91e 100644 --- a/src/viam/gen/component/servo/v1/servo_pb2.pyi +++ b/src/viam/gen/component/servo/v1/servo_pb2.pyi @@ -2,149 +2,164 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class MoveRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - ANGLE_DEG_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class MoveRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + ANGLE_DEG_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'the name of the servo, as registered' - angle_deg: builtins.int + angle_deg: _builtins.int 'the degrees by which to rotate the servo.' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., angle_deg: builtins.int=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., angle_deg: _builtins.int=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['angle_deg', b'angle_deg', 'extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['angle_deg', b'angle_deg', 'extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MoveRequest = MoveRequest +Global___MoveRequest: _TypeAlias = MoveRequest -@typing.final -class MoveResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class MoveResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___MoveResponse = MoveResponse +Global___MoveResponse: _TypeAlias = MoveResponse -@typing.final -class GetPositionRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetPositionRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'the name of the servo, as registered' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPositionRequest = GetPositionRequest +Global___GetPositionRequest: _TypeAlias = GetPositionRequest -@typing.final -class GetPositionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POSITION_DEG_FIELD_NUMBER: builtins.int - position_deg: builtins.int +@_typing.final +class GetPositionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POSITION_DEG_FIELD_NUMBER: _builtins.int + position_deg: _builtins.int 'the degrees from neutral by which the servo is currently rotated.' - def __init__(self, *, position_deg: builtins.int=...) -> None: + def __init__(self, *, position_deg: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['position_deg', b'position_deg'] - def ClearField(self, field_name: typing.Literal['position_deg', b'position_deg']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPositionResponse = GetPositionResponse +Global___GetPositionResponse: _TypeAlias = GetPositionResponse -@typing.final -class StopRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class StopRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of a servo' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StopRequest = StopRequest +Global___StopRequest: _TypeAlias = StopRequest -@typing.final -class StopResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class StopResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___StopResponse = StopResponse +Global___StopResponse: _TypeAlias = StopResponse -@typing.final -class Status(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POSITION_DEG_FIELD_NUMBER: builtins.int - IS_MOVING_FIELD_NUMBER: builtins.int - position_deg: builtins.int - is_moving: builtins.bool +@_typing.final +class Status(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POSITION_DEG_FIELD_NUMBER: _builtins.int + IS_MOVING_FIELD_NUMBER: _builtins.int + position_deg: _builtins.int + is_moving: _builtins.bool - def __init__(self, *, position_deg: builtins.int=..., is_moving: builtins.bool=...) -> None: + def __init__(self, *, position_deg: _builtins.int=..., is_moving: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['is_moving', b'is_moving', 'position_deg', b'position_deg'] - def ClearField(self, field_name: typing.Literal['is_moving', b'is_moving', 'position_deg', b'position_deg']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Status = Status +Global___Status: _TypeAlias = Status -@typing.final -class IsMovingRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class IsMovingRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsMovingRequest = IsMovingRequest +Global___IsMovingRequest: _TypeAlias = IsMovingRequest -@typing.final -class IsMovingResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - IS_MOVING_FIELD_NUMBER: builtins.int - is_moving: builtins.bool +@_typing.final +class IsMovingResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + IS_MOVING_FIELD_NUMBER: _builtins.int + is_moving: _builtins.bool - def __init__(self, *, is_moving: builtins.bool=...) -> None: + def __init__(self, *, is_moving: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['is_moving', b'is_moving'] - def ClearField(self, field_name: typing.Literal['is_moving', b'is_moving']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___IsMovingResponse = IsMovingResponse \ No newline at end of file +Global___IsMovingResponse: _TypeAlias = IsMovingResponse \ No newline at end of file diff --git a/src/viam/gen/component/switch/v1/switch_grpc.py b/src/viam/gen/component/switch/v1/switch_grpc.py index 499cd958d9..a429e8313e 100644 --- a/src/viam/gen/component/switch/v1/switch_grpc.py +++ b/src/viam/gen/component/switch/v1/switch_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/switch/v1/switch_pb2.py b/src/viam/gen/component/switch/v1/switch_pb2.py index 9990be8a09..e860638ce6 100644 --- a/src/viam/gen/component/switch/v1/switch_pb2.py +++ b/src/viam/gen/component/switch/v1/switch_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/switch/v1/switch.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/switch/v1/switch.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n component/switch/v1/switch.proto\x12\x18viam.component.switch.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"s\n\x12SetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1a\n\x08position\x18\x02 \x01(\rR\x08position\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x15\n\x13SetPositionResponse"W\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"1\n\x13GetPositionResponse\x12\x1a\n\x08position\x18\x01 \x01(\rR\x08position"`\n\x1bGetNumberOfPositionsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"f\n\x1cGetNumberOfPositionsResponse\x12.\n\x13number_of_positions\x18\x01 \x01(\rR\x11numberOfPositions\x12\x16\n\x06labels\x18\x02 \x03(\tR\x06labels2\xbd\x05\n\rSwitchService\x12\xa9\x01\n\x0bSetPosition\x12,.viam.component.switch.v1.SetPositionRequest\x1a-.viam.component.switch.v1.SetPositionResponse"=\xa0\x92)\x01\x82\xd3\xe4\x93\x023\x1a1/viam/api/v1/component/switch/{name}/set_position\x12\xa5\x01\n\x0bGetPosition\x12,.viam.component.switch.v1.GetPositionRequest\x1a-.viam.component.switch.v1.GetPositionResponse"9\x82\xd3\xe4\x93\x023\x1a1/viam/api/v1/component/switch/{name}/get_position\x12\xcb\x01\n\x14GetNumberOfPositions\x125.viam.component.switch.v1.GetNumberOfPositionsRequest\x1a6.viam.component.switch.v1.GetNumberOfPositionsResponse"D\x82\xd3\xe4\x93\x02>\x1a= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor -@typing.final -class SetPositionRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - POSITION_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - position: builtins.int +@_typing.final +class SetPositionRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + POSITION_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + position: _builtins.int - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., position: builtins.int=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., position: _builtins.int=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'position', b'position'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'position', b'position']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SetPositionRequest = SetPositionRequest +Global___SetPositionRequest: _TypeAlias = SetPositionRequest -@typing.final -class SetPositionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SetPositionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SetPositionResponse = SetPositionResponse +Global___SetPositionResponse: _TypeAlias = SetPositionResponse -@typing.final -class GetPositionRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetPositionRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPositionRequest = GetPositionRequest +Global___GetPositionRequest: _TypeAlias = GetPositionRequest -@typing.final -class GetPositionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POSITION_FIELD_NUMBER: builtins.int - position: builtins.int +@_typing.final +class GetPositionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POSITION_FIELD_NUMBER: _builtins.int + position: _builtins.int - def __init__(self, *, position: builtins.int=...) -> None: + def __init__(self, *, position: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['position', b'position'] - def ClearField(self, field_name: typing.Literal['position', b'position']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPositionResponse = GetPositionResponse +Global___GetPositionResponse: _TypeAlias = GetPositionResponse -@typing.final -class GetNumberOfPositionsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetNumberOfPositionsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetNumberOfPositionsRequest = GetNumberOfPositionsRequest +Global___GetNumberOfPositionsRequest: _TypeAlias = GetNumberOfPositionsRequest -@typing.final -class GetNumberOfPositionsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NUMBER_OF_POSITIONS_FIELD_NUMBER: builtins.int - LABELS_FIELD_NUMBER: builtins.int - number_of_positions: builtins.int +@_typing.final +class GetNumberOfPositionsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NUMBER_OF_POSITIONS_FIELD_NUMBER: _builtins.int + LABELS_FIELD_NUMBER: _builtins.int + number_of_positions: _builtins.int - @property - def labels(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def labels(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, number_of_positions: builtins.int=..., labels: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, number_of_positions: _builtins.int=..., labels: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['labels', b'labels', 'number_of_positions', b'number_of_positions'] - def ClearField(self, field_name: typing.Literal['labels', b'labels', 'number_of_positions', b'number_of_positions']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetNumberOfPositionsResponse = GetNumberOfPositionsResponse \ No newline at end of file +Global___GetNumberOfPositionsResponse: _TypeAlias = GetNumberOfPositionsResponse \ No newline at end of file diff --git a/src/viam/gen/component/testecho/v1/testecho_pb2.py b/src/viam/gen/component/testecho/v1/testecho_pb2.py index 5df37b3f86..1500995627 100644 --- a/src/viam/gen/component/testecho/v1/testecho_pb2.py +++ b/src/viam/gen/component/testecho/v1/testecho_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'component/testecho/v1/testecho.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/testecho/v1/testecho.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$component/testecho/v1/testecho.proto\x12\x1aviam.component.testecho.v1\x1a\x16common/v1/common.proto";\n\x0bEchoRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message"(\n\x0cEchoResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"C\n\x13EchoMultipleRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message"0\n\x14EchoMultipleResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"?\n\x0fEchoBiDiRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message",\n\x10EchoBiDiResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"!\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"\x0e\n\x0cStopResponse2\xb3\x03\n\x0fTestEchoService\x12[\n\x04Echo\x12\'.viam.component.testecho.v1.EchoRequest\x1a(.viam.component.testecho.v1.EchoResponse"\x00\x12y\n\x0cEchoMultiple\x12/.viam.component.testecho.v1.EchoMultipleRequest\x1a0.viam.component.testecho.v1.EchoMultipleResponse"\x04\xa0\x92)\x010\x01\x12k\n\x08EchoBiDi\x12+.viam.component.testecho.v1.EchoBiDiRequest\x1a,.viam.component.testecho.v1.EchoBiDiResponse"\x00(\x010\x01\x12[\n\x04Stop\x12\'.viam.component.testecho.v1.StopRequest\x1a(.viam.component.testecho.v1.StopResponse"\x00BG\n\x1ecom.viam.component.testecho.v1Z%go.viam.com/api/component/testecho/v1b\x06proto3') diff --git a/src/viam/gen/component/testecho/v1/testecho_pb2.pyi b/src/viam/gen/component/testecho/v1/testecho_pb2.pyi index 9761268085..c93034d5f7 100644 --- a/src/viam/gen/component/testecho/v1/testecho_pb2.pyi +++ b/src/viam/gen/component/testecho/v1/testecho_pb2.pyi @@ -2,113 +2,125 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class EchoRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - MESSAGE_FIELD_NUMBER: builtins.int - name: builtins.str - message: builtins.str - - def __init__(self, *, name: builtins.str=..., message: builtins.str=...) -> None: +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class EchoRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + MESSAGE_FIELD_NUMBER: _builtins.int + name: _builtins.str + message: _builtins.str + + def __init__(self, *, name: _builtins.str=..., message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['message', b'message', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoRequest = EchoRequest +Global___EchoRequest: _TypeAlias = EchoRequest -@typing.final -class EchoResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MESSAGE_FIELD_NUMBER: builtins.int - message: builtins.str +@_typing.final +class EchoResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MESSAGE_FIELD_NUMBER: _builtins.int + message: _builtins.str - def __init__(self, *, message: builtins.str=...) -> None: + def __init__(self, *, message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message'] - def ClearField(self, field_name: typing.Literal['message', b'message']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoResponse = EchoResponse +Global___EchoResponse: _TypeAlias = EchoResponse -@typing.final -class EchoMultipleRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - MESSAGE_FIELD_NUMBER: builtins.int - name: builtins.str - message: builtins.str +@_typing.final +class EchoMultipleRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + MESSAGE_FIELD_NUMBER: _builtins.int + name: _builtins.str + message: _builtins.str - def __init__(self, *, name: builtins.str=..., message: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=..., message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['message', b'message', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoMultipleRequest = EchoMultipleRequest +Global___EchoMultipleRequest: _TypeAlias = EchoMultipleRequest -@typing.final -class EchoMultipleResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MESSAGE_FIELD_NUMBER: builtins.int - message: builtins.str +@_typing.final +class EchoMultipleResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MESSAGE_FIELD_NUMBER: _builtins.int + message: _builtins.str - def __init__(self, *, message: builtins.str=...) -> None: + def __init__(self, *, message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message'] - def ClearField(self, field_name: typing.Literal['message', b'message']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoMultipleResponse = EchoMultipleResponse +Global___EchoMultipleResponse: _TypeAlias = EchoMultipleResponse -@typing.final -class EchoBiDiRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - MESSAGE_FIELD_NUMBER: builtins.int - name: builtins.str - message: builtins.str +@_typing.final +class EchoBiDiRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + MESSAGE_FIELD_NUMBER: _builtins.int + name: _builtins.str + message: _builtins.str - def __init__(self, *, name: builtins.str=..., message: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=..., message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['message', b'message', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoBiDiRequest = EchoBiDiRequest +Global___EchoBiDiRequest: _TypeAlias = EchoBiDiRequest -@typing.final -class EchoBiDiResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MESSAGE_FIELD_NUMBER: builtins.int - message: builtins.str +@_typing.final +class EchoBiDiResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MESSAGE_FIELD_NUMBER: _builtins.int + message: _builtins.str - def __init__(self, *, message: builtins.str=...) -> None: + def __init__(self, *, message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message'] - def ClearField(self, field_name: typing.Literal['message', b'message']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoBiDiResponse = EchoBiDiResponse +Global___EchoBiDiResponse: _TypeAlias = EchoBiDiResponse -@typing.final -class StopRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class StopRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StopRequest = StopRequest +Global___StopRequest: _TypeAlias = StopRequest -@typing.final -class StopResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class StopResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___StopResponse = StopResponse \ No newline at end of file +Global___StopResponse: _TypeAlias = StopResponse \ No newline at end of file diff --git a/src/viam/gen/google/__init__.py b/src/viam/gen/google/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/__init__.py b/src/viam/gen/google/api/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/annotations_grpc.py b/src/viam/gen/google/api/annotations_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/annotations_pb2.py b/src/viam/gen/google/api/annotations_pb2.py new file mode 100644 index 0000000000..2cf259bc03 --- /dev/null +++ b/src/viam/gen/google/api/annotations_pb2.py @@ -0,0 +1,17 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/annotations.proto') +_sym_db = _symbol_database.Default() +from ...google.api import http_pb2 as google_dot_api_dot_http__pb2 +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cgoogle/api/annotations.proto\x12\ngoogle.api\x1a\x15google/api/http.proto\x1a google/protobuf/descriptor.proto:K\n\x04http\x12\x1e.google.protobuf.MethodOptions\x18\xb0\xca\xbc" \x01(\x0b2\x14.google.api.HttpRuleR\x04httpBn\n\x0ecom.google.apiB\x10AnnotationsProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.annotations_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\x10AnnotationsProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPI' \ No newline at end of file diff --git a/src/viam/gen/google/api/annotations_pb2.pyi b/src/viam/gen/google/api/annotations_pb2.pyi new file mode 100644 index 0000000000..33b038b069 --- /dev/null +++ b/src/viam/gen/google/api/annotations_pb2.pyi @@ -0,0 +1,26 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from google.api import http_pb2 as _http_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pb2 as _descriptor_pb2 +from google.protobuf.internal import extension_dict as _extension_dict +import builtins as _builtins +DESCRIPTOR: _descriptor.FileDescriptor +HTTP_FIELD_NUMBER: _builtins.int +http: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.MethodOptions, _http_pb2.HttpRule] +'See `HttpRule`.' \ No newline at end of file diff --git a/src/viam/gen/google/api/client_grpc.py b/src/viam/gen/google/api/client_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/client_pb2.py b/src/viam/gen/google/api/client_pb2.py new file mode 100644 index 0000000000..7c1c29d403 --- /dev/null +++ b/src/viam/gen/google/api/client_pb2.py @@ -0,0 +1,70 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/client.proto') +_sym_db = _symbol_database.Default() +from ...google.api import launch_stage_pb2 as google_dot_api_dot_launch__stage__pb2 +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17google/api/client.proto\x12\ngoogle.api\x1a\x1dgoogle/api/launch_stage.proto\x1a google/protobuf/descriptor.proto\x1a\x1egoogle/protobuf/duration.proto"\xf8\x01\n\x16CommonLanguageSettings\x120\n\x12reference_docs_uri\x18\x01 \x01(\tB\x02\x18\x01R\x10referenceDocsUri\x12H\n\x0cdestinations\x18\x02 \x03(\x0e2$.google.api.ClientLibraryDestinationR\x0cdestinations\x12b\n\x1aselective_gapic_generation\x18\x03 \x01(\x0b2$.google.api.SelectiveGapicGenerationR\x18selectiveGapicGeneration"\x93\x05\n\x15ClientLibrarySettings\x12\x18\n\x07version\x18\x01 \x01(\tR\x07version\x12:\n\x0claunch_stage\x18\x02 \x01(\x0e2\x17.google.api.LaunchStageR\x0blaunchStage\x12,\n\x12rest_numeric_enums\x18\x03 \x01(\x08R\x10restNumericEnums\x12=\n\rjava_settings\x18\x15 \x01(\x0b2\x18.google.api.JavaSettingsR\x0cjavaSettings\x12:\n\x0ccpp_settings\x18\x16 \x01(\x0b2\x17.google.api.CppSettingsR\x0bcppSettings\x12:\n\x0cphp_settings\x18\x17 \x01(\x0b2\x17.google.api.PhpSettingsR\x0bphpSettings\x12C\n\x0fpython_settings\x18\x18 \x01(\x0b2\x1a.google.api.PythonSettingsR\x0epythonSettings\x12=\n\rnode_settings\x18\x19 \x01(\x0b2\x18.google.api.NodeSettingsR\x0cnodeSettings\x12C\n\x0fdotnet_settings\x18\x1a \x01(\x0b2\x1a.google.api.DotnetSettingsR\x0edotnetSettings\x12=\n\rruby_settings\x18\x1b \x01(\x0b2\x18.google.api.RubySettingsR\x0crubySettings\x127\n\x0bgo_settings\x18\x1c \x01(\x0b2\x16.google.api.GoSettingsR\ngoSettings"\xf4\x04\n\nPublishing\x12C\n\x0fmethod_settings\x18\x02 \x03(\x0b2\x1a.google.api.MethodSettingsR\x0emethodSettings\x12"\n\rnew_issue_uri\x18e \x01(\tR\x0bnewIssueUri\x12+\n\x11documentation_uri\x18f \x01(\tR\x10documentationUri\x12$\n\x0eapi_short_name\x18g \x01(\tR\x0capiShortName\x12!\n\x0cgithub_label\x18h \x01(\tR\x0bgithubLabel\x124\n\x16codeowner_github_teams\x18i \x03(\tR\x14codeownerGithubTeams\x12$\n\x0edoc_tag_prefix\x18j \x01(\tR\x0cdocTagPrefix\x12I\n\x0corganization\x18k \x01(\x0e2%.google.api.ClientLibraryOrganizationR\x0corganization\x12L\n\x10library_settings\x18m \x03(\x0b2!.google.api.ClientLibrarySettingsR\x0flibrarySettings\x12I\n!proto_reference_documentation_uri\x18n \x01(\tR\x1eprotoReferenceDocumentationUri\x12G\n rest_reference_documentation_uri\x18o \x01(\tR\x1drestReferenceDocumentationUri"\x9a\x02\n\x0cJavaSettings\x12\'\n\x0flibrary_package\x18\x01 \x01(\tR\x0elibraryPackage\x12_\n\x13service_class_names\x18\x02 \x03(\x0b2/.google.api.JavaSettings.ServiceClassNamesEntryR\x11serviceClassNames\x12:\n\x06common\x18\x03 \x01(\x0b2".google.api.CommonLanguageSettingsR\x06common\x1aD\n\x16ServiceClassNamesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01"I\n\x0bCppSettings\x12:\n\x06common\x18\x01 \x01(\x0b2".google.api.CommonLanguageSettingsR\x06common"I\n\x0bPhpSettings\x12:\n\x06common\x18\x01 \x01(\x0b2".google.api.CommonLanguageSettingsR\x06common"\x87\x03\n\x0ePythonSettings\x12:\n\x06common\x18\x01 \x01(\x0b2".google.api.CommonLanguageSettingsR\x06common\x12d\n\x15experimental_features\x18\x02 \x01(\x0b2/.google.api.PythonSettings.ExperimentalFeaturesR\x14experimentalFeatures\x1a\xd2\x01\n\x14ExperimentalFeatures\x121\n\x15rest_async_io_enabled\x18\x01 \x01(\x08R\x12restAsyncIoEnabled\x12E\n\x1fprotobuf_pythonic_types_enabled\x18\x02 \x01(\x08R\x1cprotobufPythonicTypesEnabled\x12@\n\x1cunversioned_package_disabled\x18\x03 \x01(\x08R\x1aunversionedPackageDisabled"J\n\x0cNodeSettings\x12:\n\x06common\x18\x01 \x01(\x0b2".google.api.CommonLanguageSettingsR\x06common"\xae\x04\n\x0eDotnetSettings\x12:\n\x06common\x18\x01 \x01(\x0b2".google.api.CommonLanguageSettingsR\x06common\x12Z\n\x10renamed_services\x18\x02 \x03(\x0b2/.google.api.DotnetSettings.RenamedServicesEntryR\x0frenamedServices\x12]\n\x11renamed_resources\x18\x03 \x03(\x0b20.google.api.DotnetSettings.RenamedResourcesEntryR\x10renamedResources\x12+\n\x11ignored_resources\x18\x04 \x03(\tR\x10ignoredResources\x128\n\x18forced_namespace_aliases\x18\x05 \x03(\tR\x16forcedNamespaceAliases\x125\n\x16handwritten_signatures\x18\x06 \x03(\tR\x15handwrittenSignatures\x1aB\n\x14RenamedServicesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1aC\n\x15RenamedResourcesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01"J\n\x0cRubySettings\x12:\n\x06common\x18\x01 \x01(\x0b2".google.api.CommonLanguageSettingsR\x06common"\xe4\x01\n\nGoSettings\x12:\n\x06common\x18\x01 \x01(\x0b2".google.api.CommonLanguageSettingsR\x06common\x12V\n\x10renamed_services\x18\x02 \x03(\x0b2+.google.api.GoSettings.RenamedServicesEntryR\x0frenamedServices\x1aB\n\x14RenamedServicesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01"\xc2\x03\n\x0eMethodSettings\x12\x1a\n\x08selector\x18\x01 \x01(\tR\x08selector\x12I\n\x0clong_running\x18\x02 \x01(\x0b2&.google.api.MethodSettings.LongRunningR\x0blongRunning\x122\n\x15auto_populated_fields\x18\x03 \x03(\tR\x13autoPopulatedFields\x1a\x94\x02\n\x0bLongRunning\x12G\n\x12initial_poll_delay\x18\x01 \x01(\x0b2\x19.google.protobuf.DurationR\x10initialPollDelay\x122\n\x15poll_delay_multiplier\x18\x02 \x01(\x02R\x13pollDelayMultiplier\x12?\n\x0emax_poll_delay\x18\x03 \x01(\x0b2\x19.google.protobuf.DurationR\x0cmaxPollDelay\x12G\n\x12total_poll_timeout\x18\x04 \x01(\x0b2\x19.google.protobuf.DurationR\x10totalPollTimeout"u\n\x18SelectiveGapicGeneration\x12\x18\n\x07methods\x18\x01 \x03(\tR\x07methods\x12?\n\x1cgenerate_omitted_as_internal\x18\x02 \x01(\x08R\x19generateOmittedAsInternal*\xa3\x01\n\x19ClientLibraryOrganization\x12+\n\'CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED\x10\x00\x12\t\n\x05CLOUD\x10\x01\x12\x07\n\x03ADS\x10\x02\x12\n\n\x06PHOTOS\x10\x03\x12\x0f\n\x0bSTREET_VIEW\x10\x04\x12\x0c\n\x08SHOPPING\x10\x05\x12\x07\n\x03GEO\x10\x06\x12\x11\n\rGENERATIVE_AI\x10\x07*g\n\x18ClientLibraryDestination\x12*\n&CLIENT_LIBRARY_DESTINATION_UNSPECIFIED\x10\x00\x12\n\n\x06GITHUB\x10\n\x12\x13\n\x0fPACKAGE_MANAGER\x10\x14:J\n\x10method_signature\x12\x1e.google.protobuf.MethodOptions\x18\x9b\x08 \x03(\tR\x0fmethodSignature:C\n\x0cdefault_host\x12\x1f.google.protobuf.ServiceOptions\x18\x99\x08 \x01(\tR\x0bdefaultHost:C\n\x0coauth_scopes\x12\x1f.google.protobuf.ServiceOptions\x18\x9a\x08 \x01(\tR\x0boauthScopes:D\n\x0bapi_version\x12\x1f.google.protobuf.ServiceOptions\x18\xc1\xba\xab\xfa\x01 \x01(\tR\napiVersionBi\n\x0ecom.google.apiB\x0bClientProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.client_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\x0bClientProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPI' + _globals['_COMMONLANGUAGESETTINGS'].fields_by_name['reference_docs_uri']._loaded_options = None + _globals['_COMMONLANGUAGESETTINGS'].fields_by_name['reference_docs_uri']._serialized_options = b'\x18\x01' + _globals['_JAVASETTINGS_SERVICECLASSNAMESENTRY']._loaded_options = None + _globals['_JAVASETTINGS_SERVICECLASSNAMESENTRY']._serialized_options = b'8\x01' + _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._loaded_options = None + _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_options = b'8\x01' + _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._loaded_options = None + _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_options = b'8\x01' + _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._loaded_options = None + _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._serialized_options = b'8\x01' + _globals['_CLIENTLIBRARYORGANIZATION']._serialized_start = 4026 + _globals['_CLIENTLIBRARYORGANIZATION']._serialized_end = 4189 + _globals['_CLIENTLIBRARYDESTINATION']._serialized_start = 4191 + _globals['_CLIENTLIBRARYDESTINATION']._serialized_end = 4294 + _globals['_COMMONLANGUAGESETTINGS']._serialized_start = 137 + _globals['_COMMONLANGUAGESETTINGS']._serialized_end = 385 + _globals['_CLIENTLIBRARYSETTINGS']._serialized_start = 388 + _globals['_CLIENTLIBRARYSETTINGS']._serialized_end = 1047 + _globals['_PUBLISHING']._serialized_start = 1050 + _globals['_PUBLISHING']._serialized_end = 1678 + _globals['_JAVASETTINGS']._serialized_start = 1681 + _globals['_JAVASETTINGS']._serialized_end = 1963 + _globals['_JAVASETTINGS_SERVICECLASSNAMESENTRY']._serialized_start = 1895 + _globals['_JAVASETTINGS_SERVICECLASSNAMESENTRY']._serialized_end = 1963 + _globals['_CPPSETTINGS']._serialized_start = 1965 + _globals['_CPPSETTINGS']._serialized_end = 2038 + _globals['_PHPSETTINGS']._serialized_start = 2040 + _globals['_PHPSETTINGS']._serialized_end = 2113 + _globals['_PYTHONSETTINGS']._serialized_start = 2116 + _globals['_PYTHONSETTINGS']._serialized_end = 2507 + _globals['_PYTHONSETTINGS_EXPERIMENTALFEATURES']._serialized_start = 2297 + _globals['_PYTHONSETTINGS_EXPERIMENTALFEATURES']._serialized_end = 2507 + _globals['_NODESETTINGS']._serialized_start = 2509 + _globals['_NODESETTINGS']._serialized_end = 2583 + _globals['_DOTNETSETTINGS']._serialized_start = 2586 + _globals['_DOTNETSETTINGS']._serialized_end = 3144 + _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_start = 3009 + _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_end = 3075 + _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_start = 3077 + _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_end = 3144 + _globals['_RUBYSETTINGS']._serialized_start = 3146 + _globals['_RUBYSETTINGS']._serialized_end = 3220 + _globals['_GOSETTINGS']._serialized_start = 3223 + _globals['_GOSETTINGS']._serialized_end = 3451 + _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._serialized_start = 3009 + _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._serialized_end = 3075 + _globals['_METHODSETTINGS']._serialized_start = 3454 + _globals['_METHODSETTINGS']._serialized_end = 3904 + _globals['_METHODSETTINGS_LONGRUNNING']._serialized_start = 3628 + _globals['_METHODSETTINGS_LONGRUNNING']._serialized_end = 3904 + _globals['_SELECTIVEGAPICGENERATION']._serialized_start = 3906 + _globals['_SELECTIVEGAPICGENERATION']._serialized_end = 4023 \ No newline at end of file diff --git a/src/viam/gen/google/api/client_pb2.pyi b/src/viam/gen/google/api/client_pb2.pyi new file mode 100644 index 0000000000..8a60e9f520 --- /dev/null +++ b/src/viam/gen/google/api/client_pb2.pyi @@ -0,0 +1,758 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from collections import abc as _abc +from google.api import launch_stage_pb2 as _launch_stage_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pb2 as _descriptor_pb2 +from google.protobuf import duration_pb2 as _duration_pb2 +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf.internal import extension_dict as _extension_dict +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +if sys.version_info >= (3, 13): + from warnings import deprecated as _deprecated +else: + from typing_extensions import deprecated as _deprecated +DESCRIPTOR: _descriptor.FileDescriptor + +class _ClientLibraryOrganization: + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType + +class _ClientLibraryOrganizationEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_ClientLibraryOrganization.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor + CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED: _ClientLibraryOrganization.ValueType + 'Not useful.' + CLOUD: _ClientLibraryOrganization.ValueType + 'Google Cloud Platform Org.' + ADS: _ClientLibraryOrganization.ValueType + 'Ads (Advertising) Org.' + PHOTOS: _ClientLibraryOrganization.ValueType + 'Photos Org.' + STREET_VIEW: _ClientLibraryOrganization.ValueType + 'Street View Org.' + SHOPPING: _ClientLibraryOrganization.ValueType + 'Shopping Org.' + GEO: _ClientLibraryOrganization.ValueType + 'Geo Org.' + GENERATIVE_AI: _ClientLibraryOrganization.ValueType + 'Generative AI - https://developers.generativeai.google' + +class ClientLibraryOrganization(_ClientLibraryOrganization, metaclass=_ClientLibraryOrganizationEnumTypeWrapper): + """The organization for which the client libraries are being published. + Affects the url where generated docs are published, etc. + """ +CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED: ClientLibraryOrganization.ValueType +'Not useful.' +CLOUD: ClientLibraryOrganization.ValueType +'Google Cloud Platform Org.' +ADS: ClientLibraryOrganization.ValueType +'Ads (Advertising) Org.' +PHOTOS: ClientLibraryOrganization.ValueType +'Photos Org.' +STREET_VIEW: ClientLibraryOrganization.ValueType +'Street View Org.' +SHOPPING: ClientLibraryOrganization.ValueType +'Shopping Org.' +GEO: ClientLibraryOrganization.ValueType +'Geo Org.' +GENERATIVE_AI: ClientLibraryOrganization.ValueType +'Generative AI - https://developers.generativeai.google' +Global___ClientLibraryOrganization: _TypeAlias = ClientLibraryOrganization + +class _ClientLibraryDestination: + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType + +class _ClientLibraryDestinationEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_ClientLibraryDestination.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor + CLIENT_LIBRARY_DESTINATION_UNSPECIFIED: _ClientLibraryDestination.ValueType + 'Client libraries will neither be generated nor published to package\n managers.\n ' + GITHUB: _ClientLibraryDestination.ValueType + "Generate the client library in a repo under github.com/googleapis,\n but don't publish it to package managers.\n " + PACKAGE_MANAGER: _ClientLibraryDestination.ValueType + 'Publish the library to package managers like nuget.org and npmjs.com.' + +class ClientLibraryDestination(_ClientLibraryDestination, metaclass=_ClientLibraryDestinationEnumTypeWrapper): + """To where should client libraries be published?""" +CLIENT_LIBRARY_DESTINATION_UNSPECIFIED: ClientLibraryDestination.ValueType +'Client libraries will neither be generated nor published to package\nmanagers.\n' +GITHUB: ClientLibraryDestination.ValueType +"Generate the client library in a repo under github.com/googleapis,\nbut don't publish it to package managers.\n" +PACKAGE_MANAGER: ClientLibraryDestination.ValueType +'Publish the library to package managers like nuget.org and npmjs.com.' +Global___ClientLibraryDestination: _TypeAlias = ClientLibraryDestination + +@_typing.final +class CommonLanguageSettings(_message.Message): + """Required information for every language.""" + DESCRIPTOR: _descriptor.Descriptor + REFERENCE_DOCS_URI_FIELD_NUMBER: _builtins.int + DESTINATIONS_FIELD_NUMBER: _builtins.int + SELECTIVE_GAPIC_GENERATION_FIELD_NUMBER: _builtins.int + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def reference_docs_uri(self) -> _builtins.str: + """Link to automatically generated reference documentation. Example: + https://cloud.google.com/nodejs/docs/reference/asset/latest + """ + + @reference_docs_uri.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def reference_docs_uri(self, value: _builtins.str) -> None: + """Link to automatically generated reference documentation. Example: + https://cloud.google.com/nodejs/docs/reference/asset/latest + """ + + @_builtins.property + def destinations(self) -> _containers.RepeatedScalarFieldContainer[Global___ClientLibraryDestination.ValueType]: + """The destination where API teams want this client library to be published.""" + + @_builtins.property + def selective_gapic_generation(self) -> Global___SelectiveGapicGeneration: + """Configuration for which RPCs should be generated in the GAPIC client.""" + + def __init__(self, *, reference_docs_uri: _builtins.str=..., destinations: _abc.Iterable[Global___ClientLibraryDestination.ValueType] | None=..., selective_gapic_generation: Global___SelectiveGapicGeneration | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['selective_gapic_generation', b'selective_gapic_generation'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['destinations', b'destinations', 'reference_docs_uri', b'reference_docs_uri', 'selective_gapic_generation', b'selective_gapic_generation'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___CommonLanguageSettings: _TypeAlias = CommonLanguageSettings + +@_typing.final +class ClientLibrarySettings(_message.Message): + """Details about how and where to publish client libraries.""" + DESCRIPTOR: _descriptor.Descriptor + VERSION_FIELD_NUMBER: _builtins.int + LAUNCH_STAGE_FIELD_NUMBER: _builtins.int + REST_NUMERIC_ENUMS_FIELD_NUMBER: _builtins.int + JAVA_SETTINGS_FIELD_NUMBER: _builtins.int + CPP_SETTINGS_FIELD_NUMBER: _builtins.int + PHP_SETTINGS_FIELD_NUMBER: _builtins.int + PYTHON_SETTINGS_FIELD_NUMBER: _builtins.int + NODE_SETTINGS_FIELD_NUMBER: _builtins.int + DOTNET_SETTINGS_FIELD_NUMBER: _builtins.int + RUBY_SETTINGS_FIELD_NUMBER: _builtins.int + GO_SETTINGS_FIELD_NUMBER: _builtins.int + version: _builtins.str + 'Version of the API to apply these settings to. This is the full protobuf\n package for the API, ending in the version element.\n Examples: "google.cloud.speech.v1" and "google.spanner.admin.database.v1".\n ' + launch_stage: _launch_stage_pb2.LaunchStage.ValueType + 'Launch stage of this version of the API.' + rest_numeric_enums: _builtins.bool + 'When using transport=rest, the client request will encode enums as\n numbers rather than strings.\n ' + + @_builtins.property + def java_settings(self) -> Global___JavaSettings: + """Settings for legacy Java features, supported in the Service YAML.""" + + @_builtins.property + def cpp_settings(self) -> Global___CppSettings: + """Settings for C++ client libraries.""" + + @_builtins.property + def php_settings(self) -> Global___PhpSettings: + """Settings for PHP client libraries.""" + + @_builtins.property + def python_settings(self) -> Global___PythonSettings: + """Settings for Python client libraries.""" + + @_builtins.property + def node_settings(self) -> Global___NodeSettings: + """Settings for Node client libraries.""" + + @_builtins.property + def dotnet_settings(self) -> Global___DotnetSettings: + """Settings for .NET client libraries.""" + + @_builtins.property + def ruby_settings(self) -> Global___RubySettings: + """Settings for Ruby client libraries.""" + + @_builtins.property + def go_settings(self) -> Global___GoSettings: + """Settings for Go client libraries.""" + + def __init__(self, *, version: _builtins.str=..., launch_stage: _launch_stage_pb2.LaunchStage.ValueType=..., rest_numeric_enums: _builtins.bool=..., java_settings: Global___JavaSettings | None=..., cpp_settings: Global___CppSettings | None=..., php_settings: Global___PhpSettings | None=..., python_settings: Global___PythonSettings | None=..., node_settings: Global___NodeSettings | None=..., dotnet_settings: Global___DotnetSettings | None=..., ruby_settings: Global___RubySettings | None=..., go_settings: Global___GoSettings | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['cpp_settings', b'cpp_settings', 'dotnet_settings', b'dotnet_settings', 'go_settings', b'go_settings', 'java_settings', b'java_settings', 'node_settings', b'node_settings', 'php_settings', b'php_settings', 'python_settings', b'python_settings', 'ruby_settings', b'ruby_settings'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['cpp_settings', b'cpp_settings', 'dotnet_settings', b'dotnet_settings', 'go_settings', b'go_settings', 'java_settings', b'java_settings', 'launch_stage', b'launch_stage', 'node_settings', b'node_settings', 'php_settings', b'php_settings', 'python_settings', b'python_settings', 'rest_numeric_enums', b'rest_numeric_enums', 'ruby_settings', b'ruby_settings', 'version', b'version'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___ClientLibrarySettings: _TypeAlias = ClientLibrarySettings + +@_typing.final +class Publishing(_message.Message): + """This message configures the settings for publishing [Google Cloud Client + libraries](https://cloud.google.com/apis/docs/cloud-client-libraries) + generated from the service config. + """ + DESCRIPTOR: _descriptor.Descriptor + METHOD_SETTINGS_FIELD_NUMBER: _builtins.int + NEW_ISSUE_URI_FIELD_NUMBER: _builtins.int + DOCUMENTATION_URI_FIELD_NUMBER: _builtins.int + API_SHORT_NAME_FIELD_NUMBER: _builtins.int + GITHUB_LABEL_FIELD_NUMBER: _builtins.int + CODEOWNER_GITHUB_TEAMS_FIELD_NUMBER: _builtins.int + DOC_TAG_PREFIX_FIELD_NUMBER: _builtins.int + ORGANIZATION_FIELD_NUMBER: _builtins.int + LIBRARY_SETTINGS_FIELD_NUMBER: _builtins.int + PROTO_REFERENCE_DOCUMENTATION_URI_FIELD_NUMBER: _builtins.int + REST_REFERENCE_DOCUMENTATION_URI_FIELD_NUMBER: _builtins.int + new_issue_uri: _builtins.str + 'Link to a *public* URI where users can report issues. Example:\n https://issuetracker.google.com/issues/new?component=190865&template=1161103\n ' + documentation_uri: _builtins.str + 'Link to product home page. Example:\n https://cloud.google.com/asset-inventory/docs/overview\n ' + api_short_name: _builtins.str + 'Used as a tracking tag when collecting data about the APIs developer\n relations artifacts like docs, packages delivered to package managers,\n etc. Example: "speech".\n ' + github_label: _builtins.str + 'GitHub label to apply to issues and pull requests opened for this API.' + doc_tag_prefix: _builtins.str + 'A prefix used in sample code when demarking regions to be included in\n documentation.\n ' + organization: Global___ClientLibraryOrganization.ValueType + 'For whom the client library is being published.' + proto_reference_documentation_uri: _builtins.str + 'Optional link to proto reference documentation. Example:\n https://cloud.google.com/pubsub/lite/docs/reference/rpc\n ' + rest_reference_documentation_uri: _builtins.str + 'Optional link to REST reference documentation. Example:\n https://cloud.google.com/pubsub/lite/docs/reference/rest\n ' + + @_builtins.property + def method_settings(self) -> _containers.RepeatedCompositeFieldContainer[Global___MethodSettings]: + """A list of API method settings, e.g. the behavior for methods that use the + long-running operation pattern. + """ + + @_builtins.property + def codeowner_github_teams(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + """GitHub teams to be added to CODEOWNERS in the directory in GitHub + containing source code for the client libraries for this API. + """ + + @_builtins.property + def library_settings(self) -> _containers.RepeatedCompositeFieldContainer[Global___ClientLibrarySettings]: + """Client library settings. If the same version string appears multiple + times in this list, then the last one wins. Settings from earlier + settings with the same version string are discarded. + """ + + def __init__(self, *, method_settings: _abc.Iterable[Global___MethodSettings] | None=..., new_issue_uri: _builtins.str=..., documentation_uri: _builtins.str=..., api_short_name: _builtins.str=..., github_label: _builtins.str=..., codeowner_github_teams: _abc.Iterable[_builtins.str] | None=..., doc_tag_prefix: _builtins.str=..., organization: Global___ClientLibraryOrganization.ValueType=..., library_settings: _abc.Iterable[Global___ClientLibrarySettings] | None=..., proto_reference_documentation_uri: _builtins.str=..., rest_reference_documentation_uri: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['api_short_name', b'api_short_name', 'codeowner_github_teams', b'codeowner_github_teams', 'doc_tag_prefix', b'doc_tag_prefix', 'documentation_uri', b'documentation_uri', 'github_label', b'github_label', 'library_settings', b'library_settings', 'method_settings', b'method_settings', 'new_issue_uri', b'new_issue_uri', 'organization', b'organization', 'proto_reference_documentation_uri', b'proto_reference_documentation_uri', 'rest_reference_documentation_uri', b'rest_reference_documentation_uri'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___Publishing: _TypeAlias = Publishing + +@_typing.final +class JavaSettings(_message.Message): + """Settings for Java client libraries.""" + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class ServiceClassNamesEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str + + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + LIBRARY_PACKAGE_FIELD_NUMBER: _builtins.int + SERVICE_CLASS_NAMES_FIELD_NUMBER: _builtins.int + COMMON_FIELD_NUMBER: _builtins.int + library_package: _builtins.str + 'The package name to use in Java. Clobbers the java_package option\n set in the protobuf. This should be used **only** by APIs\n who have already set the language_settings.java.package_name" field\n in gapic.yaml. API teams should use the protobuf java_package option\n where possible.\n\n Example of a YAML configuration::\n\n publishing:\n java_settings:\n library_package: com.google.cloud.pubsub.v1\n ' + + @_builtins.property + def service_class_names(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: + """Configure the Java class name to use instead of the service's for its + corresponding generated GAPIC client. Keys are fully-qualified + service names as they appear in the protobuf (including the full + the language_settings.java.interface_names" field in gapic.yaml. API + teams should otherwise use the service name as it appears in the + protobuf. + + Example of a YAML configuration:: + + publishing: + java_settings: + service_class_names: + - google.pubsub.v1.Publisher: TopicAdmin + - google.pubsub.v1.Subscriber: SubscriptionAdmin + """ + + @_builtins.property + def common(self) -> Global___CommonLanguageSettings: + """Some settings.""" + + def __init__(self, *, library_package: _builtins.str=..., service_class_names: _abc.Mapping[_builtins.str, _builtins.str] | None=..., common: Global___CommonLanguageSettings | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common', 'library_package', b'library_package', 'service_class_names', b'service_class_names'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___JavaSettings: _TypeAlias = JavaSettings + +@_typing.final +class CppSettings(_message.Message): + """Settings for C++ client libraries.""" + DESCRIPTOR: _descriptor.Descriptor + COMMON_FIELD_NUMBER: _builtins.int + + @_builtins.property + def common(self) -> Global___CommonLanguageSettings: + """Some settings.""" + + def __init__(self, *, common: Global___CommonLanguageSettings | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___CppSettings: _TypeAlias = CppSettings + +@_typing.final +class PhpSettings(_message.Message): + """Settings for Php client libraries.""" + DESCRIPTOR: _descriptor.Descriptor + COMMON_FIELD_NUMBER: _builtins.int + + @_builtins.property + def common(self) -> Global___CommonLanguageSettings: + """Some settings.""" + + def __init__(self, *, common: Global___CommonLanguageSettings | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___PhpSettings: _TypeAlias = PhpSettings + +@_typing.final +class PythonSettings(_message.Message): + """Settings for Python client libraries.""" + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class ExperimentalFeatures(_message.Message): + """Experimental features to be included during client library generation. + These fields will be deprecated once the feature graduates and is enabled + by default. + """ + DESCRIPTOR: _descriptor.Descriptor + REST_ASYNC_IO_ENABLED_FIELD_NUMBER: _builtins.int + PROTOBUF_PYTHONIC_TYPES_ENABLED_FIELD_NUMBER: _builtins.int + UNVERSIONED_PACKAGE_DISABLED_FIELD_NUMBER: _builtins.int + rest_async_io_enabled: _builtins.bool + 'Enables generation of asynchronous REST clients if `rest` transport is\n enabled. By default, asynchronous REST clients will not be generated.\n This feature will be enabled by default 1 month after launching the\n feature in preview packages.\n ' + protobuf_pythonic_types_enabled: _builtins.bool + 'Enables generation of protobuf code using new types that are more\n Pythonic which are included in `protobuf>=5.29.x`. This feature will be\n enabled by default 1 month after launching the feature in preview\n packages.\n ' + unversioned_package_disabled: _builtins.bool + 'Disables generation of an unversioned Python package for this client\n library. This means that the module names will need to be versioned in\n import statements. For example `import google.cloud.library_v2` instead\n of `import google.cloud.library`.\n ' + + def __init__(self, *, rest_async_io_enabled: _builtins.bool=..., protobuf_pythonic_types_enabled: _builtins.bool=..., unversioned_package_disabled: _builtins.bool=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['protobuf_pythonic_types_enabled', b'protobuf_pythonic_types_enabled', 'rest_async_io_enabled', b'rest_async_io_enabled', 'unversioned_package_disabled', b'unversioned_package_disabled'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + COMMON_FIELD_NUMBER: _builtins.int + EXPERIMENTAL_FEATURES_FIELD_NUMBER: _builtins.int + + @_builtins.property + def common(self) -> Global___CommonLanguageSettings: + """Some settings.""" + + @_builtins.property + def experimental_features(self) -> Global___PythonSettings.ExperimentalFeatures: + """Experimental features to be included during client library generation.""" + + def __init__(self, *, common: Global___CommonLanguageSettings | None=..., experimental_features: Global___PythonSettings.ExperimentalFeatures | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common', 'experimental_features', b'experimental_features'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common', 'experimental_features', b'experimental_features'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___PythonSettings: _TypeAlias = PythonSettings + +@_typing.final +class NodeSettings(_message.Message): + """Settings for Node client libraries.""" + DESCRIPTOR: _descriptor.Descriptor + COMMON_FIELD_NUMBER: _builtins.int + + @_builtins.property + def common(self) -> Global___CommonLanguageSettings: + """Some settings.""" + + def __init__(self, *, common: Global___CommonLanguageSettings | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___NodeSettings: _TypeAlias = NodeSettings + +@_typing.final +class DotnetSettings(_message.Message): + """Settings for Dotnet client libraries.""" + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class RenamedServicesEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str + + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class RenamedResourcesEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str + + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + COMMON_FIELD_NUMBER: _builtins.int + RENAMED_SERVICES_FIELD_NUMBER: _builtins.int + RENAMED_RESOURCES_FIELD_NUMBER: _builtins.int + IGNORED_RESOURCES_FIELD_NUMBER: _builtins.int + FORCED_NAMESPACE_ALIASES_FIELD_NUMBER: _builtins.int + HANDWRITTEN_SIGNATURES_FIELD_NUMBER: _builtins.int + + @_builtins.property + def common(self) -> Global___CommonLanguageSettings: + """Some settings.""" + + @_builtins.property + def renamed_services(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: + """Map from original service names to renamed versions. + This is used when the default generated types + would cause a naming conflict. (Neither name is + fully-qualified.) + Example: Subscriber to SubscriberServiceApi. + """ + + @_builtins.property + def renamed_resources(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: + """Map from full resource types to the effective short name + for the resource. This is used when otherwise resource + named from different services would cause naming collisions. + Example entry: + "datalabeling.googleapis.com/Dataset": "DataLabelingDataset" + """ + + @_builtins.property + def ignored_resources(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + """List of full resource types to ignore during generation. + This is typically used for API-specific Location resources, + which should be handled by the generator as if they were actually + the common Location resources. + Example entry: "documentai.googleapis.com/Location" + """ + + @_builtins.property + def forced_namespace_aliases(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + """Namespaces which must be aliased in snippets due to + a known (but non-generator-predictable) naming collision + """ + + @_builtins.property + def handwritten_signatures(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + """Method signatures (in the form "service.method(signature)") + which are provided separately, so shouldn't be generated. + Snippets *calling* these methods are still generated, however. + """ + + def __init__(self, *, common: Global___CommonLanguageSettings | None=..., renamed_services: _abc.Mapping[_builtins.str, _builtins.str] | None=..., renamed_resources: _abc.Mapping[_builtins.str, _builtins.str] | None=..., ignored_resources: _abc.Iterable[_builtins.str] | None=..., forced_namespace_aliases: _abc.Iterable[_builtins.str] | None=..., handwritten_signatures: _abc.Iterable[_builtins.str] | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common', 'forced_namespace_aliases', b'forced_namespace_aliases', 'handwritten_signatures', b'handwritten_signatures', 'ignored_resources', b'ignored_resources', 'renamed_resources', b'renamed_resources', 'renamed_services', b'renamed_services'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___DotnetSettings: _TypeAlias = DotnetSettings + +@_typing.final +class RubySettings(_message.Message): + """Settings for Ruby client libraries.""" + DESCRIPTOR: _descriptor.Descriptor + COMMON_FIELD_NUMBER: _builtins.int + + @_builtins.property + def common(self) -> Global___CommonLanguageSettings: + """Some settings.""" + + def __init__(self, *, common: Global___CommonLanguageSettings | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___RubySettings: _TypeAlias = RubySettings + +@_typing.final +class GoSettings(_message.Message): + """Settings for Go client libraries.""" + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class RenamedServicesEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str + + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + COMMON_FIELD_NUMBER: _builtins.int + RENAMED_SERVICES_FIELD_NUMBER: _builtins.int + + @_builtins.property + def common(self) -> Global___CommonLanguageSettings: + """Some settings.""" + + @_builtins.property + def renamed_services(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: + """Map of service names to renamed services. Keys are the package relative + service names and values are the name to be used for the service client + and call options. + + publishing: + go_settings: + renamed_services: + Publisher: TopicAdmin + """ + + def __init__(self, *, common: Global___CommonLanguageSettings | None=..., renamed_services: _abc.Mapping[_builtins.str, _builtins.str] | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common', 'renamed_services', b'renamed_services'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___GoSettings: _TypeAlias = GoSettings + +@_typing.final +class MethodSettings(_message.Message): + """Describes the generator configuration for a method.""" + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class LongRunning(_message.Message): + """Describes settings to use when generating API methods that use the + long-running operation pattern. + All default values below are from those used in the client library + generators (e.g. + [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)). + """ + DESCRIPTOR: _descriptor.Descriptor + INITIAL_POLL_DELAY_FIELD_NUMBER: _builtins.int + POLL_DELAY_MULTIPLIER_FIELD_NUMBER: _builtins.int + MAX_POLL_DELAY_FIELD_NUMBER: _builtins.int + TOTAL_POLL_TIMEOUT_FIELD_NUMBER: _builtins.int + poll_delay_multiplier: _builtins.float + 'Multiplier to gradually increase delay between subsequent polls until it\n reaches max_poll_delay.\n Default value: 1.5.\n ' + + @_builtins.property + def initial_poll_delay(self) -> _duration_pb2.Duration: + """Initial delay after which the first poll request will be made. + Default value: 5 seconds. + """ + + @_builtins.property + def max_poll_delay(self) -> _duration_pb2.Duration: + """Maximum time between two subsequent poll requests. + Default value: 45 seconds. + """ + + @_builtins.property + def total_poll_timeout(self) -> _duration_pb2.Duration: + """Total polling timeout. + Default value: 5 minutes. + """ + + def __init__(self, *, initial_poll_delay: _duration_pb2.Duration | None=..., poll_delay_multiplier: _builtins.float=..., max_poll_delay: _duration_pb2.Duration | None=..., total_poll_timeout: _duration_pb2.Duration | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['initial_poll_delay', b'initial_poll_delay', 'max_poll_delay', b'max_poll_delay', 'total_poll_timeout', b'total_poll_timeout'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['initial_poll_delay', b'initial_poll_delay', 'max_poll_delay', b'max_poll_delay', 'poll_delay_multiplier', b'poll_delay_multiplier', 'total_poll_timeout', b'total_poll_timeout'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + SELECTOR_FIELD_NUMBER: _builtins.int + LONG_RUNNING_FIELD_NUMBER: _builtins.int + AUTO_POPULATED_FIELDS_FIELD_NUMBER: _builtins.int + selector: _builtins.str + 'The fully qualified name of the method, for which the options below apply.\n This is used to find the method to apply the options.\n\n Example:\n\n publishing:\n method_settings:\n - selector: google.storage.control.v2.StorageControl.CreateFolder\n # method settings for CreateFolder...\n ' + + @_builtins.property + def long_running(self) -> Global___MethodSettings.LongRunning: + """Describes settings to use for long-running operations when generating + API methods for RPCs. Complements RPCs that use the annotations in + google/longrunning/operations.proto. + + Example of a YAML configuration:: + + publishing: + method_settings: + - selector: google.cloud.speech.v2.Speech.BatchRecognize + long_running: + initial_poll_delay: 60s # 1 minute + poll_delay_multiplier: 1.5 + max_poll_delay: 360s # 6 minutes + total_poll_timeout: 54000s # 90 minutes + """ + + @_builtins.property + def auto_populated_fields(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + """List of top-level fields of the request message, that should be + automatically populated by the client libraries based on their + (google.api.field_info).format. Currently supported format: UUID4. + + Example of a YAML configuration: + + publishing: + method_settings: + - selector: google.example.v1.ExampleService.CreateExample + auto_populated_fields: + - request_id + """ + + def __init__(self, *, selector: _builtins.str=..., long_running: Global___MethodSettings.LongRunning | None=..., auto_populated_fields: _abc.Iterable[_builtins.str] | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['long_running', b'long_running'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['auto_populated_fields', b'auto_populated_fields', 'long_running', b'long_running', 'selector', b'selector'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___MethodSettings: _TypeAlias = MethodSettings + +@_typing.final +class SelectiveGapicGeneration(_message.Message): + """This message is used to configure the generation of a subset of the RPCs in + a service for client libraries. + """ + DESCRIPTOR: _descriptor.Descriptor + METHODS_FIELD_NUMBER: _builtins.int + GENERATE_OMITTED_AS_INTERNAL_FIELD_NUMBER: _builtins.int + generate_omitted_as_internal: _builtins.bool + 'Setting this to true indicates to the client generators that methods\n that would be excluded from the generation should instead be generated\n in a way that indicates these methods should not be consumed by\n end users. How this is expressed is up to individual language\n implementations to decide. Some examples may be: added annotations,\n obfuscated identifiers, or other language idiomatic patterns.\n ' + + @_builtins.property + def methods(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + """An allowlist of the fully qualified names of RPCs that should be included + on public client surfaces. + """ + + def __init__(self, *, methods: _abc.Iterable[_builtins.str] | None=..., generate_omitted_as_internal: _builtins.bool=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['generate_omitted_as_internal', b'generate_omitted_as_internal', 'methods', b'methods'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___SelectiveGapicGeneration: _TypeAlias = SelectiveGapicGeneration +METHOD_SIGNATURE_FIELD_NUMBER: _builtins.int +DEFAULT_HOST_FIELD_NUMBER: _builtins.int +OAUTH_SCOPES_FIELD_NUMBER: _builtins.int +API_VERSION_FIELD_NUMBER: _builtins.int +method_signature: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.MethodOptions, _containers.RepeatedScalarFieldContainer[_builtins.str]] +'A definition of a client library method signature.\n\nIn client libraries, each proto RPC corresponds to one or more methods\nwhich the end user is able to call, and calls the underlying RPC.\nNormally, this method receives a single argument (a struct or instance\ncorresponding to the RPC request object). Defining this field will\nadd one or more overloads providing flattened or simpler method signatures\nin some languages.\n\nThe fields on the method signature are provided as a comma-separated\nstring.\n\nFor example, the proto RPC and annotation:\n\n rpc CreateSubscription(CreateSubscriptionRequest)\n returns (Subscription) {\n option (google.api.method_signature) = "name,topic";\n }\n\nWould add the following Java overload (in addition to the method accepting\nthe request object):\n\n public final Subscription createSubscription(String name, String topic)\n\nThe following backwards-compatibility guidelines apply:\n\n * Adding this annotation to an unannotated method is backwards\n compatible.\n * Adding this annotation to a method which already has existing\n method signature annotations is backwards compatible if and only if\n the new method signature annotation is last in the sequence.\n * Modifying or removing an existing method signature annotation is\n a breaking change.\n * Re-ordering existing method signature annotations is a breaking\n change.\n' +default_host: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.ServiceOptions, _builtins.str] +'The hostname for this service.\nThis should be specified with no prefix or protocol.\n\nExample:\n\n service Foo {\n option (google.api.default_host) = "foo.googleapi.com";\n ...\n }\n' +oauth_scopes: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.ServiceOptions, _builtins.str] +'OAuth scopes needed for the client.\n\nExample:\n\n service Foo {\n option (google.api.oauth_scopes) = \\\n "https://www.googleapis.com/auth/cloud-platform";\n ...\n }\n\nIf there is more than one scope, use a comma-separated string:\n\nExample:\n\n service Foo {\n option (google.api.oauth_scopes) = \\\n "https://www.googleapis.com/auth/cloud-platform,"\n "https://www.googleapis.com/auth/monitoring";\n ...\n }\n' +api_version: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.ServiceOptions, _builtins.str] +'The API version of this service, which should be sent by version-aware\nclients to the service. This allows services to abide by the schema and\nbehavior of the service at the time this API version was deployed.\nThe format of the API version must be treated as opaque by clients.\nServices may use a format with an apparent structure, but clients must\nnot rely on this to determine components within an API version, or attempt\nto construct other valid API versions. Note that this is for upcoming\nfunctionality and may not be implemented for all services.\n\nExample:\n\n service Foo {\n option (google.api.api_version) = "v1_20230821_preview";\n }\n' \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/__init__.py b/src/viam/gen/google/api/expr/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/expr/v1alpha1/__init__.py b/src/viam/gen/google/api/expr/v1alpha1/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/expr/v1alpha1/checked_grpc.py b/src/viam/gen/google/api/expr/v1alpha1/checked_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/expr/v1alpha1/checked_pb2.py b/src/viam/gen/google/api/expr/v1alpha1/checked_pb2.py new file mode 100644 index 0000000000..b97cc00ced --- /dev/null +++ b/src/viam/gen/google/api/expr/v1alpha1/checked_pb2.py @@ -0,0 +1,52 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1alpha1/checked.proto') +_sym_db = _symbol_database.Default() +from .....google.api.expr.v1alpha1 import syntax_pb2 as google_dot_api_dot_expr_dot_v1alpha1_dot_syntax__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&google/api/expr/v1alpha1/checked.proto\x12\x18google.api.expr.v1alpha1\x1a%google/api/expr/v1alpha1/syntax.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto"\x9a\x04\n\x0bCheckedExpr\x12\\\n\rreference_map\x18\x02 \x03(\x0b27.google.api.expr.v1alpha1.CheckedExpr.ReferenceMapEntryR\x0creferenceMap\x12M\n\x08type_map\x18\x03 \x03(\x0b22.google.api.expr.v1alpha1.CheckedExpr.TypeMapEntryR\x07typeMap\x12E\n\x0bsource_info\x18\x05 \x01(\x0b2$.google.api.expr.v1alpha1.SourceInfoR\nsourceInfo\x12!\n\x0cexpr_version\x18\x06 \x01(\tR\x0bexprVersion\x122\n\x04expr\x18\x04 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x04expr\x1ad\n\x11ReferenceMapEntry\x12\x10\n\x03key\x18\x01 \x01(\x03R\x03key\x129\n\x05value\x18\x02 \x01(\x0b2#.google.api.expr.v1alpha1.ReferenceR\x05value:\x028\x01\x1aZ\n\x0cTypeMapEntry\x12\x10\n\x03key\x18\x01 \x01(\x03R\x03key\x124\n\x05value\x18\x02 \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\x05value:\x028\x01"\xc8\x0b\n\x04Type\x12*\n\x03dyn\x18\x01 \x01(\x0b2\x16.google.protobuf.EmptyH\x00R\x03dyn\x120\n\x04null\x18\x02 \x01(\x0e2\x1a.google.protobuf.NullValueH\x00R\x04null\x12L\n\tprimitive\x18\x03 \x01(\x0e2,.google.api.expr.v1alpha1.Type.PrimitiveTypeH\x00R\tprimitive\x12H\n\x07wrapper\x18\x04 \x01(\x0e2,.google.api.expr.v1alpha1.Type.PrimitiveTypeH\x00R\x07wrapper\x12M\n\nwell_known\x18\x05 \x01(\x0e2,.google.api.expr.v1alpha1.Type.WellKnownTypeH\x00R\twellKnown\x12F\n\tlist_type\x18\x06 \x01(\x0b2\'.google.api.expr.v1alpha1.Type.ListTypeH\x00R\x08listType\x12C\n\x08map_type\x18\x07 \x01(\x0b2&.google.api.expr.v1alpha1.Type.MapTypeH\x00R\x07mapType\x12I\n\x08function\x18\x08 \x01(\x0b2+.google.api.expr.v1alpha1.Type.FunctionTypeH\x00R\x08function\x12#\n\x0cmessage_type\x18\t \x01(\tH\x00R\x0bmessageType\x12\x1f\n\ntype_param\x18\n \x01(\tH\x00R\ttypeParam\x124\n\x04type\x18\x0b \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeH\x00R\x04type\x12.\n\x05error\x18\x0c \x01(\x0b2\x16.google.protobuf.EmptyH\x00R\x05error\x12R\n\rabstract_type\x18\x0e \x01(\x0b2+.google.api.expr.v1alpha1.Type.AbstractTypeH\x00R\x0cabstractType\x1aG\n\x08ListType\x12;\n\telem_type\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\x08elemType\x1a\x83\x01\n\x07MapType\x129\n\x08key_type\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\x07keyType\x12=\n\nvalue_type\x18\x02 \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\tvalueType\x1a\x8c\x01\n\x0cFunctionType\x12?\n\x0bresult_type\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\nresultType\x12;\n\targ_types\x18\x02 \x03(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\x08argTypes\x1ak\n\x0cAbstractType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12G\n\x0fparameter_types\x18\x02 \x03(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\x0eparameterTypes"s\n\rPrimitiveType\x12\x1e\n\x1aPRIMITIVE_TYPE_UNSPECIFIED\x10\x00\x12\x08\n\x04BOOL\x10\x01\x12\t\n\x05INT64\x10\x02\x12\n\n\x06UINT64\x10\x03\x12\n\n\x06DOUBLE\x10\x04\x12\n\n\x06STRING\x10\x05\x12\t\n\x05BYTES\x10\x06"V\n\rWellKnownType\x12\x1f\n\x1bWELL_KNOWN_TYPE_UNSPECIFIED\x10\x00\x12\x07\n\x03ANY\x10\x01\x12\r\n\tTIMESTAMP\x10\x02\x12\x0c\n\x08DURATION\x10\x03B\x0b\n\ttype_kind"\xb3\x05\n\x04Decl\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12@\n\x05ident\x18\x02 \x01(\x0b2(.google.api.expr.v1alpha1.Decl.IdentDeclH\x00R\x05ident\x12I\n\x08function\x18\x03 \x01(\x0b2+.google.api.expr.v1alpha1.Decl.FunctionDeclH\x00R\x08function\x1a\x8b\x01\n\tIdentDecl\x122\n\x04type\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\x04type\x128\n\x05value\x18\x02 \x01(\x0b2".google.api.expr.v1alpha1.ConstantR\x05value\x12\x10\n\x03doc\x18\x03 \x01(\tR\x03doc\x1a\xee\x02\n\x0cFunctionDecl\x12R\n\toverloads\x18\x01 \x03(\x0b24.google.api.expr.v1alpha1.Decl.FunctionDecl.OverloadR\toverloads\x1a\x89\x02\n\x08Overload\x12\x1f\n\x0boverload_id\x18\x01 \x01(\tR\noverloadId\x126\n\x06params\x18\x02 \x03(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\x06params\x12\x1f\n\x0btype_params\x18\x03 \x03(\tR\ntypeParams\x12?\n\x0bresult_type\x18\x04 \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\nresultType\x120\n\x14is_instance_function\x18\x05 \x01(\x08R\x12isInstanceFunction\x12\x10\n\x03doc\x18\x06 \x01(\tR\x03docB\x0b\n\tdecl_kind"z\n\tReference\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x0boverload_id\x18\x03 \x03(\tR\noverloadId\x128\n\x05value\x18\x04 \x01(\x0b2".google.api.expr.v1alpha1.ConstantR\x05valueBl\n\x1ccom.google.api.expr.v1alpha1B\tDeclProtoP\x01Z= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class CheckedExpr(_message.Message): + """Protos for representing CEL declarations and typed checked expressions. + + A CEL expression which has been successfully type checked. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class ReferenceMapEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.int + + @_builtins.property + def value(self) -> Global___Reference: + ... + + def __init__(self, *, key: _builtins.int=..., value: Global___Reference | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class TypeMapEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.int + + @_builtins.property + def value(self) -> Global___Type: + ... + + def __init__(self, *, key: _builtins.int=..., value: Global___Type | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + REFERENCE_MAP_FIELD_NUMBER: _builtins.int + TYPE_MAP_FIELD_NUMBER: _builtins.int + SOURCE_INFO_FIELD_NUMBER: _builtins.int + EXPR_VERSION_FIELD_NUMBER: _builtins.int + EXPR_FIELD_NUMBER: _builtins.int + expr_version: _builtins.str + 'The expr version indicates the major / minor version number of the `expr`\n representation.\n\n The most common reason for a version change will be to indicate to the CEL\n runtimes that transformations have been performed on the expr during static\n analysis. In some cases, this will save the runtime the work of applying\n the same or similar transformations prior to evaluation.\n ' + + @_builtins.property + def reference_map(self) -> _containers.MessageMap[_builtins.int, Global___Reference]: + """A map from expression ids to resolved references. + + The following entries are in this table: + + - An Ident or Select expression is represented here if it resolves to a + declaration. For instance, if `a.b.c` is represented by + `select(select(id(a), b), c)`, and `a.b` resolves to a declaration, + while `c` is a field selection, then the reference is attached to the + nested select expression (but not to the id or or the outer select). + In turn, if `a` resolves to a declaration and `b.c` are field selections, + the reference is attached to the ident expression. + - Every Call expression has an entry here, identifying the function being + called. + - Every CreateStruct expression for a message has an entry, identifying + the message. + """ + + @_builtins.property + def type_map(self) -> _containers.MessageMap[_builtins.int, Global___Type]: + """A map from expression ids to types. + + Every expression node which has a type different than DYN has a mapping + here. If an expression has type DYN, it is omitted from this map to save + space. + """ + + @_builtins.property + def source_info(self) -> _syntax_pb2.SourceInfo: + """The source info derived from input that generated the parsed `expr` and + any optimizations made during the type-checking pass. + """ + + @_builtins.property + def expr(self) -> _syntax_pb2.Expr: + """The checked expression. Semantically equivalent to the parsed `expr`, but + may have structural differences. + """ + + def __init__(self, *, reference_map: _abc.Mapping[_builtins.int, Global___Reference] | None=..., type_map: _abc.Mapping[_builtins.int, Global___Type] | None=..., source_info: _syntax_pb2.SourceInfo | None=..., expr_version: _builtins.str=..., expr: _syntax_pb2.Expr | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'source_info', b'source_info'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'expr_version', b'expr_version', 'reference_map', b'reference_map', 'source_info', b'source_info', 'type_map', b'type_map'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___CheckedExpr: _TypeAlias = CheckedExpr + +@_typing.final +class Type(_message.Message): + """Represents a CEL type.""" + DESCRIPTOR: _descriptor.Descriptor + + class _PrimitiveType: + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType + + class _PrimitiveTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[Type._PrimitiveType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor + PRIMITIVE_TYPE_UNSPECIFIED: Type._PrimitiveType.ValueType + 'Unspecified type.' + BOOL: Type._PrimitiveType.ValueType + 'Boolean type.' + INT64: Type._PrimitiveType.ValueType + 'Int64 type.\n\n Proto-based integer values are widened to int64.\n ' + UINT64: Type._PrimitiveType.ValueType + 'Uint64 type.\n\n Proto-based unsigned integer values are widened to uint64.\n ' + DOUBLE: Type._PrimitiveType.ValueType + 'Double type.\n\n Proto-based float values are widened to double values.\n ' + STRING: Type._PrimitiveType.ValueType + 'String type.' + BYTES: Type._PrimitiveType.ValueType + 'Bytes type.' + + class PrimitiveType(_PrimitiveType, metaclass=_PrimitiveTypeEnumTypeWrapper): + """CEL primitive types.""" + PRIMITIVE_TYPE_UNSPECIFIED: Type.PrimitiveType.ValueType + 'Unspecified type.' + BOOL: Type.PrimitiveType.ValueType + 'Boolean type.' + INT64: Type.PrimitiveType.ValueType + 'Int64 type.\n\n Proto-based integer values are widened to int64.\n ' + UINT64: Type.PrimitiveType.ValueType + 'Uint64 type.\n\n Proto-based unsigned integer values are widened to uint64.\n ' + DOUBLE: Type.PrimitiveType.ValueType + 'Double type.\n\n Proto-based float values are widened to double values.\n ' + STRING: Type.PrimitiveType.ValueType + 'String type.' + BYTES: Type.PrimitiveType.ValueType + 'Bytes type.' + + class _WellKnownType: + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType + + class _WellKnownTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[Type._WellKnownType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor + WELL_KNOWN_TYPE_UNSPECIFIED: Type._WellKnownType.ValueType + 'Unspecified type.' + ANY: Type._WellKnownType.ValueType + 'Well-known protobuf.Any type.\n\n Any types are a polymorphic message type. During type-checking they are\n treated like `DYN` types, but at runtime they are resolved to a specific\n message type specified at evaluation time.\n ' + TIMESTAMP: Type._WellKnownType.ValueType + 'Well-known protobuf.Timestamp type, internally referenced as `timestamp`.' + DURATION: Type._WellKnownType.ValueType + 'Well-known protobuf.Duration type, internally referenced as `duration`.' + + class WellKnownType(_WellKnownType, metaclass=_WellKnownTypeEnumTypeWrapper): + """Well-known protobuf types treated with first-class support in CEL.""" + WELL_KNOWN_TYPE_UNSPECIFIED: Type.WellKnownType.ValueType + 'Unspecified type.' + ANY: Type.WellKnownType.ValueType + 'Well-known protobuf.Any type.\n\n Any types are a polymorphic message type. During type-checking they are\n treated like `DYN` types, but at runtime they are resolved to a specific\n message type specified at evaluation time.\n ' + TIMESTAMP: Type.WellKnownType.ValueType + 'Well-known protobuf.Timestamp type, internally referenced as `timestamp`.' + DURATION: Type.WellKnownType.ValueType + 'Well-known protobuf.Duration type, internally referenced as `duration`.' + + @_typing.final + class ListType(_message.Message): + """List type with typed elements, e.g. `list`.""" + DESCRIPTOR: _descriptor.Descriptor + ELEM_TYPE_FIELD_NUMBER: _builtins.int + + @_builtins.property + def elem_type(self) -> Global___Type: + """The element type.""" + + def __init__(self, *, elem_type: Global___Type | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['elem_type', b'elem_type'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['elem_type', b'elem_type'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class MapType(_message.Message): + """Map type with parameterized key and value types, e.g. `map`.""" + DESCRIPTOR: _descriptor.Descriptor + KEY_TYPE_FIELD_NUMBER: _builtins.int + VALUE_TYPE_FIELD_NUMBER: _builtins.int + + @_builtins.property + def key_type(self) -> Global___Type: + """The type of the key.""" + + @_builtins.property + def value_type(self) -> Global___Type: + """The type of the value.""" + + def __init__(self, *, key_type: Global___Type | None=..., value_type: Global___Type | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['key_type', b'key_type', 'value_type', b'value_type'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key_type', b'key_type', 'value_type', b'value_type'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class FunctionType(_message.Message): + """Function type with result and arg types.""" + DESCRIPTOR: _descriptor.Descriptor + RESULT_TYPE_FIELD_NUMBER: _builtins.int + ARG_TYPES_FIELD_NUMBER: _builtins.int + + @_builtins.property + def result_type(self) -> Global___Type: + """Result type of the function.""" + + @_builtins.property + def arg_types(self) -> _containers.RepeatedCompositeFieldContainer[Global___Type]: + """Argument types of the function.""" + + def __init__(self, *, result_type: Global___Type | None=..., arg_types: _abc.Iterable[Global___Type] | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['result_type', b'result_type'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['arg_types', b'arg_types', 'result_type', b'result_type'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class AbstractType(_message.Message): + """Application defined abstract type.""" + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + PARAMETER_TYPES_FIELD_NUMBER: _builtins.int + name: _builtins.str + 'The fully qualified name of this abstract type.' + + @_builtins.property + def parameter_types(self) -> _containers.RepeatedCompositeFieldContainer[Global___Type]: + """Parameter types for this abstract type.""" + + def __init__(self, *, name: _builtins.str=..., parameter_types: _abc.Iterable[Global___Type] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'parameter_types', b'parameter_types'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + DYN_FIELD_NUMBER: _builtins.int + NULL_FIELD_NUMBER: _builtins.int + PRIMITIVE_FIELD_NUMBER: _builtins.int + WRAPPER_FIELD_NUMBER: _builtins.int + WELL_KNOWN_FIELD_NUMBER: _builtins.int + LIST_TYPE_FIELD_NUMBER: _builtins.int + MAP_TYPE_FIELD_NUMBER: _builtins.int + FUNCTION_FIELD_NUMBER: _builtins.int + MESSAGE_TYPE_FIELD_NUMBER: _builtins.int + TYPE_PARAM_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + ERROR_FIELD_NUMBER: _builtins.int + ABSTRACT_TYPE_FIELD_NUMBER: _builtins.int + null: _struct_pb2.NullValue.ValueType + 'Null value.' + primitive: Global___Type.PrimitiveType.ValueType + "Primitive types: `true`, `1u`, `-2.0`, `'string'`, `b'bytes'`." + wrapper: Global___Type.PrimitiveType.ValueType + 'Wrapper of a primitive type, e.g. `google.protobuf.Int64Value`.' + well_known: Global___Type.WellKnownType.ValueType + 'Well-known protobuf type such as `google.protobuf.Timestamp`.' + message_type: _builtins.str + 'Protocol buffer message type.\n\n The `message_type` string specifies the qualified message type name. For\n example, `google.plus.Profile`.\n ' + type_param: _builtins.str + 'Type param type.\n\n The `type_param` string specifies the type parameter name, e.g. `list`\n would be a `list_type` whose element type was a `type_param` type\n named `E`.\n ' + + @_builtins.property + def dyn(self) -> _empty_pb2.Empty: + """Dynamic type.""" + + @_builtins.property + def list_type(self) -> Global___Type.ListType: + """Parameterized list with elements of `list_type`, e.g. `list`.""" + + @_builtins.property + def map_type(self) -> Global___Type.MapType: + """Parameterized map with typed keys and values.""" + + @_builtins.property + def function(self) -> Global___Type.FunctionType: + """Function type.""" + + @_builtins.property + def type(self) -> Global___Type: + """Type type. + + The `type` value specifies the target type. e.g. int is type with a + target type of `Primitive.INT`. + """ + + @_builtins.property + def error(self) -> _empty_pb2.Empty: + """Error type. + + During type-checking if an expression is an error, its type is propagated + as the `ERROR` type. This permits the type-checker to discover other + errors present in the expression. + """ + + @_builtins.property + def abstract_type(self) -> Global___Type.AbstractType: + """Abstract, application defined type.""" + + def __init__(self, *, dyn: _empty_pb2.Empty | None=..., null: _struct_pb2.NullValue.ValueType=..., primitive: Global___Type.PrimitiveType.ValueType=..., wrapper: Global___Type.PrimitiveType.ValueType=..., well_known: Global___Type.WellKnownType.ValueType=..., list_type: Global___Type.ListType | None=..., map_type: Global___Type.MapType | None=..., function: Global___Type.FunctionType | None=..., message_type: _builtins.str=..., type_param: _builtins.str=..., type: Global___Type | None=..., error: _empty_pb2.Empty | None=..., abstract_type: Global___Type.AbstractType | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['abstract_type', b'abstract_type', 'dyn', b'dyn', 'error', b'error', 'function', b'function', 'list_type', b'list_type', 'map_type', b'map_type', 'message_type', b'message_type', 'null', b'null', 'primitive', b'primitive', 'type', b'type', 'type_kind', b'type_kind', 'type_param', b'type_param', 'well_known', b'well_known', 'wrapper', b'wrapper'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['abstract_type', b'abstract_type', 'dyn', b'dyn', 'error', b'error', 'function', b'function', 'list_type', b'list_type', 'map_type', b'map_type', 'message_type', b'message_type', 'null', b'null', 'primitive', b'primitive', 'type', b'type', 'type_kind', b'type_kind', 'type_param', b'type_param', 'well_known', b'well_known', 'wrapper', b'wrapper'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + _WhichOneofReturnType_type_kind: _TypeAlias = _typing.Literal['dyn', 'null', 'primitive', 'wrapper', 'well_known', 'list_type', 'map_type', 'function', 'message_type', 'type_param', 'type', 'error', 'abstract_type'] + _WhichOneofArgType_type_kind: _TypeAlias = _typing.Literal['type_kind', b'type_kind'] + + def WhichOneof(self, oneof_group: _WhichOneofArgType_type_kind) -> _WhichOneofReturnType_type_kind | None: + ... +Global___Type: _TypeAlias = Type + +@_typing.final +class Decl(_message.Message): + """Represents a declaration of a named value or function. + + A declaration is part of the contract between the expression, the agent + evaluating that expression, and the caller requesting evaluation. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class IdentDecl(_message.Message): + """Identifier declaration which specifies its type and optional `Expr` value. + + An identifier without a value is a declaration that must be provided at + evaluation time. An identifier with a value should resolve to a constant, + but may be used in conjunction with other identifiers bound at evaluation + time. + """ + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + DOC_FIELD_NUMBER: _builtins.int + doc: _builtins.str + 'Documentation string for the identifier.' + + @_builtins.property + def type(self) -> Global___Type: + """Required. The type of the identifier.""" + + @_builtins.property + def value(self) -> _syntax_pb2.Constant: + """The constant value of the identifier. If not specified, the identifier + must be supplied at evaluation time. + """ + + def __init__(self, *, type: Global___Type | None=..., value: _syntax_pb2.Constant | None=..., doc: _builtins.str=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['type', b'type', 'value', b'value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['doc', b'doc', 'type', b'type', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class FunctionDecl(_message.Message): + """Function declaration specifies one or more overloads which indicate the + function's parameter types and return type. + + Functions have no observable side-effects (there may be side-effects like + logging which are not observable from CEL). + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class Overload(_message.Message): + """An overload indicates a function's parameter types and return type, and + may optionally include a function body described in terms of + [Expr][google.api.expr.v1alpha1.Expr] values. + + Functions overloads are declared in either a function or method + call-style. For methods, the `params[0]` is the expected type of the + target receiver. + + Overloads must have non-overlapping argument types after erasure of all + parameterized type variables (similar as type erasure in Java). + """ + DESCRIPTOR: _descriptor.Descriptor + OVERLOAD_ID_FIELD_NUMBER: _builtins.int + PARAMS_FIELD_NUMBER: _builtins.int + TYPE_PARAMS_FIELD_NUMBER: _builtins.int + RESULT_TYPE_FIELD_NUMBER: _builtins.int + IS_INSTANCE_FUNCTION_FIELD_NUMBER: _builtins.int + DOC_FIELD_NUMBER: _builtins.int + overload_id: _builtins.str + 'Required. Globally unique overload name of the function which reflects\n the function name and argument types.\n\n This will be used by a [Reference][google.api.expr.v1alpha1.Reference]\n to indicate the `overload_id` that was resolved for the function\n `name`.\n ' + is_instance_function: _builtins.bool + 'Whether the function is to be used in a method call-style `x.f(...)`\n or a function call-style `f(x, ...)`.\n\n For methods, the first parameter declaration, `params[0]` is the\n expected type of the target receiver.\n ' + doc: _builtins.str + 'Documentation string for the overload.' + + @_builtins.property + def params(self) -> _containers.RepeatedCompositeFieldContainer[Global___Type]: + """List of function parameter [Type][google.api.expr.v1alpha1.Type] + values. + + Param types are disjoint after generic type parameters have been + replaced with the type `DYN`. Since the `DYN` type is compatible with + any other type, this means that if `A` is a type parameter, the + function types `int` and `int` are not disjoint. Likewise, + `map` is not disjoint from `map`. + + When the `result_type` of a function is a generic type param, the + type param name also appears as the `type` of on at least one params. + """ + + @_builtins.property + def type_params(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + """The type param names associated with the function declaration. + + For example, `function ex(K key, map map) : V` would yield + the type params of `K, V`. + """ + + @_builtins.property + def result_type(self) -> Global___Type: + """Required. The result type of the function. For example, the operator + `string.isEmpty()` would have `result_type` of `kind: BOOL`. + """ + + def __init__(self, *, overload_id: _builtins.str=..., params: _abc.Iterable[Global___Type] | None=..., type_params: _abc.Iterable[_builtins.str] | None=..., result_type: Global___Type | None=..., is_instance_function: _builtins.bool=..., doc: _builtins.str=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['result_type', b'result_type'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['doc', b'doc', 'is_instance_function', b'is_instance_function', 'overload_id', b'overload_id', 'params', b'params', 'result_type', b'result_type', 'type_params', b'type_params'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + OVERLOADS_FIELD_NUMBER: _builtins.int + + @_builtins.property + def overloads(self) -> _containers.RepeatedCompositeFieldContainer[Global___Decl.FunctionDecl.Overload]: + """Required. List of function overloads, must contain at least one overload.""" + + def __init__(self, *, overloads: _abc.Iterable[Global___Decl.FunctionDecl.Overload] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['overloads', b'overloads'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + NAME_FIELD_NUMBER: _builtins.int + IDENT_FIELD_NUMBER: _builtins.int + FUNCTION_FIELD_NUMBER: _builtins.int + name: _builtins.str + 'The fully qualified name of the declaration.\n\n Declarations are organized in containers and this represents the full path\n to the declaration in its container, as in `google.api.expr.Decl`.\n\n Declarations used as\n [FunctionDecl.Overload][google.api.expr.v1alpha1.Decl.FunctionDecl.Overload]\n parameters may or may not have a name depending on whether the overload is\n function declaration or a function definition containing a result\n [Expr][google.api.expr.v1alpha1.Expr].\n ' + + @_builtins.property + def ident(self) -> Global___Decl.IdentDecl: + """Identifier declaration.""" + + @_builtins.property + def function(self) -> Global___Decl.FunctionDecl: + """Function declaration.""" + + def __init__(self, *, name: _builtins.str=..., ident: Global___Decl.IdentDecl | None=..., function: Global___Decl.FunctionDecl | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['decl_kind', b'decl_kind', 'function', b'function', 'ident', b'ident'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['decl_kind', b'decl_kind', 'function', b'function', 'ident', b'ident', 'name', b'name'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + _WhichOneofReturnType_decl_kind: _TypeAlias = _typing.Literal['ident', 'function'] + _WhichOneofArgType_decl_kind: _TypeAlias = _typing.Literal['decl_kind', b'decl_kind'] + + def WhichOneof(self, oneof_group: _WhichOneofArgType_decl_kind) -> _WhichOneofReturnType_decl_kind | None: + ... +Global___Decl: _TypeAlias = Decl + +@_typing.final +class Reference(_message.Message): + """Describes a resolved reference to a declaration.""" + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + OVERLOAD_ID_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + name: _builtins.str + 'The fully qualified name of the declaration.' + + @_builtins.property + def overload_id(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + """For references to functions, this is a list of `Overload.overload_id` + values which match according to typing rules. + + If the list has more than one element, overload resolution among the + presented candidates must happen at runtime because of dynamic types. The + type checker attempts to narrow down this list as much as possible. + + Empty if this is not a reference to a + [Decl.FunctionDecl][google.api.expr.v1alpha1.Decl.FunctionDecl]. + """ + + @_builtins.property + def value(self) -> _syntax_pb2.Constant: + """For references to constants, this may contain the value of the + constant if known at compile time. + """ + + def __init__(self, *, name: _builtins.str=..., overload_id: _abc.Iterable[_builtins.str] | None=..., value: _syntax_pb2.Constant | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'overload_id', b'overload_id', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___Reference: _TypeAlias = Reference \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1alpha1/eval_grpc.py b/src/viam/gen/google/api/expr/v1alpha1/eval_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/expr/v1alpha1/eval_pb2.py b/src/viam/gen/google/api/expr/v1alpha1/eval_pb2.py new file mode 100644 index 0000000000..9a447afde1 --- /dev/null +++ b/src/viam/gen/google/api/expr/v1alpha1/eval_pb2.py @@ -0,0 +1,27 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1alpha1/eval.proto') +_sym_db = _symbol_database.Default() +from .....google.api.expr.v1alpha1 import value_pb2 as google_dot_api_dot_expr_dot_v1alpha1_dot_value__pb2 +from .....google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#google/api/expr/v1alpha1/eval.proto\x12\x18google.api.expr.v1alpha1\x1a$google/api/expr/v1alpha1/value.proto\x1a\x17google/rpc/status.proto"\xc2\x01\n\tEvalState\x12;\n\x06values\x18\x01 \x03(\x0b2#.google.api.expr.v1alpha1.ExprValueR\x06values\x12D\n\x07results\x18\x03 \x03(\x0b2*.google.api.expr.v1alpha1.EvalState.ResultR\x07results\x1a2\n\x06Result\x12\x12\n\x04expr\x18\x01 \x01(\x03R\x04expr\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05value"\xca\x01\n\tExprValue\x127\n\x05value\x18\x01 \x01(\x0b2\x1f.google.api.expr.v1alpha1.ValueH\x00R\x05value\x12:\n\x05error\x18\x02 \x01(\x0b2".google.api.expr.v1alpha1.ErrorSetH\x00R\x05error\x12@\n\x07unknown\x18\x03 \x01(\x0b2$.google.api.expr.v1alpha1.UnknownSetH\x00R\x07unknownB\x06\n\x04kind"6\n\x08ErrorSet\x12*\n\x06errors\x18\x01 \x03(\x0b2\x12.google.rpc.StatusR\x06errors""\n\nUnknownSet\x12\x14\n\x05exprs\x18\x01 \x03(\x03R\x05exprsBl\n\x1ccom.google.api.expr.v1alpha1B\tEvalProtoP\x01Z= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class EvalState(_message.Message): + """The state of an evaluation. + + Can represent an inital, partial, or completed state of evaluation. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class Result(_message.Message): + """A single evalution result.""" + DESCRIPTOR: _descriptor.Descriptor + EXPR_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + expr: _builtins.int + 'The id of the expression this result if for.' + value: _builtins.int + 'The index in `values` of the resulting value.' + + def __init__(self, *, expr: _builtins.int=..., value: _builtins.int=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + VALUES_FIELD_NUMBER: _builtins.int + RESULTS_FIELD_NUMBER: _builtins.int + + @_builtins.property + def values(self) -> _containers.RepeatedCompositeFieldContainer[Global___ExprValue]: + """The unique values referenced in this message.""" + + @_builtins.property + def results(self) -> _containers.RepeatedCompositeFieldContainer[Global___EvalState.Result]: + """An ordered list of results. + + Tracks the flow of evaluation through the expression. + May be sparse. + """ + + def __init__(self, *, values: _abc.Iterable[Global___ExprValue] | None=..., results: _abc.Iterable[Global___EvalState.Result] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['results', b'results', 'values', b'values'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___EvalState: _TypeAlias = EvalState + +@_typing.final +class ExprValue(_message.Message): + """The value of an evaluated expression.""" + DESCRIPTOR: _descriptor.Descriptor + VALUE_FIELD_NUMBER: _builtins.int + ERROR_FIELD_NUMBER: _builtins.int + UNKNOWN_FIELD_NUMBER: _builtins.int + + @_builtins.property + def value(self) -> _value_pb2.Value: + """A concrete value.""" + + @_builtins.property + def error(self) -> Global___ErrorSet: + """The set of errors in the critical path of evalution. + + Only errors in the critical path are included. For example, + `( || true) && ` will only result in ``, + while ` || ` will result in both `` and + ``. + + Errors cause by the presence of other errors are not included in the + set. For example `.foo`, `foo()`, and ` + 1` will + only result in ``. + + Multiple errors *might* be included when evaluation could result + in different errors. For example ` + ` and + `foo(, )` may result in ``, `` or both. + The exact subset of errors included for this case is unspecified and + depends on the implementation details of the evaluator. + """ + + @_builtins.property + def unknown(self) -> Global___UnknownSet: + """The set of unknowns in the critical path of evaluation. + + Unknown behaves identically to Error with regards to propagation. + Specifically, only unknowns in the critical path are included, unknowns + caused by the presence of other unknowns are not included, and multiple + unknowns *might* be included included when evaluation could result in + different unknowns. For example: + + ( || true) && -> + || -> + .foo -> + foo() -> + + -> or + + Unknown takes precidence over Error in cases where a `Value` can short + circuit the result: + + || -> + && -> + + Errors take precidence in all other cases: + + + -> + foo(, ) -> + """ + + def __init__(self, *, value: _value_pb2.Value | None=..., error: Global___ErrorSet | None=..., unknown: Global___UnknownSet | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['error', b'error', 'kind', b'kind', 'unknown', b'unknown', 'value', b'value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['error', b'error', 'kind', b'kind', 'unknown', b'unknown', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + _WhichOneofReturnType_kind: _TypeAlias = _typing.Literal['value', 'error', 'unknown'] + _WhichOneofArgType_kind: _TypeAlias = _typing.Literal['kind', b'kind'] + + def WhichOneof(self, oneof_group: _WhichOneofArgType_kind) -> _WhichOneofReturnType_kind | None: + ... +Global___ExprValue: _TypeAlias = ExprValue + +@_typing.final +class ErrorSet(_message.Message): + """A set of errors. + + The errors included depend on the context. See `ExprValue.error`. + """ + DESCRIPTOR: _descriptor.Descriptor + ERRORS_FIELD_NUMBER: _builtins.int + + @_builtins.property + def errors(self) -> _containers.RepeatedCompositeFieldContainer[_status_pb2.Status]: + """The errors in the set.""" + + def __init__(self, *, errors: _abc.Iterable[_status_pb2.Status] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['errors', b'errors'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___ErrorSet: _TypeAlias = ErrorSet + +@_typing.final +class UnknownSet(_message.Message): + """A set of expressions for which the value is unknown. + + The unknowns included depend on the context. See `ExprValue.unknown`. + """ + DESCRIPTOR: _descriptor.Descriptor + EXPRS_FIELD_NUMBER: _builtins.int + + @_builtins.property + def exprs(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: + """The ids of the expressions with unknown values.""" + + def __init__(self, *, exprs: _abc.Iterable[_builtins.int] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['exprs', b'exprs'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___UnknownSet: _TypeAlias = UnknownSet \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1alpha1/explain_grpc.py b/src/viam/gen/google/api/expr/v1alpha1/explain_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/expr/v1alpha1/explain_pb2.py b/src/viam/gen/google/api/expr/v1alpha1/explain_pb2.py new file mode 100644 index 0000000000..4f80ee6fb5 --- /dev/null +++ b/src/viam/gen/google/api/expr/v1alpha1/explain_pb2.py @@ -0,0 +1,22 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1alpha1/explain.proto') +_sym_db = _symbol_database.Default() +from .....google.api.expr.v1alpha1 import value_pb2 as google_dot_api_dot_expr_dot_v1alpha1_dot_value__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&google/api/expr/v1alpha1/explain.proto\x12\x18google.api.expr.v1alpha1\x1a$google/api/expr/v1alpha1/value.proto"\xce\x01\n\x07Explain\x127\n\x06values\x18\x01 \x03(\x0b2\x1f.google.api.expr.v1alpha1.ValueR\x06values\x12I\n\nexpr_steps\x18\x02 \x03(\x0b2*.google.api.expr.v1alpha1.Explain.ExprStepR\texprSteps\x1a;\n\x08ExprStep\x12\x0e\n\x02id\x18\x01 \x01(\x03R\x02id\x12\x1f\n\x0bvalue_index\x18\x02 \x01(\x05R\nvalueIndex:\x02\x18\x01Bo\n\x1ccom.google.api.expr.v1alpha1B\x0cExplainProtoP\x01Z= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +if sys.version_info >= (3, 13): + from warnings import deprecated as _deprecated +else: + from typing_extensions import deprecated as _deprecated +DESCRIPTOR: _descriptor.FileDescriptor + +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class Explain(_message.Message): + """Values of intermediate expressions produced when evaluating expression. + Deprecated, use `EvalState` instead. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class ExprStep(_message.Message): + """ID and value index of one step.""" + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + VALUE_INDEX_FIELD_NUMBER: _builtins.int + id: _builtins.int + 'ID of corresponding Expr node.' + value_index: _builtins.int + 'Index of the value in the values list.' + + def __init__(self, *, id: _builtins.int=..., value_index: _builtins.int=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'value_index', b'value_index'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + VALUES_FIELD_NUMBER: _builtins.int + EXPR_STEPS_FIELD_NUMBER: _builtins.int + + @_builtins.property + def values(self) -> _containers.RepeatedCompositeFieldContainer[_value_pb2.Value]: + """All of the observed values. + + The field value_index is an index in the values list. + Separating values from steps is needed to remove redundant values. + """ + + @_builtins.property + def expr_steps(self) -> _containers.RepeatedCompositeFieldContainer[Global___Explain.ExprStep]: + """List of steps. + + Repeated evaluations of the same expression generate new ExprStep + instances. The order of such ExprStep instances matches the order of + elements returned by Comprehension.iter_range. + """ + + def __init__(self, *, values: _abc.Iterable[_value_pb2.Value] | None=..., expr_steps: _abc.Iterable[Global___Explain.ExprStep] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['expr_steps', b'expr_steps', 'values', b'values'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___Explain: _TypeAlias = Explain \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1alpha1/syntax_grpc.py b/src/viam/gen/google/api/expr/v1alpha1/syntax_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/expr/v1alpha1/syntax_pb2.py b/src/viam/gen/google/api/expr/v1alpha1/syntax_pb2.py new file mode 100644 index 0000000000..ad4cd836a0 --- /dev/null +++ b/src/viam/gen/google/api/expr/v1alpha1/syntax_pb2.py @@ -0,0 +1,60 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1alpha1/syntax.proto') +_sym_db = _symbol_database.Default() +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%google/api/expr/v1alpha1/syntax.proto\x12\x18google.api.expr.v1alpha1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto"\x87\x01\n\nParsedExpr\x122\n\x04expr\x18\x02 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x04expr\x12E\n\x0bsource_info\x18\x03 \x01(\x0b2$.google.api.expr.v1alpha1.SourceInfoR\nsourceInfo"\xcb\r\n\x04Expr\x12\x0e\n\x02id\x18\x02 \x01(\x03R\x02id\x12C\n\nconst_expr\x18\x03 \x01(\x0b2".google.api.expr.v1alpha1.ConstantH\x00R\tconstExpr\x12E\n\nident_expr\x18\x04 \x01(\x0b2$.google.api.expr.v1alpha1.Expr.IdentH\x00R\tidentExpr\x12H\n\x0bselect_expr\x18\x05 \x01(\x0b2%.google.api.expr.v1alpha1.Expr.SelectH\x00R\nselectExpr\x12B\n\tcall_expr\x18\x06 \x01(\x0b2#.google.api.expr.v1alpha1.Expr.CallH\x00R\x08callExpr\x12H\n\tlist_expr\x18\x07 \x01(\x0b2).google.api.expr.v1alpha1.Expr.CreateListH\x00R\x08listExpr\x12N\n\x0bstruct_expr\x18\x08 \x01(\x0b2+.google.api.expr.v1alpha1.Expr.CreateStructH\x00R\nstructExpr\x12]\n\x12comprehension_expr\x18\t \x01(\x0b2,.google.api.expr.v1alpha1.Expr.ComprehensionH\x00R\x11comprehensionExpr\x1a\x1b\n\x05Ident\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x1au\n\x06Select\x128\n\x07operand\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x07operand\x12\x14\n\x05field\x18\x02 \x01(\tR\x05field\x12\x1b\n\ttest_only\x18\x03 \x01(\x08R\x08testOnly\x1a\x8e\x01\n\x04Call\x126\n\x06target\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x06target\x12\x1a\n\x08function\x18\x02 \x01(\tR\x08function\x122\n\x04args\x18\x03 \x03(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x04args\x1as\n\nCreateList\x12:\n\x08elements\x18\x01 \x03(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x08elements\x12)\n\x10optional_indices\x18\x02 \x03(\x05R\x0foptionalIndices\x1a\xdb\x02\n\x0cCreateStruct\x12!\n\x0cmessage_name\x18\x01 \x01(\tR\x0bmessageName\x12K\n\x07entries\x18\x02 \x03(\x0b21.google.api.expr.v1alpha1.Expr.CreateStruct.EntryR\x07entries\x1a\xda\x01\n\x05Entry\x12\x0e\n\x02id\x18\x01 \x01(\x03R\x02id\x12\x1d\n\tfield_key\x18\x02 \x01(\tH\x00R\x08fieldKey\x129\n\x07map_key\x18\x03 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprH\x00R\x06mapKey\x124\n\x05value\x18\x04 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x05value\x12%\n\x0eoptional_entry\x18\x05 \x01(\x08R\roptionalEntryB\n\n\x08key_kind\x1a\x9a\x03\n\rComprehension\x12\x19\n\x08iter_var\x18\x01 \x01(\tR\x07iterVar\x12\x1b\n\titer_var2\x18\x08 \x01(\tR\x08iterVar2\x12=\n\niter_range\x18\x02 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\titerRange\x12\x19\n\x08accu_var\x18\x03 \x01(\tR\x07accuVar\x12;\n\taccu_init\x18\x04 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x08accuInit\x12E\n\x0eloop_condition\x18\x05 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\rloopCondition\x12;\n\tloop_step\x18\x06 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x08loopStep\x126\n\x06result\x18\x07 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x06resultB\x0b\n\texpr_kind"\xc1\x03\n\x08Constant\x12;\n\nnull_value\x18\x01 \x01(\x0e2\x1a.google.protobuf.NullValueH\x00R\tnullValue\x12\x1f\n\nbool_value\x18\x02 \x01(\x08H\x00R\tboolValue\x12!\n\x0bint64_value\x18\x03 \x01(\x03H\x00R\nint64Value\x12#\n\x0cuint64_value\x18\x04 \x01(\x04H\x00R\x0buint64Value\x12#\n\x0cdouble_value\x18\x05 \x01(\x01H\x00R\x0bdoubleValue\x12#\n\x0cstring_value\x18\x06 \x01(\tH\x00R\x0bstringValue\x12!\n\x0bbytes_value\x18\x07 \x01(\x0cH\x00R\nbytesValue\x12F\n\x0eduration_value\x18\x08 \x01(\x0b2\x19.google.protobuf.DurationB\x02\x18\x01H\x00R\rdurationValue\x12I\n\x0ftimestamp_value\x18\t \x01(\x0b2\x1a.google.protobuf.TimestampB\x02\x18\x01H\x00R\x0etimestampValueB\x0f\n\rconstant_kind"\x8c\x07\n\nSourceInfo\x12%\n\x0esyntax_version\x18\x01 \x01(\tR\rsyntaxVersion\x12\x1a\n\x08location\x18\x02 \x01(\tR\x08location\x12!\n\x0cline_offsets\x18\x03 \x03(\x05R\x0blineOffsets\x12Q\n\tpositions\x18\x04 \x03(\x0b23.google.api.expr.v1alpha1.SourceInfo.PositionsEntryR\tpositions\x12U\n\x0bmacro_calls\x18\x05 \x03(\x0b24.google.api.expr.v1alpha1.SourceInfo.MacroCallsEntryR\nmacroCalls\x12N\n\nextensions\x18\x06 \x03(\x0b2..google.api.expr.v1alpha1.SourceInfo.ExtensionR\nextensions\x1a\x80\x03\n\tExtension\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12i\n\x13affected_components\x18\x02 \x03(\x0e28.google.api.expr.v1alpha1.SourceInfo.Extension.ComponentR\x12affectedComponents\x12P\n\x07version\x18\x03 \x01(\x0b26.google.api.expr.v1alpha1.SourceInfo.Extension.VersionR\x07version\x1a5\n\x07Version\x12\x14\n\x05major\x18\x01 \x01(\x03R\x05major\x12\x14\n\x05minor\x18\x02 \x01(\x03R\x05minor"o\n\tComponent\x12\x19\n\x15COMPONENT_UNSPECIFIED\x10\x00\x12\x14\n\x10COMPONENT_PARSER\x10\x01\x12\x1a\n\x16COMPONENT_TYPE_CHECKER\x10\x02\x12\x15\n\x11COMPONENT_RUNTIME\x10\x03\x1a<\n\x0ePositionsEntry\x12\x10\n\x03key\x18\x01 \x01(\x03R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\x1a]\n\x0fMacroCallsEntry\x12\x10\n\x03key\x18\x01 \x01(\x03R\x03key\x124\n\x05value\x18\x02 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x05value:\x028\x01"p\n\x0eSourcePosition\x12\x1a\n\x08location\x18\x01 \x01(\tR\x08location\x12\x16\n\x06offset\x18\x02 \x01(\x05R\x06offset\x12\x12\n\x04line\x18\x03 \x01(\x05R\x04line\x12\x16\n\x06column\x18\x04 \x01(\x05R\x06columnBn\n\x1ccom.google.api.expr.v1alpha1B\x0bSyntaxProtoP\x01Z= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +if sys.version_info >= (3, 13): + from warnings import deprecated as _deprecated +else: + from typing_extensions import deprecated as _deprecated +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class ParsedExpr(_message.Message): + """A representation of the abstract syntax of the Common Expression Language. + + An expression together with source information as returned by the parser. + """ + DESCRIPTOR: _descriptor.Descriptor + EXPR_FIELD_NUMBER: _builtins.int + SOURCE_INFO_FIELD_NUMBER: _builtins.int + + @_builtins.property + def expr(self) -> Global___Expr: + """The parsed expression.""" + + @_builtins.property + def source_info(self) -> Global___SourceInfo: + """The source info derived from input that generated the parsed `expr`.""" + + def __init__(self, *, expr: Global___Expr | None=..., source_info: Global___SourceInfo | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'source_info', b'source_info'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'source_info', b'source_info'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___ParsedExpr: _TypeAlias = ParsedExpr + +@_typing.final +class Expr(_message.Message): + """An abstract representation of a common expression. + + Expressions are abstractly represented as a collection of identifiers, + select statements, function calls, literals, and comprehensions. All + operators with the exception of the '.' operator are modelled as function + calls. This makes it easy to represent new operators into the existing AST. + + All references within expressions must resolve to a + [Decl][google.api.expr.v1alpha1.Decl] provided at type-check for an + expression to be valid. A reference may either be a bare identifier `name` or + a qualified identifier `google.api.name`. References may either refer to a + value or a function declaration. + + For example, the expression `google.api.name.startsWith('expr')` references + the declaration `google.api.name` within a + [Expr.Select][google.api.expr.v1alpha1.Expr.Select] expression, and the + function declaration `startsWith`. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class Ident(_message.Message): + """An identifier expression. e.g. `request`.""" + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str + "Required. Holds a single, unqualified identifier, possibly preceded by a\n '.'.\n\n Qualified names are represented by the\n [Expr.Select][google.api.expr.v1alpha1.Expr.Select] expression.\n " + + def __init__(self, *, name: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class Select(_message.Message): + """A field selection expression. e.g. `request.auth`.""" + DESCRIPTOR: _descriptor.Descriptor + OPERAND_FIELD_NUMBER: _builtins.int + FIELD_FIELD_NUMBER: _builtins.int + TEST_ONLY_FIELD_NUMBER: _builtins.int + field: _builtins.str + 'Required. The name of the field to select.\n\n For example, in the select expression `request.auth`, the `auth` portion\n of the expression would be the `field`.\n ' + test_only: _builtins.bool + 'Whether the select is to be interpreted as a field presence test.\n\n This results from the macro `has(request.auth)`.\n ' + + @_builtins.property + def operand(self) -> Global___Expr: + """Required. The target of the selection expression. + + For example, in the select expression `request.auth`, the `request` + portion of the expression is the `operand`. + """ + + def __init__(self, *, operand: Global___Expr | None=..., field: _builtins.str=..., test_only: _builtins.bool=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['operand', b'operand'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['field', b'field', 'operand', b'operand', 'test_only', b'test_only'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class Call(_message.Message): + """A call expression, including calls to predefined functions and operators. + + For example, `value == 10`, `size(map_value)`. + """ + DESCRIPTOR: _descriptor.Descriptor + TARGET_FIELD_NUMBER: _builtins.int + FUNCTION_FIELD_NUMBER: _builtins.int + ARGS_FIELD_NUMBER: _builtins.int + function: _builtins.str + 'Required. The name of the function or method being called.' + + @_builtins.property + def target(self) -> Global___Expr: + """The target of an method call-style expression. For example, `x` in + `x.f()`. + """ + + @_builtins.property + def args(self) -> _containers.RepeatedCompositeFieldContainer[Global___Expr]: + """The arguments.""" + + def __init__(self, *, target: Global___Expr | None=..., function: _builtins.str=..., args: _abc.Iterable[Global___Expr] | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['target', b'target'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['args', b'args', 'function', b'function', 'target', b'target'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class CreateList(_message.Message): + """A list creation expression. + + Lists may either be homogenous, e.g. `[1, 2, 3]`, or heterogeneous, e.g. + `dyn([1, 'hello', 2.0])` + """ + DESCRIPTOR: _descriptor.Descriptor + ELEMENTS_FIELD_NUMBER: _builtins.int + OPTIONAL_INDICES_FIELD_NUMBER: _builtins.int + + @_builtins.property + def elements(self) -> _containers.RepeatedCompositeFieldContainer[Global___Expr]: + """The elements part of the list.""" + + @_builtins.property + def optional_indices(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: + """The indices within the elements list which are marked as optional + elements. + + When an optional-typed value is present, the value it contains + is included in the list. If the optional-typed value is absent, the list + element is omitted from the CreateList result. + """ + + def __init__(self, *, elements: _abc.Iterable[Global___Expr] | None=..., optional_indices: _abc.Iterable[_builtins.int] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['elements', b'elements', 'optional_indices', b'optional_indices'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class CreateStruct(_message.Message): + """A map or message creation expression. + + Maps are constructed as `{'key_name': 'value'}`. Message construction is + similar, but prefixed with a type name and composed of field ids: + `types.MyType{field_id: 'value'}`. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class Entry(_message.Message): + """Represents an entry.""" + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + FIELD_KEY_FIELD_NUMBER: _builtins.int + MAP_KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + OPTIONAL_ENTRY_FIELD_NUMBER: _builtins.int + id: _builtins.int + 'Required. An id assigned to this node by the parser which is unique\n in a given expression tree. This is used to associate type\n information and other attributes to the node.\n ' + field_key: _builtins.str + 'The field key for a message creator statement.' + optional_entry: _builtins.bool + 'Whether the key-value pair is optional.' + + @_builtins.property + def map_key(self) -> Global___Expr: + """The key expression for a map creation statement.""" + + @_builtins.property + def value(self) -> Global___Expr: + """Required. The value assigned to the key. + + If the optional_entry field is true, the expression must resolve to an + optional-typed value. If the optional value is present, the key will be + set; however, if the optional value is absent, the key will be unset. + """ + + def __init__(self, *, id: _builtins.int=..., field_key: _builtins.str=..., map_key: Global___Expr | None=..., value: Global___Expr | None=..., optional_entry: _builtins.bool=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['field_key', b'field_key', 'key_kind', b'key_kind', 'map_key', b'map_key', 'value', b'value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['field_key', b'field_key', 'id', b'id', 'key_kind', b'key_kind', 'map_key', b'map_key', 'optional_entry', b'optional_entry', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + _WhichOneofReturnType_key_kind: _TypeAlias = _typing.Literal['field_key', 'map_key'] + _WhichOneofArgType_key_kind: _TypeAlias = _typing.Literal['key_kind', b'key_kind'] + + def WhichOneof(self, oneof_group: _WhichOneofArgType_key_kind) -> _WhichOneofReturnType_key_kind | None: + ... + MESSAGE_NAME_FIELD_NUMBER: _builtins.int + ENTRIES_FIELD_NUMBER: _builtins.int + message_name: _builtins.str + 'The type name of the message to be created, empty when creating map\n literals.\n ' + + @_builtins.property + def entries(self) -> _containers.RepeatedCompositeFieldContainer[Global___Expr.CreateStruct.Entry]: + """The entries in the creation expression.""" + + def __init__(self, *, message_name: _builtins.str=..., entries: _abc.Iterable[Global___Expr.CreateStruct.Entry] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['entries', b'entries', 'message_name', b'message_name'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class Comprehension(_message.Message): + """A comprehension expression applied to a list or map. + + Comprehensions are not part of the core syntax, but enabled with macros. + A macro matches a specific call signature within a parsed AST and replaces + the call with an alternate AST block. Macro expansion happens at parse + time. + + The following macros are supported within CEL: + + Aggregate type macros may be applied to all elements in a list or all keys + in a map: + + * `all`, `exists`, `exists_one` - test a predicate expression against + the inputs and return `true` if the predicate is satisfied for all, + any, or only one value `list.all(x, x < 10)`. + * `filter` - test a predicate expression against the inputs and return + the subset of elements which satisfy the predicate: + `payments.filter(p, p > 1000)`. + * `map` - apply an expression to all elements in the input and return the + output aggregate type: `[1, 2, 3].map(i, i * i)`. + + The `has(m.x)` macro tests whether the property `x` is present in struct + `m`. The semantics of this macro depend on the type of `m`. For proto2 + messages `has(m.x)` is defined as 'defined, but not set`. For proto3, the + macro tests whether the property is set to its default. For map and struct + types, the macro tests whether the property `x` is defined on `m`. + + Comprehensions for the standard environment macros evaluation can be best + visualized as the following pseudocode: + + ``` + let `accu_var` = `accu_init` + for (let `iter_var` in `iter_range`) { + if (!`loop_condition`) { + break + } + `accu_var` = `loop_step` + } + return `result` + ``` + + Comprehensions for the optional V2 macros which support map-to-map + translation differ slightly from the standard environment macros in that + they expose both the key or index in addition to the value for each list + or map entry: + + ``` + let `accu_var` = `accu_init` + for (let `iter_var`, `iter_var2` in `iter_range`) { + if (!`loop_condition`) { + break + } + `accu_var` = `loop_step` + } + return `result` + ``` + """ + DESCRIPTOR: _descriptor.Descriptor + ITER_VAR_FIELD_NUMBER: _builtins.int + ITER_VAR2_FIELD_NUMBER: _builtins.int + ITER_RANGE_FIELD_NUMBER: _builtins.int + ACCU_VAR_FIELD_NUMBER: _builtins.int + ACCU_INIT_FIELD_NUMBER: _builtins.int + LOOP_CONDITION_FIELD_NUMBER: _builtins.int + LOOP_STEP_FIELD_NUMBER: _builtins.int + RESULT_FIELD_NUMBER: _builtins.int + iter_var: _builtins.str + 'The name of the first iteration variable.\n When the iter_range is a list, this variable is the list element.\n When the iter_range is a map, this variable is the map entry key.\n ' + iter_var2: _builtins.str + 'The name of the second iteration variable, empty if not set.\n When the iter_range is a list, this variable is the integer index.\n When the iter_range is a map, this variable is the map entry value.\n This field is only set for comprehension v2 macros.\n ' + accu_var: _builtins.str + 'The name of the variable used for accumulation of the result.' + + @_builtins.property + def iter_range(self) -> Global___Expr: + """The range over which the comprehension iterates.""" + + @_builtins.property + def accu_init(self) -> Global___Expr: + """The initial value of the accumulator.""" + + @_builtins.property + def loop_condition(self) -> Global___Expr: + """An expression which can contain iter_var, iter_var2, and accu_var. + + Returns false when the result has been computed and may be used as + a hint to short-circuit the remainder of the comprehension. + """ + + @_builtins.property + def loop_step(self) -> Global___Expr: + """An expression which can contain iter_var, iter_var2, and accu_var. + + Computes the next value of accu_var. + """ + + @_builtins.property + def result(self) -> Global___Expr: + """An expression which can contain accu_var. + + Computes the result. + """ + + def __init__(self, *, iter_var: _builtins.str=..., iter_var2: _builtins.str=..., iter_range: Global___Expr | None=..., accu_var: _builtins.str=..., accu_init: Global___Expr | None=..., loop_condition: Global___Expr | None=..., loop_step: Global___Expr | None=..., result: Global___Expr | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['accu_init', b'accu_init', 'iter_range', b'iter_range', 'loop_condition', b'loop_condition', 'loop_step', b'loop_step', 'result', b'result'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['accu_init', b'accu_init', 'accu_var', b'accu_var', 'iter_range', b'iter_range', 'iter_var', b'iter_var', 'iter_var2', b'iter_var2', 'loop_condition', b'loop_condition', 'loop_step', b'loop_step', 'result', b'result'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + ID_FIELD_NUMBER: _builtins.int + CONST_EXPR_FIELD_NUMBER: _builtins.int + IDENT_EXPR_FIELD_NUMBER: _builtins.int + SELECT_EXPR_FIELD_NUMBER: _builtins.int + CALL_EXPR_FIELD_NUMBER: _builtins.int + LIST_EXPR_FIELD_NUMBER: _builtins.int + STRUCT_EXPR_FIELD_NUMBER: _builtins.int + COMPREHENSION_EXPR_FIELD_NUMBER: _builtins.int + id: _builtins.int + 'Required. An id assigned to this node by the parser which is unique in a\n given expression tree. This is used to associate type information and other\n attributes to a node in the parse tree.\n ' + + @_builtins.property + def const_expr(self) -> Global___Constant: + """A literal expression.""" + + @_builtins.property + def ident_expr(self) -> Global___Expr.Ident: + """An identifier expression.""" + + @_builtins.property + def select_expr(self) -> Global___Expr.Select: + """A field selection expression, e.g. `request.auth`.""" + + @_builtins.property + def call_expr(self) -> Global___Expr.Call: + """A call expression, including calls to predefined functions and operators.""" + + @_builtins.property + def list_expr(self) -> Global___Expr.CreateList: + """A list creation expression.""" + + @_builtins.property + def struct_expr(self) -> Global___Expr.CreateStruct: + """A map or message creation expression.""" + + @_builtins.property + def comprehension_expr(self) -> Global___Expr.Comprehension: + """A comprehension expression.""" + + def __init__(self, *, id: _builtins.int=..., const_expr: Global___Constant | None=..., ident_expr: Global___Expr.Ident | None=..., select_expr: Global___Expr.Select | None=..., call_expr: Global___Expr.Call | None=..., list_expr: Global___Expr.CreateList | None=..., struct_expr: Global___Expr.CreateStruct | None=..., comprehension_expr: Global___Expr.Comprehension | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['call_expr', b'call_expr', 'comprehension_expr', b'comprehension_expr', 'const_expr', b'const_expr', 'expr_kind', b'expr_kind', 'ident_expr', b'ident_expr', 'list_expr', b'list_expr', 'select_expr', b'select_expr', 'struct_expr', b'struct_expr'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['call_expr', b'call_expr', 'comprehension_expr', b'comprehension_expr', 'const_expr', b'const_expr', 'expr_kind', b'expr_kind', 'id', b'id', 'ident_expr', b'ident_expr', 'list_expr', b'list_expr', 'select_expr', b'select_expr', 'struct_expr', b'struct_expr'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + _WhichOneofReturnType_expr_kind: _TypeAlias = _typing.Literal['const_expr', 'ident_expr', 'select_expr', 'call_expr', 'list_expr', 'struct_expr', 'comprehension_expr'] + _WhichOneofArgType_expr_kind: _TypeAlias = _typing.Literal['expr_kind', b'expr_kind'] + + def WhichOneof(self, oneof_group: _WhichOneofArgType_expr_kind) -> _WhichOneofReturnType_expr_kind | None: + ... +Global___Expr: _TypeAlias = Expr + +@_typing.final +class Constant(_message.Message): + """Represents a primitive literal. + + Named 'Constant' here for backwards compatibility. + + This is similar as the primitives supported in the well-known type + `google.protobuf.Value`, but richer so it can represent CEL's full range of + primitives. + + Lists and structs are not included as constants as these aggregate types may + contain [Expr][google.api.expr.v1alpha1.Expr] elements which require + evaluation and are thus not constant. + + Examples of literals include: `"hello"`, `b'bytes'`, `1u`, `4.2`, `-2`, + `true`, `null`. + """ + DESCRIPTOR: _descriptor.Descriptor + NULL_VALUE_FIELD_NUMBER: _builtins.int + BOOL_VALUE_FIELD_NUMBER: _builtins.int + INT64_VALUE_FIELD_NUMBER: _builtins.int + UINT64_VALUE_FIELD_NUMBER: _builtins.int + DOUBLE_VALUE_FIELD_NUMBER: _builtins.int + STRING_VALUE_FIELD_NUMBER: _builtins.int + BYTES_VALUE_FIELD_NUMBER: _builtins.int + DURATION_VALUE_FIELD_NUMBER: _builtins.int + TIMESTAMP_VALUE_FIELD_NUMBER: _builtins.int + null_value: _struct_pb2.NullValue.ValueType + 'null value.' + bool_value: _builtins.bool + 'boolean value.' + int64_value: _builtins.int + 'int64 value.' + uint64_value: _builtins.int + 'uint64 value.' + double_value: _builtins.float + 'double value.' + string_value: _builtins.str + 'string value.' + bytes_value: _builtins.bytes + 'bytes value.' + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def duration_value(self) -> _duration_pb2.Duration: + """protobuf.Duration value. + + Deprecated: duration is no longer considered a builtin cel type. + """ + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def timestamp_value(self) -> _timestamp_pb2.Timestamp: + """protobuf.Timestamp value. + + Deprecated: timestamp is no longer considered a builtin cel type. + """ + + def __init__(self, *, null_value: _struct_pb2.NullValue.ValueType=..., bool_value: _builtins.bool=..., int64_value: _builtins.int=..., uint64_value: _builtins.int=..., double_value: _builtins.float=..., string_value: _builtins.str=..., bytes_value: _builtins.bytes=..., duration_value: _duration_pb2.Duration | None=..., timestamp_value: _timestamp_pb2.Timestamp | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'constant_kind', b'constant_kind', 'double_value', b'double_value', 'duration_value', b'duration_value', 'int64_value', b'int64_value', 'null_value', b'null_value', 'string_value', b'string_value', 'timestamp_value', b'timestamp_value', 'uint64_value', b'uint64_value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'constant_kind', b'constant_kind', 'double_value', b'double_value', 'duration_value', b'duration_value', 'int64_value', b'int64_value', 'null_value', b'null_value', 'string_value', b'string_value', 'timestamp_value', b'timestamp_value', 'uint64_value', b'uint64_value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + _WhichOneofReturnType_constant_kind: _TypeAlias = _typing.Literal['null_value', 'bool_value', 'int64_value', 'uint64_value', 'double_value', 'string_value', 'bytes_value', 'duration_value', 'timestamp_value'] + _WhichOneofArgType_constant_kind: _TypeAlias = _typing.Literal['constant_kind', b'constant_kind'] + + def WhichOneof(self, oneof_group: _WhichOneofArgType_constant_kind) -> _WhichOneofReturnType_constant_kind | None: + ... +Global___Constant: _TypeAlias = Constant + +@_typing.final +class SourceInfo(_message.Message): + """Source information collected at parse time.""" + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class Extension(_message.Message): + """An extension that was requested for the source expression.""" + DESCRIPTOR: _descriptor.Descriptor + + class _Component: + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType + + class _ComponentEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[SourceInfo.Extension._Component.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor + COMPONENT_UNSPECIFIED: SourceInfo.Extension._Component.ValueType + 'Unspecified, default.' + COMPONENT_PARSER: SourceInfo.Extension._Component.ValueType + 'Parser. Converts a CEL string to an AST.' + COMPONENT_TYPE_CHECKER: SourceInfo.Extension._Component.ValueType + 'Type checker. Checks that references in an AST are defined and types\n agree.\n ' + COMPONENT_RUNTIME: SourceInfo.Extension._Component.ValueType + 'Runtime. Evaluates a parsed and optionally checked CEL AST against a\n context.\n ' + + class Component(_Component, metaclass=_ComponentEnumTypeWrapper): + """CEL component specifier.""" + COMPONENT_UNSPECIFIED: SourceInfo.Extension.Component.ValueType + 'Unspecified, default.' + COMPONENT_PARSER: SourceInfo.Extension.Component.ValueType + 'Parser. Converts a CEL string to an AST.' + COMPONENT_TYPE_CHECKER: SourceInfo.Extension.Component.ValueType + 'Type checker. Checks that references in an AST are defined and types\n agree.\n ' + COMPONENT_RUNTIME: SourceInfo.Extension.Component.ValueType + 'Runtime. Evaluates a parsed and optionally checked CEL AST against a\n context.\n ' + + @_typing.final + class Version(_message.Message): + """Version""" + DESCRIPTOR: _descriptor.Descriptor + MAJOR_FIELD_NUMBER: _builtins.int + MINOR_FIELD_NUMBER: _builtins.int + major: _builtins.int + 'Major version changes indicate different required support level from\n the required components.\n ' + minor: _builtins.int + 'Minor version changes must not change the observed behavior from\n existing implementations, but may be provided informationally.\n ' + + def __init__(self, *, major: _builtins.int=..., minor: _builtins.int=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['major', b'major', 'minor', b'minor'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + ID_FIELD_NUMBER: _builtins.int + AFFECTED_COMPONENTS_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + id: _builtins.str + 'Identifier for the extension. Example: constant_folding' + + @_builtins.property + def affected_components(self) -> _containers.RepeatedScalarFieldContainer[Global___SourceInfo.Extension.Component.ValueType]: + """If set, the listed components must understand the extension for the + expression to evaluate correctly. + + This field has set semantics, repeated values should be deduplicated. + """ + + @_builtins.property + def version(self) -> Global___SourceInfo.Extension.Version: + """Version info. May be skipped if it isn't meaningful for the extension. + (for example constant_folding might always be v0.0). + """ + + def __init__(self, *, id: _builtins.str=..., affected_components: _abc.Iterable[Global___SourceInfo.Extension.Component.ValueType] | None=..., version: Global___SourceInfo.Extension.Version | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['version', b'version'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['affected_components', b'affected_components', 'id', b'id', 'version', b'version'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class PositionsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.int + value: _builtins.int + + def __init__(self, *, key: _builtins.int=..., value: _builtins.int=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class MacroCallsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.int + + @_builtins.property + def value(self) -> Global___Expr: + ... + + def __init__(self, *, key: _builtins.int=..., value: Global___Expr | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + SYNTAX_VERSION_FIELD_NUMBER: _builtins.int + LOCATION_FIELD_NUMBER: _builtins.int + LINE_OFFSETS_FIELD_NUMBER: _builtins.int + POSITIONS_FIELD_NUMBER: _builtins.int + MACRO_CALLS_FIELD_NUMBER: _builtins.int + EXTENSIONS_FIELD_NUMBER: _builtins.int + syntax_version: _builtins.str + 'The syntax version of the source, e.g. `cel1`.' + location: _builtins.str + 'The location name. All position information attached to an expression is\n relative to this location.\n\n The location could be a file, UI element, or similar. For example,\n `acme/app/AnvilPolicy.cel`.\n ' + + @_builtins.property + def line_offsets(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: + """Monotonically increasing list of code point offsets where newlines + `\\n` appear. + + The line number of a given position is the index `i` where for a given + `id` the `line_offsets[i] < id_positions[id] < line_offsets[i+1]`. The + column may be derivd from `id_positions[id] - line_offsets[i]`. + """ + + @_builtins.property + def positions(self) -> _containers.ScalarMap[_builtins.int, _builtins.int]: + """A map from the parse node id (e.g. `Expr.id`) to the code point offset + within the source. + """ + + @_builtins.property + def macro_calls(self) -> _containers.MessageMap[_builtins.int, Global___Expr]: + """A map from the parse node id where a macro replacement was made to the + call `Expr` that resulted in a macro expansion. + + For example, `has(value.field)` is a function call that is replaced by a + `test_only` field selection in the AST. Likewise, the call + `list.exists(e, e > 10)` translates to a comprehension expression. The key + in the map corresponds to the expression id of the expanded macro, and the + value is the call `Expr` that was replaced. + """ + + @_builtins.property + def extensions(self) -> _containers.RepeatedCompositeFieldContainer[Global___SourceInfo.Extension]: + """A list of tags for extensions that were used while parsing or type checking + the source expression. For example, optimizations that require special + runtime support may be specified. + + These are used to check feature support between components in separate + implementations. This can be used to either skip redundant work or + report an error if the extension is unsupported. + """ + + def __init__(self, *, syntax_version: _builtins.str=..., location: _builtins.str=..., line_offsets: _abc.Iterable[_builtins.int] | None=..., positions: _abc.Mapping[_builtins.int, _builtins.int] | None=..., macro_calls: _abc.Mapping[_builtins.int, Global___Expr] | None=..., extensions: _abc.Iterable[Global___SourceInfo.Extension] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extensions', b'extensions', 'line_offsets', b'line_offsets', 'location', b'location', 'macro_calls', b'macro_calls', 'positions', b'positions', 'syntax_version', b'syntax_version'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___SourceInfo: _TypeAlias = SourceInfo + +@_typing.final +class SourcePosition(_message.Message): + """A specific position in source.""" + DESCRIPTOR: _descriptor.Descriptor + LOCATION_FIELD_NUMBER: _builtins.int + OFFSET_FIELD_NUMBER: _builtins.int + LINE_FIELD_NUMBER: _builtins.int + COLUMN_FIELD_NUMBER: _builtins.int + location: _builtins.str + 'The soucre location name (e.g. file name).' + offset: _builtins.int + 'The UTF-8 code unit offset.' + line: _builtins.int + 'The 1-based index of the starting line in the source text\n where the issue occurs, or 0 if unknown.\n ' + column: _builtins.int + 'The 0-based index of the starting position within the line of source text\n where the issue occurs. Only meaningful if line is nonzero.\n ' + + def __init__(self, *, location: _builtins.str=..., offset: _builtins.int=..., line: _builtins.int=..., column: _builtins.int=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['column', b'column', 'line', b'line', 'location', b'location', 'offset', b'offset'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___SourcePosition: _TypeAlias = SourcePosition \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1alpha1/value_grpc.py b/src/viam/gen/google/api/expr/v1alpha1/value_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/expr/v1alpha1/value_pb2.py b/src/viam/gen/google/api/expr/v1alpha1/value_pb2.py new file mode 100644 index 0000000000..47b224acf0 --- /dev/null +++ b/src/viam/gen/google/api/expr/v1alpha1/value_pb2.py @@ -0,0 +1,27 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1alpha1/value.proto') +_sym_db = _symbol_database.Default() +from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$google/api/expr/v1alpha1/value.proto\x12\x18google.api.expr.v1alpha1\x1a\x19google/protobuf/any.proto\x1a\x1cgoogle/protobuf/struct.proto"\xcd\x04\n\x05Value\x12;\n\nnull_value\x18\x01 \x01(\x0e2\x1a.google.protobuf.NullValueH\x00R\tnullValue\x12\x1f\n\nbool_value\x18\x02 \x01(\x08H\x00R\tboolValue\x12!\n\x0bint64_value\x18\x03 \x01(\x03H\x00R\nint64Value\x12#\n\x0cuint64_value\x18\x04 \x01(\x04H\x00R\x0buint64Value\x12#\n\x0cdouble_value\x18\x05 \x01(\x01H\x00R\x0bdoubleValue\x12#\n\x0cstring_value\x18\x06 \x01(\tH\x00R\x0bstringValue\x12!\n\x0bbytes_value\x18\x07 \x01(\x0cH\x00R\nbytesValue\x12D\n\nenum_value\x18\t \x01(\x0b2#.google.api.expr.v1alpha1.EnumValueH\x00R\tenumValue\x129\n\x0cobject_value\x18\n \x01(\x0b2\x14.google.protobuf.AnyH\x00R\x0bobjectValue\x12A\n\tmap_value\x18\x0b \x01(\x0b2".google.api.expr.v1alpha1.MapValueH\x00R\x08mapValue\x12D\n\nlist_value\x18\x0c \x01(\x0b2#.google.api.expr.v1alpha1.ListValueH\x00R\tlistValue\x12\x1f\n\ntype_value\x18\x0f \x01(\tH\x00R\ttypeValueB\x06\n\x04kind"5\n\tEnumValue\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value"D\n\tListValue\x127\n\x06values\x18\x01 \x03(\x0b2\x1f.google.api.expr.v1alpha1.ValueR\x06values"\xc1\x01\n\x08MapValue\x12B\n\x07entries\x18\x01 \x03(\x0b2(.google.api.expr.v1alpha1.MapValue.EntryR\x07entries\x1aq\n\x05Entry\x121\n\x03key\x18\x01 \x01(\x0b2\x1f.google.api.expr.v1alpha1.ValueR\x03key\x125\n\x05value\x18\x02 \x01(\x0b2\x1f.google.api.expr.v1alpha1.ValueR\x05valueBm\n\x1ccom.google.api.expr.v1alpha1B\nValueProtoP\x01Z= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class Value(_message.Message): + """Contains representations for CEL runtime values. + + Represents a CEL value. + + This is similar to `google.protobuf.Value`, but can represent CEL's full + range of values. + """ + DESCRIPTOR: _descriptor.Descriptor + NULL_VALUE_FIELD_NUMBER: _builtins.int + BOOL_VALUE_FIELD_NUMBER: _builtins.int + INT64_VALUE_FIELD_NUMBER: _builtins.int + UINT64_VALUE_FIELD_NUMBER: _builtins.int + DOUBLE_VALUE_FIELD_NUMBER: _builtins.int + STRING_VALUE_FIELD_NUMBER: _builtins.int + BYTES_VALUE_FIELD_NUMBER: _builtins.int + ENUM_VALUE_FIELD_NUMBER: _builtins.int + OBJECT_VALUE_FIELD_NUMBER: _builtins.int + MAP_VALUE_FIELD_NUMBER: _builtins.int + LIST_VALUE_FIELD_NUMBER: _builtins.int + TYPE_VALUE_FIELD_NUMBER: _builtins.int + null_value: _struct_pb2.NullValue.ValueType + 'Null value.' + bool_value: _builtins.bool + 'Boolean value.' + int64_value: _builtins.int + 'Signed integer value.' + uint64_value: _builtins.int + 'Unsigned integer value.' + double_value: _builtins.float + 'Floating point value.' + string_value: _builtins.str + 'UTF-8 string value.' + bytes_value: _builtins.bytes + 'Byte string value.' + type_value: _builtins.str + 'Type value.' + + @_builtins.property + def enum_value(self) -> Global___EnumValue: + """An enum value.""" + + @_builtins.property + def object_value(self) -> _any_pb2.Any: + """The proto message backing an object value.""" + + @_builtins.property + def map_value(self) -> Global___MapValue: + """Map value.""" + + @_builtins.property + def list_value(self) -> Global___ListValue: + """List value.""" + + def __init__(self, *, null_value: _struct_pb2.NullValue.ValueType=..., bool_value: _builtins.bool=..., int64_value: _builtins.int=..., uint64_value: _builtins.int=..., double_value: _builtins.float=..., string_value: _builtins.str=..., bytes_value: _builtins.bytes=..., enum_value: Global___EnumValue | None=..., object_value: _any_pb2.Any | None=..., map_value: Global___MapValue | None=..., list_value: Global___ListValue | None=..., type_value: _builtins.str=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'double_value', b'double_value', 'enum_value', b'enum_value', 'int64_value', b'int64_value', 'kind', b'kind', 'list_value', b'list_value', 'map_value', b'map_value', 'null_value', b'null_value', 'object_value', b'object_value', 'string_value', b'string_value', 'type_value', b'type_value', 'uint64_value', b'uint64_value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'double_value', b'double_value', 'enum_value', b'enum_value', 'int64_value', b'int64_value', 'kind', b'kind', 'list_value', b'list_value', 'map_value', b'map_value', 'null_value', b'null_value', 'object_value', b'object_value', 'string_value', b'string_value', 'type_value', b'type_value', 'uint64_value', b'uint64_value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + _WhichOneofReturnType_kind: _TypeAlias = _typing.Literal['null_value', 'bool_value', 'int64_value', 'uint64_value', 'double_value', 'string_value', 'bytes_value', 'enum_value', 'object_value', 'map_value', 'list_value', 'type_value'] + _WhichOneofArgType_kind: _TypeAlias = _typing.Literal['kind', b'kind'] + + def WhichOneof(self, oneof_group: _WhichOneofArgType_kind) -> _WhichOneofReturnType_kind | None: + ... +Global___Value: _TypeAlias = Value + +@_typing.final +class EnumValue(_message.Message): + """An enum value.""" + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + type: _builtins.str + 'The fully qualified name of the enum type.' + value: _builtins.int + 'The value of the enum.' + + def __init__(self, *, type: _builtins.str=..., value: _builtins.int=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['type', b'type', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___EnumValue: _TypeAlias = EnumValue + +@_typing.final +class ListValue(_message.Message): + """A list. + + Wrapped in a message so 'not set' and empty can be differentiated, which is + required for use in a 'oneof'. + """ + DESCRIPTOR: _descriptor.Descriptor + VALUES_FIELD_NUMBER: _builtins.int + + @_builtins.property + def values(self) -> _containers.RepeatedCompositeFieldContainer[Global___Value]: + """The ordered values in the list.""" + + def __init__(self, *, values: _abc.Iterable[Global___Value] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['values', b'values'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___ListValue: _TypeAlias = ListValue + +@_typing.final +class MapValue(_message.Message): + """A map. + + Wrapped in a message so 'not set' and empty can be differentiated, which is + required for use in a 'oneof'. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class Entry(_message.Message): + """An entry in the map.""" + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + + @_builtins.property + def key(self) -> Global___Value: + """The key. + + Must be unique with in the map. + Currently only boolean, int, uint, and string values can be keys. + """ + + @_builtins.property + def value(self) -> Global___Value: + """The value.""" + + def __init__(self, *, key: Global___Value | None=..., value: Global___Value | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + ENTRIES_FIELD_NUMBER: _builtins.int + + @_builtins.property + def entries(self) -> _containers.RepeatedCompositeFieldContainer[Global___MapValue.Entry]: + """The set of map entries. + + CEL has fewer restrictions on keys, so a protobuf map represenation + cannot be used. + """ + + def __init__(self, *, entries: _abc.Iterable[Global___MapValue.Entry] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['entries', b'entries'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___MapValue: _TypeAlias = MapValue \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/__init__.py b/src/viam/gen/google/api/expr/v1beta1/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/expr/v1beta1/decl_grpc.py b/src/viam/gen/google/api/expr/v1beta1/decl_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/expr/v1beta1/decl_pb2.py b/src/viam/gen/google/api/expr/v1beta1/decl_pb2.py new file mode 100644 index 0000000000..db5dab5c96 --- /dev/null +++ b/src/viam/gen/google/api/expr/v1beta1/decl_pb2.py @@ -0,0 +1,24 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1beta1/decl.proto') +_sym_db = _symbol_database.Default() +from .....google.api.expr.v1beta1 import expr_pb2 as google_dot_api_dot_expr_dot_v1beta1_dot_expr__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"google/api/expr/v1beta1/decl.proto\x12\x17google.api.expr.v1beta1\x1a"google/api/expr/v1beta1/expr.proto"\xc5\x01\n\x04Decl\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n\x03doc\x18\x03 \x01(\tR\x03doc\x12:\n\x05ident\x18\x04 \x01(\x0b2".google.api.expr.v1beta1.IdentDeclH\x00R\x05ident\x12C\n\x08function\x18\x05 \x01(\x0b2%.google.api.expr.v1beta1.FunctionDeclH\x00R\x08functionB\x06\n\x04kind"r\n\x08DeclType\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02id\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12B\n\x0btype_params\x18\x04 \x03(\x0b2!.google.api.expr.v1beta1.DeclTypeR\ntypeParams"w\n\tIdentDecl\x125\n\x04type\x18\x03 \x01(\x0b2!.google.api.expr.v1beta1.DeclTypeR\x04type\x123\n\x05value\x18\x04 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x05value"\xb7\x01\n\x0cFunctionDecl\x126\n\x04args\x18\x01 \x03(\x0b2".google.api.expr.v1beta1.IdentDeclR\x04args\x12B\n\x0breturn_type\x18\x02 \x01(\x0b2!.google.api.expr.v1beta1.DeclTypeR\nreturnType\x12+\n\x11receiver_function\x18\x03 \x01(\x08R\x10receiverFunctionBj\n\x1bcom.google.api.expr.v1beta1B\tDeclProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01b\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.expr.v1beta1.decl_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x1bcom.google.api.expr.v1beta1B\tDeclProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01' + _globals['_DECL']._serialized_start = 100 + _globals['_DECL']._serialized_end = 297 + _globals['_DECLTYPE']._serialized_start = 299 + _globals['_DECLTYPE']._serialized_end = 413 + _globals['_IDENTDECL']._serialized_start = 415 + _globals['_IDENTDECL']._serialized_end = 534 + _globals['_FUNCTIONDECL']._serialized_start = 537 + _globals['_FUNCTIONDECL']._serialized_end = 720 \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/decl_pb2.pyi b/src/viam/gen/google/api/expr/v1beta1/decl_pb2.pyi new file mode 100644 index 0000000000..5a67984965 --- /dev/null +++ b/src/viam/gen/google/api/expr/v1beta1/decl_pb2.pyi @@ -0,0 +1,158 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from collections import abc as _abc +from google.api.expr.v1beta1 import expr_pb2 as _expr_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class Decl(_message.Message): + """A declaration.""" + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + DOC_FIELD_NUMBER: _builtins.int + IDENT_FIELD_NUMBER: _builtins.int + FUNCTION_FIELD_NUMBER: _builtins.int + id: _builtins.int + 'The id of the declaration.' + name: _builtins.str + 'The name of the declaration.' + doc: _builtins.str + 'The documentation string for the declaration.' + + @_builtins.property + def ident(self) -> Global___IdentDecl: + """An identifier declaration.""" + + @_builtins.property + def function(self) -> Global___FunctionDecl: + """A function declaration.""" + + def __init__(self, *, id: _builtins.int=..., name: _builtins.str=..., doc: _builtins.str=..., ident: Global___IdentDecl | None=..., function: Global___FunctionDecl | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['function', b'function', 'ident', b'ident', 'kind', b'kind'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['doc', b'doc', 'function', b'function', 'id', b'id', 'ident', b'ident', 'kind', b'kind', 'name', b'name'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + _WhichOneofReturnType_kind: _TypeAlias = _typing.Literal['ident', 'function'] + _WhichOneofArgType_kind: _TypeAlias = _typing.Literal['kind', b'kind'] + + def WhichOneof(self, oneof_group: _WhichOneofArgType_kind) -> _WhichOneofReturnType_kind | None: + ... +Global___Decl: _TypeAlias = Decl + +@_typing.final +class DeclType(_message.Message): + """The declared type of a variable. + + Extends runtime type values with extra information used for type checking + and dispatching. + """ + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + TYPE_PARAMS_FIELD_NUMBER: _builtins.int + id: _builtins.int + 'The expression id of the declared type, if applicable.' + type: _builtins.str + "The type name, e.g. 'int', 'my.type.Type' or 'T'" + + @_builtins.property + def type_params(self) -> _containers.RepeatedCompositeFieldContainer[Global___DeclType]: + """An ordered list of type parameters, e.g. ``. + Only applies to a subset of types, e.g. `map`, `list`. + """ + + def __init__(self, *, id: _builtins.int=..., type: _builtins.str=..., type_params: _abc.Iterable[Global___DeclType] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'type', b'type', 'type_params', b'type_params'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___DeclType: _TypeAlias = DeclType + +@_typing.final +class IdentDecl(_message.Message): + """An identifier declaration.""" + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + + @_builtins.property + def type(self) -> Global___DeclType: + """Optional type of the identifier.""" + + @_builtins.property + def value(self) -> _expr_pb2.Expr: + """Optional value of the identifier.""" + + def __init__(self, *, type: Global___DeclType | None=..., value: _expr_pb2.Expr | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['type', b'type', 'value', b'value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['type', b'type', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___IdentDecl: _TypeAlias = IdentDecl + +@_typing.final +class FunctionDecl(_message.Message): + """A function declaration.""" + DESCRIPTOR: _descriptor.Descriptor + ARGS_FIELD_NUMBER: _builtins.int + RETURN_TYPE_FIELD_NUMBER: _builtins.int + RECEIVER_FUNCTION_FIELD_NUMBER: _builtins.int + receiver_function: _builtins.bool + 'If the first argument of the function is the receiver.' + + @_builtins.property + def args(self) -> _containers.RepeatedCompositeFieldContainer[Global___IdentDecl]: + """The function arguments.""" + + @_builtins.property + def return_type(self) -> Global___DeclType: + """Optional declared return type.""" + + def __init__(self, *, args: _abc.Iterable[Global___IdentDecl] | None=..., return_type: Global___DeclType | None=..., receiver_function: _builtins.bool=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['return_type', b'return_type'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['args', b'args', 'receiver_function', b'receiver_function', 'return_type', b'return_type'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___FunctionDecl: _TypeAlias = FunctionDecl \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/eval_grpc.py b/src/viam/gen/google/api/expr/v1beta1/eval_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/expr/v1beta1/eval_pb2.py b/src/viam/gen/google/api/expr/v1beta1/eval_pb2.py new file mode 100644 index 0000000000..6ce24594c7 --- /dev/null +++ b/src/viam/gen/google/api/expr/v1beta1/eval_pb2.py @@ -0,0 +1,29 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1beta1/eval.proto') +_sym_db = _symbol_database.Default() +from .....google.api.expr.v1beta1 import value_pb2 as google_dot_api_dot_expr_dot_v1beta1_dot_value__pb2 +from .....google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"google/api/expr/v1beta1/eval.proto\x12\x17google.api.expr.v1beta1\x1a#google/api/expr/v1beta1/value.proto\x1a\x17google/rpc/status.proto"\xe0\x01\n\tEvalState\x12:\n\x06values\x18\x01 \x03(\x0b2".google.api.expr.v1beta1.ExprValueR\x06values\x12C\n\x07results\x18\x03 \x03(\x0b2).google.api.expr.v1beta1.EvalState.ResultR\x07results\x1aR\n\x06Result\x122\n\x04expr\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1beta1.IdRefR\x04expr\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value"\xc7\x01\n\tExprValue\x126\n\x05value\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1beta1.ValueH\x00R\x05value\x129\n\x05error\x18\x02 \x01(\x0b2!.google.api.expr.v1beta1.ErrorSetH\x00R\x05error\x12?\n\x07unknown\x18\x03 \x01(\x0b2#.google.api.expr.v1beta1.UnknownSetH\x00R\x07unknownB\x06\n\x04kind"6\n\x08ErrorSet\x12*\n\x06errors\x18\x01 \x03(\x0b2\x12.google.rpc.StatusR\x06errors"B\n\nUnknownSet\x124\n\x05exprs\x18\x01 \x03(\x0b2\x1e.google.api.expr.v1beta1.IdRefR\x05exprs"\x17\n\x05IdRef\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02idBj\n\x1bcom.google.api.expr.v1beta1B\tEvalProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01b\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.expr.v1beta1.eval_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x1bcom.google.api.expr.v1beta1B\tEvalProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01' + _globals['_EVALSTATE']._serialized_start = 126 + _globals['_EVALSTATE']._serialized_end = 350 + _globals['_EVALSTATE_RESULT']._serialized_start = 268 + _globals['_EVALSTATE_RESULT']._serialized_end = 350 + _globals['_EXPRVALUE']._serialized_start = 353 + _globals['_EXPRVALUE']._serialized_end = 552 + _globals['_ERRORSET']._serialized_start = 554 + _globals['_ERRORSET']._serialized_end = 608 + _globals['_UNKNOWNSET']._serialized_start = 610 + _globals['_UNKNOWNSET']._serialized_end = 676 + _globals['_IDREF']._serialized_start = 678 + _globals['_IDREF']._serialized_end = 701 \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/eval_pb2.pyi b/src/viam/gen/google/api/expr/v1beta1/eval_pb2.pyi new file mode 100644 index 0000000000..0b28e4e609 --- /dev/null +++ b/src/viam/gen/google/api/expr/v1beta1/eval_pb2.pyi @@ -0,0 +1,220 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from collections import abc as _abc +from google.api.expr.v1beta1 import value_pb2 as _value_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +from google.rpc import status_pb2 as _status_pb2 +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class EvalState(_message.Message): + """The state of an evaluation. + + Can represent an initial, partial, or completed state of evaluation. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class Result(_message.Message): + """A single evaluation result.""" + DESCRIPTOR: _descriptor.Descriptor + EXPR_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + value: _builtins.int + 'The index in `values` of the resulting value.' + + @_builtins.property + def expr(self) -> Global___IdRef: + """The expression this result is for.""" + + def __init__(self, *, expr: Global___IdRef | None=..., value: _builtins.int=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + VALUES_FIELD_NUMBER: _builtins.int + RESULTS_FIELD_NUMBER: _builtins.int + + @_builtins.property + def values(self) -> _containers.RepeatedCompositeFieldContainer[Global___ExprValue]: + """The unique values referenced in this message.""" + + @_builtins.property + def results(self) -> _containers.RepeatedCompositeFieldContainer[Global___EvalState.Result]: + """An ordered list of results. + + Tracks the flow of evaluation through the expression. + May be sparse. + """ + + def __init__(self, *, values: _abc.Iterable[Global___ExprValue] | None=..., results: _abc.Iterable[Global___EvalState.Result] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['results', b'results', 'values', b'values'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___EvalState: _TypeAlias = EvalState + +@_typing.final +class ExprValue(_message.Message): + """The value of an evaluated expression.""" + DESCRIPTOR: _descriptor.Descriptor + VALUE_FIELD_NUMBER: _builtins.int + ERROR_FIELD_NUMBER: _builtins.int + UNKNOWN_FIELD_NUMBER: _builtins.int + + @_builtins.property + def value(self) -> _value_pb2.Value: + """A concrete value.""" + + @_builtins.property + def error(self) -> Global___ErrorSet: + """The set of errors in the critical path of evalution. + + Only errors in the critical path are included. For example, + `( || true) && ` will only result in ``, + while ` || ` will result in both `` and + ``. + + Errors cause by the presence of other errors are not included in the + set. For example `.foo`, `foo()`, and ` + 1` will + only result in ``. + + Multiple errors *might* be included when evaluation could result + in different errors. For example ` + ` and + `foo(, )` may result in ``, `` or both. + The exact subset of errors included for this case is unspecified and + depends on the implementation details of the evaluator. + """ + + @_builtins.property + def unknown(self) -> Global___UnknownSet: + """The set of unknowns in the critical path of evaluation. + + Unknown behaves identically to Error with regards to propagation. + Specifically, only unknowns in the critical path are included, unknowns + caused by the presence of other unknowns are not included, and multiple + unknowns *might* be included included when evaluation could result in + different unknowns. For example: + + ( || true) && -> + || -> + .foo -> + foo() -> + + -> or + + Unknown takes precidence over Error in cases where a `Value` can short + circuit the result: + + || -> + && -> + + Errors take precidence in all other cases: + + + -> + foo(, ) -> + """ + + def __init__(self, *, value: _value_pb2.Value | None=..., error: Global___ErrorSet | None=..., unknown: Global___UnknownSet | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['error', b'error', 'kind', b'kind', 'unknown', b'unknown', 'value', b'value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['error', b'error', 'kind', b'kind', 'unknown', b'unknown', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + _WhichOneofReturnType_kind: _TypeAlias = _typing.Literal['value', 'error', 'unknown'] + _WhichOneofArgType_kind: _TypeAlias = _typing.Literal['kind', b'kind'] + + def WhichOneof(self, oneof_group: _WhichOneofArgType_kind) -> _WhichOneofReturnType_kind | None: + ... +Global___ExprValue: _TypeAlias = ExprValue + +@_typing.final +class ErrorSet(_message.Message): + """A set of errors. + + The errors included depend on the context. See `ExprValue.error`. + """ + DESCRIPTOR: _descriptor.Descriptor + ERRORS_FIELD_NUMBER: _builtins.int + + @_builtins.property + def errors(self) -> _containers.RepeatedCompositeFieldContainer[_status_pb2.Status]: + """The errors in the set.""" + + def __init__(self, *, errors: _abc.Iterable[_status_pb2.Status] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['errors', b'errors'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___ErrorSet: _TypeAlias = ErrorSet + +@_typing.final +class UnknownSet(_message.Message): + """A set of expressions for which the value is unknown. + + The unknowns included depend on the context. See `ExprValue.unknown`. + """ + DESCRIPTOR: _descriptor.Descriptor + EXPRS_FIELD_NUMBER: _builtins.int + + @_builtins.property + def exprs(self) -> _containers.RepeatedCompositeFieldContainer[Global___IdRef]: + """The ids of the expressions with unknown values.""" + + def __init__(self, *, exprs: _abc.Iterable[Global___IdRef] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['exprs', b'exprs'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___UnknownSet: _TypeAlias = UnknownSet + +@_typing.final +class IdRef(_message.Message): + """A reference to an expression id.""" + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.int + 'The expression id.' + + def __init__(self, *, id: _builtins.int=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___IdRef: _TypeAlias = IdRef \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/expr_grpc.py b/src/viam/gen/google/api/expr/v1beta1/expr_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/expr/v1beta1/expr_pb2.py b/src/viam/gen/google/api/expr/v1beta1/expr_pb2.py new file mode 100644 index 0000000000..ca9bda8f16 --- /dev/null +++ b/src/viam/gen/google/api/expr/v1beta1/expr_pb2.py @@ -0,0 +1,37 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1beta1/expr.proto') +_sym_db = _symbol_database.Default() +from .....google.api.expr.v1beta1 import source_pb2 as google_dot_api_dot_expr_dot_v1beta1_dot_source__pb2 +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"google/api/expr/v1beta1/expr.proto\x12\x17google.api.expr.v1beta1\x1a$google/api/expr/v1beta1/source.proto\x1a\x1cgoogle/protobuf/struct.proto"\xac\x01\n\nParsedExpr\x121\n\x04expr\x18\x02 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x04expr\x12D\n\x0bsource_info\x18\x03 \x01(\x0b2#.google.api.expr.v1beta1.SourceInfoR\nsourceInfo\x12%\n\x0esyntax_version\x18\x04 \x01(\tR\rsyntaxVersion"\xbd\x0c\n\x04Expr\x12\x0e\n\x02id\x18\x02 \x01(\x05R\x02id\x12E\n\x0cliteral_expr\x18\x03 \x01(\x0b2 .google.api.expr.v1beta1.LiteralH\x00R\x0bliteralExpr\x12D\n\nident_expr\x18\x04 \x01(\x0b2#.google.api.expr.v1beta1.Expr.IdentH\x00R\tidentExpr\x12G\n\x0bselect_expr\x18\x05 \x01(\x0b2$.google.api.expr.v1beta1.Expr.SelectH\x00R\nselectExpr\x12A\n\tcall_expr\x18\x06 \x01(\x0b2".google.api.expr.v1beta1.Expr.CallH\x00R\x08callExpr\x12G\n\tlist_expr\x18\x07 \x01(\x0b2(.google.api.expr.v1beta1.Expr.CreateListH\x00R\x08listExpr\x12M\n\x0bstruct_expr\x18\x08 \x01(\x0b2*.google.api.expr.v1beta1.Expr.CreateStructH\x00R\nstructExpr\x12\\\n\x12comprehension_expr\x18\t \x01(\x0b2+.google.api.expr.v1beta1.Expr.ComprehensionH\x00R\x11comprehensionExpr\x1a\x1b\n\x05Ident\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x1at\n\x06Select\x127\n\x07operand\x18\x01 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x07operand\x12\x14\n\x05field\x18\x02 \x01(\tR\x05field\x12\x1b\n\ttest_only\x18\x03 \x01(\x08R\x08testOnly\x1a\x8c\x01\n\x04Call\x125\n\x06target\x18\x01 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x06target\x12\x1a\n\x08function\x18\x02 \x01(\tR\x08function\x121\n\x04args\x18\x03 \x03(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x04args\x1aG\n\nCreateList\x129\n\x08elements\x18\x01 \x03(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x08elements\x1a\xa2\x02\n\x0cCreateStruct\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12J\n\x07entries\x18\x02 \x03(\x0b20.google.api.expr.v1beta1.Expr.CreateStruct.EntryR\x07entries\x1a\xb1\x01\n\x05Entry\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02id\x12\x1d\n\tfield_key\x18\x02 \x01(\tH\x00R\x08fieldKey\x128\n\x07map_key\x18\x03 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprH\x00R\x06mapKey\x123\n\x05value\x18\x04 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x05valueB\n\n\x08key_kind\x1a\xf8\x02\n\rComprehension\x12\x19\n\x08iter_var\x18\x01 \x01(\tR\x07iterVar\x12<\n\niter_range\x18\x02 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\titerRange\x12\x19\n\x08accu_var\x18\x03 \x01(\tR\x07accuVar\x12:\n\taccu_init\x18\x04 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x08accuInit\x12D\n\x0eloop_condition\x18\x05 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\rloopCondition\x12:\n\tloop_step\x18\x06 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x08loopStep\x125\n\x06result\x18\x07 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x06resultB\x0b\n\texpr_kind"\xad\x02\n\x07Literal\x12;\n\nnull_value\x18\x01 \x01(\x0e2\x1a.google.protobuf.NullValueH\x00R\tnullValue\x12\x1f\n\nbool_value\x18\x02 \x01(\x08H\x00R\tboolValue\x12!\n\x0bint64_value\x18\x03 \x01(\x03H\x00R\nint64Value\x12#\n\x0cuint64_value\x18\x04 \x01(\x04H\x00R\x0buint64Value\x12#\n\x0cdouble_value\x18\x05 \x01(\x01H\x00R\x0bdoubleValue\x12#\n\x0cstring_value\x18\x06 \x01(\tH\x00R\x0bstringValue\x12!\n\x0bbytes_value\x18\x07 \x01(\x0cH\x00R\nbytesValueB\x0f\n\rconstant_kindBj\n\x1bcom.google.api.expr.v1beta1B\tExprProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01b\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.expr.v1beta1.expr_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x1bcom.google.api.expr.v1beta1B\tExprProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01' + _globals['_PARSEDEXPR']._serialized_start = 132 + _globals['_PARSEDEXPR']._serialized_end = 304 + _globals['_EXPR']._serialized_start = 307 + _globals['_EXPR']._serialized_end = 1904 + _globals['_EXPR_IDENT']._serialized_start = 858 + _globals['_EXPR_IDENT']._serialized_end = 885 + _globals['_EXPR_SELECT']._serialized_start = 887 + _globals['_EXPR_SELECT']._serialized_end = 1003 + _globals['_EXPR_CALL']._serialized_start = 1006 + _globals['_EXPR_CALL']._serialized_end = 1146 + _globals['_EXPR_CREATELIST']._serialized_start = 1148 + _globals['_EXPR_CREATELIST']._serialized_end = 1219 + _globals['_EXPR_CREATESTRUCT']._serialized_start = 1222 + _globals['_EXPR_CREATESTRUCT']._serialized_end = 1512 + _globals['_EXPR_CREATESTRUCT_ENTRY']._serialized_start = 1335 + _globals['_EXPR_CREATESTRUCT_ENTRY']._serialized_end = 1512 + _globals['_EXPR_COMPREHENSION']._serialized_start = 1515 + _globals['_EXPR_COMPREHENSION']._serialized_end = 1891 + _globals['_LITERAL']._serialized_start = 1907 + _globals['_LITERAL']._serialized_end = 2208 \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/expr_pb2.pyi b/src/viam/gen/google/api/expr/v1beta1/expr_pb2.pyi new file mode 100644 index 0000000000..a7a5547c62 --- /dev/null +++ b/src/viam/gen/google/api/expr/v1beta1/expr_pb2.pyi @@ -0,0 +1,436 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from collections import abc as _abc +from google.api.expr.v1beta1 import source_pb2 as _source_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class ParsedExpr(_message.Message): + """An expression together with source information as returned by the parser.""" + DESCRIPTOR: _descriptor.Descriptor + EXPR_FIELD_NUMBER: _builtins.int + SOURCE_INFO_FIELD_NUMBER: _builtins.int + SYNTAX_VERSION_FIELD_NUMBER: _builtins.int + syntax_version: _builtins.str + 'The syntax version of the source, e.g. `cel1`.' + + @_builtins.property + def expr(self) -> Global___Expr: + """The parsed expression.""" + + @_builtins.property + def source_info(self) -> _source_pb2.SourceInfo: + """The source info derived from input that generated the parsed `expr`.""" + + def __init__(self, *, expr: Global___Expr | None=..., source_info: _source_pb2.SourceInfo | None=..., syntax_version: _builtins.str=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'source_info', b'source_info'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'source_info', b'source_info', 'syntax_version', b'syntax_version'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___ParsedExpr: _TypeAlias = ParsedExpr + +@_typing.final +class Expr(_message.Message): + """An abstract representation of a common expression. + + Expressions are abstractly represented as a collection of identifiers, + select statements, function calls, literals, and comprehensions. All + operators with the exception of the '.' operator are modelled as function + calls. This makes it easy to represent new operators into the existing AST. + + All references within expressions must resolve to a [Decl][google.api.expr.v1beta1.Decl] provided at + type-check for an expression to be valid. A reference may either be a bare + identifier `name` or a qualified identifier `google.api.name`. References + may either refer to a value or a function declaration. + + For example, the expression `google.api.name.startsWith('expr')` references + the declaration `google.api.name` within a [Expr.Select][google.api.expr.v1beta1.Expr.Select] expression, and + the function declaration `startsWith`. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class Ident(_message.Message): + """An identifier expression. e.g. `request`.""" + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str + "Required. Holds a single, unqualified identifier, possibly preceded by a\n '.'.\n\n Qualified names are represented by the [Expr.Select][google.api.expr.v1beta1.Expr.Select] expression.\n " + + def __init__(self, *, name: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class Select(_message.Message): + """A field selection expression. e.g. `request.auth`.""" + DESCRIPTOR: _descriptor.Descriptor + OPERAND_FIELD_NUMBER: _builtins.int + FIELD_FIELD_NUMBER: _builtins.int + TEST_ONLY_FIELD_NUMBER: _builtins.int + field: _builtins.str + 'Required. The name of the field to select.\n\n For example, in the select expression `request.auth`, the `auth` portion\n of the expression would be the `field`.\n ' + test_only: _builtins.bool + 'Whether the select is to be interpreted as a field presence test.\n\n This results from the macro `has(request.auth)`.\n ' + + @_builtins.property + def operand(self) -> Global___Expr: + """Required. The target of the selection expression. + + For example, in the select expression `request.auth`, the `request` + portion of the expression is the `operand`. + """ + + def __init__(self, *, operand: Global___Expr | None=..., field: _builtins.str=..., test_only: _builtins.bool=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['operand', b'operand'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['field', b'field', 'operand', b'operand', 'test_only', b'test_only'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class Call(_message.Message): + """A call expression, including calls to predefined functions and operators. + + For example, `value == 10`, `size(map_value)`. + """ + DESCRIPTOR: _descriptor.Descriptor + TARGET_FIELD_NUMBER: _builtins.int + FUNCTION_FIELD_NUMBER: _builtins.int + ARGS_FIELD_NUMBER: _builtins.int + function: _builtins.str + 'Required. The name of the function or method being called.' + + @_builtins.property + def target(self) -> Global___Expr: + """The target of an method call-style expression. For example, `x` in + `x.f()`. + """ + + @_builtins.property + def args(self) -> _containers.RepeatedCompositeFieldContainer[Global___Expr]: + """The arguments.""" + + def __init__(self, *, target: Global___Expr | None=..., function: _builtins.str=..., args: _abc.Iterable[Global___Expr] | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['target', b'target'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['args', b'args', 'function', b'function', 'target', b'target'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class CreateList(_message.Message): + """A list creation expression. + + Lists may either be homogenous, e.g. `[1, 2, 3]`, or heterogenous, e.g. + `dyn([1, 'hello', 2.0])` + """ + DESCRIPTOR: _descriptor.Descriptor + ELEMENTS_FIELD_NUMBER: _builtins.int + + @_builtins.property + def elements(self) -> _containers.RepeatedCompositeFieldContainer[Global___Expr]: + """The elements part of the list.""" + + def __init__(self, *, elements: _abc.Iterable[Global___Expr] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['elements', b'elements'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class CreateStruct(_message.Message): + """A map or message creation expression. + + Maps are constructed as `{'key_name': 'value'}`. Message construction is + similar, but prefixed with a type name and composed of field ids: + `types.MyType{field_id: 'value'}`. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class Entry(_message.Message): + """Represents an entry.""" + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + FIELD_KEY_FIELD_NUMBER: _builtins.int + MAP_KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + id: _builtins.int + 'Required. An id assigned to this node by the parser which is unique\n in a given expression tree. This is used to associate type\n information and other attributes to the node.\n ' + field_key: _builtins.str + 'The field key for a message creator statement.' + + @_builtins.property + def map_key(self) -> Global___Expr: + """The key expression for a map creation statement.""" + + @_builtins.property + def value(self) -> Global___Expr: + """Required. The value assigned to the key.""" + + def __init__(self, *, id: _builtins.int=..., field_key: _builtins.str=..., map_key: Global___Expr | None=..., value: Global___Expr | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['field_key', b'field_key', 'key_kind', b'key_kind', 'map_key', b'map_key', 'value', b'value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['field_key', b'field_key', 'id', b'id', 'key_kind', b'key_kind', 'map_key', b'map_key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + _WhichOneofReturnType_key_kind: _TypeAlias = _typing.Literal['field_key', 'map_key'] + _WhichOneofArgType_key_kind: _TypeAlias = _typing.Literal['key_kind', b'key_kind'] + + def WhichOneof(self, oneof_group: _WhichOneofArgType_key_kind) -> _WhichOneofReturnType_key_kind | None: + ... + TYPE_FIELD_NUMBER: _builtins.int + ENTRIES_FIELD_NUMBER: _builtins.int + type: _builtins.str + 'The type name of the message to be created, empty when creating map\n literals.\n ' + + @_builtins.property + def entries(self) -> _containers.RepeatedCompositeFieldContainer[Global___Expr.CreateStruct.Entry]: + """The entries in the creation expression.""" + + def __init__(self, *, type: _builtins.str=..., entries: _abc.Iterable[Global___Expr.CreateStruct.Entry] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['entries', b'entries', 'type', b'type'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class Comprehension(_message.Message): + """A comprehension expression applied to a list or map. + + Comprehensions are not part of the core syntax, but enabled with macros. + A macro matches a specific call signature within a parsed AST and replaces + the call with an alternate AST block. Macro expansion happens at parse + time. + + The following macros are supported within CEL: + + Aggregate type macros may be applied to all elements in a list or all keys + in a map: + + * `all`, `exists`, `exists_one` - test a predicate expression against + the inputs and return `true` if the predicate is satisfied for all, + any, or only one value `list.all(x, x < 10)`. + * `filter` - test a predicate expression against the inputs and return + the subset of elements which satisfy the predicate: + `payments.filter(p, p > 1000)`. + * `map` - apply an expression to all elements in the input and return the + output aggregate type: `[1, 2, 3].map(i, i * i)`. + + The `has(m.x)` macro tests whether the property `x` is present in struct + `m`. The semantics of this macro depend on the type of `m`. For proto2 + messages `has(m.x)` is defined as 'defined, but not set`. For proto3, the + macro tests whether the property is set to its default. For map and struct + types, the macro tests whether the property `x` is defined on `m`. + """ + DESCRIPTOR: _descriptor.Descriptor + ITER_VAR_FIELD_NUMBER: _builtins.int + ITER_RANGE_FIELD_NUMBER: _builtins.int + ACCU_VAR_FIELD_NUMBER: _builtins.int + ACCU_INIT_FIELD_NUMBER: _builtins.int + LOOP_CONDITION_FIELD_NUMBER: _builtins.int + LOOP_STEP_FIELD_NUMBER: _builtins.int + RESULT_FIELD_NUMBER: _builtins.int + iter_var: _builtins.str + 'The name of the iteration variable.' + accu_var: _builtins.str + 'The name of the variable used for accumulation of the result.' + + @_builtins.property + def iter_range(self) -> Global___Expr: + """The range over which var iterates.""" + + @_builtins.property + def accu_init(self) -> Global___Expr: + """The initial value of the accumulator.""" + + @_builtins.property + def loop_condition(self) -> Global___Expr: + """An expression which can contain iter_var and accu_var. + + Returns false when the result has been computed and may be used as + a hint to short-circuit the remainder of the comprehension. + """ + + @_builtins.property + def loop_step(self) -> Global___Expr: + """An expression which can contain iter_var and accu_var. + + Computes the next value of accu_var. + """ + + @_builtins.property + def result(self) -> Global___Expr: + """An expression which can contain accu_var. + + Computes the result. + """ + + def __init__(self, *, iter_var: _builtins.str=..., iter_range: Global___Expr | None=..., accu_var: _builtins.str=..., accu_init: Global___Expr | None=..., loop_condition: Global___Expr | None=..., loop_step: Global___Expr | None=..., result: Global___Expr | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['accu_init', b'accu_init', 'iter_range', b'iter_range', 'loop_condition', b'loop_condition', 'loop_step', b'loop_step', 'result', b'result'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['accu_init', b'accu_init', 'accu_var', b'accu_var', 'iter_range', b'iter_range', 'iter_var', b'iter_var', 'loop_condition', b'loop_condition', 'loop_step', b'loop_step', 'result', b'result'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + ID_FIELD_NUMBER: _builtins.int + LITERAL_EXPR_FIELD_NUMBER: _builtins.int + IDENT_EXPR_FIELD_NUMBER: _builtins.int + SELECT_EXPR_FIELD_NUMBER: _builtins.int + CALL_EXPR_FIELD_NUMBER: _builtins.int + LIST_EXPR_FIELD_NUMBER: _builtins.int + STRUCT_EXPR_FIELD_NUMBER: _builtins.int + COMPREHENSION_EXPR_FIELD_NUMBER: _builtins.int + id: _builtins.int + 'Required. An id assigned to this node by the parser which is unique in a\n given expression tree. This is used to associate type information and other\n attributes to a node in the parse tree.\n ' + + @_builtins.property + def literal_expr(self) -> Global___Literal: + """A literal expression.""" + + @_builtins.property + def ident_expr(self) -> Global___Expr.Ident: + """An identifier expression.""" + + @_builtins.property + def select_expr(self) -> Global___Expr.Select: + """A field selection expression, e.g. `request.auth`.""" + + @_builtins.property + def call_expr(self) -> Global___Expr.Call: + """A call expression, including calls to predefined functions and operators.""" + + @_builtins.property + def list_expr(self) -> Global___Expr.CreateList: + """A list creation expression.""" + + @_builtins.property + def struct_expr(self) -> Global___Expr.CreateStruct: + """A map or object creation expression.""" + + @_builtins.property + def comprehension_expr(self) -> Global___Expr.Comprehension: + """A comprehension expression.""" + + def __init__(self, *, id: _builtins.int=..., literal_expr: Global___Literal | None=..., ident_expr: Global___Expr.Ident | None=..., select_expr: Global___Expr.Select | None=..., call_expr: Global___Expr.Call | None=..., list_expr: Global___Expr.CreateList | None=..., struct_expr: Global___Expr.CreateStruct | None=..., comprehension_expr: Global___Expr.Comprehension | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['call_expr', b'call_expr', 'comprehension_expr', b'comprehension_expr', 'expr_kind', b'expr_kind', 'ident_expr', b'ident_expr', 'list_expr', b'list_expr', 'literal_expr', b'literal_expr', 'select_expr', b'select_expr', 'struct_expr', b'struct_expr'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['call_expr', b'call_expr', 'comprehension_expr', b'comprehension_expr', 'expr_kind', b'expr_kind', 'id', b'id', 'ident_expr', b'ident_expr', 'list_expr', b'list_expr', 'literal_expr', b'literal_expr', 'select_expr', b'select_expr', 'struct_expr', b'struct_expr'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + _WhichOneofReturnType_expr_kind: _TypeAlias = _typing.Literal['literal_expr', 'ident_expr', 'select_expr', 'call_expr', 'list_expr', 'struct_expr', 'comprehension_expr'] + _WhichOneofArgType_expr_kind: _TypeAlias = _typing.Literal['expr_kind', b'expr_kind'] + + def WhichOneof(self, oneof_group: _WhichOneofArgType_expr_kind) -> _WhichOneofReturnType_expr_kind | None: + ... +Global___Expr: _TypeAlias = Expr + +@_typing.final +class Literal(_message.Message): + """Represents a primitive literal. + + This is similar to the primitives supported in the well-known type + `google.protobuf.Value`, but richer so it can represent CEL's full range of + primitives. + + Lists and structs are not included as constants as these aggregate types may + contain [Expr][google.api.expr.v1beta1.Expr] elements which require evaluation and are thus not constant. + + Examples of literals include: `"hello"`, `b'bytes'`, `1u`, `4.2`, `-2`, + `true`, `null`. + """ + DESCRIPTOR: _descriptor.Descriptor + NULL_VALUE_FIELD_NUMBER: _builtins.int + BOOL_VALUE_FIELD_NUMBER: _builtins.int + INT64_VALUE_FIELD_NUMBER: _builtins.int + UINT64_VALUE_FIELD_NUMBER: _builtins.int + DOUBLE_VALUE_FIELD_NUMBER: _builtins.int + STRING_VALUE_FIELD_NUMBER: _builtins.int + BYTES_VALUE_FIELD_NUMBER: _builtins.int + null_value: _struct_pb2.NullValue.ValueType + 'null value.' + bool_value: _builtins.bool + 'boolean value.' + int64_value: _builtins.int + 'int64 value.' + uint64_value: _builtins.int + 'uint64 value.' + double_value: _builtins.float + 'double value.' + string_value: _builtins.str + 'string value.' + bytes_value: _builtins.bytes + 'bytes value.' + + def __init__(self, *, null_value: _struct_pb2.NullValue.ValueType=..., bool_value: _builtins.bool=..., int64_value: _builtins.int=..., uint64_value: _builtins.int=..., double_value: _builtins.float=..., string_value: _builtins.str=..., bytes_value: _builtins.bytes=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'constant_kind', b'constant_kind', 'double_value', b'double_value', 'int64_value', b'int64_value', 'null_value', b'null_value', 'string_value', b'string_value', 'uint64_value', b'uint64_value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'constant_kind', b'constant_kind', 'double_value', b'double_value', 'int64_value', b'int64_value', 'null_value', b'null_value', 'string_value', b'string_value', 'uint64_value', b'uint64_value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + _WhichOneofReturnType_constant_kind: _TypeAlias = _typing.Literal['null_value', 'bool_value', 'int64_value', 'uint64_value', 'double_value', 'string_value', 'bytes_value'] + _WhichOneofArgType_constant_kind: _TypeAlias = _typing.Literal['constant_kind', b'constant_kind'] + + def WhichOneof(self, oneof_group: _WhichOneofArgType_constant_kind) -> _WhichOneofReturnType_constant_kind | None: + ... +Global___Literal: _TypeAlias = Literal \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/source_grpc.py b/src/viam/gen/google/api/expr/v1beta1/source_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/expr/v1beta1/source_pb2.py b/src/viam/gen/google/api/expr/v1beta1/source_pb2.py new file mode 100644 index 0000000000..7e0c0ad82a --- /dev/null +++ b/src/viam/gen/google/api/expr/v1beta1/source_pb2.py @@ -0,0 +1,23 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1beta1/source.proto') +_sym_db = _symbol_database.Default() +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$google/api/expr/v1beta1/source.proto\x12\x17google.api.expr.v1beta1"\xdb\x01\n\nSourceInfo\x12\x1a\n\x08location\x18\x02 \x01(\tR\x08location\x12!\n\x0cline_offsets\x18\x03 \x03(\x05R\x0blineOffsets\x12P\n\tpositions\x18\x04 \x03(\x0b22.google.api.expr.v1beta1.SourceInfo.PositionsEntryR\tpositions\x1a<\n\x0ePositionsEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01"p\n\x0eSourcePosition\x12\x1a\n\x08location\x18\x01 \x01(\tR\x08location\x12\x16\n\x06offset\x18\x02 \x01(\x05R\x06offset\x12\x12\n\x04line\x18\x03 \x01(\x05R\x04line\x12\x16\n\x06column\x18\x04 \x01(\x05R\x06columnBl\n\x1bcom.google.api.expr.v1beta1B\x0bSourceProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01b\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.expr.v1beta1.source_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x1bcom.google.api.expr.v1beta1B\x0bSourceProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01' + _globals['_SOURCEINFO_POSITIONSENTRY']._loaded_options = None + _globals['_SOURCEINFO_POSITIONSENTRY']._serialized_options = b'8\x01' + _globals['_SOURCEINFO']._serialized_start = 66 + _globals['_SOURCEINFO']._serialized_end = 285 + _globals['_SOURCEINFO_POSITIONSENTRY']._serialized_start = 225 + _globals['_SOURCEINFO_POSITIONSENTRY']._serialized_end = 285 + _globals['_SOURCEPOSITION']._serialized_start = 287 + _globals['_SOURCEPOSITION']._serialized_end = 399 \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/source_pb2.pyi b/src/viam/gen/google/api/expr/v1beta1/source_pb2.pyi new file mode 100644 index 0000000000..dc5fe0a78c --- /dev/null +++ b/src/viam/gen/google/api/expr/v1beta1/source_pb2.pyi @@ -0,0 +1,102 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class SourceInfo(_message.Message): + """Source information collected at parse time.""" + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class PositionsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.int + value: _builtins.int + + def __init__(self, *, key: _builtins.int=..., value: _builtins.int=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + LOCATION_FIELD_NUMBER: _builtins.int + LINE_OFFSETS_FIELD_NUMBER: _builtins.int + POSITIONS_FIELD_NUMBER: _builtins.int + location: _builtins.str + 'The location name. All position information attached to an expression is\n relative to this location.\n\n The location could be a file, UI element, or similar. For example,\n `acme/app/AnvilPolicy.cel`.\n ' + + @_builtins.property + def line_offsets(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: + """Monotonically increasing list of character offsets where newlines appear. + + The line number of a given position is the index `i` where for a given + `id` the `line_offsets[i] < id_positions[id] < line_offsets[i+1]`. The + column may be derivd from `id_positions[id] - line_offsets[i]`. + """ + + @_builtins.property + def positions(self) -> _containers.ScalarMap[_builtins.int, _builtins.int]: + """A map from the parse node id (e.g. `Expr.id`) to the character offset + within source. + """ + + def __init__(self, *, location: _builtins.str=..., line_offsets: _abc.Iterable[_builtins.int] | None=..., positions: _abc.Mapping[_builtins.int, _builtins.int] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['line_offsets', b'line_offsets', 'location', b'location', 'positions', b'positions'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___SourceInfo: _TypeAlias = SourceInfo + +@_typing.final +class SourcePosition(_message.Message): + """A specific position in source.""" + DESCRIPTOR: _descriptor.Descriptor + LOCATION_FIELD_NUMBER: _builtins.int + OFFSET_FIELD_NUMBER: _builtins.int + LINE_FIELD_NUMBER: _builtins.int + COLUMN_FIELD_NUMBER: _builtins.int + location: _builtins.str + 'The soucre location name (e.g. file name).' + offset: _builtins.int + 'The character offset.' + line: _builtins.int + 'The 1-based index of the starting line in the source text\n where the issue occurs, or 0 if unknown.\n ' + column: _builtins.int + 'The 0-based index of the starting position within the line of source text\n where the issue occurs. Only meaningful if line is nonzer..\n ' + + def __init__(self, *, location: _builtins.str=..., offset: _builtins.int=..., line: _builtins.int=..., column: _builtins.int=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['column', b'column', 'line', b'line', 'location', b'location', 'offset', b'offset'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___SourcePosition: _TypeAlias = SourcePosition \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/value_grpc.py b/src/viam/gen/google/api/expr/v1beta1/value_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/expr/v1beta1/value_pb2.py b/src/viam/gen/google/api/expr/v1beta1/value_pb2.py new file mode 100644 index 0000000000..86a9d5f042 --- /dev/null +++ b/src/viam/gen/google/api/expr/v1beta1/value_pb2.py @@ -0,0 +1,27 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1beta1/value.proto') +_sym_db = _symbol_database.Default() +from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#google/api/expr/v1beta1/value.proto\x12\x17google.api.expr.v1beta1\x1a\x19google/protobuf/any.proto\x1a\x1cgoogle/protobuf/struct.proto"\xca\x04\n\x05Value\x12;\n\nnull_value\x18\x01 \x01(\x0e2\x1a.google.protobuf.NullValueH\x00R\tnullValue\x12\x1f\n\nbool_value\x18\x02 \x01(\x08H\x00R\tboolValue\x12!\n\x0bint64_value\x18\x03 \x01(\x03H\x00R\nint64Value\x12#\n\x0cuint64_value\x18\x04 \x01(\x04H\x00R\x0buint64Value\x12#\n\x0cdouble_value\x18\x05 \x01(\x01H\x00R\x0bdoubleValue\x12#\n\x0cstring_value\x18\x06 \x01(\tH\x00R\x0bstringValue\x12!\n\x0bbytes_value\x18\x07 \x01(\x0cH\x00R\nbytesValue\x12C\n\nenum_value\x18\t \x01(\x0b2".google.api.expr.v1beta1.EnumValueH\x00R\tenumValue\x129\n\x0cobject_value\x18\n \x01(\x0b2\x14.google.protobuf.AnyH\x00R\x0bobjectValue\x12@\n\tmap_value\x18\x0b \x01(\x0b2!.google.api.expr.v1beta1.MapValueH\x00R\x08mapValue\x12C\n\nlist_value\x18\x0c \x01(\x0b2".google.api.expr.v1beta1.ListValueH\x00R\tlistValue\x12\x1f\n\ntype_value\x18\x0f \x01(\tH\x00R\ttypeValueB\x06\n\x04kind"5\n\tEnumValue\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value"C\n\tListValue\x126\n\x06values\x18\x01 \x03(\x0b2\x1e.google.api.expr.v1beta1.ValueR\x06values"\xbe\x01\n\x08MapValue\x12A\n\x07entries\x18\x01 \x03(\x0b2\'.google.api.expr.v1beta1.MapValue.EntryR\x07entries\x1ao\n\x05Entry\x120\n\x03key\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1beta1.ValueR\x03key\x124\n\x05value\x18\x02 \x01(\x0b2\x1e.google.api.expr.v1beta1.ValueR\x05valueBk\n\x1bcom.google.api.expr.v1beta1B\nValueProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01b\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.expr.v1beta1.value_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x1bcom.google.api.expr.v1beta1B\nValueProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01' + _globals['_VALUE']._serialized_start = 122 + _globals['_VALUE']._serialized_end = 708 + _globals['_ENUMVALUE']._serialized_start = 710 + _globals['_ENUMVALUE']._serialized_end = 763 + _globals['_LISTVALUE']._serialized_start = 765 + _globals['_LISTVALUE']._serialized_end = 832 + _globals['_MAPVALUE']._serialized_start = 835 + _globals['_MAPVALUE']._serialized_end = 1025 + _globals['_MAPVALUE_ENTRY']._serialized_start = 914 + _globals['_MAPVALUE_ENTRY']._serialized_end = 1025 \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/value_pb2.pyi b/src/viam/gen/google/api/expr/v1beta1/value_pb2.pyi new file mode 100644 index 0000000000..26b5c9b8a9 --- /dev/null +++ b/src/viam/gen/google/api/expr/v1beta1/value_pb2.pyi @@ -0,0 +1,198 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from collections import abc as _abc +from google.protobuf import any_pb2 as _any_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class Value(_message.Message): + """Represents a CEL value. + + This is similar to `google.protobuf.Value`, but can represent CEL's full + range of values. + """ + DESCRIPTOR: _descriptor.Descriptor + NULL_VALUE_FIELD_NUMBER: _builtins.int + BOOL_VALUE_FIELD_NUMBER: _builtins.int + INT64_VALUE_FIELD_NUMBER: _builtins.int + UINT64_VALUE_FIELD_NUMBER: _builtins.int + DOUBLE_VALUE_FIELD_NUMBER: _builtins.int + STRING_VALUE_FIELD_NUMBER: _builtins.int + BYTES_VALUE_FIELD_NUMBER: _builtins.int + ENUM_VALUE_FIELD_NUMBER: _builtins.int + OBJECT_VALUE_FIELD_NUMBER: _builtins.int + MAP_VALUE_FIELD_NUMBER: _builtins.int + LIST_VALUE_FIELD_NUMBER: _builtins.int + TYPE_VALUE_FIELD_NUMBER: _builtins.int + null_value: _struct_pb2.NullValue.ValueType + 'Null value.' + bool_value: _builtins.bool + 'Boolean value.' + int64_value: _builtins.int + 'Signed integer value.' + uint64_value: _builtins.int + 'Unsigned integer value.' + double_value: _builtins.float + 'Floating point value.' + string_value: _builtins.str + 'UTF-8 string value.' + bytes_value: _builtins.bytes + 'Byte string value.' + type_value: _builtins.str + 'A Type value represented by the fully qualified name of the type.' + + @_builtins.property + def enum_value(self) -> Global___EnumValue: + """An enum value.""" + + @_builtins.property + def object_value(self) -> _any_pb2.Any: + """The proto message backing an object value.""" + + @_builtins.property + def map_value(self) -> Global___MapValue: + """Map value.""" + + @_builtins.property + def list_value(self) -> Global___ListValue: + """List value.""" + + def __init__(self, *, null_value: _struct_pb2.NullValue.ValueType=..., bool_value: _builtins.bool=..., int64_value: _builtins.int=..., uint64_value: _builtins.int=..., double_value: _builtins.float=..., string_value: _builtins.str=..., bytes_value: _builtins.bytes=..., enum_value: Global___EnumValue | None=..., object_value: _any_pb2.Any | None=..., map_value: Global___MapValue | None=..., list_value: Global___ListValue | None=..., type_value: _builtins.str=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'double_value', b'double_value', 'enum_value', b'enum_value', 'int64_value', b'int64_value', 'kind', b'kind', 'list_value', b'list_value', 'map_value', b'map_value', 'null_value', b'null_value', 'object_value', b'object_value', 'string_value', b'string_value', 'type_value', b'type_value', 'uint64_value', b'uint64_value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'double_value', b'double_value', 'enum_value', b'enum_value', 'int64_value', b'int64_value', 'kind', b'kind', 'list_value', b'list_value', 'map_value', b'map_value', 'null_value', b'null_value', 'object_value', b'object_value', 'string_value', b'string_value', 'type_value', b'type_value', 'uint64_value', b'uint64_value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + _WhichOneofReturnType_kind: _TypeAlias = _typing.Literal['null_value', 'bool_value', 'int64_value', 'uint64_value', 'double_value', 'string_value', 'bytes_value', 'enum_value', 'object_value', 'map_value', 'list_value', 'type_value'] + _WhichOneofArgType_kind: _TypeAlias = _typing.Literal['kind', b'kind'] + + def WhichOneof(self, oneof_group: _WhichOneofArgType_kind) -> _WhichOneofReturnType_kind | None: + ... +Global___Value: _TypeAlias = Value + +@_typing.final +class EnumValue(_message.Message): + """An enum value.""" + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + type: _builtins.str + 'The fully qualified name of the enum type.' + value: _builtins.int + 'The value of the enum.' + + def __init__(self, *, type: _builtins.str=..., value: _builtins.int=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['type', b'type', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___EnumValue: _TypeAlias = EnumValue + +@_typing.final +class ListValue(_message.Message): + """A list. + + Wrapped in a message so 'not set' and empty can be differentiated, which is + required for use in a 'oneof'. + """ + DESCRIPTOR: _descriptor.Descriptor + VALUES_FIELD_NUMBER: _builtins.int + + @_builtins.property + def values(self) -> _containers.RepeatedCompositeFieldContainer[Global___Value]: + """The ordered values in the list.""" + + def __init__(self, *, values: _abc.Iterable[Global___Value] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['values', b'values'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___ListValue: _TypeAlias = ListValue + +@_typing.final +class MapValue(_message.Message): + """A map. + + Wrapped in a message so 'not set' and empty can be differentiated, which is + required for use in a 'oneof'. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class Entry(_message.Message): + """An entry in the map.""" + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + + @_builtins.property + def key(self) -> Global___Value: + """The key. + + Must be unique with in the map. + Currently only boolean, int, uint, and string values can be keys. + """ + + @_builtins.property + def value(self) -> Global___Value: + """The value.""" + + def __init__(self, *, key: Global___Value | None=..., value: Global___Value | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + ENTRIES_FIELD_NUMBER: _builtins.int + + @_builtins.property + def entries(self) -> _containers.RepeatedCompositeFieldContainer[Global___MapValue.Entry]: + """The set of map entries. + + CEL has fewer restrictions on keys, so a protobuf map represenation + cannot be used. + """ + + def __init__(self, *, entries: _abc.Iterable[Global___MapValue.Entry] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['entries', b'entries'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___MapValue: _TypeAlias = MapValue \ No newline at end of file diff --git a/src/viam/gen/google/api/field_behavior_grpc.py b/src/viam/gen/google/api/field_behavior_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/field_behavior_pb2.py b/src/viam/gen/google/api/field_behavior_pb2.py new file mode 100644 index 0000000000..d6003efe43 --- /dev/null +++ b/src/viam/gen/google/api/field_behavior_pb2.py @@ -0,0 +1,20 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/field_behavior.proto') +_sym_db = _symbol_database.Default() +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fgoogle/api/field_behavior.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto*\xb6\x01\n\rFieldBehavior\x12\x1e\n\x1aFIELD_BEHAVIOR_UNSPECIFIED\x10\x00\x12\x0c\n\x08OPTIONAL\x10\x01\x12\x0c\n\x08REQUIRED\x10\x02\x12\x0f\n\x0bOUTPUT_ONLY\x10\x03\x12\x0e\n\nINPUT_ONLY\x10\x04\x12\r\n\tIMMUTABLE\x10\x05\x12\x12\n\x0eUNORDERED_LIST\x10\x06\x12\x15\n\x11NON_EMPTY_DEFAULT\x10\x07\x12\x0e\n\nIDENTIFIER\x10\x08:d\n\x0efield_behavior\x12\x1d.google.protobuf.FieldOptions\x18\x9c\x08 \x03(\x0e2\x19.google.api.FieldBehaviorB\x02\x10\x00R\rfieldBehaviorBp\n\x0ecom.google.apiB\x12FieldBehaviorProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.field_behavior_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\x12FieldBehaviorProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPI' + _globals['field_behavior']._loaded_options = None + _globals['field_behavior']._serialized_options = b'\x10\x00' + _globals['_FIELDBEHAVIOR']._serialized_start = 82 + _globals['_FIELDBEHAVIOR']._serialized_end = 264 \ No newline at end of file diff --git a/src/viam/gen/google/api/field_behavior_pb2.pyi b/src/viam/gen/google/api/field_behavior_pb2.pyi new file mode 100644 index 0000000000..4f75ecd0b0 --- /dev/null +++ b/src/viam/gen/google/api/field_behavior_pb2.pyi @@ -0,0 +1,86 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pb2 as _descriptor_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf.internal import extension_dict as _extension_dict +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +class _FieldBehavior: + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType + +class _FieldBehaviorEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_FieldBehavior.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor + FIELD_BEHAVIOR_UNSPECIFIED: _FieldBehavior.ValueType + 'Conventional default for enums. Do not use this.' + OPTIONAL: _FieldBehavior.ValueType + 'Specifically denotes a field as optional.\n While all fields in protocol buffers are optional, this may be specified\n for emphasis if appropriate.\n ' + REQUIRED: _FieldBehavior.ValueType + 'Denotes a field as required.\n This indicates that the field **must** be provided as part of the request,\n and failure to do so will cause an error (usually `INVALID_ARGUMENT`).\n ' + OUTPUT_ONLY: _FieldBehavior.ValueType + "Denotes a field as output only.\n This indicates that the field is provided in responses, but including the\n field in a request does nothing (the server *must* ignore it and\n *must not* throw an error as a result of the field's presence).\n " + INPUT_ONLY: _FieldBehavior.ValueType + 'Denotes a field as input only.\n This indicates that the field is provided in requests, and the\n corresponding field is not included in output.\n ' + IMMUTABLE: _FieldBehavior.ValueType + 'Denotes a field as immutable.\n This indicates that the field may be set once in a request to create a\n resource, but may not be changed thereafter.\n ' + UNORDERED_LIST: _FieldBehavior.ValueType + "Denotes that a (repeated) field is an unordered list.\n This indicates that the service may provide the elements of the list\n in any arbitrary order, rather than the order the user originally\n provided. Additionally, the list's order may or may not be stable.\n " + NON_EMPTY_DEFAULT: _FieldBehavior.ValueType + 'Denotes that this field returns a non-empty default value if not set.\n This indicates that if the user provides the empty value in a request,\n a non-empty value will be returned. The user will not be aware of what\n non-empty value to expect.\n ' + IDENTIFIER: _FieldBehavior.ValueType + 'Denotes that the field in a resource (a message annotated with\n google.api.resource) is used in the resource name to uniquely identify the\n resource. For AIP-compliant APIs, this should only be applied to the\n `name` field on the resource.\n\n This behavior should not be applied to references to other resources within\n the message.\n\n The identifier field of resources often have different field behavior\n depending on the request it is embedded in (e.g. for Create methods name\n is optional and unused, while for Update methods it is required). Instead\n of method-specific annotations, only `IDENTIFIER` is required.\n ' + +class FieldBehavior(_FieldBehavior, metaclass=_FieldBehaviorEnumTypeWrapper): + """An indicator of the behavior of a given field (for example, that a field + is required in requests, or given as output but ignored as input). + This **does not** change the behavior in protocol buffers itself; it only + denotes the behavior and may affect how API tooling handles the field. + + Note: This enum **may** receive new values in the future. + """ +FIELD_BEHAVIOR_UNSPECIFIED: FieldBehavior.ValueType +'Conventional default for enums. Do not use this.' +OPTIONAL: FieldBehavior.ValueType +'Specifically denotes a field as optional.\nWhile all fields in protocol buffers are optional, this may be specified\nfor emphasis if appropriate.\n' +REQUIRED: FieldBehavior.ValueType +'Denotes a field as required.\nThis indicates that the field **must** be provided as part of the request,\nand failure to do so will cause an error (usually `INVALID_ARGUMENT`).\n' +OUTPUT_ONLY: FieldBehavior.ValueType +"Denotes a field as output only.\nThis indicates that the field is provided in responses, but including the\nfield in a request does nothing (the server *must* ignore it and\n*must not* throw an error as a result of the field's presence).\n" +INPUT_ONLY: FieldBehavior.ValueType +'Denotes a field as input only.\nThis indicates that the field is provided in requests, and the\ncorresponding field is not included in output.\n' +IMMUTABLE: FieldBehavior.ValueType +'Denotes a field as immutable.\nThis indicates that the field may be set once in a request to create a\nresource, but may not be changed thereafter.\n' +UNORDERED_LIST: FieldBehavior.ValueType +"Denotes that a (repeated) field is an unordered list.\nThis indicates that the service may provide the elements of the list\nin any arbitrary order, rather than the order the user originally\nprovided. Additionally, the list's order may or may not be stable.\n" +NON_EMPTY_DEFAULT: FieldBehavior.ValueType +'Denotes that this field returns a non-empty default value if not set.\nThis indicates that if the user provides the empty value in a request,\na non-empty value will be returned. The user will not be aware of what\nnon-empty value to expect.\n' +IDENTIFIER: FieldBehavior.ValueType +'Denotes that the field in a resource (a message annotated with\ngoogle.api.resource) is used in the resource name to uniquely identify the\nresource. For AIP-compliant APIs, this should only be applied to the\n`name` field on the resource.\n\nThis behavior should not be applied to references to other resources within\nthe message.\n\nThe identifier field of resources often have different field behavior\ndepending on the request it is embedded in (e.g. for Create methods name\nis optional and unused, while for Update methods it is required). Instead\nof method-specific annotations, only `IDENTIFIER` is required.\n' +Global___FieldBehavior: _TypeAlias = FieldBehavior +FIELD_BEHAVIOR_FIELD_NUMBER: _builtins.int +field_behavior: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.FieldOptions, _containers.RepeatedScalarFieldContainer[Global___FieldBehavior.ValueType]] +'A designation of a specific field behavior (required, output only, etc.)\nin protobuf messages.\n\nExamples:\n\n string name = 1 [(google.api.field_behavior) = REQUIRED];\n State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];\n google.protobuf.Duration ttl = 1\n [(google.api.field_behavior) = INPUT_ONLY];\n google.protobuf.Timestamp expire_time = 1\n [(google.api.field_behavior) = OUTPUT_ONLY,\n (google.api.field_behavior) = IMMUTABLE];\n' \ No newline at end of file diff --git a/src/viam/gen/google/api/field_info_grpc.py b/src/viam/gen/google/api/field_info_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/field_info_pb2.py b/src/viam/gen/google/api/field_info_pb2.py new file mode 100644 index 0000000000..d33435587f --- /dev/null +++ b/src/viam/gen/google/api/field_info_pb2.py @@ -0,0 +1,22 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/field_info.proto') +_sym_db = _symbol_database.Default() +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bgoogle/api/field_info.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto"\xda\x01\n\tFieldInfo\x124\n\x06format\x18\x01 \x01(\x0e2\x1c.google.api.FieldInfo.FormatR\x06format\x12D\n\x10referenced_types\x18\x02 \x03(\x0b2\x19.google.api.TypeReferenceR\x0freferencedTypes"Q\n\x06Format\x12\x16\n\x12FORMAT_UNSPECIFIED\x10\x00\x12\t\n\x05UUID4\x10\x01\x12\x08\n\x04IPV4\x10\x02\x12\x08\n\x04IPV6\x10\x03\x12\x10\n\x0cIPV4_OR_IPV6\x10\x04",\n\rTypeReference\x12\x1b\n\ttype_name\x18\x01 \x01(\tR\x08typeName:W\n\nfield_info\x12\x1d.google.protobuf.FieldOptions\x18\xcc\xf1\xf9\x8a\x01 \x01(\x0b2\x15.google.api.FieldInfoR\tfieldInfoBl\n\x0ecom.google.apiB\x0eFieldInfoProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.field_info_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\x0eFieldInfoProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPI' + _globals['_FIELDINFO']._serialized_start = 78 + _globals['_FIELDINFO']._serialized_end = 296 + _globals['_FIELDINFO_FORMAT']._serialized_start = 215 + _globals['_FIELDINFO_FORMAT']._serialized_end = 296 + _globals['_TYPEREFERENCE']._serialized_start = 298 + _globals['_TYPEREFERENCE']._serialized_end = 342 \ No newline at end of file diff --git a/src/viam/gen/google/api/field_info_pb2.pyi b/src/viam/gen/google/api/field_info_pb2.pyi new file mode 100644 index 0000000000..1a427fc3a3 --- /dev/null +++ b/src/viam/gen/google/api/field_info_pb2.pyi @@ -0,0 +1,108 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pb2 as _descriptor_pb2 +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf.internal import extension_dict as _extension_dict +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class FieldInfo(_message.Message): + """Rich semantic information of an API field beyond basic typing.""" + DESCRIPTOR: _descriptor.Descriptor + + class _Format: + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType + + class _FormatEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[FieldInfo._Format.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor + FORMAT_UNSPECIFIED: FieldInfo._Format.ValueType + 'Default, unspecified value.' + UUID4: FieldInfo._Format.ValueType + 'Universally Unique Identifier, version 4, value as defined by\n https://datatracker.ietf.org/doc/html/rfc4122. The value may be\n normalized to entirely lowercase letters. For example, the value\n `F47AC10B-58CC-0372-8567-0E02B2C3D479` would be normalized to\n `f47ac10b-58cc-0372-8567-0e02b2c3d479`.\n ' + IPV4: FieldInfo._Format.ValueType + 'Internet Protocol v4 value as defined by [RFC\n 791](https://datatracker.ietf.org/doc/html/rfc791). The value may be\n condensed, with leading zeros in each octet stripped. For example,\n `001.022.233.040` would be condensed to `1.22.233.40`.\n ' + IPV6: FieldInfo._Format.ValueType + 'Internet Protocol v6 value as defined by [RFC\n 2460](https://datatracker.ietf.org/doc/html/rfc2460). The value may be\n normalized to entirely lowercase letters with zeros compressed, following\n [RFC 5952](https://datatracker.ietf.org/doc/html/rfc5952). For example,\n the value `2001:0DB8:0::0` would be normalized to `2001:db8::`.\n ' + IPV4_OR_IPV6: FieldInfo._Format.ValueType + 'An IP address in either v4 or v6 format as described by the individual\n values defined herein. See the comments on the IPV4 and IPV6 types for\n allowed normalizations of each.\n ' + + class Format(_Format, metaclass=_FormatEnumTypeWrapper): + """The standard format of a field value. The supported formats are all backed + by either an RFC defined by the IETF or a Google-defined AIP. + """ + FORMAT_UNSPECIFIED: FieldInfo.Format.ValueType + 'Default, unspecified value.' + UUID4: FieldInfo.Format.ValueType + 'Universally Unique Identifier, version 4, value as defined by\n https://datatracker.ietf.org/doc/html/rfc4122. The value may be\n normalized to entirely lowercase letters. For example, the value\n `F47AC10B-58CC-0372-8567-0E02B2C3D479` would be normalized to\n `f47ac10b-58cc-0372-8567-0e02b2c3d479`.\n ' + IPV4: FieldInfo.Format.ValueType + 'Internet Protocol v4 value as defined by [RFC\n 791](https://datatracker.ietf.org/doc/html/rfc791). The value may be\n condensed, with leading zeros in each octet stripped. For example,\n `001.022.233.040` would be condensed to `1.22.233.40`.\n ' + IPV6: FieldInfo.Format.ValueType + 'Internet Protocol v6 value as defined by [RFC\n 2460](https://datatracker.ietf.org/doc/html/rfc2460). The value may be\n normalized to entirely lowercase letters with zeros compressed, following\n [RFC 5952](https://datatracker.ietf.org/doc/html/rfc5952). For example,\n the value `2001:0DB8:0::0` would be normalized to `2001:db8::`.\n ' + IPV4_OR_IPV6: FieldInfo.Format.ValueType + 'An IP address in either v4 or v6 format as described by the individual\n values defined herein. See the comments on the IPV4 and IPV6 types for\n allowed normalizations of each.\n ' + FORMAT_FIELD_NUMBER: _builtins.int + REFERENCED_TYPES_FIELD_NUMBER: _builtins.int + format: Global___FieldInfo.Format.ValueType + "The standard format of a field value. This does not explicitly configure\n any API consumer, just documents the API's format for the field it is\n applied to.\n " + + @_builtins.property + def referenced_types(self) -> _containers.RepeatedCompositeFieldContainer[Global___TypeReference]: + """The type(s) that the annotated, generic field may represent. + + Currently, this must only be used on fields of type `google.protobuf.Any`. + Supporting other generic types may be considered in the future. + """ + + def __init__(self, *, format: Global___FieldInfo.Format.ValueType=..., referenced_types: _abc.Iterable[Global___TypeReference] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['format', b'format', 'referenced_types', b'referenced_types'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___FieldInfo: _TypeAlias = FieldInfo + +@_typing.final +class TypeReference(_message.Message): + """A reference to a message type, for use in [FieldInfo][google.api.FieldInfo].""" + DESCRIPTOR: _descriptor.Descriptor + TYPE_NAME_FIELD_NUMBER: _builtins.int + type_name: _builtins.str + 'The name of the type that the annotated, generic field may represent.\n If the type is in the same protobuf package, the value can be the simple\n message name e.g., `"MyMessage"`. Otherwise, the value must be the\n fully-qualified message name e.g., `"google.library.v1.Book"`.\n\n If the type(s) are unknown to the service (e.g. the field accepts generic\n user input), use the wildcard `"*"` to denote this behavior.\n\n See [AIP-202](https://google.aip.dev/202#type-references) for more details.\n ' + + def __init__(self, *, type_name: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['type_name', b'type_name'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___TypeReference: _TypeAlias = TypeReference +FIELD_INFO_FIELD_NUMBER: _builtins.int +field_info: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.FieldOptions, Global___FieldInfo] +'Rich semantic descriptor of an API field beyond the basic typing.\n\nExamples:\n\n string request_id = 1 [(google.api.field_info).format = UUID4];\n string old_ip_address = 2 [(google.api.field_info).format = IPV4];\n string new_ip_address = 3 [(google.api.field_info).format = IPV6];\n string actual_ip_address = 4 [\n (google.api.field_info).format = IPV4_OR_IPV6\n ];\n google.protobuf.Any generic_field = 5 [\n (google.api.field_info).referenced_types = {type_name: "ActualType"},\n (google.api.field_info).referenced_types = {type_name: "OtherType"},\n ];\n google.protobuf.Any generic_user_input = 5 [\n (google.api.field_info).referenced_types = {type_name: "*"},\n ];\n' \ No newline at end of file diff --git a/src/viam/gen/google/api/http_grpc.py b/src/viam/gen/google/api/http_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/http_pb2.py b/src/viam/gen/google/api/http_pb2.py new file mode 100644 index 0000000000..b52a56b198 --- /dev/null +++ b/src/viam/gen/google/api/http_pb2.py @@ -0,0 +1,21 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/http.proto') +_sym_db = _symbol_database.Default() +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15google/api/http.proto\x12\ngoogle.api"y\n\x04Http\x12*\n\x05rules\x18\x01 \x03(\x0b2\x14.google.api.HttpRuleR\x05rules\x12E\n\x1ffully_decode_reserved_expansion\x18\x02 \x01(\x08R\x1cfullyDecodeReservedExpansion"\xda\x02\n\x08HttpRule\x12\x1a\n\x08selector\x18\x01 \x01(\tR\x08selector\x12\x12\n\x03get\x18\x02 \x01(\tH\x00R\x03get\x12\x12\n\x03put\x18\x03 \x01(\tH\x00R\x03put\x12\x14\n\x04post\x18\x04 \x01(\tH\x00R\x04post\x12\x18\n\x06delete\x18\x05 \x01(\tH\x00R\x06delete\x12\x16\n\x05patch\x18\x06 \x01(\tH\x00R\x05patch\x127\n\x06custom\x18\x08 \x01(\x0b2\x1d.google.api.CustomHttpPatternH\x00R\x06custom\x12\x12\n\x04body\x18\x07 \x01(\tR\x04body\x12#\n\rresponse_body\x18\x0c \x01(\tR\x0cresponseBody\x12E\n\x13additional_bindings\x18\x0b \x03(\x0b2\x14.google.api.HttpRuleR\x12additionalBindingsB\t\n\x07pattern";\n\x11CustomHttpPattern\x12\x12\n\x04kind\x18\x01 \x01(\tR\x04kind\x12\x12\n\x04path\x18\x02 \x01(\tR\x04pathBg\n\x0ecom.google.apiB\tHttpProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.http_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\tHttpProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPI' + _globals['_HTTP']._serialized_start = 37 + _globals['_HTTP']._serialized_end = 158 + _globals['_HTTPRULE']._serialized_start = 161 + _globals['_HTTPRULE']._serialized_end = 507 + _globals['_CUSTOMHTTPPATTERN']._serialized_start = 509 + _globals['_CUSTOMHTTPPATTERN']._serialized_end = 568 \ No newline at end of file diff --git a/src/viam/gen/google/api/http_pb2.pyi b/src/viam/gen/google/api/http_pb2.pyi new file mode 100644 index 0000000000..74916b610e --- /dev/null +++ b/src/viam/gen/google/api/http_pb2.pyi @@ -0,0 +1,402 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class Http(_message.Message): + """Defines the HTTP configuration for an API service. It contains a list of + [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method + to one or more HTTP REST API methods. + """ + DESCRIPTOR: _descriptor.Descriptor + RULES_FIELD_NUMBER: _builtins.int + FULLY_DECODE_RESERVED_EXPANSION_FIELD_NUMBER: _builtins.int + fully_decode_reserved_expansion: _builtins.bool + 'When set to true, URL path parameters will be fully URI-decoded except in\n cases of single segment matches in reserved expansion, where "%2F" will be\n left encoded.\n\n The default behavior is to not decode RFC 6570 reserved characters in multi\n segment matches.\n ' + + @_builtins.property + def rules(self) -> _containers.RepeatedCompositeFieldContainer[Global___HttpRule]: + """A list of HTTP configuration rules that apply to individual API methods. + + **NOTE:** All service configuration rules follow "last one wins" order. + """ + + def __init__(self, *, rules: _abc.Iterable[Global___HttpRule] | None=..., fully_decode_reserved_expansion: _builtins.bool=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['fully_decode_reserved_expansion', b'fully_decode_reserved_expansion', 'rules', b'rules'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___Http: _TypeAlias = Http + +@_typing.final +class HttpRule(_message.Message): + """gRPC Transcoding + + gRPC Transcoding is a feature for mapping between a gRPC method and one or + more HTTP REST endpoints. It allows developers to build a single API service + that supports both gRPC APIs and REST APIs. Many systems, including [Google + APIs](https://github.com/googleapis/googleapis), + [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC + Gateway](https://github.com/grpc-ecosystem/grpc-gateway), + and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature + and use it for large scale production services. + + `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies + how different portions of the gRPC request message are mapped to the URL + path, URL query parameters, and HTTP request body. It also controls how the + gRPC response message is mapped to the HTTP response body. `HttpRule` is + typically specified as an `google.api.http` annotation on the gRPC method. + + Each mapping specifies a URL path template and an HTTP method. The path + template may refer to one or more fields in the gRPC request message, as long + as each field is a non-repeated field with a primitive (non-message) type. + The path template controls how fields of the request message are mapped to + the URL path. + + Example: + + service Messaging { + rpc GetMessage(GetMessageRequest) returns (Message) { + option (google.api.http) = { + get: "/v1/{name=messages/*}" + }; + } + } + message GetMessageRequest { + string name = 1; // Mapped to URL path. + } + message Message { + string text = 1; // The resource content. + } + + This enables an HTTP REST to gRPC mapping as below: + + - HTTP: `GET /v1/messages/123456` + - gRPC: `GetMessage(name: "messages/123456")` + + Any fields in the request message which are not bound by the path template + automatically become HTTP query parameters if there is no HTTP request body. + For example: + + service Messaging { + rpc GetMessage(GetMessageRequest) returns (Message) { + option (google.api.http) = { + get:"/v1/messages/{message_id}" + }; + } + } + message GetMessageRequest { + message SubMessage { + string subfield = 1; + } + string message_id = 1; // Mapped to URL path. + int64 revision = 2; // Mapped to URL query parameter `revision`. + SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. + } + + This enables a HTTP JSON to RPC mapping as below: + + - HTTP: `GET /v1/messages/123456?revision=2&sub.subfield=foo` + - gRPC: `GetMessage(message_id: "123456" revision: 2 sub: + SubMessage(subfield: "foo"))` + + Note that fields which are mapped to URL query parameters must have a + primitive type or a repeated primitive type or a non-repeated message type. + In the case of a repeated type, the parameter can be repeated in the URL + as `...?param=A¶m=B`. In the case of a message type, each field of the + message is mapped to a separate parameter, such as + `...?foo.a=A&foo.b=B&foo.c=C`. + + For HTTP methods that allow a request body, the `body` field + specifies the mapping. Consider a REST update method on the + message resource collection: + + service Messaging { + rpc UpdateMessage(UpdateMessageRequest) returns (Message) { + option (google.api.http) = { + patch: "/v1/messages/{message_id}" + body: "message" + }; + } + } + message UpdateMessageRequest { + string message_id = 1; // mapped to the URL + Message message = 2; // mapped to the body + } + + The following HTTP JSON to RPC mapping is enabled, where the + representation of the JSON in the request body is determined by + protos JSON encoding: + + - HTTP: `PATCH /v1/messages/123456 { "text": "Hi!" }` + - gRPC: `UpdateMessage(message_id: "123456" message { text: "Hi!" })` + + The special name `*` can be used in the body mapping to define that + every field not bound by the path template should be mapped to the + request body. This enables the following alternative definition of + the update method: + + service Messaging { + rpc UpdateMessage(Message) returns (Message) { + option (google.api.http) = { + patch: "/v1/messages/{message_id}" + body: "*" + }; + } + } + message Message { + string message_id = 1; + string text = 2; + } + + + The following HTTP JSON to RPC mapping is enabled: + + - HTTP: `PATCH /v1/messages/123456 { "text": "Hi!" }` + - gRPC: `UpdateMessage(message_id: "123456" text: "Hi!")` + + Note that when using `*` in the body mapping, it is not possible to + have HTTP parameters, as all fields not bound by the path end in + the body. This makes this option more rarely used in practice when + defining REST APIs. The common usage of `*` is in custom methods + which don't use the URL at all for transferring data. + + It is possible to define multiple HTTP methods for one RPC by using + the `additional_bindings` option. Example: + + service Messaging { + rpc GetMessage(GetMessageRequest) returns (Message) { + option (google.api.http) = { + get: "/v1/messages/{message_id}" + additional_bindings { + get: "/v1/users/{user_id}/messages/{message_id}" + } + }; + } + } + message GetMessageRequest { + string message_id = 1; + string user_id = 2; + } + + This enables the following two alternative HTTP JSON to RPC mappings: + + - HTTP: `GET /v1/messages/123456` + - gRPC: `GetMessage(message_id: "123456")` + + - HTTP: `GET /v1/users/me/messages/123456` + - gRPC: `GetMessage(user_id: "me" message_id: "123456")` + + Rules for HTTP mapping + + 1. Leaf request fields (recursive expansion nested messages in the request + message) are classified into three categories: + - Fields referred by the path template. They are passed via the URL path. + - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They + are passed via the HTTP + request body. + - All other fields are passed via the URL query parameters, and the + parameter name is the field path in the request message. A repeated + field can be represented as multiple query parameters under the same + name. + 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL + query parameter, all fields + are passed via URL path and HTTP request body. + 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP + request body, all + fields are passed via URL path and URL query parameters. + + Path template syntax + + Template = "/" Segments [ Verb ] ; + Segments = Segment { "/" Segment } ; + Segment = "*" | "**" | LITERAL | Variable ; + Variable = "{" FieldPath [ "=" Segments ] "}" ; + FieldPath = IDENT { "." IDENT } ; + Verb = ":" LITERAL ; + + The syntax `*` matches a single URL path segment. The syntax `**` matches + zero or more URL path segments, which must be the last part of the URL path + except the `Verb`. + + The syntax `Variable` matches part of the URL path as specified by its + template. A variable template must not contain other variables. If a variable + matches a single path segment, its template may be omitted, e.g. `{var}` + is equivalent to `{var=*}`. + + The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` + contains any reserved character, such characters should be percent-encoded + before the matching. + + If a variable contains exactly one path segment, such as `"{var}"` or + `"{var=*}"`, when such a variable is expanded into a URL path on the client + side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The + server side does the reverse decoding. Such variables show up in the + [Discovery + Document](https://developers.google.com/discovery/v1/reference/apis) as + `{var}`. + + If a variable contains multiple path segments, such as `"{var=foo/*}"` + or `"{var=**}"`, when such a variable is expanded into a URL path on the + client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. + The server side does the reverse decoding, except "%2F" and "%2f" are left + unchanged. Such variables show up in the + [Discovery + Document](https://developers.google.com/discovery/v1/reference/apis) as + `{+var}`. + + Using gRPC API Service Configuration + + gRPC API Service Configuration (service config) is a configuration language + for configuring a gRPC service to become a user-facing product. The + service config is simply the YAML representation of the `google.api.Service` + proto message. + + As an alternative to annotating your proto file, you can configure gRPC + transcoding in your service config YAML files. You do this by specifying a + `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same + effect as the proto annotation. This can be particularly useful if you + have a proto that is reused in multiple services. Note that any transcoding + specified in the service config will override any matching transcoding + configuration in the proto. + + The following example selects a gRPC method and applies an `HttpRule` to it: + + http: + rules: + - selector: example.v1.Messaging.GetMessage + get: /v1/messages/{message_id}/{sub.subfield} + + Special notes + + When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the + proto to JSON conversion must follow the [proto3 + specification](https://developers.google.com/protocol-buffers/docs/proto3#json). + + While the single segment variable follows the semantics of + [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String + Expansion, the multi segment variable **does not** follow RFC 6570 Section + 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion + does not expand special characters like `?` and `#`, which would lead + to invalid URLs. As the result, gRPC Transcoding uses a custom encoding + for multi segment variables. + + The path variables **must not** refer to any repeated or mapped field, + because client libraries are not capable of handling such variable expansion. + + The path variables **must not** capture the leading "/" character. The reason + is that the most common use case "{var}" does not capture the leading "/" + character. For consistency, all path variables must share the same behavior. + + Repeated message fields must not be mapped to URL query parameters, because + no client library can support such complicated mapping. + + If an API needs to use a JSON array for request or response body, it can map + the request or response body to a repeated field. However, some gRPC + Transcoding implementations may not support this feature. + """ + DESCRIPTOR: _descriptor.Descriptor + SELECTOR_FIELD_NUMBER: _builtins.int + GET_FIELD_NUMBER: _builtins.int + PUT_FIELD_NUMBER: _builtins.int + POST_FIELD_NUMBER: _builtins.int + DELETE_FIELD_NUMBER: _builtins.int + PATCH_FIELD_NUMBER: _builtins.int + CUSTOM_FIELD_NUMBER: _builtins.int + BODY_FIELD_NUMBER: _builtins.int + RESPONSE_BODY_FIELD_NUMBER: _builtins.int + ADDITIONAL_BINDINGS_FIELD_NUMBER: _builtins.int + selector: _builtins.str + 'Selects a method to which this rule applies.\n\n Refer to [selector][google.api.DocumentationRule.selector] for syntax\n details.\n ' + get: _builtins.str + 'Maps to HTTP GET. Used for listing and getting information about\n resources.\n ' + put: _builtins.str + 'Maps to HTTP PUT. Used for replacing a resource.' + post: _builtins.str + 'Maps to HTTP POST. Used for creating a resource or performing an action.' + delete: _builtins.str + 'Maps to HTTP DELETE. Used for deleting a resource.' + patch: _builtins.str + 'Maps to HTTP PATCH. Used for updating a resource.' + body: _builtins.str + 'The name of the request field whose value is mapped to the HTTP request\n body, or `*` for mapping all request fields not captured by the path\n pattern to the HTTP body, or omitted for not having any HTTP request body.\n\n NOTE: the referred field must be present at the top-level of the request\n message type.\n ' + response_body: _builtins.str + 'Optional. The name of the response field whose value is mapped to the HTTP\n response body. When omitted, the entire response message will be used\n as the HTTP response body.\n\n NOTE: The referred field must be present at the top-level of the response\n message type.\n ' + + @_builtins.property + def custom(self) -> Global___CustomHttpPattern: + """The custom pattern is used for specifying an HTTP method that is not + included in the `pattern` field, such as HEAD, or "*" to leave the + HTTP method unspecified for this rule. The wild-card rule is useful + for services that provide content to Web (HTML) clients. + """ + + @_builtins.property + def additional_bindings(self) -> _containers.RepeatedCompositeFieldContainer[Global___HttpRule]: + """Additional HTTP bindings for the selector. Nested bindings must + not contain an `additional_bindings` field themselves (that is, + the nesting may only be one level deep). + """ + + def __init__(self, *, selector: _builtins.str=..., get: _builtins.str=..., put: _builtins.str=..., post: _builtins.str=..., delete: _builtins.str=..., patch: _builtins.str=..., custom: Global___CustomHttpPattern | None=..., body: _builtins.str=..., response_body: _builtins.str=..., additional_bindings: _abc.Iterable[Global___HttpRule] | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['custom', b'custom', 'delete', b'delete', 'get', b'get', 'patch', b'patch', 'pattern', b'pattern', 'post', b'post', 'put', b'put'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['additional_bindings', b'additional_bindings', 'body', b'body', 'custom', b'custom', 'delete', b'delete', 'get', b'get', 'patch', b'patch', 'pattern', b'pattern', 'post', b'post', 'put', b'put', 'response_body', b'response_body', 'selector', b'selector'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + _WhichOneofReturnType_pattern: _TypeAlias = _typing.Literal['get', 'put', 'post', 'delete', 'patch', 'custom'] + _WhichOneofArgType_pattern: _TypeAlias = _typing.Literal['pattern', b'pattern'] + + def WhichOneof(self, oneof_group: _WhichOneofArgType_pattern) -> _WhichOneofReturnType_pattern | None: + ... +Global___HttpRule: _TypeAlias = HttpRule + +@_typing.final +class CustomHttpPattern(_message.Message): + """A custom pattern is used for defining custom HTTP verb.""" + DESCRIPTOR: _descriptor.Descriptor + KIND_FIELD_NUMBER: _builtins.int + PATH_FIELD_NUMBER: _builtins.int + kind: _builtins.str + 'The name of this custom HTTP verb.' + path: _builtins.str + 'The path matched by this custom verb.' + + def __init__(self, *, kind: _builtins.str=..., path: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['kind', b'kind', 'path', b'path'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___CustomHttpPattern: _TypeAlias = CustomHttpPattern \ No newline at end of file diff --git a/src/viam/gen/google/api/httpbody_grpc.py b/src/viam/gen/google/api/httpbody_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/httpbody_pb2.py b/src/viam/gen/google/api/httpbody_pb2.py new file mode 100644 index 0000000000..f623edd796 --- /dev/null +++ b/src/viam/gen/google/api/httpbody_pb2.py @@ -0,0 +1,18 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/httpbody.proto') +_sym_db = _symbol_database.Default() +from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19google/api/httpbody.proto\x12\ngoogle.api\x1a\x19google/protobuf/any.proto"w\n\x08HttpBody\x12!\n\x0ccontent_type\x18\x01 \x01(\tR\x0bcontentType\x12\x12\n\x04data\x18\x02 \x01(\x0cR\x04data\x124\n\nextensions\x18\x03 \x03(\x0b2\x14.google.protobuf.AnyR\nextensionsBe\n\x0ecom.google.apiB\rHttpBodyProtoP\x01Z;google.golang.org/genproto/googleapis/api/httpbody;httpbody\xa2\x02\x04GAPIb\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.httpbody_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\rHttpBodyProtoP\x01Z;google.golang.org/genproto/googleapis/api/httpbody;httpbody\xa2\x02\x04GAPI' + _globals['_HTTPBODY']._serialized_start = 68 + _globals['_HTTPBODY']._serialized_end = 187 \ No newline at end of file diff --git a/src/viam/gen/google/api/httpbody_pb2.pyi b/src/viam/gen/google/api/httpbody_pb2.pyi new file mode 100644 index 0000000000..0a1d564482 --- /dev/null +++ b/src/viam/gen/google/api/httpbody_pb2.pyi @@ -0,0 +1,99 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from collections import abc as _abc +from google.protobuf import any_pb2 as _any_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class HttpBody(_message.Message): + """Message that represents an arbitrary HTTP body. It should only be used for + payload formats that can't be represented as JSON, such as raw binary or + an HTML page. + + + This message can be used both in streaming and non-streaming API methods in + the request as well as the response. + + It can be used as a top-level request field, which is convenient if one + wants to extract parameters from either the URL or HTTP template into the + request fields and also want access to the raw HTTP body. + + Example: + + message GetResourceRequest { + // A unique request id. + string request_id = 1; + + // The raw HTTP body is bound to this field. + google.api.HttpBody http_body = 2; + + } + + service ResourceService { + rpc GetResource(GetResourceRequest) + returns (google.api.HttpBody); + rpc UpdateResource(google.api.HttpBody) + returns (google.protobuf.Empty); + + } + + Example with streaming methods: + + service CaldavService { + rpc GetCalendar(stream google.api.HttpBody) + returns (stream google.api.HttpBody); + rpc UpdateCalendar(stream google.api.HttpBody) + returns (stream google.api.HttpBody); + + } + + Use of this type only changes how the request and response bodies are + handled, all other features will continue to work unchanged. + """ + DESCRIPTOR: _descriptor.Descriptor + CONTENT_TYPE_FIELD_NUMBER: _builtins.int + DATA_FIELD_NUMBER: _builtins.int + EXTENSIONS_FIELD_NUMBER: _builtins.int + content_type: _builtins.str + 'The HTTP Content-Type header value specifying the content type of the body.' + data: _builtins.bytes + 'The HTTP request/response body as raw binary.' + + @_builtins.property + def extensions(self) -> _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]: + """Application specific response metadata. Must be set in the first response + for streaming APIs. + """ + + def __init__(self, *, content_type: _builtins.str=..., data: _builtins.bytes=..., extensions: _abc.Iterable[_any_pb2.Any] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['content_type', b'content_type', 'data', b'data', 'extensions', b'extensions'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___HttpBody: _TypeAlias = HttpBody \ No newline at end of file diff --git a/src/viam/gen/google/api/launch_stage_grpc.py b/src/viam/gen/google/api/launch_stage_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/launch_stage_pb2.py b/src/viam/gen/google/api/launch_stage_pb2.py new file mode 100644 index 0000000000..2d6669f3e2 --- /dev/null +++ b/src/viam/gen/google/api/launch_stage_pb2.py @@ -0,0 +1,17 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/launch_stage.proto') +_sym_db = _symbol_database.Default() +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dgoogle/api/launch_stage.proto\x12\ngoogle.api*\x8c\x01\n\x0bLaunchStage\x12\x1c\n\x18LAUNCH_STAGE_UNSPECIFIED\x10\x00\x12\x11\n\rUNIMPLEMENTED\x10\x06\x12\r\n\tPRELAUNCH\x10\x07\x12\x10\n\x0cEARLY_ACCESS\x10\x01\x12\t\n\x05ALPHA\x10\x02\x12\x08\n\x04BETA\x10\x03\x12\x06\n\x02GA\x10\x04\x12\x0e\n\nDEPRECATED\x10\x05BZ\n\x0ecom.google.apiB\x10LaunchStageProtoP\x01Z-google.golang.org/genproto/googleapis/api;api\xa2\x02\x04GAPIb\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.launch_stage_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\x10LaunchStageProtoP\x01Z-google.golang.org/genproto/googleapis/api;api\xa2\x02\x04GAPI' + _globals['_LAUNCHSTAGE']._serialized_start = 46 + _globals['_LAUNCHSTAGE']._serialized_end = 186 \ No newline at end of file diff --git a/src/viam/gen/google/api/launch_stage_pb2.pyi b/src/viam/gen/google/api/launch_stage_pb2.pyi new file mode 100644 index 0000000000..7141c66634 --- /dev/null +++ b/src/viam/gen/google/api/launch_stage_pb2.pyi @@ -0,0 +1,72 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from google.protobuf import descriptor as _descriptor +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +class _LaunchStage: + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType + +class _LaunchStageEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_LaunchStage.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor + LAUNCH_STAGE_UNSPECIFIED: _LaunchStage.ValueType + 'Do not use this default value.' + UNIMPLEMENTED: _LaunchStage.ValueType + 'The feature is not yet implemented. Users can not use it.' + PRELAUNCH: _LaunchStage.ValueType + 'Prelaunch features are hidden from users and are only visible internally.' + EARLY_ACCESS: _LaunchStage.ValueType + 'Early Access features are limited to a closed group of testers. To use\n these features, you must sign up in advance and sign a Trusted Tester\n agreement (which includes confidentiality provisions). These features may\n be unstable, changed in backward-incompatible ways, and are not\n guaranteed to be released.\n ' + ALPHA: _LaunchStage.ValueType + "Alpha is a limited availability test for releases before they are cleared\n for widespread use. By Alpha, all significant design issues are resolved\n and we are in the process of verifying functionality. Alpha customers\n need to apply for access, agree to applicable terms, and have their\n projects allowlisted. Alpha releases don't have to be feature complete,\n no SLAs are provided, and there are no technical support obligations, but\n they will be far enough along that customers can actually use them in\n test environments or for limited-use tests -- just like they would in\n normal production cases.\n " + BETA: _LaunchStage.ValueType + 'Beta is the point at which we are ready to open a release for any\n customer to use. There are no SLA or technical support obligations in a\n Beta release. Products will be complete from a feature perspective, but\n may have some open outstanding issues. Beta releases are suitable for\n limited production use cases.\n ' + GA: _LaunchStage.ValueType + 'GA features are open to all developers and are considered stable and\n fully qualified for production use.\n ' + DEPRECATED: _LaunchStage.ValueType + 'Deprecated features are scheduled to be shut down and removed. For more\n information, see the "Deprecation Policy" section of our [Terms of\n Service](https://cloud.google.com/terms/)\n and the [Google Cloud Platform Subject to the Deprecation\n Policy](https://cloud.google.com/terms/deprecation) documentation.\n ' + +class LaunchStage(_LaunchStage, metaclass=_LaunchStageEnumTypeWrapper): + """The launch stage as defined by [Google Cloud Platform + Launch Stages](https://cloud.google.com/terms/launch-stages). + """ +LAUNCH_STAGE_UNSPECIFIED: LaunchStage.ValueType +'Do not use this default value.' +UNIMPLEMENTED: LaunchStage.ValueType +'The feature is not yet implemented. Users can not use it.' +PRELAUNCH: LaunchStage.ValueType +'Prelaunch features are hidden from users and are only visible internally.' +EARLY_ACCESS: LaunchStage.ValueType +'Early Access features are limited to a closed group of testers. To use\nthese features, you must sign up in advance and sign a Trusted Tester\nagreement (which includes confidentiality provisions). These features may\nbe unstable, changed in backward-incompatible ways, and are not\nguaranteed to be released.\n' +ALPHA: LaunchStage.ValueType +"Alpha is a limited availability test for releases before they are cleared\nfor widespread use. By Alpha, all significant design issues are resolved\nand we are in the process of verifying functionality. Alpha customers\nneed to apply for access, agree to applicable terms, and have their\nprojects allowlisted. Alpha releases don't have to be feature complete,\nno SLAs are provided, and there are no technical support obligations, but\nthey will be far enough along that customers can actually use them in\ntest environments or for limited-use tests -- just like they would in\nnormal production cases.\n" +BETA: LaunchStage.ValueType +'Beta is the point at which we are ready to open a release for any\ncustomer to use. There are no SLA or technical support obligations in a\nBeta release. Products will be complete from a feature perspective, but\nmay have some open outstanding issues. Beta releases are suitable for\nlimited production use cases.\n' +GA: LaunchStage.ValueType +'GA features are open to all developers and are considered stable and\nfully qualified for production use.\n' +DEPRECATED: LaunchStage.ValueType +'Deprecated features are scheduled to be shut down and removed. For more\ninformation, see the "Deprecation Policy" section of our [Terms of\nService](https://cloud.google.com/terms/)\nand the [Google Cloud Platform Subject to the Deprecation\nPolicy](https://cloud.google.com/terms/deprecation) documentation.\n' +Global___LaunchStage: _TypeAlias = LaunchStage \ No newline at end of file diff --git a/src/viam/gen/google/api/resource_grpc.py b/src/viam/gen/google/api/resource_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/resource_pb2.py b/src/viam/gen/google/api/resource_pb2.py new file mode 100644 index 0000000000..8ac8b7c1c5 --- /dev/null +++ b/src/viam/gen/google/api/resource_pb2.py @@ -0,0 +1,24 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/resource.proto') +_sym_db = _symbol_database.Default() +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19google/api/resource.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto"\xaa\x03\n\x12ResourceDescriptor\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x18\n\x07pattern\x18\x02 \x03(\tR\x07pattern\x12\x1d\n\nname_field\x18\x03 \x01(\tR\tnameField\x12@\n\x07history\x18\x04 \x01(\x0e2&.google.api.ResourceDescriptor.HistoryR\x07history\x12\x16\n\x06plural\x18\x05 \x01(\tR\x06plural\x12\x1a\n\x08singular\x18\x06 \x01(\tR\x08singular\x12:\n\x05style\x18\n \x03(\x0e2$.google.api.ResourceDescriptor.StyleR\x05style"[\n\x07History\x12\x17\n\x13HISTORY_UNSPECIFIED\x10\x00\x12\x1d\n\x19ORIGINALLY_SINGLE_PATTERN\x10\x01\x12\x18\n\x14FUTURE_MULTI_PATTERN\x10\x02"8\n\x05Style\x12\x15\n\x11STYLE_UNSPECIFIED\x10\x00\x12\x18\n\x14DECLARATIVE_FRIENDLY\x10\x01"F\n\x11ResourceReference\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x1d\n\nchild_type\x18\x02 \x01(\tR\tchildType:l\n\x12resource_reference\x12\x1d.google.protobuf.FieldOptions\x18\x9f\x08 \x01(\x0b2\x1d.google.api.ResourceReferenceR\x11resourceReference:n\n\x13resource_definition\x12\x1c.google.protobuf.FileOptions\x18\x9d\x08 \x03(\x0b2\x1e.google.api.ResourceDescriptorR\x12resourceDefinition:\\\n\x08resource\x12\x1f.google.protobuf.MessageOptions\x18\x9d\x08 \x01(\x0b2\x1e.google.api.ResourceDescriptorR\x08resourceBk\n\x0ecom.google.apiB\rResourceProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.resource_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\rResourceProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPI' + _globals['_RESOURCEDESCRIPTOR']._serialized_start = 76 + _globals['_RESOURCEDESCRIPTOR']._serialized_end = 502 + _globals['_RESOURCEDESCRIPTOR_HISTORY']._serialized_start = 353 + _globals['_RESOURCEDESCRIPTOR_HISTORY']._serialized_end = 444 + _globals['_RESOURCEDESCRIPTOR_STYLE']._serialized_start = 446 + _globals['_RESOURCEDESCRIPTOR_STYLE']._serialized_end = 502 + _globals['_RESOURCEREFERENCE']._serialized_start = 504 + _globals['_RESOURCEREFERENCE']._serialized_end = 574 \ No newline at end of file diff --git a/src/viam/gen/google/api/resource_pb2.pyi b/src/viam/gen/google/api/resource_pb2.pyi new file mode 100644 index 0000000000..8e6b8ce2c4 --- /dev/null +++ b/src/viam/gen/google/api/resource_pb2.pyi @@ -0,0 +1,211 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pb2 as _descriptor_pb2 +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf.internal import extension_dict as _extension_dict +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class ResourceDescriptor(_message.Message): + """A simple descriptor of a resource type. + + ResourceDescriptor annotates a resource message (either by means of a + protobuf annotation or use in the service config), and associates the + resource's schema, the resource type, and the pattern of the resource name. + + Example: + + message Topic { + // Indicates this message defines a resource schema. + // Declares the resource type in the format of {service}/{kind}. + // For Kubernetes resources, the format is {api group}/{kind}. + option (google.api.resource) = { + type: "pubsub.googleapis.com/Topic" + pattern: "projects/{project}/topics/{topic}" + }; + } + + The ResourceDescriptor Yaml config will look like: + + resources: + - type: "pubsub.googleapis.com/Topic" + pattern: "projects/{project}/topics/{topic}" + + Sometimes, resources have multiple patterns, typically because they can + live under multiple parents. + + Example: + + message LogEntry { + option (google.api.resource) = { + type: "logging.googleapis.com/LogEntry" + pattern: "projects/{project}/logs/{log}" + pattern: "folders/{folder}/logs/{log}" + pattern: "organizations/{organization}/logs/{log}" + pattern: "billingAccounts/{billing_account}/logs/{log}" + }; + } + + The ResourceDescriptor Yaml config will look like: + + resources: + - type: 'logging.googleapis.com/LogEntry' + pattern: "projects/{project}/logs/{log}" + pattern: "folders/{folder}/logs/{log}" + pattern: "organizations/{organization}/logs/{log}" + pattern: "billingAccounts/{billing_account}/logs/{log}" + """ + DESCRIPTOR: _descriptor.Descriptor + + class _History: + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType + + class _HistoryEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[ResourceDescriptor._History.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor + HISTORY_UNSPECIFIED: ResourceDescriptor._History.ValueType + 'The "unset" value.' + ORIGINALLY_SINGLE_PATTERN: ResourceDescriptor._History.ValueType + 'The resource originally had one pattern and launched as such, and\n additional patterns were added later.\n ' + FUTURE_MULTI_PATTERN: ResourceDescriptor._History.ValueType + 'The resource has one pattern, but the API owner expects to add more\n later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents\n that from being necessary once there are multiple patterns.)\n ' + + class History(_History, metaclass=_HistoryEnumTypeWrapper): + """A description of the historical or future-looking state of the + resource pattern. + """ + HISTORY_UNSPECIFIED: ResourceDescriptor.History.ValueType + 'The "unset" value.' + ORIGINALLY_SINGLE_PATTERN: ResourceDescriptor.History.ValueType + 'The resource originally had one pattern and launched as such, and\n additional patterns were added later.\n ' + FUTURE_MULTI_PATTERN: ResourceDescriptor.History.ValueType + 'The resource has one pattern, but the API owner expects to add more\n later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents\n that from being necessary once there are multiple patterns.)\n ' + + class _Style: + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType + + class _StyleEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[ResourceDescriptor._Style.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor + STYLE_UNSPECIFIED: ResourceDescriptor._Style.ValueType + 'The unspecified value. Do not use.' + DECLARATIVE_FRIENDLY: ResourceDescriptor._Style.ValueType + 'This resource is intended to be "declarative-friendly".\n\n Declarative-friendly resources must be more strictly consistent, and\n setting this to true communicates to tools that this resource should\n adhere to declarative-friendly expectations.\n\n Note: This is used by the API linter (linter.aip.dev) to enable\n additional checks.\n ' + + class Style(_Style, metaclass=_StyleEnumTypeWrapper): + """A flag representing a specific style that a resource claims to conform to.""" + STYLE_UNSPECIFIED: ResourceDescriptor.Style.ValueType + 'The unspecified value. Do not use.' + DECLARATIVE_FRIENDLY: ResourceDescriptor.Style.ValueType + 'This resource is intended to be "declarative-friendly".\n\n Declarative-friendly resources must be more strictly consistent, and\n setting this to true communicates to tools that this resource should\n adhere to declarative-friendly expectations.\n\n Note: This is used by the API linter (linter.aip.dev) to enable\n additional checks.\n ' + TYPE_FIELD_NUMBER: _builtins.int + PATTERN_FIELD_NUMBER: _builtins.int + NAME_FIELD_FIELD_NUMBER: _builtins.int + HISTORY_FIELD_NUMBER: _builtins.int + PLURAL_FIELD_NUMBER: _builtins.int + SINGULAR_FIELD_NUMBER: _builtins.int + STYLE_FIELD_NUMBER: _builtins.int + type: _builtins.str + 'The resource type. It must be in the format of\n {service_name}/{resource_type_kind}. The `resource_type_kind` must be\n singular and must not include version numbers.\n\n Example: `storage.googleapis.com/Bucket`\n\n The value of the resource_type_kind must follow the regular expression\n /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and\n should use PascalCase (UpperCamelCase). The maximum number of\n characters allowed for the `resource_type_kind` is 100.\n ' + name_field: _builtins.str + 'Optional. The field on the resource that designates the resource name\n field. If omitted, this is assumed to be "name".\n ' + history: Global___ResourceDescriptor.History.ValueType + 'Optional. The historical or future-looking state of the resource pattern.\n\n Example:\n\n // The InspectTemplate message originally only supported resource\n // names with organization, and project was added later.\n message InspectTemplate {\n option (google.api.resource) = {\n type: "dlp.googleapis.com/InspectTemplate"\n pattern:\n "organizations/{organization}/inspectTemplates/{inspect_template}"\n pattern: "projects/{project}/inspectTemplates/{inspect_template}"\n history: ORIGINALLY_SINGLE_PATTERN\n };\n }\n ' + plural: _builtins.str + "The plural name used in the resource name and permission names, such as\n 'projects' for the resource name of 'projects/{project}' and the permission\n name of 'cloudresourcemanager.googleapis.com/projects.get'. One exception\n to this is for Nested Collections that have stuttering names, as defined\n in [AIP-122](https://google.aip.dev/122#nested-collections), where the\n collection ID in the resource name pattern does not necessarily directly\n match the `plural` value.\n\n It is the same concept of the `plural` field in k8s CRD spec\n https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/\n\n Note: The plural form is required even for singleton resources. See\n https://aip.dev/156\n " + singular: _builtins.str + 'The same concept of the `singular` field in k8s CRD spec\n https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/\n Such as "project" for the `resourcemanager.googleapis.com/Project` type.\n ' + + @_builtins.property + def pattern(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + """Optional. The relative resource name pattern associated with this resource + type. The DNS prefix of the full resource name shouldn't be specified here. + + The path pattern must follow the syntax, which aligns with HTTP binding + syntax: + + Template = Segment { "/" Segment } ; + Segment = LITERAL | Variable ; + Variable = "{" LITERAL "}" ; + + Examples: + + - "projects/{project}/topics/{topic}" + - "projects/{project}/knowledgeBases/{knowledge_base}" + + The components in braces correspond to the IDs for each resource in the + hierarchy. It is expected that, if multiple patterns are provided, + the same component name (e.g. "project") refers to IDs of the same + type of resource. + """ + + @_builtins.property + def style(self) -> _containers.RepeatedScalarFieldContainer[Global___ResourceDescriptor.Style.ValueType]: + """Style flag(s) for this resource. + These indicate that a resource is expected to conform to a given + style. See the specific style flags for additional information. + """ + + def __init__(self, *, type: _builtins.str=..., pattern: _abc.Iterable[_builtins.str] | None=..., name_field: _builtins.str=..., history: Global___ResourceDescriptor.History.ValueType=..., plural: _builtins.str=..., singular: _builtins.str=..., style: _abc.Iterable[Global___ResourceDescriptor.Style.ValueType] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['history', b'history', 'name_field', b'name_field', 'pattern', b'pattern', 'plural', b'plural', 'singular', b'singular', 'style', b'style', 'type', b'type'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___ResourceDescriptor: _TypeAlias = ResourceDescriptor + +@_typing.final +class ResourceReference(_message.Message): + """Defines a proto annotation that describes a string field that refers to + an API resource. + """ + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + CHILD_TYPE_FIELD_NUMBER: _builtins.int + type: _builtins.str + 'The resource type that the annotated field references.\n\n Example:\n\n message Subscription {\n string topic = 2 [(google.api.resource_reference) = {\n type: "pubsub.googleapis.com/Topic"\n }];\n }\n\n Occasionally, a field may reference an arbitrary resource. In this case,\n APIs use the special value * in their resource reference.\n\n Example:\n\n message GetIamPolicyRequest {\n string resource = 2 [(google.api.resource_reference) = {\n type: "*"\n }];\n }\n ' + child_type: _builtins.str + 'The resource type of a child collection that the annotated field\n references. This is useful for annotating the `parent` field that\n doesn\'t have a fixed resource type.\n\n Example:\n\n message ListLogEntriesRequest {\n string parent = 1 [(google.api.resource_reference) = {\n child_type: "logging.googleapis.com/LogEntry"\n };\n }\n ' + + def __init__(self, *, type: _builtins.str=..., child_type: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['child_type', b'child_type', 'type', b'type'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___ResourceReference: _TypeAlias = ResourceReference +RESOURCE_REFERENCE_FIELD_NUMBER: _builtins.int +RESOURCE_DEFINITION_FIELD_NUMBER: _builtins.int +RESOURCE_FIELD_NUMBER: _builtins.int +resource_reference: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.FieldOptions, Global___ResourceReference] +'An annotation that describes a resource reference, see\n[ResourceReference][].\n' +resource_definition: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.FileOptions, _containers.RepeatedCompositeFieldContainer[Global___ResourceDescriptor]] +'An annotation that describes a resource definition without a corresponding\nmessage; see [ResourceDescriptor][].\n' +resource: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.MessageOptions, Global___ResourceDescriptor] +'An annotation that describes a resource definition, see\n[ResourceDescriptor][].\n' \ No newline at end of file diff --git a/src/viam/gen/google/api/routing_grpc.py b/src/viam/gen/google/api/routing_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/routing_pb2.py b/src/viam/gen/google/api/routing_pb2.py new file mode 100644 index 0000000000..497d6e0579 --- /dev/null +++ b/src/viam/gen/google/api/routing_pb2.py @@ -0,0 +1,20 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/routing.proto') +_sym_db = _symbol_database.Default() +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18google/api/routing.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto"Z\n\x0bRoutingRule\x12K\n\x12routing_parameters\x18\x02 \x03(\x0b2\x1c.google.api.RoutingParameterR\x11routingParameters"M\n\x10RoutingParameter\x12\x14\n\x05field\x18\x01 \x01(\tR\x05field\x12#\n\rpath_template\x18\x02 \x01(\tR\x0cpathTemplate:T\n\x07routing\x12\x1e.google.protobuf.MethodOptions\x18\xb1\xca\xbc" \x01(\x0b2\x17.google.api.RoutingRuleR\x07routingBj\n\x0ecom.google.apiB\x0cRoutingProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.routing_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\x0cRoutingProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPI' + _globals['_ROUTINGRULE']._serialized_start = 74 + _globals['_ROUTINGRULE']._serialized_end = 164 + _globals['_ROUTINGPARAMETER']._serialized_start = 166 + _globals['_ROUTINGPARAMETER']._serialized_end = 243 \ No newline at end of file diff --git a/src/viam/gen/google/api/routing_pb2.pyi b/src/viam/gen/google/api/routing_pb2.pyi new file mode 100644 index 0000000000..7bdde1af80 --- /dev/null +++ b/src/viam/gen/google/api/routing_pb2.pyi @@ -0,0 +1,436 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pb2 as _descriptor_pb2 +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import extension_dict as _extension_dict +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class RoutingRule(_message.Message): + """Specifies the routing information that should be sent along with the request + in the form of routing header. + **NOTE:** All service configuration rules follow the "last one wins" order. + + The examples below will apply to an RPC which has the following request type: + + Message Definition: + + message Request { + // The name of the Table + // Values can be of the following formats: + // - `projects//tables/` + // - `projects//instances//tables/
` + // - `region//zones//tables/
` + string table_name = 1; + + // This value specifies routing for replication. + // It can be in the following formats: + // - `profiles/` + // - a legacy `profile_id` that can be any string + string app_profile_id = 2; + } + + Example message: + + { + table_name: projects/proj_foo/instances/instance_bar/table/table_baz, + app_profile_id: profiles/prof_qux + } + + The routing header consists of one or multiple key-value pairs. Every key + and value must be percent-encoded, and joined together in the format of + `key1=value1&key2=value2`. + The examples below skip the percent-encoding for readability. + + Example 1 + + Extracting a field from the request to put into the routing header + unchanged, with the key equal to the field name. + + annotation: + + option (google.api.routing) = { + // Take the `app_profile_id`. + routing_parameters { + field: "app_profile_id" + } + }; + + result: + + x-goog-request-params: app_profile_id=profiles/prof_qux + + Example 2 + + Extracting a field from the request to put into the routing header + unchanged, with the key different from the field name. + + annotation: + + option (google.api.routing) = { + // Take the `app_profile_id`, but name it `routing_id` in the header. + routing_parameters { + field: "app_profile_id" + path_template: "{routing_id=**}" + } + }; + + result: + + x-goog-request-params: routing_id=profiles/prof_qux + + Example 3 + + Extracting a field from the request to put into the routing + header, while matching a path template syntax on the field's value. + + NB: it is more useful to send nothing than to send garbage for the purpose + of dynamic routing, since garbage pollutes cache. Thus the matching. + + Sub-example 3a + + The field matches the template. + + annotation: + + option (google.api.routing) = { + // Take the `table_name`, if it's well-formed (with project-based + // syntax). + routing_parameters { + field: "table_name" + path_template: "{table_name=projects/*/instances/*/**}" + } + }; + + result: + + x-goog-request-params: + table_name=projects/proj_foo/instances/instance_bar/table/table_baz + + Sub-example 3b + + The field does not match the template. + + annotation: + + option (google.api.routing) = { + // Take the `table_name`, if it's well-formed (with region-based + // syntax). + routing_parameters { + field: "table_name" + path_template: "{table_name=regions/*/zones/*/**}" + } + }; + + result: + + + + Sub-example 3c + + Multiple alternative conflictingly named path templates are + specified. The one that matches is used to construct the header. + + annotation: + + option (google.api.routing) = { + // Take the `table_name`, if it's well-formed, whether + // using the region- or projects-based syntax. + + routing_parameters { + field: "table_name" + path_template: "{table_name=regions/*/zones/*/**}" + } + routing_parameters { + field: "table_name" + path_template: "{table_name=projects/*/instances/*/**}" + } + }; + + result: + + x-goog-request-params: + table_name=projects/proj_foo/instances/instance_bar/table/table_baz + + Example 4 + + Extracting a single routing header key-value pair by matching a + template syntax on (a part of) a single request field. + + annotation: + + option (google.api.routing) = { + // Take just the project id from the `table_name` field. + routing_parameters { + field: "table_name" + path_template: "{routing_id=projects/*}/**" + } + }; + + result: + + x-goog-request-params: routing_id=projects/proj_foo + + Example 5 + + Extracting a single routing header key-value pair by matching + several conflictingly named path templates on (parts of) a single request + field. The last template to match "wins" the conflict. + + annotation: + + option (google.api.routing) = { + // If the `table_name` does not have instances information, + // take just the project id for routing. + // Otherwise take project + instance. + + routing_parameters { + field: "table_name" + path_template: "{routing_id=projects/*}/**" + } + routing_parameters { + field: "table_name" + path_template: "{routing_id=projects/*/instances/*}/**" + } + }; + + result: + + x-goog-request-params: + routing_id=projects/proj_foo/instances/instance_bar + + Example 6 + + Extracting multiple routing header key-value pairs by matching + several non-conflicting path templates on (parts of) a single request field. + + Sub-example 6a + + Make the templates strict, so that if the `table_name` does not + have an instance information, nothing is sent. + + annotation: + + option (google.api.routing) = { + // The routing code needs two keys instead of one composite + // but works only for the tables with the "project-instance" name + // syntax. + + routing_parameters { + field: "table_name" + path_template: "{project_id=projects/*}/instances/*/**" + } + routing_parameters { + field: "table_name" + path_template: "projects/*/{instance_id=instances/*}/**" + } + }; + + result: + + x-goog-request-params: + project_id=projects/proj_foo&instance_id=instances/instance_bar + + Sub-example 6b + + Make the templates loose, so that if the `table_name` does not + have an instance information, just the project id part is sent. + + annotation: + + option (google.api.routing) = { + // The routing code wants two keys instead of one composite + // but will work with just the `project_id` for tables without + // an instance in the `table_name`. + + routing_parameters { + field: "table_name" + path_template: "{project_id=projects/*}/**" + } + routing_parameters { + field: "table_name" + path_template: "projects/*/{instance_id=instances/*}/**" + } + }; + + result (is the same as 6a for our example message because it has the instance + information): + + x-goog-request-params: + project_id=projects/proj_foo&instance_id=instances/instance_bar + + Example 7 + + Extracting multiple routing header key-value pairs by matching + several path templates on multiple request fields. + + NB: note that here there is no way to specify sending nothing if one of the + fields does not match its template. E.g. if the `table_name` is in the wrong + format, the `project_id` will not be sent, but the `routing_id` will be. + The backend routing code has to be aware of that and be prepared to not + receive a full complement of keys if it expects multiple. + + annotation: + + option (google.api.routing) = { + // The routing needs both `project_id` and `routing_id` + // (from the `app_profile_id` field) for routing. + + routing_parameters { + field: "table_name" + path_template: "{project_id=projects/*}/**" + } + routing_parameters { + field: "app_profile_id" + path_template: "{routing_id=**}" + } + }; + + result: + + x-goog-request-params: + project_id=projects/proj_foo&routing_id=profiles/prof_qux + + Example 8 + + Extracting a single routing header key-value pair by matching + several conflictingly named path templates on several request fields. The + last template to match "wins" the conflict. + + annotation: + + option (google.api.routing) = { + // The `routing_id` can be a project id or a region id depending on + // the table name format, but only if the `app_profile_id` is not set. + // If `app_profile_id` is set it should be used instead. + + routing_parameters { + field: "table_name" + path_template: "{routing_id=projects/*}/**" + } + routing_parameters { + field: "table_name" + path_template: "{routing_id=regions/*}/**" + } + routing_parameters { + field: "app_profile_id" + path_template: "{routing_id=**}" + } + }; + + result: + + x-goog-request-params: routing_id=profiles/prof_qux + + Example 9 + + Bringing it all together. + + annotation: + + option (google.api.routing) = { + // For routing both `table_location` and a `routing_id` are needed. + // + // table_location can be either an instance id or a region+zone id. + // + // For `routing_id`, take the value of `app_profile_id` + // - If it's in the format `profiles/`, send + // just the `` part. + // - If it's any other literal, send it as is. + // If the `app_profile_id` is empty, and the `table_name` starts with + // the project_id, send that instead. + + routing_parameters { + field: "table_name" + path_template: "projects/*/{table_location=instances/*}/tables/*" + } + routing_parameters { + field: "table_name" + path_template: "{table_location=regions/*/zones/*}/tables/*" + } + routing_parameters { + field: "table_name" + path_template: "{routing_id=projects/*}/**" + } + routing_parameters { + field: "app_profile_id" + path_template: "{routing_id=**}" + } + routing_parameters { + field: "app_profile_id" + path_template: "profiles/{routing_id=*}" + } + }; + + result: + + x-goog-request-params: + table_location=instances/instance_bar&routing_id=prof_qux + """ + DESCRIPTOR: _descriptor.Descriptor + ROUTING_PARAMETERS_FIELD_NUMBER: _builtins.int + + @_builtins.property + def routing_parameters(self) -> _containers.RepeatedCompositeFieldContainer[Global___RoutingParameter]: + """A collection of Routing Parameter specifications. + **NOTE:** If multiple Routing Parameters describe the same key + (via the `path_template` field or via the `field` field when + `path_template` is not provided), "last one wins" rule + determines which Parameter gets used. + See the examples for more details. + """ + + def __init__(self, *, routing_parameters: _abc.Iterable[Global___RoutingParameter] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['routing_parameters', b'routing_parameters'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___RoutingRule: _TypeAlias = RoutingRule + +@_typing.final +class RoutingParameter(_message.Message): + """A projection from an input message to the GRPC or REST header.""" + DESCRIPTOR: _descriptor.Descriptor + FIELD_FIELD_NUMBER: _builtins.int + PATH_TEMPLATE_FIELD_NUMBER: _builtins.int + field: _builtins.str + 'A request field to extract the header key-value pair from.' + path_template: _builtins.str + 'A pattern matching the key-value field. Optional.\n If not specified, the whole field specified in the `field` field will be\n taken as value, and its name used as key. If specified, it MUST contain\n exactly one named segment (along with any number of unnamed segments) The\n pattern will be matched over the field specified in the `field` field, then\n if the match is successful:\n - the name of the single named segment will be used as a header name,\n - the match value of the segment will be used as a header value;\n if the match is NOT successful, nothing will be sent.\n\n Example:\n\n -- This is a field in the request message\n | that the header value will be extracted from.\n |\n | -- This is the key name in the\n | | routing header.\n V |\n field: "table_name" v\n path_template: "projects/*/{table_location=instances/*}/tables/*"\n ^ ^\n | |\n In the {} brackets is the pattern that -- |\n specifies what to extract from the |\n field as a value to be sent. |\n |\n The string in the field must match the whole pattern --\n before brackets, inside brackets, after brackets.\n\n When looking at this specific example, we can see that:\n - A key-value pair with the key `table_location`\n and the value matching `instances/*` should be added\n to the x-goog-request-params routing header.\n - The value is extracted from the request message\'s `table_name` field\n if it matches the full pattern specified:\n `projects/*/instances/*/tables/*`.\n\n **NB:** If the `path_template` field is not provided, the key name is\n equal to the field name, and the whole field should be sent as a value.\n This makes the pattern for the field and the value functionally equivalent\n to `**`, and the configuration\n\n {\n field: "table_name"\n }\n\n is a functionally equivalent shorthand to:\n\n {\n field: "table_name"\n path_template: "{table_name=**}"\n }\n\n See Example 1 for more details.\n ' + + def __init__(self, *, field: _builtins.str=..., path_template: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['field', b'field', 'path_template', b'path_template'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___RoutingParameter: _TypeAlias = RoutingParameter +ROUTING_FIELD_NUMBER: _builtins.int +routing: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.MethodOptions, Global___RoutingRule] +'See RoutingRule.' \ No newline at end of file diff --git a/src/viam/gen/google/api/visibility_grpc.py b/src/viam/gen/google/api/visibility_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/api/visibility_pb2.py b/src/viam/gen/google/api/visibility_pb2.py new file mode 100644 index 0000000000..2ea92e6382 --- /dev/null +++ b/src/viam/gen/google/api/visibility_pb2.py @@ -0,0 +1,20 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/visibility.proto') +_sym_db = _symbol_database.Default() +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bgoogle/api/visibility.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto">\n\nVisibility\x120\n\x05rules\x18\x01 \x03(\x0b2\x1a.google.api.VisibilityRuleR\x05rules"N\n\x0eVisibilityRule\x12\x1a\n\x08selector\x18\x01 \x01(\tR\x08selector\x12 \n\x0brestriction\x18\x02 \x01(\tR\x0brestriction:d\n\x0fenum_visibility\x12\x1c.google.protobuf.EnumOptions\x18\xaf\xca\xbc" \x01(\x0b2\x1a.google.api.VisibilityRuleR\x0eenumVisibility:k\n\x10value_visibility\x12!.google.protobuf.EnumValueOptions\x18\xaf\xca\xbc" \x01(\x0b2\x1a.google.api.VisibilityRuleR\x0fvalueVisibility:g\n\x10field_visibility\x12\x1d.google.protobuf.FieldOptions\x18\xaf\xca\xbc" \x01(\x0b2\x1a.google.api.VisibilityRuleR\x0ffieldVisibility:m\n\x12message_visibility\x12\x1f.google.protobuf.MessageOptions\x18\xaf\xca\xbc" \x01(\x0b2\x1a.google.api.VisibilityRuleR\x11messageVisibility:j\n\x11method_visibility\x12\x1e.google.protobuf.MethodOptions\x18\xaf\xca\xbc" \x01(\x0b2\x1a.google.api.VisibilityRuleR\x10methodVisibility:e\n\x0eapi_visibility\x12\x1f.google.protobuf.ServiceOptions\x18\xaf\xca\xbc" \x01(\x0b2\x1a.google.api.VisibilityRuleR\rapiVisibilityBk\n\x0ecom.google.apiB\x0fVisibilityProtoP\x01Z?google.golang.org/genproto/googleapis/api/visibility;visibility\xa2\x02\x04GAPIb\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.visibility_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\x0fVisibilityProtoP\x01Z?google.golang.org/genproto/googleapis/api/visibility;visibility\xa2\x02\x04GAPI' + _globals['_VISIBILITY']._serialized_start = 77 + _globals['_VISIBILITY']._serialized_end = 139 + _globals['_VISIBILITYRULE']._serialized_start = 141 + _globals['_VISIBILITYRULE']._serialized_end = 219 \ No newline at end of file diff --git a/src/viam/gen/google/api/visibility_pb2.pyi b/src/viam/gen/google/api/visibility_pb2.pyi new file mode 100644 index 0000000000..03c6e22d6f --- /dev/null +++ b/src/viam/gen/google/api/visibility_pb2.pyi @@ -0,0 +1,114 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pb2 as _descriptor_pb2 +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import extension_dict as _extension_dict +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class Visibility(_message.Message): + """`Visibility` restricts service consumer's access to service elements, + such as whether an application can call a visibility-restricted method. + The restriction is expressed by applying visibility labels on service + elements. The visibility labels are elsewhere linked to service consumers. + + A service can define multiple visibility labels, but a service consumer + should be granted at most one visibility label. Multiple visibility + labels for a single service consumer are not supported. + + If an element and all its parents have no visibility label, its visibility + is unconditionally granted. + + Example: + + visibility: + rules: + - selector: google.calendar.Calendar.EnhancedSearch + restriction: PREVIEW + - selector: google.calendar.Calendar.Delegate + restriction: INTERNAL + + Here, all methods are publicly visible except for the restricted methods + EnhancedSearch and Delegate. + """ + DESCRIPTOR: _descriptor.Descriptor + RULES_FIELD_NUMBER: _builtins.int + + @_builtins.property + def rules(self) -> _containers.RepeatedCompositeFieldContainer[Global___VisibilityRule]: + """A list of visibility rules that apply to individual API elements. + + **NOTE:** All service configuration rules follow "last one wins" order. + """ + + def __init__(self, *, rules: _abc.Iterable[Global___VisibilityRule] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['rules', b'rules'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___Visibility: _TypeAlias = Visibility + +@_typing.final +class VisibilityRule(_message.Message): + """A visibility rule provides visibility configuration for an individual API + element. + """ + DESCRIPTOR: _descriptor.Descriptor + SELECTOR_FIELD_NUMBER: _builtins.int + RESTRICTION_FIELD_NUMBER: _builtins.int + selector: _builtins.str + 'Selects methods, messages, fields, enums, etc. to which this rule applies.\n\n Refer to [selector][google.api.DocumentationRule.selector] for syntax\n details.\n ' + restriction: _builtins.str + 'A comma-separated list of visibility labels that apply to the `selector`.\n Any of the listed labels can be used to grant the visibility.\n\n If a rule has multiple labels, removing one of the labels but not all of\n them can break clients.\n\n Example:\n\n visibility:\n rules:\n - selector: google.calendar.Calendar.EnhancedSearch\n restriction: INTERNAL, PREVIEW\n\n Removing INTERNAL from this restriction will break clients that rely on\n this method and only had access to it through INTERNAL.\n ' + + def __init__(self, *, selector: _builtins.str=..., restriction: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['restriction', b'restriction', 'selector', b'selector'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___VisibilityRule: _TypeAlias = VisibilityRule +ENUM_VISIBILITY_FIELD_NUMBER: _builtins.int +VALUE_VISIBILITY_FIELD_NUMBER: _builtins.int +FIELD_VISIBILITY_FIELD_NUMBER: _builtins.int +MESSAGE_VISIBILITY_FIELD_NUMBER: _builtins.int +METHOD_VISIBILITY_FIELD_NUMBER: _builtins.int +API_VISIBILITY_FIELD_NUMBER: _builtins.int +enum_visibility: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.EnumOptions, Global___VisibilityRule] +'See `VisibilityRule`.' +value_visibility: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.EnumValueOptions, Global___VisibilityRule] +'See `VisibilityRule`.' +field_visibility: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.FieldOptions, Global___VisibilityRule] +'See `VisibilityRule`.' +message_visibility: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.MessageOptions, Global___VisibilityRule] +'See `VisibilityRule`.' +method_visibility: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.MethodOptions, Global___VisibilityRule] +'See `VisibilityRule`.' +api_visibility: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.ServiceOptions, Global___VisibilityRule] +'See `VisibilityRule`.' \ No newline at end of file diff --git a/src/viam/gen/google/rpc/__init__.py b/src/viam/gen/google/rpc/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/rpc/code_grpc.py b/src/viam/gen/google/rpc/code_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/rpc/code_pb2.py b/src/viam/gen/google/rpc/code_pb2.py new file mode 100644 index 0000000000..cbb7de059d --- /dev/null +++ b/src/viam/gen/google/rpc/code_pb2.py @@ -0,0 +1,17 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/rpc/code.proto') +_sym_db = _symbol_database.Default() +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15google/rpc/code.proto\x12\ngoogle.rpc*\xb7\x02\n\x04Code\x12\x06\n\x02OK\x10\x00\x12\r\n\tCANCELLED\x10\x01\x12\x0b\n\x07UNKNOWN\x10\x02\x12\x14\n\x10INVALID_ARGUMENT\x10\x03\x12\x15\n\x11DEADLINE_EXCEEDED\x10\x04\x12\r\n\tNOT_FOUND\x10\x05\x12\x12\n\x0eALREADY_EXISTS\x10\x06\x12\x15\n\x11PERMISSION_DENIED\x10\x07\x12\x13\n\x0fUNAUTHENTICATED\x10\x10\x12\x16\n\x12RESOURCE_EXHAUSTED\x10\x08\x12\x17\n\x13FAILED_PRECONDITION\x10\t\x12\x0b\n\x07ABORTED\x10\n\x12\x10\n\x0cOUT_OF_RANGE\x10\x0b\x12\x11\n\rUNIMPLEMENTED\x10\x0c\x12\x0c\n\x08INTERNAL\x10\r\x12\x0f\n\x0bUNAVAILABLE\x10\x0e\x12\r\n\tDATA_LOSS\x10\x0fBX\n\x0ecom.google.rpcB\tCodeProtoP\x01Z3google.golang.org/genproto/googleapis/rpc/code;code\xa2\x02\x03RPCb\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.rpc.code_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.rpcB\tCodeProtoP\x01Z3google.golang.org/genproto/googleapis/rpc/code;code\xa2\x02\x03RPC' + _globals['_CODE']._serialized_start = 38 + _globals['_CODE']._serialized_end = 349 \ No newline at end of file diff --git a/src/viam/gen/google/rpc/code_pb2.pyi b/src/viam/gen/google/rpc/code_pb2.pyi new file mode 100644 index 0000000000..24ac2c406d --- /dev/null +++ b/src/viam/gen/google/rpc/code_pb2.pyi @@ -0,0 +1,113 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from google.protobuf import descriptor as _descriptor +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +class _Code: + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType + +class _CodeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_Code.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor + OK: _Code.ValueType + 'Not an error; returned on success.\n\n HTTP Mapping: 200 OK\n ' + CANCELLED: _Code.ValueType + 'The operation was cancelled, typically by the caller.\n\n HTTP Mapping: 499 Client Closed Request\n ' + UNKNOWN: _Code.ValueType + 'Unknown error. For example, this error may be returned when\n a `Status` value received from another address space belongs to\n an error space that is not known in this address space. Also\n errors raised by APIs that do not return enough error information\n may be converted to this error.\n\n HTTP Mapping: 500 Internal Server Error\n ' + INVALID_ARGUMENT: _Code.ValueType + 'The client specified an invalid argument. Note that this differs\n from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments\n that are problematic regardless of the state of the system\n (e.g., a malformed file name).\n\n HTTP Mapping: 400 Bad Request\n ' + DEADLINE_EXCEEDED: _Code.ValueType + 'The deadline expired before the operation could complete. For operations\n that change the state of the system, this error may be returned\n even if the operation has completed successfully. For example, a\n successful response from a server could have been delayed long\n enough for the deadline to expire.\n\n HTTP Mapping: 504 Gateway Timeout\n ' + NOT_FOUND: _Code.ValueType + 'Some requested entity (e.g., file or directory) was not found.\n\n Note to server developers: if a request is denied for an entire class\n of users, such as gradual feature rollout or undocumented allowlist,\n `NOT_FOUND` may be used. If a request is denied for some users within\n a class of users, such as user-based access control, `PERMISSION_DENIED`\n must be used.\n\n HTTP Mapping: 404 Not Found\n ' + ALREADY_EXISTS: _Code.ValueType + 'The entity that a client attempted to create (e.g., file or directory)\n already exists.\n\n HTTP Mapping: 409 Conflict\n ' + PERMISSION_DENIED: _Code.ValueType + 'The caller does not have permission to execute the specified\n operation. `PERMISSION_DENIED` must not be used for rejections\n caused by exhausting some resource (use `RESOURCE_EXHAUSTED`\n instead for those errors). `PERMISSION_DENIED` must not be\n used if the caller can not be identified (use `UNAUTHENTICATED`\n instead for those errors). This error code does not imply the\n request is valid or the requested entity exists or satisfies\n other pre-conditions.\n\n HTTP Mapping: 403 Forbidden\n ' + UNAUTHENTICATED: _Code.ValueType + 'The request does not have valid authentication credentials for the\n operation.\n\n HTTP Mapping: 401 Unauthorized\n ' + RESOURCE_EXHAUSTED: _Code.ValueType + 'Some resource has been exhausted, perhaps a per-user quota, or\n perhaps the entire file system is out of space.\n\n HTTP Mapping: 429 Too Many Requests\n ' + FAILED_PRECONDITION: _Code.ValueType + 'The operation was rejected because the system is not in a state\n required for the operation\'s execution. For example, the directory\n to be deleted is non-empty, an rmdir operation is applied to\n a non-directory, etc.\n\n Service implementors can use the following guidelines to decide\n between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`:\n (a) Use `UNAVAILABLE` if the client can retry just the failing call.\n (b) Use `ABORTED` if the client should retry at a higher level. For\n example, when a client-specified test-and-set fails, indicating the\n client should restart a read-modify-write sequence.\n (c) Use `FAILED_PRECONDITION` if the client should not retry until\n the system state has been explicitly fixed. For example, if an "rmdir"\n fails because the directory is non-empty, `FAILED_PRECONDITION`\n should be returned since the client should not retry unless\n the files are deleted from the directory.\n\n HTTP Mapping: 400 Bad Request\n ' + ABORTED: _Code.ValueType + 'The operation was aborted, typically due to a concurrency issue such as\n a sequencer check failure or transaction abort.\n\n See the guidelines above for deciding between `FAILED_PRECONDITION`,\n `ABORTED`, and `UNAVAILABLE`.\n\n HTTP Mapping: 409 Conflict\n ' + OUT_OF_RANGE: _Code.ValueType + 'The operation was attempted past the valid range. E.g., seeking or\n reading past end-of-file.\n\n Unlike `INVALID_ARGUMENT`, this error indicates a problem that may\n be fixed if the system state changes. For example, a 32-bit file\n system will generate `INVALID_ARGUMENT` if asked to read at an\n offset that is not in the range [0,2^32-1], but it will generate\n `OUT_OF_RANGE` if asked to read from an offset past the current\n file size.\n\n There is a fair bit of overlap between `FAILED_PRECONDITION` and\n `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific\n error) when it applies so that callers who are iterating through\n a space can easily look for an `OUT_OF_RANGE` error to detect when\n they are done.\n\n HTTP Mapping: 400 Bad Request\n ' + UNIMPLEMENTED: _Code.ValueType + 'The operation is not implemented or is not supported/enabled in this\n service.\n\n HTTP Mapping: 501 Not Implemented\n ' + INTERNAL: _Code.ValueType + 'Internal errors. This means that some invariants expected by the\n underlying system have been broken. This error code is reserved\n for serious errors.\n\n HTTP Mapping: 500 Internal Server Error\n ' + UNAVAILABLE: _Code.ValueType + 'The service is currently unavailable. This is most likely a\n transient condition, which can be corrected by retrying with\n a backoff. Note that it is not always safe to retry\n non-idempotent operations.\n\n See the guidelines above for deciding between `FAILED_PRECONDITION`,\n `ABORTED`, and `UNAVAILABLE`.\n\n HTTP Mapping: 503 Service Unavailable\n ' + DATA_LOSS: _Code.ValueType + 'Unrecoverable data loss or corruption.\n\n HTTP Mapping: 500 Internal Server Error\n ' + +class Code(_Code, metaclass=_CodeEnumTypeWrapper): + """The canonical error codes for gRPC APIs. + + + Sometimes multiple error codes may apply. Services should return + the most specific error code that applies. For example, prefer + `OUT_OF_RANGE` over `FAILED_PRECONDITION` if both codes apply. + Similarly prefer `NOT_FOUND` or `ALREADY_EXISTS` over `FAILED_PRECONDITION`. + """ +OK: Code.ValueType +'Not an error; returned on success.\n\nHTTP Mapping: 200 OK\n' +CANCELLED: Code.ValueType +'The operation was cancelled, typically by the caller.\n\nHTTP Mapping: 499 Client Closed Request\n' +UNKNOWN: Code.ValueType +'Unknown error. For example, this error may be returned when\na `Status` value received from another address space belongs to\nan error space that is not known in this address space. Also\nerrors raised by APIs that do not return enough error information\nmay be converted to this error.\n\nHTTP Mapping: 500 Internal Server Error\n' +INVALID_ARGUMENT: Code.ValueType +'The client specified an invalid argument. Note that this differs\nfrom `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments\nthat are problematic regardless of the state of the system\n(e.g., a malformed file name).\n\nHTTP Mapping: 400 Bad Request\n' +DEADLINE_EXCEEDED: Code.ValueType +'The deadline expired before the operation could complete. For operations\nthat change the state of the system, this error may be returned\neven if the operation has completed successfully. For example, a\nsuccessful response from a server could have been delayed long\nenough for the deadline to expire.\n\nHTTP Mapping: 504 Gateway Timeout\n' +NOT_FOUND: Code.ValueType +'Some requested entity (e.g., file or directory) was not found.\n\nNote to server developers: if a request is denied for an entire class\nof users, such as gradual feature rollout or undocumented allowlist,\n`NOT_FOUND` may be used. If a request is denied for some users within\na class of users, such as user-based access control, `PERMISSION_DENIED`\nmust be used.\n\nHTTP Mapping: 404 Not Found\n' +ALREADY_EXISTS: Code.ValueType +'The entity that a client attempted to create (e.g., file or directory)\nalready exists.\n\nHTTP Mapping: 409 Conflict\n' +PERMISSION_DENIED: Code.ValueType +'The caller does not have permission to execute the specified\noperation. `PERMISSION_DENIED` must not be used for rejections\ncaused by exhausting some resource (use `RESOURCE_EXHAUSTED`\ninstead for those errors). `PERMISSION_DENIED` must not be\nused if the caller can not be identified (use `UNAUTHENTICATED`\ninstead for those errors). This error code does not imply the\nrequest is valid or the requested entity exists or satisfies\nother pre-conditions.\n\nHTTP Mapping: 403 Forbidden\n' +UNAUTHENTICATED: Code.ValueType +'The request does not have valid authentication credentials for the\noperation.\n\nHTTP Mapping: 401 Unauthorized\n' +RESOURCE_EXHAUSTED: Code.ValueType +'Some resource has been exhausted, perhaps a per-user quota, or\nperhaps the entire file system is out of space.\n\nHTTP Mapping: 429 Too Many Requests\n' +FAILED_PRECONDITION: Code.ValueType +'The operation was rejected because the system is not in a state\nrequired for the operation\'s execution. For example, the directory\nto be deleted is non-empty, an rmdir operation is applied to\na non-directory, etc.\n\nService implementors can use the following guidelines to decide\nbetween `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`:\n (a) Use `UNAVAILABLE` if the client can retry just the failing call.\n (b) Use `ABORTED` if the client should retry at a higher level. For\n example, when a client-specified test-and-set fails, indicating the\n client should restart a read-modify-write sequence.\n (c) Use `FAILED_PRECONDITION` if the client should not retry until\n the system state has been explicitly fixed. For example, if an "rmdir"\n fails because the directory is non-empty, `FAILED_PRECONDITION`\n should be returned since the client should not retry unless\n the files are deleted from the directory.\n\nHTTP Mapping: 400 Bad Request\n' +ABORTED: Code.ValueType +'The operation was aborted, typically due to a concurrency issue such as\na sequencer check failure or transaction abort.\n\nSee the guidelines above for deciding between `FAILED_PRECONDITION`,\n`ABORTED`, and `UNAVAILABLE`.\n\nHTTP Mapping: 409 Conflict\n' +OUT_OF_RANGE: Code.ValueType +'The operation was attempted past the valid range. E.g., seeking or\nreading past end-of-file.\n\nUnlike `INVALID_ARGUMENT`, this error indicates a problem that may\nbe fixed if the system state changes. For example, a 32-bit file\nsystem will generate `INVALID_ARGUMENT` if asked to read at an\noffset that is not in the range [0,2^32-1], but it will generate\n`OUT_OF_RANGE` if asked to read from an offset past the current\nfile size.\n\nThere is a fair bit of overlap between `FAILED_PRECONDITION` and\n`OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific\nerror) when it applies so that callers who are iterating through\na space can easily look for an `OUT_OF_RANGE` error to detect when\nthey are done.\n\nHTTP Mapping: 400 Bad Request\n' +UNIMPLEMENTED: Code.ValueType +'The operation is not implemented or is not supported/enabled in this\nservice.\n\nHTTP Mapping: 501 Not Implemented\n' +INTERNAL: Code.ValueType +'Internal errors. This means that some invariants expected by the\nunderlying system have been broken. This error code is reserved\nfor serious errors.\n\nHTTP Mapping: 500 Internal Server Error\n' +UNAVAILABLE: Code.ValueType +'The service is currently unavailable. This is most likely a\ntransient condition, which can be corrected by retrying with\na backoff. Note that it is not always safe to retry\nnon-idempotent operations.\n\nSee the guidelines above for deciding between `FAILED_PRECONDITION`,\n`ABORTED`, and `UNAVAILABLE`.\n\nHTTP Mapping: 503 Service Unavailable\n' +DATA_LOSS: Code.ValueType +'Unrecoverable data loss or corruption.\n\nHTTP Mapping: 500 Internal Server Error\n' +Global___Code: _TypeAlias = Code \ No newline at end of file diff --git a/src/viam/gen/google/rpc/context/__init__.py b/src/viam/gen/google/rpc/context/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/rpc/context/attribute_context_grpc.py b/src/viam/gen/google/rpc/context/attribute_context_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/rpc/context/attribute_context_pb2.py b/src/viam/gen/google/rpc/context/attribute_context_pb2.py new file mode 100644 index 0000000000..3bd2492f2c --- /dev/null +++ b/src/viam/gen/google/rpc/context/attribute_context_pb2.py @@ -0,0 +1,53 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/rpc/context/attribute_context.proto') +_sym_db = _symbol_database.Default() +from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*google/rpc/context/attribute_context.proto\x12\x12google.rpc.context\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto"\x81\x14\n\x10AttributeContext\x12A\n\x06origin\x18\x07 \x01(\x0b2).google.rpc.context.AttributeContext.PeerR\x06origin\x12A\n\x06source\x18\x01 \x01(\x0b2).google.rpc.context.AttributeContext.PeerR\x06source\x12K\n\x0bdestination\x18\x02 \x01(\x0b2).google.rpc.context.AttributeContext.PeerR\x0bdestination\x12F\n\x07request\x18\x03 \x01(\x0b2,.google.rpc.context.AttributeContext.RequestR\x07request\x12I\n\x08response\x18\x04 \x01(\x0b2-.google.rpc.context.AttributeContext.ResponseR\x08response\x12I\n\x08resource\x18\x05 \x01(\x0b2-.google.rpc.context.AttributeContext.ResourceR\x08resource\x12:\n\x03api\x18\x06 \x01(\x0b2(.google.rpc.context.AttributeContext.ApiR\x03api\x124\n\nextensions\x18\x08 \x03(\x0b2\x14.google.protobuf.AnyR\nextensions\x1a\xf3\x01\n\x04Peer\x12\x0e\n\x02ip\x18\x01 \x01(\tR\x02ip\x12\x12\n\x04port\x18\x02 \x01(\x03R\x04port\x12M\n\x06labels\x18\x06 \x03(\x0b25.google.rpc.context.AttributeContext.Peer.LabelsEntryR\x06labels\x12\x1c\n\tprincipal\x18\x07 \x01(\tR\tprincipal\x12\x1f\n\x0bregion_code\x18\x08 \x01(\tR\nregionCode\x1a9\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1as\n\x03Api\x12\x18\n\x07service\x18\x01 \x01(\tR\x07service\x12\x1c\n\toperation\x18\x02 \x01(\tR\toperation\x12\x1a\n\x08protocol\x18\x03 \x01(\tR\x08protocol\x12\x18\n\x07version\x18\x04 \x01(\tR\x07version\x1a\xb6\x01\n\x04Auth\x12\x1c\n\tprincipal\x18\x01 \x01(\tR\tprincipal\x12\x1c\n\taudiences\x18\x02 \x03(\tR\taudiences\x12\x1c\n\tpresenter\x18\x03 \x01(\tR\tpresenter\x12/\n\x06claims\x18\x04 \x01(\x0b2\x17.google.protobuf.StructR\x06claims\x12#\n\raccess_levels\x18\x05 \x03(\tR\x0caccessLevels\x1a\xcf\x03\n\x07Request\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n\x06method\x18\x02 \x01(\tR\x06method\x12S\n\x07headers\x18\x03 \x03(\x0b29.google.rpc.context.AttributeContext.Request.HeadersEntryR\x07headers\x12\x12\n\x04path\x18\x04 \x01(\tR\x04path\x12\x12\n\x04host\x18\x05 \x01(\tR\x04host\x12\x16\n\x06scheme\x18\x06 \x01(\tR\x06scheme\x12\x14\n\x05query\x18\x07 \x01(\tR\x05query\x12.\n\x04time\x18\t \x01(\x0b2\x1a.google.protobuf.TimestampR\x04time\x12\x12\n\x04size\x18\n \x01(\x03R\x04size\x12\x1a\n\x08protocol\x18\x0b \x01(\tR\x08protocol\x12\x16\n\x06reason\x18\x0c \x01(\tR\x06reason\x12=\n\x04auth\x18\r \x01(\x0b2).google.rpc.context.AttributeContext.AuthR\x04auth\x1a:\n\x0cHeadersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a\xb8\x02\n\x08Response\x12\x12\n\x04code\x18\x01 \x01(\x03R\x04code\x12\x12\n\x04size\x18\x02 \x01(\x03R\x04size\x12T\n\x07headers\x18\x03 \x03(\x0b2:.google.rpc.context.AttributeContext.Response.HeadersEntryR\x07headers\x12.\n\x04time\x18\x04 \x01(\x0b2\x1a.google.protobuf.TimestampR\x04time\x12B\n\x0fbackend_latency\x18\x05 \x01(\x0b2\x19.google.protobuf.DurationR\x0ebackendLatency\x1a:\n\x0cHeadersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a\x98\x05\n\x08Resource\x12\x18\n\x07service\x18\x01 \x01(\tR\x07service\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n\x04type\x18\x03 \x01(\tR\x04type\x12Q\n\x06labels\x18\x04 \x03(\x0b29.google.rpc.context.AttributeContext.Resource.LabelsEntryR\x06labels\x12\x10\n\x03uid\x18\x05 \x01(\tR\x03uid\x12`\n\x0bannotations\x18\x06 \x03(\x0b2>.google.rpc.context.AttributeContext.Resource.AnnotationsEntryR\x0bannotations\x12!\n\x0cdisplay_name\x18\x07 \x01(\tR\x0bdisplayName\x12;\n\x0bcreate_time\x18\x08 \x01(\x0b2\x1a.google.protobuf.TimestampR\ncreateTime\x12;\n\x0bupdate_time\x18\t \x01(\x0b2\x1a.google.protobuf.TimestampR\nupdateTime\x12;\n\x0bdelete_time\x18\n \x01(\x0b2\x1a.google.protobuf.TimestampR\ndeleteTime\x12\x12\n\x04etag\x18\x0b \x01(\tR\x04etag\x12\x1a\n\x08location\x18\x0c \x01(\tR\x08location\x1a9\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a>\n\x10AnnotationsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x8b\x01\n\x16com.google.rpc.contextB\x15AttributeContextProtoP\x01ZUgoogle.golang.org/genproto/googleapis/rpc/context/attribute_context;attribute_context\xf8\x01\x01b\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.rpc.context.attribute_context_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x16com.google.rpc.contextB\x15AttributeContextProtoP\x01ZUgoogle.golang.org/genproto/googleapis/rpc/context/attribute_context;attribute_context\xf8\x01\x01' + _globals['_ATTRIBUTECONTEXT_PEER_LABELSENTRY']._loaded_options = None + _globals['_ATTRIBUTECONTEXT_PEER_LABELSENTRY']._serialized_options = b'8\x01' + _globals['_ATTRIBUTECONTEXT_REQUEST_HEADERSENTRY']._loaded_options = None + _globals['_ATTRIBUTECONTEXT_REQUEST_HEADERSENTRY']._serialized_options = b'8\x01' + _globals['_ATTRIBUTECONTEXT_RESPONSE_HEADERSENTRY']._loaded_options = None + _globals['_ATTRIBUTECONTEXT_RESPONSE_HEADERSENTRY']._serialized_options = b'8\x01' + _globals['_ATTRIBUTECONTEXT_RESOURCE_LABELSENTRY']._loaded_options = None + _globals['_ATTRIBUTECONTEXT_RESOURCE_LABELSENTRY']._serialized_options = b'8\x01' + _globals['_ATTRIBUTECONTEXT_RESOURCE_ANNOTATIONSENTRY']._loaded_options = None + _globals['_ATTRIBUTECONTEXT_RESOURCE_ANNOTATIONSENTRY']._serialized_options = b'8\x01' + _globals['_ATTRIBUTECONTEXT']._serialized_start = 189 + _globals['_ATTRIBUTECONTEXT']._serialized_end = 2750 + _globals['_ATTRIBUTECONTEXT_PEER']._serialized_start = 757 + _globals['_ATTRIBUTECONTEXT_PEER']._serialized_end = 1000 + _globals['_ATTRIBUTECONTEXT_PEER_LABELSENTRY']._serialized_start = 943 + _globals['_ATTRIBUTECONTEXT_PEER_LABELSENTRY']._serialized_end = 1000 + _globals['_ATTRIBUTECONTEXT_API']._serialized_start = 1002 + _globals['_ATTRIBUTECONTEXT_API']._serialized_end = 1117 + _globals['_ATTRIBUTECONTEXT_AUTH']._serialized_start = 1120 + _globals['_ATTRIBUTECONTEXT_AUTH']._serialized_end = 1302 + _globals['_ATTRIBUTECONTEXT_REQUEST']._serialized_start = 1305 + _globals['_ATTRIBUTECONTEXT_REQUEST']._serialized_end = 1768 + _globals['_ATTRIBUTECONTEXT_REQUEST_HEADERSENTRY']._serialized_start = 1710 + _globals['_ATTRIBUTECONTEXT_REQUEST_HEADERSENTRY']._serialized_end = 1768 + _globals['_ATTRIBUTECONTEXT_RESPONSE']._serialized_start = 1771 + _globals['_ATTRIBUTECONTEXT_RESPONSE']._serialized_end = 2083 + _globals['_ATTRIBUTECONTEXT_RESPONSE_HEADERSENTRY']._serialized_start = 1710 + _globals['_ATTRIBUTECONTEXT_RESPONSE_HEADERSENTRY']._serialized_end = 1768 + _globals['_ATTRIBUTECONTEXT_RESOURCE']._serialized_start = 2086 + _globals['_ATTRIBUTECONTEXT_RESOURCE']._serialized_end = 2750 + _globals['_ATTRIBUTECONTEXT_RESOURCE_LABELSENTRY']._serialized_start = 943 + _globals['_ATTRIBUTECONTEXT_RESOURCE_LABELSENTRY']._serialized_end = 1000 + _globals['_ATTRIBUTECONTEXT_RESOURCE_ANNOTATIONSENTRY']._serialized_start = 2688 + _globals['_ATTRIBUTECONTEXT_RESOURCE_ANNOTATIONSENTRY']._serialized_end = 2750 \ No newline at end of file diff --git a/src/viam/gen/google/rpc/context/attribute_context_pb2.pyi b/src/viam/gen/google/rpc/context/attribute_context_pb2.pyi new file mode 100644 index 0000000000..db2a32576e --- /dev/null +++ b/src/viam/gen/google/rpc/context/attribute_context_pb2.pyi @@ -0,0 +1,526 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from collections import abc as _abc +from google.protobuf import any_pb2 as _any_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import duration_pb2 as _duration_pb2 +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class AttributeContext(_message.Message): + """This message defines the standard attribute vocabulary for Google APIs. + + An attribute is a piece of metadata that describes an activity on a network + service. For example, the size of an HTTP request, or the status code of + an HTTP response. + + Each attribute has a type and a name, which is logically defined as + a proto message field in `AttributeContext`. The field type becomes the + attribute type, and the field path becomes the attribute name. For example, + the attribute `source.ip` maps to field `AttributeContext.source.ip`. + + This message definition is guaranteed not to have any wire breaking change. + So you can use it directly for passing attributes across different systems. + + NOTE: Different system may generate different subset of attributes. Please + verify the system specification before relying on an attribute generated + a system. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class Peer(_message.Message): + """This message defines attributes for a node that handles a network request. + The node can be either a service or an application that sends, forwards, + or receives the request. Service peers should fill in + `principal` and `labels` as appropriate. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class LabelsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str + + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + IP_FIELD_NUMBER: _builtins.int + PORT_FIELD_NUMBER: _builtins.int + LABELS_FIELD_NUMBER: _builtins.int + PRINCIPAL_FIELD_NUMBER: _builtins.int + REGION_CODE_FIELD_NUMBER: _builtins.int + ip: _builtins.str + 'The IP address of the peer.' + port: _builtins.int + 'The network port of the peer.' + principal: _builtins.str + 'The identity of this peer. Similar to `Request.auth.principal`, but\n relative to the peer instead of the request. For example, the\n identity associated with a load balancer that forwarded the request.\n ' + region_code: _builtins.str + 'The CLDR country/region code associated with the above IP address.\n If the IP address is private, the `region_code` should reflect the\n physical location where this peer is running.\n ' + + @_builtins.property + def labels(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: + """The labels associated with the peer.""" + + def __init__(self, *, ip: _builtins.str=..., port: _builtins.int=..., labels: _abc.Mapping[_builtins.str, _builtins.str] | None=..., principal: _builtins.str=..., region_code: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['ip', b'ip', 'labels', b'labels', 'port', b'port', 'principal', b'principal', 'region_code', b'region_code'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class Api(_message.Message): + """This message defines attributes associated with API operations, such as + a network API request. The terminology is based on the conventions used + by Google APIs, Istio, and OpenAPI. + """ + DESCRIPTOR: _descriptor.Descriptor + SERVICE_FIELD_NUMBER: _builtins.int + OPERATION_FIELD_NUMBER: _builtins.int + PROTOCOL_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + service: _builtins.str + 'The API service name. It is a logical identifier for a networked API,\n such as "pubsub.googleapis.com". The naming syntax depends on the\n API management system being used for handling the request.\n ' + operation: _builtins.str + 'The API operation name. For gRPC requests, it is the fully qualified API\n method name, such as "google.pubsub.v1.Publisher.Publish". For OpenAPI\n requests, it is the `operationId`, such as "getPet".\n ' + protocol: _builtins.str + 'The API protocol used for sending the request, such as "http", "https",\n "grpc", or "internal".\n ' + version: _builtins.str + 'The API version associated with the API operation above, such as "v1" or\n "v1alpha1".\n ' + + def __init__(self, *, service: _builtins.str=..., operation: _builtins.str=..., protocol: _builtins.str=..., version: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['operation', b'operation', 'protocol', b'protocol', 'service', b'service', 'version', b'version'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class Auth(_message.Message): + """This message defines request authentication attributes. Terminology is + based on the JSON Web Token (JWT) standard, but the terms also + correlate to concepts in other standards. + """ + DESCRIPTOR: _descriptor.Descriptor + PRINCIPAL_FIELD_NUMBER: _builtins.int + AUDIENCES_FIELD_NUMBER: _builtins.int + PRESENTER_FIELD_NUMBER: _builtins.int + CLAIMS_FIELD_NUMBER: _builtins.int + ACCESS_LEVELS_FIELD_NUMBER: _builtins.int + principal: _builtins.str + 'The authenticated principal. Reflects the issuer (`iss`) and subject\n (`sub`) claims within a JWT. The issuer and subject should be `/`\n delimited, with `/` percent-encoded within the subject fragment. For\n Google accounts, the principal format is:\n "https://accounts.google.com/{id}"\n ' + presenter: _builtins.str + 'The authorized presenter of the credential. Reflects the optional\n Authorized Presenter (`azp`) claim within a JWT or the\n OAuth client id. For example, a Google Cloud Platform client id looks\n as follows: "123456789012.apps.googleusercontent.com".\n ' + + @_builtins.property + def audiences(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + """The intended audience(s) for this authentication information. Reflects + the audience (`aud`) claim within a JWT. The audience + value(s) depends on the `issuer`, but typically include one or more of + the following pieces of information: + + * The services intended to receive the credential. For example, + ["https://pubsub.googleapis.com/", "https://storage.googleapis.com/"]. + * A set of service-based scopes. For example, + ["https://www.googleapis.com/auth/cloud-platform"]. + * The client id of an app, such as the Firebase project id for JWTs + from Firebase Auth. + + Consult the documentation for the credential issuer to determine the + information provided. + """ + + @_builtins.property + def claims(self) -> _struct_pb2.Struct: + """Structured claims presented with the credential. JWTs include + `{key: value}` pairs for standard and private claims. The following + is a subset of the standard required and optional claims that would + typically be presented for a Google-based JWT: + + {'iss': 'accounts.google.com', + 'sub': '113289723416554971153', + 'aud': ['123456789012', 'pubsub.googleapis.com'], + 'azp': '123456789012.apps.googleusercontent.com', + 'email': 'jsmith@example.com', + 'iat': 1353601026, + 'exp': 1353604926} + + SAML assertions are similarly specified, but with an identity provider + dependent structure. + """ + + @_builtins.property + def access_levels(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + """A list of access level resource names that allow resources to be + accessed by authenticated requester. It is part of Secure GCP processing + for the incoming request. An access level string has the format: + "//{api_service_name}/accessPolicies/{policy_id}/accessLevels/{short_name}" + + Example: + "//accesscontextmanager.googleapis.com/accessPolicies/MY_POLICY_ID/accessLevels/MY_LEVEL" + """ + + def __init__(self, *, principal: _builtins.str=..., audiences: _abc.Iterable[_builtins.str] | None=..., presenter: _builtins.str=..., claims: _struct_pb2.Struct | None=..., access_levels: _abc.Iterable[_builtins.str] | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['claims', b'claims'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['access_levels', b'access_levels', 'audiences', b'audiences', 'claims', b'claims', 'presenter', b'presenter', 'principal', b'principal'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class Request(_message.Message): + """This message defines attributes for an HTTP request. If the actual + request is not an HTTP request, the runtime system should try to map + the actual request to an equivalent HTTP request. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class HeadersEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str + + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + ID_FIELD_NUMBER: _builtins.int + METHOD_FIELD_NUMBER: _builtins.int + HEADERS_FIELD_NUMBER: _builtins.int + PATH_FIELD_NUMBER: _builtins.int + HOST_FIELD_NUMBER: _builtins.int + SCHEME_FIELD_NUMBER: _builtins.int + QUERY_FIELD_NUMBER: _builtins.int + TIME_FIELD_NUMBER: _builtins.int + SIZE_FIELD_NUMBER: _builtins.int + PROTOCOL_FIELD_NUMBER: _builtins.int + REASON_FIELD_NUMBER: _builtins.int + AUTH_FIELD_NUMBER: _builtins.int + id: _builtins.str + 'The unique ID for a request, which can be propagated to downstream\n systems. The ID should have low probability of collision\n within a single day for a specific service.\n ' + method: _builtins.str + 'The HTTP request method, such as `GET`, `POST`.' + path: _builtins.str + 'The HTTP URL path, excluding the query parameters.' + host: _builtins.str + 'The HTTP request `Host` header value.' + scheme: _builtins.str + 'The HTTP URL scheme, such as `http` and `https`.' + query: _builtins.str + 'The HTTP URL query in the format of `name1=value1&name2=value2`, as it\n appears in the first line of the HTTP request. No decoding is performed.\n ' + size: _builtins.int + 'The HTTP request size in bytes. If unknown, it must be -1.' + protocol: _builtins.str + 'The network protocol used with the request, such as "http/1.1",\n "spdy/3", "h2", "h2c", "webrtc", "tcp", "udp", "quic". See\n https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids\n for details.\n ' + reason: _builtins.str + 'A special parameter for request reason. It is used by security systems\n to associate auditing information with a request.\n ' + + @_builtins.property + def headers(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: + """The HTTP request headers. If multiple headers share the same key, they + must be merged according to the HTTP spec. All header keys must be + lowercased, because HTTP header keys are case-insensitive. + """ + + @_builtins.property + def time(self) -> _timestamp_pb2.Timestamp: + """The timestamp when the `destination` service receives the last byte of + the request. + """ + + @_builtins.property + def auth(self) -> Global___AttributeContext.Auth: + """The request authentication. May be absent for unauthenticated requests. + Derived from the HTTP request `Authorization` header or equivalent. + """ + + def __init__(self, *, id: _builtins.str=..., method: _builtins.str=..., headers: _abc.Mapping[_builtins.str, _builtins.str] | None=..., path: _builtins.str=..., host: _builtins.str=..., scheme: _builtins.str=..., query: _builtins.str=..., time: _timestamp_pb2.Timestamp | None=..., size: _builtins.int=..., protocol: _builtins.str=..., reason: _builtins.str=..., auth: Global___AttributeContext.Auth | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['auth', b'auth', 'time', b'time'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['auth', b'auth', 'headers', b'headers', 'host', b'host', 'id', b'id', 'method', b'method', 'path', b'path', 'protocol', b'protocol', 'query', b'query', 'reason', b'reason', 'scheme', b'scheme', 'size', b'size', 'time', b'time'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class Response(_message.Message): + """This message defines attributes for a typical network response. It + generally models semantics of an HTTP response. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class HeadersEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str + + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + CODE_FIELD_NUMBER: _builtins.int + SIZE_FIELD_NUMBER: _builtins.int + HEADERS_FIELD_NUMBER: _builtins.int + TIME_FIELD_NUMBER: _builtins.int + BACKEND_LATENCY_FIELD_NUMBER: _builtins.int + code: _builtins.int + 'The HTTP response status code, such as `200` and `404`.' + size: _builtins.int + 'The HTTP response size in bytes. If unknown, it must be -1.' + + @_builtins.property + def headers(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: + """The HTTP response headers. If multiple headers share the same key, they + must be merged according to HTTP spec. All header keys must be + lowercased, because HTTP header keys are case-insensitive. + """ + + @_builtins.property + def time(self) -> _timestamp_pb2.Timestamp: + """The timestamp when the `destination` service sends the last byte of + the response. + """ + + @_builtins.property + def backend_latency(self) -> _duration_pb2.Duration: + """The amount of time it takes the backend service to fully respond to a + request. Measured from when the destination service starts to send the + request to the backend until when the destination service receives the + complete response from the backend. + """ + + def __init__(self, *, code: _builtins.int=..., size: _builtins.int=..., headers: _abc.Mapping[_builtins.str, _builtins.str] | None=..., time: _timestamp_pb2.Timestamp | None=..., backend_latency: _duration_pb2.Duration | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['backend_latency', b'backend_latency', 'time', b'time'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['backend_latency', b'backend_latency', 'code', b'code', 'headers', b'headers', 'size', b'size', 'time', b'time'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class Resource(_message.Message): + """This message defines core attributes for a resource. A resource is an + addressable (named) entity provided by the destination service. For + example, a file stored on a network storage service. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class LabelsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str + + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + + @_typing.final + class AnnotationsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str + + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + SERVICE_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + LABELS_FIELD_NUMBER: _builtins.int + UID_FIELD_NUMBER: _builtins.int + ANNOTATIONS_FIELD_NUMBER: _builtins.int + DISPLAY_NAME_FIELD_NUMBER: _builtins.int + CREATE_TIME_FIELD_NUMBER: _builtins.int + UPDATE_TIME_FIELD_NUMBER: _builtins.int + DELETE_TIME_FIELD_NUMBER: _builtins.int + ETAG_FIELD_NUMBER: _builtins.int + LOCATION_FIELD_NUMBER: _builtins.int + service: _builtins.str + 'The name of the service that this resource belongs to, such as\n `pubsub.googleapis.com`. The service may be different from the DNS\n hostname that actually serves the request.\n ' + name: _builtins.str + 'The stable identifier (name) of a resource on the `service`. A resource\n can be logically identified as "//{resource.service}/{resource.name}".\n The differences between a resource name and a URI are:\n\n * Resource name is a logical identifier, independent of network\n protocol and API version. For example,\n `//pubsub.googleapis.com/projects/123/topics/news-feed`.\n * URI often includes protocol and version information, so it can\n be used directly by applications. For example,\n `https://pubsub.googleapis.com/v1/projects/123/topics/news-feed`.\n\n See https://cloud.google.com/apis/design/resource_names for details.\n ' + type: _builtins.str + 'The type of the resource. The syntax is platform-specific because\n different platforms define their resources differently.\n\n For Google APIs, the type format must be "{service}/{kind}", such as\n "pubsub.googleapis.com/Topic".\n ' + uid: _builtins.str + 'The unique identifier of the resource. UID is unique in the time\n and space for this resource within the scope of the service. It is\n typically generated by the server on successful creation of a resource\n and must not be changed. UID is used to uniquely identify resources\n with resource name reuses. This should be a UUID4.\n ' + display_name: _builtins.str + 'Mutable. The display name set by clients. Must be <= 63 characters.' + etag: _builtins.str + 'Output only. An opaque value that uniquely identifies a version or\n generation of a resource. It can be used to confirm that the client\n and server agree on the ordering of a resource being written.\n ' + location: _builtins.str + 'Immutable. The location of the resource. The location encoding is\n specific to the service provider, and new encoding may be introduced\n as the service evolves.\n\n For Google Cloud products, the encoding is what is used by Google Cloud\n APIs, such as `us-east1`, `aws-us-east-1`, and `azure-eastus2`. The\n semantics of `location` is identical to the\n `cloud.googleapis.com/location` label used by some Google Cloud APIs.\n ' + + @_builtins.property + def labels(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: + """The labels or tags on the resource, such as AWS resource tags and + Kubernetes resource labels. + """ + + @_builtins.property + def annotations(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: + """Annotations is an unstructured key-value map stored with a resource that + may be set by external tools to store and retrieve arbitrary metadata. + They are not queryable and should be preserved when modifying objects. + + More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + """ + + @_builtins.property + def create_time(self) -> _timestamp_pb2.Timestamp: + """Output only. The timestamp when the resource was created. This may + be either the time creation was initiated or when it was completed. + """ + + @_builtins.property + def update_time(self) -> _timestamp_pb2.Timestamp: + """Output only. The timestamp when the resource was last updated. Any + change to the resource made by users must refresh this value. + Changes to a resource made by the service should refresh this value. + """ + + @_builtins.property + def delete_time(self) -> _timestamp_pb2.Timestamp: + """Output only. The timestamp when the resource was deleted. + If the resource is not deleted, this must be empty. + """ + + def __init__(self, *, service: _builtins.str=..., name: _builtins.str=..., type: _builtins.str=..., labels: _abc.Mapping[_builtins.str, _builtins.str] | None=..., uid: _builtins.str=..., annotations: _abc.Mapping[_builtins.str, _builtins.str] | None=..., display_name: _builtins.str=..., create_time: _timestamp_pb2.Timestamp | None=..., update_time: _timestamp_pb2.Timestamp | None=..., delete_time: _timestamp_pb2.Timestamp | None=..., etag: _builtins.str=..., location: _builtins.str=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['create_time', b'create_time', 'delete_time', b'delete_time', 'update_time', b'update_time'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['annotations', b'annotations', 'create_time', b'create_time', 'delete_time', b'delete_time', 'display_name', b'display_name', 'etag', b'etag', 'labels', b'labels', 'location', b'location', 'name', b'name', 'service', b'service', 'type', b'type', 'uid', b'uid', 'update_time', b'update_time'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + ORIGIN_FIELD_NUMBER: _builtins.int + SOURCE_FIELD_NUMBER: _builtins.int + DESTINATION_FIELD_NUMBER: _builtins.int + REQUEST_FIELD_NUMBER: _builtins.int + RESPONSE_FIELD_NUMBER: _builtins.int + RESOURCE_FIELD_NUMBER: _builtins.int + API_FIELD_NUMBER: _builtins.int + EXTENSIONS_FIELD_NUMBER: _builtins.int + + @_builtins.property + def origin(self) -> Global___AttributeContext.Peer: + """The origin of a network activity. In a multi hop network activity, + the origin represents the sender of the first hop. For the first hop, + the `source` and the `origin` must have the same content. + """ + + @_builtins.property + def source(self) -> Global___AttributeContext.Peer: + """The source of a network activity, such as starting a TCP connection. + In a multi hop network activity, the source represents the sender of the + last hop. + """ + + @_builtins.property + def destination(self) -> Global___AttributeContext.Peer: + """The destination of a network activity, such as accepting a TCP connection. + In a multi hop network activity, the destination represents the receiver of + the last hop. + """ + + @_builtins.property + def request(self) -> Global___AttributeContext.Request: + """Represents a network request, such as an HTTP request.""" + + @_builtins.property + def response(self) -> Global___AttributeContext.Response: + """Represents a network response, such as an HTTP response.""" + + @_builtins.property + def resource(self) -> Global___AttributeContext.Resource: + """Represents a target resource that is involved with a network activity. + If multiple resources are involved with an activity, this must be the + primary one. + """ + + @_builtins.property + def api(self) -> Global___AttributeContext.Api: + """Represents an API operation that is involved to a network activity.""" + + @_builtins.property + def extensions(self) -> _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]: + """Supports extensions for advanced use cases, such as logs and metrics.""" + + def __init__(self, *, origin: Global___AttributeContext.Peer | None=..., source: Global___AttributeContext.Peer | None=..., destination: Global___AttributeContext.Peer | None=..., request: Global___AttributeContext.Request | None=..., response: Global___AttributeContext.Response | None=..., resource: Global___AttributeContext.Resource | None=..., api: Global___AttributeContext.Api | None=..., extensions: _abc.Iterable[_any_pb2.Any] | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['api', b'api', 'destination', b'destination', 'origin', b'origin', 'request', b'request', 'resource', b'resource', 'response', b'response', 'source', b'source'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['api', b'api', 'destination', b'destination', 'extensions', b'extensions', 'origin', b'origin', 'request', b'request', 'resource', b'resource', 'response', b'response', 'source', b'source'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___AttributeContext: _TypeAlias = AttributeContext \ No newline at end of file diff --git a/src/viam/gen/google/rpc/error_details_grpc.py b/src/viam/gen/google/rpc/error_details_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/rpc/error_details_pb2.py b/src/viam/gen/google/rpc/error_details_pb2.py new file mode 100644 index 0000000000..5bce0cbd7b --- /dev/null +++ b/src/viam/gen/google/rpc/error_details_pb2.py @@ -0,0 +1,52 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/rpc/error_details.proto') +_sym_db = _symbol_database.Default() +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1egoogle/rpc/error_details.proto\x12\ngoogle.rpc\x1a\x1egoogle/protobuf/duration.proto"\xb9\x01\n\tErrorInfo\x12\x16\n\x06reason\x18\x01 \x01(\tR\x06reason\x12\x16\n\x06domain\x18\x02 \x01(\tR\x06domain\x12?\n\x08metadata\x18\x03 \x03(\x0b2#.google.rpc.ErrorInfo.MetadataEntryR\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01"G\n\tRetryInfo\x12:\n\x0bretry_delay\x18\x01 \x01(\x0b2\x19.google.protobuf.DurationR\nretryDelay"H\n\tDebugInfo\x12#\n\rstack_entries\x18\x01 \x03(\tR\x0cstackEntries\x12\x16\n\x06detail\x18\x02 \x01(\tR\x06detail"\x8e\x04\n\x0cQuotaFailure\x12B\n\nviolations\x18\x01 \x03(\x0b2".google.rpc.QuotaFailure.ViolationR\nviolations\x1a\xb9\x03\n\tViolation\x12\x18\n\x07subject\x18\x01 \x01(\tR\x07subject\x12 \n\x0bdescription\x18\x02 \x01(\tR\x0bdescription\x12\x1f\n\x0bapi_service\x18\x03 \x01(\tR\napiService\x12!\n\x0cquota_metric\x18\x04 \x01(\tR\x0bquotaMetric\x12\x19\n\x08quota_id\x18\x05 \x01(\tR\x07quotaId\x12b\n\x10quota_dimensions\x18\x06 \x03(\x0b27.google.rpc.QuotaFailure.Violation.QuotaDimensionsEntryR\x0fquotaDimensions\x12\x1f\n\x0bquota_value\x18\x07 \x01(\x03R\nquotaValue\x121\n\x12future_quota_value\x18\x08 \x01(\x03H\x00R\x10futureQuotaValue\x88\x01\x01\x1aB\n\x14QuotaDimensionsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x15\n\x13_future_quota_value"\xbd\x01\n\x13PreconditionFailure\x12I\n\nviolations\x18\x01 \x03(\x0b2).google.rpc.PreconditionFailure.ViolationR\nviolations\x1a[\n\tViolation\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x18\n\x07subject\x18\x02 \x01(\tR\x07subject\x12 \n\x0bdescription\x18\x03 \x01(\tR\x0bdescription"\x8c\x02\n\nBadRequest\x12P\n\x10field_violations\x18\x01 \x03(\x0b2%.google.rpc.BadRequest.FieldViolationR\x0ffieldViolations\x1a\xab\x01\n\x0eFieldViolation\x12\x14\n\x05field\x18\x01 \x01(\tR\x05field\x12 \n\x0bdescription\x18\x02 \x01(\tR\x0bdescription\x12\x16\n\x06reason\x18\x03 \x01(\tR\x06reason\x12I\n\x11localized_message\x18\x04 \x01(\x0b2\x1c.google.rpc.LocalizedMessageR\x10localizedMessage"O\n\x0bRequestInfo\x12\x1d\n\nrequest_id\x18\x01 \x01(\tR\trequestId\x12!\n\x0cserving_data\x18\x02 \x01(\tR\x0bservingData"\x90\x01\n\x0cResourceInfo\x12#\n\rresource_type\x18\x01 \x01(\tR\x0cresourceType\x12#\n\rresource_name\x18\x02 \x01(\tR\x0cresourceName\x12\x14\n\x05owner\x18\x03 \x01(\tR\x05owner\x12 \n\x0bdescription\x18\x04 \x01(\tR\x0bdescription"o\n\x04Help\x12+\n\x05links\x18\x01 \x03(\x0b2\x15.google.rpc.Help.LinkR\x05links\x1a:\n\x04Link\x12 \n\x0bdescription\x18\x01 \x01(\tR\x0bdescription\x12\x10\n\x03url\x18\x02 \x01(\tR\x03url"D\n\x10LocalizedMessage\x12\x16\n\x06locale\x18\x01 \x01(\tR\x06locale\x12\x18\n\x07message\x18\x02 \x01(\tR\x07messageBl\n\x0ecom.google.rpcB\x11ErrorDetailsProtoP\x01Z?google.golang.org/genproto/googleapis/rpc/errdetails;errdetails\xa2\x02\x03RPCb\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.rpc.error_details_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.rpcB\x11ErrorDetailsProtoP\x01Z?google.golang.org/genproto/googleapis/rpc/errdetails;errdetails\xa2\x02\x03RPC' + _globals['_ERRORINFO_METADATAENTRY']._loaded_options = None + _globals['_ERRORINFO_METADATAENTRY']._serialized_options = b'8\x01' + _globals['_QUOTAFAILURE_VIOLATION_QUOTADIMENSIONSENTRY']._loaded_options = None + _globals['_QUOTAFAILURE_VIOLATION_QUOTADIMENSIONSENTRY']._serialized_options = b'8\x01' + _globals['_ERRORINFO']._serialized_start = 79 + _globals['_ERRORINFO']._serialized_end = 264 + _globals['_ERRORINFO_METADATAENTRY']._serialized_start = 205 + _globals['_ERRORINFO_METADATAENTRY']._serialized_end = 264 + _globals['_RETRYINFO']._serialized_start = 266 + _globals['_RETRYINFO']._serialized_end = 337 + _globals['_DEBUGINFO']._serialized_start = 339 + _globals['_DEBUGINFO']._serialized_end = 411 + _globals['_QUOTAFAILURE']._serialized_start = 414 + _globals['_QUOTAFAILURE']._serialized_end = 940 + _globals['_QUOTAFAILURE_VIOLATION']._serialized_start = 499 + _globals['_QUOTAFAILURE_VIOLATION']._serialized_end = 940 + _globals['_QUOTAFAILURE_VIOLATION_QUOTADIMENSIONSENTRY']._serialized_start = 851 + _globals['_QUOTAFAILURE_VIOLATION_QUOTADIMENSIONSENTRY']._serialized_end = 917 + _globals['_PRECONDITIONFAILURE']._serialized_start = 943 + _globals['_PRECONDITIONFAILURE']._serialized_end = 1132 + _globals['_PRECONDITIONFAILURE_VIOLATION']._serialized_start = 1041 + _globals['_PRECONDITIONFAILURE_VIOLATION']._serialized_end = 1132 + _globals['_BADREQUEST']._serialized_start = 1135 + _globals['_BADREQUEST']._serialized_end = 1403 + _globals['_BADREQUEST_FIELDVIOLATION']._serialized_start = 1232 + _globals['_BADREQUEST_FIELDVIOLATION']._serialized_end = 1403 + _globals['_REQUESTINFO']._serialized_start = 1405 + _globals['_REQUESTINFO']._serialized_end = 1484 + _globals['_RESOURCEINFO']._serialized_start = 1487 + _globals['_RESOURCEINFO']._serialized_end = 1631 + _globals['_HELP']._serialized_start = 1633 + _globals['_HELP']._serialized_end = 1744 + _globals['_HELP_LINK']._serialized_start = 1686 + _globals['_HELP_LINK']._serialized_end = 1744 + _globals['_LOCALIZEDMESSAGE']._serialized_start = 1746 + _globals['_LOCALIZEDMESSAGE']._serialized_end = 1814 \ No newline at end of file diff --git a/src/viam/gen/google/rpc/error_details_pb2.pyi b/src/viam/gen/google/rpc/error_details_pb2.pyi new file mode 100644 index 0000000000..4e0862af4e --- /dev/null +++ b/src/viam/gen/google/rpc/error_details_pb2.pyi @@ -0,0 +1,471 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import duration_pb2 as _duration_pb2 +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class ErrorInfo(_message.Message): + """Describes the cause of the error with structured details. + + Example of an error when contacting the "pubsub.googleapis.com" API when it + is not enabled: + + { "reason": "API_DISABLED" + "domain": "googleapis.com" + "metadata": { + "resource": "projects/123", + "service": "pubsub.googleapis.com" + } + } + + This response indicates that the pubsub.googleapis.com API is not enabled. + + Example of an error that is returned when attempting to create a Spanner + instance in a region that is out of stock: + + { "reason": "STOCKOUT" + "domain": "spanner.googleapis.com", + "metadata": { + "availableRegions": "us-central1,us-east2" + } + } + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class MetadataEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str + + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + REASON_FIELD_NUMBER: _builtins.int + DOMAIN_FIELD_NUMBER: _builtins.int + METADATA_FIELD_NUMBER: _builtins.int + reason: _builtins.str + 'The reason of the error. This is a constant value that identifies the\n proximate cause of the error. Error reasons are unique within a particular\n domain of errors. This should be at most 63 characters and match a\n regular expression of `[A-Z][A-Z0-9_]+[A-Z0-9]`, which represents\n UPPER_SNAKE_CASE.\n ' + domain: _builtins.str + 'The logical grouping to which the "reason" belongs. The error domain\n is typically the registered service name of the tool or product that\n generates the error. Example: "pubsub.googleapis.com". If the error is\n generated by some common infrastructure, the error domain must be a\n globally unique value that identifies the infrastructure. For Google API\n infrastructure, the error domain is "googleapis.com".\n ' + + @_builtins.property + def metadata(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: + """Additional structured details about this error. + + Keys must match a regular expression of `[a-z][a-zA-Z0-9-_]+` but should + ideally be lowerCamelCase. Also, they must be limited to 64 characters in + length. When identifying the current value of an exceeded limit, the units + should be contained in the key, not the value. For example, rather than + `{"instanceLimit": "100/request"}`, should be returned as, + `{"instanceLimitPerRequest": "100"}`, if the client exceeds the number of + instances that can be created in a single (batch) request. + """ + + def __init__(self, *, reason: _builtins.str=..., domain: _builtins.str=..., metadata: _abc.Mapping[_builtins.str, _builtins.str] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['domain', b'domain', 'metadata', b'metadata', 'reason', b'reason'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___ErrorInfo: _TypeAlias = ErrorInfo + +@_typing.final +class RetryInfo(_message.Message): + """Describes when the clients can retry a failed request. Clients could ignore + the recommendation here or retry when this information is missing from error + responses. + + It's always recommended that clients should use exponential backoff when + retrying. + + Clients should wait until `retry_delay` amount of time has passed since + receiving the error response before retrying. If retrying requests also + fail, clients should use an exponential backoff scheme to gradually increase + the delay between retries based on `retry_delay`, until either a maximum + number of retries have been reached or a maximum retry delay cap has been + reached. + """ + DESCRIPTOR: _descriptor.Descriptor + RETRY_DELAY_FIELD_NUMBER: _builtins.int + + @_builtins.property + def retry_delay(self) -> _duration_pb2.Duration: + """Clients should wait at least this long between retrying the same request.""" + + def __init__(self, *, retry_delay: _duration_pb2.Duration | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['retry_delay', b'retry_delay'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['retry_delay', b'retry_delay'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___RetryInfo: _TypeAlias = RetryInfo + +@_typing.final +class DebugInfo(_message.Message): + """Describes additional debugging info.""" + DESCRIPTOR: _descriptor.Descriptor + STACK_ENTRIES_FIELD_NUMBER: _builtins.int + DETAIL_FIELD_NUMBER: _builtins.int + detail: _builtins.str + 'Additional debugging information provided by the server.' + + @_builtins.property + def stack_entries(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + """The stack trace entries indicating where the error occurred.""" + + def __init__(self, *, stack_entries: _abc.Iterable[_builtins.str] | None=..., detail: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['detail', b'detail', 'stack_entries', b'stack_entries'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___DebugInfo: _TypeAlias = DebugInfo + +@_typing.final +class QuotaFailure(_message.Message): + """Describes how a quota check failed. + + For example if a daily limit was exceeded for the calling project, + a service could respond with a QuotaFailure detail containing the project + id and the description of the quota limit that was exceeded. If the + calling project hasn't enabled the service in the developer console, then + a service could respond with the project id and set `service_disabled` + to true. + + Also see RetryInfo and Help types for other details about handling a + quota failure. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class Violation(_message.Message): + """A message type used to describe a single quota violation. For example, a + daily quota or a custom quota that was exceeded. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class QuotaDimensionsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str + + def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + SUBJECT_FIELD_NUMBER: _builtins.int + DESCRIPTION_FIELD_NUMBER: _builtins.int + API_SERVICE_FIELD_NUMBER: _builtins.int + QUOTA_METRIC_FIELD_NUMBER: _builtins.int + QUOTA_ID_FIELD_NUMBER: _builtins.int + QUOTA_DIMENSIONS_FIELD_NUMBER: _builtins.int + QUOTA_VALUE_FIELD_NUMBER: _builtins.int + FUTURE_QUOTA_VALUE_FIELD_NUMBER: _builtins.int + subject: _builtins.str + 'The subject on which the quota check failed.\n For example, "clientip:" or "project:".\n ' + description: _builtins.str + 'A description of how the quota check failed. Clients can use this\n description to find more about the quota configuration in the service\'s\n public documentation, or find the relevant quota limit to adjust through\n developer console.\n\n For example: "Service disabled" or "Daily Limit for read operations\n exceeded".\n ' + api_service: _builtins.str + 'The API Service from which the `QuotaFailure.Violation` orginates. In\n some cases, Quota issues originate from an API Service other than the one\n that was called. In other words, a dependency of the called API Service\n could be the cause of the `QuotaFailure`, and this field would have the\n dependency API service name.\n\n For example, if the called API is Kubernetes Engine API\n (container.googleapis.com), and a quota violation occurs in the\n Kubernetes Engine API itself, this field would be\n "container.googleapis.com". On the other hand, if the quota violation\n occurs when the Kubernetes Engine API creates VMs in the Compute Engine\n API (compute.googleapis.com), this field would be\n "compute.googleapis.com".\n ' + quota_metric: _builtins.str + 'The metric of the violated quota. A quota metric is a named counter to\n measure usage, such as API requests or CPUs. When an activity occurs in a\n service, such as Virtual Machine allocation, one or more quota metrics\n may be affected.\n\n For example, "compute.googleapis.com/cpus_per_vm_family",\n "storage.googleapis.com/internet_egress_bandwidth".\n ' + quota_id: _builtins.str + 'The id of the violated quota. Also know as "limit name", this is the\n unique identifier of a quota in the context of an API service.\n\n For example, "CPUS-PER-VM-FAMILY-per-project-region".\n ' + quota_value: _builtins.int + 'The enforced quota value at the time of the `QuotaFailure`.\n\n For example, if the enforced quota value at the time of the\n `QuotaFailure` on the number of CPUs is "10", then the value of this\n field would reflect this quantity.\n ' + future_quota_value: _builtins.int + 'The new quota value being rolled out at the time of the violation. At the\n completion of the rollout, this value will be enforced in place of\n quota_value. If no rollout is in progress at the time of the violation,\n this field is not set.\n\n For example, if at the time of the violation a rollout is in progress\n changing the number of CPUs quota from 10 to 20, 20 would be the value of\n this field.\n ' + + @_builtins.property + def quota_dimensions(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: + """The dimensions of the violated quota. Every non-global quota is enforced + on a set of dimensions. While quota metric defines what to count, the + dimensions specify for what aspects the counter should be increased. + + For example, the quota "CPUs per region per VM family" enforces a limit + on the metric "compute.googleapis.com/cpus_per_vm_family" on dimensions + "region" and "vm_family". And if the violation occurred in region + "us-central1" and for VM family "n1", the quota_dimensions would be, + + { + "region": "us-central1", + "vm_family": "n1", + } + + When a quota is enforced globally, the quota_dimensions would always be + empty. + """ + + def __init__(self, *, subject: _builtins.str=..., description: _builtins.str=..., api_service: _builtins.str=..., quota_metric: _builtins.str=..., quota_id: _builtins.str=..., quota_dimensions: _abc.Mapping[_builtins.str, _builtins.str] | None=..., quota_value: _builtins.int=..., future_quota_value: _builtins.int | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_future_quota_value', b'_future_quota_value', 'future_quota_value', b'future_quota_value'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_future_quota_value', b'_future_quota_value', 'api_service', b'api_service', 'description', b'description', 'future_quota_value', b'future_quota_value', 'quota_dimensions', b'quota_dimensions', 'quota_id', b'quota_id', 'quota_metric', b'quota_metric', 'quota_value', b'quota_value', 'subject', b'subject'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + _WhichOneofReturnType__future_quota_value: _TypeAlias = _typing.Literal['future_quota_value'] + _WhichOneofArgType__future_quota_value: _TypeAlias = _typing.Literal['_future_quota_value', b'_future_quota_value'] + + def WhichOneof(self, oneof_group: _WhichOneofArgType__future_quota_value) -> _WhichOneofReturnType__future_quota_value | None: + ... + VIOLATIONS_FIELD_NUMBER: _builtins.int + + @_builtins.property + def violations(self) -> _containers.RepeatedCompositeFieldContainer[Global___QuotaFailure.Violation]: + """Describes all quota violations.""" + + def __init__(self, *, violations: _abc.Iterable[Global___QuotaFailure.Violation] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['violations', b'violations'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___QuotaFailure: _TypeAlias = QuotaFailure + +@_typing.final +class PreconditionFailure(_message.Message): + """Describes what preconditions have failed. + + For example, if an RPC failed because it required the Terms of Service to be + acknowledged, it could list the terms of service violation in the + PreconditionFailure message. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class Violation(_message.Message): + """A message type used to describe a single precondition failure.""" + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + SUBJECT_FIELD_NUMBER: _builtins.int + DESCRIPTION_FIELD_NUMBER: _builtins.int + type: _builtins.str + 'The type of PreconditionFailure. We recommend using a service-specific\n enum type to define the supported precondition violation subjects. For\n example, "TOS" for "Terms of Service violation".\n ' + subject: _builtins.str + 'The subject, relative to the type, that failed.\n For example, "google.com/cloud" relative to the "TOS" type would indicate\n which terms of service is being referenced.\n ' + description: _builtins.str + 'A description of how the precondition failed. Developers can use this\n description to understand how to fix the failure.\n\n For example: "Terms of service not accepted".\n ' + + def __init__(self, *, type: _builtins.str=..., subject: _builtins.str=..., description: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['description', b'description', 'subject', b'subject', 'type', b'type'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + VIOLATIONS_FIELD_NUMBER: _builtins.int + + @_builtins.property + def violations(self) -> _containers.RepeatedCompositeFieldContainer[Global___PreconditionFailure.Violation]: + """Describes all precondition violations.""" + + def __init__(self, *, violations: _abc.Iterable[Global___PreconditionFailure.Violation] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['violations', b'violations'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___PreconditionFailure: _TypeAlias = PreconditionFailure + +@_typing.final +class BadRequest(_message.Message): + """Describes violations in a client request. This error type focuses on the + syntactic aspects of the request. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class FieldViolation(_message.Message): + """A message type used to describe a single bad request field.""" + DESCRIPTOR: _descriptor.Descriptor + FIELD_FIELD_NUMBER: _builtins.int + DESCRIPTION_FIELD_NUMBER: _builtins.int + REASON_FIELD_NUMBER: _builtins.int + LOCALIZED_MESSAGE_FIELD_NUMBER: _builtins.int + field: _builtins.str + 'A path that leads to a field in the request body. The value will be a\n sequence of dot-separated identifiers that identify a protocol buffer\n field.\n\n Consider the following:\n\n message CreateContactRequest {\n message EmailAddress {\n enum Type {\n TYPE_UNSPECIFIED = 0;\n HOME = 1;\n WORK = 2;\n }\n\n optional string email = 1;\n repeated EmailType type = 2;\n }\n\n string full_name = 1;\n repeated EmailAddress email_addresses = 2;\n }\n\n In this example, in proto `field` could take one of the following values:\n\n * `full_name` for a violation in the `full_name` value\n * `email_addresses[1].email` for a violation in the `email` field of the\n first `email_addresses` message\n * `email_addresses[3].type[2]` for a violation in the second `type`\n value in the third `email_addresses` message.\n\n In JSON, the same values are represented as:\n\n * `fullName` for a violation in the `fullName` value\n * `emailAddresses[1].email` for a violation in the `email` field of the\n first `emailAddresses` message\n * `emailAddresses[3].type[2]` for a violation in the second `type`\n value in the third `emailAddresses` message.\n ' + description: _builtins.str + 'A description of why the request element is bad.' + reason: _builtins.str + 'The reason of the field-level error. This is a constant value that\n identifies the proximate cause of the field-level error. It should\n uniquely identify the type of the FieldViolation within the scope of the\n google.rpc.ErrorInfo.domain. This should be at most 63\n characters and match a regular expression of `[A-Z][A-Z0-9_]+[A-Z0-9]`,\n which represents UPPER_SNAKE_CASE.\n ' + + @_builtins.property + def localized_message(self) -> Global___LocalizedMessage: + """Provides a localized error message for field-level errors that is safe to + return to the API consumer. + """ + + def __init__(self, *, field: _builtins.str=..., description: _builtins.str=..., reason: _builtins.str=..., localized_message: Global___LocalizedMessage | None=...) -> None: + ... + _HasFieldArgType: _TypeAlias = _typing.Literal['localized_message', b'localized_message'] + + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['description', b'description', 'field', b'field', 'localized_message', b'localized_message', 'reason', b'reason'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + FIELD_VIOLATIONS_FIELD_NUMBER: _builtins.int + + @_builtins.property + def field_violations(self) -> _containers.RepeatedCompositeFieldContainer[Global___BadRequest.FieldViolation]: + """Describes all violations in a client request.""" + + def __init__(self, *, field_violations: _abc.Iterable[Global___BadRequest.FieldViolation] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['field_violations', b'field_violations'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___BadRequest: _TypeAlias = BadRequest + +@_typing.final +class RequestInfo(_message.Message): + """Contains metadata about the request that clients can attach when filing a bug + or providing other forms of feedback. + """ + DESCRIPTOR: _descriptor.Descriptor + REQUEST_ID_FIELD_NUMBER: _builtins.int + SERVING_DATA_FIELD_NUMBER: _builtins.int + request_id: _builtins.str + "An opaque string that should only be interpreted by the service generating\n it. For example, it can be used to identify requests in the service's logs.\n " + serving_data: _builtins.str + 'Any data that was used to serve this request. For example, an encrypted\n stack trace that can be sent back to the service provider for debugging.\n ' + + def __init__(self, *, request_id: _builtins.str=..., serving_data: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['request_id', b'request_id', 'serving_data', b'serving_data'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___RequestInfo: _TypeAlias = RequestInfo + +@_typing.final +class ResourceInfo(_message.Message): + """Describes the resource that is being accessed.""" + DESCRIPTOR: _descriptor.Descriptor + RESOURCE_TYPE_FIELD_NUMBER: _builtins.int + RESOURCE_NAME_FIELD_NUMBER: _builtins.int + OWNER_FIELD_NUMBER: _builtins.int + DESCRIPTION_FIELD_NUMBER: _builtins.int + resource_type: _builtins.str + 'A name for the type of resource being accessed, e.g. "sql table",\n "cloud storage bucket", "file", "Google calendar"; or the type URL\n of the resource: e.g. "type.googleapis.com/google.pubsub.v1.Topic".\n ' + resource_name: _builtins.str + 'The name of the resource being accessed. For example, a shared calendar\n name: "example.com_4fghdhgsrgh@group.calendar.google.com", if the current\n error is\n [google.rpc.Code.PERMISSION_DENIED][google.rpc.Code.PERMISSION_DENIED].\n ' + owner: _builtins.str + 'The owner of the resource (optional).\n For example, "user:" or "project:".\n ' + description: _builtins.str + 'Describes what error is encountered when accessing this resource.\n For example, updating a cloud project may require the `writer` permission\n on the developer console project.\n ' + + def __init__(self, *, resource_type: _builtins.str=..., resource_name: _builtins.str=..., owner: _builtins.str=..., description: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['description', b'description', 'owner', b'owner', 'resource_name', b'resource_name', 'resource_type', b'resource_type'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___ResourceInfo: _TypeAlias = ResourceInfo + +@_typing.final +class Help(_message.Message): + """Provides links to documentation or for performing an out of band action. + + For example, if a quota check failed with an error indicating the calling + project hasn't enabled the accessed service, this can contain a URL pointing + directly to the right place in the developer console to flip the bit. + """ + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class Link(_message.Message): + """Describes a URL link.""" + DESCRIPTOR: _descriptor.Descriptor + DESCRIPTION_FIELD_NUMBER: _builtins.int + URL_FIELD_NUMBER: _builtins.int + description: _builtins.str + 'Describes what the link offers.' + url: _builtins.str + 'The URL of the link.' + + def __init__(self, *, description: _builtins.str=..., url: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['description', b'description', 'url', b'url'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... + LINKS_FIELD_NUMBER: _builtins.int + + @_builtins.property + def links(self) -> _containers.RepeatedCompositeFieldContainer[Global___Help.Link]: + """URL(s) pointing to additional information on handling the current error.""" + + def __init__(self, *, links: _abc.Iterable[Global___Help.Link] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['links', b'links'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___Help: _TypeAlias = Help + +@_typing.final +class LocalizedMessage(_message.Message): + """Provides a localized error message that is safe to return to the user + which can be attached to an RPC error. + """ + DESCRIPTOR: _descriptor.Descriptor + LOCALE_FIELD_NUMBER: _builtins.int + MESSAGE_FIELD_NUMBER: _builtins.int + locale: _builtins.str + 'The locale used following the specification defined at\n https://www.rfc-editor.org/rfc/bcp/bcp47.txt.\n Examples are: "en-US", "fr-CH", "es-MX"\n ' + message: _builtins.str + 'The localized error message in the above locale.' + + def __init__(self, *, locale: _builtins.str=..., message: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['locale', b'locale', 'message', b'message'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___LocalizedMessage: _TypeAlias = LocalizedMessage \ No newline at end of file diff --git a/src/viam/gen/google/rpc/status_grpc.py b/src/viam/gen/google/rpc/status_grpc.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/viam/gen/google/rpc/status_pb2.py b/src/viam/gen/google/rpc/status_pb2.py new file mode 100644 index 0000000000..77058b6791 --- /dev/null +++ b/src/viam/gen/google/rpc/status_pb2.py @@ -0,0 +1,18 @@ +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/rpc/status.proto') +_sym_db = _symbol_database.Default() +from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17google/rpc/status.proto\x12\ngoogle.rpc\x1a\x19google/protobuf/any.proto"f\n\x06Status\x12\x12\n\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12.\n\x07details\x18\x03 \x03(\x0b2\x14.google.protobuf.AnyR\x07detailsBa\n\x0ecom.google.rpcB\x0bStatusProtoP\x01Z7google.golang.org/genproto/googleapis/rpc/status;status\xf8\x01\x01\xa2\x02\x03RPCb\x06proto3') +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.rpc.status_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.rpcB\x0bStatusProtoP\x01Z7google.golang.org/genproto/googleapis/rpc/status;status\xf8\x01\x01\xa2\x02\x03RPC' + _globals['_STATUS']._serialized_start = 66 + _globals['_STATUS']._serialized_end = 168 \ No newline at end of file diff --git a/src/viam/gen/google/rpc/status_pb2.pyi b/src/viam/gen/google/rpc/status_pb2.pyi new file mode 100644 index 0000000000..b970cf4676 --- /dev/null +++ b/src/viam/gen/google/rpc/status_pb2.pyi @@ -0,0 +1,63 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2025 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from collections import abc as _abc +from google.protobuf import any_pb2 as _any_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class Status(_message.Message): + """The `Status` type defines a logical error model that is suitable for + different programming environments, including REST APIs and RPC APIs. It is + used by [gRPC](https://github.com/grpc). Each `Status` message contains + three pieces of data: error code, error message, and error details. + + You can find out more about this error model and how to work with it in the + [API Design Guide](https://cloud.google.com/apis/design/errors). + """ + DESCRIPTOR: _descriptor.Descriptor + CODE_FIELD_NUMBER: _builtins.int + MESSAGE_FIELD_NUMBER: _builtins.int + DETAILS_FIELD_NUMBER: _builtins.int + code: _builtins.int + 'The status code, which should be an enum value of\n [google.rpc.Code][google.rpc.Code].\n ' + message: _builtins.str + 'A developer-facing error message, which should be in English. Any\n user-facing error message should be localized and sent in the\n [google.rpc.Status.details][google.rpc.Status.details] field, or localized\n by the client.\n ' + + @_builtins.property + def details(self) -> _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]: + """A list of messages that carry the error details. There is a common set of + message types for APIs to use. + """ + + def __init__(self, *, code: _builtins.int=..., message: _builtins.str=..., details: _abc.Iterable[_any_pb2.Any] | None=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['code', b'code', 'details', b'details', 'message', b'message'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___Status: _TypeAlias = Status \ No newline at end of file diff --git a/src/viam/gen/module/v1/module_pb2.py b/src/viam/gen/module/v1/module_pb2.py index dfec7f8f9b..c35fb5045d 100644 --- a/src/viam/gen/module/v1/module_pb2.py +++ b/src/viam/gen/module/v1/module_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'module/v1/module.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'module/v1/module.proto') _sym_db = _symbol_database.Default() from ...app.v1 import robot_pb2 as app_dot_v1_dot_robot__pb2 from ...robot.v1 import robot_pb2 as robot_dot_v1_dot_robot__pb2 diff --git a/src/viam/gen/module/v1/module_pb2.pyi b/src/viam/gen/module/v1/module_pb2.pyi index 168d8aee3f..a4891fefd3 100644 --- a/src/viam/gen/module/v1/module_pb2.pyi +++ b/src/viam/gen/module/v1/module_pb2.pyi @@ -2,215 +2,234 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -from ... import app -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -from ... import robot -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +from app.v1 import robot_pb2 as _robot_pb2 +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +from robot.v1 import robot_pb2 as _robot_pb2_1 +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor -@typing.final -class AddResourceRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CONFIG_FIELD_NUMBER: builtins.int - DEPENDENCIES_FIELD_NUMBER: builtins.int +@_typing.final +class AddResourceRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CONFIG_FIELD_NUMBER: _builtins.int + DEPENDENCIES_FIELD_NUMBER: _builtins.int - @property - def config(self) -> app.v1.robot_pb2.ComponentConfig: + @_builtins.property + def config(self) -> _robot_pb2.ComponentConfig: ... - @property - def dependencies(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def dependencies(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, config: app.v1.robot_pb2.ComponentConfig | None=..., dependencies: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, config: _robot_pb2.ComponentConfig | None=..., dependencies: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['config', b'config'] - def HasField(self, field_name: typing.Literal['config', b'config']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['config', b'config', 'dependencies', b'dependencies'] - def ClearField(self, field_name: typing.Literal['config', b'config', 'dependencies', b'dependencies']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AddResourceRequest = AddResourceRequest +Global___AddResourceRequest: _TypeAlias = AddResourceRequest -@typing.final -class AddResourceResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class AddResourceResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___AddResourceResponse = AddResourceResponse +Global___AddResourceResponse: _TypeAlias = AddResourceResponse -@typing.final -class ReconfigureResourceRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CONFIG_FIELD_NUMBER: builtins.int - DEPENDENCIES_FIELD_NUMBER: builtins.int +@_typing.final +class ReconfigureResourceRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CONFIG_FIELD_NUMBER: _builtins.int + DEPENDENCIES_FIELD_NUMBER: _builtins.int - @property - def config(self) -> app.v1.robot_pb2.ComponentConfig: + @_builtins.property + def config(self) -> _robot_pb2.ComponentConfig: ... - @property - def dependencies(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def dependencies(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, config: app.v1.robot_pb2.ComponentConfig | None=..., dependencies: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, config: _robot_pb2.ComponentConfig | None=..., dependencies: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['config', b'config'] - def HasField(self, field_name: typing.Literal['config', b'config']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['config', b'config', 'dependencies', b'dependencies'] - def ClearField(self, field_name: typing.Literal['config', b'config', 'dependencies', b'dependencies']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ReconfigureResourceRequest = ReconfigureResourceRequest +Global___ReconfigureResourceRequest: _TypeAlias = ReconfigureResourceRequest -@typing.final -class ReconfigureResourceResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ReconfigureResourceResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ReconfigureResourceResponse = ReconfigureResourceResponse +Global___ReconfigureResourceResponse: _TypeAlias = ReconfigureResourceResponse -@typing.final -class RemoveResourceRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class RemoveResourceRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RemoveResourceRequest = RemoveResourceRequest +Global___RemoveResourceRequest: _TypeAlias = RemoveResourceRequest -@typing.final -class RemoveResourceResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class RemoveResourceResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___RemoveResourceResponse = RemoveResourceResponse +Global___RemoveResourceResponse: _TypeAlias = RemoveResourceResponse -@typing.final -class HandlerDefinition(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SUBTYPE_FIELD_NUMBER: builtins.int - MODELS_FIELD_NUMBER: builtins.int +@_typing.final +class HandlerDefinition(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SUBTYPE_FIELD_NUMBER: _builtins.int + MODELS_FIELD_NUMBER: _builtins.int - @property - def subtype(self) -> robot.v1.robot_pb2.ResourceRPCSubtype: + @_builtins.property + def subtype(self) -> _robot_pb2_1.ResourceRPCSubtype: ... - @property - def models(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def models(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, subtype: robot.v1.robot_pb2.ResourceRPCSubtype | None=..., models: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, subtype: _robot_pb2_1.ResourceRPCSubtype | None=..., models: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['subtype', b'subtype'] - def HasField(self, field_name: typing.Literal['subtype', b'subtype']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['models', b'models', 'subtype', b'subtype'] - def ClearField(self, field_name: typing.Literal['models', b'models', 'subtype', b'subtype']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___HandlerDefinition = HandlerDefinition +Global___HandlerDefinition: _TypeAlias = HandlerDefinition -@typing.final -class HandlerMap(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - HANDLERS_FIELD_NUMBER: builtins.int +@_typing.final +class HandlerMap(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + HANDLERS_FIELD_NUMBER: _builtins.int - @property - def handlers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___HandlerDefinition]: + @_builtins.property + def handlers(self) -> _containers.RepeatedCompositeFieldContainer[Global___HandlerDefinition]: ... - def __init__(self, *, handlers: collections.abc.Iterable[global___HandlerDefinition] | None=...) -> None: + def __init__(self, *, handlers: _abc.Iterable[Global___HandlerDefinition] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['handlers', b'handlers'] - def ClearField(self, field_name: typing.Literal['handlers', b'handlers']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___HandlerMap = HandlerMap +Global___HandlerMap: _TypeAlias = HandlerMap -@typing.final -class ReadyRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARENT_ADDRESS_FIELD_NUMBER: builtins.int - WEBRTC_OFFER_FIELD_NUMBER: builtins.int - parent_address: builtins.str - webrtc_offer: builtins.str +@_typing.final +class ReadyRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PARENT_ADDRESS_FIELD_NUMBER: _builtins.int + WEBRTC_OFFER_FIELD_NUMBER: _builtins.int + parent_address: _builtins.str + webrtc_offer: _builtins.str - def __init__(self, *, parent_address: builtins.str=..., webrtc_offer: builtins.str=...) -> None: + def __init__(self, *, parent_address: _builtins.str=..., webrtc_offer: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['parent_address', b'parent_address', 'webrtc_offer', b'webrtc_offer'] - def ClearField(self, field_name: typing.Literal['parent_address', b'parent_address', 'webrtc_offer', b'webrtc_offer']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ReadyRequest = ReadyRequest +Global___ReadyRequest: _TypeAlias = ReadyRequest -@typing.final -class ReadyResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - READY_FIELD_NUMBER: builtins.int - HANDLERMAP_FIELD_NUMBER: builtins.int - WEBRTC_ANSWER_FIELD_NUMBER: builtins.int - ready: builtins.bool - webrtc_answer: builtins.str +@_typing.final +class ReadyResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + READY_FIELD_NUMBER: _builtins.int + HANDLERMAP_FIELD_NUMBER: _builtins.int + WEBRTC_ANSWER_FIELD_NUMBER: _builtins.int + ready: _builtins.bool + webrtc_answer: _builtins.str - @property - def handlermap(self) -> global___HandlerMap: + @_builtins.property + def handlermap(self) -> Global___HandlerMap: ... - def __init__(self, *, ready: builtins.bool=..., handlermap: global___HandlerMap | None=..., webrtc_answer: builtins.str=...) -> None: + def __init__(self, *, ready: _builtins.bool=..., handlermap: Global___HandlerMap | None=..., webrtc_answer: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['handlermap', b'handlermap'] - def HasField(self, field_name: typing.Literal['handlermap', b'handlermap']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['handlermap', b'handlermap', 'ready', b'ready', 'webrtc_answer', b'webrtc_answer'] - def ClearField(self, field_name: typing.Literal['handlermap', b'handlermap', 'ready', b'ready', 'webrtc_answer', b'webrtc_answer']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ReadyResponse = ReadyResponse +Global___ReadyResponse: _TypeAlias = ReadyResponse -@typing.final -class ValidateConfigRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CONFIG_FIELD_NUMBER: builtins.int +@_typing.final +class ValidateConfigRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CONFIG_FIELD_NUMBER: _builtins.int - @property - def config(self) -> app.v1.robot_pb2.ComponentConfig: + @_builtins.property + def config(self) -> _robot_pb2.ComponentConfig: ... - def __init__(self, *, config: app.v1.robot_pb2.ComponentConfig | None=...) -> None: + def __init__(self, *, config: _robot_pb2.ComponentConfig | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['config', b'config'] - def HasField(self, field_name: typing.Literal['config', b'config']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['config', b'config'] - def ClearField(self, field_name: typing.Literal['config', b'config']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ValidateConfigRequest = ValidateConfigRequest +Global___ValidateConfigRequest: _TypeAlias = ValidateConfigRequest -@typing.final -class ValidateConfigResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DEPENDENCIES_FIELD_NUMBER: builtins.int - OPTIONAL_DEPENDENCIES_FIELD_NUMBER: builtins.int +@_typing.final +class ValidateConfigResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DEPENDENCIES_FIELD_NUMBER: _builtins.int + OPTIONAL_DEPENDENCIES_FIELD_NUMBER: _builtins.int - @property - def dependencies(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def dependencies(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def optional_dependencies(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def optional_dependencies(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, dependencies: collections.abc.Iterable[builtins.str] | None=..., optional_dependencies: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, dependencies: _abc.Iterable[_builtins.str] | None=..., optional_dependencies: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['dependencies', b'dependencies', 'optional_dependencies', b'optional_dependencies'] - def ClearField(self, field_name: typing.Literal['dependencies', b'dependencies', 'optional_dependencies', b'optional_dependencies']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ValidateConfigResponse = ValidateConfigResponse \ No newline at end of file +Global___ValidateConfigResponse: _TypeAlias = ValidateConfigResponse \ No newline at end of file diff --git a/src/viam/gen/opentelemetry/proto/common/v1/common_pb2.py b/src/viam/gen/opentelemetry/proto/common/v1/common_pb2.py index 1f32956f99..5a1a3683e5 100644 --- a/src/viam/gen/opentelemetry/proto/common/v1/common_pb2.py +++ b/src/viam/gen/opentelemetry/proto/common/v1/common_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'opentelemetry/proto/common/v1/common.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'opentelemetry/proto/common/v1/common.proto') _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*opentelemetry/proto/common/v1/common.proto\x12\x1dopentelemetry.proto.common.v1"\xe0\x02\n\x08AnyValue\x12#\n\x0cstring_value\x18\x01 \x01(\tH\x00R\x0bstringValue\x12\x1f\n\nbool_value\x18\x02 \x01(\x08H\x00R\tboolValue\x12\x1d\n\tint_value\x18\x03 \x01(\x03H\x00R\x08intValue\x12#\n\x0cdouble_value\x18\x04 \x01(\x01H\x00R\x0bdoubleValue\x12L\n\x0barray_value\x18\x05 \x01(\x0b2).opentelemetry.proto.common.v1.ArrayValueH\x00R\narrayValue\x12P\n\x0ckvlist_value\x18\x06 \x01(\x0b2+.opentelemetry.proto.common.v1.KeyValueListH\x00R\x0bkvlistValue\x12!\n\x0bbytes_value\x18\x07 \x01(\x0cH\x00R\nbytesValueB\x07\n\x05value"M\n\nArrayValue\x12?\n\x06values\x18\x01 \x03(\x0b2\'.opentelemetry.proto.common.v1.AnyValueR\x06values"O\n\x0cKeyValueList\x12?\n\x06values\x18\x01 \x03(\x0b2\'.opentelemetry.proto.common.v1.KeyValueR\x06values"[\n\x08KeyValue\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12=\n\x05value\x18\x02 \x01(\x0b2\'.opentelemetry.proto.common.v1.AnyValueR\x05value"\xc7\x01\n\x14InstrumentationScope\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version\x12G\n\nattributes\x18\x03 \x03(\x0b2\'.opentelemetry.proto.common.v1.KeyValueR\nattributes\x128\n\x18dropped_attributes_count\x18\x04 \x01(\rR\x16droppedAttributesCount"\x82\x01\n\tEntityRef\x12\x1d\n\nschema_url\x18\x01 \x01(\tR\tschemaUrl\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12\x17\n\x07id_keys\x18\x03 \x03(\tR\x06idKeys\x12)\n\x10description_keys\x18\x04 \x03(\tR\x0fdescriptionKeysB{\n io.opentelemetry.proto.common.v1B\x0bCommonProtoP\x01Z(go.opentelemetry.io/proto/otlp/common/v1\xaa\x02\x1dOpenTelemetry.Proto.Common.V1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/opentelemetry/proto/common/v1/common_pb2.pyi b/src/viam/gen/opentelemetry/proto/common/v1/common_pb2.pyi index 4408ece972..ee3ca74149 100644 --- a/src/viam/gen/opentelemetry/proto/common/v1/common_pb2.pyi +++ b/src/viam/gen/opentelemetry/proto/common/v1/common_pb2.pyi @@ -15,87 +15,97 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class AnyValue(google.protobuf.message.Message): +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class AnyValue(_message.Message): """Represents any type of attribute value. AnyValue may contain a primitive value such as a string or integer or it may contain an arbitrary nested object containing arrays, key-value lists and primitives. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - STRING_VALUE_FIELD_NUMBER: builtins.int - BOOL_VALUE_FIELD_NUMBER: builtins.int - INT_VALUE_FIELD_NUMBER: builtins.int - DOUBLE_VALUE_FIELD_NUMBER: builtins.int - ARRAY_VALUE_FIELD_NUMBER: builtins.int - KVLIST_VALUE_FIELD_NUMBER: builtins.int - BYTES_VALUE_FIELD_NUMBER: builtins.int - string_value: builtins.str - bool_value: builtins.bool - int_value: builtins.int - double_value: builtins.float - bytes_value: builtins.bytes + DESCRIPTOR: _descriptor.Descriptor + STRING_VALUE_FIELD_NUMBER: _builtins.int + BOOL_VALUE_FIELD_NUMBER: _builtins.int + INT_VALUE_FIELD_NUMBER: _builtins.int + DOUBLE_VALUE_FIELD_NUMBER: _builtins.int + ARRAY_VALUE_FIELD_NUMBER: _builtins.int + KVLIST_VALUE_FIELD_NUMBER: _builtins.int + BYTES_VALUE_FIELD_NUMBER: _builtins.int + string_value: _builtins.str + bool_value: _builtins.bool + int_value: _builtins.int + double_value: _builtins.float + bytes_value: _builtins.bytes - @property - def array_value(self) -> global___ArrayValue: + @_builtins.property + def array_value(self) -> Global___ArrayValue: ... - @property - def kvlist_value(self) -> global___KeyValueList: + @_builtins.property + def kvlist_value(self) -> Global___KeyValueList: ... - def __init__(self, *, string_value: builtins.str=..., bool_value: builtins.bool=..., int_value: builtins.int=..., double_value: builtins.float=..., array_value: global___ArrayValue | None=..., kvlist_value: global___KeyValueList | None=..., bytes_value: builtins.bytes=...) -> None: + def __init__(self, *, string_value: _builtins.str=..., bool_value: _builtins.bool=..., int_value: _builtins.int=..., double_value: _builtins.float=..., array_value: Global___ArrayValue | None=..., kvlist_value: Global___KeyValueList | None=..., bytes_value: _builtins.bytes=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['array_value', b'array_value', 'bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'double_value', b'double_value', 'int_value', b'int_value', 'kvlist_value', b'kvlist_value', 'string_value', b'string_value', 'value', b'value'] - def HasField(self, field_name: typing.Literal['array_value', b'array_value', 'bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'double_value', b'double_value', 'int_value', b'int_value', 'kvlist_value', b'kvlist_value', 'string_value', b'string_value', 'value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['array_value', b'array_value', 'bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'double_value', b'double_value', 'int_value', b'int_value', 'kvlist_value', b'kvlist_value', 'string_value', b'string_value', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['array_value', b'array_value', 'bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'double_value', b'double_value', 'int_value', b'int_value', 'kvlist_value', b'kvlist_value', 'string_value', b'string_value', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_value: _TypeAlias = _typing.Literal['string_value', 'bool_value', 'int_value', 'double_value', 'array_value', 'kvlist_value', 'bytes_value'] + _WhichOneofArgType_value: _TypeAlias = _typing.Literal['value', b'value'] - def WhichOneof(self, oneof_group: typing.Literal['value', b'value']) -> typing.Literal['string_value', 'bool_value', 'int_value', 'double_value', 'array_value', 'kvlist_value', 'bytes_value'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_value) -> _WhichOneofReturnType_value | None: ... -global___AnyValue = AnyValue +Global___AnyValue: _TypeAlias = AnyValue -@typing.final -class ArrayValue(google.protobuf.message.Message): +@_typing.final +class ArrayValue(_message.Message): """ArrayValue is a list of AnyValue messages. We need ArrayValue as a message since oneof in AnyValue does not allow repeated fields. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VALUES_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + VALUES_FIELD_NUMBER: _builtins.int - @property - def values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnyValue]: + @_builtins.property + def values(self) -> _containers.RepeatedCompositeFieldContainer[Global___AnyValue]: """Array of values. The array may be empty (contain 0 elements).""" - def __init__(self, *, values: collections.abc.Iterable[global___AnyValue] | None=...) -> None: + def __init__(self, *, values: _abc.Iterable[Global___AnyValue] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['values', b'values'] - def ClearField(self, field_name: typing.Literal['values', b'values']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ArrayValue = ArrayValue +Global___ArrayValue: _TypeAlias = ArrayValue -@typing.final -class KeyValueList(google.protobuf.message.Message): +@_typing.final +class KeyValueList(_message.Message): """KeyValueList is a list of KeyValue messages. We need KeyValueList as a message since `oneof` in AnyValue does not allow repeated fields. Everywhere else where we need a list of KeyValue messages (e.g. in Span) we use `repeated KeyValue` directly to avoid unnecessary extra wrapping (which slows down the protocol). The 2 approaches are semantically equivalent. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VALUES_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + VALUES_FIELD_NUMBER: _builtins.int - @property - def values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___KeyValue]: + @_builtins.property + def values(self) -> _containers.RepeatedCompositeFieldContainer[Global___KeyValue]: """A collection of key/value pairs of key-value pairs. The list may be empty (may contain 0 elements). @@ -104,105 +114,110 @@ class KeyValueList(google.protobuf.message.Message): The behavior of software that receives duplicated keys can be unpredictable. """ - def __init__(self, *, values: collections.abc.Iterable[global___KeyValue] | None=...) -> None: + def __init__(self, *, values: _abc.Iterable[Global___KeyValue] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['values', b'values'] - def ClearField(self, field_name: typing.Literal['values', b'values']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___KeyValueList = KeyValueList +Global___KeyValueList: _TypeAlias = KeyValueList -@typing.final -class KeyValue(google.protobuf.message.Message): +@_typing.final +class KeyValue(_message.Message): """Represents a key-value pair that is used to store Span attributes, Link attributes, etc. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str 'The key name of the pair.' - @property - def value(self) -> global___AnyValue: + @_builtins.property + def value(self) -> Global___AnyValue: """The value of the pair.""" - def __init__(self, *, key: builtins.str=..., value: global___AnyValue | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: Global___AnyValue | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def HasField(self, field_name: typing.Literal['value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___KeyValue = KeyValue +Global___KeyValue: _TypeAlias = KeyValue -@typing.final -class InstrumentationScope(google.protobuf.message.Message): +@_typing.final +class InstrumentationScope(_message.Message): """InstrumentationScope is a message representing the instrumentation scope information such as the fully qualified name and version. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - ATTRIBUTES_FIELD_NUMBER: builtins.int - DROPPED_ATTRIBUTES_COUNT_FIELD_NUMBER: builtins.int - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + ATTRIBUTES_FIELD_NUMBER: _builtins.int + DROPPED_ATTRIBUTES_COUNT_FIELD_NUMBER: _builtins.int + name: _builtins.str 'A name denoting the Instrumentation scope.\n An empty instrumentation scope name means the name is unknown.\n ' - version: builtins.str + version: _builtins.str 'Defines the version of the instrumentation scope.\n An empty instrumentation scope version means the version is unknown.\n ' - dropped_attributes_count: builtins.int + dropped_attributes_count: _builtins.int 'The number of attributes that were discarded. Attributes\n can be discarded because their keys are too long or because there are too many\n attributes. If this value is 0, then no attributes were dropped.\n ' - @property - def attributes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___KeyValue]: + @_builtins.property + def attributes(self) -> _containers.RepeatedCompositeFieldContainer[Global___KeyValue]: """Additional attributes that describe the scope. [Optional]. Attribute keys MUST be unique (it is not allowed to have more than one attribute with the same key). The behavior of software that receives duplicated keys can be unpredictable. """ - def __init__(self, *, name: builtins.str=..., version: builtins.str=..., attributes: collections.abc.Iterable[global___KeyValue] | None=..., dropped_attributes_count: builtins.int=...) -> None: + def __init__(self, *, name: _builtins.str=..., version: _builtins.str=..., attributes: _abc.Iterable[Global___KeyValue] | None=..., dropped_attributes_count: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['attributes', b'attributes', 'dropped_attributes_count', b'dropped_attributes_count', 'name', b'name', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['attributes', b'attributes', 'dropped_attributes_count', b'dropped_attributes_count', 'name', b'name', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___InstrumentationScope = InstrumentationScope +Global___InstrumentationScope: _TypeAlias = InstrumentationScope -@typing.final -class EntityRef(google.protobuf.message.Message): +@_typing.final +class EntityRef(_message.Message): """A reference to an Entity. Entity represents an object of interest associated with produced telemetry: e.g spans, metrics, profiles, or logs. Status: [Development] """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SCHEMA_URL_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - ID_KEYS_FIELD_NUMBER: builtins.int - DESCRIPTION_KEYS_FIELD_NUMBER: builtins.int - schema_url: builtins.str + DESCRIPTOR: _descriptor.Descriptor + SCHEMA_URL_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + ID_KEYS_FIELD_NUMBER: _builtins.int + DESCRIPTION_KEYS_FIELD_NUMBER: _builtins.int + schema_url: _builtins.str 'The Schema URL, if known. This is the identifier of the Schema that the entity data\n is recorded in. To learn more about Schema URL see\n https://opentelemetry.io/docs/specs/otel/schemas/#schema-url\n\n This schema_url applies to the data in this message and to the Resource attributes\n referenced by id_keys and description_keys.\n TODO: discuss if we are happy with this somewhat complicated definition of what\n the schema_url applies to.\n\n This field obsoletes the schema_url field in ResourceMetrics/ResourceSpans/ResourceLogs.\n ' - type: builtins.str + type: _builtins.str 'Defines the type of the entity. MUST not change during the lifetime of the entity.\n For example: "service" or "host". This field is required and MUST not be empty\n for valid entities.\n ' - @property - def id_keys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def id_keys(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """Attribute Keys that identify the entity. MUST not change during the lifetime of the entity. The Id must contain at least one attribute. These keys MUST exist in the containing {message}.attributes. """ - @property - def description_keys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def description_keys(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """Descriptive (non-identifying) attribute keys of the entity. MAY change over the lifetime of the entity. MAY be empty. These attribute keys are not part of entity's identity. These keys MUST exist in the containing {message}.attributes. """ - def __init__(self, *, schema_url: builtins.str=..., type: builtins.str=..., id_keys: collections.abc.Iterable[builtins.str] | None=..., description_keys: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, schema_url: _builtins.str=..., type: _builtins.str=..., id_keys: _abc.Iterable[_builtins.str] | None=..., description_keys: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['description_keys', b'description_keys', 'id_keys', b'id_keys', 'schema_url', b'schema_url', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['description_keys', b'description_keys', 'id_keys', b'id_keys', 'schema_url', b'schema_url', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EntityRef = EntityRef \ No newline at end of file +Global___EntityRef: _TypeAlias = EntityRef \ No newline at end of file diff --git a/src/viam/gen/opentelemetry/proto/resource/v1/resource_pb2.py b/src/viam/gen/opentelemetry/proto/resource/v1/resource_pb2.py index 85ef4fd4d4..af956527e4 100644 --- a/src/viam/gen/opentelemetry/proto/resource/v1/resource_pb2.py +++ b/src/viam/gen/opentelemetry/proto/resource/v1/resource_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'opentelemetry/proto/resource/v1/resource.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'opentelemetry/proto/resource/v1/resource.proto') _sym_db = _symbol_database.Default() from .....opentelemetry.proto.common.v1 import common_pb2 as opentelemetry_dot_proto_dot_common_dot_v1_dot_common__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.opentelemetry/proto/resource/v1/resource.proto\x12\x1fopentelemetry.proto.resource.v1\x1a*opentelemetry/proto/common/v1/common.proto"\xd8\x01\n\x08Resource\x12G\n\nattributes\x18\x01 \x03(\x0b2\'.opentelemetry.proto.common.v1.KeyValueR\nattributes\x128\n\x18dropped_attributes_count\x18\x02 \x01(\rR\x16droppedAttributesCount\x12I\n\x0bentity_refs\x18\x03 \x03(\x0b2(.opentelemetry.proto.common.v1.EntityRefR\nentityRefsB\x83\x01\n"io.opentelemetry.proto.resource.v1B\rResourceProtoP\x01Z*go.opentelemetry.io/proto/otlp/resource/v1\xaa\x02\x1fOpenTelemetry.Proto.Resource.V1b\x06proto3') diff --git a/src/viam/gen/opentelemetry/proto/resource/v1/resource_pb2.pyi b/src/viam/gen/opentelemetry/proto/resource/v1/resource_pb2.pyi index d273b8623a..c06c8afc06 100644 --- a/src/viam/gen/opentelemetry/proto/resource/v1/resource_pb2.pyi +++ b/src/viam/gen/opentelemetry/proto/resource/v1/resource_pb2.pyi @@ -15,35 +15,40 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -from ..... import opentelemetry -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class Resource(google.protobuf.message.Message): +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +from opentelemetry.proto.common.v1 import common_pb2 as _common_pb2 +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class Resource(_message.Message): """Resource information.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ATTRIBUTES_FIELD_NUMBER: builtins.int - DROPPED_ATTRIBUTES_COUNT_FIELD_NUMBER: builtins.int - ENTITY_REFS_FIELD_NUMBER: builtins.int - dropped_attributes_count: builtins.int + DESCRIPTOR: _descriptor.Descriptor + ATTRIBUTES_FIELD_NUMBER: _builtins.int + DROPPED_ATTRIBUTES_COUNT_FIELD_NUMBER: _builtins.int + ENTITY_REFS_FIELD_NUMBER: _builtins.int + dropped_attributes_count: _builtins.int 'The number of dropped attributes. If the value is 0, then\n no attributes were dropped.\n ' - @property - def attributes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[opentelemetry.proto.common.v1.common_pb2.KeyValue]: + @_builtins.property + def attributes(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.KeyValue]: """Set of attributes that describe the resource. Attribute keys MUST be unique (it is not allowed to have more than one attribute with the same key). The behavior of software that receives duplicated keys can be unpredictable. """ - @property - def entity_refs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[opentelemetry.proto.common.v1.common_pb2.EntityRef]: + @_builtins.property + def entity_refs(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.EntityRef]: """Set of entities that participate in this Resource. Note: keys in the references MUST exist in attributes of this message. @@ -51,9 +56,10 @@ class Resource(google.protobuf.message.Message): Status: [Development] """ - def __init__(self, *, attributes: collections.abc.Iterable[opentelemetry.proto.common.v1.common_pb2.KeyValue] | None=..., dropped_attributes_count: builtins.int=..., entity_refs: collections.abc.Iterable[opentelemetry.proto.common.v1.common_pb2.EntityRef] | None=...) -> None: + def __init__(self, *, attributes: _abc.Iterable[_common_pb2.KeyValue] | None=..., dropped_attributes_count: _builtins.int=..., entity_refs: _abc.Iterable[_common_pb2.EntityRef] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['attributes', b'attributes', 'dropped_attributes_count', b'dropped_attributes_count', 'entity_refs', b'entity_refs'] - def ClearField(self, field_name: typing.Literal['attributes', b'attributes', 'dropped_attributes_count', b'dropped_attributes_count', 'entity_refs', b'entity_refs']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Resource = Resource \ No newline at end of file +Global___Resource: _TypeAlias = Resource \ No newline at end of file diff --git a/src/viam/gen/opentelemetry/proto/trace/v1/trace_pb2.py b/src/viam/gen/opentelemetry/proto/trace/v1/trace_pb2.py index b6fd1cd140..2dfe1a289e 100644 --- a/src/viam/gen/opentelemetry/proto/trace/v1/trace_pb2.py +++ b/src/viam/gen/opentelemetry/proto/trace/v1/trace_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'opentelemetry/proto/trace/v1/trace.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'opentelemetry/proto/trace/v1/trace.proto') _sym_db = _symbol_database.Default() from .....opentelemetry.proto.common.v1 import common_pb2 as opentelemetry_dot_proto_dot_common_dot_v1_dot_common__pb2 from .....opentelemetry.proto.resource.v1 import resource_pb2 as opentelemetry_dot_proto_dot_resource_dot_v1_dot_resource__pb2 diff --git a/src/viam/gen/opentelemetry/proto/trace/v1/trace_pb2.pyi b/src/viam/gen/opentelemetry/proto/trace/v1/trace_pb2.pyi index 645353ae36..e089270f9b 100644 --- a/src/viam/gen/opentelemetry/proto/trace/v1/trace_pb2.pyi +++ b/src/viam/gen/opentelemetry/proto/trace/v1/trace_pb2.pyi @@ -15,27 +15,28 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -from ..... import opentelemetry +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from opentelemetry.proto.common.v1 import common_pb2 as _common_pb2 +from opentelemetry.proto.resource.v1 import resource_pb2 as _resource_pb2 +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor class _SpanFlags: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _SpanFlagsEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SpanFlags.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _SpanFlagsEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_SpanFlags.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor SPAN_FLAGS_DO_NOT_USE: _SpanFlags.ValueType 'The zero value for the enum. Should not be used for comparisons.\n Instead use bitwise "and" with the appropriate mask as shown above.\n ' SPAN_FLAGS_TRACE_FLAGS_MASK: _SpanFlags.ValueType @@ -67,10 +68,10 @@ SPAN_FLAGS_TRACE_FLAGS_MASK: SpanFlags.ValueType SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK: SpanFlags.ValueType 'Bits 8 and 9 are used to indicate that the parent span or link span is remote.\nBit 8 (`HAS_IS_REMOTE`) indicates whether the value is known.\nBit 9 (`IS_REMOTE`) indicates whether the span or link is remote.\n' SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK: SpanFlags.ValueType -global___SpanFlags = SpanFlags +Global___SpanFlags: _TypeAlias = SpanFlags -@typing.final -class TracesData(google.protobuf.message.Message): +@_typing.final +class TracesData(_message.Message): """TracesData represents the traces data that can be stored in a persistent storage, OR can be embedded by other protocols that transfer OTLP traces data but do not implement the OTLP protocol. @@ -82,11 +83,11 @@ class TracesData(google.protobuf.message.Message): When new fields are added into this message, the OTLP request MUST be updated as well. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RESOURCE_SPANS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + RESOURCE_SPANS_FIELD_NUMBER: _builtins.int - @property - def resource_spans(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ResourceSpans]: + @_builtins.property + def resource_spans(self) -> _containers.RepeatedCompositeFieldContainer[Global___ResourceSpans]: """An array of ResourceSpans. For data coming from a single resource this array will typically contain one element. Intermediary nodes that receive data from multiple origins @@ -94,88 +95,93 @@ class TracesData(google.protobuf.message.Message): array will contain multiple elements. """ - def __init__(self, *, resource_spans: collections.abc.Iterable[global___ResourceSpans] | None=...) -> None: + def __init__(self, *, resource_spans: _abc.Iterable[Global___ResourceSpans] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['resource_spans', b'resource_spans'] - def ClearField(self, field_name: typing.Literal['resource_spans', b'resource_spans']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TracesData = TracesData +Global___TracesData: _TypeAlias = TracesData -@typing.final -class ResourceSpans(google.protobuf.message.Message): +@_typing.final +class ResourceSpans(_message.Message): """A collection of ScopeSpans from a Resource.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RESOURCE_FIELD_NUMBER: builtins.int - SCOPE_SPANS_FIELD_NUMBER: builtins.int - SCHEMA_URL_FIELD_NUMBER: builtins.int - schema_url: builtins.str + DESCRIPTOR: _descriptor.Descriptor + RESOURCE_FIELD_NUMBER: _builtins.int + SCOPE_SPANS_FIELD_NUMBER: _builtins.int + SCHEMA_URL_FIELD_NUMBER: _builtins.int + schema_url: _builtins.str 'The Schema URL, if known. This is the identifier of the Schema that the resource data\n is recorded in. Notably, the last part of the URL path is the version number of the\n schema: http[s]://server[:port]/path/. To learn more about Schema URL see\n https://opentelemetry.io/docs/specs/otel/schemas/#schema-url\n This schema_url applies to the data in the "resource" field. It does not apply\n to the data in the "scope_spans" field which have their own schema_url field.\n ' - @property - def resource(self) -> opentelemetry.proto.resource.v1.resource_pb2.Resource: + @_builtins.property + def resource(self) -> _resource_pb2.Resource: """The resource for the spans in this message. If this field is not set then no resource info is known. """ - @property - def scope_spans(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ScopeSpans]: + @_builtins.property + def scope_spans(self) -> _containers.RepeatedCompositeFieldContainer[Global___ScopeSpans]: """A list of ScopeSpans that originate from a resource.""" - def __init__(self, *, resource: opentelemetry.proto.resource.v1.resource_pb2.Resource | None=..., scope_spans: collections.abc.Iterable[global___ScopeSpans] | None=..., schema_url: builtins.str=...) -> None: + def __init__(self, *, resource: _resource_pb2.Resource | None=..., scope_spans: _abc.Iterable[Global___ScopeSpans] | None=..., schema_url: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['resource', b'resource'] - def HasField(self, field_name: typing.Literal['resource', b'resource']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['resource', b'resource', 'schema_url', b'schema_url', 'scope_spans', b'scope_spans'] - def ClearField(self, field_name: typing.Literal['resource', b'resource', 'schema_url', b'schema_url', 'scope_spans', b'scope_spans']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ResourceSpans = ResourceSpans +Global___ResourceSpans: _TypeAlias = ResourceSpans -@typing.final -class ScopeSpans(google.protobuf.message.Message): +@_typing.final +class ScopeSpans(_message.Message): """A collection of Spans produced by an InstrumentationScope.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SCOPE_FIELD_NUMBER: builtins.int - SPANS_FIELD_NUMBER: builtins.int - SCHEMA_URL_FIELD_NUMBER: builtins.int - schema_url: builtins.str + DESCRIPTOR: _descriptor.Descriptor + SCOPE_FIELD_NUMBER: _builtins.int + SPANS_FIELD_NUMBER: _builtins.int + SCHEMA_URL_FIELD_NUMBER: _builtins.int + schema_url: _builtins.str 'The Schema URL, if known. This is the identifier of the Schema that the span data\n is recorded in. Notably, the last part of the URL path is the version number of the\n schema: http[s]://server[:port]/path/. To learn more about Schema URL see\n https://opentelemetry.io/docs/specs/otel/schemas/#schema-url\n This schema_url applies to the data in the "scope" field and all spans and span\n events in the "spans" field.\n ' - @property - def scope(self) -> opentelemetry.proto.common.v1.common_pb2.InstrumentationScope: + @_builtins.property + def scope(self) -> _common_pb2.InstrumentationScope: """The instrumentation scope information for the spans in this message. Semantically when InstrumentationScope isn't set, it is equivalent with an empty instrumentation scope name (unknown). """ - @property - def spans(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Span]: + @_builtins.property + def spans(self) -> _containers.RepeatedCompositeFieldContainer[Global___Span]: """A list of Spans that originate from an instrumentation scope.""" - def __init__(self, *, scope: opentelemetry.proto.common.v1.common_pb2.InstrumentationScope | None=..., spans: collections.abc.Iterable[global___Span] | None=..., schema_url: builtins.str=...) -> None: + def __init__(self, *, scope: _common_pb2.InstrumentationScope | None=..., spans: _abc.Iterable[Global___Span] | None=..., schema_url: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['scope', b'scope'] - def HasField(self, field_name: typing.Literal['scope', b'scope']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['schema_url', b'schema_url', 'scope', b'scope', 'spans', b'spans'] - def ClearField(self, field_name: typing.Literal['schema_url', b'schema_url', 'scope', b'scope', 'spans', b'spans']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ScopeSpans = ScopeSpans +Global___ScopeSpans: _TypeAlias = ScopeSpans -@typing.final -class Span(google.protobuf.message.Message): +@_typing.final +class Span(_message.Message): """A Span represents a single operation performed by a single component of the system. The next available field id is 17. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor class _SpanKind: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType - class _SpanKindEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Span._SpanKind.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + class _SpanKindEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[Span._SpanKind.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor SPAN_KIND_UNSPECIFIED: Span._SpanKind.ValueType 'Unspecified. Do NOT use as default.\n Implementations MAY assume SpanKind to be INTERNAL when receiving UNSPECIFIED.\n ' SPAN_KIND_INTERNAL: Span._SpanKind.ValueType @@ -206,118 +212,120 @@ class Span(google.protobuf.message.Message): SPAN_KIND_CONSUMER: Span.SpanKind.ValueType 'Indicates that the span describes consumer receiving a message from a broker.\n Like the PRODUCER kind, there is often no direct critical path latency relationship\n between producer and consumer spans.\n ' - @typing.final - class Event(google.protobuf.message.Message): + @_typing.final + class Event(_message.Message): """Event is a time-stamped annotation of the span, consisting of user-supplied text description and key-value pairs. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TIME_UNIX_NANO_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - ATTRIBUTES_FIELD_NUMBER: builtins.int - DROPPED_ATTRIBUTES_COUNT_FIELD_NUMBER: builtins.int - time_unix_nano: builtins.int + DESCRIPTOR: _descriptor.Descriptor + TIME_UNIX_NANO_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + ATTRIBUTES_FIELD_NUMBER: _builtins.int + DROPPED_ATTRIBUTES_COUNT_FIELD_NUMBER: _builtins.int + time_unix_nano: _builtins.int 'The time the event occurred.' - name: builtins.str + name: _builtins.str 'The name of the event.\n This field is semantically required to be set to non-empty string.\n ' - dropped_attributes_count: builtins.int + dropped_attributes_count: _builtins.int 'The number of dropped attributes. If the value is 0,\n then no attributes were dropped.\n ' - @property - def attributes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[opentelemetry.proto.common.v1.common_pb2.KeyValue]: + @_builtins.property + def attributes(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.KeyValue]: """A collection of attribute key/value pairs on the event. Attribute keys MUST be unique (it is not allowed to have more than one attribute with the same key). The behavior of software that receives duplicated keys can be unpredictable. """ - def __init__(self, *, time_unix_nano: builtins.int=..., name: builtins.str=..., attributes: collections.abc.Iterable[opentelemetry.proto.common.v1.common_pb2.KeyValue] | None=..., dropped_attributes_count: builtins.int=...) -> None: + def __init__(self, *, time_unix_nano: _builtins.int=..., name: _builtins.str=..., attributes: _abc.Iterable[_common_pb2.KeyValue] | None=..., dropped_attributes_count: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['attributes', b'attributes', 'dropped_attributes_count', b'dropped_attributes_count', 'name', b'name', 'time_unix_nano', b'time_unix_nano'] - def ClearField(self, field_name: typing.Literal['attributes', b'attributes', 'dropped_attributes_count', b'dropped_attributes_count', 'name', b'name', 'time_unix_nano', b'time_unix_nano']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - @typing.final - class Link(google.protobuf.message.Message): + @_typing.final + class Link(_message.Message): """A pointer from the current span to another span in the same trace or in a different trace. For example, this can be used in batching operations, where a single batch handler processes multiple requests from different traces or when the handler receives a request from a different project. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TRACE_ID_FIELD_NUMBER: builtins.int - SPAN_ID_FIELD_NUMBER: builtins.int - TRACE_STATE_FIELD_NUMBER: builtins.int - ATTRIBUTES_FIELD_NUMBER: builtins.int - DROPPED_ATTRIBUTES_COUNT_FIELD_NUMBER: builtins.int - FLAGS_FIELD_NUMBER: builtins.int - trace_id: builtins.bytes + DESCRIPTOR: _descriptor.Descriptor + TRACE_ID_FIELD_NUMBER: _builtins.int + SPAN_ID_FIELD_NUMBER: _builtins.int + TRACE_STATE_FIELD_NUMBER: _builtins.int + ATTRIBUTES_FIELD_NUMBER: _builtins.int + DROPPED_ATTRIBUTES_COUNT_FIELD_NUMBER: _builtins.int + FLAGS_FIELD_NUMBER: _builtins.int + trace_id: _builtins.bytes 'A unique identifier of a trace that this linked span is part of. The ID is a\n 16-byte array.\n ' - span_id: builtins.bytes + span_id: _builtins.bytes 'A unique identifier for the linked span. The ID is an 8-byte array.' - trace_state: builtins.str + trace_state: _builtins.str 'The trace_state associated with the link.' - dropped_attributes_count: builtins.int + dropped_attributes_count: _builtins.int 'The number of dropped attributes. If the value is 0,\n then no attributes were dropped.\n ' - flags: builtins.int + flags: _builtins.int 'Flags, a bit field.\n\n Bits 0-7 (8 least significant bits) are the trace flags as defined in W3C Trace\n Context specification. To read the 8-bit W3C trace flag, use\n `flags & SPAN_FLAGS_TRACE_FLAGS_MASK`.\n\n See https://www.w3.org/TR/trace-context-2/#trace-flags for the flag definitions.\n\n Bits 8 and 9 represent the 3 states of whether the link is remote.\n The states are (unknown, is not remote, is remote).\n To read whether the value is known, use `(flags & SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK) != 0`.\n To read whether the link is remote, use `(flags & SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK) != 0`.\n\n Readers MUST NOT assume that bits 10-31 (22 most significant bits) will be zero.\n When creating new spans, bits 10-31 (most-significant 22-bits) MUST be zero.\n\n [Optional].\n ' - @property - def attributes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[opentelemetry.proto.common.v1.common_pb2.KeyValue]: + @_builtins.property + def attributes(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.KeyValue]: """A collection of attribute key/value pairs on the link. Attribute keys MUST be unique (it is not allowed to have more than one attribute with the same key). The behavior of software that receives duplicated keys can be unpredictable. """ - def __init__(self, *, trace_id: builtins.bytes=..., span_id: builtins.bytes=..., trace_state: builtins.str=..., attributes: collections.abc.Iterable[opentelemetry.proto.common.v1.common_pb2.KeyValue] | None=..., dropped_attributes_count: builtins.int=..., flags: builtins.int=...) -> None: + def __init__(self, *, trace_id: _builtins.bytes=..., span_id: _builtins.bytes=..., trace_state: _builtins.str=..., attributes: _abc.Iterable[_common_pb2.KeyValue] | None=..., dropped_attributes_count: _builtins.int=..., flags: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['attributes', b'attributes', 'dropped_attributes_count', b'dropped_attributes_count', 'flags', b'flags', 'span_id', b'span_id', 'trace_id', b'trace_id', 'trace_state', b'trace_state'] - def ClearField(self, field_name: typing.Literal['attributes', b'attributes', 'dropped_attributes_count', b'dropped_attributes_count', 'flags', b'flags', 'span_id', b'span_id', 'trace_id', b'trace_id', 'trace_state', b'trace_state']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - TRACE_ID_FIELD_NUMBER: builtins.int - SPAN_ID_FIELD_NUMBER: builtins.int - TRACE_STATE_FIELD_NUMBER: builtins.int - PARENT_SPAN_ID_FIELD_NUMBER: builtins.int - FLAGS_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - KIND_FIELD_NUMBER: builtins.int - START_TIME_UNIX_NANO_FIELD_NUMBER: builtins.int - END_TIME_UNIX_NANO_FIELD_NUMBER: builtins.int - ATTRIBUTES_FIELD_NUMBER: builtins.int - DROPPED_ATTRIBUTES_COUNT_FIELD_NUMBER: builtins.int - EVENTS_FIELD_NUMBER: builtins.int - DROPPED_EVENTS_COUNT_FIELD_NUMBER: builtins.int - LINKS_FIELD_NUMBER: builtins.int - DROPPED_LINKS_COUNT_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - trace_id: builtins.bytes + TRACE_ID_FIELD_NUMBER: _builtins.int + SPAN_ID_FIELD_NUMBER: _builtins.int + TRACE_STATE_FIELD_NUMBER: _builtins.int + PARENT_SPAN_ID_FIELD_NUMBER: _builtins.int + FLAGS_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + KIND_FIELD_NUMBER: _builtins.int + START_TIME_UNIX_NANO_FIELD_NUMBER: _builtins.int + END_TIME_UNIX_NANO_FIELD_NUMBER: _builtins.int + ATTRIBUTES_FIELD_NUMBER: _builtins.int + DROPPED_ATTRIBUTES_COUNT_FIELD_NUMBER: _builtins.int + EVENTS_FIELD_NUMBER: _builtins.int + DROPPED_EVENTS_COUNT_FIELD_NUMBER: _builtins.int + LINKS_FIELD_NUMBER: _builtins.int + DROPPED_LINKS_COUNT_FIELD_NUMBER: _builtins.int + STATUS_FIELD_NUMBER: _builtins.int + trace_id: _builtins.bytes 'A unique identifier for a trace. All spans from the same trace share\n the same `trace_id`. The ID is a 16-byte array. An ID with all zeroes OR\n of length other than 16 bytes is considered invalid (empty string in OTLP/JSON\n is zero-length and thus is also invalid).\n\n This field is required.\n ' - span_id: builtins.bytes + span_id: _builtins.bytes 'A unique identifier for a span within a trace, assigned when the span\n is created. The ID is an 8-byte array. An ID with all zeroes OR of length\n other than 8 bytes is considered invalid (empty string in OTLP/JSON\n is zero-length and thus is also invalid).\n\n This field is required.\n ' - trace_state: builtins.str + trace_state: _builtins.str 'trace_state conveys information about request position in multiple distributed tracing graphs.\n It is a trace_state in w3c-trace-context format: https://www.w3.org/TR/trace-context/#tracestate-header\n See also https://github.com/w3c/distributed-tracing for more details about this field.\n ' - parent_span_id: builtins.bytes + parent_span_id: _builtins.bytes "The `span_id` of this span's parent span. If this is a root span, then this\n field must be empty. The ID is an 8-byte array.\n " - flags: builtins.int + flags: _builtins.int "Flags, a bit field.\n\n Bits 0-7 (8 least significant bits) are the trace flags as defined in W3C Trace\n Context specification. To read the 8-bit W3C trace flag, use\n `flags & SPAN_FLAGS_TRACE_FLAGS_MASK`.\n\n See https://www.w3.org/TR/trace-context-2/#trace-flags for the flag definitions.\n\n Bits 8 and 9 represent the 3 states of whether a span's parent\n is remote. The states are (unknown, is not remote, is remote).\n To read whether the value is known, use `(flags & SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK) != 0`.\n To read whether the span is remote, use `(flags & SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK) != 0`.\n\n When creating span messages, if the message is logically forwarded from another source\n with an equivalent flags fields (i.e., usually another OTLP span message), the field SHOULD\n be copied as-is. If creating from a source that does not have an equivalent flags field\n (such as a runtime representation of an OpenTelemetry span), the high 22 bits MUST\n be set to zero.\n Readers MUST NOT assume that bits 10-31 (22 most significant bits) will be zero.\n\n [Optional].\n " - name: builtins.str + name: _builtins.str "A description of the span's operation.\n\n For example, the name can be a qualified method name or a file name\n and a line number where the operation is called. A best practice is to use\n the same display name at the same call point in an application.\n This makes it easier to correlate spans in different traces.\n\n This field is semantically required to be set to non-empty string.\n Empty value is equivalent to an unknown span name.\n\n This field is required.\n " - kind: global___Span.SpanKind.ValueType + kind: Global___Span.SpanKind.ValueType 'Distinguishes between spans generated in a particular context. For example,\n two spans with the same name may be distinguished using `CLIENT` (caller)\n and `SERVER` (callee) to identify queueing latency associated with the span.\n ' - start_time_unix_nano: builtins.int + start_time_unix_nano: _builtins.int "The start time of the span. On the client side, this is the time\n kept by the local machine where the span execution starts. On the server side, this\n is the time when the server's application handler starts running.\n Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970.\n\n This field is semantically required and it is expected that end_time >= start_time.\n " - end_time_unix_nano: builtins.int + end_time_unix_nano: _builtins.int 'The end time of the span. On the client side, this is the time\n kept by the local machine where the span execution ends. On the server side, this\n is the time when the server application handler stops running.\n Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970.\n\n This field is semantically required and it is expected that end_time >= start_time.\n ' - dropped_attributes_count: builtins.int + dropped_attributes_count: _builtins.int 'The number of attributes that were discarded. Attributes\n can be discarded because their keys are too long or because there are too many\n attributes. If this value is 0, then no attributes were dropped.\n ' - dropped_events_count: builtins.int + dropped_events_count: _builtins.int 'The number of dropped events. If the value is 0, then no\n events were dropped.\n ' - dropped_links_count: builtins.int + dropped_links_count: _builtins.int 'The number of dropped links after the maximum size was\n enforced. If this value is 0, then no links were dropped.\n ' - @property - def attributes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[opentelemetry.proto.common.v1.common_pb2.KeyValue]: + @_builtins.property + def attributes(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.KeyValue]: """A collection of key/value pairs. Note, global attributes like server name can be set using the resource API. Examples of attributes: @@ -331,45 +339,47 @@ class Span(google.protobuf.message.Message): The behavior of software that receives duplicated keys can be unpredictable. """ - @property - def events(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Span.Event]: + @_builtins.property + def events(self) -> _containers.RepeatedCompositeFieldContainer[Global___Span.Event]: """A collection of Event items.""" - @property - def links(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Span.Link]: + @_builtins.property + def links(self) -> _containers.RepeatedCompositeFieldContainer[Global___Span.Link]: """A collection of Links, which are references from this span to a span in the same or different trace. """ - @property - def status(self) -> global___Status: + @_builtins.property + def status(self) -> Global___Status: """An optional final status for this span. Semantically when Status isn't set, it means span's status code is unset, i.e. assume STATUS_CODE_UNSET (code = 0). """ - def __init__(self, *, trace_id: builtins.bytes=..., span_id: builtins.bytes=..., trace_state: builtins.str=..., parent_span_id: builtins.bytes=..., flags: builtins.int=..., name: builtins.str=..., kind: global___Span.SpanKind.ValueType=..., start_time_unix_nano: builtins.int=..., end_time_unix_nano: builtins.int=..., attributes: collections.abc.Iterable[opentelemetry.proto.common.v1.common_pb2.KeyValue] | None=..., dropped_attributes_count: builtins.int=..., events: collections.abc.Iterable[global___Span.Event] | None=..., dropped_events_count: builtins.int=..., links: collections.abc.Iterable[global___Span.Link] | None=..., dropped_links_count: builtins.int=..., status: global___Status | None=...) -> None: + def __init__(self, *, trace_id: _builtins.bytes=..., span_id: _builtins.bytes=..., trace_state: _builtins.str=..., parent_span_id: _builtins.bytes=..., flags: _builtins.int=..., name: _builtins.str=..., kind: Global___Span.SpanKind.ValueType=..., start_time_unix_nano: _builtins.int=..., end_time_unix_nano: _builtins.int=..., attributes: _abc.Iterable[_common_pb2.KeyValue] | None=..., dropped_attributes_count: _builtins.int=..., events: _abc.Iterable[Global___Span.Event] | None=..., dropped_events_count: _builtins.int=..., links: _abc.Iterable[Global___Span.Link] | None=..., dropped_links_count: _builtins.int=..., status: Global___Status | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['status', b'status'] - def HasField(self, field_name: typing.Literal['status', b'status']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['attributes', b'attributes', 'dropped_attributes_count', b'dropped_attributes_count', 'dropped_events_count', b'dropped_events_count', 'dropped_links_count', b'dropped_links_count', 'end_time_unix_nano', b'end_time_unix_nano', 'events', b'events', 'flags', b'flags', 'kind', b'kind', 'links', b'links', 'name', b'name', 'parent_span_id', b'parent_span_id', 'span_id', b'span_id', 'start_time_unix_nano', b'start_time_unix_nano', 'status', b'status', 'trace_id', b'trace_id', 'trace_state', b'trace_state'] - def ClearField(self, field_name: typing.Literal['attributes', b'attributes', 'dropped_attributes_count', b'dropped_attributes_count', 'dropped_events_count', b'dropped_events_count', 'dropped_links_count', b'dropped_links_count', 'end_time_unix_nano', b'end_time_unix_nano', 'events', b'events', 'flags', b'flags', 'kind', b'kind', 'links', b'links', 'name', b'name', 'parent_span_id', b'parent_span_id', 'span_id', b'span_id', 'start_time_unix_nano', b'start_time_unix_nano', 'status', b'status', 'trace_id', b'trace_id', 'trace_state', b'trace_state']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Span = Span +Global___Span: _TypeAlias = Span -@typing.final -class Status(google.protobuf.message.Message): +@_typing.final +class Status(_message.Message): """The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor class _StatusCode: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType - class _StatusCodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Status._StatusCode.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + class _StatusCodeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[Status._StatusCode.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor STATUS_CODE_UNSET: Status._StatusCode.ValueType 'The default status.' STATUS_CODE_OK: Status._StatusCode.ValueType @@ -387,16 +397,17 @@ class Status(google.protobuf.message.Message): 'The Span has been validated by an Application developer or Operator to\n have completed successfully.\n ' STATUS_CODE_ERROR: Status.StatusCode.ValueType 'The Span contains an error.' - MESSAGE_FIELD_NUMBER: builtins.int - CODE_FIELD_NUMBER: builtins.int - message: builtins.str + MESSAGE_FIELD_NUMBER: _builtins.int + CODE_FIELD_NUMBER: _builtins.int + message: _builtins.str 'A developer-facing human readable error message.' - code: global___Status.StatusCode.ValueType + code: Global___Status.StatusCode.ValueType 'The status code.' - def __init__(self, *, message: builtins.str=..., code: global___Status.StatusCode.ValueType=...) -> None: + def __init__(self, *, message: _builtins.str=..., code: Global___Status.StatusCode.ValueType=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['code', b'code', 'message', b'message'] - def ClearField(self, field_name: typing.Literal['code', b'code', 'message', b'message']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Status = Status \ No newline at end of file +Global___Status: _TypeAlias = Status \ No newline at end of file diff --git a/src/viam/gen/proto/rpc/examples/echo/v1/echo_grpc.py b/src/viam/gen/proto/rpc/examples/echo/v1/echo_grpc.py index 0b6c22512b..1a57ae16ff 100644 --- a/src/viam/gen/proto/rpc/examples/echo/v1/echo_grpc.py +++ b/src/viam/gen/proto/rpc/examples/echo/v1/echo_grpc.py @@ -5,7 +5,7 @@ import grpclib.exceptions if typing.TYPE_CHECKING: import grpclib.server -import google.api.annotations_pb2 +from ...... import google from ...... import proto class EchoServiceBase(abc.ABC): diff --git a/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py b/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py index f98a31cca0..b0fb119c8c 100644 --- a/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py +++ b/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py @@ -4,9 +4,9 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'proto/rpc/examples/echo/v1/echo.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'proto/rpc/examples/echo/v1/echo.proto') _sym_db = _symbol_database.Default() -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ......google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%proto/rpc/examples/echo/v1/echo.proto\x12\x1aproto.rpc.examples.echo.v1\x1a\x1cgoogle/api/annotations.proto"\'\n\x0bEchoRequest\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"(\n\x0cEchoResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"/\n\x13EchoMultipleRequest\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"0\n\x14EchoMultipleResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"+\n\x0fEchoBiDiRequest\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message",\n\x10EchoBiDiResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message2\xf4\x02\n\x0bEchoService\x12\x80\x01\n\x04Echo\x12\'.proto.rpc.examples.echo.v1.EchoRequest\x1a(.proto.rpc.examples.echo.v1.EchoResponse"%\x82\xd3\xe4\x93\x02\x1f"\x1a/rpc/examples/echo/v1/echo:\x01*\x12u\n\x0cEchoMultiple\x12/.proto.rpc.examples.echo.v1.EchoMultipleRequest\x1a0.proto.rpc.examples.echo.v1.EchoMultipleResponse"\x000\x01\x12k\n\x08EchoBiDi\x12+.proto.rpc.examples.echo.v1.EchoBiDiRequest\x1a,.proto.rpc.examples.echo.v1.EchoBiDiResponse"\x00(\x010\x01B.Z,go.viam.com/utils/proto/rpc/examples/echo/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.pyi b/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.pyi index a53728a863..28e0d26e12 100644 --- a/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.pyi +++ b/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.pyi @@ -2,86 +2,97 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class EchoRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MESSAGE_FIELD_NUMBER: builtins.int - message: builtins.str - - def __init__(self, *, message: builtins.str=...) -> None: +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class EchoRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MESSAGE_FIELD_NUMBER: _builtins.int + message: _builtins.str + + def __init__(self, *, message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message'] - def ClearField(self, field_name: typing.Literal['message', b'message']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoRequest = EchoRequest +Global___EchoRequest: _TypeAlias = EchoRequest -@typing.final -class EchoResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MESSAGE_FIELD_NUMBER: builtins.int - message: builtins.str +@_typing.final +class EchoResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MESSAGE_FIELD_NUMBER: _builtins.int + message: _builtins.str - def __init__(self, *, message: builtins.str=...) -> None: + def __init__(self, *, message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message'] - def ClearField(self, field_name: typing.Literal['message', b'message']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoResponse = EchoResponse +Global___EchoResponse: _TypeAlias = EchoResponse -@typing.final -class EchoMultipleRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MESSAGE_FIELD_NUMBER: builtins.int - message: builtins.str +@_typing.final +class EchoMultipleRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MESSAGE_FIELD_NUMBER: _builtins.int + message: _builtins.str - def __init__(self, *, message: builtins.str=...) -> None: + def __init__(self, *, message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message'] - def ClearField(self, field_name: typing.Literal['message', b'message']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoMultipleRequest = EchoMultipleRequest +Global___EchoMultipleRequest: _TypeAlias = EchoMultipleRequest -@typing.final -class EchoMultipleResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MESSAGE_FIELD_NUMBER: builtins.int - message: builtins.str +@_typing.final +class EchoMultipleResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MESSAGE_FIELD_NUMBER: _builtins.int + message: _builtins.str - def __init__(self, *, message: builtins.str=...) -> None: + def __init__(self, *, message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message'] - def ClearField(self, field_name: typing.Literal['message', b'message']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoMultipleResponse = EchoMultipleResponse +Global___EchoMultipleResponse: _TypeAlias = EchoMultipleResponse -@typing.final -class EchoBiDiRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MESSAGE_FIELD_NUMBER: builtins.int - message: builtins.str +@_typing.final +class EchoBiDiRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MESSAGE_FIELD_NUMBER: _builtins.int + message: _builtins.str - def __init__(self, *, message: builtins.str=...) -> None: + def __init__(self, *, message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message'] - def ClearField(self, field_name: typing.Literal['message', b'message']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoBiDiRequest = EchoBiDiRequest +Global___EchoBiDiRequest: _TypeAlias = EchoBiDiRequest -@typing.final -class EchoBiDiResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MESSAGE_FIELD_NUMBER: builtins.int - message: builtins.str +@_typing.final +class EchoBiDiResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MESSAGE_FIELD_NUMBER: _builtins.int + message: _builtins.str - def __init__(self, *, message: builtins.str=...) -> None: + def __init__(self, *, message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message'] - def ClearField(self, field_name: typing.Literal['message', b'message']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoBiDiResponse = EchoBiDiResponse \ No newline at end of file +Global___EchoBiDiResponse: _TypeAlias = EchoBiDiResponse \ No newline at end of file diff --git a/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py b/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py index ecbe78a705..30f73fc337 100644 --- a/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py +++ b/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'proto/rpc/examples/echoresource/v1/echoresource.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'proto/rpc/examples/echoresource/v1/echoresource.proto') _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n5proto/rpc/examples/echoresource/v1/echoresource.proto\x12"proto.rpc.examples.echoresource.v1"C\n\x13EchoResourceRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message"0\n\x14EchoResourceResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"K\n\x1bEchoResourceMultipleRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message"8\n\x1cEchoResourceMultipleResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"G\n\x17EchoResourceBiDiRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message"4\n\x18EchoResourceBiDiResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message2\xd1\x03\n\x13EchoResourceService\x12\x83\x01\n\x0cEchoResource\x127.proto.rpc.examples.echoresource.v1.EchoResourceRequest\x1a8.proto.rpc.examples.echoresource.v1.EchoResourceResponse"\x00\x12\x9d\x01\n\x14EchoResourceMultiple\x12?.proto.rpc.examples.echoresource.v1.EchoResourceMultipleRequest\x1a@.proto.rpc.examples.echoresource.v1.EchoResourceMultipleResponse"\x000\x01\x12\x93\x01\n\x10EchoResourceBiDi\x12;.proto.rpc.examples.echoresource.v1.EchoResourceBiDiRequest\x1a<.proto.rpc.examples.echoresource.v1.EchoResourceBiDiResponse"\x00(\x010\x01B6Z4go.viam.com/utils/proto/rpc/examples/echoresource/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.pyi b/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.pyi index 0033cb7f61..f972ed00b7 100644 --- a/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.pyi +++ b/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.pyi @@ -2,92 +2,103 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class EchoResourceRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - MESSAGE_FIELD_NUMBER: builtins.int - name: builtins.str - message: builtins.str - - def __init__(self, *, name: builtins.str=..., message: builtins.str=...) -> None: +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class EchoResourceRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + MESSAGE_FIELD_NUMBER: _builtins.int + name: _builtins.str + message: _builtins.str + + def __init__(self, *, name: _builtins.str=..., message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['message', b'message', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoResourceRequest = EchoResourceRequest +Global___EchoResourceRequest: _TypeAlias = EchoResourceRequest -@typing.final -class EchoResourceResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MESSAGE_FIELD_NUMBER: builtins.int - message: builtins.str +@_typing.final +class EchoResourceResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MESSAGE_FIELD_NUMBER: _builtins.int + message: _builtins.str - def __init__(self, *, message: builtins.str=...) -> None: + def __init__(self, *, message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message'] - def ClearField(self, field_name: typing.Literal['message', b'message']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoResourceResponse = EchoResourceResponse +Global___EchoResourceResponse: _TypeAlias = EchoResourceResponse -@typing.final -class EchoResourceMultipleRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - MESSAGE_FIELD_NUMBER: builtins.int - name: builtins.str - message: builtins.str +@_typing.final +class EchoResourceMultipleRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + MESSAGE_FIELD_NUMBER: _builtins.int + name: _builtins.str + message: _builtins.str - def __init__(self, *, name: builtins.str=..., message: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=..., message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['message', b'message', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoResourceMultipleRequest = EchoResourceMultipleRequest +Global___EchoResourceMultipleRequest: _TypeAlias = EchoResourceMultipleRequest -@typing.final -class EchoResourceMultipleResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MESSAGE_FIELD_NUMBER: builtins.int - message: builtins.str +@_typing.final +class EchoResourceMultipleResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MESSAGE_FIELD_NUMBER: _builtins.int + message: _builtins.str - def __init__(self, *, message: builtins.str=...) -> None: + def __init__(self, *, message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message'] - def ClearField(self, field_name: typing.Literal['message', b'message']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoResourceMultipleResponse = EchoResourceMultipleResponse +Global___EchoResourceMultipleResponse: _TypeAlias = EchoResourceMultipleResponse -@typing.final -class EchoResourceBiDiRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - MESSAGE_FIELD_NUMBER: builtins.int - name: builtins.str - message: builtins.str +@_typing.final +class EchoResourceBiDiRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + MESSAGE_FIELD_NUMBER: _builtins.int + name: _builtins.str + message: _builtins.str - def __init__(self, *, name: builtins.str=..., message: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=..., message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['message', b'message', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoResourceBiDiRequest = EchoResourceBiDiRequest +Global___EchoResourceBiDiRequest: _TypeAlias = EchoResourceBiDiRequest -@typing.final -class EchoResourceBiDiResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MESSAGE_FIELD_NUMBER: builtins.int - message: builtins.str +@_typing.final +class EchoResourceBiDiResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MESSAGE_FIELD_NUMBER: _builtins.int + message: _builtins.str - def __init__(self, *, message: builtins.str=...) -> None: + def __init__(self, *, message: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['message', b'message'] - def ClearField(self, field_name: typing.Literal['message', b'message']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___EchoResourceBiDiResponse = EchoResourceBiDiResponse \ No newline at end of file +Global___EchoResourceBiDiResponse: _TypeAlias = EchoResourceBiDiResponse \ No newline at end of file diff --git a/src/viam/gen/proto/rpc/v1/auth_grpc.py b/src/viam/gen/proto/rpc/v1/auth_grpc.py index 53f78317d2..d336c8ed9a 100644 --- a/src/viam/gen/proto/rpc/v1/auth_grpc.py +++ b/src/viam/gen/proto/rpc/v1/auth_grpc.py @@ -5,7 +5,7 @@ import grpclib.exceptions if typing.TYPE_CHECKING: import grpclib.server -import google.api.annotations_pb2 +from .... import google from .... import proto class AuthServiceBase(abc.ABC): diff --git a/src/viam/gen/proto/rpc/v1/auth_pb2.py b/src/viam/gen/proto/rpc/v1/auth_pb2.py index 270c7c7c01..9a8a14234f 100644 --- a/src/viam/gen/proto/rpc/v1/auth_pb2.py +++ b/src/viam/gen/proto/rpc/v1/auth_pb2.py @@ -4,9 +4,9 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'proto/rpc/v1/auth.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'proto/rpc/v1/auth.proto') _sym_db = _symbol_database.Default() -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17proto/rpc/v1/auth.proto\x12\x0cproto.rpc.v1\x1a\x1cgoogle/api/annotations.proto";\n\x0bCredentials\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x18\n\x07payload\x18\x02 \x01(\tR\x07payload"j\n\x13AuthenticateRequest\x12\x16\n\x06entity\x18\x01 \x01(\tR\x06entity\x12;\n\x0bcredentials\x18\x02 \x01(\x0b2\x19.proto.rpc.v1.CredentialsR\x0bcredentials"9\n\x14AuthenticateResponse\x12!\n\x0caccess_token\x18\x01 \x01(\tR\x0baccessToken"/\n\x15AuthenticateToRequest\x12\x16\n\x06entity\x18\x01 \x01(\tR\x06entity";\n\x16AuthenticateToResponse\x12!\n\x0caccess_token\x18\x01 \x01(\tR\x0baccessToken2\x82\x01\n\x0bAuthService\x12s\n\x0cAuthenticate\x12!.proto.rpc.v1.AuthenticateRequest\x1a".proto.rpc.v1.AuthenticateResponse"\x1c\x82\xd3\xe4\x93\x02\x16"\x14/rpc/v1/authenticate2\x93\x01\n\x13ExternalAuthService\x12|\n\x0eAuthenticateTo\x12#.proto.rpc.v1.AuthenticateToRequest\x1a$.proto.rpc.v1.AuthenticateToResponse"\x1f\x82\xd3\xe4\x93\x02\x19"\x17/rpc/v1/authenticate_toB Z\x1ego.viam.com/utils/proto/rpc/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/proto/rpc/v1/auth_pb2.pyi b/src/viam/gen/proto/rpc/v1/auth_pb2.pyi index ef1f528616..fb1d89ef45 100644 --- a/src/viam/gen/proto/rpc/v1/auth_pb2.pyi +++ b/src/viam/gen/proto/rpc/v1/auth_pb2.pyi @@ -2,91 +2,102 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class Credentials(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TYPE_FIELD_NUMBER: builtins.int - PAYLOAD_FIELD_NUMBER: builtins.int - type: builtins.str +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class Credentials(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + PAYLOAD_FIELD_NUMBER: _builtins.int + type: _builtins.str 'type is the type of credentials being used.' - payload: builtins.str + payload: _builtins.str 'payload is an opaque string used that are of the given type above.' - def __init__(self, *, type: builtins.str=..., payload: builtins.str=...) -> None: + def __init__(self, *, type: _builtins.str=..., payload: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['payload', b'payload', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['payload', b'payload', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Credentials = Credentials +Global___Credentials: _TypeAlias = Credentials -@typing.final -class AuthenticateRequest(google.protobuf.message.Message): +@_typing.final +class AuthenticateRequest(_message.Message): """An AuthenticateRequest contains the credentials used to authenticate.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ENTITY_FIELD_NUMBER: builtins.int - CREDENTIALS_FIELD_NUMBER: builtins.int - entity: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ENTITY_FIELD_NUMBER: _builtins.int + CREDENTIALS_FIELD_NUMBER: _builtins.int + entity: _builtins.str - @property - def credentials(self) -> global___Credentials: + @_builtins.property + def credentials(self) -> Global___Credentials: ... - def __init__(self, *, entity: builtins.str=..., credentials: global___Credentials | None=...) -> None: + def __init__(self, *, entity: _builtins.str=..., credentials: Global___Credentials | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['credentials', b'credentials'] - def HasField(self, field_name: typing.Literal['credentials', b'credentials']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['credentials', b'credentials', 'entity', b'entity'] - def ClearField(self, field_name: typing.Literal['credentials', b'credentials', 'entity', b'entity']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AuthenticateRequest = AuthenticateRequest +Global___AuthenticateRequest: _TypeAlias = AuthenticateRequest -@typing.final -class AuthenticateResponse(google.protobuf.message.Message): +@_typing.final +class AuthenticateResponse(_message.Message): """An AuthenticateResponse is returned after successful authentication.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ACCESS_TOKEN_FIELD_NUMBER: builtins.int - access_token: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ACCESS_TOKEN_FIELD_NUMBER: _builtins.int + access_token: _builtins.str 'access_token is a JWT where only the expiration should be deemed\n important.\n Future(erd): maybe a refresh_token\n ' - def __init__(self, *, access_token: builtins.str=...) -> None: + def __init__(self, *, access_token: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['access_token', b'access_token'] - def ClearField(self, field_name: typing.Literal['access_token', b'access_token']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AuthenticateResponse = AuthenticateResponse +Global___AuthenticateResponse: _TypeAlias = AuthenticateResponse -@typing.final -class AuthenticateToRequest(google.protobuf.message.Message): +@_typing.final +class AuthenticateToRequest(_message.Message): """An AuthenticateToRequest contains the entity to authenticate to.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ENTITY_FIELD_NUMBER: builtins.int - entity: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ENTITY_FIELD_NUMBER: _builtins.int + entity: _builtins.str - def __init__(self, *, entity: builtins.str=...) -> None: + def __init__(self, *, entity: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['entity', b'entity'] - def ClearField(self, field_name: typing.Literal['entity', b'entity']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AuthenticateToRequest = AuthenticateToRequest +Global___AuthenticateToRequest: _TypeAlias = AuthenticateToRequest -@typing.final -class AuthenticateToResponse(google.protobuf.message.Message): +@_typing.final +class AuthenticateToResponse(_message.Message): """An AuthenticateResponse is returned after successful authentication.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ACCESS_TOKEN_FIELD_NUMBER: builtins.int - access_token: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ACCESS_TOKEN_FIELD_NUMBER: _builtins.int + access_token: _builtins.str 'access_token is a JWT where only the expiration should be deemed\n important.\n Future(erd): maybe a refresh_token\n ' - def __init__(self, *, access_token: builtins.str=...) -> None: + def __init__(self, *, access_token: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['access_token', b'access_token'] - def ClearField(self, field_name: typing.Literal['access_token', b'access_token']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AuthenticateToResponse = AuthenticateToResponse \ No newline at end of file +Global___AuthenticateToResponse: _TypeAlias = AuthenticateToResponse \ No newline at end of file diff --git a/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py b/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py index bddaa46dea..ab313a4fad 100644 --- a/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py +++ b/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'proto/rpc/webrtc/v1/grpc.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'proto/rpc/webrtc/v1/grpc.proto') _sym_db = _symbol_database.Default() from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 -from google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 +from .....google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1eproto/rpc/webrtc/v1/grpc.proto\x12\x13proto.rpc.webrtc.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x17google/rpc/status.proto"5\n\rPacketMessage\x12\x12\n\x04data\x18\x01 \x01(\x0cR\x04data\x12\x10\n\x03eom\x18\x02 \x01(\x08R\x03eom"\x18\n\x06Stream\x12\x0e\n\x02id\x18\x01 \x01(\x04R\x02id"\xe9\x01\n\x07Request\x123\n\x06stream\x18\x01 \x01(\x0b2\x1b.proto.rpc.webrtc.v1.StreamR\x06stream\x12?\n\x07headers\x18\x02 \x01(\x0b2#.proto.rpc.webrtc.v1.RequestHeadersH\x00R\x07headers\x12?\n\x07message\x18\x03 \x01(\x0b2#.proto.rpc.webrtc.v1.RequestMessageH\x00R\x07message\x12\x1f\n\nrst_stream\x18\x04 \x01(\x08H\x00R\trstStreamB\x06\n\x04type"\x98\x01\n\x0eRequestHeaders\x12\x16\n\x06method\x18\x01 \x01(\tR\x06method\x129\n\x08metadata\x18\x02 \x01(\x0b2\x1d.proto.rpc.webrtc.v1.MetadataR\x08metadata\x123\n\x07timeout\x18\x03 \x01(\x0b2\x19.google.protobuf.DurationR\x07timeout"\x8e\x01\n\x0eRequestMessage\x12\x1f\n\x0bhas_message\x18\x01 \x01(\x08R\nhasMessage\x12I\n\x0epacket_message\x18\x02 \x01(\x0b2".proto.rpc.webrtc.v1.PacketMessageR\rpacketMessage\x12\x10\n\x03eos\x18\x03 \x01(\x08R\x03eos"\x90\x02\n\x08Response\x123\n\x06stream\x18\x01 \x01(\x0b2\x1b.proto.rpc.webrtc.v1.StreamR\x06stream\x12@\n\x07headers\x18\x02 \x01(\x0b2$.proto.rpc.webrtc.v1.ResponseHeadersH\x00R\x07headers\x12@\n\x07message\x18\x03 \x01(\x0b2$.proto.rpc.webrtc.v1.ResponseMessageH\x00R\x07message\x12C\n\x08trailers\x18\x04 \x01(\x0b2%.proto.rpc.webrtc.v1.ResponseTrailersH\x00R\x08trailersB\x06\n\x04type"L\n\x0fResponseHeaders\x129\n\x08metadata\x18\x01 \x01(\x0b2\x1d.proto.rpc.webrtc.v1.MetadataR\x08metadata"\\\n\x0fResponseMessage\x12I\n\x0epacket_message\x18\x01 \x01(\x0b2".proto.rpc.webrtc.v1.PacketMessageR\rpacketMessage"y\n\x10ResponseTrailers\x12*\n\x06status\x18\x01 \x01(\x0b2\x12.google.rpc.StatusR\x06status\x129\n\x08metadata\x18\x02 \x01(\x0b2\x1d.proto.rpc.webrtc.v1.MetadataR\x08metadata"!\n\x07Strings\x12\x16\n\x06values\x18\x01 \x03(\tR\x06values"\x96\x01\n\x08Metadata\x125\n\x02md\x18\x01 \x03(\x0b2%.proto.rpc.webrtc.v1.Metadata.MdEntryR\x02md\x1aS\n\x07MdEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x122\n\x05value\x18\x02 \x01(\x0b2\x1c.proto.rpc.webrtc.v1.StringsR\x05value:\x028\x01B\'Z%go.viam.com/utils/proto/rpc/webrtc/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.pyi b/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.pyi index 1e7525ee06..a5aa79743c 100644 --- a/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.pyi +++ b/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.pyi @@ -2,303 +2,332 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.duration_pb2 -import google.protobuf.internal.containers -import google.protobuf.message -import google.rpc.status_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class PacketMessage(google.protobuf.message.Message): +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import duration_pb2 as _duration_pb2 +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +from google.rpc import status_pb2 as _status_pb2 +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class PacketMessage(_message.Message): """A PacketMessage is used to packetize large messages (> 64KiB) to be able to safely transmit over WebRTC data channels. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int - EOM_FIELD_NUMBER: builtins.int - data: builtins.bytes - eom: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int + EOM_FIELD_NUMBER: _builtins.int + data: _builtins.bytes + eom: _builtins.bool - def __init__(self, *, data: builtins.bytes=..., eom: builtins.bool=...) -> None: + def __init__(self, *, data: _builtins.bytes=..., eom: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data', 'eom', b'eom'] - def ClearField(self, field_name: typing.Literal['data', b'data', 'eom', b'eom']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PacketMessage = PacketMessage +Global___PacketMessage: _TypeAlias = PacketMessage -@typing.final -class Stream(google.protobuf.message.Message): +@_typing.final +class Stream(_message.Message): """A Stream represents an instance of a gRPC stream between a client and a server. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.int + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.int - def __init__(self, *, id: builtins.int=...) -> None: + def __init__(self, *, id: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Stream = Stream +Global___Stream: _TypeAlias = Stream -@typing.final -class Request(google.protobuf.message.Message): +@_typing.final +class Request(_message.Message): """A Request is a frame coming from a client. It is always associated with a stream where the client assigns the stream identifier. Servers will drop frames where the stream identifier has no association (if a non-header frames are sent). """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - STREAM_FIELD_NUMBER: builtins.int - HEADERS_FIELD_NUMBER: builtins.int - MESSAGE_FIELD_NUMBER: builtins.int - RST_STREAM_FIELD_NUMBER: builtins.int - rst_stream: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + STREAM_FIELD_NUMBER: _builtins.int + HEADERS_FIELD_NUMBER: _builtins.int + MESSAGE_FIELD_NUMBER: _builtins.int + RST_STREAM_FIELD_NUMBER: _builtins.int + rst_stream: _builtins.bool - @property - def stream(self) -> global___Stream: + @_builtins.property + def stream(self) -> Global___Stream: ... - @property - def headers(self) -> global___RequestHeaders: + @_builtins.property + def headers(self) -> Global___RequestHeaders: ... - @property - def message(self) -> global___RequestMessage: + @_builtins.property + def message(self) -> Global___RequestMessage: ... - def __init__(self, *, stream: global___Stream | None=..., headers: global___RequestHeaders | None=..., message: global___RequestMessage | None=..., rst_stream: builtins.bool=...) -> None: + def __init__(self, *, stream: Global___Stream | None=..., headers: Global___RequestHeaders | None=..., message: Global___RequestMessage | None=..., rst_stream: _builtins.bool=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['headers', b'headers', 'message', b'message', 'rst_stream', b'rst_stream', 'stream', b'stream', 'type', b'type'] - def HasField(self, field_name: typing.Literal['headers', b'headers', 'message', b'message', 'rst_stream', b'rst_stream', 'stream', b'stream', 'type', b'type']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['headers', b'headers', 'message', b'message', 'rst_stream', b'rst_stream', 'stream', b'stream', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['headers', b'headers', 'message', b'message', 'rst_stream', b'rst_stream', 'stream', b'stream', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_type: _TypeAlias = _typing.Literal['headers', 'message', 'rst_stream'] + _WhichOneofArgType_type: _TypeAlias = _typing.Literal['type', b'type'] - def WhichOneof(self, oneof_group: typing.Literal['type', b'type']) -> typing.Literal['headers', 'message', 'rst_stream'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_type) -> _WhichOneofReturnType_type | None: ... -global___Request = Request +Global___Request: _TypeAlias = Request -@typing.final -class RequestHeaders(google.protobuf.message.Message): +@_typing.final +class RequestHeaders(_message.Message): """RequestHeaders describe the unary or streaming call to make.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - METHOD_FIELD_NUMBER: builtins.int - METADATA_FIELD_NUMBER: builtins.int - TIMEOUT_FIELD_NUMBER: builtins.int - method: builtins.str + DESCRIPTOR: _descriptor.Descriptor + METHOD_FIELD_NUMBER: _builtins.int + METADATA_FIELD_NUMBER: _builtins.int + TIMEOUT_FIELD_NUMBER: _builtins.int + method: _builtins.str - @property - def metadata(self) -> global___Metadata: + @_builtins.property + def metadata(self) -> Global___Metadata: ... - @property - def timeout(self) -> google.protobuf.duration_pb2.Duration: + @_builtins.property + def timeout(self) -> _duration_pb2.Duration: ... - def __init__(self, *, method: builtins.str=..., metadata: global___Metadata | None=..., timeout: google.protobuf.duration_pb2.Duration | None=...) -> None: + def __init__(self, *, method: _builtins.str=..., metadata: Global___Metadata | None=..., timeout: _duration_pb2.Duration | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['metadata', b'metadata', 'timeout', b'timeout'] - def HasField(self, field_name: typing.Literal['metadata', b'metadata', 'timeout', b'timeout']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['metadata', b'metadata', 'method', b'method', 'timeout', b'timeout'] - def ClearField(self, field_name: typing.Literal['metadata', b'metadata', 'method', b'method', 'timeout', b'timeout']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RequestHeaders = RequestHeaders +Global___RequestHeaders: _TypeAlias = RequestHeaders -@typing.final -class RequestMessage(google.protobuf.message.Message): +@_typing.final +class RequestMessage(_message.Message): """A RequestMessage contains individual gRPC messages and a potential end-of-stream (EOS) marker. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - HAS_MESSAGE_FIELD_NUMBER: builtins.int - PACKET_MESSAGE_FIELD_NUMBER: builtins.int - EOS_FIELD_NUMBER: builtins.int - has_message: builtins.bool - eos: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + HAS_MESSAGE_FIELD_NUMBER: _builtins.int + PACKET_MESSAGE_FIELD_NUMBER: _builtins.int + EOS_FIELD_NUMBER: _builtins.int + has_message: _builtins.bool + eos: _builtins.bool - @property - def packet_message(self) -> global___PacketMessage: + @_builtins.property + def packet_message(self) -> Global___PacketMessage: ... - def __init__(self, *, has_message: builtins.bool=..., packet_message: global___PacketMessage | None=..., eos: builtins.bool=...) -> None: + def __init__(self, *, has_message: _builtins.bool=..., packet_message: Global___PacketMessage | None=..., eos: _builtins.bool=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['packet_message', b'packet_message'] - def HasField(self, field_name: typing.Literal['packet_message', b'packet_message']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['eos', b'eos', 'has_message', b'has_message', 'packet_message', b'packet_message'] - def ClearField(self, field_name: typing.Literal['eos', b'eos', 'has_message', b'has_message', 'packet_message', b'packet_message']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RequestMessage = RequestMessage +Global___RequestMessage: _TypeAlias = RequestMessage -@typing.final -class Response(google.protobuf.message.Message): +@_typing.final +class Response(_message.Message): """A Response is a frame coming from a server. It is always associated with a stream where the client assigns the stream identifier. Clients will drop frames where the stream identifier has no association. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - STREAM_FIELD_NUMBER: builtins.int - HEADERS_FIELD_NUMBER: builtins.int - MESSAGE_FIELD_NUMBER: builtins.int - TRAILERS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + STREAM_FIELD_NUMBER: _builtins.int + HEADERS_FIELD_NUMBER: _builtins.int + MESSAGE_FIELD_NUMBER: _builtins.int + TRAILERS_FIELD_NUMBER: _builtins.int - @property - def stream(self) -> global___Stream: + @_builtins.property + def stream(self) -> Global___Stream: ... - @property - def headers(self) -> global___ResponseHeaders: + @_builtins.property + def headers(self) -> Global___ResponseHeaders: ... - @property - def message(self) -> global___ResponseMessage: + @_builtins.property + def message(self) -> Global___ResponseMessage: ... - @property - def trailers(self) -> global___ResponseTrailers: + @_builtins.property + def trailers(self) -> Global___ResponseTrailers: ... - def __init__(self, *, stream: global___Stream | None=..., headers: global___ResponseHeaders | None=..., message: global___ResponseMessage | None=..., trailers: global___ResponseTrailers | None=...) -> None: + def __init__(self, *, stream: Global___Stream | None=..., headers: Global___ResponseHeaders | None=..., message: Global___ResponseMessage | None=..., trailers: Global___ResponseTrailers | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['headers', b'headers', 'message', b'message', 'stream', b'stream', 'trailers', b'trailers', 'type', b'type'] - def HasField(self, field_name: typing.Literal['headers', b'headers', 'message', b'message', 'stream', b'stream', 'trailers', b'trailers', 'type', b'type']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['headers', b'headers', 'message', b'message', 'stream', b'stream', 'trailers', b'trailers', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['headers', b'headers', 'message', b'message', 'stream', b'stream', 'trailers', b'trailers', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_type: _TypeAlias = _typing.Literal['headers', 'message', 'trailers'] + _WhichOneofArgType_type: _TypeAlias = _typing.Literal['type', b'type'] - def WhichOneof(self, oneof_group: typing.Literal['type', b'type']) -> typing.Literal['headers', 'message', 'trailers'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_type) -> _WhichOneofReturnType_type | None: ... -global___Response = Response +Global___Response: _TypeAlias = Response -@typing.final -class ResponseHeaders(google.protobuf.message.Message): +@_typing.final +class ResponseHeaders(_message.Message): """ResponseHeaders contain custom metadata that are sent to the client before any message or trailers (unless only trailers are sent). """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - METADATA_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + METADATA_FIELD_NUMBER: _builtins.int - @property - def metadata(self) -> global___Metadata: + @_builtins.property + def metadata(self) -> Global___Metadata: ... - def __init__(self, *, metadata: global___Metadata | None=...) -> None: + def __init__(self, *, metadata: Global___Metadata | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['metadata', b'metadata'] - def HasField(self, field_name: typing.Literal['metadata', b'metadata']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['metadata', b'metadata'] - def ClearField(self, field_name: typing.Literal['metadata', b'metadata']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ResponseHeaders = ResponseHeaders +Global___ResponseHeaders: _TypeAlias = ResponseHeaders -@typing.final -class ResponseMessage(google.protobuf.message.Message): +@_typing.final +class ResponseMessage(_message.Message): """ResponseMessage contains the data of a response to a call.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PACKET_MESSAGE_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + PACKET_MESSAGE_FIELD_NUMBER: _builtins.int - @property - def packet_message(self) -> global___PacketMessage: + @_builtins.property + def packet_message(self) -> Global___PacketMessage: ... - def __init__(self, *, packet_message: global___PacketMessage | None=...) -> None: + def __init__(self, *, packet_message: Global___PacketMessage | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['packet_message', b'packet_message'] - def HasField(self, field_name: typing.Literal['packet_message', b'packet_message']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['packet_message', b'packet_message'] - def ClearField(self, field_name: typing.Literal['packet_message', b'packet_message']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ResponseMessage = ResponseMessage +Global___ResponseMessage: _TypeAlias = ResponseMessage -@typing.final -class ResponseTrailers(google.protobuf.message.Message): +@_typing.final +class ResponseTrailers(_message.Message): """ResponseTrailers contain the status of a response and any custom metadata.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - STATUS_FIELD_NUMBER: builtins.int - METADATA_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + STATUS_FIELD_NUMBER: _builtins.int + METADATA_FIELD_NUMBER: _builtins.int - @property - def status(self) -> google.rpc.status_pb2.Status: + @_builtins.property + def status(self) -> _status_pb2.Status: ... - @property - def metadata(self) -> global___Metadata: + @_builtins.property + def metadata(self) -> Global___Metadata: ... - def __init__(self, *, status: google.rpc.status_pb2.Status | None=..., metadata: global___Metadata | None=...) -> None: + def __init__(self, *, status: _status_pb2.Status | None=..., metadata: Global___Metadata | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['metadata', b'metadata', 'status', b'status'] - def HasField(self, field_name: typing.Literal['metadata', b'metadata', 'status', b'status']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['metadata', b'metadata', 'status', b'status'] - def ClearField(self, field_name: typing.Literal['metadata', b'metadata', 'status', b'status']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ResponseTrailers = ResponseTrailers +Global___ResponseTrailers: _TypeAlias = ResponseTrailers -@typing.final -class Strings(google.protobuf.message.Message): +@_typing.final +class Strings(_message.Message): """Strings are a series of values.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VALUES_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + VALUES_FIELD_NUMBER: _builtins.int - @property - def values(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def values(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, values: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, values: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['values', b'values'] - def ClearField(self, field_name: typing.Literal['values', b'values']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Strings = Strings +Global___Strings: _TypeAlias = Strings -@typing.final -class Metadata(google.protobuf.message.Message): +@_typing.final +class Metadata(_message.Message): """Metadata is for custom key values provided by a client or server during a stream. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class MdEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str + @_typing.final + class MdEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str - @property - def value(self) -> global___Strings: + @_builtins.property + def value(self) -> Global___Strings: ... - def __init__(self, *, key: builtins.str=..., value: global___Strings | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: Global___Strings | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def HasField(self, field_name: typing.Literal['value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - MD_FIELD_NUMBER: builtins.int + MD_FIELD_NUMBER: _builtins.int - @property - def md(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Strings]: + @_builtins.property + def md(self) -> _containers.MessageMap[_builtins.str, Global___Strings]: ... - def __init__(self, *, md: collections.abc.Mapping[builtins.str, global___Strings] | None=...) -> None: + def __init__(self, *, md: _abc.Mapping[_builtins.str, Global___Strings] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['md', b'md'] - def ClearField(self, field_name: typing.Literal['md', b'md']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Metadata = Metadata \ No newline at end of file +Global___Metadata: _TypeAlias = Metadata \ No newline at end of file diff --git a/src/viam/gen/proto/rpc/webrtc/v1/signaling_grpc.py b/src/viam/gen/proto/rpc/webrtc/v1/signaling_grpc.py index 4cf7ec4413..5fd9a24d39 100644 --- a/src/viam/gen/proto/rpc/webrtc/v1/signaling_grpc.py +++ b/src/viam/gen/proto/rpc/webrtc/v1/signaling_grpc.py @@ -5,9 +5,8 @@ import grpclib.exceptions if typing.TYPE_CHECKING: import grpclib.server -import google.api.annotations_pb2 +from ..... import google import google.protobuf.timestamp_pb2 -import google.rpc.status_pb2 from ..... import proto class SignalingServiceBase(abc.ABC): diff --git a/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py b/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py index 707c118326..8dd1fc933b 100644 --- a/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py +++ b/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py @@ -4,11 +4,11 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'proto/rpc/webrtc/v1/signaling.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'proto/rpc/webrtc/v1/signaling.proto') _sym_db = _symbol_database.Default() -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from .....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -from google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 +from .....google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#proto/rpc/webrtc/v1/signaling.proto\x12\x13proto.rpc.webrtc.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto"\xdf\x01\n\x0cICECandidate\x12\x1c\n\tcandidate\x18\x01 \x01(\tR\tcandidate\x12\x1c\n\x07sdp_mid\x18\x02 \x01(\tH\x00R\x06sdpMid\x88\x01\x01\x12+\n\x0fsdpm_line_index\x18\x03 \x01(\rH\x01R\rsdpmLineIndex\x88\x01\x01\x120\n\x11username_fragment\x18\x04 \x01(\tH\x02R\x10usernameFragment\x88\x01\x01B\n\n\x08_sdp_midB\x12\n\x10_sdpm_line_indexB\x14\n\x12_username_fragment"H\n\x0bCallRequest\x12\x10\n\x03sdp\x18\x01 \x01(\tR\x03sdp\x12\'\n\x0fdisable_trickle\x18\x02 \x01(\x08R\x0edisableTrickle")\n\x15CallResponseInitStage\x12\x10\n\x03sdp\x18\x01 \x01(\tR\x03sdp"Z\n\x17CallResponseUpdateStage\x12?\n\tcandidate\x18\x01 \x01(\x0b2!.proto.rpc.webrtc.v1.ICECandidateR\tcandidate"\xb5\x01\n\x0cCallResponse\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12@\n\x04init\x18\x02 \x01(\x0b2*.proto.rpc.webrtc.v1.CallResponseInitStageH\x00R\x04init\x12F\n\x06update\x18\x03 \x01(\x0b2,.proto.rpc.webrtc.v1.CallResponseUpdateStageH\x00R\x06updateB\x07\n\x05stage"\xb6\x01\n\x11CallUpdateRequest\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12A\n\tcandidate\x18\x02 \x01(\x0b2!.proto.rpc.webrtc.v1.ICECandidateH\x00R\tcandidate\x12\x14\n\x04done\x18\x03 \x01(\x08H\x00R\x04done\x12*\n\x05error\x18\x04 \x01(\x0b2\x12.google.rpc.StatusH\x00R\x05errorB\x08\n\x06update"\x14\n\x12CallUpdateResponse"[\n\tICEServer\x12\x12\n\x04urls\x18\x01 \x03(\tR\x04urls\x12\x1a\n\x08username\x18\x02 \x01(\tR\x08username\x12\x1e\n\ncredential\x18\x03 \x01(\tR\ncredential"\x8d\x01\n\x0cWebRTCConfig\x12T\n\x16additional_ice_servers\x18\x01 \x03(\x0b2\x1e.proto.rpc.webrtc.v1.ICEServerR\x14additionalIceServers\x12\'\n\x0fdisable_trickle\x18\x02 \x01(\x08R\x0edisableTrickle"\xc0\x01\n\x16AnswerRequestInitStage\x12\x10\n\x03sdp\x18\x01 \x01(\tR\x03sdp\x12J\n\x0foptional_config\x18\x02 \x01(\x0b2!.proto.rpc.webrtc.v1.WebRTCConfigR\x0eoptionalConfig\x12;\n\x08deadline\x18\x03 \x01(\x0b2\x1a.google.protobuf.TimestampH\x00R\x08deadline\x88\x01\x01B\x0b\n\t_deadline"[\n\x18AnswerRequestUpdateStage\x12?\n\tcandidate\x18\x01 \x01(\x0b2!.proto.rpc.webrtc.v1.ICECandidateR\tcandidate"\x18\n\x16AnswerRequestDoneStage"E\n\x17AnswerRequestErrorStage\x12*\n\x06status\x18\x01 \x01(\x0b2\x12.google.rpc.StatusR\x06status"\x1d\n\x1bAnswerRequestHeartbeatStage"\x93\x03\n\rAnswerRequest\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12A\n\x04init\x18\x02 \x01(\x0b2+.proto.rpc.webrtc.v1.AnswerRequestInitStageH\x00R\x04init\x12G\n\x06update\x18\x03 \x01(\x0b2-.proto.rpc.webrtc.v1.AnswerRequestUpdateStageH\x00R\x06update\x12A\n\x04done\x18\x04 \x01(\x0b2+.proto.rpc.webrtc.v1.AnswerRequestDoneStageH\x00R\x04done\x12D\n\x05error\x18\x05 \x01(\x0b2,.proto.rpc.webrtc.v1.AnswerRequestErrorStageH\x00R\x05error\x12P\n\theartbeat\x18\x06 \x01(\x0b20.proto.rpc.webrtc.v1.AnswerRequestHeartbeatStageH\x00R\theartbeatB\x07\n\x05stage"+\n\x17AnswerResponseInitStage\x12\x10\n\x03sdp\x18\x01 \x01(\tR\x03sdp"\\\n\x19AnswerResponseUpdateStage\x12?\n\tcandidate\x18\x01 \x01(\x0b2!.proto.rpc.webrtc.v1.ICECandidateR\tcandidate"\x19\n\x17AnswerResponseDoneStage"F\n\x18AnswerResponseErrorStage\x12*\n\x06status\x18\x01 \x01(\x0b2\x12.google.rpc.StatusR\x06status"\xc6\x02\n\x0eAnswerResponse\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12B\n\x04init\x18\x02 \x01(\x0b2,.proto.rpc.webrtc.v1.AnswerResponseInitStageH\x00R\x04init\x12H\n\x06update\x18\x03 \x01(\x0b2..proto.rpc.webrtc.v1.AnswerResponseUpdateStageH\x00R\x06update\x12B\n\x04done\x18\x04 \x01(\x0b2,.proto.rpc.webrtc.v1.AnswerResponseDoneStageH\x00R\x04done\x12E\n\x05error\x18\x05 \x01(\x0b2-.proto.rpc.webrtc.v1.AnswerResponseErrorStageH\x00R\x05errorB\x07\n\x05stage"\x1d\n\x1bOptionalWebRTCConfigRequest"Y\n\x1cOptionalWebRTCConfigResponse\x129\n\x06config\x18\x01 \x01(\x0b2!.proto.rpc.webrtc.v1.WebRTCConfigR\x06config2\x86\x04\n\x10SignalingService\x12j\n\x04Call\x12 .proto.rpc.webrtc.v1.CallRequest\x1a!.proto.rpc.webrtc.v1.CallResponse"\x1b\x82\xd3\xe4\x93\x02\x15"\x13/rpc/webrtc/v1/call0\x01\x12\x81\x01\n\nCallUpdate\x12&.proto.rpc.webrtc.v1.CallUpdateRequest\x1a\'.proto.rpc.webrtc.v1.CallUpdateResponse""\x82\xd3\xe4\x93\x02\x1c\x1a\x1a/rpc/webrtc/v1/call_update\x12U\n\x06Answer\x12#.proto.rpc.webrtc.v1.AnswerResponse\x1a".proto.rpc.webrtc.v1.AnswerRequest(\x010\x01\x12\xaa\x01\n\x14OptionalWebRTCConfig\x120.proto.rpc.webrtc.v1.OptionalWebRTCConfigRequest\x1a1.proto.rpc.webrtc.v1.OptionalWebRTCConfigResponse"-\x82\xd3\xe4\x93\x02\'\x12%/rpc/webrtc/v1/optional_webrtc_configB\'Z%go.viam.com/utils/proto/rpc/webrtc/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.pyi b/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.pyi index f46f22132d..f9ee11b3fe 100644 --- a/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.pyi +++ b/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.pyi @@ -2,495 +2,545 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import google.protobuf.timestamp_pb2 -import google.rpc.status_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class ICECandidate(google.protobuf.message.Message): +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.rpc import status_pb2 as _status_pb2 +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class ICECandidate(_message.Message): """ICECandidate represents an ICE candidate. From https://github.com/pion/webrtc/blob/5f6baf73255598a7b4a7c9400bb0381acc9aa3dc/icecandidateinit.go """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CANDIDATE_FIELD_NUMBER: builtins.int - SDP_MID_FIELD_NUMBER: builtins.int - SDPM_LINE_INDEX_FIELD_NUMBER: builtins.int - USERNAME_FRAGMENT_FIELD_NUMBER: builtins.int - candidate: builtins.str - sdp_mid: builtins.str - sdpm_line_index: builtins.int - username_fragment: builtins.str + DESCRIPTOR: _descriptor.Descriptor + CANDIDATE_FIELD_NUMBER: _builtins.int + SDP_MID_FIELD_NUMBER: _builtins.int + SDPM_LINE_INDEX_FIELD_NUMBER: _builtins.int + USERNAME_FRAGMENT_FIELD_NUMBER: _builtins.int + candidate: _builtins.str + sdp_mid: _builtins.str + sdpm_line_index: _builtins.int + username_fragment: _builtins.str - def __init__(self, *, candidate: builtins.str=..., sdp_mid: builtins.str | None=..., sdpm_line_index: builtins.int | None=..., username_fragment: builtins.str | None=...) -> None: + def __init__(self, *, candidate: _builtins.str=..., sdp_mid: _builtins.str | None=..., sdpm_line_index: _builtins.int | None=..., username_fragment: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_sdp_mid', b'_sdp_mid', '_sdpm_line_index', b'_sdpm_line_index', '_username_fragment', b'_username_fragment', 'sdp_mid', b'sdp_mid', 'sdpm_line_index', b'sdpm_line_index', 'username_fragment', b'username_fragment'] - def HasField(self, field_name: typing.Literal['_sdp_mid', b'_sdp_mid', '_sdpm_line_index', b'_sdpm_line_index', '_username_fragment', b'_username_fragment', 'sdp_mid', b'sdp_mid', 'sdpm_line_index', b'sdpm_line_index', 'username_fragment', b'username_fragment']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_sdp_mid', b'_sdp_mid', '_sdpm_line_index', b'_sdpm_line_index', '_username_fragment', b'_username_fragment', 'candidate', b'candidate', 'sdp_mid', b'sdp_mid', 'sdpm_line_index', b'sdpm_line_index', 'username_fragment', b'username_fragment'] - def ClearField(self, field_name: typing.Literal['_sdp_mid', b'_sdp_mid', '_sdpm_line_index', b'_sdpm_line_index', '_username_fragment', b'_username_fragment', 'candidate', b'candidate', 'sdp_mid', b'sdp_mid', 'sdpm_line_index', b'sdpm_line_index', 'username_fragment', b'username_fragment']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__sdp_mid: _TypeAlias = _typing.Literal['sdp_mid'] + _WhichOneofArgType__sdp_mid: _TypeAlias = _typing.Literal['_sdp_mid', b'_sdp_mid'] + _WhichOneofReturnType__sdpm_line_index: _TypeAlias = _typing.Literal['sdpm_line_index'] + _WhichOneofArgType__sdpm_line_index: _TypeAlias = _typing.Literal['_sdpm_line_index', b'_sdpm_line_index'] + _WhichOneofReturnType__username_fragment: _TypeAlias = _typing.Literal['username_fragment'] + _WhichOneofArgType__username_fragment: _TypeAlias = _typing.Literal['_username_fragment', b'_username_fragment'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_sdp_mid', b'_sdp_mid']) -> typing.Literal['sdp_mid'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__sdp_mid) -> _WhichOneofReturnType__sdp_mid | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_sdpm_line_index', b'_sdpm_line_index']) -> typing.Literal['sdpm_line_index'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__sdpm_line_index) -> _WhichOneofReturnType__sdpm_line_index | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_username_fragment', b'_username_fragment']) -> typing.Literal['username_fragment'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__username_fragment) -> _WhichOneofReturnType__username_fragment | None: ... -global___ICECandidate = ICECandidate +Global___ICECandidate: _TypeAlias = ICECandidate -@typing.final -class CallRequest(google.protobuf.message.Message): +@_typing.final +class CallRequest(_message.Message): """CallRequest is the SDP offer that the controlling side is making.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SDP_FIELD_NUMBER: builtins.int - DISABLE_TRICKLE_FIELD_NUMBER: builtins.int - sdp: builtins.str - disable_trickle: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + SDP_FIELD_NUMBER: _builtins.int + DISABLE_TRICKLE_FIELD_NUMBER: _builtins.int + sdp: _builtins.str + disable_trickle: _builtins.bool 'when disable_trickle is true, the init stage will be the only stage\n to be received in the response and the caller can expect the SDP\n to contain all ICE candidates.\n ' - def __init__(self, *, sdp: builtins.str=..., disable_trickle: builtins.bool=...) -> None: + def __init__(self, *, sdp: _builtins.str=..., disable_trickle: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['disable_trickle', b'disable_trickle', 'sdp', b'sdp'] - def ClearField(self, field_name: typing.Literal['disable_trickle', b'disable_trickle', 'sdp', b'sdp']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CallRequest = CallRequest +Global___CallRequest: _TypeAlias = CallRequest -@typing.final -class CallResponseInitStage(google.protobuf.message.Message): +@_typing.final +class CallResponseInitStage(_message.Message): """CallResponseInitStage is the first and a one time stage that represents the initial response to starting a call. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SDP_FIELD_NUMBER: builtins.int - sdp: builtins.str + DESCRIPTOR: _descriptor.Descriptor + SDP_FIELD_NUMBER: _builtins.int + sdp: _builtins.str - def __init__(self, *, sdp: builtins.str=...) -> None: + def __init__(self, *, sdp: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['sdp', b'sdp'] - def ClearField(self, field_name: typing.Literal['sdp', b'sdp']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CallResponseInitStage = CallResponseInitStage +Global___CallResponseInitStage: _TypeAlias = CallResponseInitStage -@typing.final -class CallResponseUpdateStage(google.protobuf.message.Message): +@_typing.final +class CallResponseUpdateStage(_message.Message): """CallResponseUpdateStage is multiply used to trickle in ICE candidates from the controlled (answering) side. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CANDIDATE_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + CANDIDATE_FIELD_NUMBER: _builtins.int - @property - def candidate(self) -> global___ICECandidate: + @_builtins.property + def candidate(self) -> Global___ICECandidate: ... - def __init__(self, *, candidate: global___ICECandidate | None=...) -> None: + def __init__(self, *, candidate: Global___ICECandidate | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['candidate', b'candidate'] - def HasField(self, field_name: typing.Literal['candidate', b'candidate']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['candidate', b'candidate'] - def ClearField(self, field_name: typing.Literal['candidate', b'candidate']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CallResponseUpdateStage = CallResponseUpdateStage +Global___CallResponseUpdateStage: _TypeAlias = CallResponseUpdateStage -@typing.final -class CallResponse(google.protobuf.message.Message): +@_typing.final +class CallResponse(_message.Message): """CallResponse is the SDP answer that the controlled side responds with.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - UUID_FIELD_NUMBER: builtins.int - INIT_FIELD_NUMBER: builtins.int - UPDATE_FIELD_NUMBER: builtins.int - uuid: builtins.str + DESCRIPTOR: _descriptor.Descriptor + UUID_FIELD_NUMBER: _builtins.int + INIT_FIELD_NUMBER: _builtins.int + UPDATE_FIELD_NUMBER: _builtins.int + uuid: _builtins.str - @property - def init(self) -> global___CallResponseInitStage: + @_builtins.property + def init(self) -> Global___CallResponseInitStage: ... - @property - def update(self) -> global___CallResponseUpdateStage: + @_builtins.property + def update(self) -> Global___CallResponseUpdateStage: ... - def __init__(self, *, uuid: builtins.str=..., init: global___CallResponseInitStage | None=..., update: global___CallResponseUpdateStage | None=...) -> None: + def __init__(self, *, uuid: _builtins.str=..., init: Global___CallResponseInitStage | None=..., update: Global___CallResponseUpdateStage | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['init', b'init', 'stage', b'stage', 'update', b'update'] - def HasField(self, field_name: typing.Literal['init', b'init', 'stage', b'stage', 'update', b'update']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['init', b'init', 'stage', b'stage', 'update', b'update', 'uuid', b'uuid'] - def ClearField(self, field_name: typing.Literal['init', b'init', 'stage', b'stage', 'update', b'update', 'uuid', b'uuid']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_stage: _TypeAlias = _typing.Literal['init', 'update'] + _WhichOneofArgType_stage: _TypeAlias = _typing.Literal['stage', b'stage'] - def WhichOneof(self, oneof_group: typing.Literal['stage', b'stage']) -> typing.Literal['init', 'update'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_stage) -> _WhichOneofReturnType_stage | None: ... -global___CallResponse = CallResponse +Global___CallResponse: _TypeAlias = CallResponse -@typing.final -class CallUpdateRequest(google.protobuf.message.Message): +@_typing.final +class CallUpdateRequest(_message.Message): """CallUpdateRequest updates the call with additional info to the controlled side.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - UUID_FIELD_NUMBER: builtins.int - CANDIDATE_FIELD_NUMBER: builtins.int - DONE_FIELD_NUMBER: builtins.int - ERROR_FIELD_NUMBER: builtins.int - uuid: builtins.str - done: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + UUID_FIELD_NUMBER: _builtins.int + CANDIDATE_FIELD_NUMBER: _builtins.int + DONE_FIELD_NUMBER: _builtins.int + ERROR_FIELD_NUMBER: _builtins.int + uuid: _builtins.str + done: _builtins.bool - @property - def candidate(self) -> global___ICECandidate: + @_builtins.property + def candidate(self) -> Global___ICECandidate: ... - @property - def error(self) -> google.rpc.status_pb2.Status: + @_builtins.property + def error(self) -> _status_pb2.Status: ... - def __init__(self, *, uuid: builtins.str=..., candidate: global___ICECandidate | None=..., done: builtins.bool=..., error: google.rpc.status_pb2.Status | None=...) -> None: + def __init__(self, *, uuid: _builtins.str=..., candidate: Global___ICECandidate | None=..., done: _builtins.bool=..., error: _status_pb2.Status | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['candidate', b'candidate', 'done', b'done', 'error', b'error', 'update', b'update'] - def HasField(self, field_name: typing.Literal['candidate', b'candidate', 'done', b'done', 'error', b'error', 'update', b'update']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['candidate', b'candidate', 'done', b'done', 'error', b'error', 'update', b'update', 'uuid', b'uuid'] - def ClearField(self, field_name: typing.Literal['candidate', b'candidate', 'done', b'done', 'error', b'error', 'update', b'update', 'uuid', b'uuid']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_update: _TypeAlias = _typing.Literal['candidate', 'done', 'error'] + _WhichOneofArgType_update: _TypeAlias = _typing.Literal['update', b'update'] - def WhichOneof(self, oneof_group: typing.Literal['update', b'update']) -> typing.Literal['candidate', 'done', 'error'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_update) -> _WhichOneofReturnType_update | None: ... -global___CallUpdateRequest = CallUpdateRequest +Global___CallUpdateRequest: _TypeAlias = CallUpdateRequest -@typing.final -class CallUpdateResponse(google.protobuf.message.Message): +@_typing.final +class CallUpdateResponse(_message.Message): """CallUpdateResponse contains nothing in response to a call update.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___CallUpdateResponse = CallUpdateResponse +Global___CallUpdateResponse: _TypeAlias = CallUpdateResponse -@typing.final -class ICEServer(google.protobuf.message.Message): +@_typing.final +class ICEServer(_message.Message): """ICEServer describes an ICE server.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - URLS_FIELD_NUMBER: builtins.int - USERNAME_FIELD_NUMBER: builtins.int - CREDENTIAL_FIELD_NUMBER: builtins.int - username: builtins.str - credential: builtins.str + DESCRIPTOR: _descriptor.Descriptor + URLS_FIELD_NUMBER: _builtins.int + USERNAME_FIELD_NUMBER: _builtins.int + CREDENTIAL_FIELD_NUMBER: _builtins.int + username: _builtins.str + credential: _builtins.str - @property - def urls(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def urls(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, urls: collections.abc.Iterable[builtins.str] | None=..., username: builtins.str=..., credential: builtins.str=...) -> None: + def __init__(self, *, urls: _abc.Iterable[_builtins.str] | None=..., username: _builtins.str=..., credential: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['credential', b'credential', 'urls', b'urls', 'username', b'username'] - def ClearField(self, field_name: typing.Literal['credential', b'credential', 'urls', b'urls', 'username', b'username']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ICEServer = ICEServer +Global___ICEServer: _TypeAlias = ICEServer -@typing.final -class WebRTCConfig(google.protobuf.message.Message): +@_typing.final +class WebRTCConfig(_message.Message): """WebRTCConfig represents parts of a WebRTC config.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ADDITIONAL_ICE_SERVERS_FIELD_NUMBER: builtins.int - DISABLE_TRICKLE_FIELD_NUMBER: builtins.int - disable_trickle: builtins.bool + DESCRIPTOR: _descriptor.Descriptor + ADDITIONAL_ICE_SERVERS_FIELD_NUMBER: _builtins.int + DISABLE_TRICKLE_FIELD_NUMBER: _builtins.int + disable_trickle: _builtins.bool 'disable_trickle indicates if Trickle ICE should be used. Currently, both\n sides must both respect this setting.\n ' - @property - def additional_ice_servers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ICEServer]: + @_builtins.property + def additional_ice_servers(self) -> _containers.RepeatedCompositeFieldContainer[Global___ICEServer]: ... - def __init__(self, *, additional_ice_servers: collections.abc.Iterable[global___ICEServer] | None=..., disable_trickle: builtins.bool=...) -> None: + def __init__(self, *, additional_ice_servers: _abc.Iterable[Global___ICEServer] | None=..., disable_trickle: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['additional_ice_servers', b'additional_ice_servers', 'disable_trickle', b'disable_trickle'] - def ClearField(self, field_name: typing.Literal['additional_ice_servers', b'additional_ice_servers', 'disable_trickle', b'disable_trickle']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___WebRTCConfig = WebRTCConfig +Global___WebRTCConfig: _TypeAlias = WebRTCConfig -@typing.final -class AnswerRequestInitStage(google.protobuf.message.Message): +@_typing.final +class AnswerRequestInitStage(_message.Message): """AnswerRequestInitStage is the first and a one time stage that represents the callers initial SDP request to the controlled (answerer) side. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SDP_FIELD_NUMBER: builtins.int - OPTIONAL_CONFIG_FIELD_NUMBER: builtins.int - DEADLINE_FIELD_NUMBER: builtins.int - sdp: builtins.str + DESCRIPTOR: _descriptor.Descriptor + SDP_FIELD_NUMBER: _builtins.int + OPTIONAL_CONFIG_FIELD_NUMBER: _builtins.int + DEADLINE_FIELD_NUMBER: _builtins.int + sdp: _builtins.str - @property - def optional_config(self) -> global___WebRTCConfig: + @_builtins.property + def optional_config(self) -> Global___WebRTCConfig: ... - @property - def deadline(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def deadline(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, sdp: builtins.str=..., optional_config: global___WebRTCConfig | None=..., deadline: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, sdp: _builtins.str=..., optional_config: Global___WebRTCConfig | None=..., deadline: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_deadline', b'_deadline', 'deadline', b'deadline', 'optional_config', b'optional_config'] - def HasField(self, field_name: typing.Literal['_deadline', b'_deadline', 'deadline', b'deadline', 'optional_config', b'optional_config']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_deadline', b'_deadline', 'deadline', b'deadline', 'optional_config', b'optional_config', 'sdp', b'sdp'] - def ClearField(self, field_name: typing.Literal['_deadline', b'_deadline', 'deadline', b'deadline', 'optional_config', b'optional_config', 'sdp', b'sdp']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__deadline: _TypeAlias = _typing.Literal['deadline'] + _WhichOneofArgType__deadline: _TypeAlias = _typing.Literal['_deadline', b'_deadline'] - def WhichOneof(self, oneof_group: typing.Literal['_deadline', b'_deadline']) -> typing.Literal['deadline'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__deadline) -> _WhichOneofReturnType__deadline | None: ... -global___AnswerRequestInitStage = AnswerRequestInitStage +Global___AnswerRequestInitStage: _TypeAlias = AnswerRequestInitStage -@typing.final -class AnswerRequestUpdateStage(google.protobuf.message.Message): +@_typing.final +class AnswerRequestUpdateStage(_message.Message): """AnswerRequestUpdateStage is multiply used to trickle in ICE candidates to the controlled (answerer) side. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CANDIDATE_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + CANDIDATE_FIELD_NUMBER: _builtins.int - @property - def candidate(self) -> global___ICECandidate: + @_builtins.property + def candidate(self) -> Global___ICECandidate: ... - def __init__(self, *, candidate: global___ICECandidate | None=...) -> None: + def __init__(self, *, candidate: Global___ICECandidate | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['candidate', b'candidate'] - def HasField(self, field_name: typing.Literal['candidate', b'candidate']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['candidate', b'candidate'] - def ClearField(self, field_name: typing.Literal['candidate', b'candidate']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AnswerRequestUpdateStage = AnswerRequestUpdateStage +Global___AnswerRequestUpdateStage: _TypeAlias = AnswerRequestUpdateStage -@typing.final -class AnswerRequestDoneStage(google.protobuf.message.Message): +@_typing.final +class AnswerRequestDoneStage(_message.Message): """AnswerRequestDoneStage indicates the controller is done responding with candidates.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___AnswerRequestDoneStage = AnswerRequestDoneStage +Global___AnswerRequestDoneStage: _TypeAlias = AnswerRequestDoneStage -@typing.final -class AnswerRequestErrorStage(google.protobuf.message.Message): +@_typing.final +class AnswerRequestErrorStage(_message.Message): """AnswerRequestErrorStage indicates the exchange has failed with an error.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - STATUS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + STATUS_FIELD_NUMBER: _builtins.int - @property - def status(self) -> google.rpc.status_pb2.Status: + @_builtins.property + def status(self) -> _status_pb2.Status: ... - def __init__(self, *, status: google.rpc.status_pb2.Status | None=...) -> None: + def __init__(self, *, status: _status_pb2.Status | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['status', b'status'] - def HasField(self, field_name: typing.Literal['status', b'status']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['status', b'status'] - def ClearField(self, field_name: typing.Literal['status', b'status']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AnswerRequestErrorStage = AnswerRequestErrorStage +Global___AnswerRequestErrorStage: _TypeAlias = AnswerRequestErrorStage -@typing.final -class AnswerRequestHeartbeatStage(google.protobuf.message.Message): +@_typing.final +class AnswerRequestHeartbeatStage(_message.Message): """AnswerRequestHeartbeatStage is sent periodically to verify liveness of answerer.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___AnswerRequestHeartbeatStage = AnswerRequestHeartbeatStage +Global___AnswerRequestHeartbeatStage: _TypeAlias = AnswerRequestHeartbeatStage -@typing.final -class AnswerRequest(google.protobuf.message.Message): +@_typing.final +class AnswerRequest(_message.Message): """AnswerRequest is the SDP offer that the controlling side is making via the answering stream. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - UUID_FIELD_NUMBER: builtins.int - INIT_FIELD_NUMBER: builtins.int - UPDATE_FIELD_NUMBER: builtins.int - DONE_FIELD_NUMBER: builtins.int - ERROR_FIELD_NUMBER: builtins.int - HEARTBEAT_FIELD_NUMBER: builtins.int - uuid: builtins.str + DESCRIPTOR: _descriptor.Descriptor + UUID_FIELD_NUMBER: _builtins.int + INIT_FIELD_NUMBER: _builtins.int + UPDATE_FIELD_NUMBER: _builtins.int + DONE_FIELD_NUMBER: _builtins.int + ERROR_FIELD_NUMBER: _builtins.int + HEARTBEAT_FIELD_NUMBER: _builtins.int + uuid: _builtins.str - @property - def init(self) -> global___AnswerRequestInitStage: + @_builtins.property + def init(self) -> Global___AnswerRequestInitStage: ... - @property - def update(self) -> global___AnswerRequestUpdateStage: + @_builtins.property + def update(self) -> Global___AnswerRequestUpdateStage: ... - @property - def done(self) -> global___AnswerRequestDoneStage: + @_builtins.property + def done(self) -> Global___AnswerRequestDoneStage: """done is sent when the requester is done sending information""" - @property - def error(self) -> global___AnswerRequestErrorStage: + @_builtins.property + def error(self) -> Global___AnswerRequestErrorStage: """error is sent any time before done""" - @property - def heartbeat(self) -> global___AnswerRequestHeartbeatStage: + @_builtins.property + def heartbeat(self) -> Global___AnswerRequestHeartbeatStage: """heartbeat is sent periodically to verify liveness of answerer""" - def __init__(self, *, uuid: builtins.str=..., init: global___AnswerRequestInitStage | None=..., update: global___AnswerRequestUpdateStage | None=..., done: global___AnswerRequestDoneStage | None=..., error: global___AnswerRequestErrorStage | None=..., heartbeat: global___AnswerRequestHeartbeatStage | None=...) -> None: + def __init__(self, *, uuid: _builtins.str=..., init: Global___AnswerRequestInitStage | None=..., update: Global___AnswerRequestUpdateStage | None=..., done: Global___AnswerRequestDoneStage | None=..., error: Global___AnswerRequestErrorStage | None=..., heartbeat: Global___AnswerRequestHeartbeatStage | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['done', b'done', 'error', b'error', 'heartbeat', b'heartbeat', 'init', b'init', 'stage', b'stage', 'update', b'update'] - def HasField(self, field_name: typing.Literal['done', b'done', 'error', b'error', 'heartbeat', b'heartbeat', 'init', b'init', 'stage', b'stage', 'update', b'update']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['done', b'done', 'error', b'error', 'heartbeat', b'heartbeat', 'init', b'init', 'stage', b'stage', 'update', b'update', 'uuid', b'uuid'] - def ClearField(self, field_name: typing.Literal['done', b'done', 'error', b'error', 'heartbeat', b'heartbeat', 'init', b'init', 'stage', b'stage', 'update', b'update', 'uuid', b'uuid']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_stage: _TypeAlias = _typing.Literal['init', 'update', 'done', 'error', 'heartbeat'] + _WhichOneofArgType_stage: _TypeAlias = _typing.Literal['stage', b'stage'] - def WhichOneof(self, oneof_group: typing.Literal['stage', b'stage']) -> typing.Literal['init', 'update', 'done', 'error', 'heartbeat'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_stage) -> _WhichOneofReturnType_stage | None: ... -global___AnswerRequest = AnswerRequest +Global___AnswerRequest: _TypeAlias = AnswerRequest -@typing.final -class AnswerResponseInitStage(google.protobuf.message.Message): +@_typing.final +class AnswerResponseInitStage(_message.Message): """AnswerResponseInitStage is the first and a one time stage that represents the answerers initial SDP response to the controlling side. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SDP_FIELD_NUMBER: builtins.int - sdp: builtins.str + DESCRIPTOR: _descriptor.Descriptor + SDP_FIELD_NUMBER: _builtins.int + sdp: _builtins.str - def __init__(self, *, sdp: builtins.str=...) -> None: + def __init__(self, *, sdp: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['sdp', b'sdp'] - def ClearField(self, field_name: typing.Literal['sdp', b'sdp']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AnswerResponseInitStage = AnswerResponseInitStage +Global___AnswerResponseInitStage: _TypeAlias = AnswerResponseInitStage -@typing.final -class AnswerResponseUpdateStage(google.protobuf.message.Message): +@_typing.final +class AnswerResponseUpdateStage(_message.Message): """AnswerResponseUpdateStage is multiply used to trickle in ICE candidates to the controlling side. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CANDIDATE_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + CANDIDATE_FIELD_NUMBER: _builtins.int - @property - def candidate(self) -> global___ICECandidate: + @_builtins.property + def candidate(self) -> Global___ICECandidate: ... - def __init__(self, *, candidate: global___ICECandidate | None=...) -> None: + def __init__(self, *, candidate: Global___ICECandidate | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['candidate', b'candidate'] - def HasField(self, field_name: typing.Literal['candidate', b'candidate']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['candidate', b'candidate'] - def ClearField(self, field_name: typing.Literal['candidate', b'candidate']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AnswerResponseUpdateStage = AnswerResponseUpdateStage +Global___AnswerResponseUpdateStage: _TypeAlias = AnswerResponseUpdateStage -@typing.final -class AnswerResponseDoneStage(google.protobuf.message.Message): +@_typing.final +class AnswerResponseDoneStage(_message.Message): """AnswerResponseDoneStage indicates the answerer is done responding with candidates.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___AnswerResponseDoneStage = AnswerResponseDoneStage +Global___AnswerResponseDoneStage: _TypeAlias = AnswerResponseDoneStage -@typing.final -class AnswerResponseErrorStage(google.protobuf.message.Message): +@_typing.final +class AnswerResponseErrorStage(_message.Message): """AnswerResponseErrorStage indicates the exchange has failed with an error.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - STATUS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + STATUS_FIELD_NUMBER: _builtins.int - @property - def status(self) -> google.rpc.status_pb2.Status: + @_builtins.property + def status(self) -> _status_pb2.Status: ... - def __init__(self, *, status: google.rpc.status_pb2.Status | None=...) -> None: + def __init__(self, *, status: _status_pb2.Status | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['status', b'status'] - def HasField(self, field_name: typing.Literal['status', b'status']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['status', b'status'] - def ClearField(self, field_name: typing.Literal['status', b'status']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AnswerResponseErrorStage = AnswerResponseErrorStage +Global___AnswerResponseErrorStage: _TypeAlias = AnswerResponseErrorStage -@typing.final -class AnswerResponse(google.protobuf.message.Message): +@_typing.final +class AnswerResponse(_message.Message): """AnswerResponse is the SDP answer that an answerer responds with.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - UUID_FIELD_NUMBER: builtins.int - INIT_FIELD_NUMBER: builtins.int - UPDATE_FIELD_NUMBER: builtins.int - DONE_FIELD_NUMBER: builtins.int - ERROR_FIELD_NUMBER: builtins.int - uuid: builtins.str + DESCRIPTOR: _descriptor.Descriptor + UUID_FIELD_NUMBER: _builtins.int + INIT_FIELD_NUMBER: _builtins.int + UPDATE_FIELD_NUMBER: _builtins.int + DONE_FIELD_NUMBER: _builtins.int + ERROR_FIELD_NUMBER: _builtins.int + uuid: _builtins.str - @property - def init(self) -> global___AnswerResponseInitStage: + @_builtins.property + def init(self) -> Global___AnswerResponseInitStage: ... - @property - def update(self) -> global___AnswerResponseUpdateStage: + @_builtins.property + def update(self) -> Global___AnswerResponseUpdateStage: ... - @property - def done(self) -> global___AnswerResponseDoneStage: + @_builtins.property + def done(self) -> Global___AnswerResponseDoneStage: """done is sent when the answerer is done sending information""" - @property - def error(self) -> global___AnswerResponseErrorStage: + @_builtins.property + def error(self) -> Global___AnswerResponseErrorStage: """error is sent any time before done""" - def __init__(self, *, uuid: builtins.str=..., init: global___AnswerResponseInitStage | None=..., update: global___AnswerResponseUpdateStage | None=..., done: global___AnswerResponseDoneStage | None=..., error: global___AnswerResponseErrorStage | None=...) -> None: + def __init__(self, *, uuid: _builtins.str=..., init: Global___AnswerResponseInitStage | None=..., update: Global___AnswerResponseUpdateStage | None=..., done: Global___AnswerResponseDoneStage | None=..., error: Global___AnswerResponseErrorStage | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['done', b'done', 'error', b'error', 'init', b'init', 'stage', b'stage', 'update', b'update'] - def HasField(self, field_name: typing.Literal['done', b'done', 'error', b'error', 'init', b'init', 'stage', b'stage', 'update', b'update']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['done', b'done', 'error', b'error', 'init', b'init', 'stage', b'stage', 'update', b'update', 'uuid', b'uuid'] - def ClearField(self, field_name: typing.Literal['done', b'done', 'error', b'error', 'init', b'init', 'stage', b'stage', 'update', b'update', 'uuid', b'uuid']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_stage: _TypeAlias = _typing.Literal['init', 'update', 'done', 'error'] + _WhichOneofArgType_stage: _TypeAlias = _typing.Literal['stage', b'stage'] - def WhichOneof(self, oneof_group: typing.Literal['stage', b'stage']) -> typing.Literal['init', 'update', 'done', 'error'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_stage) -> _WhichOneofReturnType_stage | None: ... -global___AnswerResponse = AnswerResponse +Global___AnswerResponse: _TypeAlias = AnswerResponse -@typing.final -class OptionalWebRTCConfigRequest(google.protobuf.message.Message): +@_typing.final +class OptionalWebRTCConfigRequest(_message.Message): """OptionalWebRTCConfigRequest is the request for getting an optional WebRTC config to use for the peer connection. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___OptionalWebRTCConfigRequest = OptionalWebRTCConfigRequest +Global___OptionalWebRTCConfigRequest: _TypeAlias = OptionalWebRTCConfigRequest -@typing.final -class OptionalWebRTCConfigResponse(google.protobuf.message.Message): +@_typing.final +class OptionalWebRTCConfigResponse(_message.Message): """OptionalWebRTCConfigResponse contains the optional WebRTC config to use for the peer connection. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CONFIG_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + CONFIG_FIELD_NUMBER: _builtins.int - @property - def config(self) -> global___WebRTCConfig: + @_builtins.property + def config(self) -> Global___WebRTCConfig: ... - def __init__(self, *, config: global___WebRTCConfig | None=...) -> None: + def __init__(self, *, config: Global___WebRTCConfig | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['config', b'config'] - def HasField(self, field_name: typing.Literal['config', b'config']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['config', b'config'] - def ClearField(self, field_name: typing.Literal['config', b'config']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___OptionalWebRTCConfigResponse = OptionalWebRTCConfigResponse \ No newline at end of file +Global___OptionalWebRTCConfigResponse: _TypeAlias = OptionalWebRTCConfigResponse \ No newline at end of file diff --git a/src/viam/gen/provisioning/v1/provisioning_pb2.py b/src/viam/gen/provisioning/v1/provisioning_pb2.py index b4035b33db..1cd58bfd99 100644 --- a/src/viam/gen/provisioning/v1/provisioning_pb2.py +++ b/src/viam/gen/provisioning/v1/provisioning_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'provisioning/v1/provisioning.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'provisioning/v1/provisioning.proto') _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"provisioning/v1/provisioning.proto\x12\x14viam.provisioning.v1"\x19\n\x17ExitProvisioningRequest"\x1a\n\x18ExitProvisioningResponse"\x1e\n\x1cGetSmartMachineStatusRequest"\xf0\x02\n\x1dGetSmartMachineStatusResponse\x12S\n\x11provisioning_info\x18\x01 \x01(\x0b2&.viam.provisioning.v1.ProvisioningInfoR\x10provisioningInfo\x12A\n\x1dhas_smart_machine_credentials\x18\x02 \x01(\x08R\x1ahasSmartMachineCredentials\x12\x1b\n\tis_online\x18\x03 \x01(\x08R\x08isOnline\x12]\n\x19latest_connection_attempt\x18\x04 \x01(\x0b2!.viam.provisioning.v1.NetworkInfoR\x17latestConnectionAttempt\x12\x16\n\x06errors\x18\x05 \x03(\tR\x06errors\x12#\n\ragent_version\x18\x06 \x01(\tR\x0cagentVersion"X\n\x1cSetNetworkCredentialsRequest\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x12\n\x04ssid\x18\x02 \x01(\tR\x04ssid\x12\x10\n\x03psk\x18\x03 \x01(\tR\x03psk"\x1f\n\x1dSetNetworkCredentialsResponse"\\\n!SetSmartMachineCredentialsRequest\x127\n\x05cloud\x18\x01 \x01(\x0b2!.viam.provisioning.v1.CloudConfigR\x05cloud"$\n"SetSmartMachineCredentialsResponse"\x17\n\x15GetNetworkListRequest"W\n\x16GetNetworkListResponse\x12=\n\x08networks\x18\x01 \x03(\x0b2!.viam.provisioning.v1.NetworkInfoR\x08networks"m\n\x10ProvisioningInfo\x12\x1f\n\x0bfragment_id\x18\x01 \x01(\tR\nfragmentId\x12\x14\n\x05model\x18\x02 \x01(\tR\x05model\x12"\n\x0cmanufacturer\x18\x03 \x01(\tR\x0cmanufacturer"\xa6\x01\n\x0bNetworkInfo\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x12\n\x04ssid\x18\x02 \x01(\tR\x04ssid\x12\x1a\n\x08security\x18\x03 \x01(\tR\x08security\x12\x16\n\x06signal\x18\x04 \x01(\x05R\x06signal\x12\x1c\n\tconnected\x18\x05 \x01(\x08R\tconnected\x12\x1d\n\nlast_error\x18\x06 \x01(\tR\tlastError"\x8d\x01\n\x0bCloudConfig\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\x12\x1f\n\x0bapp_address\x18\x03 \x01(\tR\nappAddress\x125\n\x07api_key\x18\x04 \x01(\x0b2\x1c.viam.provisioning.v1.APIKeyR\x06apiKey"*\n\x06APIKey\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03key\x18\x02 \x01(\tR\x03key2\x8d\x05\n\x13ProvisioningService\x12\x80\x01\n\x15GetSmartMachineStatus\x122.viam.provisioning.v1.GetSmartMachineStatusRequest\x1a3.viam.provisioning.v1.GetSmartMachineStatusResponse\x12\x80\x01\n\x15SetNetworkCredentials\x122.viam.provisioning.v1.SetNetworkCredentialsRequest\x1a3.viam.provisioning.v1.SetNetworkCredentialsResponse\x12\x8f\x01\n\x1aSetSmartMachineCredentials\x127.viam.provisioning.v1.SetSmartMachineCredentialsRequest\x1a8.viam.provisioning.v1.SetSmartMachineCredentialsResponse\x12k\n\x0eGetNetworkList\x12+.viam.provisioning.v1.GetNetworkListRequest\x1a,.viam.provisioning.v1.GetNetworkListResponse\x12q\n\x10ExitProvisioning\x12-.viam.provisioning.v1.ExitProvisioningRequest\x1a..viam.provisioning.v1.ExitProvisioningResponseB!Z\x1fgo.viam.com/api/provisioning/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/provisioning/v1/provisioning_pb2.pyi b/src/viam/gen/provisioning/v1/provisioning_pb2.pyi index d08e087771..7ca98ae20a 100644 --- a/src/viam/gen/provisioning/v1/provisioning_pb2.pyi +++ b/src/viam/gen/provisioning/v1/provisioning_pb2.pyi @@ -2,228 +2,244 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class ExitProvisioningRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class ExitProvisioningRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ExitProvisioningRequest = ExitProvisioningRequest +Global___ExitProvisioningRequest: _TypeAlias = ExitProvisioningRequest -@typing.final -class ExitProvisioningResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ExitProvisioningResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ExitProvisioningResponse = ExitProvisioningResponse +Global___ExitProvisioningResponse: _TypeAlias = ExitProvisioningResponse -@typing.final -class GetSmartMachineStatusRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GetSmartMachineStatusRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___GetSmartMachineStatusRequest = GetSmartMachineStatusRequest +Global___GetSmartMachineStatusRequest: _TypeAlias = GetSmartMachineStatusRequest -@typing.final -class GetSmartMachineStatusResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PROVISIONING_INFO_FIELD_NUMBER: builtins.int - HAS_SMART_MACHINE_CREDENTIALS_FIELD_NUMBER: builtins.int - IS_ONLINE_FIELD_NUMBER: builtins.int - LATEST_CONNECTION_ATTEMPT_FIELD_NUMBER: builtins.int - ERRORS_FIELD_NUMBER: builtins.int - AGENT_VERSION_FIELD_NUMBER: builtins.int - has_smart_machine_credentials: builtins.bool - is_online: builtins.bool - agent_version: builtins.str +@_typing.final +class GetSmartMachineStatusResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PROVISIONING_INFO_FIELD_NUMBER: _builtins.int + HAS_SMART_MACHINE_CREDENTIALS_FIELD_NUMBER: _builtins.int + IS_ONLINE_FIELD_NUMBER: _builtins.int + LATEST_CONNECTION_ATTEMPT_FIELD_NUMBER: _builtins.int + ERRORS_FIELD_NUMBER: _builtins.int + AGENT_VERSION_FIELD_NUMBER: _builtins.int + has_smart_machine_credentials: _builtins.bool + is_online: _builtins.bool + agent_version: _builtins.str - @property - def provisioning_info(self) -> global___ProvisioningInfo: + @_builtins.property + def provisioning_info(self) -> Global___ProvisioningInfo: ... - @property - def latest_connection_attempt(self) -> global___NetworkInfo: + @_builtins.property + def latest_connection_attempt(self) -> Global___NetworkInfo: ... - @property - def errors(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def errors(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, provisioning_info: global___ProvisioningInfo | None=..., has_smart_machine_credentials: builtins.bool=..., is_online: builtins.bool=..., latest_connection_attempt: global___NetworkInfo | None=..., errors: collections.abc.Iterable[builtins.str] | None=..., agent_version: builtins.str=...) -> None: + def __init__(self, *, provisioning_info: Global___ProvisioningInfo | None=..., has_smart_machine_credentials: _builtins.bool=..., is_online: _builtins.bool=..., latest_connection_attempt: Global___NetworkInfo | None=..., errors: _abc.Iterable[_builtins.str] | None=..., agent_version: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['latest_connection_attempt', b'latest_connection_attempt', 'provisioning_info', b'provisioning_info'] - def HasField(self, field_name: typing.Literal['latest_connection_attempt', b'latest_connection_attempt', 'provisioning_info', b'provisioning_info']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['agent_version', b'agent_version', 'errors', b'errors', 'has_smart_machine_credentials', b'has_smart_machine_credentials', 'is_online', b'is_online', 'latest_connection_attempt', b'latest_connection_attempt', 'provisioning_info', b'provisioning_info'] - def ClearField(self, field_name: typing.Literal['agent_version', b'agent_version', 'errors', b'errors', 'has_smart_machine_credentials', b'has_smart_machine_credentials', 'is_online', b'is_online', 'latest_connection_attempt', b'latest_connection_attempt', 'provisioning_info', b'provisioning_info']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetSmartMachineStatusResponse = GetSmartMachineStatusResponse +Global___GetSmartMachineStatusResponse: _TypeAlias = GetSmartMachineStatusResponse -@typing.final -class SetNetworkCredentialsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TYPE_FIELD_NUMBER: builtins.int - SSID_FIELD_NUMBER: builtins.int - PSK_FIELD_NUMBER: builtins.int - type: builtins.str - ssid: builtins.str - psk: builtins.str +@_typing.final +class SetNetworkCredentialsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + SSID_FIELD_NUMBER: _builtins.int + PSK_FIELD_NUMBER: _builtins.int + type: _builtins.str + ssid: _builtins.str + psk: _builtins.str - def __init__(self, *, type: builtins.str=..., ssid: builtins.str=..., psk: builtins.str=...) -> None: + def __init__(self, *, type: _builtins.str=..., ssid: _builtins.str=..., psk: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['psk', b'psk', 'ssid', b'ssid', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['psk', b'psk', 'ssid', b'ssid', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SetNetworkCredentialsRequest = SetNetworkCredentialsRequest +Global___SetNetworkCredentialsRequest: _TypeAlias = SetNetworkCredentialsRequest -@typing.final -class SetNetworkCredentialsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SetNetworkCredentialsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SetNetworkCredentialsResponse = SetNetworkCredentialsResponse +Global___SetNetworkCredentialsResponse: _TypeAlias = SetNetworkCredentialsResponse -@typing.final -class SetSmartMachineCredentialsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CLOUD_FIELD_NUMBER: builtins.int +@_typing.final +class SetSmartMachineCredentialsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CLOUD_FIELD_NUMBER: _builtins.int - @property - def cloud(self) -> global___CloudConfig: + @_builtins.property + def cloud(self) -> Global___CloudConfig: ... - def __init__(self, *, cloud: global___CloudConfig | None=...) -> None: + def __init__(self, *, cloud: Global___CloudConfig | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['cloud', b'cloud'] - def HasField(self, field_name: typing.Literal['cloud', b'cloud']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['cloud', b'cloud'] - def ClearField(self, field_name: typing.Literal['cloud', b'cloud']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SetSmartMachineCredentialsRequest = SetSmartMachineCredentialsRequest +Global___SetSmartMachineCredentialsRequest: _TypeAlias = SetSmartMachineCredentialsRequest -@typing.final -class SetSmartMachineCredentialsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SetSmartMachineCredentialsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SetSmartMachineCredentialsResponse = SetSmartMachineCredentialsResponse +Global___SetSmartMachineCredentialsResponse: _TypeAlias = SetSmartMachineCredentialsResponse -@typing.final -class GetNetworkListRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GetNetworkListRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___GetNetworkListRequest = GetNetworkListRequest +Global___GetNetworkListRequest: _TypeAlias = GetNetworkListRequest -@typing.final -class GetNetworkListResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NETWORKS_FIELD_NUMBER: builtins.int +@_typing.final +class GetNetworkListResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NETWORKS_FIELD_NUMBER: _builtins.int - @property - def networks(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NetworkInfo]: + @_builtins.property + def networks(self) -> _containers.RepeatedCompositeFieldContainer[Global___NetworkInfo]: ... - def __init__(self, *, networks: collections.abc.Iterable[global___NetworkInfo] | None=...) -> None: + def __init__(self, *, networks: _abc.Iterable[Global___NetworkInfo] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['networks', b'networks'] - def ClearField(self, field_name: typing.Literal['networks', b'networks']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetNetworkListResponse = GetNetworkListResponse +Global___GetNetworkListResponse: _TypeAlias = GetNetworkListResponse -@typing.final -class ProvisioningInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAGMENT_ID_FIELD_NUMBER: builtins.int - MODEL_FIELD_NUMBER: builtins.int - MANUFACTURER_FIELD_NUMBER: builtins.int - fragment_id: builtins.str - model: builtins.str - manufacturer: builtins.str +@_typing.final +class ProvisioningInfo(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAGMENT_ID_FIELD_NUMBER: _builtins.int + MODEL_FIELD_NUMBER: _builtins.int + MANUFACTURER_FIELD_NUMBER: _builtins.int + fragment_id: _builtins.str + model: _builtins.str + manufacturer: _builtins.str - def __init__(self, *, fragment_id: builtins.str=..., model: builtins.str=..., manufacturer: builtins.str=...) -> None: + def __init__(self, *, fragment_id: _builtins.str=..., model: _builtins.str=..., manufacturer: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['fragment_id', b'fragment_id', 'manufacturer', b'manufacturer', 'model', b'model'] - def ClearField(self, field_name: typing.Literal['fragment_id', b'fragment_id', 'manufacturer', b'manufacturer', 'model', b'model']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ProvisioningInfo = ProvisioningInfo +Global___ProvisioningInfo: _TypeAlias = ProvisioningInfo -@typing.final -class NetworkInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TYPE_FIELD_NUMBER: builtins.int - SSID_FIELD_NUMBER: builtins.int - SECURITY_FIELD_NUMBER: builtins.int - SIGNAL_FIELD_NUMBER: builtins.int - CONNECTED_FIELD_NUMBER: builtins.int - LAST_ERROR_FIELD_NUMBER: builtins.int - type: builtins.str - ssid: builtins.str - security: builtins.str - signal: builtins.int - connected: builtins.bool - last_error: builtins.str +@_typing.final +class NetworkInfo(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + SSID_FIELD_NUMBER: _builtins.int + SECURITY_FIELD_NUMBER: _builtins.int + SIGNAL_FIELD_NUMBER: _builtins.int + CONNECTED_FIELD_NUMBER: _builtins.int + LAST_ERROR_FIELD_NUMBER: _builtins.int + type: _builtins.str + ssid: _builtins.str + security: _builtins.str + signal: _builtins.int + connected: _builtins.bool + last_error: _builtins.str - def __init__(self, *, type: builtins.str=..., ssid: builtins.str=..., security: builtins.str=..., signal: builtins.int=..., connected: builtins.bool=..., last_error: builtins.str=...) -> None: + def __init__(self, *, type: _builtins.str=..., ssid: _builtins.str=..., security: _builtins.str=..., signal: _builtins.int=..., connected: _builtins.bool=..., last_error: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['connected', b'connected', 'last_error', b'last_error', 'security', b'security', 'signal', b'signal', 'ssid', b'ssid', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['connected', b'connected', 'last_error', b'last_error', 'security', b'security', 'signal', b'signal', 'ssid', b'ssid', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___NetworkInfo = NetworkInfo +Global___NetworkInfo: _TypeAlias = NetworkInfo -@typing.final -class CloudConfig(google.protobuf.message.Message): +@_typing.final +class CloudConfig(_message.Message): """minimal CloudConfig to create /etc/viam.json""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - SECRET_FIELD_NUMBER: builtins.int - APP_ADDRESS_FIELD_NUMBER: builtins.int - API_KEY_FIELD_NUMBER: builtins.int - id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + SECRET_FIELD_NUMBER: _builtins.int + APP_ADDRESS_FIELD_NUMBER: _builtins.int + API_KEY_FIELD_NUMBER: _builtins.int + id: _builtins.str 'SmartMachine part id' - secret: builtins.str + secret: _builtins.str 'SmartMachine part secret' - app_address: builtins.str + app_address: _builtins.str - @property - def api_key(self) -> global___APIKey: + @_builtins.property + def api_key(self) -> Global___APIKey: ... - def __init__(self, *, id: builtins.str=..., secret: builtins.str=..., app_address: builtins.str=..., api_key: global___APIKey | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., secret: _builtins.str=..., app_address: _builtins.str=..., api_key: Global___APIKey | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['api_key', b'api_key'] - def HasField(self, field_name: typing.Literal['api_key', b'api_key']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['api_key', b'api_key', 'app_address', b'app_address', 'id', b'id', 'secret', b'secret'] - def ClearField(self, field_name: typing.Literal['api_key', b'api_key', 'app_address', b'app_address', 'id', b'id', 'secret', b'secret']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CloudConfig = CloudConfig +Global___CloudConfig: _TypeAlias = CloudConfig -@typing.final -class APIKey(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - KEY_FIELD_NUMBER: builtins.int - id: builtins.str - key: builtins.str +@_typing.final +class APIKey(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + KEY_FIELD_NUMBER: _builtins.int + id: _builtins.str + key: _builtins.str - def __init__(self, *, id: builtins.str=..., key: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., key: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'key', b'key'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'key', b'key']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___APIKey = APIKey \ No newline at end of file +Global___APIKey: _TypeAlias = APIKey \ No newline at end of file diff --git a/src/viam/gen/robot/v1/robot_grpc.py b/src/viam/gen/robot/v1/robot_grpc.py index d0139ea324..0a7241a7d0 100644 --- a/src/viam/gen/robot/v1/robot_grpc.py +++ b/src/viam/gen/robot/v1/robot_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from ... import common -import google.api.annotations_pb2 +from ... import google import google.protobuf.duration_pb2 import google.protobuf.struct_pb2 import google.protobuf.timestamp_pb2 diff --git a/src/viam/gen/robot/v1/robot_pb2.py b/src/viam/gen/robot/v1/robot_pb2.py index 13a7b4b86e..0b3d05da29 100644 --- a/src/viam/gen/robot/v1/robot_pb2.py +++ b/src/viam/gen/robot/v1/robot_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'robot/v1/robot.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'robot/v1/robot.proto') _sym_db = _symbol_database.Default() from ...common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ...google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 diff --git a/src/viam/gen/robot/v1/robot_pb2.pyi b/src/viam/gen/robot/v1/robot_pb2.pyi index 759dcfb052..568a2618f4 100644 --- a/src/viam/gen/robot/v1/robot_pb2.pyi +++ b/src/viam/gen/robot/v1/robot_pb2.pyi @@ -2,31 +2,35 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -from ... import common -import google.protobuf.descriptor -import google.protobuf.duration_pb2 -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 -import google.protobuf.timestamp_pb2 -from ... import opentelemetry +from collections import abc as _abc +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import duration_pb2 as _duration_pb2 +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from opentelemetry.proto.trace.v1 import trace_pb2 as _trace_pb2 +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +if sys.version_info >= (3, 13): + from warnings import deprecated as _deprecated +else: + from typing_extensions import deprecated as _deprecated +DESCRIPTOR: _descriptor.FileDescriptor class _PeerConnectionType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _PeerConnectionTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PeerConnectionType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _PeerConnectionTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_PeerConnectionType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor PEER_CONNECTION_TYPE_UNSPECIFIED: _PeerConnectionType.ValueType PEER_CONNECTION_TYPE_GRPC: _PeerConnectionType.ValueType PEER_CONNECTION_TYPE_WEBRTC: _PeerConnectionType.ValueType @@ -36,856 +40,924 @@ class PeerConnectionType(_PeerConnectionType, metaclass=_PeerConnectionTypeEnumT PEER_CONNECTION_TYPE_UNSPECIFIED: PeerConnectionType.ValueType PEER_CONNECTION_TYPE_GRPC: PeerConnectionType.ValueType PEER_CONNECTION_TYPE_WEBRTC: PeerConnectionType.ValueType -global___PeerConnectionType = PeerConnectionType +Global___PeerConnectionType: _TypeAlias = PeerConnectionType -@typing.final -class SendTracesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RESOURCE_SPANS_FIELD_NUMBER: builtins.int +@_typing.final +class SendTracesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + RESOURCE_SPANS_FIELD_NUMBER: _builtins.int - @property - def resource_spans(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[opentelemetry.proto.trace.v1.trace_pb2.ResourceSpans]: + @_builtins.property + def resource_spans(self) -> _containers.RepeatedCompositeFieldContainer[_trace_pb2.ResourceSpans]: ... - def __init__(self, *, resource_spans: collections.abc.Iterable[opentelemetry.proto.trace.v1.trace_pb2.ResourceSpans] | None=...) -> None: + def __init__(self, *, resource_spans: _abc.Iterable[_trace_pb2.ResourceSpans] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['resource_spans', b'resource_spans'] - def ClearField(self, field_name: typing.Literal['resource_spans', b'resource_spans']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SendTracesRequest = SendTracesRequest +Global___SendTracesRequest: _TypeAlias = SendTracesRequest -@typing.final -class SendTracesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SendTracesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SendTracesResponse = SendTracesResponse +Global___SendTracesResponse: _TypeAlias = SendTracesResponse -@typing.final -class TunnelRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DESTINATION_PORT_FIELD_NUMBER: builtins.int - DATA_FIELD_NUMBER: builtins.int - destination_port: builtins.int - data: builtins.bytes +@_typing.final +class TunnelRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DESTINATION_PORT_FIELD_NUMBER: _builtins.int + DATA_FIELD_NUMBER: _builtins.int + destination_port: _builtins.int + data: _builtins.bytes - def __init__(self, *, destination_port: builtins.int=..., data: builtins.bytes=...) -> None: + def __init__(self, *, destination_port: _builtins.int=..., data: _builtins.bytes=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data', 'destination_port', b'destination_port'] - def ClearField(self, field_name: typing.Literal['data', b'data', 'destination_port', b'destination_port']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TunnelRequest = TunnelRequest +Global___TunnelRequest: _TypeAlias = TunnelRequest -@typing.final -class TunnelResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int - data: builtins.bytes +@_typing.final +class TunnelResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int + data: _builtins.bytes - def __init__(self, *, data: builtins.bytes=...) -> None: + def __init__(self, *, data: _builtins.bytes=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TunnelResponse = TunnelResponse +Global___TunnelResponse: _TypeAlias = TunnelResponse -@typing.final -class ListTunnelsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ListTunnelsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ListTunnelsRequest = ListTunnelsRequest +Global___ListTunnelsRequest: _TypeAlias = ListTunnelsRequest -@typing.final -class ListTunnelsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TUNNELS_FIELD_NUMBER: builtins.int +@_typing.final +class ListTunnelsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + TUNNELS_FIELD_NUMBER: _builtins.int - @property - def tunnels(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Tunnel]: + @_builtins.property + def tunnels(self) -> _containers.RepeatedCompositeFieldContainer[Global___Tunnel]: ... - def __init__(self, *, tunnels: collections.abc.Iterable[global___Tunnel] | None=...) -> None: + def __init__(self, *, tunnels: _abc.Iterable[Global___Tunnel] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['tunnels', b'tunnels'] - def ClearField(self, field_name: typing.Literal['tunnels', b'tunnels']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListTunnelsResponse = ListTunnelsResponse +Global___ListTunnelsResponse: _TypeAlias = ListTunnelsResponse -@typing.final -class Tunnel(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PORT_FIELD_NUMBER: builtins.int - CONNECTION_TIMEOUT_FIELD_NUMBER: builtins.int - port: builtins.int +@_typing.final +class Tunnel(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PORT_FIELD_NUMBER: _builtins.int + CONNECTION_TIMEOUT_FIELD_NUMBER: _builtins.int + port: _builtins.int - @property - def connection_timeout(self) -> google.protobuf.duration_pb2.Duration: + @_builtins.property + def connection_timeout(self) -> _duration_pb2.Duration: ... - def __init__(self, *, port: builtins.int=..., connection_timeout: google.protobuf.duration_pb2.Duration | None=...) -> None: + def __init__(self, *, port: _builtins.int=..., connection_timeout: _duration_pb2.Duration | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['connection_timeout', b'connection_timeout'] - def HasField(self, field_name: typing.Literal['connection_timeout', b'connection_timeout']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['connection_timeout', b'connection_timeout', 'port', b'port'] - def ClearField(self, field_name: typing.Literal['connection_timeout', b'connection_timeout', 'port', b'port']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Tunnel = Tunnel +Global___Tunnel: _TypeAlias = Tunnel -@typing.final -class FrameSystemConfig(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAME_FIELD_NUMBER: builtins.int - KINEMATICS_FIELD_NUMBER: builtins.int +@_typing.final +class FrameSystemConfig(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAME_FIELD_NUMBER: _builtins.int + KINEMATICS_FIELD_NUMBER: _builtins.int - @property - def frame(self) -> common.v1.common_pb2.Transform: + @_builtins.property + def frame(self) -> _common_pb2.Transform: """this is an experimental API message""" - @property - def kinematics(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def kinematics(self) -> _struct_pb2.Struct: ... - def __init__(self, *, frame: common.v1.common_pb2.Transform | None=..., kinematics: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, frame: _common_pb2.Transform | None=..., kinematics: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['frame', b'frame', 'kinematics', b'kinematics'] - def HasField(self, field_name: typing.Literal['frame', b'frame', 'kinematics', b'kinematics']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['frame', b'frame', 'kinematics', b'kinematics'] - def ClearField(self, field_name: typing.Literal['frame', b'frame', 'kinematics', b'kinematics']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FrameSystemConfig = FrameSystemConfig +Global___FrameSystemConfig: _TypeAlias = FrameSystemConfig -@typing.final -class FrameSystemConfigRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SUPPLEMENTAL_TRANSFORMS_FIELD_NUMBER: builtins.int +@_typing.final +class FrameSystemConfigRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SUPPLEMENTAL_TRANSFORMS_FIELD_NUMBER: _builtins.int - @property - def supplemental_transforms(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.Transform]: + @_builtins.property + def supplemental_transforms(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.Transform]: """pose information on any additional reference frames that are needed to supplement the robot's frame system """ - def __init__(self, *, supplemental_transforms: collections.abc.Iterable[common.v1.common_pb2.Transform] | None=...) -> None: + def __init__(self, *, supplemental_transforms: _abc.Iterable[_common_pb2.Transform] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['supplemental_transforms', b'supplemental_transforms'] - def ClearField(self, field_name: typing.Literal['supplemental_transforms', b'supplemental_transforms']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FrameSystemConfigRequest = FrameSystemConfigRequest +Global___FrameSystemConfigRequest: _TypeAlias = FrameSystemConfigRequest -@typing.final -class FrameSystemConfigResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAME_SYSTEM_CONFIGS_FIELD_NUMBER: builtins.int +@_typing.final +class FrameSystemConfigResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAME_SYSTEM_CONFIGS_FIELD_NUMBER: _builtins.int - @property - def frame_system_configs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FrameSystemConfig]: + @_builtins.property + def frame_system_configs(self) -> _containers.RepeatedCompositeFieldContainer[Global___FrameSystemConfig]: ... - def __init__(self, *, frame_system_configs: collections.abc.Iterable[global___FrameSystemConfig] | None=...) -> None: + def __init__(self, *, frame_system_configs: _abc.Iterable[Global___FrameSystemConfig] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['frame_system_configs', b'frame_system_configs'] - def ClearField(self, field_name: typing.Literal['frame_system_configs', b'frame_system_configs']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FrameSystemConfigResponse = FrameSystemConfigResponse +Global___FrameSystemConfigResponse: _TypeAlias = FrameSystemConfigResponse -@typing.final -class TransformPoseRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SOURCE_FIELD_NUMBER: builtins.int - DESTINATION_FIELD_NUMBER: builtins.int - SUPPLEMENTAL_TRANSFORMS_FIELD_NUMBER: builtins.int - destination: builtins.str +@_typing.final +class TransformPoseRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SOURCE_FIELD_NUMBER: _builtins.int + DESTINATION_FIELD_NUMBER: _builtins.int + SUPPLEMENTAL_TRANSFORMS_FIELD_NUMBER: _builtins.int + destination: _builtins.str 'the reference frame into which the source pose should be transformed,\n if unset this defaults to the "world" reference frame\n ' - @property - def source(self) -> common.v1.common_pb2.PoseInFrame: + @_builtins.property + def source(self) -> _common_pb2.PoseInFrame: """the original pose to transform along with the reference frame in which it was observed """ - @property - def supplemental_transforms(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.Transform]: + @_builtins.property + def supplemental_transforms(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.Transform]: """pose information on any additional reference frames that are needed to perform the transform """ - def __init__(self, *, source: common.v1.common_pb2.PoseInFrame | None=..., destination: builtins.str=..., supplemental_transforms: collections.abc.Iterable[common.v1.common_pb2.Transform] | None=...) -> None: + def __init__(self, *, source: _common_pb2.PoseInFrame | None=..., destination: _builtins.str=..., supplemental_transforms: _abc.Iterable[_common_pb2.Transform] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['source', b'source'] - def HasField(self, field_name: typing.Literal['source', b'source']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['destination', b'destination', 'source', b'source', 'supplemental_transforms', b'supplemental_transforms'] - def ClearField(self, field_name: typing.Literal['destination', b'destination', 'source', b'source', 'supplemental_transforms', b'supplemental_transforms']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TransformPoseRequest = TransformPoseRequest +Global___TransformPoseRequest: _TypeAlias = TransformPoseRequest -@typing.final -class TransformPoseResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POSE_FIELD_NUMBER: builtins.int +@_typing.final +class TransformPoseResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POSE_FIELD_NUMBER: _builtins.int - @property - def pose(self) -> common.v1.common_pb2.PoseInFrame: + @_builtins.property + def pose(self) -> _common_pb2.PoseInFrame: ... - def __init__(self, *, pose: common.v1.common_pb2.PoseInFrame | None=...) -> None: + def __init__(self, *, pose: _common_pb2.PoseInFrame | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['pose', b'pose'] - def HasField(self, field_name: typing.Literal['pose', b'pose']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['pose', b'pose'] - def ClearField(self, field_name: typing.Literal['pose', b'pose']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TransformPoseResponse = TransformPoseResponse +Global___TransformPoseResponse: _TypeAlias = TransformPoseResponse -@typing.final -class TransformPCDRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POINT_CLOUD_PCD_FIELD_NUMBER: builtins.int - SOURCE_FIELD_NUMBER: builtins.int - DESTINATION_FIELD_NUMBER: builtins.int - point_cloud_pcd: builtins.bytes +@_typing.final +class TransformPCDRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POINT_CLOUD_PCD_FIELD_NUMBER: _builtins.int + SOURCE_FIELD_NUMBER: _builtins.int + DESTINATION_FIELD_NUMBER: _builtins.int + point_cloud_pcd: _builtins.bytes 'the point clouds to transform. This should be in the PCD format,\n [encoded into bytes](https://pointclouds.org/documentation/tutorials/pcd_file_format.html).\n ' - source: builtins.str + source: _builtins.str 'the reference frame of the point cloud.' - destination: builtins.str + destination: _builtins.str 'the reference frame into which the source data should be transformed, if unset this defaults to the "world" reference frame.\n Do not move the robot between the generation of the initial pointcloud and the receipt\n of the transformed pointcloud because that will make the transformations inaccurate\n ' - def __init__(self, *, point_cloud_pcd: builtins.bytes=..., source: builtins.str=..., destination: builtins.str=...) -> None: + def __init__(self, *, point_cloud_pcd: _builtins.bytes=..., source: _builtins.str=..., destination: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['destination', b'destination', 'point_cloud_pcd', b'point_cloud_pcd', 'source', b'source'] - def ClearField(self, field_name: typing.Literal['destination', b'destination', 'point_cloud_pcd', b'point_cloud_pcd', 'source', b'source']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TransformPCDRequest = TransformPCDRequest +Global___TransformPCDRequest: _TypeAlias = TransformPCDRequest -@typing.final -class TransformPCDResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POINT_CLOUD_PCD_FIELD_NUMBER: builtins.int - point_cloud_pcd: builtins.bytes +@_typing.final +class TransformPCDResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POINT_CLOUD_PCD_FIELD_NUMBER: _builtins.int + point_cloud_pcd: _builtins.bytes - def __init__(self, *, point_cloud_pcd: builtins.bytes=...) -> None: + def __init__(self, *, point_cloud_pcd: _builtins.bytes=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['point_cloud_pcd', b'point_cloud_pcd'] - def ClearField(self, field_name: typing.Literal['point_cloud_pcd', b'point_cloud_pcd']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TransformPCDResponse = TransformPCDResponse +Global___TransformPCDResponse: _TypeAlias = TransformPCDResponse -@typing.final -class ResourceNamesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ResourceNamesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ResourceNamesRequest = ResourceNamesRequest +Global___ResourceNamesRequest: _TypeAlias = ResourceNamesRequest -@typing.final -class ResourceNamesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RESOURCES_FIELD_NUMBER: builtins.int +@_typing.final +class ResourceNamesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + RESOURCES_FIELD_NUMBER: _builtins.int - @property - def resources(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.ResourceName]: + @_builtins.property + def resources(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.ResourceName]: ... - def __init__(self, *, resources: collections.abc.Iterable[common.v1.common_pb2.ResourceName] | None=...) -> None: + def __init__(self, *, resources: _abc.Iterable[_common_pb2.ResourceName] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['resources', b'resources'] - def ClearField(self, field_name: typing.Literal['resources', b'resources']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ResourceNamesResponse = ResourceNamesResponse +Global___ResourceNamesResponse: _TypeAlias = ResourceNamesResponse -@typing.final -class ResourceRPCSubtype(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SUBTYPE_FIELD_NUMBER: builtins.int - PROTO_SERVICE_FIELD_NUMBER: builtins.int - proto_service: builtins.str +@_typing.final +class ResourceRPCSubtype(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SUBTYPE_FIELD_NUMBER: _builtins.int + PROTO_SERVICE_FIELD_NUMBER: _builtins.int + proto_service: _builtins.str - @property - def subtype(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + def subtype(self) -> _common_pb2.ResourceName: ... - def __init__(self, *, subtype: common.v1.common_pb2.ResourceName | None=..., proto_service: builtins.str=...) -> None: + def __init__(self, *, subtype: _common_pb2.ResourceName | None=..., proto_service: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['subtype', b'subtype'] - def HasField(self, field_name: typing.Literal['subtype', b'subtype']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['proto_service', b'proto_service', 'subtype', b'subtype'] - def ClearField(self, field_name: typing.Literal['proto_service', b'proto_service', 'subtype', b'subtype']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ResourceRPCSubtype = ResourceRPCSubtype +Global___ResourceRPCSubtype: _TypeAlias = ResourceRPCSubtype -@typing.final -class ResourceRPCSubtypesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ResourceRPCSubtypesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ResourceRPCSubtypesRequest = ResourceRPCSubtypesRequest +Global___ResourceRPCSubtypesRequest: _TypeAlias = ResourceRPCSubtypesRequest -@typing.final -class ResourceRPCSubtypesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RESOURCE_RPC_SUBTYPES_FIELD_NUMBER: builtins.int +@_typing.final +class ResourceRPCSubtypesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + RESOURCE_RPC_SUBTYPES_FIELD_NUMBER: _builtins.int - @property - def resource_rpc_subtypes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ResourceRPCSubtype]: + @_builtins.property + def resource_rpc_subtypes(self) -> _containers.RepeatedCompositeFieldContainer[Global___ResourceRPCSubtype]: ... - def __init__(self, *, resource_rpc_subtypes: collections.abc.Iterable[global___ResourceRPCSubtype] | None=...) -> None: + def __init__(self, *, resource_rpc_subtypes: _abc.Iterable[Global___ResourceRPCSubtype] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['resource_rpc_subtypes', b'resource_rpc_subtypes'] - def ClearField(self, field_name: typing.Literal['resource_rpc_subtypes', b'resource_rpc_subtypes']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ResourceRPCSubtypesResponse = ResourceRPCSubtypesResponse +Global___ResourceRPCSubtypesResponse: _TypeAlias = ResourceRPCSubtypesResponse -@typing.final -class Operation(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - METHOD_FIELD_NUMBER: builtins.int - ARGUMENTS_FIELD_NUMBER: builtins.int - STARTED_FIELD_NUMBER: builtins.int - SESSION_ID_FIELD_NUMBER: builtins.int - id: builtins.str - method: builtins.str - session_id: builtins.str +@_typing.final +class Operation(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + METHOD_FIELD_NUMBER: _builtins.int + ARGUMENTS_FIELD_NUMBER: _builtins.int + STARTED_FIELD_NUMBER: _builtins.int + SESSION_ID_FIELD_NUMBER: _builtins.int + id: _builtins.str + method: _builtins.str + session_id: _builtins.str - @property - def arguments(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def arguments(self) -> _struct_pb2.Struct: ... - @property - def started(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def started(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, id: builtins.str=..., method: builtins.str=..., arguments: google.protobuf.struct_pb2.Struct | None=..., started: google.protobuf.timestamp_pb2.Timestamp | None=..., session_id: builtins.str | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., method: _builtins.str=..., arguments: _struct_pb2.Struct | None=..., started: _timestamp_pb2.Timestamp | None=..., session_id: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_session_id', b'_session_id', 'arguments', b'arguments', 'session_id', b'session_id', 'started', b'started'] - def HasField(self, field_name: typing.Literal['_session_id', b'_session_id', 'arguments', b'arguments', 'session_id', b'session_id', 'started', b'started']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_session_id', b'_session_id', 'arguments', b'arguments', 'id', b'id', 'method', b'method', 'session_id', b'session_id', 'started', b'started'] - def ClearField(self, field_name: typing.Literal['_session_id', b'_session_id', 'arguments', b'arguments', 'id', b'id', 'method', b'method', 'session_id', b'session_id', 'started', b'started']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__session_id: _TypeAlias = _typing.Literal['session_id'] + _WhichOneofArgType__session_id: _TypeAlias = _typing.Literal['_session_id', b'_session_id'] - def WhichOneof(self, oneof_group: typing.Literal['_session_id', b'_session_id']) -> typing.Literal['session_id'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__session_id) -> _WhichOneofReturnType__session_id | None: ... -global___Operation = Operation +Global___Operation: _TypeAlias = Operation -@typing.final -class GetOperationsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GetOperationsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___GetOperationsRequest = GetOperationsRequest +Global___GetOperationsRequest: _TypeAlias = GetOperationsRequest -@typing.final -class GetOperationsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - OPERATIONS_FIELD_NUMBER: builtins.int +@_typing.final +class GetOperationsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + OPERATIONS_FIELD_NUMBER: _builtins.int - @property - def operations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Operation]: + @_builtins.property + def operations(self) -> _containers.RepeatedCompositeFieldContainer[Global___Operation]: ... - def __init__(self, *, operations: collections.abc.Iterable[global___Operation] | None=...) -> None: + def __init__(self, *, operations: _abc.Iterable[Global___Operation] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['operations', b'operations'] - def ClearField(self, field_name: typing.Literal['operations', b'operations']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetOperationsResponse = GetOperationsResponse +Global___GetOperationsResponse: _TypeAlias = GetOperationsResponse -@typing.final -class CancelOperationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class CancelOperationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CancelOperationRequest = CancelOperationRequest +Global___CancelOperationRequest: _TypeAlias = CancelOperationRequest -@typing.final -class CancelOperationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class CancelOperationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___CancelOperationResponse = CancelOperationResponse +Global___CancelOperationResponse: _TypeAlias = CancelOperationResponse -@typing.final -class BlockForOperationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class BlockForOperationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___BlockForOperationRequest = BlockForOperationRequest +Global___BlockForOperationRequest: _TypeAlias = BlockForOperationRequest -@typing.final -class BlockForOperationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class BlockForOperationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___BlockForOperationResponse = BlockForOperationResponse +Global___BlockForOperationResponse: _TypeAlias = BlockForOperationResponse -@typing.final -class PeerConnectionInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TYPE_FIELD_NUMBER: builtins.int - REMOTE_ADDRESS_FIELD_NUMBER: builtins.int - LOCAL_ADDRESS_FIELD_NUMBER: builtins.int - type: global___PeerConnectionType.ValueType - remote_address: builtins.str - local_address: builtins.str +@_typing.final +class PeerConnectionInfo(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + TYPE_FIELD_NUMBER: _builtins.int + REMOTE_ADDRESS_FIELD_NUMBER: _builtins.int + LOCAL_ADDRESS_FIELD_NUMBER: _builtins.int + type: Global___PeerConnectionType.ValueType + remote_address: _builtins.str + local_address: _builtins.str - def __init__(self, *, type: global___PeerConnectionType.ValueType=..., remote_address: builtins.str | None=..., local_address: builtins.str | None=...) -> None: + def __init__(self, *, type: Global___PeerConnectionType.ValueType=..., remote_address: _builtins.str | None=..., local_address: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_local_address', b'_local_address', '_remote_address', b'_remote_address', 'local_address', b'local_address', 'remote_address', b'remote_address'] - def HasField(self, field_name: typing.Literal['_local_address', b'_local_address', '_remote_address', b'_remote_address', 'local_address', b'local_address', 'remote_address', b'remote_address']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_local_address', b'_local_address', '_remote_address', b'_remote_address', 'local_address', b'local_address', 'remote_address', b'remote_address', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['_local_address', b'_local_address', '_remote_address', b'_remote_address', 'local_address', b'local_address', 'remote_address', b'remote_address', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__local_address: _TypeAlias = _typing.Literal['local_address'] + _WhichOneofArgType__local_address: _TypeAlias = _typing.Literal['_local_address', b'_local_address'] + _WhichOneofReturnType__remote_address: _TypeAlias = _typing.Literal['remote_address'] + _WhichOneofArgType__remote_address: _TypeAlias = _typing.Literal['_remote_address', b'_remote_address'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_local_address', b'_local_address']) -> typing.Literal['local_address'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__local_address) -> _WhichOneofReturnType__local_address | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_remote_address', b'_remote_address']) -> typing.Literal['remote_address'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__remote_address) -> _WhichOneofReturnType__remote_address | None: ... -global___PeerConnectionInfo = PeerConnectionInfo +Global___PeerConnectionInfo: _TypeAlias = PeerConnectionInfo -@typing.final -class Session(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - PEER_CONNECTION_INFO_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class Session(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + PEER_CONNECTION_INFO_FIELD_NUMBER: _builtins.int + id: _builtins.str - @property - def peer_connection_info(self) -> global___PeerConnectionInfo: + @_builtins.property + def peer_connection_info(self) -> Global___PeerConnectionInfo: ... - def __init__(self, *, id: builtins.str=..., peer_connection_info: global___PeerConnectionInfo | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., peer_connection_info: Global___PeerConnectionInfo | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_peer_connection_info', b'_peer_connection_info', 'peer_connection_info', b'peer_connection_info'] - def HasField(self, field_name: typing.Literal['_peer_connection_info', b'_peer_connection_info', 'peer_connection_info', b'peer_connection_info']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_peer_connection_info', b'_peer_connection_info', 'id', b'id', 'peer_connection_info', b'peer_connection_info'] - def ClearField(self, field_name: typing.Literal['_peer_connection_info', b'_peer_connection_info', 'id', b'id', 'peer_connection_info', b'peer_connection_info']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__peer_connection_info: _TypeAlias = _typing.Literal['peer_connection_info'] + _WhichOneofArgType__peer_connection_info: _TypeAlias = _typing.Literal['_peer_connection_info', b'_peer_connection_info'] - def WhichOneof(self, oneof_group: typing.Literal['_peer_connection_info', b'_peer_connection_info']) -> typing.Literal['peer_connection_info'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__peer_connection_info) -> _WhichOneofReturnType__peer_connection_info | None: ... -global___Session = Session +Global___Session: _TypeAlias = Session -@typing.final -class GetSessionsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GetSessionsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___GetSessionsRequest = GetSessionsRequest +Global___GetSessionsRequest: _TypeAlias = GetSessionsRequest -@typing.final -class GetSessionsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SESSIONS_FIELD_NUMBER: builtins.int +@_typing.final +class GetSessionsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SESSIONS_FIELD_NUMBER: _builtins.int - @property - def sessions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Session]: + @_builtins.property + def sessions(self) -> _containers.RepeatedCompositeFieldContainer[Global___Session]: ... - def __init__(self, *, sessions: collections.abc.Iterable[global___Session] | None=...) -> None: + def __init__(self, *, sessions: _abc.Iterable[Global___Session] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['sessions', b'sessions'] - def ClearField(self, field_name: typing.Literal['sessions', b'sessions']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetSessionsResponse = GetSessionsResponse +Global___GetSessionsResponse: _TypeAlias = GetSessionsResponse -@typing.final -class ModuleModel(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODULE_NAME_FIELD_NUMBER: builtins.int - MODEL_FIELD_NUMBER: builtins.int - API_FIELD_NUMBER: builtins.int - FROM_LOCAL_MODULE_FIELD_NUMBER: builtins.int - module_name: builtins.str - model: builtins.str - api: builtins.str - from_local_module: builtins.bool +@_typing.final +class ModuleModel(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODULE_NAME_FIELD_NUMBER: _builtins.int + MODEL_FIELD_NUMBER: _builtins.int + API_FIELD_NUMBER: _builtins.int + FROM_LOCAL_MODULE_FIELD_NUMBER: _builtins.int + module_name: _builtins.str + model: _builtins.str + api: _builtins.str + from_local_module: _builtins.bool - def __init__(self, *, module_name: builtins.str=..., model: builtins.str=..., api: builtins.str=..., from_local_module: builtins.bool=...) -> None: + def __init__(self, *, module_name: _builtins.str=..., model: _builtins.str=..., api: _builtins.str=..., from_local_module: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['api', b'api', 'from_local_module', b'from_local_module', 'model', b'model', 'module_name', b'module_name'] - def ClearField(self, field_name: typing.Literal['api', b'api', 'from_local_module', b'from_local_module', 'model', b'model', 'module_name', b'module_name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ModuleModel = ModuleModel +Global___ModuleModel: _TypeAlias = ModuleModel -@typing.final -class GetModelsFromModulesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GetModelsFromModulesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___GetModelsFromModulesRequest = GetModelsFromModulesRequest +Global___GetModelsFromModulesRequest: _TypeAlias = GetModelsFromModulesRequest -@typing.final -class GetModelsFromModulesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODELS_FIELD_NUMBER: builtins.int +@_typing.final +class GetModelsFromModulesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODELS_FIELD_NUMBER: _builtins.int - @property - def models(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ModuleModel]: + @_builtins.property + def models(self) -> _containers.RepeatedCompositeFieldContainer[Global___ModuleModel]: ... - def __init__(self, *, models: collections.abc.Iterable[global___ModuleModel] | None=...) -> None: + def __init__(self, *, models: _abc.Iterable[Global___ModuleModel] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['models', b'models'] - def ClearField(self, field_name: typing.Literal['models', b'models']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetModelsFromModulesResponse = GetModelsFromModulesResponse +Global___GetModelsFromModulesResponse: _TypeAlias = GetModelsFromModulesResponse -@typing.final -class Status(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - LAST_RECONFIGURED_FIELD_NUMBER: builtins.int +@_typing.final +class Status(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + STATUS_FIELD_NUMBER: _builtins.int + LAST_RECONFIGURED_FIELD_NUMBER: _builtins.int - @property - def name(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + def name(self) -> _common_pb2.ResourceName: ... - @property - def status(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def status(self) -> _struct_pb2.Struct: ... - @property - def last_reconfigured(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def last_reconfigured(self) -> _timestamp_pb2.Timestamp: ... - def __init__(self, *, name: common.v1.common_pb2.ResourceName | None=..., status: google.protobuf.struct_pb2.Struct | None=..., last_reconfigured: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, name: _common_pb2.ResourceName | None=..., status: _struct_pb2.Struct | None=..., last_reconfigured: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['last_reconfigured', b'last_reconfigured', 'name', b'name', 'status', b'status'] - def HasField(self, field_name: typing.Literal['last_reconfigured', b'last_reconfigured', 'name', b'name', 'status', b'status']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['last_reconfigured', b'last_reconfigured', 'name', b'name', 'status', b'status'] - def ClearField(self, field_name: typing.Literal['last_reconfigured', b'last_reconfigured', 'name', b'name', 'status', b'status']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Status = Status +Global___Status: _TypeAlias = Status -@typing.final -class GetStatusRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RESOURCE_NAMES_FIELD_NUMBER: builtins.int +@_typing.final +class GetStatusRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + RESOURCE_NAMES_FIELD_NUMBER: _builtins.int - @property - def resource_names(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.ResourceName]: + @_builtins.property + def resource_names(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.ResourceName]: ... - def __init__(self, *, resource_names: collections.abc.Iterable[common.v1.common_pb2.ResourceName] | None=...) -> None: + def __init__(self, *, resource_names: _abc.Iterable[_common_pb2.ResourceName] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['resource_names', b'resource_names'] - def ClearField(self, field_name: typing.Literal['resource_names', b'resource_names']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetStatusRequest = GetStatusRequest +Global___GetStatusRequest: _TypeAlias = GetStatusRequest -@typing.final -class GetStatusResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - STATUS_FIELD_NUMBER: builtins.int +@_typing.final +class GetStatusResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + STATUS_FIELD_NUMBER: _builtins.int - @property - def status(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Status]: + @_builtins.property + def status(self) -> _containers.RepeatedCompositeFieldContainer[Global___Status]: ... - def __init__(self, *, status: collections.abc.Iterable[global___Status] | None=...) -> None: + def __init__(self, *, status: _abc.Iterable[Global___Status] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['status', b'status'] - def ClearField(self, field_name: typing.Literal['status', b'status']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetStatusResponse = GetStatusResponse +Global___GetStatusResponse: _TypeAlias = GetStatusResponse -@typing.final -class StreamStatusRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RESOURCE_NAMES_FIELD_NUMBER: builtins.int - EVERY_FIELD_NUMBER: builtins.int +@_typing.final +class StreamStatusRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + RESOURCE_NAMES_FIELD_NUMBER: _builtins.int + EVERY_FIELD_NUMBER: _builtins.int - @property - def resource_names(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.ResourceName]: + @_builtins.property + def resource_names(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.ResourceName]: ... - @property - def every(self) -> google.protobuf.duration_pb2.Duration: + @_builtins.property + def every(self) -> _duration_pb2.Duration: """how often to send a new status.""" - def __init__(self, *, resource_names: collections.abc.Iterable[common.v1.common_pb2.ResourceName] | None=..., every: google.protobuf.duration_pb2.Duration | None=...) -> None: + def __init__(self, *, resource_names: _abc.Iterable[_common_pb2.ResourceName] | None=..., every: _duration_pb2.Duration | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['every', b'every'] - def HasField(self, field_name: typing.Literal['every', b'every']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['every', b'every', 'resource_names', b'resource_names'] - def ClearField(self, field_name: typing.Literal['every', b'every', 'resource_names', b'resource_names']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StreamStatusRequest = StreamStatusRequest +Global___StreamStatusRequest: _TypeAlias = StreamStatusRequest -@typing.final -class StreamStatusResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - STATUS_FIELD_NUMBER: builtins.int +@_typing.final +class StreamStatusResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + STATUS_FIELD_NUMBER: _builtins.int - @property - def status(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Status]: + @_builtins.property + def status(self) -> _containers.RepeatedCompositeFieldContainer[Global___Status]: ... - def __init__(self, *, status: collections.abc.Iterable[global___Status] | None=...) -> None: + def __init__(self, *, status: _abc.Iterable[Global___Status] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['status', b'status'] - def ClearField(self, field_name: typing.Literal['status', b'status']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StreamStatusResponse = StreamStatusResponse +Global___StreamStatusResponse: _TypeAlias = StreamStatusResponse -@typing.final -class StopExtraParameters(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - PARAMS_FIELD_NUMBER: builtins.int +@_typing.final +class StopExtraParameters(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + PARAMS_FIELD_NUMBER: _builtins.int - @property - def name(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + def name(self) -> _common_pb2.ResourceName: ... - @property - def params(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def params(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: common.v1.common_pb2.ResourceName | None=..., params: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _common_pb2.ResourceName | None=..., params: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'params', b'params'] - def HasField(self, field_name: typing.Literal['name', b'name', 'params', b'params']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'params', b'params'] - def ClearField(self, field_name: typing.Literal['name', b'name', 'params', b'params']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StopExtraParameters = StopExtraParameters +Global___StopExtraParameters: _TypeAlias = StopExtraParameters -@typing.final -class StopAllRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - EXTRA_FIELD_NUMBER: builtins.int +@_typing.final +class StopAllRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + EXTRA_FIELD_NUMBER: _builtins.int - @property - def extra(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___StopExtraParameters]: + @_builtins.property + def extra(self) -> _containers.RepeatedCompositeFieldContainer[Global___StopExtraParameters]: ... - def __init__(self, *, extra: collections.abc.Iterable[global___StopExtraParameters] | None=...) -> None: + def __init__(self, *, extra: _abc.Iterable[Global___StopExtraParameters] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def ClearField(self, field_name: typing.Literal['extra', b'extra']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StopAllRequest = StopAllRequest +Global___StopAllRequest: _TypeAlias = StopAllRequest -@typing.final -class StopAllResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class StopAllResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___StopAllResponse = StopAllResponse +Global___StopAllResponse: _TypeAlias = StopAllResponse -@typing.final -class StartSessionRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RESUME_FIELD_NUMBER: builtins.int - resume: builtins.str +@_typing.final +class StartSessionRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + RESUME_FIELD_NUMBER: _builtins.int + resume: _builtins.str 'resume can be used to attempt to continue a stream after a disconnection event. If\n a session is not found, a new one will be created and returned.\n ' - def __init__(self, *, resume: builtins.str=...) -> None: + def __init__(self, *, resume: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['resume', b'resume'] - def ClearField(self, field_name: typing.Literal['resume', b'resume']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StartSessionRequest = StartSessionRequest +Global___StartSessionRequest: _TypeAlias = StartSessionRequest -@typing.final -class StartSessionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - HEARTBEAT_WINDOW_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class StartSessionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + HEARTBEAT_WINDOW_FIELD_NUMBER: _builtins.int + id: _builtins.str - @property - def heartbeat_window(self) -> google.protobuf.duration_pb2.Duration: + @_builtins.property + def heartbeat_window(self) -> _duration_pb2.Duration: ... - def __init__(self, *, id: builtins.str=..., heartbeat_window: google.protobuf.duration_pb2.Duration | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., heartbeat_window: _duration_pb2.Duration | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['heartbeat_window', b'heartbeat_window'] - def HasField(self, field_name: typing.Literal['heartbeat_window', b'heartbeat_window']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['heartbeat_window', b'heartbeat_window', 'id', b'id'] - def ClearField(self, field_name: typing.Literal['heartbeat_window', b'heartbeat_window', 'id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StartSessionResponse = StartSessionResponse +Global___StartSessionResponse: _TypeAlias = StartSessionResponse -@typing.final -class SendSessionHeartbeatRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class SendSessionHeartbeatRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str - def __init__(self, *, id: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - def ClearField(self, field_name: typing.Literal['id', b'id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SendSessionHeartbeatRequest = SendSessionHeartbeatRequest +Global___SendSessionHeartbeatRequest: _TypeAlias = SendSessionHeartbeatRequest -@typing.final -class SendSessionHeartbeatResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SendSessionHeartbeatResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SendSessionHeartbeatResponse = SendSessionHeartbeatResponse +Global___SendSessionHeartbeatResponse: _TypeAlias = SendSessionHeartbeatResponse -@typing.final -class LogRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOGS_FIELD_NUMBER: builtins.int +@_typing.final +class LogRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOGS_FIELD_NUMBER: _builtins.int - @property - def logs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.LogEntry]: + @_builtins.property + def logs(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.LogEntry]: ... - def __init__(self, *, logs: collections.abc.Iterable[common.v1.common_pb2.LogEntry] | None=...) -> None: + def __init__(self, *, logs: _abc.Iterable[_common_pb2.LogEntry] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['logs', b'logs'] - def ClearField(self, field_name: typing.Literal['logs', b'logs']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___LogRequest = LogRequest +Global___LogRequest: _TypeAlias = LogRequest -@typing.final -class LogResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class LogResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___LogResponse = LogResponse +Global___LogResponse: _TypeAlias = LogResponse -@typing.final -class GetCloudMetadataRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GetCloudMetadataRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___GetCloudMetadataRequest = GetCloudMetadataRequest - -@typing.final -class GetCloudMetadataResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ROBOT_PART_ID_FIELD_NUMBER: builtins.int - PRIMARY_ORG_ID_FIELD_NUMBER: builtins.int - LOCATION_ID_FIELD_NUMBER: builtins.int - MACHINE_ID_FIELD_NUMBER: builtins.int - MACHINE_PART_ID_FIELD_NUMBER: builtins.int - robot_part_id: builtins.str - 'Deprecated: use machine_part_id field.' - primary_org_id: builtins.str - location_id: builtins.str - machine_id: builtins.str - machine_part_id: builtins.str - - def __init__(self, *, robot_part_id: builtins.str=..., primary_org_id: builtins.str=..., location_id: builtins.str=..., machine_id: builtins.str=..., machine_part_id: builtins.str=...) -> None: - ... - - def ClearField(self, field_name: typing.Literal['location_id', b'location_id', 'machine_id', b'machine_id', 'machine_part_id', b'machine_part_id', 'primary_org_id', b'primary_org_id', 'robot_part_id', b'robot_part_id']) -> None: - ... -global___GetCloudMetadataResponse = GetCloudMetadataResponse - -@typing.final -class RestartModuleRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODULE_ID_FIELD_NUMBER: builtins.int - MODULE_NAME_FIELD_NUMBER: builtins.int - module_id: builtins.str +Global___GetCloudMetadataRequest: _TypeAlias = GetCloudMetadataRequest + +@_typing.final +class GetCloudMetadataResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ROBOT_PART_ID_FIELD_NUMBER: _builtins.int + PRIMARY_ORG_ID_FIELD_NUMBER: _builtins.int + LOCATION_ID_FIELD_NUMBER: _builtins.int + MACHINE_ID_FIELD_NUMBER: _builtins.int + MACHINE_PART_ID_FIELD_NUMBER: _builtins.int + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def robot_part_id(self) -> _builtins.str: + """Deprecated: use machine_part_id field.""" + + @robot_part_id.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def robot_part_id(self, value: _builtins.str) -> None: + """Deprecated: use machine_part_id field.""" + primary_org_id: _builtins.str + location_id: _builtins.str + machine_id: _builtins.str + machine_part_id: _builtins.str + + def __init__(self, *, robot_part_id: _builtins.str=..., primary_org_id: _builtins.str=..., location_id: _builtins.str=..., machine_id: _builtins.str=..., machine_part_id: _builtins.str=...) -> None: + ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['location_id', b'location_id', 'machine_id', b'machine_id', 'machine_part_id', b'machine_part_id', 'primary_org_id', b'primary_org_id', 'robot_part_id', b'robot_part_id'] + + def ClearField(self, field_name: _ClearFieldArgType) -> None: + ... +Global___GetCloudMetadataResponse: _TypeAlias = GetCloudMetadataResponse + +@_typing.final +class RestartModuleRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODULE_ID_FIELD_NUMBER: _builtins.int + MODULE_NAME_FIELD_NUMBER: _builtins.int + module_id: _builtins.str 'ID is for registry modules, name for local modules' - module_name: builtins.str + module_name: _builtins.str - def __init__(self, *, module_id: builtins.str=..., module_name: builtins.str=...) -> None: + def __init__(self, *, module_id: _builtins.str=..., module_name: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['id_or_name', b'id_or_name', 'module_id', b'module_id', 'module_name', b'module_name'] - def HasField(self, field_name: typing.Literal['id_or_name', b'id_or_name', 'module_id', b'module_id', 'module_name', b'module_name']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id_or_name', b'id_or_name', 'module_id', b'module_id', 'module_name', b'module_name'] - def ClearField(self, field_name: typing.Literal['id_or_name', b'id_or_name', 'module_id', b'module_id', 'module_name', b'module_name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_id_or_name: _TypeAlias = _typing.Literal['module_id', 'module_name'] + _WhichOneofArgType_id_or_name: _TypeAlias = _typing.Literal['id_or_name', b'id_or_name'] - def WhichOneof(self, oneof_group: typing.Literal['id_or_name', b'id_or_name']) -> typing.Literal['module_id', 'module_name'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_id_or_name) -> _WhichOneofReturnType_id_or_name | None: ... -global___RestartModuleRequest = RestartModuleRequest +Global___RestartModuleRequest: _TypeAlias = RestartModuleRequest -@typing.final -class RestartModuleResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class RestartModuleResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___RestartModuleResponse = RestartModuleResponse +Global___RestartModuleResponse: _TypeAlias = RestartModuleResponse -@typing.final -class ShutdownRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ShutdownRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ShutdownRequest = ShutdownRequest +Global___ShutdownRequest: _TypeAlias = ShutdownRequest -@typing.final -class ShutdownResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ShutdownResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ShutdownResponse = ShutdownResponse +Global___ShutdownResponse: _TypeAlias = ShutdownResponse -@typing.final -class GetMachineStatusRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GetMachineStatusRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___GetMachineStatusRequest = GetMachineStatusRequest +Global___GetMachineStatusRequest: _TypeAlias = GetMachineStatusRequest -@typing.final -class GetMachineStatusResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GetMachineStatusResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor class _State: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType - class _StateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[GetMachineStatusResponse._State.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + class _StateEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[GetMachineStatusResponse._State.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor STATE_UNSPECIFIED: GetMachineStatusResponse._State.ValueType STATE_INITIALIZING: GetMachineStatusResponse._State.ValueType 'the machine is reachable but still in the process of configuring initial\n modules and resources.\n ' @@ -899,67 +971,70 @@ class GetMachineStatusResponse(google.protobuf.message.Message): 'the machine is reachable but still in the process of configuring initial\n modules and resources.\n ' STATE_RUNNING: GetMachineStatusResponse.State.ValueType 'the machine has finished initializing.' - RESOURCES_FIELD_NUMBER: builtins.int - CONFIG_FIELD_NUMBER: builtins.int - STATE_FIELD_NUMBER: builtins.int - JOB_STATUSES_FIELD_NUMBER: builtins.int - state: global___GetMachineStatusResponse.State.ValueType + RESOURCES_FIELD_NUMBER: _builtins.int + CONFIG_FIELD_NUMBER: _builtins.int + STATE_FIELD_NUMBER: _builtins.int + JOB_STATUSES_FIELD_NUMBER: _builtins.int + state: Global___GetMachineStatusResponse.State.ValueType - @property - def resources(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ResourceStatus]: + @_builtins.property + def resources(self) -> _containers.RepeatedCompositeFieldContainer[Global___ResourceStatus]: ... - @property - def config(self) -> global___ConfigStatus: + @_builtins.property + def config(self) -> Global___ConfigStatus: ... - @property - def job_statuses(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___JobStatus]: + @_builtins.property + def job_statuses(self) -> _containers.RepeatedCompositeFieldContainer[Global___JobStatus]: ... - def __init__(self, *, resources: collections.abc.Iterable[global___ResourceStatus] | None=..., config: global___ConfigStatus | None=..., state: global___GetMachineStatusResponse.State.ValueType=..., job_statuses: collections.abc.Iterable[global___JobStatus] | None=...) -> None: + def __init__(self, *, resources: _abc.Iterable[Global___ResourceStatus] | None=..., config: Global___ConfigStatus | None=..., state: Global___GetMachineStatusResponse.State.ValueType=..., job_statuses: _abc.Iterable[Global___JobStatus] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['config', b'config'] - def HasField(self, field_name: typing.Literal['config', b'config']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['config', b'config', 'job_statuses', b'job_statuses', 'resources', b'resources', 'state', b'state'] - def ClearField(self, field_name: typing.Literal['config', b'config', 'job_statuses', b'job_statuses', 'resources', b'resources', 'state', b'state']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetMachineStatusResponse = GetMachineStatusResponse +Global___GetMachineStatusResponse: _TypeAlias = GetMachineStatusResponse -@typing.final -class JobStatus(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - JOB_NAME_FIELD_NUMBER: builtins.int - RECENT_SUCCESSFUL_RUNS_FIELD_NUMBER: builtins.int - RECENT_FAILED_RUNS_FIELD_NUMBER: builtins.int - job_name: builtins.str +@_typing.final +class JobStatus(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + JOB_NAME_FIELD_NUMBER: _builtins.int + RECENT_SUCCESSFUL_RUNS_FIELD_NUMBER: _builtins.int + RECENT_FAILED_RUNS_FIELD_NUMBER: _builtins.int + job_name: _builtins.str - @property - def recent_successful_runs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[google.protobuf.timestamp_pb2.Timestamp]: + @_builtins.property + def recent_successful_runs(self) -> _containers.RepeatedCompositeFieldContainer[_timestamp_pb2.Timestamp]: ... - @property - def recent_failed_runs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[google.protobuf.timestamp_pb2.Timestamp]: + @_builtins.property + def recent_failed_runs(self) -> _containers.RepeatedCompositeFieldContainer[_timestamp_pb2.Timestamp]: ... - def __init__(self, *, job_name: builtins.str=..., recent_successful_runs: collections.abc.Iterable[google.protobuf.timestamp_pb2.Timestamp] | None=..., recent_failed_runs: collections.abc.Iterable[google.protobuf.timestamp_pb2.Timestamp] | None=...) -> None: + def __init__(self, *, job_name: _builtins.str=..., recent_successful_runs: _abc.Iterable[_timestamp_pb2.Timestamp] | None=..., recent_failed_runs: _abc.Iterable[_timestamp_pb2.Timestamp] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['job_name', b'job_name', 'recent_failed_runs', b'recent_failed_runs', 'recent_successful_runs', b'recent_successful_runs'] - def ClearField(self, field_name: typing.Literal['job_name', b'job_name', 'recent_failed_runs', b'recent_failed_runs', 'recent_successful_runs', b'recent_successful_runs']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___JobStatus = JobStatus +Global___JobStatus: _TypeAlias = JobStatus -@typing.final -class ResourceStatus(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class ResourceStatus(_message.Message): + DESCRIPTOR: _descriptor.Descriptor class _State: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType - class _StateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ResourceStatus._State.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + class _StateEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[ResourceStatus._State.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor STATE_UNSPECIFIED: ResourceStatus._State.ValueType STATE_UNCONFIGURED: ResourceStatus._State.ValueType 'a newly created resource.' @@ -985,140 +1060,151 @@ class ResourceStatus(google.protobuf.message.Message): 'a resource that is being removed from the robot.' STATE_UNHEALTHY: ResourceStatus.State.ValueType 'a resource that is in an unhealthy state.' - NAME_FIELD_NUMBER: builtins.int - STATE_FIELD_NUMBER: builtins.int - LAST_UPDATED_FIELD_NUMBER: builtins.int - REVISION_FIELD_NUMBER: builtins.int - ERROR_FIELD_NUMBER: builtins.int - CLOUD_METADATA_FIELD_NUMBER: builtins.int - state: global___ResourceStatus.State.ValueType + NAME_FIELD_NUMBER: _builtins.int + STATE_FIELD_NUMBER: _builtins.int + LAST_UPDATED_FIELD_NUMBER: _builtins.int + REVISION_FIELD_NUMBER: _builtins.int + ERROR_FIELD_NUMBER: _builtins.int + CLOUD_METADATA_FIELD_NUMBER: _builtins.int + state: Global___ResourceStatus.State.ValueType 'current state.' - revision: builtins.str + revision: _builtins.str 'revision of the last config that successfully updated this resource.' - error: builtins.str + error: _builtins.str 'error details for a resource. This is guaranteed to be null if the\n resource is ready and non-null if the resource unhealthy.\n ' - @property - def name(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + def name(self) -> _common_pb2.ResourceName: """resource name.""" - @property - def last_updated(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def last_updated(self) -> _timestamp_pb2.Timestamp: """state transition timestamp.""" - @property - def cloud_metadata(self) -> global___GetCloudMetadataResponse: + @_builtins.property + def cloud_metadata(self) -> Global___GetCloudMetadataResponse: """infomation about resource orgID, locationID and partID""" - def __init__(self, *, name: common.v1.common_pb2.ResourceName | None=..., state: global___ResourceStatus.State.ValueType=..., last_updated: google.protobuf.timestamp_pb2.Timestamp | None=..., revision: builtins.str=..., error: builtins.str=..., cloud_metadata: global___GetCloudMetadataResponse | None=...) -> None: + def __init__(self, *, name: _common_pb2.ResourceName | None=..., state: Global___ResourceStatus.State.ValueType=..., last_updated: _timestamp_pb2.Timestamp | None=..., revision: _builtins.str=..., error: _builtins.str=..., cloud_metadata: Global___GetCloudMetadataResponse | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_cloud_metadata', b'_cloud_metadata', 'cloud_metadata', b'cloud_metadata', 'last_updated', b'last_updated', 'name', b'name'] - def HasField(self, field_name: typing.Literal['_cloud_metadata', b'_cloud_metadata', 'cloud_metadata', b'cloud_metadata', 'last_updated', b'last_updated', 'name', b'name']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_cloud_metadata', b'_cloud_metadata', 'cloud_metadata', b'cloud_metadata', 'error', b'error', 'last_updated', b'last_updated', 'name', b'name', 'revision', b'revision', 'state', b'state'] - def ClearField(self, field_name: typing.Literal['_cloud_metadata', b'_cloud_metadata', 'cloud_metadata', b'cloud_metadata', 'error', b'error', 'last_updated', b'last_updated', 'name', b'name', 'revision', b'revision', 'state', b'state']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__cloud_metadata: _TypeAlias = _typing.Literal['cloud_metadata'] + _WhichOneofArgType__cloud_metadata: _TypeAlias = _typing.Literal['_cloud_metadata', b'_cloud_metadata'] - def WhichOneof(self, oneof_group: typing.Literal['_cloud_metadata', b'_cloud_metadata']) -> typing.Literal['cloud_metadata'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__cloud_metadata) -> _WhichOneofReturnType__cloud_metadata | None: ... -global___ResourceStatus = ResourceStatus +Global___ResourceStatus: _TypeAlias = ResourceStatus -@typing.final -class ConfigStatus(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - REVISION_FIELD_NUMBER: builtins.int - LAST_UPDATED_FIELD_NUMBER: builtins.int - revision: builtins.str +@_typing.final +class ConfigStatus(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + REVISION_FIELD_NUMBER: _builtins.int + LAST_UPDATED_FIELD_NUMBER: _builtins.int + revision: _builtins.str 'revision of the last config that the machine successfully ingested.' - @property - def last_updated(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def last_updated(self) -> _timestamp_pb2.Timestamp: """config ingestion timestamp.""" - def __init__(self, *, revision: builtins.str=..., last_updated: google.protobuf.timestamp_pb2.Timestamp | None=...) -> None: + def __init__(self, *, revision: _builtins.str=..., last_updated: _timestamp_pb2.Timestamp | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['last_updated', b'last_updated'] - def HasField(self, field_name: typing.Literal['last_updated', b'last_updated']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['last_updated', b'last_updated', 'revision', b'revision'] - def ClearField(self, field_name: typing.Literal['last_updated', b'last_updated', 'revision', b'revision']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ConfigStatus = ConfigStatus +Global___ConfigStatus: _TypeAlias = ConfigStatus -@typing.final -class GetVersionRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class GetVersionRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___GetVersionRequest = GetVersionRequest +Global___GetVersionRequest: _TypeAlias = GetVersionRequest -@typing.final -class GetVersionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PLATFORM_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - API_VERSION_FIELD_NUMBER: builtins.int - platform: builtins.str +@_typing.final +class GetVersionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PLATFORM_FIELD_NUMBER: _builtins.int + VERSION_FIELD_NUMBER: _builtins.int + API_VERSION_FIELD_NUMBER: _builtins.int + platform: _builtins.str 'platform type of viam-server (ie. `rdk` or `micro-rdk`).' - version: builtins.str + version: _builtins.str 'version of viam-server. If built without a version, it will be dev-.' - api_version: builtins.str + api_version: _builtins.str - def __init__(self, *, platform: builtins.str=..., version: builtins.str=..., api_version: builtins.str=...) -> None: + def __init__(self, *, platform: _builtins.str=..., version: _builtins.str=..., api_version: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['api_version', b'api_version', 'platform', b'platform', 'version', b'version'] - def ClearField(self, field_name: typing.Literal['api_version', b'api_version', 'platform', b'platform', 'version', b'version']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetVersionResponse = GetVersionResponse +Global___GetVersionResponse: _TypeAlias = GetVersionResponse -@typing.final -class GetPoseRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - COMPONENT_NAME_FIELD_NUMBER: builtins.int - DESTINATION_FRAME_FIELD_NUMBER: builtins.int - SUPPLEMENTAL_TRANSFORMS_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - component_name: builtins.str +@_typing.final +class GetPoseRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + COMPONENT_NAME_FIELD_NUMBER: _builtins.int + DESTINATION_FRAME_FIELD_NUMBER: _builtins.int + SUPPLEMENTAL_TRANSFORMS_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + component_name: _builtins.str 'the component whose pose is being requested' - destination_frame: builtins.str + destination_frame: _builtins.str 'the reference frame in which the component\'s pose\n should be provided, if unset this defaults\n to the "world" reference frame\n ' - @property - def supplemental_transforms(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.Transform]: + @_builtins.property + def supplemental_transforms(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.Transform]: """pose information on any additional reference frames that are needed to compute the component's pose """ - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, component_name: builtins.str=..., destination_frame: builtins.str=..., supplemental_transforms: collections.abc.Iterable[common.v1.common_pb2.Transform] | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, component_name: _builtins.str=..., destination_frame: _builtins.str=..., supplemental_transforms: _abc.Iterable[_common_pb2.Transform] | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['component_name', b'component_name', 'destination_frame', b'destination_frame', 'extra', b'extra', 'supplemental_transforms', b'supplemental_transforms'] - def ClearField(self, field_name: typing.Literal['component_name', b'component_name', 'destination_frame', b'destination_frame', 'extra', b'extra', 'supplemental_transforms', b'supplemental_transforms']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPoseRequest = GetPoseRequest +Global___GetPoseRequest: _TypeAlias = GetPoseRequest -@typing.final -class GetPoseResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POSE_FIELD_NUMBER: builtins.int +@_typing.final +class GetPoseResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POSE_FIELD_NUMBER: _builtins.int - @property - def pose(self) -> common.v1.common_pb2.PoseInFrame: + @_builtins.property + def pose(self) -> _common_pb2.PoseInFrame: ... - def __init__(self, *, pose: common.v1.common_pb2.PoseInFrame | None=...) -> None: + def __init__(self, *, pose: _common_pb2.PoseInFrame | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['pose', b'pose'] - def HasField(self, field_name: typing.Literal['pose', b'pose']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['pose', b'pose'] - def ClearField(self, field_name: typing.Literal['pose', b'pose']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPoseResponse = GetPoseResponse \ No newline at end of file +Global___GetPoseResponse: _TypeAlias = GetPoseResponse \ No newline at end of file diff --git a/src/viam/gen/service/datamanager/v1/data_manager_grpc.py b/src/viam/gen/service/datamanager/v1/data_manager_grpc.py index 2319e39cf7..0a335d46eb 100644 --- a/src/viam/gen/service/datamanager/v1/data_manager_grpc.py +++ b/src/viam/gen/service/datamanager/v1/data_manager_grpc.py @@ -7,7 +7,7 @@ import grpclib.server from .... import app from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import service diff --git a/src/viam/gen/service/datamanager/v1/data_manager_pb2.py b/src/viam/gen/service/datamanager/v1/data_manager_pb2.py index c96eee16ac..04b88cb7a4 100644 --- a/src/viam/gen/service/datamanager/v1/data_manager_pb2.py +++ b/src/viam/gen/service/datamanager/v1/data_manager_pb2.py @@ -4,11 +4,11 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'service/datamanager/v1/data_manager.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/datamanager/v1/data_manager.proto') _sym_db = _symbol_database.Default() from ....app.datasync.v1 import data_sync_pb2 as app_dot_datasync_dot_v1_dot_data__sync__pb2 from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)service/datamanager/v1/data_manager.proto\x12\x1bviam.service.datamanager.v1\x1a\x1fapp/datasync/v1/data_sync.proto\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"P\n\x0bSyncRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cSyncResponse"\xf9\x01\n!UploadBinaryDataToDatasetsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x0bbinary_data\x18\x02 \x01(\x0cR\nbinaryData\x12\x12\n\x04tags\x18\x03 \x03(\tR\x04tags\x12\x1f\n\x0bdataset_ids\x18\x04 \x03(\tR\ndatasetIds\x12;\n\tmime_type\x18\x05 \x01(\x0e2\x1e.viam.app.datasync.v1.MimeTypeR\x08mimeType\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"$\n"UploadBinaryDataToDatasetsResponse2\xab\x04\n\x12DataManagerService\x12\x95\x01\n\x04Sync\x12(.viam.service.datamanager.v1.SyncRequest\x1a).viam.service.datamanager.v1.SyncResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/service/datamanager/{name}/datasync\x12\x8c\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse":\x82\xd3\xe4\x93\x024"2/viam/api/v1/service/datamanager/{name}/do_command\x12\xed\x01\n\x1aUploadBinaryDataToDatasets\x12>.viam.service.datamanager.v1.UploadBinaryDataToDatasetsRequest\x1a?.viam.service.datamanager.v1.UploadBinaryDataToDatasetsResponse"N\x82\xd3\xe4\x93\x02H"F/viam/api/v1/service/datamanager/{name}/upload_binary_data_to_datasetsBI\n\x1fcom.viam.service.datamanager.v1Z&go.viam.com/api/service/datamanager/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/service/datamanager/v1/data_manager_pb2.pyi b/src/viam/gen/service/datamanager/v1/data_manager_pb2.pyi index 88d24bd005..5094fc8399 100644 --- a/src/viam/gen/service/datamanager/v1/data_manager_pb2.pyi +++ b/src/viam/gen/service/datamanager/v1/data_manager_pb2.pyi @@ -2,84 +2,93 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -from .... import app -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class SyncRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: +from app.datasync.v1 import data_sync_pb2 as _data_sync_pb2 +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class SyncRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SyncRequest = SyncRequest +Global___SyncRequest: _TypeAlias = SyncRequest -@typing.final -class SyncResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SyncResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SyncResponse = SyncResponse - -@typing.final -class UploadBinaryDataToDatasetsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - BINARY_DATA_FIELD_NUMBER: builtins.int - TAGS_FIELD_NUMBER: builtins.int - DATASET_IDS_FIELD_NUMBER: builtins.int - MIME_TYPE_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - binary_data: builtins.bytes - mime_type: app.datasync.v1.data_sync_pb2.MimeType.ValueType - - @property - def tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: +Global___SyncResponse: _TypeAlias = SyncResponse + +@_typing.final +class UploadBinaryDataToDatasetsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + BINARY_DATA_FIELD_NUMBER: _builtins.int + TAGS_FIELD_NUMBER: _builtins.int + DATASET_IDS_FIELD_NUMBER: _builtins.int + MIME_TYPE_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + binary_data: _builtins.bytes + mime_type: _data_sync_pb2.MimeType.ValueType + + @_builtins.property + def tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def dataset_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def dataset_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., binary_data: builtins.bytes=..., tags: collections.abc.Iterable[builtins.str] | None=..., dataset_ids: collections.abc.Iterable[builtins.str] | None=..., mime_type: app.datasync.v1.data_sync_pb2.MimeType.ValueType=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., binary_data: _builtins.bytes=..., tags: _abc.Iterable[_builtins.str] | None=..., dataset_ids: _abc.Iterable[_builtins.str] | None=..., mime_type: _data_sync_pb2.MimeType.ValueType=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['binary_data', b'binary_data', 'dataset_ids', b'dataset_ids', 'extra', b'extra', 'mime_type', b'mime_type', 'name', b'name', 'tags', b'tags'] - def ClearField(self, field_name: typing.Literal['binary_data', b'binary_data', 'dataset_ids', b'dataset_ids', 'extra', b'extra', 'mime_type', b'mime_type', 'name', b'name', 'tags', b'tags']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___UploadBinaryDataToDatasetsRequest = UploadBinaryDataToDatasetsRequest +Global___UploadBinaryDataToDatasetsRequest: _TypeAlias = UploadBinaryDataToDatasetsRequest -@typing.final -class UploadBinaryDataToDatasetsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class UploadBinaryDataToDatasetsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___UploadBinaryDataToDatasetsResponse = UploadBinaryDataToDatasetsResponse \ No newline at end of file +Global___UploadBinaryDataToDatasetsResponse: _TypeAlias = UploadBinaryDataToDatasetsResponse \ No newline at end of file diff --git a/src/viam/gen/service/discovery/v1/discovery_grpc.py b/src/viam/gen/service/discovery/v1/discovery_grpc.py index 18437dfb46..f279c90cb2 100644 --- a/src/viam/gen/service/discovery/v1/discovery_grpc.py +++ b/src/viam/gen/service/discovery/v1/discovery_grpc.py @@ -7,7 +7,7 @@ import grpclib.server from .... import app from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import service diff --git a/src/viam/gen/service/discovery/v1/discovery_pb2.py b/src/viam/gen/service/discovery/v1/discovery_pb2.py index f9ede98873..b28a9c4bc4 100644 --- a/src/viam/gen/service/discovery/v1/discovery_pb2.py +++ b/src/viam/gen/service/discovery/v1/discovery_pb2.py @@ -4,11 +4,11 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'service/discovery/v1/discovery.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/discovery/v1/discovery.proto') _sym_db = _symbol_database.Default() from ....app.v1 import robot_pb2 as app_dot_v1_dot_robot__pb2 from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$service/discovery/v1/discovery.proto\x12\x19viam.service.discovery.v1\x1a\x12app/v1/robot.proto\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"]\n\x18DiscoverResourcesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"[\n\x19DiscoverResourcesResponse\x12>\n\x0bdiscoveries\x18\x01 \x03(\x0b2\x1c.viam.app.v1.ComponentConfigR\x0bdiscoveries2\xcf\x02\n\x10DiscoveryService\x12\xad\x01\n\x11DiscoverResources\x123.viam.service.discovery.v1.DiscoverResourcesRequest\x1a4.viam.service.discovery.v1.DiscoverResourcesResponse"-\x82\xd3\xe4\x93\x02\'\x12%/viam/api/v1/service/{name}/discovery\x12\x8a\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/service/discovery/{name}/do_commandBD\n\x1dcom.viam.service.discovery.v1Z#go.viam.com/api/service/discovey/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/service/discovery/v1/discovery_pb2.pyi b/src/viam/gen/service/discovery/v1/discovery_pb2.pyi index fad274cafe..7ffec1d74d 100644 --- a/src/viam/gen/service/discovery/v1/discovery_pb2.pyi +++ b/src/viam/gen/service/discovery/v1/discovery_pb2.pyi @@ -2,50 +2,58 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -from .... import app -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class DiscoverResourcesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +from app.v1 import robot_pb2 as _robot_pb2 +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class DiscoverResourcesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'name of the discover service' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DiscoverResourcesRequest = DiscoverResourcesRequest +Global___DiscoverResourcesRequest: _TypeAlias = DiscoverResourcesRequest -@typing.final -class DiscoverResourcesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DISCOVERIES_FIELD_NUMBER: builtins.int +@_typing.final +class DiscoverResourcesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DISCOVERIES_FIELD_NUMBER: _builtins.int - @property - def discoveries(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[app.v1.robot_pb2.ComponentConfig]: + @_builtins.property + def discoveries(self) -> _containers.RepeatedCompositeFieldContainer[_robot_pb2.ComponentConfig]: """list of ComponentConfigs that describe the components found by a discover service.""" - def __init__(self, *, discoveries: collections.abc.Iterable[app.v1.robot_pb2.ComponentConfig] | None=...) -> None: + def __init__(self, *, discoveries: _abc.Iterable[_robot_pb2.ComponentConfig] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['discoveries', b'discoveries'] - def ClearField(self, field_name: typing.Literal['discoveries', b'discoveries']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___DiscoverResourcesResponse = DiscoverResourcesResponse \ No newline at end of file +Global___DiscoverResourcesResponse: _TypeAlias = DiscoverResourcesResponse \ No newline at end of file diff --git a/src/viam/gen/service/generic/v1/generic_grpc.py b/src/viam/gen/service/generic/v1/generic_grpc.py index 114a51746d..9ae6385210 100644 --- a/src/viam/gen/service/generic/v1/generic_grpc.py +++ b/src/viam/gen/service/generic/v1/generic_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google from .... import service class GenericServiceBase(abc.ABC): diff --git a/src/viam/gen/service/generic/v1/generic_pb2.py b/src/viam/gen/service/generic/v1/generic_pb2.py index 53d25c6e05..193ae329d1 100644 --- a/src/viam/gen/service/generic/v1/generic_pb2.py +++ b/src/viam/gen/service/generic/v1/generic_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'service/generic/v1/generic.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/generic/v1/generic.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n service/generic/v1/generic.proto\x12\x17viam.service.generic.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto2\x9b\x01\n\x0eGenericService\x12\x88\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/service/generic/{name}/do_commandBA\n\x1bcom.viam.service.generic.v1Z"go.viam.com/api/service/generic/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/service/generic/v1/generic_pb2.pyi b/src/viam/gen/service/generic/v1/generic_pb2.pyi index ab07168813..554b3b57f8 100644 --- a/src/viam/gen/service/generic/v1/generic_pb2.pyi +++ b/src/viam/gen/service/generic/v1/generic_pb2.pyi @@ -2,5 +2,5 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import google.protobuf.descriptor -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor \ No newline at end of file +from google.protobuf import descriptor as _descriptor +DESCRIPTOR: _descriptor.FileDescriptor \ No newline at end of file diff --git a/src/viam/gen/service/mlmodel/v1/mlmodel_grpc.py b/src/viam/gen/service/mlmodel/v1/mlmodel_grpc.py index 65e94f9dfd..21af52a03c 100644 --- a/src/viam/gen/service/mlmodel/v1/mlmodel_grpc.py +++ b/src/viam/gen/service/mlmodel/v1/mlmodel_grpc.py @@ -5,7 +5,7 @@ import grpclib.exceptions if typing.TYPE_CHECKING: import grpclib.server -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import service diff --git a/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.py b/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.py index e01012ca28..6e68e927a3 100644 --- a/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.py +++ b/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.py @@ -4,9 +4,9 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'service/mlmodel/v1/mlmodel.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/mlmodel/v1/mlmodel.proto') _sym_db = _symbol_database.Default() -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n service/mlmodel/v1/mlmodel.proto\x12\x17viam.service.mlmodel.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"\xae\x01\n\x0cInferRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12I\n\rinput_tensors\x18\x03 \x01(\x0b2$.viam.service.mlmodel.v1.FlatTensorsR\x0cinputTensors\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraJ\x04\x08\x02\x10\x03R\ninput_data"{\n\rInferResponse\x12K\n\x0eoutput_tensors\x18\x03 \x01(\x0b2$.viam.service.mlmodel.v1.FlatTensorsR\routputTensorsJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x04nameR\x0boutput_data"T\n\x0fMetadataRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"Q\n\x10MetadataResponse\x12=\n\x08metadata\x18\x01 \x01(\x0b2!.viam.service.mlmodel.v1.MetadataR\x08metadata"\xde\x01\n\x08Metadata\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12 \n\x0bdescription\x18\x03 \x01(\tR\x0bdescription\x12B\n\ninput_info\x18\x04 \x03(\x0b2#.viam.service.mlmodel.v1.TensorInfoR\tinputInfo\x12D\n\x0boutput_info\x18\x05 \x03(\x0b2#.viam.service.mlmodel.v1.TensorInfoR\noutputInfo"\xee\x01\n\nTensorInfo\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12 \n\x0bdescription\x18\x02 \x01(\tR\x0bdescription\x12\x1b\n\tdata_type\x18\x03 \x01(\tR\x08dataType\x12\x14\n\x05shape\x18\x04 \x03(\x05R\x05shape\x12H\n\x10associated_files\x18\x05 \x03(\x0b2\x1d.viam.service.mlmodel.v1.FileR\x0fassociatedFiles\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x7f\n\x04File\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12 \n\x0bdescription\x18\x02 \x01(\tR\x0bdescription\x12A\n\nlabel_type\x18\x03 \x01(\x0e2".viam.service.mlmodel.v1.LabelTypeR\tlabelType"(\n\x12FlatTensorDataInt8\x12\x12\n\x04data\x18\x01 \x01(\x0cR\x04data")\n\x13FlatTensorDataUInt8\x12\x12\n\x04data\x18\x01 \x01(\x0cR\x04data"-\n\x13FlatTensorDataInt16\x12\x16\n\x04data\x18\x01 \x03(\x07B\x02\x10\x01R\x04data".\n\x14FlatTensorDataUInt16\x12\x16\n\x04data\x18\x01 \x03(\x07B\x02\x10\x01R\x04data"-\n\x13FlatTensorDataInt32\x12\x16\n\x04data\x18\x01 \x03(\x0fB\x02\x10\x01R\x04data".\n\x14FlatTensorDataUInt32\x12\x16\n\x04data\x18\x01 \x03(\x07B\x02\x10\x01R\x04data"-\n\x13FlatTensorDataInt64\x12\x16\n\x04data\x18\x01 \x03(\x10B\x02\x10\x01R\x04data".\n\x14FlatTensorDataUInt64\x12\x16\n\x04data\x18\x01 \x03(\x06B\x02\x10\x01R\x04data"-\n\x13FlatTensorDataFloat\x12\x16\n\x04data\x18\x01 \x03(\x02B\x02\x10\x01R\x04data".\n\x14FlatTensorDataDouble\x12\x16\n\x04data\x18\x01 \x03(\x01B\x02\x10\x01R\x04data"\xf3\x06\n\nFlatTensor\x12\x14\n\x05shape\x18\x01 \x03(\x06R\x05shape\x12N\n\x0bint8_tensor\x18\x02 \x01(\x0b2+.viam.service.mlmodel.v1.FlatTensorDataInt8H\x00R\nint8Tensor\x12Q\n\x0cuint8_tensor\x18\x03 \x01(\x0b2,.viam.service.mlmodel.v1.FlatTensorDataUInt8H\x00R\x0buint8Tensor\x12Q\n\x0cint16_tensor\x18\x04 \x01(\x0b2,.viam.service.mlmodel.v1.FlatTensorDataInt16H\x00R\x0bint16Tensor\x12T\n\ruint16_tensor\x18\x05 \x01(\x0b2-.viam.service.mlmodel.v1.FlatTensorDataUInt16H\x00R\x0cuint16Tensor\x12Q\n\x0cint32_tensor\x18\x06 \x01(\x0b2,.viam.service.mlmodel.v1.FlatTensorDataInt32H\x00R\x0bint32Tensor\x12T\n\ruint32_tensor\x18\x07 \x01(\x0b2-.viam.service.mlmodel.v1.FlatTensorDataUInt32H\x00R\x0cuint32Tensor\x12Q\n\x0cint64_tensor\x18\x08 \x01(\x0b2,.viam.service.mlmodel.v1.FlatTensorDataInt64H\x00R\x0bint64Tensor\x12T\n\ruint64_tensor\x18\t \x01(\x0b2-.viam.service.mlmodel.v1.FlatTensorDataUInt64H\x00R\x0cuint64Tensor\x12Q\n\x0cfloat_tensor\x18\n \x01(\x0b2,.viam.service.mlmodel.v1.FlatTensorDataFloatH\x00R\x0bfloatTensor\x12T\n\rdouble_tensor\x18\x0b \x01(\x0b2-.viam.service.mlmodel.v1.FlatTensorDataDoubleH\x00R\x0cdoubleTensorB\x08\n\x06tensor"\xbb\x01\n\x0bFlatTensors\x12K\n\x07tensors\x18\x01 \x03(\x0b21.viam.service.mlmodel.v1.FlatTensors.TensorsEntryR\x07tensors\x1a_\n\x0cTensorsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x129\n\x05value\x18\x02 \x01(\x0b2#.viam.service.mlmodel.v1.FlatTensorR\x05value:\x028\x01*`\n\tLabelType\x12\x1a\n\x16LABEL_TYPE_UNSPECIFIED\x10\x00\x12\x1b\n\x17LABEL_TYPE_TENSOR_VALUE\x10\x01\x12\x1a\n\x16LABEL_TYPE_TENSOR_AXIS\x10\x022\xb4\x02\n\x0eMLModelService\x12\x89\x01\n\x05Infer\x12%.viam.service.mlmodel.v1.InferRequest\x1a&.viam.service.mlmodel.v1.InferResponse"1\x82\xd3\xe4\x93\x02+")/viam/api/v1/service/mlmodel/{name}/infer\x12\x95\x01\n\x08Metadata\x12(.viam.service.mlmodel.v1.MetadataRequest\x1a).viam.service.mlmodel.v1.MetadataResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/service/mlmodel/{name}/metadataBA\n\x1bcom.viam.service.mlmodel.v1Z"go.viam.com/api/service/mlmodel/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.pyi b/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.pyi index e3ee307aba..6f72d7f6bc 100644 --- a/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.pyi +++ b/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.pyi @@ -2,27 +2,27 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor class _LabelType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _LabelTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_LabelType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _LabelTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_LabelType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor LABEL_TYPE_UNSPECIFIED: _LabelType.ValueType LABEL_TYPE_TENSOR_VALUE: _LabelType.ValueType 'the value of the arrays/tensor is the label index' @@ -36,445 +36,474 @@ LABEL_TYPE_TENSOR_VALUE: LabelType.ValueType 'the value of the arrays/tensor is the label index' LABEL_TYPE_TENSOR_AXIS: LabelType.ValueType 'the position of the tensor value in the axis is the label index' -global___LabelType = LabelType - -@typing.final -class InferRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - INPUT_TENSORS_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +Global___LabelType: _TypeAlias = LabelType + +@_typing.final +class InferRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + INPUT_TENSORS_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'name of the model service' - @property - def input_tensors(self) -> global___FlatTensors: + @_builtins.property + def input_tensors(self) -> Global___FlatTensors: """the input data is provided as set of named flat tensors""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., input_tensors: global___FlatTensors | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., input_tensors: Global___FlatTensors | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'input_tensors', b'input_tensors'] - def HasField(self, field_name: typing.Literal['extra', b'extra', 'input_tensors', b'input_tensors']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'input_tensors', b'input_tensors', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'input_tensors', b'input_tensors', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___InferRequest = InferRequest +Global___InferRequest: _TypeAlias = InferRequest -@typing.final -class InferResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - OUTPUT_TENSORS_FIELD_NUMBER: builtins.int +@_typing.final +class InferResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + OUTPUT_TENSORS_FIELD_NUMBER: _builtins.int - @property - def output_tensors(self) -> global___FlatTensors: + @_builtins.property + def output_tensors(self) -> Global___FlatTensors: """the output data is provided as a set of named flat tensors""" - def __init__(self, *, output_tensors: global___FlatTensors | None=...) -> None: + def __init__(self, *, output_tensors: Global___FlatTensors | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['output_tensors', b'output_tensors'] - def HasField(self, field_name: typing.Literal['output_tensors', b'output_tensors']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['output_tensors', b'output_tensors'] - def ClearField(self, field_name: typing.Literal['output_tensors', b'output_tensors']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___InferResponse = InferResponse +Global___InferResponse: _TypeAlias = InferResponse -@typing.final -class MetadataRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class MetadataRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'name of the model service' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MetadataRequest = MetadataRequest +Global___MetadataRequest: _TypeAlias = MetadataRequest -@typing.final -class MetadataResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - METADATA_FIELD_NUMBER: builtins.int +@_typing.final +class MetadataResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + METADATA_FIELD_NUMBER: _builtins.int - @property - def metadata(self) -> global___Metadata: + @_builtins.property + def metadata(self) -> Global___Metadata: """this is the metadata associated with the ML model""" - def __init__(self, *, metadata: global___Metadata | None=...) -> None: + def __init__(self, *, metadata: Global___Metadata | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['metadata', b'metadata'] - def HasField(self, field_name: typing.Literal['metadata', b'metadata']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['metadata', b'metadata'] - def ClearField(self, field_name: typing.Literal['metadata', b'metadata']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MetadataResponse = MetadataResponse +Global___MetadataResponse: _TypeAlias = MetadataResponse -@typing.final -class Metadata(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - DESCRIPTION_FIELD_NUMBER: builtins.int - INPUT_INFO_FIELD_NUMBER: builtins.int - OUTPUT_INFO_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class Metadata(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + DESCRIPTION_FIELD_NUMBER: _builtins.int + INPUT_INFO_FIELD_NUMBER: _builtins.int + OUTPUT_INFO_FIELD_NUMBER: _builtins.int + name: _builtins.str 'name of the model' - type: builtins.str + type: _builtins.str 'type of model e.g. object_detector, text_classifier' - description: builtins.str + description: _builtins.str 'description of the model' - @property - def input_info(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TensorInfo]: + @_builtins.property + def input_info(self) -> _containers.RepeatedCompositeFieldContainer[Global___TensorInfo]: """the necessary input arrays/tensors for an inference, order matters""" - @property - def output_info(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TensorInfo]: + @_builtins.property + def output_info(self) -> _containers.RepeatedCompositeFieldContainer[Global___TensorInfo]: """the output arrays/tensors of the model, order matters""" - def __init__(self, *, name: builtins.str=..., type: builtins.str=..., description: builtins.str=..., input_info: collections.abc.Iterable[global___TensorInfo] | None=..., output_info: collections.abc.Iterable[global___TensorInfo] | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., type: _builtins.str=..., description: _builtins.str=..., input_info: _abc.Iterable[Global___TensorInfo] | None=..., output_info: _abc.Iterable[Global___TensorInfo] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['description', b'description', 'input_info', b'input_info', 'name', b'name', 'output_info', b'output_info', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['description', b'description', 'input_info', b'input_info', 'name', b'name', 'output_info', b'output_info', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Metadata = Metadata +Global___Metadata: _TypeAlias = Metadata -@typing.final -class TensorInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - DESCRIPTION_FIELD_NUMBER: builtins.int - DATA_TYPE_FIELD_NUMBER: builtins.int - SHAPE_FIELD_NUMBER: builtins.int - ASSOCIATED_FILES_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class TensorInfo(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + DESCRIPTION_FIELD_NUMBER: _builtins.int + DATA_TYPE_FIELD_NUMBER: _builtins.int + SHAPE_FIELD_NUMBER: _builtins.int + ASSOCIATED_FILES_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'name of the data in the array/tensor' - description: builtins.str + description: _builtins.str 'description of the data in the array/tensor' - data_type: builtins.str + data_type: _builtins.str 'data type of the array/tensor, e.g. float32, float64, uint8' - @property - def shape(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: + @_builtins.property + def shape(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: """shape of the array/tensor (-1 for unknown)""" - @property - def associated_files(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___File]: + @_builtins.property + def associated_files(self) -> _containers.RepeatedCompositeFieldContainer[Global___File]: """files associated with the array/tensor, like for category labels""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """anything else you want to say""" - def __init__(self, *, name: builtins.str=..., description: builtins.str=..., data_type: builtins.str=..., shape: collections.abc.Iterable[builtins.int] | None=..., associated_files: collections.abc.Iterable[global___File] | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., description: _builtins.str=..., data_type: _builtins.str=..., shape: _abc.Iterable[_builtins.int] | None=..., associated_files: _abc.Iterable[Global___File] | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['associated_files', b'associated_files', 'data_type', b'data_type', 'description', b'description', 'extra', b'extra', 'name', b'name', 'shape', b'shape'] - def ClearField(self, field_name: typing.Literal['associated_files', b'associated_files', 'data_type', b'data_type', 'description', b'description', 'extra', b'extra', 'name', b'name', 'shape', b'shape']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___TensorInfo = TensorInfo +Global___TensorInfo: _TypeAlias = TensorInfo -@typing.final -class File(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - DESCRIPTION_FIELD_NUMBER: builtins.int - LABEL_TYPE_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class File(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + DESCRIPTION_FIELD_NUMBER: _builtins.int + LABEL_TYPE_FIELD_NUMBER: _builtins.int + name: _builtins.str 'name of the file, with file extension' - description: builtins.str + description: _builtins.str 'description of what the file contains' - label_type: global___LabelType.ValueType + label_type: Global___LabelType.ValueType 'How to associate the arrays/tensors to the labels in the file' - def __init__(self, *, name: builtins.str=..., description: builtins.str=..., label_type: global___LabelType.ValueType=...) -> None: + def __init__(self, *, name: _builtins.str=..., description: _builtins.str=..., label_type: Global___LabelType.ValueType=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['description', b'description', 'label_type', b'label_type', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['description', b'description', 'label_type', b'label_type', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___File = File +Global___File: _TypeAlias = File -@typing.final -class FlatTensorDataInt8(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int - data: builtins.bytes +@_typing.final +class FlatTensorDataInt8(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int + data: _builtins.bytes - def __init__(self, *, data: builtins.bytes=...) -> None: + def __init__(self, *, data: _builtins.bytes=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FlatTensorDataInt8 = FlatTensorDataInt8 +Global___FlatTensorDataInt8: _TypeAlias = FlatTensorDataInt8 -@typing.final -class FlatTensorDataUInt8(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int - data: builtins.bytes +@_typing.final +class FlatTensorDataUInt8(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int + data: _builtins.bytes - def __init__(self, *, data: builtins.bytes=...) -> None: + def __init__(self, *, data: _builtins.bytes=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FlatTensorDataUInt8 = FlatTensorDataUInt8 +Global___FlatTensorDataUInt8: _TypeAlias = FlatTensorDataUInt8 -@typing.final -class FlatTensorDataInt16(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int +@_typing.final +class FlatTensorDataInt16(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int - @property - def data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: + @_builtins.property + def data(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: """packs two 16-bit numbers per entry - explicitly little-endian so big-endian producers/consumers must compensate """ - def __init__(self, *, data: collections.abc.Iterable[builtins.int] | None=...) -> None: + def __init__(self, *, data: _abc.Iterable[_builtins.int] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FlatTensorDataInt16 = FlatTensorDataInt16 +Global___FlatTensorDataInt16: _TypeAlias = FlatTensorDataInt16 -@typing.final -class FlatTensorDataUInt16(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int +@_typing.final +class FlatTensorDataUInt16(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int - @property - def data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: + @_builtins.property + def data(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: """packs two 16-bit numbers per entry - explicitly little-endian so big-endian producers/consumers must compensate """ - def __init__(self, *, data: collections.abc.Iterable[builtins.int] | None=...) -> None: + def __init__(self, *, data: _abc.Iterable[_builtins.int] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FlatTensorDataUInt16 = FlatTensorDataUInt16 +Global___FlatTensorDataUInt16: _TypeAlias = FlatTensorDataUInt16 -@typing.final -class FlatTensorDataInt32(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int +@_typing.final +class FlatTensorDataInt32(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int - @property - def data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: + @_builtins.property + def data(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: ... - def __init__(self, *, data: collections.abc.Iterable[builtins.int] | None=...) -> None: + def __init__(self, *, data: _abc.Iterable[_builtins.int] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FlatTensorDataInt32 = FlatTensorDataInt32 +Global___FlatTensorDataInt32: _TypeAlias = FlatTensorDataInt32 -@typing.final -class FlatTensorDataUInt32(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int +@_typing.final +class FlatTensorDataUInt32(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int - @property - def data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: + @_builtins.property + def data(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: ... - def __init__(self, *, data: collections.abc.Iterable[builtins.int] | None=...) -> None: + def __init__(self, *, data: _abc.Iterable[_builtins.int] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FlatTensorDataUInt32 = FlatTensorDataUInt32 +Global___FlatTensorDataUInt32: _TypeAlias = FlatTensorDataUInt32 -@typing.final -class FlatTensorDataInt64(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int +@_typing.final +class FlatTensorDataInt64(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int - @property - def data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: + @_builtins.property + def data(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: ... - def __init__(self, *, data: collections.abc.Iterable[builtins.int] | None=...) -> None: + def __init__(self, *, data: _abc.Iterable[_builtins.int] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FlatTensorDataInt64 = FlatTensorDataInt64 +Global___FlatTensorDataInt64: _TypeAlias = FlatTensorDataInt64 -@typing.final -class FlatTensorDataUInt64(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int +@_typing.final +class FlatTensorDataUInt64(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int - @property - def data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: + @_builtins.property + def data(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: ... - def __init__(self, *, data: collections.abc.Iterable[builtins.int] | None=...) -> None: + def __init__(self, *, data: _abc.Iterable[_builtins.int] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FlatTensorDataUInt64 = FlatTensorDataUInt64 +Global___FlatTensorDataUInt64: _TypeAlias = FlatTensorDataUInt64 -@typing.final -class FlatTensorDataFloat(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int +@_typing.final +class FlatTensorDataFloat(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int - @property - def data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: + @_builtins.property + def data(self) -> _containers.RepeatedScalarFieldContainer[_builtins.float]: ... - def __init__(self, *, data: collections.abc.Iterable[builtins.float] | None=...) -> None: + def __init__(self, *, data: _abc.Iterable[_builtins.float] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FlatTensorDataFloat = FlatTensorDataFloat +Global___FlatTensorDataFloat: _TypeAlias = FlatTensorDataFloat -@typing.final -class FlatTensorDataDouble(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_FIELD_NUMBER: builtins.int +@_typing.final +class FlatTensorDataDouble(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_FIELD_NUMBER: _builtins.int - @property - def data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: + @_builtins.property + def data(self) -> _containers.RepeatedScalarFieldContainer[_builtins.float]: ... - def __init__(self, *, data: collections.abc.Iterable[builtins.float] | None=...) -> None: + def __init__(self, *, data: _abc.Iterable[_builtins.float] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data', b'data'] - def ClearField(self, field_name: typing.Literal['data', b'data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FlatTensorDataDouble = FlatTensorDataDouble +Global___FlatTensorDataDouble: _TypeAlias = FlatTensorDataDouble -@typing.final -class FlatTensor(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SHAPE_FIELD_NUMBER: builtins.int - INT8_TENSOR_FIELD_NUMBER: builtins.int - UINT8_TENSOR_FIELD_NUMBER: builtins.int - INT16_TENSOR_FIELD_NUMBER: builtins.int - UINT16_TENSOR_FIELD_NUMBER: builtins.int - INT32_TENSOR_FIELD_NUMBER: builtins.int - UINT32_TENSOR_FIELD_NUMBER: builtins.int - INT64_TENSOR_FIELD_NUMBER: builtins.int - UINT64_TENSOR_FIELD_NUMBER: builtins.int - FLOAT_TENSOR_FIELD_NUMBER: builtins.int - DOUBLE_TENSOR_FIELD_NUMBER: builtins.int +@_typing.final +class FlatTensor(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SHAPE_FIELD_NUMBER: _builtins.int + INT8_TENSOR_FIELD_NUMBER: _builtins.int + UINT8_TENSOR_FIELD_NUMBER: _builtins.int + INT16_TENSOR_FIELD_NUMBER: _builtins.int + UINT16_TENSOR_FIELD_NUMBER: _builtins.int + INT32_TENSOR_FIELD_NUMBER: _builtins.int + UINT32_TENSOR_FIELD_NUMBER: _builtins.int + INT64_TENSOR_FIELD_NUMBER: _builtins.int + UINT64_TENSOR_FIELD_NUMBER: _builtins.int + FLOAT_TENSOR_FIELD_NUMBER: _builtins.int + DOUBLE_TENSOR_FIELD_NUMBER: _builtins.int - @property - def shape(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: + @_builtins.property + def shape(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: """the shape of the provided tensor as a list of integer extents""" - @property - def int8_tensor(self) -> global___FlatTensorDataInt8: + @_builtins.property + def int8_tensor(self) -> Global___FlatTensorDataInt8: ... - @property - def uint8_tensor(self) -> global___FlatTensorDataUInt8: + @_builtins.property + def uint8_tensor(self) -> Global___FlatTensorDataUInt8: ... - @property - def int16_tensor(self) -> global___FlatTensorDataInt16: + @_builtins.property + def int16_tensor(self) -> Global___FlatTensorDataInt16: ... - @property - def uint16_tensor(self) -> global___FlatTensorDataUInt16: + @_builtins.property + def uint16_tensor(self) -> Global___FlatTensorDataUInt16: ... - @property - def int32_tensor(self) -> global___FlatTensorDataInt32: + @_builtins.property + def int32_tensor(self) -> Global___FlatTensorDataInt32: ... - @property - def uint32_tensor(self) -> global___FlatTensorDataUInt32: + @_builtins.property + def uint32_tensor(self) -> Global___FlatTensorDataUInt32: ... - @property - def int64_tensor(self) -> global___FlatTensorDataInt64: + @_builtins.property + def int64_tensor(self) -> Global___FlatTensorDataInt64: ... - @property - def uint64_tensor(self) -> global___FlatTensorDataUInt64: + @_builtins.property + def uint64_tensor(self) -> Global___FlatTensorDataUInt64: ... - @property - def float_tensor(self) -> global___FlatTensorDataFloat: + @_builtins.property + def float_tensor(self) -> Global___FlatTensorDataFloat: ... - @property - def double_tensor(self) -> global___FlatTensorDataDouble: + @_builtins.property + def double_tensor(self) -> Global___FlatTensorDataDouble: ... - def __init__(self, *, shape: collections.abc.Iterable[builtins.int] | None=..., int8_tensor: global___FlatTensorDataInt8 | None=..., uint8_tensor: global___FlatTensorDataUInt8 | None=..., int16_tensor: global___FlatTensorDataInt16 | None=..., uint16_tensor: global___FlatTensorDataUInt16 | None=..., int32_tensor: global___FlatTensorDataInt32 | None=..., uint32_tensor: global___FlatTensorDataUInt32 | None=..., int64_tensor: global___FlatTensorDataInt64 | None=..., uint64_tensor: global___FlatTensorDataUInt64 | None=..., float_tensor: global___FlatTensorDataFloat | None=..., double_tensor: global___FlatTensorDataDouble | None=...) -> None: + def __init__(self, *, shape: _abc.Iterable[_builtins.int] | None=..., int8_tensor: Global___FlatTensorDataInt8 | None=..., uint8_tensor: Global___FlatTensorDataUInt8 | None=..., int16_tensor: Global___FlatTensorDataInt16 | None=..., uint16_tensor: Global___FlatTensorDataUInt16 | None=..., int32_tensor: Global___FlatTensorDataInt32 | None=..., uint32_tensor: Global___FlatTensorDataUInt32 | None=..., int64_tensor: Global___FlatTensorDataInt64 | None=..., uint64_tensor: Global___FlatTensorDataUInt64 | None=..., float_tensor: Global___FlatTensorDataFloat | None=..., double_tensor: Global___FlatTensorDataDouble | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['double_tensor', b'double_tensor', 'float_tensor', b'float_tensor', 'int16_tensor', b'int16_tensor', 'int32_tensor', b'int32_tensor', 'int64_tensor', b'int64_tensor', 'int8_tensor', b'int8_tensor', 'tensor', b'tensor', 'uint16_tensor', b'uint16_tensor', 'uint32_tensor', b'uint32_tensor', 'uint64_tensor', b'uint64_tensor', 'uint8_tensor', b'uint8_tensor'] - def HasField(self, field_name: typing.Literal['double_tensor', b'double_tensor', 'float_tensor', b'float_tensor', 'int16_tensor', b'int16_tensor', 'int32_tensor', b'int32_tensor', 'int64_tensor', b'int64_tensor', 'int8_tensor', b'int8_tensor', 'tensor', b'tensor', 'uint16_tensor', b'uint16_tensor', 'uint32_tensor', b'uint32_tensor', 'uint64_tensor', b'uint64_tensor', 'uint8_tensor', b'uint8_tensor']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['double_tensor', b'double_tensor', 'float_tensor', b'float_tensor', 'int16_tensor', b'int16_tensor', 'int32_tensor', b'int32_tensor', 'int64_tensor', b'int64_tensor', 'int8_tensor', b'int8_tensor', 'shape', b'shape', 'tensor', b'tensor', 'uint16_tensor', b'uint16_tensor', 'uint32_tensor', b'uint32_tensor', 'uint64_tensor', b'uint64_tensor', 'uint8_tensor', b'uint8_tensor'] - def ClearField(self, field_name: typing.Literal['double_tensor', b'double_tensor', 'float_tensor', b'float_tensor', 'int16_tensor', b'int16_tensor', 'int32_tensor', b'int32_tensor', 'int64_tensor', b'int64_tensor', 'int8_tensor', b'int8_tensor', 'shape', b'shape', 'tensor', b'tensor', 'uint16_tensor', b'uint16_tensor', 'uint32_tensor', b'uint32_tensor', 'uint64_tensor', b'uint64_tensor', 'uint8_tensor', b'uint8_tensor']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_tensor: _TypeAlias = _typing.Literal['int8_tensor', 'uint8_tensor', 'int16_tensor', 'uint16_tensor', 'int32_tensor', 'uint32_tensor', 'int64_tensor', 'uint64_tensor', 'float_tensor', 'double_tensor'] + _WhichOneofArgType_tensor: _TypeAlias = _typing.Literal['tensor', b'tensor'] - def WhichOneof(self, oneof_group: typing.Literal['tensor', b'tensor']) -> typing.Literal['int8_tensor', 'uint8_tensor', 'int16_tensor', 'uint16_tensor', 'int32_tensor', 'uint32_tensor', 'int64_tensor', 'uint64_tensor', 'float_tensor', 'double_tensor'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_tensor) -> _WhichOneofReturnType_tensor | None: ... -global___FlatTensor = FlatTensor +Global___FlatTensor: _TypeAlias = FlatTensor -@typing.final -class FlatTensors(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class FlatTensors(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class TensorsEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str + @_typing.final + class TensorsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str - @property - def value(self) -> global___FlatTensor: + @_builtins.property + def value(self) -> Global___FlatTensor: ... - def __init__(self, *, key: builtins.str=..., value: global___FlatTensor | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: Global___FlatTensor | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def HasField(self, field_name: typing.Literal['value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - TENSORS_FIELD_NUMBER: builtins.int + TENSORS_FIELD_NUMBER: _builtins.int - @property - def tensors(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___FlatTensor]: + @_builtins.property + def tensors(self) -> _containers.MessageMap[_builtins.str, Global___FlatTensor]: """A name-indexed collection of flat tensor objects""" - def __init__(self, *, tensors: collections.abc.Mapping[builtins.str, global___FlatTensor] | None=...) -> None: + def __init__(self, *, tensors: _abc.Mapping[_builtins.str, Global___FlatTensor] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['tensors', b'tensors'] - def ClearField(self, field_name: typing.Literal['tensors', b'tensors']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___FlatTensors = FlatTensors \ No newline at end of file +Global___FlatTensors: _TypeAlias = FlatTensors \ No newline at end of file diff --git a/src/viam/gen/service/motion/v1/motion_grpc.py b/src/viam/gen/service/motion/v1/motion_grpc.py index 4a268282ba..333d5a77e4 100644 --- a/src/viam/gen/service/motion/v1/motion_grpc.py +++ b/src/viam/gen/service/motion/v1/motion_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 import google.protobuf.timestamp_pb2 from .... import service diff --git a/src/viam/gen/service/motion/v1/motion_pb2.py b/src/viam/gen/service/motion/v1/motion_pb2.py index 7cabaaa459..4794f460b4 100644 --- a/src/viam/gen/service/motion/v1/motion_pb2.py +++ b/src/viam/gen/service/motion/v1/motion_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'service/motion/v1/motion.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/motion/v1/motion.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1eservice/motion/v1/motion.proto\x12\x16viam.service.motion.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto"\xc2\x03\n\x0bMoveRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12=\n\x0bdestination\x18\x02 \x01(\x0b2\x1b.viam.common.v1.PoseInFrameR\x0bdestination\x12\\\n\x19component_name_deprecated\x18\x03 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12@\n\x0bworld_state\x18\x04 \x01(\x0b2\x1a.viam.common.v1.WorldStateH\x00R\nworldState\x88\x01\x01\x12J\n\x0bconstraints\x18\x05 \x01(\x0b2#.viam.service.motion.v1.ConstraintsH\x01R\x0bconstraints\x88\x01\x01\x12%\n\x0ecomponent_name\x18\x06 \x01(\tR\rcomponentName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraB\x0e\n\x0c_world_stateB\x0e\n\x0c_constraints"(\n\x0cMoveResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success"\xd7\x04\n\x10MoveOnMapRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x126\n\x0bdestination\x18\x02 \x01(\x0b2\x14.viam.common.v1.PoseR\x0bdestination\x12\\\n\x19component_name_deprecated\x18\x03 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12a\n\x1cslam_service_name_deprecated\x18\x04 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x19slamServiceNameDeprecated\x12c\n\x14motion_configuration\x18\x05 \x01(\x0b2+.viam.service.motion.v1.MotionConfigurationH\x00R\x13motionConfiguration\x88\x01\x01\x126\n\tobstacles\x18\x06 \x03(\x0b2\x18.viam.common.v1.GeometryR\tobstacles\x12%\n\x0ecomponent_name\x18\x07 \x01(\tR\rcomponentName\x12*\n\x11slam_service_name\x18\x08 \x01(\tR\x0fslamServiceName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraB\x17\n\x15_motion_configuration"6\n\x11MoveOnMapResponse\x12!\n\x0cexecution_id\x18\x01 \x01(\tR\x0bexecutionId"\xfe\x01\n\x10ObstacleDetector\x12\\\n\x19vision_service_deprecated\x18\x01 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17visionServiceDeprecated\x12M\n\x11camera_deprecated\x18\x02 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x10cameraDeprecated\x12%\n\x0evision_service\x18\x03 \x01(\tR\rvisionService\x12\x16\n\x06camera\x18\x04 \x01(\tR\x06camera"\x98\x04\n\x13MotionConfiguration\x12W\n\x12obstacle_detectors\x18\x01 \x03(\x0b2(.viam.service.motion.v1.ObstacleDetectorR\x11obstacleDetectors\x12F\n\x1dposition_polling_frequency_hz\x18\x02 \x01(\x01H\x00R\x1apositionPollingFrequencyHz\x88\x01\x01\x12F\n\x1dobstacle_polling_frequency_hz\x18\x03 \x01(\x01H\x01R\x1aobstaclePollingFrequencyHz\x88\x01\x01\x12-\n\x10plan_deviation_m\x18\x04 \x01(\x01H\x02R\x0eplanDeviationM\x88\x01\x01\x12,\n\x10linear_m_per_sec\x18\x05 \x01(\x01H\x03R\rlinearMPerSec\x88\x01\x01\x124\n\x14angular_degs_per_sec\x18\x06 \x01(\x01H\x04R\x11angularDegsPerSec\x88\x01\x01B \n\x1e_position_polling_frequency_hzB \n\x1e_obstacle_polling_frequency_hzB\x13\n\x11_plan_deviation_mB\x13\n\x11_linear_m_per_secB\x17\n\x15_angular_degs_per_sec"\xdf\x05\n\x12MoveOnGlobeRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12:\n\x0bdestination\x18\x02 \x01(\x0b2\x18.viam.common.v1.GeoPointR\x0bdestination\x12\x1d\n\x07heading\x18\x03 \x01(\x01H\x00R\x07heading\x88\x01\x01\x12\\\n\x19component_name_deprecated\x18\x04 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12g\n\x1fmovement_sensor_name_deprecated\x18\x05 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x1cmovementSensorNameDeprecated\x129\n\tobstacles\x18\x06 \x03(\x0b2\x1b.viam.common.v1.GeoGeometryR\tobstacles\x12c\n\x14motion_configuration\x18\x07 \x01(\x0b2+.viam.service.motion.v1.MotionConfigurationH\x01R\x13motionConfiguration\x88\x01\x01\x12F\n\x10bounding_regions\x18\x08 \x03(\x0b2\x1b.viam.common.v1.GeoGeometryR\x0fboundingRegions\x12%\n\x0ecomponent_name\x18\t \x01(\tR\rcomponentName\x120\n\x14movement_sensor_name\x18\n \x01(\tR\x12movementSensorName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraB\n\n\x08_headingB\x17\n\x15_motion_configuration"8\n\x13MoveOnGlobeResponse\x12!\n\x0cexecution_id\x18\x01 \x01(\tR\x0bexecutionId"\xdd\x02\n\x0eGetPoseRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\\\n\x19component_name_deprecated\x18\x02 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12+\n\x11destination_frame\x18\x03 \x01(\tR\x10destinationFrame\x12R\n\x17supplemental_transforms\x18\x04 \x03(\x0b2\x19.viam.common.v1.TransformR\x16supplementalTransforms\x12%\n\x0ecomponent_name\x18\x05 \x01(\tR\rcomponentName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra:\x02\x18\x01"F\n\x0fGetPoseResponse\x12/\n\x04pose\x18\x01 \x01(\x0b2\x1b.viam.common.v1.PoseInFrameR\x04pose:\x02\x18\x01"\xd9\x01\n\x0fStopPlanRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\\\n\x19component_name_deprecated\x18\x02 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12%\n\x0ecomponent_name\x18\x03 \x01(\tR\rcomponentName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x12\n\x10StopPlanResponse"\x88\x01\n\x17ListPlanStatusesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12*\n\x11only_active_plans\x18\x02 \x01(\x08R\x0fonlyActivePlans\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"y\n\x18ListPlanStatusesResponse\x12]\n\x16plan_statuses_with_ids\x18\x01 \x03(\x0b2(.viam.service.motion.v1.PlanStatusWithIDR\x13planStatusesWithIds"\xb7\x02\n\x0eGetPlanRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\\\n\x19component_name_deprecated\x18\x02 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12$\n\x0elast_plan_only\x18\x03 \x01(\x08R\x0clastPlanOnly\x12&\n\x0cexecution_id\x18\x04 \x01(\tH\x00R\x0bexecutionId\x88\x01\x01\x12%\n\x0ecomponent_name\x18\x05 \x01(\tR\rcomponentName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraB\x0f\n\r_execution_id"\xc1\x01\n\x0fGetPlanResponse\x12_\n\x18current_plan_with_status\x18\x01 \x01(\x0b2&.viam.service.motion.v1.PlanWithStatusR\x15currentPlanWithStatus\x12M\n\x0ereplan_history\x18\x02 \x03(\x0b2&.viam.service.motion.v1.PlanWithStatusR\rreplanHistory"\x9c\x03\n\x0bConstraints\x12U\n\x11linear_constraint\x18\x01 \x03(\x0b2(.viam.service.motion.v1.LinearConstraintR\x10linearConstraint\x12d\n\x16orientation_constraint\x18\x02 \x03(\x0b2-.viam.service.motion.v1.OrientationConstraintR\x15orientationConstraint\x12g\n\x17collision_specification\x18\x03 \x03(\x0b2..viam.service.motion.v1.CollisionSpecificationR\x16collisionSpecification\x12g\n\x17pseudolinear_constraint\x18\x04 \x03(\x0b2..viam.service.motion.v1.PseudolinearConstraintR\x16pseudolinearConstraint"\xbb\x01\n\x10LinearConstraint\x12/\n\x11line_tolerance_mm\x18\x01 \x01(\x02H\x00R\x0flineToleranceMm\x88\x01\x01\x12A\n\x1aorientation_tolerance_degs\x18\x02 \x01(\x02H\x01R\x18orientationToleranceDegs\x88\x01\x01B\x14\n\x12_line_tolerance_mmB\x1d\n\x1b_orientation_tolerance_degs"\xd3\x01\n\x16PseudolinearConstraint\x127\n\x15line_tolerance_factor\x18\x01 \x01(\x02H\x00R\x13lineToleranceFactor\x88\x01\x01\x12E\n\x1corientation_tolerance_factor\x18\x02 \x01(\x02H\x01R\x1aorientationToleranceFactor\x88\x01\x01B\x18\n\x16_line_tolerance_factorB\x1f\n\x1d_orientation_tolerance_factor"y\n\x15OrientationConstraint\x12A\n\x1aorientation_tolerance_degs\x18\x01 \x01(\x02H\x00R\x18orientationToleranceDegs\x88\x01\x01B\x1d\n\x1b_orientation_tolerance_degs"\xc1\x01\n\x16CollisionSpecification\x12]\n\x06allows\x18\x01 \x03(\x0b2E.viam.service.motion.v1.CollisionSpecification.AllowedFrameCollisionsR\x06allows\x1aH\n\x16AllowedFrameCollisions\x12\x16\n\x06frame1\x18\x01 \x01(\tR\x06frame1\x12\x16\n\x06frame2\x18\x02 \x01(\tR\x06frame2"\xc9\x01\n\x0ePlanWithStatus\x120\n\x04plan\x18\x01 \x01(\x0b2\x1c.viam.service.motion.v1.PlanR\x04plan\x12:\n\x06status\x18\x02 \x01(\x0b2".viam.service.motion.v1.PlanStatusR\x06status\x12I\n\x0estatus_history\x18\x03 \x03(\x0b2".viam.service.motion.v1.PlanStatusR\rstatusHistory"\x8f\x02\n\x10PlanStatusWithID\x12\x17\n\x07plan_id\x18\x01 \x01(\tR\x06planId\x12\\\n\x19component_name_deprecated\x18\x02 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12!\n\x0cexecution_id\x18\x03 \x01(\tR\x0bexecutionId\x12:\n\x06status\x18\x04 \x01(\x0b2".viam.service.motion.v1.PlanStatusR\x06status\x12%\n\x0ecomponent_name\x18\x05 \x01(\tR\rcomponentName"\xa7\x01\n\nPlanStatus\x127\n\x05state\x18\x01 \x01(\x0e2!.viam.service.motion.v1.PlanStateR\x05state\x128\n\ttimestamp\x18\x02 \x01(\x0b2\x1a.google.protobuf.TimestampR\ttimestamp\x12\x1b\n\x06reason\x18\x03 \x01(\tH\x00R\x06reason\x88\x01\x01B\t\n\x07_reason"\xf6\x01\n\x04Plan\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\\\n\x19component_name_deprecated\x18\x02 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12!\n\x0cexecution_id\x18\x03 \x01(\tR\x0bexecutionId\x126\n\x05steps\x18\x04 \x03(\x0b2 .viam.service.motion.v1.PlanStepR\x05steps\x12%\n\x0ecomponent_name\x18\x05 \x01(\tR\rcomponentName"\xab\x01\n\x08PlanStep\x12>\n\x04step\x18\x01 \x03(\x0b2*.viam.service.motion.v1.PlanStep.StepEntryR\x04step\x1a_\n\tStepEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12<\n\x05value\x18\x02 \x01(\x0b2&.viam.service.motion.v1.ComponentStateR\x05value:\x028\x01":\n\x0eComponentState\x12(\n\x04pose\x18\x01 \x01(\x0b2\x14.viam.common.v1.PoseR\x04pose*\x8c\x01\n\tPlanState\x12\x1a\n\x16PLAN_STATE_UNSPECIFIED\x10\x00\x12\x1a\n\x16PLAN_STATE_IN_PROGRESS\x10\x01\x12\x16\n\x12PLAN_STATE_STOPPED\x10\x02\x12\x18\n\x14PLAN_STATE_SUCCEEDED\x10\x03\x12\x15\n\x11PLAN_STATE_FAILED\x10\x042\xcc\t\n\rMotionService\x12\x82\x01\n\x04Move\x12#.viam.service.motion.v1.MoveRequest\x1a$.viam.service.motion.v1.MoveResponse"/\x82\xd3\xe4\x93\x02)"\'/viam/api/v1/service/motion/{name}/move\x12\x98\x01\n\tMoveOnMap\x12(.viam.service.motion.v1.MoveOnMapRequest\x1a).viam.service.motion.v1.MoveOnMapResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/service/motion/{name}/move_on_map\x12\xa0\x01\n\x0bMoveOnGlobe\x12*.viam.service.motion.v1.MoveOnGlobeRequest\x1a+.viam.service.motion.v1.MoveOnGlobeResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/service/motion/{name}/move_on_globe\x12\x8e\x01\n\x07GetPose\x12&.viam.service.motion.v1.GetPoseRequest\x1a\'.viam.service.motion.v1.GetPoseResponse"2\x88\x02\x01\x82\xd3\xe4\x93\x02)\x12\'/viam/api/v1/service/motion/{name}/pose\x12\x93\x01\n\x08StopPlan\x12\'.viam.service.motion.v1.StopPlanRequest\x1a(.viam.service.motion.v1.StopPlanResponse"4\x82\xd3\xe4\x93\x02.\x1a,/viam/api/v1/service/motion/{name}/stop_plan\x12\xb4\x01\n\x10ListPlanStatuses\x12/.viam.service.motion.v1.ListPlanStatusesRequest\x1a0.viam.service.motion.v1.ListPlanStatusesResponse"=\x82\xd3\xe4\x93\x027\x125/viam/api/v1/service/motion/{name}/list_plan_statuses\x12\x8f\x01\n\x07GetPlan\x12&.viam.service.motion.v1.GetPlanRequest\x1a\'.viam.service.motion.v1.GetPlanResponse"3\x82\xd3\xe4\x93\x02-\x12+/viam/api/v1/service/motion/{name}/get_plan\x12\x87\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"5\x82\xd3\xe4\x93\x02/"-/viam/api/v1/service/motion/{name}/do_commandB?\n\x1acom.viam.service.motion.v1Z!go.viam.com/api/service/motion/v1b\x06proto3') diff --git a/src/viam/gen/service/motion/v1/motion_pb2.pyi b/src/viam/gen/service/motion/v1/motion_pb2.pyi index 62294516a4..d6cf452d9b 100644 --- a/src/viam/gen/service/motion/v1/motion_pb2.pyi +++ b/src/viam/gen/service/motion/v1/motion_pb2.pyi @@ -2,29 +2,33 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -from .... import common -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 -import google.protobuf.timestamp_pb2 +from collections import abc as _abc +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +if sys.version_info >= (3, 13): + from warnings import deprecated as _deprecated +else: + from typing_extensions import deprecated as _deprecated +DESCRIPTOR: _descriptor.FileDescriptor class _PlanState: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _PlanStateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PlanState.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _PlanStateEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_PlanState.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor PLAN_STATE_UNSPECIFIED: _PlanState.ValueType PLAN_STATE_IN_PROGRESS: _PlanState.ValueType PLAN_STATE_STOPPED: _PlanState.ValueType @@ -43,858 +47,954 @@ PLAN_STATE_IN_PROGRESS: PlanState.ValueType PLAN_STATE_STOPPED: PlanState.ValueType PLAN_STATE_SUCCEEDED: PlanState.ValueType PLAN_STATE_FAILED: PlanState.ValueType -global___PlanState = PlanState +Global___PlanState: _TypeAlias = PlanState -@typing.final -class MoveRequest(google.protobuf.message.Message): +@_typing.final +class MoveRequest(_message.Message): """Moves any component on the robot to a specified destination which can be from the reference frame of any other component on the robot.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - DESTINATION_FIELD_NUMBER: builtins.int - COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: builtins.int - WORLD_STATE_FIELD_NUMBER: builtins.int - CONSTRAINTS_FIELD_NUMBER: builtins.int - COMPONENT_NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + DESTINATION_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: _builtins.int + WORLD_STATE_FIELD_NUMBER: _builtins.int + CONSTRAINTS_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of the motion service' - component_name: builtins.str + component_name: _builtins.str 'Component on the robot to move to the specified destination' - @property - def destination(self) -> common.v1.common_pb2.PoseInFrame: + @_builtins.property + def destination(self) -> _common_pb2.PoseInFrame: """Destination to move to, which can a pose in the reference frame of any frame in the robot's frame system""" - @property - def component_name_deprecated(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def component_name_deprecated(self) -> _common_pb2.ResourceName: """Deprecated, use component_name field.""" - @property - def world_state(self) -> common.v1.common_pb2.WorldState: + @_builtins.property + def world_state(self) -> _common_pb2.WorldState: """Avoid obstacles by specifying their geometries in the world state Augment the frame system of the robot by specifying additional transforms to add to it for the duration of the Move """ - @property - def constraints(self) -> global___Constraints: + @_builtins.property + def constraints(self) -> Global___Constraints: """Constrain the way the robot will move""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., destination: common.v1.common_pb2.PoseInFrame | None=..., component_name_deprecated: common.v1.common_pb2.ResourceName | None=..., world_state: common.v1.common_pb2.WorldState | None=..., constraints: global___Constraints | None=..., component_name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., destination: _common_pb2.PoseInFrame | None=..., component_name_deprecated: _common_pb2.ResourceName | None=..., world_state: _common_pb2.WorldState | None=..., constraints: Global___Constraints | None=..., component_name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_constraints', b'_constraints', '_world_state', b'_world_state', 'component_name_deprecated', b'component_name_deprecated', 'constraints', b'constraints', 'destination', b'destination', 'extra', b'extra', 'world_state', b'world_state'] - def HasField(self, field_name: typing.Literal['_constraints', b'_constraints', '_world_state', b'_world_state', 'component_name_deprecated', b'component_name_deprecated', 'constraints', b'constraints', 'destination', b'destination', 'extra', b'extra', 'world_state', b'world_state']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_constraints', b'_constraints', '_world_state', b'_world_state', 'component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'constraints', b'constraints', 'destination', b'destination', 'extra', b'extra', 'name', b'name', 'world_state', b'world_state'] - def ClearField(self, field_name: typing.Literal['_constraints', b'_constraints', '_world_state', b'_world_state', 'component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'constraints', b'constraints', 'destination', b'destination', 'extra', b'extra', 'name', b'name', 'world_state', b'world_state']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__constraints: _TypeAlias = _typing.Literal['constraints'] + _WhichOneofArgType__constraints: _TypeAlias = _typing.Literal['_constraints', b'_constraints'] + _WhichOneofReturnType__world_state: _TypeAlias = _typing.Literal['world_state'] + _WhichOneofArgType__world_state: _TypeAlias = _typing.Literal['_world_state', b'_world_state'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_constraints', b'_constraints']) -> typing.Literal['constraints'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__constraints) -> _WhichOneofReturnType__constraints | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_world_state', b'_world_state']) -> typing.Literal['world_state'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__world_state) -> _WhichOneofReturnType__world_state | None: ... -global___MoveRequest = MoveRequest +Global___MoveRequest: _TypeAlias = MoveRequest -@typing.final -class MoveResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SUCCESS_FIELD_NUMBER: builtins.int - success: builtins.bool +@_typing.final +class MoveResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SUCCESS_FIELD_NUMBER: _builtins.int + success: _builtins.bool - def __init__(self, *, success: builtins.bool=...) -> None: + def __init__(self, *, success: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['success', b'success'] - def ClearField(self, field_name: typing.Literal['success', b'success']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MoveResponse = MoveResponse +Global___MoveResponse: _TypeAlias = MoveResponse -@typing.final -class MoveOnMapRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - DESTINATION_FIELD_NUMBER: builtins.int - COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: builtins.int - SLAM_SERVICE_NAME_DEPRECATED_FIELD_NUMBER: builtins.int - MOTION_CONFIGURATION_FIELD_NUMBER: builtins.int - OBSTACLES_FIELD_NUMBER: builtins.int - COMPONENT_NAME_FIELD_NUMBER: builtins.int - SLAM_SERVICE_NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class MoveOnMapRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + DESTINATION_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: _builtins.int + SLAM_SERVICE_NAME_DEPRECATED_FIELD_NUMBER: _builtins.int + MOTION_CONFIGURATION_FIELD_NUMBER: _builtins.int + OBSTACLES_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_FIELD_NUMBER: _builtins.int + SLAM_SERVICE_NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of the motion service' - component_name: builtins.str + component_name: _builtins.str 'Component on the robot to move to the specified destination' - slam_service_name: builtins.str + slam_service_name: _builtins.str 'Name of the slam service from which the SLAM map is requested' - @property - def destination(self) -> common.v1.common_pb2.Pose: + @_builtins.property + def destination(self) -> _common_pb2.Pose: """Specify a destination to, which can be any pose with respect to the SLAM map's origin""" - @property - def component_name_deprecated(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def component_name_deprecated(self) -> _common_pb2.ResourceName: """Deprecated, use component_name field.""" - @property - def slam_service_name_deprecated(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def slam_service_name_deprecated(self) -> _common_pb2.ResourceName: """Deprecated, use slam_service_name field.""" - @property - def motion_configuration(self) -> global___MotionConfiguration: + @_builtins.property + def motion_configuration(self) -> Global___MotionConfiguration: """Optional set of motion configuration options""" - @property - def obstacles(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.Geometry]: + @_builtins.property + def obstacles(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.Geometry]: """Obstacles to be considered for motion planning""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., destination: common.v1.common_pb2.Pose | None=..., component_name_deprecated: common.v1.common_pb2.ResourceName | None=..., slam_service_name_deprecated: common.v1.common_pb2.ResourceName | None=..., motion_configuration: global___MotionConfiguration | None=..., obstacles: collections.abc.Iterable[common.v1.common_pb2.Geometry] | None=..., component_name: builtins.str=..., slam_service_name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., destination: _common_pb2.Pose | None=..., component_name_deprecated: _common_pb2.ResourceName | None=..., slam_service_name_deprecated: _common_pb2.ResourceName | None=..., motion_configuration: Global___MotionConfiguration | None=..., obstacles: _abc.Iterable[_common_pb2.Geometry] | None=..., component_name: _builtins.str=..., slam_service_name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_motion_configuration', b'_motion_configuration', 'component_name_deprecated', b'component_name_deprecated', 'destination', b'destination', 'extra', b'extra', 'motion_configuration', b'motion_configuration', 'slam_service_name_deprecated', b'slam_service_name_deprecated'] - def HasField(self, field_name: typing.Literal['_motion_configuration', b'_motion_configuration', 'component_name_deprecated', b'component_name_deprecated', 'destination', b'destination', 'extra', b'extra', 'motion_configuration', b'motion_configuration', 'slam_service_name_deprecated', b'slam_service_name_deprecated']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_motion_configuration', b'_motion_configuration', 'component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'destination', b'destination', 'extra', b'extra', 'motion_configuration', b'motion_configuration', 'name', b'name', 'obstacles', b'obstacles', 'slam_service_name', b'slam_service_name', 'slam_service_name_deprecated', b'slam_service_name_deprecated'] - def ClearField(self, field_name: typing.Literal['_motion_configuration', b'_motion_configuration', 'component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'destination', b'destination', 'extra', b'extra', 'motion_configuration', b'motion_configuration', 'name', b'name', 'obstacles', b'obstacles', 'slam_service_name', b'slam_service_name', 'slam_service_name_deprecated', b'slam_service_name_deprecated']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__motion_configuration: _TypeAlias = _typing.Literal['motion_configuration'] + _WhichOneofArgType__motion_configuration: _TypeAlias = _typing.Literal['_motion_configuration', b'_motion_configuration'] - def WhichOneof(self, oneof_group: typing.Literal['_motion_configuration', b'_motion_configuration']) -> typing.Literal['motion_configuration'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__motion_configuration) -> _WhichOneofReturnType__motion_configuration | None: ... -global___MoveOnMapRequest = MoveOnMapRequest +Global___MoveOnMapRequest: _TypeAlias = MoveOnMapRequest -@typing.final -class MoveOnMapResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - EXECUTION_ID_FIELD_NUMBER: builtins.int - execution_id: builtins.str +@_typing.final +class MoveOnMapResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + EXECUTION_ID_FIELD_NUMBER: _builtins.int + execution_id: _builtins.str 'The unique ID which identifies the execution.\n Multiple plans will share the same execution_id if they were\n generated due to replanning.\n ' - def __init__(self, *, execution_id: builtins.str=...) -> None: + def __init__(self, *, execution_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['execution_id', b'execution_id'] - def ClearField(self, field_name: typing.Literal['execution_id', b'execution_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MoveOnMapResponse = MoveOnMapResponse +Global___MoveOnMapResponse: _TypeAlias = MoveOnMapResponse -@typing.final -class ObstacleDetector(google.protobuf.message.Message): +@_typing.final +class ObstacleDetector(_message.Message): """Pairs a vision service with a camera, informing the service about which camera it may use""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VISION_SERVICE_DEPRECATED_FIELD_NUMBER: builtins.int - CAMERA_DEPRECATED_FIELD_NUMBER: builtins.int - VISION_SERVICE_FIELD_NUMBER: builtins.int - CAMERA_FIELD_NUMBER: builtins.int - vision_service: builtins.str - camera: builtins.str + DESCRIPTOR: _descriptor.Descriptor + VISION_SERVICE_DEPRECATED_FIELD_NUMBER: _builtins.int + CAMERA_DEPRECATED_FIELD_NUMBER: _builtins.int + VISION_SERVICE_FIELD_NUMBER: _builtins.int + CAMERA_FIELD_NUMBER: _builtins.int + vision_service: _builtins.str + camera: _builtins.str - @property - def vision_service_deprecated(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def vision_service_deprecated(self) -> _common_pb2.ResourceName: ... - @property - def camera_deprecated(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def camera_deprecated(self) -> _common_pb2.ResourceName: ... - def __init__(self, *, vision_service_deprecated: common.v1.common_pb2.ResourceName | None=..., camera_deprecated: common.v1.common_pb2.ResourceName | None=..., vision_service: builtins.str=..., camera: builtins.str=...) -> None: + def __init__(self, *, vision_service_deprecated: _common_pb2.ResourceName | None=..., camera_deprecated: _common_pb2.ResourceName | None=..., vision_service: _builtins.str=..., camera: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['camera_deprecated', b'camera_deprecated', 'vision_service_deprecated', b'vision_service_deprecated'] - def HasField(self, field_name: typing.Literal['camera_deprecated', b'camera_deprecated', 'vision_service_deprecated', b'vision_service_deprecated']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['camera', b'camera', 'camera_deprecated', b'camera_deprecated', 'vision_service', b'vision_service', 'vision_service_deprecated', b'vision_service_deprecated'] - def ClearField(self, field_name: typing.Literal['camera', b'camera', 'camera_deprecated', b'camera_deprecated', 'vision_service', b'vision_service', 'vision_service_deprecated', b'vision_service_deprecated']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ObstacleDetector = ObstacleDetector +Global___ObstacleDetector: _TypeAlias = ObstacleDetector -@typing.final -class MotionConfiguration(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - OBSTACLE_DETECTORS_FIELD_NUMBER: builtins.int - POSITION_POLLING_FREQUENCY_HZ_FIELD_NUMBER: builtins.int - OBSTACLE_POLLING_FREQUENCY_HZ_FIELD_NUMBER: builtins.int - PLAN_DEVIATION_M_FIELD_NUMBER: builtins.int - LINEAR_M_PER_SEC_FIELD_NUMBER: builtins.int - ANGULAR_DEGS_PER_SEC_FIELD_NUMBER: builtins.int - position_polling_frequency_hz: builtins.float +@_typing.final +class MotionConfiguration(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + OBSTACLE_DETECTORS_FIELD_NUMBER: _builtins.int + POSITION_POLLING_FREQUENCY_HZ_FIELD_NUMBER: _builtins.int + OBSTACLE_POLLING_FREQUENCY_HZ_FIELD_NUMBER: _builtins.int + PLAN_DEVIATION_M_FIELD_NUMBER: _builtins.int + LINEAR_M_PER_SEC_FIELD_NUMBER: _builtins.int + ANGULAR_DEGS_PER_SEC_FIELD_NUMBER: _builtins.int + position_polling_frequency_hz: _builtins.float 'Sets the frequency to poll for the position of the robot' - obstacle_polling_frequency_hz: builtins.float + obstacle_polling_frequency_hz: _builtins.float 'Sets the frequency to poll the vision service(s) for new obstacles' - plan_deviation_m: builtins.float + plan_deviation_m: _builtins.float 'Sets the distance in meters that a robot is allowed to deviate from the motion plan' - linear_m_per_sec: builtins.float + linear_m_per_sec: _builtins.float 'Optional linear velocity to target when moving' - angular_degs_per_sec: builtins.float + angular_degs_per_sec: _builtins.float 'Optional angular velocity to target when turning' - @property - def obstacle_detectors(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ObstacleDetector]: + @_builtins.property + def obstacle_detectors(self) -> _containers.RepeatedCompositeFieldContainer[Global___ObstacleDetector]: """The ObstacleDetectors that will be used for transient obstacle avoidance""" - def __init__(self, *, obstacle_detectors: collections.abc.Iterable[global___ObstacleDetector] | None=..., position_polling_frequency_hz: builtins.float | None=..., obstacle_polling_frequency_hz: builtins.float | None=..., plan_deviation_m: builtins.float | None=..., linear_m_per_sec: builtins.float | None=..., angular_degs_per_sec: builtins.float | None=...) -> None: + def __init__(self, *, obstacle_detectors: _abc.Iterable[Global___ObstacleDetector] | None=..., position_polling_frequency_hz: _builtins.float | None=..., obstacle_polling_frequency_hz: _builtins.float | None=..., plan_deviation_m: _builtins.float | None=..., linear_m_per_sec: _builtins.float | None=..., angular_degs_per_sec: _builtins.float | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_angular_degs_per_sec', b'_angular_degs_per_sec', '_linear_m_per_sec', b'_linear_m_per_sec', '_obstacle_polling_frequency_hz', b'_obstacle_polling_frequency_hz', '_plan_deviation_m', b'_plan_deviation_m', '_position_polling_frequency_hz', b'_position_polling_frequency_hz', 'angular_degs_per_sec', b'angular_degs_per_sec', 'linear_m_per_sec', b'linear_m_per_sec', 'obstacle_polling_frequency_hz', b'obstacle_polling_frequency_hz', 'plan_deviation_m', b'plan_deviation_m', 'position_polling_frequency_hz', b'position_polling_frequency_hz'] - def HasField(self, field_name: typing.Literal['_angular_degs_per_sec', b'_angular_degs_per_sec', '_linear_m_per_sec', b'_linear_m_per_sec', '_obstacle_polling_frequency_hz', b'_obstacle_polling_frequency_hz', '_plan_deviation_m', b'_plan_deviation_m', '_position_polling_frequency_hz', b'_position_polling_frequency_hz', 'angular_degs_per_sec', b'angular_degs_per_sec', 'linear_m_per_sec', b'linear_m_per_sec', 'obstacle_polling_frequency_hz', b'obstacle_polling_frequency_hz', 'plan_deviation_m', b'plan_deviation_m', 'position_polling_frequency_hz', b'position_polling_frequency_hz']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_angular_degs_per_sec', b'_angular_degs_per_sec', '_linear_m_per_sec', b'_linear_m_per_sec', '_obstacle_polling_frequency_hz', b'_obstacle_polling_frequency_hz', '_plan_deviation_m', b'_plan_deviation_m', '_position_polling_frequency_hz', b'_position_polling_frequency_hz', 'angular_degs_per_sec', b'angular_degs_per_sec', 'linear_m_per_sec', b'linear_m_per_sec', 'obstacle_detectors', b'obstacle_detectors', 'obstacle_polling_frequency_hz', b'obstacle_polling_frequency_hz', 'plan_deviation_m', b'plan_deviation_m', 'position_polling_frequency_hz', b'position_polling_frequency_hz'] - def ClearField(self, field_name: typing.Literal['_angular_degs_per_sec', b'_angular_degs_per_sec', '_linear_m_per_sec', b'_linear_m_per_sec', '_obstacle_polling_frequency_hz', b'_obstacle_polling_frequency_hz', '_plan_deviation_m', b'_plan_deviation_m', '_position_polling_frequency_hz', b'_position_polling_frequency_hz', 'angular_degs_per_sec', b'angular_degs_per_sec', 'linear_m_per_sec', b'linear_m_per_sec', 'obstacle_detectors', b'obstacle_detectors', 'obstacle_polling_frequency_hz', b'obstacle_polling_frequency_hz', 'plan_deviation_m', b'plan_deviation_m', 'position_polling_frequency_hz', b'position_polling_frequency_hz']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__angular_degs_per_sec: _TypeAlias = _typing.Literal['angular_degs_per_sec'] + _WhichOneofArgType__angular_degs_per_sec: _TypeAlias = _typing.Literal['_angular_degs_per_sec', b'_angular_degs_per_sec'] + _WhichOneofReturnType__linear_m_per_sec: _TypeAlias = _typing.Literal['linear_m_per_sec'] + _WhichOneofArgType__linear_m_per_sec: _TypeAlias = _typing.Literal['_linear_m_per_sec', b'_linear_m_per_sec'] + _WhichOneofReturnType__obstacle_polling_frequency_hz: _TypeAlias = _typing.Literal['obstacle_polling_frequency_hz'] + _WhichOneofArgType__obstacle_polling_frequency_hz: _TypeAlias = _typing.Literal['_obstacle_polling_frequency_hz', b'_obstacle_polling_frequency_hz'] + _WhichOneofReturnType__plan_deviation_m: _TypeAlias = _typing.Literal['plan_deviation_m'] + _WhichOneofArgType__plan_deviation_m: _TypeAlias = _typing.Literal['_plan_deviation_m', b'_plan_deviation_m'] + _WhichOneofReturnType__position_polling_frequency_hz: _TypeAlias = _typing.Literal['position_polling_frequency_hz'] + _WhichOneofArgType__position_polling_frequency_hz: _TypeAlias = _typing.Literal['_position_polling_frequency_hz', b'_position_polling_frequency_hz'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_angular_degs_per_sec', b'_angular_degs_per_sec']) -> typing.Literal['angular_degs_per_sec'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__angular_degs_per_sec) -> _WhichOneofReturnType__angular_degs_per_sec | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_linear_m_per_sec', b'_linear_m_per_sec']) -> typing.Literal['linear_m_per_sec'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__linear_m_per_sec) -> _WhichOneofReturnType__linear_m_per_sec | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_obstacle_polling_frequency_hz', b'_obstacle_polling_frequency_hz']) -> typing.Literal['obstacle_polling_frequency_hz'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__obstacle_polling_frequency_hz) -> _WhichOneofReturnType__obstacle_polling_frequency_hz | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_plan_deviation_m', b'_plan_deviation_m']) -> typing.Literal['plan_deviation_m'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__plan_deviation_m) -> _WhichOneofReturnType__plan_deviation_m | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_position_polling_frequency_hz', b'_position_polling_frequency_hz']) -> typing.Literal['position_polling_frequency_hz'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__position_polling_frequency_hz) -> _WhichOneofReturnType__position_polling_frequency_hz | None: ... -global___MotionConfiguration = MotionConfiguration +Global___MotionConfiguration: _TypeAlias = MotionConfiguration -@typing.final -class MoveOnGlobeRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - DESTINATION_FIELD_NUMBER: builtins.int - HEADING_FIELD_NUMBER: builtins.int - COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: builtins.int - MOVEMENT_SENSOR_NAME_DEPRECATED_FIELD_NUMBER: builtins.int - OBSTACLES_FIELD_NUMBER: builtins.int - MOTION_CONFIGURATION_FIELD_NUMBER: builtins.int - BOUNDING_REGIONS_FIELD_NUMBER: builtins.int - COMPONENT_NAME_FIELD_NUMBER: builtins.int - MOVEMENT_SENSOR_NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class MoveOnGlobeRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + DESTINATION_FIELD_NUMBER: _builtins.int + HEADING_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: _builtins.int + MOVEMENT_SENSOR_NAME_DEPRECATED_FIELD_NUMBER: _builtins.int + OBSTACLES_FIELD_NUMBER: _builtins.int + MOTION_CONFIGURATION_FIELD_NUMBER: _builtins.int + BOUNDING_REGIONS_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_FIELD_NUMBER: _builtins.int + MOVEMENT_SENSOR_NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of the motion service' - heading: builtins.float + heading: _builtins.float 'Optional compass heading to achieve at the destination, in degrees [0-360)' - component_name: builtins.str + component_name: _builtins.str 'Component on the robot to move to the specified destination' - movement_sensor_name: builtins.str + movement_sensor_name: _builtins.str 'Name of the movement sensor which will be used to check robot location' - @property - def destination(self) -> common.v1.common_pb2.GeoPoint: + @_builtins.property + def destination(self) -> _common_pb2.GeoPoint: """Destination, encoded as a GeoPoint""" - @property - def component_name_deprecated(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def component_name_deprecated(self) -> _common_pb2.ResourceName: """Deprecated, use component_name field.""" - @property - def movement_sensor_name_deprecated(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def movement_sensor_name_deprecated(self) -> _common_pb2.ResourceName: """Deprecated, use movement_sensor_name field.""" - @property - def obstacles(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.GeoGeometry]: + @_builtins.property + def obstacles(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.GeoGeometry]: """Obstacles to be considered for motion planning""" - @property - def motion_configuration(self) -> global___MotionConfiguration: + @_builtins.property + def motion_configuration(self) -> Global___MotionConfiguration: """Optional set of motion configuration options""" - @property - def bounding_regions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.GeoGeometry]: + @_builtins.property + def bounding_regions(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.GeoGeometry]: """Set of obstacles which the robot must remain within while navigating""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., destination: common.v1.common_pb2.GeoPoint | None=..., heading: builtins.float | None=..., component_name_deprecated: common.v1.common_pb2.ResourceName | None=..., movement_sensor_name_deprecated: common.v1.common_pb2.ResourceName | None=..., obstacles: collections.abc.Iterable[common.v1.common_pb2.GeoGeometry] | None=..., motion_configuration: global___MotionConfiguration | None=..., bounding_regions: collections.abc.Iterable[common.v1.common_pb2.GeoGeometry] | None=..., component_name: builtins.str=..., movement_sensor_name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., destination: _common_pb2.GeoPoint | None=..., heading: _builtins.float | None=..., component_name_deprecated: _common_pb2.ResourceName | None=..., movement_sensor_name_deprecated: _common_pb2.ResourceName | None=..., obstacles: _abc.Iterable[_common_pb2.GeoGeometry] | None=..., motion_configuration: Global___MotionConfiguration | None=..., bounding_regions: _abc.Iterable[_common_pb2.GeoGeometry] | None=..., component_name: _builtins.str=..., movement_sensor_name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_heading', b'_heading', '_motion_configuration', b'_motion_configuration', 'component_name_deprecated', b'component_name_deprecated', 'destination', b'destination', 'extra', b'extra', 'heading', b'heading', 'motion_configuration', b'motion_configuration', 'movement_sensor_name_deprecated', b'movement_sensor_name_deprecated'] - def HasField(self, field_name: typing.Literal['_heading', b'_heading', '_motion_configuration', b'_motion_configuration', 'component_name_deprecated', b'component_name_deprecated', 'destination', b'destination', 'extra', b'extra', 'heading', b'heading', 'motion_configuration', b'motion_configuration', 'movement_sensor_name_deprecated', b'movement_sensor_name_deprecated']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_heading', b'_heading', '_motion_configuration', b'_motion_configuration', 'bounding_regions', b'bounding_regions', 'component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'destination', b'destination', 'extra', b'extra', 'heading', b'heading', 'motion_configuration', b'motion_configuration', 'movement_sensor_name', b'movement_sensor_name', 'movement_sensor_name_deprecated', b'movement_sensor_name_deprecated', 'name', b'name', 'obstacles', b'obstacles'] - def ClearField(self, field_name: typing.Literal['_heading', b'_heading', '_motion_configuration', b'_motion_configuration', 'bounding_regions', b'bounding_regions', 'component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'destination', b'destination', 'extra', b'extra', 'heading', b'heading', 'motion_configuration', b'motion_configuration', 'movement_sensor_name', b'movement_sensor_name', 'movement_sensor_name_deprecated', b'movement_sensor_name_deprecated', 'name', b'name', 'obstacles', b'obstacles']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__heading: _TypeAlias = _typing.Literal['heading'] + _WhichOneofArgType__heading: _TypeAlias = _typing.Literal['_heading', b'_heading'] + _WhichOneofReturnType__motion_configuration: _TypeAlias = _typing.Literal['motion_configuration'] + _WhichOneofArgType__motion_configuration: _TypeAlias = _typing.Literal['_motion_configuration', b'_motion_configuration'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_heading', b'_heading']) -> typing.Literal['heading'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__heading) -> _WhichOneofReturnType__heading | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_motion_configuration', b'_motion_configuration']) -> typing.Literal['motion_configuration'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__motion_configuration) -> _WhichOneofReturnType__motion_configuration | None: ... -global___MoveOnGlobeRequest = MoveOnGlobeRequest +Global___MoveOnGlobeRequest: _TypeAlias = MoveOnGlobeRequest -@typing.final -class MoveOnGlobeResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - EXECUTION_ID_FIELD_NUMBER: builtins.int - execution_id: builtins.str +@_typing.final +class MoveOnGlobeResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + EXECUTION_ID_FIELD_NUMBER: _builtins.int + execution_id: _builtins.str 'The unique ID which identifies the execution.\n Multiple plans will share the same execution_id if they were\n generated due to replanning.\n ' - def __init__(self, *, execution_id: builtins.str=...) -> None: + def __init__(self, *, execution_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['execution_id', b'execution_id'] - def ClearField(self, field_name: typing.Literal['execution_id', b'execution_id']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___MoveOnGlobeResponse = MoveOnGlobeResponse +Global___MoveOnGlobeResponse: _TypeAlias = MoveOnGlobeResponse -@typing.final -class GetPoseRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: builtins.int - DESTINATION_FRAME_FIELD_NUMBER: builtins.int - SUPPLEMENTAL_TRANSFORMS_FIELD_NUMBER: builtins.int - COMPONENT_NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - destination_frame: builtins.str +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class GetPoseRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: _builtins.int + DESTINATION_FRAME_FIELD_NUMBER: _builtins.int + SUPPLEMENTAL_TRANSFORMS_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + destination_frame: _builtins.str 'the reference frame in which the component\'s pose\n should be provided, if unset this defaults\n to the "world" reference frame\n ' - component_name: builtins.str + component_name: _builtins.str 'the component whose pose is being requested' - @property - def component_name_deprecated(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def component_name_deprecated(self) -> _common_pb2.ResourceName: """Deprecated, use component_name field.""" - @property - def supplemental_transforms(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.Transform]: + @_builtins.property + def supplemental_transforms(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.Transform]: """pose information on any additional reference frames that are needed to compute the component's pose """ - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., component_name_deprecated: common.v1.common_pb2.ResourceName | None=..., destination_frame: builtins.str=..., supplemental_transforms: collections.abc.Iterable[common.v1.common_pb2.Transform] | None=..., component_name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., component_name_deprecated: _common_pb2.ResourceName | None=..., destination_frame: _builtins.str=..., supplemental_transforms: _abc.Iterable[_common_pb2.Transform] | None=..., component_name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['component_name_deprecated', b'component_name_deprecated', 'extra', b'extra'] - def HasField(self, field_name: typing.Literal['component_name_deprecated', b'component_name_deprecated', 'extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'destination_frame', b'destination_frame', 'extra', b'extra', 'name', b'name', 'supplemental_transforms', b'supplemental_transforms'] - def ClearField(self, field_name: typing.Literal['component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'destination_frame', b'destination_frame', 'extra', b'extra', 'name', b'name', 'supplemental_transforms', b'supplemental_transforms']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPoseRequest = GetPoseRequest +Global___GetPoseRequest: _TypeAlias = GetPoseRequest -@typing.final -class GetPoseResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POSE_FIELD_NUMBER: builtins.int +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class GetPoseResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POSE_FIELD_NUMBER: _builtins.int - @property - def pose(self) -> common.v1.common_pb2.PoseInFrame: + @_builtins.property + def pose(self) -> _common_pb2.PoseInFrame: ... - def __init__(self, *, pose: common.v1.common_pb2.PoseInFrame | None=...) -> None: + def __init__(self, *, pose: _common_pb2.PoseInFrame | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['pose', b'pose'] - def HasField(self, field_name: typing.Literal['pose', b'pose']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['pose', b'pose'] - def ClearField(self, field_name: typing.Literal['pose', b'pose']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPoseResponse = GetPoseResponse +Global___GetPoseResponse: _TypeAlias = GetPoseResponse -@typing.final -class StopPlanRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: builtins.int - COMPONENT_NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class StopPlanRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'The name of the motion service' - component_name: builtins.str + component_name: _builtins.str 'The component of the currently executing plan to stop' - @property - def component_name_deprecated(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def component_name_deprecated(self) -> _common_pb2.ResourceName: """Deprecated, use component_name field.""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., component_name_deprecated: common.v1.common_pb2.ResourceName | None=..., component_name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., component_name_deprecated: _common_pb2.ResourceName | None=..., component_name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['component_name_deprecated', b'component_name_deprecated', 'extra', b'extra'] - def HasField(self, field_name: typing.Literal['component_name_deprecated', b'component_name_deprecated', 'extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StopPlanRequest = StopPlanRequest +Global___StopPlanRequest: _TypeAlias = StopPlanRequest -@typing.final -class StopPlanResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class StopPlanResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___StopPlanResponse = StopPlanResponse +Global___StopPlanResponse: _TypeAlias = StopPlanResponse -@typing.final -class ListPlanStatusesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - ONLY_ACTIVE_PLANS_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class ListPlanStatusesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + ONLY_ACTIVE_PLANS_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'The name of the motion service' - only_active_plans: builtins.bool + only_active_plans: _builtins.bool 'If supplied, the response will filter the\n plan results for the supplied state\n ' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., only_active_plans: builtins.bool=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., only_active_plans: _builtins.bool=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'only_active_plans', b'only_active_plans'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'only_active_plans', b'only_active_plans']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListPlanStatusesRequest = ListPlanStatusesRequest +Global___ListPlanStatusesRequest: _TypeAlias = ListPlanStatusesRequest -@typing.final -class ListPlanStatusesResponse(google.protobuf.message.Message): +@_typing.final +class ListPlanStatusesResponse(_message.Message): """Status of all executed / executing plan statuses with associated IDs within the 24 hour TTL""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PLAN_STATUSES_WITH_IDS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + PLAN_STATUSES_WITH_IDS_FIELD_NUMBER: _builtins.int - @property - def plan_statuses_with_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PlanStatusWithID]: + @_builtins.property + def plan_statuses_with_ids(self) -> _containers.RepeatedCompositeFieldContainer[Global___PlanStatusWithID]: """List of last known statuses with the associated IDs of all plans within the TTL ordered by timestamp in ascending order """ - def __init__(self, *, plan_statuses_with_ids: collections.abc.Iterable[global___PlanStatusWithID] | None=...) -> None: + def __init__(self, *, plan_statuses_with_ids: _abc.Iterable[Global___PlanStatusWithID] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['plan_statuses_with_ids', b'plan_statuses_with_ids'] - def ClearField(self, field_name: typing.Literal['plan_statuses_with_ids', b'plan_statuses_with_ids']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListPlanStatusesResponse = ListPlanStatusesResponse +Global___ListPlanStatusesResponse: _TypeAlias = ListPlanStatusesResponse -@typing.final -class GetPlanRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: builtins.int - LAST_PLAN_ONLY_FIELD_NUMBER: builtins.int - EXECUTION_ID_FIELD_NUMBER: builtins.int - COMPONENT_NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetPlanRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: _builtins.int + LAST_PLAN_ONLY_FIELD_NUMBER: _builtins.int + EXECUTION_ID_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'The name of the motion service' - last_plan_only: builtins.bool + last_plan_only: _builtins.bool 'If supplied, the response will only return\n the the last plan for the component / execution\n ' - execution_id: builtins.str + execution_id: _builtins.str 'If you want to know about the plans of a previous execution' - component_name: builtins.str + component_name: _builtins.str 'The name of the component which was requested to be moved.' - @property - def component_name_deprecated(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def component_name_deprecated(self) -> _common_pb2.ResourceName: """Deprecated, use component_name field.""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., component_name_deprecated: common.v1.common_pb2.ResourceName | None=..., last_plan_only: builtins.bool=..., execution_id: builtins.str | None=..., component_name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., component_name_deprecated: _common_pb2.ResourceName | None=..., last_plan_only: _builtins.bool=..., execution_id: _builtins.str | None=..., component_name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_execution_id', b'_execution_id', 'component_name_deprecated', b'component_name_deprecated', 'execution_id', b'execution_id', 'extra', b'extra'] - def HasField(self, field_name: typing.Literal['_execution_id', b'_execution_id', 'component_name_deprecated', b'component_name_deprecated', 'execution_id', b'execution_id', 'extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_execution_id', b'_execution_id', 'component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'execution_id', b'execution_id', 'extra', b'extra', 'last_plan_only', b'last_plan_only', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['_execution_id', b'_execution_id', 'component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'execution_id', b'execution_id', 'extra', b'extra', 'last_plan_only', b'last_plan_only', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__execution_id: _TypeAlias = _typing.Literal['execution_id'] + _WhichOneofArgType__execution_id: _TypeAlias = _typing.Literal['_execution_id', b'_execution_id'] - def WhichOneof(self, oneof_group: typing.Literal['_execution_id', b'_execution_id']) -> typing.Literal['execution_id'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__execution_id) -> _WhichOneofReturnType__execution_id | None: ... -global___GetPlanRequest = GetPlanRequest +Global___GetPlanRequest: _TypeAlias = GetPlanRequest -@typing.final -class GetPlanResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CURRENT_PLAN_WITH_STATUS_FIELD_NUMBER: builtins.int - REPLAN_HISTORY_FIELD_NUMBER: builtins.int +@_typing.final +class GetPlanResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CURRENT_PLAN_WITH_STATUS_FIELD_NUMBER: _builtins.int + REPLAN_HISTORY_FIELD_NUMBER: _builtins.int - @property - def current_plan_with_status(self) -> global___PlanWithStatus: + @_builtins.property + def current_plan_with_status(self) -> Global___PlanWithStatus: """The current plan and status that matches the request query""" - @property - def replan_history(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PlanWithStatus]: + @_builtins.property + def replan_history(self) -> _containers.RepeatedCompositeFieldContainer[Global___PlanWithStatus]: """Returns the history of all previous plans that were generated in ascending order. This field will be empty if the motion service did not need to re-plan. """ - def __init__(self, *, current_plan_with_status: global___PlanWithStatus | None=..., replan_history: collections.abc.Iterable[global___PlanWithStatus] | None=...) -> None: + def __init__(self, *, current_plan_with_status: Global___PlanWithStatus | None=..., replan_history: _abc.Iterable[Global___PlanWithStatus] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['current_plan_with_status', b'current_plan_with_status'] - def HasField(self, field_name: typing.Literal['current_plan_with_status', b'current_plan_with_status']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['current_plan_with_status', b'current_plan_with_status', 'replan_history', b'replan_history'] - def ClearField(self, field_name: typing.Literal['current_plan_with_status', b'current_plan_with_status', 'replan_history', b'replan_history']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPlanResponse = GetPlanResponse +Global___GetPlanResponse: _TypeAlias = GetPlanResponse -@typing.final -class Constraints(google.protobuf.message.Message): +@_typing.final +class Constraints(_message.Message): """Constraints specifies all enumerated constraints to be passed to Viam's motion planning, along with any optional parameters""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LINEAR_CONSTRAINT_FIELD_NUMBER: builtins.int - ORIENTATION_CONSTRAINT_FIELD_NUMBER: builtins.int - COLLISION_SPECIFICATION_FIELD_NUMBER: builtins.int - PSEUDOLINEAR_CONSTRAINT_FIELD_NUMBER: builtins.int - - @property - def linear_constraint(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___LinearConstraint]: + DESCRIPTOR: _descriptor.Descriptor + LINEAR_CONSTRAINT_FIELD_NUMBER: _builtins.int + ORIENTATION_CONSTRAINT_FIELD_NUMBER: _builtins.int + COLLISION_SPECIFICATION_FIELD_NUMBER: _builtins.int + PSEUDOLINEAR_CONSTRAINT_FIELD_NUMBER: _builtins.int + + @_builtins.property + def linear_constraint(self) -> _containers.RepeatedCompositeFieldContainer[Global___LinearConstraint]: """Typed message for a specific constraint""" - @property - def orientation_constraint(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___OrientationConstraint]: + @_builtins.property + def orientation_constraint(self) -> _containers.RepeatedCompositeFieldContainer[Global___OrientationConstraint]: ... - @property - def collision_specification(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CollisionSpecification]: + @_builtins.property + def collision_specification(self) -> _containers.RepeatedCompositeFieldContainer[Global___CollisionSpecification]: ... - @property - def pseudolinear_constraint(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PseudolinearConstraint]: + @_builtins.property + def pseudolinear_constraint(self) -> _containers.RepeatedCompositeFieldContainer[Global___PseudolinearConstraint]: """Arc constraint, Time constraint, and others will be added here when they are supported""" - def __init__(self, *, linear_constraint: collections.abc.Iterable[global___LinearConstraint] | None=..., orientation_constraint: collections.abc.Iterable[global___OrientationConstraint] | None=..., collision_specification: collections.abc.Iterable[global___CollisionSpecification] | None=..., pseudolinear_constraint: collections.abc.Iterable[global___PseudolinearConstraint] | None=...) -> None: + def __init__(self, *, linear_constraint: _abc.Iterable[Global___LinearConstraint] | None=..., orientation_constraint: _abc.Iterable[Global___OrientationConstraint] | None=..., collision_specification: _abc.Iterable[Global___CollisionSpecification] | None=..., pseudolinear_constraint: _abc.Iterable[Global___PseudolinearConstraint] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['collision_specification', b'collision_specification', 'linear_constraint', b'linear_constraint', 'orientation_constraint', b'orientation_constraint', 'pseudolinear_constraint', b'pseudolinear_constraint'] - def ClearField(self, field_name: typing.Literal['collision_specification', b'collision_specification', 'linear_constraint', b'linear_constraint', 'orientation_constraint', b'orientation_constraint', 'pseudolinear_constraint', b'pseudolinear_constraint']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Constraints = Constraints +Global___Constraints: _TypeAlias = Constraints -@typing.final -class LinearConstraint(google.protobuf.message.Message): +@_typing.final +class LinearConstraint(_message.Message): """LinearConstraint specifies that the component being moved should move linearly relative to its goal. It does not constrain the motion of components other than the `component_name` specified in motion.Move """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LINE_TOLERANCE_MM_FIELD_NUMBER: builtins.int - ORIENTATION_TOLERANCE_DEGS_FIELD_NUMBER: builtins.int - line_tolerance_mm: builtins.float + DESCRIPTOR: _descriptor.Descriptor + LINE_TOLERANCE_MM_FIELD_NUMBER: _builtins.int + ORIENTATION_TOLERANCE_DEGS_FIELD_NUMBER: _builtins.int + line_tolerance_mm: _builtins.float 'Max linear deviation from straight-line between start and goal, in mm.' - orientation_tolerance_degs: builtins.float + orientation_tolerance_degs: _builtins.float 'Max allowable orientation deviation, in degrees, while on the shortest path between start / goal states' - def __init__(self, *, line_tolerance_mm: builtins.float | None=..., orientation_tolerance_degs: builtins.float | None=...) -> None: + def __init__(self, *, line_tolerance_mm: _builtins.float | None=..., orientation_tolerance_degs: _builtins.float | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_line_tolerance_mm', b'_line_tolerance_mm', '_orientation_tolerance_degs', b'_orientation_tolerance_degs', 'line_tolerance_mm', b'line_tolerance_mm', 'orientation_tolerance_degs', b'orientation_tolerance_degs'] - def HasField(self, field_name: typing.Literal['_line_tolerance_mm', b'_line_tolerance_mm', '_orientation_tolerance_degs', b'_orientation_tolerance_degs', 'line_tolerance_mm', b'line_tolerance_mm', 'orientation_tolerance_degs', b'orientation_tolerance_degs']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_line_tolerance_mm', b'_line_tolerance_mm', '_orientation_tolerance_degs', b'_orientation_tolerance_degs', 'line_tolerance_mm', b'line_tolerance_mm', 'orientation_tolerance_degs', b'orientation_tolerance_degs'] - def ClearField(self, field_name: typing.Literal['_line_tolerance_mm', b'_line_tolerance_mm', '_orientation_tolerance_degs', b'_orientation_tolerance_degs', 'line_tolerance_mm', b'line_tolerance_mm', 'orientation_tolerance_degs', b'orientation_tolerance_degs']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__line_tolerance_mm: _TypeAlias = _typing.Literal['line_tolerance_mm'] + _WhichOneofArgType__line_tolerance_mm: _TypeAlias = _typing.Literal['_line_tolerance_mm', b'_line_tolerance_mm'] + _WhichOneofReturnType__orientation_tolerance_degs: _TypeAlias = _typing.Literal['orientation_tolerance_degs'] + _WhichOneofArgType__orientation_tolerance_degs: _TypeAlias = _typing.Literal['_orientation_tolerance_degs', b'_orientation_tolerance_degs'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_line_tolerance_mm', b'_line_tolerance_mm']) -> typing.Literal['line_tolerance_mm'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__line_tolerance_mm) -> _WhichOneofReturnType__line_tolerance_mm | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_orientation_tolerance_degs', b'_orientation_tolerance_degs']) -> typing.Literal['orientation_tolerance_degs'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__orientation_tolerance_degs) -> _WhichOneofReturnType__orientation_tolerance_degs | None: ... -global___LinearConstraint = LinearConstraint +Global___LinearConstraint: _TypeAlias = LinearConstraint -@typing.final -class PseudolinearConstraint(google.protobuf.message.Message): +@_typing.final +class PseudolinearConstraint(_message.Message): """PseudolinearConstraint specifies that the component being moved should not deviate from the straight-line path to their goal by more than a factor proportional to the distance from start to goal. For example, if a component is moving 100mm, then a LineToleranceFactor of 1.0 means that the component will remain within a 100mm radius of the straight-line start-goal path. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LINE_TOLERANCE_FACTOR_FIELD_NUMBER: builtins.int - ORIENTATION_TOLERANCE_FACTOR_FIELD_NUMBER: builtins.int - line_tolerance_factor: builtins.float - orientation_tolerance_factor: builtins.float + DESCRIPTOR: _descriptor.Descriptor + LINE_TOLERANCE_FACTOR_FIELD_NUMBER: _builtins.int + ORIENTATION_TOLERANCE_FACTOR_FIELD_NUMBER: _builtins.int + line_tolerance_factor: _builtins.float + orientation_tolerance_factor: _builtins.float - def __init__(self, *, line_tolerance_factor: builtins.float | None=..., orientation_tolerance_factor: builtins.float | None=...) -> None: + def __init__(self, *, line_tolerance_factor: _builtins.float | None=..., orientation_tolerance_factor: _builtins.float | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_line_tolerance_factor', b'_line_tolerance_factor', '_orientation_tolerance_factor', b'_orientation_tolerance_factor', 'line_tolerance_factor', b'line_tolerance_factor', 'orientation_tolerance_factor', b'orientation_tolerance_factor'] - def HasField(self, field_name: typing.Literal['_line_tolerance_factor', b'_line_tolerance_factor', '_orientation_tolerance_factor', b'_orientation_tolerance_factor', 'line_tolerance_factor', b'line_tolerance_factor', 'orientation_tolerance_factor', b'orientation_tolerance_factor']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_line_tolerance_factor', b'_line_tolerance_factor', '_orientation_tolerance_factor', b'_orientation_tolerance_factor', 'line_tolerance_factor', b'line_tolerance_factor', 'orientation_tolerance_factor', b'orientation_tolerance_factor'] - def ClearField(self, field_name: typing.Literal['_line_tolerance_factor', b'_line_tolerance_factor', '_orientation_tolerance_factor', b'_orientation_tolerance_factor', 'line_tolerance_factor', b'line_tolerance_factor', 'orientation_tolerance_factor', b'orientation_tolerance_factor']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__line_tolerance_factor: _TypeAlias = _typing.Literal['line_tolerance_factor'] + _WhichOneofArgType__line_tolerance_factor: _TypeAlias = _typing.Literal['_line_tolerance_factor', b'_line_tolerance_factor'] + _WhichOneofReturnType__orientation_tolerance_factor: _TypeAlias = _typing.Literal['orientation_tolerance_factor'] + _WhichOneofArgType__orientation_tolerance_factor: _TypeAlias = _typing.Literal['_orientation_tolerance_factor', b'_orientation_tolerance_factor'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_line_tolerance_factor', b'_line_tolerance_factor']) -> typing.Literal['line_tolerance_factor'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__line_tolerance_factor) -> _WhichOneofReturnType__line_tolerance_factor | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_orientation_tolerance_factor', b'_orientation_tolerance_factor']) -> typing.Literal['orientation_tolerance_factor'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__orientation_tolerance_factor) -> _WhichOneofReturnType__orientation_tolerance_factor | None: ... -global___PseudolinearConstraint = PseudolinearConstraint +Global___PseudolinearConstraint: _TypeAlias = PseudolinearConstraint -@typing.final -class OrientationConstraint(google.protobuf.message.Message): +@_typing.final +class OrientationConstraint(_message.Message): """OrientationConstraint specifies that the component being moved will not deviate its orientation beyond some threshold relative to the goal. It does not constrain the motion of components other than the `component_name` specified in motion.Move """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ORIENTATION_TOLERANCE_DEGS_FIELD_NUMBER: builtins.int - orientation_tolerance_degs: builtins.float + DESCRIPTOR: _descriptor.Descriptor + ORIENTATION_TOLERANCE_DEGS_FIELD_NUMBER: _builtins.int + orientation_tolerance_degs: _builtins.float 'Max allowable orientation deviation, in degrees, while on the shortest path between start / goal states' - def __init__(self, *, orientation_tolerance_degs: builtins.float | None=...) -> None: + def __init__(self, *, orientation_tolerance_degs: _builtins.float | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_orientation_tolerance_degs', b'_orientation_tolerance_degs', 'orientation_tolerance_degs', b'orientation_tolerance_degs'] - def HasField(self, field_name: typing.Literal['_orientation_tolerance_degs', b'_orientation_tolerance_degs', 'orientation_tolerance_degs', b'orientation_tolerance_degs']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_orientation_tolerance_degs', b'_orientation_tolerance_degs', 'orientation_tolerance_degs', b'orientation_tolerance_degs'] - def ClearField(self, field_name: typing.Literal['_orientation_tolerance_degs', b'_orientation_tolerance_degs', 'orientation_tolerance_degs', b'orientation_tolerance_degs']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__orientation_tolerance_degs: _TypeAlias = _typing.Literal['orientation_tolerance_degs'] + _WhichOneofArgType__orientation_tolerance_degs: _TypeAlias = _typing.Literal['_orientation_tolerance_degs', b'_orientation_tolerance_degs'] - def WhichOneof(self, oneof_group: typing.Literal['_orientation_tolerance_degs', b'_orientation_tolerance_degs']) -> typing.Literal['orientation_tolerance_degs'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__orientation_tolerance_degs) -> _WhichOneofReturnType__orientation_tolerance_degs | None: ... -global___OrientationConstraint = OrientationConstraint +Global___OrientationConstraint: _TypeAlias = OrientationConstraint -@typing.final -class CollisionSpecification(google.protobuf.message.Message): +@_typing.final +class CollisionSpecification(_message.Message): """CollisionSpecification is used to selectively apply obstacle avoidance to specific parts of the robot""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class AllowedFrameCollisions(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - FRAME1_FIELD_NUMBER: builtins.int - FRAME2_FIELD_NUMBER: builtins.int - frame1: builtins.str - frame2: builtins.str + @_typing.final + class AllowedFrameCollisions(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + FRAME1_FIELD_NUMBER: _builtins.int + FRAME2_FIELD_NUMBER: _builtins.int + frame1: _builtins.str + frame2: _builtins.str - def __init__(self, *, frame1: builtins.str=..., frame2: builtins.str=...) -> None: + def __init__(self, *, frame1: _builtins.str=..., frame2: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['frame1', b'frame1', 'frame2', b'frame2'] - def ClearField(self, field_name: typing.Literal['frame1', b'frame1', 'frame2', b'frame2']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - ALLOWS_FIELD_NUMBER: builtins.int + ALLOWS_FIELD_NUMBER: _builtins.int - @property - def allows(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CollisionSpecification.AllowedFrameCollisions]: + @_builtins.property + def allows(self) -> _containers.RepeatedCompositeFieldContainer[Global___CollisionSpecification.AllowedFrameCollisions]: """Pairs of frame which should be allowed to collide with one another""" - def __init__(self, *, allows: collections.abc.Iterable[global___CollisionSpecification.AllowedFrameCollisions] | None=...) -> None: + def __init__(self, *, allows: _abc.Iterable[Global___CollisionSpecification.AllowedFrameCollisions] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['allows', b'allows'] - def ClearField(self, field_name: typing.Literal['allows', b'allows']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CollisionSpecification = CollisionSpecification +Global___CollisionSpecification: _TypeAlias = CollisionSpecification -@typing.final -class PlanWithStatus(google.protobuf.message.Message): +@_typing.final +class PlanWithStatus(_message.Message): """Describes a plan, its current status & all status changes that have occured previously on that plan """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PLAN_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - STATUS_HISTORY_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + PLAN_FIELD_NUMBER: _builtins.int + STATUS_FIELD_NUMBER: _builtins.int + STATUS_HISTORY_FIELD_NUMBER: _builtins.int - @property - def plan(self) -> global___Plan: + @_builtins.property + def plan(self) -> Global___Plan: """The plan""" - @property - def status(self) -> global___PlanStatus: + @_builtins.property + def status(self) -> Global___PlanStatus: """The current status of the plan""" - @property - def status_history(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PlanStatus]: + @_builtins.property + def status_history(self) -> _containers.RepeatedCompositeFieldContainer[Global___PlanStatus]: """The prior status changes that have happened during plan execution""" - def __init__(self, *, plan: global___Plan | None=..., status: global___PlanStatus | None=..., status_history: collections.abc.Iterable[global___PlanStatus] | None=...) -> None: + def __init__(self, *, plan: Global___Plan | None=..., status: Global___PlanStatus | None=..., status_history: _abc.Iterable[Global___PlanStatus] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['plan', b'plan', 'status', b'status'] - def HasField(self, field_name: typing.Literal['plan', b'plan', 'status', b'status']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['plan', b'plan', 'status', b'status', 'status_history', b'status_history'] - def ClearField(self, field_name: typing.Literal['plan', b'plan', 'status', b'status', 'status_history', b'status_history']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PlanWithStatus = PlanWithStatus +Global___PlanWithStatus: _TypeAlias = PlanWithStatus -@typing.final -class PlanStatusWithID(google.protobuf.message.Message): +@_typing.final +class PlanStatusWithID(_message.Message): """PlanStatusWithID describes the state of a given plan at a point in time plus the plan_id, component_name and execution_id the status is associated with """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PLAN_ID_FIELD_NUMBER: builtins.int - COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: builtins.int - EXECUTION_ID_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - COMPONENT_NAME_FIELD_NUMBER: builtins.int - plan_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + PLAN_ID_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: _builtins.int + EXECUTION_ID_FIELD_NUMBER: _builtins.int + STATUS_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_FIELD_NUMBER: _builtins.int + plan_id: _builtins.str 'The unique ID of the plan' - execution_id: builtins.str + execution_id: _builtins.str 'The unique ID which identifies the plan execution.\n Multiple plans will share the same execution_id if they were\n generated due to replanning.\n ' - component_name: builtins.str + component_name: _builtins.str 'The component to be moved.\n Used for tracking & stopping.\n NOTE: A plan may move more components than just the\n component_name.\n ' - @property - def component_name_deprecated(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def component_name_deprecated(self) -> _common_pb2.ResourceName: """Deprecated, use component_name field.""" - @property - def status(self) -> global___PlanStatus: + @_builtins.property + def status(self) -> Global___PlanStatus: ... - def __init__(self, *, plan_id: builtins.str=..., component_name_deprecated: common.v1.common_pb2.ResourceName | None=..., execution_id: builtins.str=..., status: global___PlanStatus | None=..., component_name: builtins.str=...) -> None: + def __init__(self, *, plan_id: _builtins.str=..., component_name_deprecated: _common_pb2.ResourceName | None=..., execution_id: _builtins.str=..., status: Global___PlanStatus | None=..., component_name: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['component_name_deprecated', b'component_name_deprecated', 'status', b'status'] - def HasField(self, field_name: typing.Literal['component_name_deprecated', b'component_name_deprecated', 'status', b'status']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'execution_id', b'execution_id', 'plan_id', b'plan_id', 'status', b'status'] - def ClearField(self, field_name: typing.Literal['component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'execution_id', b'execution_id', 'plan_id', b'plan_id', 'status', b'status']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PlanStatusWithID = PlanStatusWithID +Global___PlanStatusWithID: _TypeAlias = PlanStatusWithID -@typing.final -class PlanStatus(google.protobuf.message.Message): +@_typing.final +class PlanStatus(_message.Message): """Plan status describes the state of a given plan at a point in time """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - STATE_FIELD_NUMBER: builtins.int - TIMESTAMP_FIELD_NUMBER: builtins.int - REASON_FIELD_NUMBER: builtins.int - state: global___PlanState.ValueType + DESCRIPTOR: _descriptor.Descriptor + STATE_FIELD_NUMBER: _builtins.int + TIMESTAMP_FIELD_NUMBER: _builtins.int + REASON_FIELD_NUMBER: _builtins.int + state: Global___PlanState.ValueType 'The state of the plan execution' - reason: builtins.str + reason: _builtins.str 'The reason for the state change. If motion plan failed\n this will return the error message.\n If motion needed to re-plan, this will return\n the re-plan reason.\n ' - @property - def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def timestamp(self) -> _timestamp_pb2.Timestamp: """The time the executing plan transtioned to the state""" - def __init__(self, *, state: global___PlanState.ValueType=..., timestamp: google.protobuf.timestamp_pb2.Timestamp | None=..., reason: builtins.str | None=...) -> None: + def __init__(self, *, state: Global___PlanState.ValueType=..., timestamp: _timestamp_pb2.Timestamp | None=..., reason: _builtins.str | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_reason', b'_reason', 'reason', b'reason', 'timestamp', b'timestamp'] - def HasField(self, field_name: typing.Literal['_reason', b'_reason', 'reason', b'reason', 'timestamp', b'timestamp']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_reason', b'_reason', 'reason', b'reason', 'state', b'state', 'timestamp', b'timestamp'] - def ClearField(self, field_name: typing.Literal['_reason', b'_reason', 'reason', b'reason', 'state', b'state', 'timestamp', b'timestamp']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__reason: _TypeAlias = _typing.Literal['reason'] + _WhichOneofArgType__reason: _TypeAlias = _typing.Literal['_reason', b'_reason'] - def WhichOneof(self, oneof_group: typing.Literal['_reason', b'_reason']) -> typing.Literal['reason'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__reason) -> _WhichOneofReturnType__reason | None: ... -global___PlanStatus = PlanStatus +Global___PlanStatus: _TypeAlias = PlanStatus -@typing.final -class Plan(google.protobuf.message.Message): +@_typing.final +class Plan(_message.Message): """A plan describes a motion plan""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: builtins.int - EXECUTION_ID_FIELD_NUMBER: builtins.int - STEPS_FIELD_NUMBER: builtins.int - COMPONENT_NAME_FIELD_NUMBER: builtins.int - id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_DEPRECATED_FIELD_NUMBER: _builtins.int + EXECUTION_ID_FIELD_NUMBER: _builtins.int + STEPS_FIELD_NUMBER: _builtins.int + COMPONENT_NAME_FIELD_NUMBER: _builtins.int + id: _builtins.str "The plan's unique ID" - execution_id: builtins.str + execution_id: _builtins.str 'The unique ID which identifies the execution.\n Multiple plans will share the same execution_id if they were\n generated due to replanning\n ' - component_name: builtins.str + component_name: _builtins.str 'The component requested to be moved.\n Used for tracking & stopping.\n NOTE: A plan may move more components than just the\n root component.\n ' - @property - def component_name_deprecated(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def component_name_deprecated(self) -> _common_pb2.ResourceName: """Deprecated, use component_name field.""" - @property - def steps(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PlanStep]: + @_builtins.property + def steps(self) -> _containers.RepeatedCompositeFieldContainer[Global___PlanStep]: """The steps of a plan is an ordered list of plan steps""" - def __init__(self, *, id: builtins.str=..., component_name_deprecated: common.v1.common_pb2.ResourceName | None=..., execution_id: builtins.str=..., steps: collections.abc.Iterable[global___PlanStep] | None=..., component_name: builtins.str=...) -> None: + def __init__(self, *, id: _builtins.str=..., component_name_deprecated: _common_pb2.ResourceName | None=..., execution_id: _builtins.str=..., steps: _abc.Iterable[Global___PlanStep] | None=..., component_name: _builtins.str=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['component_name_deprecated', b'component_name_deprecated'] - def HasField(self, field_name: typing.Literal['component_name_deprecated', b'component_name_deprecated']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'execution_id', b'execution_id', 'id', b'id', 'steps', b'steps'] - def ClearField(self, field_name: typing.Literal['component_name', b'component_name', 'component_name_deprecated', b'component_name_deprecated', 'execution_id', b'execution_id', 'id', b'id', 'steps', b'steps']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Plan = Plan +Global___Plan: _TypeAlias = Plan -@typing.final -class PlanStep(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class PlanStep(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class StepEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str + @_typing.final + class StepEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str - @property - def value(self) -> global___ComponentState: + @_builtins.property + def value(self) -> Global___ComponentState: ... - def __init__(self, *, key: builtins.str=..., value: global___ComponentState | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: Global___ComponentState | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def HasField(self, field_name: typing.Literal['value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - STEP_FIELD_NUMBER: builtins.int + STEP_FIELD_NUMBER: _builtins.int - @property - def step(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___ComponentState]: + @_builtins.property + def step(self) -> _containers.MessageMap[_builtins.str, Global___ComponentState]: """A step is the component state each component resource should reach while executing that step of the plan. Keys are the fully qualified component name. """ - def __init__(self, *, step: collections.abc.Mapping[builtins.str, global___ComponentState] | None=...) -> None: + def __init__(self, *, step: _abc.Mapping[_builtins.str, Global___ComponentState] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['step', b'step'] - def ClearField(self, field_name: typing.Literal['step', b'step']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___PlanStep = PlanStep +Global___PlanStep: _TypeAlias = PlanStep -@typing.final -class ComponentState(google.protobuf.message.Message): +@_typing.final +class ComponentState(_message.Message): """A pose""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POSE_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + POSE_FIELD_NUMBER: _builtins.int - @property - def pose(self) -> common.v1.common_pb2.Pose: + @_builtins.property + def pose(self) -> _common_pb2.Pose: ... - def __init__(self, *, pose: common.v1.common_pb2.Pose | None=...) -> None: + def __init__(self, *, pose: _common_pb2.Pose | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['pose', b'pose'] - def HasField(self, field_name: typing.Literal['pose', b'pose']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['pose', b'pose'] - def ClearField(self, field_name: typing.Literal['pose', b'pose']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ComponentState = ComponentState \ No newline at end of file +Global___ComponentState: _TypeAlias = ComponentState \ No newline at end of file diff --git a/src/viam/gen/service/navigation/v1/navigation_grpc.py b/src/viam/gen/service/navigation/v1/navigation_grpc.py index 04cf85164d..8abc5c1aa8 100644 --- a/src/viam/gen/service/navigation/v1/navigation_grpc.py +++ b/src/viam/gen/service/navigation/v1/navigation_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import service diff --git a/src/viam/gen/service/navigation/v1/navigation_pb2.py b/src/viam/gen/service/navigation/v1/navigation_pb2.py index 738baa15d2..ea284c17d0 100644 --- a/src/viam/gen/service/navigation/v1/navigation_pb2.py +++ b/src/viam/gen/service/navigation/v1/navigation_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'service/navigation/v1/navigation.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/navigation/v1/navigation.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&service/navigation/v1/navigation.proto\x12\x1aviam.service.navigation.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"S\n\x0eGetModeRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"G\n\x0fGetModeResponse\x124\n\x04mode\x18\x01 \x01(\x0e2 .viam.service.navigation.v1.ModeR\x04mode"\x89\x01\n\x0eSetModeRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x124\n\x04mode\x18\x02 \x01(\x0e2 .viam.service.navigation.v1.ModeR\x04mode\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x11\n\x0fSetModeResponse"P\n\x08Waypoint\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x124\n\x08location\x18\x02 \x01(\x0b2\x18.viam.common.v1.GeoPointR\x08location"W\n\x12GetLocationRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"t\n\x13GetLocationResponse\x124\n\x08location\x18\x01 \x01(\x0b2\x18.viam.common.v1.GeoPointR\x08location\x12\'\n\x0fcompass_heading\x18\x02 \x01(\x01R\x0ecompassHeading"X\n\x13GetWaypointsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"Z\n\x14GetWaypointsResponse\x12B\n\twaypoints\x18\x01 \x03(\x0b2$.viam.service.navigation.v1.WaypointR\twaypoints"\x8d\x01\n\x12AddWaypointRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x124\n\x08location\x18\x02 \x01(\x0b2\x18.viam.common.v1.GeoPointR\x08location\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x15\n\x13AddWaypointResponse"j\n\x15RemoveWaypointRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x0e\n\x02id\x18\x02 \x01(\tR\x02id\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x18\n\x16RemoveWaypointResponse"X\n\x13GetObstaclesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"Q\n\x14GetObstaclesResponse\x129\n\tobstacles\x18\x01 \x03(\x0b2\x1b.viam.common.v1.GeoGeometryR\tobstacles"v\n\x04Path\x126\n\x17destination_waypoint_id\x18\x01 \x01(\tR\x15destinationWaypointId\x126\n\tgeopoints\x18\x02 \x03(\x0b2\x18.viam.common.v1.GeoPointR\tgeopoints"T\n\x0fGetPathsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"J\n\x10GetPathsResponse\x126\n\x05paths\x18\x01 \x03(\x0b2 .viam.service.navigation.v1.PathR\x05paths"*\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"W\n\x15GetPropertiesResponse\x12>\n\x08map_type\x18\x01 \x01(\x0e2#.viam.service.navigation.v1.MapTypeR\x07mapType*H\n\x07MapType\x12\x18\n\x14MAP_TYPE_UNSPECIFIED\x10\x00\x12\x11\n\rMAP_TYPE_NONE\x10\x01\x12\x10\n\x0cMAP_TYPE_GPS\x10\x02*R\n\x04Mode\x12\x14\n\x10MODE_UNSPECIFIED\x10\x00\x12\x0f\n\x0bMODE_MANUAL\x10\x01\x12\x11\n\rMODE_WAYPOINT\x10\x02\x12\x10\n\x0cMODE_EXPLORE\x10\x032\x97\r\n\x11NavigationService\x12\x97\x01\n\x07GetMode\x12*.viam.service.navigation.v1.GetModeRequest\x1a+.viam.service.navigation.v1.GetModeResponse"3\x82\xd3\xe4\x93\x02-\x12+/viam/api/v1/service/navigation/{name}/mode\x12\x97\x01\n\x07SetMode\x12*.viam.service.navigation.v1.SetModeRequest\x1a+.viam.service.navigation.v1.SetModeResponse"3\x82\xd3\xe4\x93\x02-\x1a+/viam/api/v1/service/navigation/{name}/mode\x12\xa7\x01\n\x0bGetLocation\x12..viam.service.navigation.v1.GetLocationRequest\x1a/.viam.service.navigation.v1.GetLocationResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/service/navigation/{name}/location\x12\xab\x01\n\x0cGetWaypoints\x12/.viam.service.navigation.v1.GetWaypointsRequest\x1a0.viam.service.navigation.v1.GetWaypointsResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/service/navigation/{name}/waypoints\x12\xa8\x01\n\x0bAddWaypoint\x12..viam.service.navigation.v1.AddWaypointRequest\x1a/.viam.service.navigation.v1.AddWaypointResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/service/navigation/{name}/waypoints\x12\xb6\x01\n\x0eRemoveWaypoint\x121.viam.service.navigation.v1.RemoveWaypointRequest\x1a2.viam.service.navigation.v1.RemoveWaypointResponse"=\x82\xd3\xe4\x93\x027*5/viam/api/v1/service/navigation/{name}/waypoints/{id}\x12\xaf\x01\n\x0cGetObstacles\x12/.viam.service.navigation.v1.GetObstaclesRequest\x1a0.viam.service.navigation.v1.GetObstaclesResponse"<\x82\xd3\xe4\x93\x026\x124/viam/api/v1/service/navigation/{name}/get_obstacles\x12\x9f\x01\n\x08GetPaths\x12+.viam.service.navigation.v1.GetPathsRequest\x1a,.viam.service.navigation.v1.GetPathsResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/service/navigation/{name}/get_paths\x12\xaf\x01\n\rGetProperties\x120.viam.service.navigation.v1.GetPropertiesRequest\x1a1.viam.service.navigation.v1.GetPropertiesResponse"9\x82\xd3\xe4\x93\x023\x121/viam/api/v1/service/navigation/{name}/properties\x12\x8b\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"9\x82\xd3\xe4\x93\x023"1/viam/api/v1/service/navigation/{name}/do_commandBG\n\x1ecom.viam.service.navigation.v1Z%go.viam.com/api/service/navigation/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/service/navigation/v1/navigation_pb2.pyi b/src/viam/gen/service/navigation/v1/navigation_pb2.pyi index 9f9de82981..2e0d626274 100644 --- a/src/viam/gen/service/navigation/v1/navigation_pb2.pyi +++ b/src/viam/gen/service/navigation/v1/navigation_pb2.pyi @@ -2,28 +2,28 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -from .... import common -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 +from collections import abc as _abc +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor class _MapType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _MapTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MapType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _MapTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_MapType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor MAP_TYPE_UNSPECIFIED: _MapType.ValueType MAP_TYPE_NONE: _MapType.ValueType MAP_TYPE_GPS: _MapType.ValueType @@ -33,14 +33,14 @@ class MapType(_MapType, metaclass=_MapTypeEnumTypeWrapper): MAP_TYPE_UNSPECIFIED: MapType.ValueType MAP_TYPE_NONE: MapType.ValueType MAP_TYPE_GPS: MapType.ValueType -global___MapType = MapType +Global___MapType: _TypeAlias = MapType class _Mode: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _ModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Mode.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _ModeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_Mode.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor MODE_UNSPECIFIED: _Mode.ValueType MODE_MANUAL: _Mode.ValueType MODE_WAYPOINT: _Mode.ValueType @@ -52,368 +52,395 @@ MODE_UNSPECIFIED: Mode.ValueType MODE_MANUAL: Mode.ValueType MODE_WAYPOINT: Mode.ValueType MODE_EXPLORE: Mode.ValueType -global___Mode = Mode +Global___Mode: _TypeAlias = Mode -@typing.final -class GetModeRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetModeRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetModeRequest = GetModeRequest +Global___GetModeRequest: _TypeAlias = GetModeRequest -@typing.final -class GetModeResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MODE_FIELD_NUMBER: builtins.int - mode: global___Mode.ValueType +@_typing.final +class GetModeResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MODE_FIELD_NUMBER: _builtins.int + mode: Global___Mode.ValueType - def __init__(self, *, mode: global___Mode.ValueType=...) -> None: + def __init__(self, *, mode: Global___Mode.ValueType=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['mode', b'mode'] - def ClearField(self, field_name: typing.Literal['mode', b'mode']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetModeResponse = GetModeResponse +Global___GetModeResponse: _TypeAlias = GetModeResponse -@typing.final -class SetModeRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - MODE_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - mode: global___Mode.ValueType +@_typing.final +class SetModeRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + MODE_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + mode: Global___Mode.ValueType - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., mode: global___Mode.ValueType=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., mode: Global___Mode.ValueType=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'mode', b'mode', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'mode', b'mode', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SetModeRequest = SetModeRequest +Global___SetModeRequest: _TypeAlias = SetModeRequest -@typing.final -class SetModeResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class SetModeResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SetModeResponse = SetModeResponse +Global___SetModeResponse: _TypeAlias = SetModeResponse -@typing.final -class Waypoint(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ID_FIELD_NUMBER: builtins.int - LOCATION_FIELD_NUMBER: builtins.int - id: builtins.str +@_typing.final +class Waypoint(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ID_FIELD_NUMBER: _builtins.int + LOCATION_FIELD_NUMBER: _builtins.int + id: _builtins.str - @property - def location(self) -> common.v1.common_pb2.GeoPoint: + @_builtins.property + def location(self) -> _common_pb2.GeoPoint: ... - def __init__(self, *, id: builtins.str=..., location: common.v1.common_pb2.GeoPoint | None=...) -> None: + def __init__(self, *, id: _builtins.str=..., location: _common_pb2.GeoPoint | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['location', b'location'] - def HasField(self, field_name: typing.Literal['location', b'location']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'location', b'location'] - def ClearField(self, field_name: typing.Literal['id', b'id', 'location', b'location']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Waypoint = Waypoint +Global___Waypoint: _TypeAlias = Waypoint -@typing.final -class GetLocationRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetLocationRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetLocationRequest = GetLocationRequest +Global___GetLocationRequest: _TypeAlias = GetLocationRequest -@typing.final -class GetLocationResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - LOCATION_FIELD_NUMBER: builtins.int - COMPASS_HEADING_FIELD_NUMBER: builtins.int - compass_heading: builtins.float +@_typing.final +class GetLocationResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + LOCATION_FIELD_NUMBER: _builtins.int + COMPASS_HEADING_FIELD_NUMBER: _builtins.int + compass_heading: _builtins.float 'A number from [0-360) where 0 is north\n 90 is east, 180 is south, 270 is west\n ' - @property - def location(self) -> common.v1.common_pb2.GeoPoint: + @_builtins.property + def location(self) -> _common_pb2.GeoPoint: ... - def __init__(self, *, location: common.v1.common_pb2.GeoPoint | None=..., compass_heading: builtins.float=...) -> None: + def __init__(self, *, location: _common_pb2.GeoPoint | None=..., compass_heading: _builtins.float=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['location', b'location'] - def HasField(self, field_name: typing.Literal['location', b'location']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['compass_heading', b'compass_heading', 'location', b'location'] - def ClearField(self, field_name: typing.Literal['compass_heading', b'compass_heading', 'location', b'location']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetLocationResponse = GetLocationResponse +Global___GetLocationResponse: _TypeAlias = GetLocationResponse -@typing.final -class GetWaypointsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetWaypointsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetWaypointsRequest = GetWaypointsRequest +Global___GetWaypointsRequest: _TypeAlias = GetWaypointsRequest -@typing.final -class GetWaypointsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - WAYPOINTS_FIELD_NUMBER: builtins.int +@_typing.final +class GetWaypointsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + WAYPOINTS_FIELD_NUMBER: _builtins.int - @property - def waypoints(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Waypoint]: + @_builtins.property + def waypoints(self) -> _containers.RepeatedCompositeFieldContainer[Global___Waypoint]: ... - def __init__(self, *, waypoints: collections.abc.Iterable[global___Waypoint] | None=...) -> None: + def __init__(self, *, waypoints: _abc.Iterable[Global___Waypoint] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['waypoints', b'waypoints'] - def ClearField(self, field_name: typing.Literal['waypoints', b'waypoints']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetWaypointsResponse = GetWaypointsResponse +Global___GetWaypointsResponse: _TypeAlias = GetWaypointsResponse -@typing.final -class AddWaypointRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - LOCATION_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class AddWaypointRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + LOCATION_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def location(self) -> common.v1.common_pb2.GeoPoint: + @_builtins.property + def location(self) -> _common_pb2.GeoPoint: ... - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., location: common.v1.common_pb2.GeoPoint | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., location: _common_pb2.GeoPoint | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'location', b'location'] - def HasField(self, field_name: typing.Literal['extra', b'extra', 'location', b'location']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'location', b'location', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'location', b'location', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AddWaypointRequest = AddWaypointRequest +Global___AddWaypointRequest: _TypeAlias = AddWaypointRequest -@typing.final -class AddWaypointResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class AddWaypointResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___AddWaypointResponse = AddWaypointResponse +Global___AddWaypointResponse: _TypeAlias = AddWaypointResponse -@typing.final -class RemoveWaypointRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - ID_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - id: builtins.str +@_typing.final +class RemoveWaypointRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + ID_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + id: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., id: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., id: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'id', b'id', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'id', b'id', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RemoveWaypointRequest = RemoveWaypointRequest +Global___RemoveWaypointRequest: _TypeAlias = RemoveWaypointRequest -@typing.final -class RemoveWaypointResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_typing.final +class RemoveWaypointResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___RemoveWaypointResponse = RemoveWaypointResponse +Global___RemoveWaypointResponse: _TypeAlias = RemoveWaypointResponse -@typing.final -class GetObstaclesRequest(google.protobuf.message.Message): +@_typing.final +class GetObstaclesRequest(_message.Message): """GetObstacles will return the geopoint location and geometry of all known obstacles on the navigation map. Obstacles that are detected through the vision service will only be returned if this endpoint is called when the robot is sensing the obstacle """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetObstaclesRequest = GetObstaclesRequest +Global___GetObstaclesRequest: _TypeAlias = GetObstaclesRequest -@typing.final -class GetObstaclesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - OBSTACLES_FIELD_NUMBER: builtins.int +@_typing.final +class GetObstaclesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + OBSTACLES_FIELD_NUMBER: _builtins.int - @property - def obstacles(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.GeoGeometry]: + @_builtins.property + def obstacles(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.GeoGeometry]: """List of all known geometries""" - def __init__(self, *, obstacles: collections.abc.Iterable[common.v1.common_pb2.GeoGeometry] | None=...) -> None: + def __init__(self, *, obstacles: _abc.Iterable[_common_pb2.GeoGeometry] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['obstacles', b'obstacles'] - def ClearField(self, field_name: typing.Literal['obstacles', b'obstacles']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetObstaclesResponse = GetObstaclesResponse +Global___GetObstaclesResponse: _TypeAlias = GetObstaclesResponse -@typing.final -class Path(google.protobuf.message.Message): +@_typing.final +class Path(_message.Message): """A user provided destination and the set of geopoints that the robot is expected to take to get there """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DESTINATION_WAYPOINT_ID_FIELD_NUMBER: builtins.int - GEOPOINTS_FIELD_NUMBER: builtins.int - destination_waypoint_id: builtins.str + DESCRIPTOR: _descriptor.Descriptor + DESTINATION_WAYPOINT_ID_FIELD_NUMBER: _builtins.int + GEOPOINTS_FIELD_NUMBER: _builtins.int + destination_waypoint_id: _builtins.str 'The id of the user specified waypoint' - @property - def geopoints(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.GeoPoint]: + @_builtins.property + def geopoints(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.GeoPoint]: """List of geopoints that the motion planner output to reach the destination The first geopoint is the starting position of the robot for that path """ - def __init__(self, *, destination_waypoint_id: builtins.str=..., geopoints: collections.abc.Iterable[common.v1.common_pb2.GeoPoint] | None=...) -> None: + def __init__(self, *, destination_waypoint_id: _builtins.str=..., geopoints: _abc.Iterable[_common_pb2.GeoPoint] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['destination_waypoint_id', b'destination_waypoint_id', 'geopoints', b'geopoints'] - def ClearField(self, field_name: typing.Literal['destination_waypoint_id', b'destination_waypoint_id', 'geopoints', b'geopoints']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Path = Path +Global___Path: _TypeAlias = Path -@typing.final -class GetPathsRequest(google.protobuf.message.Message): +@_typing.final +class GetPathsRequest(_message.Message): """Returns all the paths known to the navigation service""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of the navigation service' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPathsRequest = GetPathsRequest +Global___GetPathsRequest: _TypeAlias = GetPathsRequest -@typing.final -class GetPathsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - PATHS_FIELD_NUMBER: builtins.int +@_typing.final +class GetPathsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + PATHS_FIELD_NUMBER: _builtins.int - @property - def paths(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Path]: + @_builtins.property + def paths(self) -> _containers.RepeatedCompositeFieldContainer[Global___Path]: ... - def __init__(self, *, paths: collections.abc.Iterable[global___Path] | None=...) -> None: + def __init__(self, *, paths: _abc.Iterable[Global___Path] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['paths', b'paths'] - def ClearField(self, field_name: typing.Literal['paths', b'paths']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPathsResponse = GetPathsResponse +Global___GetPathsResponse: _TypeAlias = GetPathsResponse -@typing.final -class GetPropertiesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetPropertiesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of the navigation service' - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesRequest = GetPropertiesRequest +Global___GetPropertiesRequest: _TypeAlias = GetPropertiesRequest -@typing.final -class GetPropertiesResponse(google.protobuf.message.Message): +@_typing.final +class GetPropertiesResponse(_message.Message): """Returns properties information for the named navigation service""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MAP_TYPE_FIELD_NUMBER: builtins.int - map_type: global___MapType.ValueType + DESCRIPTOR: _descriptor.Descriptor + MAP_TYPE_FIELD_NUMBER: _builtins.int + map_type: Global___MapType.ValueType - def __init__(self, *, map_type: global___MapType.ValueType=...) -> None: + def __init__(self, *, map_type: Global___MapType.ValueType=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['map_type', b'map_type'] - def ClearField(self, field_name: typing.Literal['map_type', b'map_type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesResponse = GetPropertiesResponse \ No newline at end of file +Global___GetPropertiesResponse: _TypeAlias = GetPropertiesResponse \ No newline at end of file diff --git a/src/viam/gen/service/sensors/v1/sensors_grpc.py b/src/viam/gen/service/sensors/v1/sensors_grpc.py index cd60cbe1c7..0cf67a4dbe 100644 --- a/src/viam/gen/service/sensors/v1/sensors_grpc.py +++ b/src/viam/gen/service/sensors/v1/sensors_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import service diff --git a/src/viam/gen/service/sensors/v1/sensors_pb2.py b/src/viam/gen/service/sensors/v1/sensors_pb2.py index 9a304eb65e..3c1bd25a27 100644 --- a/src/viam/gen/service/sensors/v1/sensors_pb2.py +++ b/src/viam/gen/service/sensors/v1/sensors_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'service/sensors/v1/sensors.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/sensors/v1/sensors.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n service/sensors/v1/sensors.proto\x12\x17viam.service.sensors.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"b\n\x11GetSensorsRequest\x12\x16\n\x04name\x18\x01 \x01(\tB\x02\x18\x01R\x04name\x121\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructB\x02\x18\x01R\x05extra:\x02\x18\x01"]\n\x12GetSensorsResponse\x12C\n\x0csensor_names\x18\x01 \x03(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x0bsensorNames:\x02\x18\x01"\xa8\x01\n\x12GetReadingsRequest\x12\x16\n\x04name\x18\x01 \x01(\tB\x02\x18\x01R\x04name\x12C\n\x0csensor_names\x18\x02 \x03(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x0bsensorNames\x121\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructB\x02\x18\x01R\x05extra:\x02\x18\x01"\xea\x01\n\x08Readings\x124\n\x04name\x18\x01 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x04name\x12O\n\x08readings\x18\x02 \x03(\x0b2/.viam.service.sensors.v1.Readings.ReadingsEntryB\x02\x18\x01R\x08readings\x1aS\n\rReadingsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b2\x16.google.protobuf.ValueR\x05value:\x028\x01:\x02\x18\x01"\\\n\x13GetReadingsResponse\x12A\n\x08readings\x18\x01 \x03(\x0b2!.viam.service.sensors.v1.ReadingsB\x02\x18\x01R\x08readings:\x02\x18\x012\xda\x03\n\x0eSensorsService\x12\x95\x01\n\nGetSensors\x12*.viam.service.sensors.v1.GetSensorsRequest\x1a+.viam.service.sensors.v1.GetSensorsResponse".\x88\x02\x01\x82\xd3\xe4\x93\x02%\x12#/viam/api/v1/service/{name}/sensors\x12\xa1\x01\n\x0bGetReadings\x12+.viam.service.sensors.v1.GetReadingsRequest\x1a,.viam.service.sensors.v1.GetReadingsResponse"7\x88\x02\x01\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/service/sensors/{name}/readings\x12\x8b\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"9\x88\x02\x01\x82\xd3\xe4\x93\x020"./viam/api/v1/service/sensors/{name}/do_commandBD\n\x1bcom.viam.service.sensors.v1Z"go.viam.com/api/service/sensors/v1\xb8\x01\x01b\x06proto3') _globals = globals() diff --git a/src/viam/gen/service/sensors/v1/sensors_pb2.pyi b/src/viam/gen/service/sensors/v1/sensors_pb2.pyi index ac654840b0..92cb48ad22 100644 --- a/src/viam/gen/service/sensors/v1/sensors_pb2.pyi +++ b/src/viam/gen/service/sensors/v1/sensors_pb2.pyi @@ -2,136 +2,185 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -from .... import common -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class GetSensorsRequest(google.protobuf.message.Message): +from collections import abc as _abc +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +if sys.version_info >= (3, 13): + from warnings import deprecated as _deprecated +else: + from typing_extensions import deprecated as _deprecated +DESCRIPTOR: _descriptor.FileDescriptor + +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class GetSensorsRequest(_message.Message): """The sensors service messages are deprecated""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def name(self) -> _builtins.str: + ... + + @name.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def name(self, value: _builtins.str) -> None: + ... + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetSensorsRequest = GetSensorsRequest +Global___GetSensorsRequest: _TypeAlias = GetSensorsRequest -@typing.final -class GetSensorsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SENSOR_NAMES_FIELD_NUMBER: builtins.int +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class GetSensorsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SENSOR_NAMES_FIELD_NUMBER: _builtins.int - @property - def sensor_names(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.ResourceName]: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def sensor_names(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.ResourceName]: ... - def __init__(self, *, sensor_names: collections.abc.Iterable[common.v1.common_pb2.ResourceName] | None=...) -> None: + def __init__(self, *, sensor_names: _abc.Iterable[_common_pb2.ResourceName] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['sensor_names', b'sensor_names'] - def ClearField(self, field_name: typing.Literal['sensor_names', b'sensor_names']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetSensorsResponse = GetSensorsResponse +Global___GetSensorsResponse: _TypeAlias = GetSensorsResponse -@typing.final -class GetReadingsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - SENSOR_NAMES_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class GetReadingsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + SENSOR_NAMES_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def name(self) -> _builtins.str: + ... + + @name.setter + @_deprecated('This field has been marked as deprecated using proto field options.') + def name(self, value: _builtins.str) -> None: + ... - @property - def sensor_names(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.ResourceName]: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def sensor_names(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.ResourceName]: ... - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., sensor_names: collections.abc.Iterable[common.v1.common_pb2.ResourceName] | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., sensor_names: _abc.Iterable[_common_pb2.ResourceName] | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'sensor_names', b'sensor_names'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'sensor_names', b'sensor_names']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetReadingsRequest = GetReadingsRequest +Global___GetReadingsRequest: _TypeAlias = GetReadingsRequest -@typing.final -class Readings(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class Readings(_message.Message): + DESCRIPTOR: _descriptor.Descriptor - @typing.final - class ReadingsEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str + @_typing.final + class ReadingsEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str - @property - def value(self) -> google.protobuf.struct_pb2.Value: + @_builtins.property + def value(self) -> _struct_pb2.Value: ... - def __init__(self, *, key: builtins.str=..., value: google.protobuf.struct_pb2.Value | None=...) -> None: + def __init__(self, *, key: _builtins.str=..., value: _struct_pb2.Value | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - def HasField(self, field_name: typing.Literal['value', b'value']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - NAME_FIELD_NUMBER: builtins.int - READINGS_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: _builtins.int + READINGS_FIELD_NUMBER: _builtins.int - @property - def name(self) -> common.v1.common_pb2.ResourceName: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def name(self) -> _common_pb2.ResourceName: ... - @property - def readings(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, google.protobuf.struct_pb2.Value]: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def readings(self) -> _containers.MessageMap[_builtins.str, _struct_pb2.Value]: ... - def __init__(self, *, name: common.v1.common_pb2.ResourceName | None=..., readings: collections.abc.Mapping[builtins.str, google.protobuf.struct_pb2.Value] | None=...) -> None: + def __init__(self, *, name: _common_pb2.ResourceName | None=..., readings: _abc.Mapping[_builtins.str, _struct_pb2.Value] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def HasField(self, field_name: typing.Literal['name', b'name']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'readings', b'readings'] - def ClearField(self, field_name: typing.Literal['name', b'name', 'readings', b'readings']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Readings = Readings +Global___Readings: _TypeAlias = Readings -@typing.final -class GetReadingsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - READINGS_FIELD_NUMBER: builtins.int +@_deprecated('This message has been marked as deprecated using proto message options.') +@_typing.final +class GetReadingsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + READINGS_FIELD_NUMBER: _builtins.int - @property - def readings(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Readings]: + @_builtins.property + @_deprecated('This field has been marked as deprecated using proto field options.') + def readings(self) -> _containers.RepeatedCompositeFieldContainer[Global___Readings]: ... - def __init__(self, *, readings: collections.abc.Iterable[global___Readings] | None=...) -> None: + def __init__(self, *, readings: _abc.Iterable[Global___Readings] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['readings', b'readings'] - def ClearField(self, field_name: typing.Literal['readings', b'readings']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetReadingsResponse = GetReadingsResponse \ No newline at end of file +Global___GetReadingsResponse: _TypeAlias = GetReadingsResponse \ No newline at end of file diff --git a/src/viam/gen/service/shell/v1/shell_grpc.py b/src/viam/gen/service/shell/v1/shell_grpc.py index 96b1f5fdb8..94a5557b3b 100644 --- a/src/viam/gen/service/shell/v1/shell_grpc.py +++ b/src/viam/gen/service/shell/v1/shell_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 import google.protobuf.timestamp_pb2 from .... import service diff --git a/src/viam/gen/service/shell/v1/shell_pb2.py b/src/viam/gen/service/shell/v1/shell_pb2.py index f1fbd6403d..1e44da682c 100644 --- a/src/viam/gen/service/shell/v1/shell_pb2.py +++ b/src/viam/gen/service/shell/v1/shell_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'service/shell/v1/shell.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/shell/v1/shell.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cservice/shell/v1/shell.proto\x12\x15viam.service.shell.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto"j\n\x0cShellRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x17\n\x07data_in\x18\x02 \x01(\tR\x06dataIn\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"W\n\rShellResponse\x12\x19\n\x08data_out\x18\x01 \x01(\tR\x07dataOut\x12\x19\n\x08data_err\x18\x02 \x01(\tR\x07dataErr\x12\x10\n\x03eof\x18\x03 \x01(\x08R\x03eof"\xda\x01\n\x08FileData\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04size\x18\x02 \x01(\x03R\x04size\x12\x15\n\x06is_dir\x18\x03 \x01(\x08R\x05isDir\x12\x12\n\x04data\x18\x04 \x01(\x0cR\x04data\x12\x10\n\x03eof\x18\x05 \x01(\x08R\x03eof\x12:\n\x08mod_time\x18\x06 \x01(\x0b2\x1a.google.protobuf.TimestampH\x00R\x07modTime\x88\x01\x01\x12\x17\n\x04mode\x18\x07 \x01(\rH\x01R\x04mode\x88\x01\x01B\x0b\n\t_mod_timeB\x07\n\x05_mode"\xf1\x01\n!CopyFilesToMachineRequestMetadata\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12K\n\x0bsource_type\x18\x02 \x01(\x0e2*.viam.service.shell.v1.CopyFilesSourceTypeR\nsourceType\x12 \n\x0bdestination\x18\x03 \x01(\tR\x0bdestination\x12\x1a\n\x08preserve\x18\x04 \x01(\x08R\x08preserve\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xbe\x01\n\x19CopyFilesToMachineRequest\x12V\n\x08metadata\x18\x01 \x01(\x0b28.viam.service.shell.v1.CopyFilesToMachineRequestMetadataH\x00R\x08metadata\x12>\n\tfile_data\x18\x02 \x01(\x0b2\x1f.viam.service.shell.v1.FileDataH\x00R\x08fileDataB\t\n\x07request"@\n\x1aCopyFilesToMachineResponse\x12"\n\rack_last_file\x18\x01 \x01(\x08R\x0backLastFile"\xc3\x01\n#CopyFilesFromMachineRequestMetadata\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n\x05paths\x18\x02 \x03(\tR\x05paths\x12\'\n\x0fallow_recursion\x18\x03 \x01(\x08R\x0eallowRecursion\x12\x1a\n\x08preserve\x18\x04 \x01(\x08R\x08preserve\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xa8\x01\n\x1bCopyFilesFromMachineRequest\x12X\n\x08metadata\x18\x01 \x01(\x0b2:.viam.service.shell.v1.CopyFilesFromMachineRequestMetadataH\x00R\x08metadata\x12$\n\rack_last_file\x18\x02 \x01(\x08H\x00R\x0backLastFileB\t\n\x07request"s\n$CopyFilesFromMachineResponseMetadata\x12K\n\x0bsource_type\x18\x01 \x01(\x0e2*.viam.service.shell.v1.CopyFilesSourceTypeR\nsourceType"\xc5\x01\n\x1cCopyFilesFromMachineResponse\x12Y\n\x08metadata\x18\x01 \x01(\x0b2;.viam.service.shell.v1.CopyFilesFromMachineResponseMetadataH\x00R\x08metadata\x12>\n\tfile_data\x18\x02 \x01(\x0b2\x1f.viam.service.shell.v1.FileDataH\x00R\x08fileDataB\n\n\x08response*\xbd\x01\n\x13CopyFilesSourceType\x12&\n"COPY_FILES_SOURCE_TYPE_UNSPECIFIED\x10\x00\x12&\n"COPY_FILES_SOURCE_TYPE_SINGLE_FILE\x10\x01\x12+\n\'COPY_FILES_SOURCE_TYPE_SINGLE_DIRECTORY\x10\x02\x12)\n%COPY_FILES_SOURCE_TYPE_MULTIPLE_FILES\x10\x032\xf4\x03\n\x0cShellService\x12V\n\x05Shell\x12#.viam.service.shell.v1.ShellRequest\x1a$.viam.service.shell.v1.ShellResponse(\x010\x01\x12}\n\x12CopyFilesToMachine\x120.viam.service.shell.v1.CopyFilesToMachineRequest\x1a1.viam.service.shell.v1.CopyFilesToMachineResponse(\x010\x01\x12\x83\x01\n\x14CopyFilesFromMachine\x122.viam.service.shell.v1.CopyFilesFromMachineRequest\x1a3.viam.service.shell.v1.CopyFilesFromMachineResponse(\x010\x01\x12\x86\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"4\x82\xd3\xe4\x93\x02.",/viam/api/v1/service/shell/{name}/do_commandB=\n\x19com.viam.service.shell.v1Z go.viam.com/api/service/shell/v1b\x06proto3') diff --git a/src/viam/gen/service/shell/v1/shell_pb2.pyi b/src/viam/gen/service/shell/v1/shell_pb2.pyi index ef580b5672..0d6cd836bb 100644 --- a/src/viam/gen/service/shell/v1/shell_pb2.pyi +++ b/src/viam/gen/service/shell/v1/shell_pb2.pyi @@ -2,28 +2,28 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 -import google.protobuf.timestamp_pb2 +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor class _CopyFilesSourceType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _CopyFilesSourceTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CopyFilesSourceType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _CopyFilesSourceTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_CopyFilesSourceType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor COPY_FILES_SOURCE_TYPE_UNSPECIFIED: _CopyFilesSourceType.ValueType COPY_FILES_SOURCE_TYPE_SINGLE_FILE: _CopyFilesSourceType.ValueType COPY_FILES_SOURCE_TYPE_SINGLE_DIRECTORY: _CopyFilesSourceType.ValueType @@ -40,50 +40,53 @@ COPY_FILES_SOURCE_TYPE_UNSPECIFIED: CopyFilesSourceType.ValueType COPY_FILES_SOURCE_TYPE_SINGLE_FILE: CopyFilesSourceType.ValueType COPY_FILES_SOURCE_TYPE_SINGLE_DIRECTORY: CopyFilesSourceType.ValueType COPY_FILES_SOURCE_TYPE_MULTIPLE_FILES: CopyFilesSourceType.ValueType -global___CopyFilesSourceType = CopyFilesSourceType - -@typing.final -class ShellRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - DATA_IN_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - data_in: builtins.str - - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: +Global___CopyFilesSourceType: _TypeAlias = CopyFilesSourceType + +@_typing.final +class ShellRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + DATA_IN_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + data_in: _builtins.str + + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., data_in: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., data_in: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data_in', b'data_in', 'extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['data_in', b'data_in', 'extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ShellRequest = ShellRequest +Global___ShellRequest: _TypeAlias = ShellRequest -@typing.final -class ShellResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DATA_OUT_FIELD_NUMBER: builtins.int - DATA_ERR_FIELD_NUMBER: builtins.int - EOF_FIELD_NUMBER: builtins.int - data_out: builtins.str - data_err: builtins.str - eof: builtins.bool +@_typing.final +class ShellResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DATA_OUT_FIELD_NUMBER: _builtins.int + DATA_ERR_FIELD_NUMBER: _builtins.int + EOF_FIELD_NUMBER: _builtins.int + data_out: _builtins.str + data_err: _builtins.str + eof: _builtins.bool - def __init__(self, *, data_out: builtins.str=..., data_err: builtins.str=..., eof: builtins.bool=...) -> None: + def __init__(self, *, data_out: _builtins.str=..., data_err: _builtins.str=..., eof: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['data_err', b'data_err', 'data_out', b'data_out', 'eof', b'eof'] - def ClearField(self, field_name: typing.Literal['data_err', b'data_err', 'data_out', b'data_out', 'eof', b'eof']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ShellResponse = ShellResponse +Global___ShellResponse: _TypeAlias = ShellResponse -@typing.final -class FileData(google.protobuf.message.Message): +@_typing.final +class FileData(_message.Message): """FileData contains partial (sometimes complete) information about a File. When transmitting FileData with CopyFilesToMachine and CopyFilesFromMachine, it MUST initially contain its name, size, and is_dir. Depending on whether @@ -94,214 +97,238 @@ class FileData(google.protobuf.message.Message): in order to reduce data transmission while allowing out-of-order transfers. eof must be true and its own message once no more data is to be sent for this file. """ - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - SIZE_FIELD_NUMBER: builtins.int - IS_DIR_FIELD_NUMBER: builtins.int - DATA_FIELD_NUMBER: builtins.int - EOF_FIELD_NUMBER: builtins.int - MOD_TIME_FIELD_NUMBER: builtins.int - MODE_FIELD_NUMBER: builtins.int - name: builtins.str - size: builtins.int - is_dir: builtins.bool - data: builtins.bytes - eof: builtins.bool - mode: builtins.int - - @property - def mod_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + SIZE_FIELD_NUMBER: _builtins.int + IS_DIR_FIELD_NUMBER: _builtins.int + DATA_FIELD_NUMBER: _builtins.int + EOF_FIELD_NUMBER: _builtins.int + MOD_TIME_FIELD_NUMBER: _builtins.int + MODE_FIELD_NUMBER: _builtins.int + name: _builtins.str + size: _builtins.int + is_dir: _builtins.bool + data: _builtins.bytes + eof: _builtins.bool + mode: _builtins.int + + @_builtins.property + def mod_time(self) -> _timestamp_pb2.Timestamp: """Note(erd): maybe support access time in the future if needed""" - def __init__(self, *, name: builtins.str=..., size: builtins.int=..., is_dir: builtins.bool=..., data: builtins.bytes=..., eof: builtins.bool=..., mod_time: google.protobuf.timestamp_pb2.Timestamp | None=..., mode: builtins.int | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., size: _builtins.int=..., is_dir: _builtins.bool=..., data: _builtins.bytes=..., eof: _builtins.bool=..., mod_time: _timestamp_pb2.Timestamp | None=..., mode: _builtins.int | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_mod_time', b'_mod_time', '_mode', b'_mode', 'mod_time', b'mod_time', 'mode', b'mode'] - def HasField(self, field_name: typing.Literal['_mod_time', b'_mod_time', '_mode', b'_mode', 'mod_time', b'mod_time', 'mode', b'mode']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_mod_time', b'_mod_time', '_mode', b'_mode', 'data', b'data', 'eof', b'eof', 'is_dir', b'is_dir', 'mod_time', b'mod_time', 'mode', b'mode', 'name', b'name', 'size', b'size'] - def ClearField(self, field_name: typing.Literal['_mod_time', b'_mod_time', '_mode', b'_mode', 'data', b'data', 'eof', b'eof', 'is_dir', b'is_dir', 'mod_time', b'mod_time', 'mode', b'mode', 'name', b'name', 'size', b'size']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__mod_time: _TypeAlias = _typing.Literal['mod_time'] + _WhichOneofArgType__mod_time: _TypeAlias = _typing.Literal['_mod_time', b'_mod_time'] + _WhichOneofReturnType__mode: _TypeAlias = _typing.Literal['mode'] + _WhichOneofArgType__mode: _TypeAlias = _typing.Literal['_mode', b'_mode'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_mod_time', b'_mod_time']) -> typing.Literal['mod_time'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__mod_time) -> _WhichOneofReturnType__mod_time | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_mode', b'_mode']) -> typing.Literal['mode'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__mode) -> _WhichOneofReturnType__mode | None: ... -global___FileData = FileData +Global___FileData: _TypeAlias = FileData -@typing.final -class CopyFilesToMachineRequestMetadata(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - SOURCE_TYPE_FIELD_NUMBER: builtins.int - DESTINATION_FIELD_NUMBER: builtins.int - PRESERVE_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class CopyFilesToMachineRequestMetadata(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + SOURCE_TYPE_FIELD_NUMBER: _builtins.int + DESTINATION_FIELD_NUMBER: _builtins.int + PRESERVE_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'name is the service name.' - source_type: global___CopyFilesSourceType.ValueType + source_type: Global___CopyFilesSourceType.ValueType 'source_type is the type of files that will be transmitted in this request stream.' - destination: builtins.str + destination: _builtins.str 'destination is where the files should be placed. The receiver can choose to\n reasonably modify this destination based on its implementation semantics.\n ' - preserve: builtins.bool + preserve: _builtins.bool 'preserve indicates the the receiver should use the metadata in the file to reflect\n the same state in its filesystem as applicable.\n ' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., source_type: global___CopyFilesSourceType.ValueType=..., destination: builtins.str=..., preserve: builtins.bool=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., source_type: Global___CopyFilesSourceType.ValueType=..., destination: _builtins.str=..., preserve: _builtins.bool=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['destination', b'destination', 'extra', b'extra', 'name', b'name', 'preserve', b'preserve', 'source_type', b'source_type'] - def ClearField(self, field_name: typing.Literal['destination', b'destination', 'extra', b'extra', 'name', b'name', 'preserve', b'preserve', 'source_type', b'source_type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CopyFilesToMachineRequestMetadata = CopyFilesToMachineRequestMetadata +Global___CopyFilesToMachineRequestMetadata: _TypeAlias = CopyFilesToMachineRequestMetadata -@typing.final -class CopyFilesToMachineRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - METADATA_FIELD_NUMBER: builtins.int - FILE_DATA_FIELD_NUMBER: builtins.int +@_typing.final +class CopyFilesToMachineRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + METADATA_FIELD_NUMBER: _builtins.int + FILE_DATA_FIELD_NUMBER: _builtins.int - @property - def metadata(self) -> global___CopyFilesToMachineRequestMetadata: + @_builtins.property + def metadata(self) -> Global___CopyFilesToMachineRequestMetadata: """metadata is sent first and only once.""" - @property - def file_data(self) -> global___FileData: + @_builtins.property + def file_data(self) -> Global___FileData: """file_data is sent only after metadata. All data MUST be sent in order per-file. """ - def __init__(self, *, metadata: global___CopyFilesToMachineRequestMetadata | None=..., file_data: global___FileData | None=...) -> None: + def __init__(self, *, metadata: Global___CopyFilesToMachineRequestMetadata | None=..., file_data: Global___FileData | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['file_data', b'file_data', 'metadata', b'metadata', 'request', b'request'] - def HasField(self, field_name: typing.Literal['file_data', b'file_data', 'metadata', b'metadata', 'request', b'request']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['file_data', b'file_data', 'metadata', b'metadata', 'request', b'request'] - def ClearField(self, field_name: typing.Literal['file_data', b'file_data', 'metadata', b'metadata', 'request', b'request']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_request: _TypeAlias = _typing.Literal['metadata', 'file_data'] + _WhichOneofArgType_request: _TypeAlias = _typing.Literal['request', b'request'] - def WhichOneof(self, oneof_group: typing.Literal['request', b'request']) -> typing.Literal['metadata', 'file_data'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_request) -> _WhichOneofReturnType_request | None: ... -global___CopyFilesToMachineRequest = CopyFilesToMachineRequest +Global___CopyFilesToMachineRequest: _TypeAlias = CopyFilesToMachineRequest -@typing.final -class CopyFilesToMachineResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - ACK_LAST_FILE_FIELD_NUMBER: builtins.int - ack_last_file: builtins.bool +@_typing.final +class CopyFilesToMachineResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + ACK_LAST_FILE_FIELD_NUMBER: _builtins.int + ack_last_file: _builtins.bool 'value does not matter here but responses must be sent after every\n file has been received.\n ' - def __init__(self, *, ack_last_file: builtins.bool=...) -> None: + def __init__(self, *, ack_last_file: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['ack_last_file', b'ack_last_file'] - def ClearField(self, field_name: typing.Literal['ack_last_file', b'ack_last_file']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CopyFilesToMachineResponse = CopyFilesToMachineResponse +Global___CopyFilesToMachineResponse: _TypeAlias = CopyFilesToMachineResponse -@typing.final -class CopyFilesFromMachineRequestMetadata(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - PATHS_FIELD_NUMBER: builtins.int - ALLOW_RECURSION_FIELD_NUMBER: builtins.int - PRESERVE_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class CopyFilesFromMachineRequestMetadata(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + PATHS_FIELD_NUMBER: _builtins.int + ALLOW_RECURSION_FIELD_NUMBER: _builtins.int + PRESERVE_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'name is the service name.' - allow_recursion: builtins.bool + allow_recursion: _builtins.bool 'allow_recursion indicates if directories should be recursed into. If\n a directory is encountered and this is false, an error MUST occur.\n ' - preserve: builtins.bool + preserve: _builtins.bool "preserve indicates the the receiver should provide the metadata in the file\n to reflect the same state in the sender's filesystem as applicable.\n " - @property - def paths(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def paths(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: """paths are the paths to copy from and send back over the wire.""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., paths: collections.abc.Iterable[builtins.str] | None=..., allow_recursion: builtins.bool=..., preserve: builtins.bool=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., paths: _abc.Iterable[_builtins.str] | None=..., allow_recursion: _builtins.bool=..., preserve: _builtins.bool=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['allow_recursion', b'allow_recursion', 'extra', b'extra', 'name', b'name', 'paths', b'paths', 'preserve', b'preserve'] - def ClearField(self, field_name: typing.Literal['allow_recursion', b'allow_recursion', 'extra', b'extra', 'name', b'name', 'paths', b'paths', 'preserve', b'preserve']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CopyFilesFromMachineRequestMetadata = CopyFilesFromMachineRequestMetadata +Global___CopyFilesFromMachineRequestMetadata: _TypeAlias = CopyFilesFromMachineRequestMetadata -@typing.final -class CopyFilesFromMachineRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - METADATA_FIELD_NUMBER: builtins.int - ACK_LAST_FILE_FIELD_NUMBER: builtins.int - ack_last_file: builtins.bool +@_typing.final +class CopyFilesFromMachineRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + METADATA_FIELD_NUMBER: _builtins.int + ACK_LAST_FILE_FIELD_NUMBER: _builtins.int + ack_last_file: _builtins.bool 'ack_last_file is sent only after metadata and after each file has been received.\n The value does not matter.\n ' - @property - def metadata(self) -> global___CopyFilesFromMachineRequestMetadata: + @_builtins.property + def metadata(self) -> Global___CopyFilesFromMachineRequestMetadata: """metadata is sent first and only once.""" - def __init__(self, *, metadata: global___CopyFilesFromMachineRequestMetadata | None=..., ack_last_file: builtins.bool=...) -> None: + def __init__(self, *, metadata: Global___CopyFilesFromMachineRequestMetadata | None=..., ack_last_file: _builtins.bool=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['ack_last_file', b'ack_last_file', 'metadata', b'metadata', 'request', b'request'] - def HasField(self, field_name: typing.Literal['ack_last_file', b'ack_last_file', 'metadata', b'metadata', 'request', b'request']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['ack_last_file', b'ack_last_file', 'metadata', b'metadata', 'request', b'request'] - def ClearField(self, field_name: typing.Literal['ack_last_file', b'ack_last_file', 'metadata', b'metadata', 'request', b'request']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_request: _TypeAlias = _typing.Literal['metadata', 'ack_last_file'] + _WhichOneofArgType_request: _TypeAlias = _typing.Literal['request', b'request'] - def WhichOneof(self, oneof_group: typing.Literal['request', b'request']) -> typing.Literal['metadata', 'ack_last_file'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_request) -> _WhichOneofReturnType_request | None: ... -global___CopyFilesFromMachineRequest = CopyFilesFromMachineRequest +Global___CopyFilesFromMachineRequest: _TypeAlias = CopyFilesFromMachineRequest -@typing.final -class CopyFilesFromMachineResponseMetadata(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - SOURCE_TYPE_FIELD_NUMBER: builtins.int - source_type: global___CopyFilesSourceType.ValueType +@_typing.final +class CopyFilesFromMachineResponseMetadata(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + SOURCE_TYPE_FIELD_NUMBER: _builtins.int + source_type: Global___CopyFilesSourceType.ValueType 'source_type is the type of files that will be transmitted in this response stream.' - def __init__(self, *, source_type: global___CopyFilesSourceType.ValueType=...) -> None: + def __init__(self, *, source_type: Global___CopyFilesSourceType.ValueType=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['source_type', b'source_type'] - def ClearField(self, field_name: typing.Literal['source_type', b'source_type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CopyFilesFromMachineResponseMetadata = CopyFilesFromMachineResponseMetadata +Global___CopyFilesFromMachineResponseMetadata: _TypeAlias = CopyFilesFromMachineResponseMetadata -@typing.final -class CopyFilesFromMachineResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - METADATA_FIELD_NUMBER: builtins.int - FILE_DATA_FIELD_NUMBER: builtins.int +@_typing.final +class CopyFilesFromMachineResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + METADATA_FIELD_NUMBER: _builtins.int + FILE_DATA_FIELD_NUMBER: _builtins.int - @property - def metadata(self) -> global___CopyFilesFromMachineResponseMetadata: + @_builtins.property + def metadata(self) -> Global___CopyFilesFromMachineResponseMetadata: """metadata is sent first and only once.""" - @property - def file_data(self) -> global___FileData: + @_builtins.property + def file_data(self) -> Global___FileData: """file_data is sent only after metadata. All data MUST be sent in order per-file. """ - def __init__(self, *, metadata: global___CopyFilesFromMachineResponseMetadata | None=..., file_data: global___FileData | None=...) -> None: + def __init__(self, *, metadata: Global___CopyFilesFromMachineResponseMetadata | None=..., file_data: Global___FileData | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['file_data', b'file_data', 'metadata', b'metadata', 'response', b'response'] - def HasField(self, field_name: typing.Literal['file_data', b'file_data', 'metadata', b'metadata', 'response', b'response']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['file_data', b'file_data', 'metadata', b'metadata', 'response', b'response'] - def ClearField(self, field_name: typing.Literal['file_data', b'file_data', 'metadata', b'metadata', 'response', b'response']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_response: _TypeAlias = _typing.Literal['metadata', 'file_data'] + _WhichOneofArgType_response: _TypeAlias = _typing.Literal['response', b'response'] - def WhichOneof(self, oneof_group: typing.Literal['response', b'response']) -> typing.Literal['metadata', 'file_data'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType_response) -> _WhichOneofReturnType_response | None: ... -global___CopyFilesFromMachineResponse = CopyFilesFromMachineResponse \ No newline at end of file +Global___CopyFilesFromMachineResponse: _TypeAlias = CopyFilesFromMachineResponse \ No newline at end of file diff --git a/src/viam/gen/service/slam/v1/slam_grpc.py b/src/viam/gen/service/slam/v1/slam_grpc.py index ee0378c051..e13b518f28 100644 --- a/src/viam/gen/service/slam/v1/slam_grpc.py +++ b/src/viam/gen/service/slam/v1/slam_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google from .... import service class SLAMServiceBase(abc.ABC): diff --git a/src/viam/gen/service/slam/v1/slam_pb2.py b/src/viam/gen/service/slam/v1/slam_pb2.py index 99fad7b096..236e196407 100644 --- a/src/viam/gen/service/slam/v1/slam_pb2.py +++ b/src/viam/gen/service/slam/v1/slam_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'service/slam/v1/slam.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/slam/v1/slam.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1aservice/slam/v1/slam.proto\x12\x14viam.service.slam.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto"(\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"?\n\x13GetPositionResponse\x12(\n\x04pose\x18\x01 \x01(\x0b2\x14.viam.common.v1.PoseR\x04pose"t\n\x17GetPointCloudMapRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12/\n\x11return_edited_map\x18\x02 \x01(\x08H\x00R\x0freturnEditedMap\x88\x01\x01B\x14\n\x12_return_edited_map"M\n\x18GetPointCloudMapResponse\x121\n\x15point_cloud_pcd_chunk\x18\x01 \x01(\x0cR\x12pointCloudPcdChunk"-\n\x17GetInternalStateRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"L\n\x18GetInternalStateResponse\x120\n\x14internal_state_chunk\x18\x01 \x01(\x0cR\x12internalStateChunk"*\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"\x9a\x02\n\x15GetPropertiesResponse\x12\x1d\n\ncloud_slam\x18\x01 \x01(\x08R\tcloudSlam\x12D\n\x0cmapping_mode\x18\x02 \x01(\x0e2!.viam.service.slam.v1.MappingModeR\x0bmappingMode\x12<\n\x18internal_state_file_type\x18\x03 \x01(\tH\x00R\x15internalStateFileType\x88\x01\x01\x12A\n\x0bsensor_info\x18\x04 \x03(\x0b2 .viam.service.slam.v1.SensorInfoR\nsensorInfoB\x1b\n\x19_internal_state_file_type"V\n\nSensorInfo\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x124\n\x04type\x18\x02 \x01(\x0e2 .viam.service.slam.v1.SensorTypeR\x04type*\x92\x01\n\x0bMappingMode\x12\x1c\n\x18MAPPING_MODE_UNSPECIFIED\x10\x00\x12\x1f\n\x1bMAPPING_MODE_CREATE_NEW_MAP\x10\x01\x12\x1e\n\x1aMAPPING_MODE_LOCALIZE_ONLY\x10\x02\x12$\n MAPPING_MODE_UPDATE_EXISTING_MAP\x10\x03*b\n\nSensorType\x12\x1b\n\x17SENSOR_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12SENSOR_TYPE_CAMERA\x10\x01\x12\x1f\n\x1bSENSOR_TYPE_MOVEMENT_SENSOR\x10\x022\xac\x06\n\x0bSLAMService\x12\x95\x01\n\x0bGetPosition\x12(.viam.service.slam.v1.GetPositionRequest\x1a).viam.service.slam.v1.GetPositionResponse"1\x82\xd3\xe4\x93\x02+\x12)/viam/api/v1/service/slam/{name}/position\x12\xad\x01\n\x10GetPointCloudMap\x12-.viam.service.slam.v1.GetPointCloudMapRequest\x1a..viam.service.slam.v1.GetPointCloudMapResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/service/slam/{name}/point_cloud_map0\x01\x12\xac\x01\n\x10GetInternalState\x12-.viam.service.slam.v1.GetInternalStateRequest\x1a..viam.service.slam.v1.GetInternalStateResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/service/slam/{name}/internal_state0\x01\x12\x9d\x01\n\rGetProperties\x12*.viam.service.slam.v1.GetPropertiesRequest\x1a+.viam.service.slam.v1.GetPropertiesResponse"3\x82\xd3\xe4\x93\x02-\x12+/viam/api/v1/service/slam/{name}/properties\x12\x85\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"3\x82\xd3\xe4\x93\x02-"+/viam/api/v1/service/slam/{name}/do_commandB;\n\x18com.viam.service.slam.v1Z\x1fgo.viam.com/api/service/slam/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/service/slam/v1/slam_pb2.pyi b/src/viam/gen/service/slam/v1/slam_pb2.pyi index c1141f3343..a12fafc5c3 100644 --- a/src/viam/gen/service/slam/v1/slam_pb2.pyi +++ b/src/viam/gen/service/slam/v1/slam_pb2.pyi @@ -2,27 +2,27 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -from .... import common -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message +from collections import abc as _abc +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor class _MappingMode: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _MappingModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MappingMode.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _MappingModeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_MappingMode.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor MAPPING_MODE_UNSPECIFIED: _MappingMode.ValueType MAPPING_MODE_CREATE_NEW_MAP: _MappingMode.ValueType MAPPING_MODE_LOCALIZE_ONLY: _MappingMode.ValueType @@ -37,14 +37,14 @@ MAPPING_MODE_UNSPECIFIED: MappingMode.ValueType MAPPING_MODE_CREATE_NEW_MAP: MappingMode.ValueType MAPPING_MODE_LOCALIZE_ONLY: MappingMode.ValueType MAPPING_MODE_UPDATE_EXISTING_MAP: MappingMode.ValueType -global___MappingMode = MappingMode +Global___MappingMode: _TypeAlias = MappingMode class _SensorType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _SensorTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SensorType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _SensorTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_SensorType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor SENSOR_TYPE_UNSPECIFIED: _SensorType.ValueType SENSOR_TYPE_CAMERA: _SensorType.ValueType SENSOR_TYPE_MOVEMENT_SENSOR: _SensorType.ValueType @@ -54,160 +54,176 @@ class SensorType(_SensorType, metaclass=_SensorTypeEnumTypeWrapper): SENSOR_TYPE_UNSPECIFIED: SensorType.ValueType SENSOR_TYPE_CAMERA: SensorType.ValueType SENSOR_TYPE_MOVEMENT_SENSOR: SensorType.ValueType -global___SensorType = SensorType +Global___SensorType: _TypeAlias = SensorType -@typing.final -class GetPositionRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetPositionRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of slam service' - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPositionRequest = GetPositionRequest +Global___GetPositionRequest: _TypeAlias = GetPositionRequest -@typing.final -class GetPositionResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POSE_FIELD_NUMBER: builtins.int +@_typing.final +class GetPositionResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POSE_FIELD_NUMBER: _builtins.int - @property - def pose(self) -> common.v1.common_pb2.Pose: + @_builtins.property + def pose(self) -> _common_pb2.Pose: """Current position of the specified component in the SLAM Map""" - def __init__(self, *, pose: common.v1.common_pb2.Pose | None=...) -> None: + def __init__(self, *, pose: _common_pb2.Pose | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['pose', b'pose'] - def HasField(self, field_name: typing.Literal['pose', b'pose']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['pose', b'pose'] - def ClearField(self, field_name: typing.Literal['pose', b'pose']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPositionResponse = GetPositionResponse +Global___GetPositionResponse: _TypeAlias = GetPositionResponse -@typing.final -class GetPointCloudMapRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - RETURN_EDITED_MAP_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetPointCloudMapRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + RETURN_EDITED_MAP_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of slam service' - return_edited_map: builtins.bool + return_edited_map: _builtins.bool 'For SLAM services that implement handling an edited map, this boolean\n should indicate whether to return that edited map. If the SLAM service\n does not handle edited maps, the unedited map will be returned instead.\n ' - def __init__(self, *, name: builtins.str=..., return_edited_map: builtins.bool | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., return_edited_map: _builtins.bool | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_return_edited_map', b'_return_edited_map', 'return_edited_map', b'return_edited_map'] - def HasField(self, field_name: typing.Literal['_return_edited_map', b'_return_edited_map', 'return_edited_map', b'return_edited_map']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_return_edited_map', b'_return_edited_map', 'name', b'name', 'return_edited_map', b'return_edited_map'] - def ClearField(self, field_name: typing.Literal['_return_edited_map', b'_return_edited_map', 'name', b'name', 'return_edited_map', b'return_edited_map']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__return_edited_map: _TypeAlias = _typing.Literal['return_edited_map'] + _WhichOneofArgType__return_edited_map: _TypeAlias = _typing.Literal['_return_edited_map', b'_return_edited_map'] - def WhichOneof(self, oneof_group: typing.Literal['_return_edited_map', b'_return_edited_map']) -> typing.Literal['return_edited_map'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__return_edited_map) -> _WhichOneofReturnType__return_edited_map | None: ... -global___GetPointCloudMapRequest = GetPointCloudMapRequest +Global___GetPointCloudMapRequest: _TypeAlias = GetPointCloudMapRequest -@typing.final -class GetPointCloudMapResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - POINT_CLOUD_PCD_CHUNK_FIELD_NUMBER: builtins.int - point_cloud_pcd_chunk: builtins.bytes +@_typing.final +class GetPointCloudMapResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + POINT_CLOUD_PCD_CHUNK_FIELD_NUMBER: _builtins.int + point_cloud_pcd_chunk: _builtins.bytes 'One chunk of the PointCloud.\n For a given GetPointCloudMap request, concatenating all\n GetPointCloudMapResponse.point_cloud_pcd_chunk values in the\n order received result in the complete pointcloud in standard PCD\n format where XY is the ground plane and positive Z is up, following\n the Right Hand Rule.\n\n Read more about the pointcloud format\n [in the docs](https://pointclouds.org/documentation/tutorials/pcd_file_format.html)\n\n Viam expects pointcloud data with fields "x y z" or "x y z rgb", and for\n this to be specified in the pointcloud header in the FIELDS entry. If color\n data is included in the pointcloud, Viam\'s services assume that the color\n value encodes a confidence score for that data point. Viam expects the\n confidence score to be encoded in the blue parameter of the RGB value, on a\n scale from 1-100.\n\n Pointclouds are little endian encoded.\n ' - def __init__(self, *, point_cloud_pcd_chunk: builtins.bytes=...) -> None: + def __init__(self, *, point_cloud_pcd_chunk: _builtins.bytes=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['point_cloud_pcd_chunk', b'point_cloud_pcd_chunk'] - def ClearField(self, field_name: typing.Literal['point_cloud_pcd_chunk', b'point_cloud_pcd_chunk']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPointCloudMapResponse = GetPointCloudMapResponse +Global___GetPointCloudMapResponse: _TypeAlias = GetPointCloudMapResponse -@typing.final -class GetInternalStateRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetInternalStateRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of slam service' - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetInternalStateRequest = GetInternalStateRequest +Global___GetInternalStateRequest: _TypeAlias = GetInternalStateRequest -@typing.final -class GetInternalStateResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - INTERNAL_STATE_CHUNK_FIELD_NUMBER: builtins.int - internal_state_chunk: builtins.bytes +@_typing.final +class GetInternalStateResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + INTERNAL_STATE_CHUNK_FIELD_NUMBER: _builtins.int + internal_state_chunk: _builtins.bytes 'Chunk of the internal state of the SLAM algorithm required to continue\n mapping/localization\n ' - def __init__(self, *, internal_state_chunk: builtins.bytes=...) -> None: + def __init__(self, *, internal_state_chunk: _builtins.bytes=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['internal_state_chunk', b'internal_state_chunk'] - def ClearField(self, field_name: typing.Literal['internal_state_chunk', b'internal_state_chunk']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetInternalStateResponse = GetInternalStateResponse +Global___GetInternalStateResponse: _TypeAlias = GetInternalStateResponse -@typing.final -class GetPropertiesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetPropertiesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of the slam service' - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesRequest = GetPropertiesRequest +Global___GetPropertiesRequest: _TypeAlias = GetPropertiesRequest -@typing.final -class GetPropertiesResponse(google.protobuf.message.Message): +@_typing.final +class GetPropertiesResponse(_message.Message): """Returns properties information for the named slam service""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CLOUD_SLAM_FIELD_NUMBER: builtins.int - MAPPING_MODE_FIELD_NUMBER: builtins.int - INTERNAL_STATE_FILE_TYPE_FIELD_NUMBER: builtins.int - SENSOR_INFO_FIELD_NUMBER: builtins.int - cloud_slam: builtins.bool - mapping_mode: global___MappingMode.ValueType - internal_state_file_type: builtins.str + DESCRIPTOR: _descriptor.Descriptor + CLOUD_SLAM_FIELD_NUMBER: _builtins.int + MAPPING_MODE_FIELD_NUMBER: _builtins.int + INTERNAL_STATE_FILE_TYPE_FIELD_NUMBER: _builtins.int + SENSOR_INFO_FIELD_NUMBER: _builtins.int + cloud_slam: _builtins.bool + mapping_mode: Global___MappingMode.ValueType + internal_state_file_type: _builtins.str - @property - def sensor_info(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SensorInfo]: + @_builtins.property + def sensor_info(self) -> _containers.RepeatedCompositeFieldContainer[Global___SensorInfo]: ... - def __init__(self, *, cloud_slam: builtins.bool=..., mapping_mode: global___MappingMode.ValueType=..., internal_state_file_type: builtins.str | None=..., sensor_info: collections.abc.Iterable[global___SensorInfo] | None=...) -> None: + def __init__(self, *, cloud_slam: _builtins.bool=..., mapping_mode: Global___MappingMode.ValueType=..., internal_state_file_type: _builtins.str | None=..., sensor_info: _abc.Iterable[Global___SensorInfo] | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_internal_state_file_type', b'_internal_state_file_type', 'internal_state_file_type', b'internal_state_file_type'] - def HasField(self, field_name: typing.Literal['_internal_state_file_type', b'_internal_state_file_type', 'internal_state_file_type', b'internal_state_file_type']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_internal_state_file_type', b'_internal_state_file_type', 'cloud_slam', b'cloud_slam', 'internal_state_file_type', b'internal_state_file_type', 'mapping_mode', b'mapping_mode', 'sensor_info', b'sensor_info'] - def ClearField(self, field_name: typing.Literal['_internal_state_file_type', b'_internal_state_file_type', 'cloud_slam', b'cloud_slam', 'internal_state_file_type', b'internal_state_file_type', 'mapping_mode', b'mapping_mode', 'sensor_info', b'sensor_info']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__internal_state_file_type: _TypeAlias = _typing.Literal['internal_state_file_type'] + _WhichOneofArgType__internal_state_file_type: _TypeAlias = _typing.Literal['_internal_state_file_type', b'_internal_state_file_type'] - def WhichOneof(self, oneof_group: typing.Literal['_internal_state_file_type', b'_internal_state_file_type']) -> typing.Literal['internal_state_file_type'] | None: + def WhichOneof(self, oneof_group: _WhichOneofArgType__internal_state_file_type) -> _WhichOneofReturnType__internal_state_file_type | None: ... -global___GetPropertiesResponse = GetPropertiesResponse +Global___GetPropertiesResponse: _TypeAlias = GetPropertiesResponse -@typing.final -class SensorInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - name: builtins.str - type: global___SensorType.ValueType +@_typing.final +class SensorInfo(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + TYPE_FIELD_NUMBER: _builtins.int + name: _builtins.str + type: Global___SensorType.ValueType - def __init__(self, *, name: builtins.str=..., type: global___SensorType.ValueType=...) -> None: + def __init__(self, *, name: _builtins.str=..., type: Global___SensorType.ValueType=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'type', b'type'] - def ClearField(self, field_name: typing.Literal['name', b'name', 'type', b'type']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SensorInfo = SensorInfo \ No newline at end of file +Global___SensorInfo: _TypeAlias = SensorInfo \ No newline at end of file diff --git a/src/viam/gen/service/video/v1/video_grpc.py b/src/viam/gen/service/video/v1/video_grpc.py index fadd8c262e..2f8a26a36b 100644 --- a/src/viam/gen/service/video/v1/video_grpc.py +++ b/src/viam/gen/service/video/v1/video_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 import google.protobuf.timestamp_pb2 from .... import service diff --git a/src/viam/gen/service/video/v1/video_pb2.py b/src/viam/gen/service/video/v1/video_pb2.py index 55a607ee0a..14cdab81e8 100644 --- a/src/viam/gen/service/video/v1/video_pb2.py +++ b/src/viam/gen/service/video/v1/video_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'service/video/v1/video.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/video/v1/video.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cservice/video/v1/video.proto\x12\x15viam.service.video.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto"\xc3\x02\n\x0fGetVideoRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12C\n\x0fstart_timestamp\x18\x02 \x01(\x0b2\x1a.google.protobuf.TimestampR\x0estartTimestamp\x12?\n\rend_timestamp\x18\x03 \x01(\x0b2\x1a.google.protobuf.TimestampR\x0cendTimestamp\x12\x1f\n\x0bvideo_codec\x18\x04 \x01(\tR\nvideoCodec\x12\'\n\x0fvideo_container\x18\x05 \x01(\tR\x0evideoContainer\x12\x1d\n\nrequest_id\x18\x06 \x01(\tR\trequestId\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"y\n\x10GetVideoResponse\x12\x1d\n\nvideo_data\x18\x01 \x01(\x0cR\tvideoData\x12\'\n\x0fvideo_container\x18\x02 \x01(\tR\x0evideoContainer\x12\x1d\n\nrequest_id\x18\x03 \x01(\tR\trequestId2\xb3\x02\n\x0cVideoService\x12\x99\x01\n\x08GetVideo\x12&.viam.service.video.v1.GetVideoRequest\x1a\'.viam.service.video.v1.GetVideoResponse":\x82\xd3\xe4\x93\x024"2/viam/api/v1/service/video/{name}/get_video_stream0\x01\x12\x86\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"4\x82\xd3\xe4\x93\x02.",/viam/api/v1/service/video/{name}/do_commandB=\n\x19com.viam.service.video.v1Z go.viam.com/api/service/video/v1b\x06proto3') diff --git a/src/viam/gen/service/video/v1/video_pb2.pyi b/src/viam/gen/service/video/v1/video_pb2.pyi index f71d6413e0..0e393eabcd 100644 --- a/src/viam/gen/service/video/v1/video_pb2.pyi +++ b/src/viam/gen/service/video/v1/video_pb2.pyi @@ -2,71 +2,79 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import google.protobuf.struct_pb2 -import google.protobuf.timestamp_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor -@typing.final -class GetVideoRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - START_TIMESTAMP_FIELD_NUMBER: builtins.int - END_TIMESTAMP_FIELD_NUMBER: builtins.int - VIDEO_CODEC_FIELD_NUMBER: builtins.int - VIDEO_CONTAINER_FIELD_NUMBER: builtins.int - REQUEST_ID_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetVideoRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + START_TIMESTAMP_FIELD_NUMBER: _builtins.int + END_TIMESTAMP_FIELD_NUMBER: _builtins.int + VIDEO_CODEC_FIELD_NUMBER: _builtins.int + VIDEO_CONTAINER_FIELD_NUMBER: _builtins.int + REQUEST_ID_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of the video source' - video_codec: builtins.str + video_codec: _builtins.str 'Codec for the video retrieval (e.g., "h264", "h265")' - video_container: builtins.str + video_container: _builtins.str 'Container format for the video retrieval (e.g., "mp4", "fmp4")' - request_id: builtins.str + request_id: _builtins.str 'To match a request to its responses' - @property - def start_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def start_timestamp(self) -> _timestamp_pb2.Timestamp: """Start time for the video retrieval""" - @property - def end_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: + @_builtins.property + def end_timestamp(self) -> _timestamp_pb2.Timestamp: """End time for the video retrieval""" - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., start_timestamp: google.protobuf.timestamp_pb2.Timestamp | None=..., end_timestamp: google.protobuf.timestamp_pb2.Timestamp | None=..., video_codec: builtins.str=..., video_container: builtins.str=..., request_id: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., start_timestamp: _timestamp_pb2.Timestamp | None=..., end_timestamp: _timestamp_pb2.Timestamp | None=..., video_codec: _builtins.str=..., video_container: _builtins.str=..., request_id: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['end_timestamp', b'end_timestamp', 'extra', b'extra', 'start_timestamp', b'start_timestamp'] - def HasField(self, field_name: typing.Literal['end_timestamp', b'end_timestamp', 'extra', b'extra', 'start_timestamp', b'start_timestamp']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['end_timestamp', b'end_timestamp', 'extra', b'extra', 'name', b'name', 'request_id', b'request_id', 'start_timestamp', b'start_timestamp', 'video_codec', b'video_codec', 'video_container', b'video_container'] - def ClearField(self, field_name: typing.Literal['end_timestamp', b'end_timestamp', 'extra', b'extra', 'name', b'name', 'request_id', b'request_id', 'start_timestamp', b'start_timestamp', 'video_codec', b'video_codec', 'video_container', b'video_container']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetVideoRequest = GetVideoRequest +Global___GetVideoRequest: _TypeAlias = GetVideoRequest -@typing.final -class GetVideoResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VIDEO_DATA_FIELD_NUMBER: builtins.int - VIDEO_CONTAINER_FIELD_NUMBER: builtins.int - REQUEST_ID_FIELD_NUMBER: builtins.int - video_data: builtins.bytes +@_typing.final +class GetVideoResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + VIDEO_DATA_FIELD_NUMBER: _builtins.int + VIDEO_CONTAINER_FIELD_NUMBER: _builtins.int + REQUEST_ID_FIELD_NUMBER: _builtins.int + video_data: _builtins.bytes 'Video data chunk' - video_container: builtins.str + video_container: _builtins.str 'Container format (e.g., "mp4", "fmp4")' - request_id: builtins.str + request_id: _builtins.str 'Request ID to match this response to its request' - def __init__(self, *, video_data: builtins.bytes=..., video_container: builtins.str=..., request_id: builtins.str=...) -> None: + def __init__(self, *, video_data: _builtins.bytes=..., video_container: _builtins.str=..., request_id: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['request_id', b'request_id', 'video_container', b'video_container', 'video_data', b'video_data'] - def ClearField(self, field_name: typing.Literal['request_id', b'request_id', 'video_container', b'video_container', 'video_data', b'video_data']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetVideoResponse = GetVideoResponse \ No newline at end of file +Global___GetVideoResponse: _TypeAlias = GetVideoResponse \ No newline at end of file diff --git a/src/viam/gen/service/vision/v1/vision_grpc.py b/src/viam/gen/service/vision/v1/vision_grpc.py index 474d1ae2ec..d9de71244c 100644 --- a/src/viam/gen/service/vision/v1/vision_grpc.py +++ b/src/viam/gen/service/vision/v1/vision_grpc.py @@ -7,7 +7,7 @@ import grpclib.server from .... import common from .... import component -import google.api.annotations_pb2 +from .... import google import google.protobuf.struct_pb2 from .... import service diff --git a/src/viam/gen/service/vision/v1/vision_pb2.py b/src/viam/gen/service/vision/v1/vision_pb2.py index a6fc4c0745..93015f0125 100644 --- a/src/viam/gen/service/vision/v1/vision_pb2.py +++ b/src/viam/gen/service/vision/v1/vision_pb2.py @@ -4,11 +4,11 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'service/vision/v1/vision.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/vision/v1/vision.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from ....component.camera.v1 import camera_pb2 as component_dot_camera_dot_v1_dot_camera__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1eservice/vision/v1/vision.proto\x12\x16viam.service.vision.v1\x1a\x16common/v1/common.proto\x1a component/camera/v1/camera.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"\xba\x01\n\x14GetDetectionsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n\x05image\x18\x02 \x01(\x0cR\x05image\x12\x14\n\x05width\x18\x03 \x01(\x03R\x05width\x12\x16\n\x06height\x18\x04 \x01(\x03R\x06height\x12\x1b\n\tmime_type\x18\x05 \x01(\tR\x08mimeType\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"Z\n\x15GetDetectionsResponse\x12A\n\ndetections\x18\x01 \x03(\x0b2!.viam.service.vision.v1.DetectionR\ndetections"\x84\x01\n\x1eGetDetectionsFromCameraRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x0bcamera_name\x18\x02 \x01(\tR\ncameraName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"d\n\x1fGetDetectionsFromCameraResponse\x12A\n\ndetections\x18\x01 \x03(\x0b2!.viam.service.vision.v1.DetectionR\ndetections"\xea\x03\n\tDetection\x12\x18\n\x05x_min\x18\x01 \x01(\x03H\x00R\x04xMin\x88\x01\x01\x12\x18\n\x05y_min\x18\x02 \x01(\x03H\x01R\x04yMin\x88\x01\x01\x12\x18\n\x05x_max\x18\x03 \x01(\x03H\x02R\x04xMax\x88\x01\x01\x12\x18\n\x05y_max\x18\x04 \x01(\x03H\x03R\x04yMax\x88\x01\x01\x12\x1e\n\nconfidence\x18\x05 \x01(\x01R\nconfidence\x12\x1d\n\nclass_name\x18\x06 \x01(\tR\tclassName\x12-\n\x10x_min_normalized\x18\x07 \x01(\x01H\x04R\x0exMinNormalized\x88\x01\x01\x12-\n\x10y_min_normalized\x18\x08 \x01(\x01H\x05R\x0eyMinNormalized\x88\x01\x01\x12-\n\x10x_max_normalized\x18\t \x01(\x01H\x06R\x0exMaxNormalized\x88\x01\x01\x12-\n\x10y_max_normalized\x18\n \x01(\x01H\x07R\x0eyMaxNormalized\x88\x01\x01B\x08\n\x06_x_minB\x08\n\x06_y_minB\x08\n\x06_x_maxB\x08\n\x06_y_maxB\x13\n\x11_x_min_normalizedB\x13\n\x11_y_min_normalizedB\x13\n\x11_x_max_normalizedB\x13\n\x11_y_max_normalized"\xcd\x01\n\x19GetClassificationsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n\x05image\x18\x02 \x01(\x0cR\x05image\x12\x14\n\x05width\x18\x03 \x01(\x05R\x05width\x12\x16\n\x06height\x18\x04 \x01(\x05R\x06height\x12\x1b\n\tmime_type\x18\x05 \x01(\tR\x08mimeType\x12\x0c\n\x01n\x18\x06 \x01(\x05R\x01n\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"n\n\x1aGetClassificationsResponse\x12P\n\x0fclassifications\x18\x01 \x03(\x0b2&.viam.service.vision.v1.ClassificationR\x0fclassifications"\x97\x01\n#GetClassificationsFromCameraRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x0bcamera_name\x18\x02 \x01(\tR\ncameraName\x12\x0c\n\x01n\x18\x03 \x01(\x05R\x01n\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"x\n$GetClassificationsFromCameraResponse\x12P\n\x0fclassifications\x18\x01 \x03(\x0b2&.viam.service.vision.v1.ClassificationR\x0fclassifications"O\n\x0eClassification\x12\x1d\n\nclass_name\x18\x01 \x01(\tR\tclassName\x12\x1e\n\nconfidence\x18\x02 \x01(\x01R\nconfidence"\x9e\x01\n\x1bGetObjectPointCloudsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x0bcamera_name\x18\x02 \x01(\tR\ncameraName\x12\x1b\n\tmime_type\x18\x03 \x01(\tR\x08mimeType\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"w\n\x1cGetObjectPointCloudsResponse\x12\x1b\n\tmime_type\x18\x01 \x01(\tR\x08mimeType\x12:\n\x07objects\x18\x02 \x03(\x0b2 .viam.common.v1.PointCloudObjectR\x07objects"Y\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xc5\x02\n\x1bCaptureAllFromCameraRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x0bcamera_name\x18\x02 \x01(\tR\ncameraName\x12!\n\x0creturn_image\x18\x03 \x01(\x08R\x0breturnImage\x125\n\x16return_classifications\x18\x04 \x01(\x08R\x15returnClassifications\x12+\n\x11return_detections\x18\x05 \x01(\x08R\x10returnDetections\x12;\n\x1areturn_object_point_clouds\x18\x06 \x01(\x08R\x17returnObjectPointClouds\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xd5\x02\n\x1cCaptureAllFromCameraResponse\x125\n\x05image\x18\x01 \x01(\x0b2\x1f.viam.component.camera.v1.ImageR\x05image\x12A\n\ndetections\x18\x02 \x03(\x0b2!.viam.service.vision.v1.DetectionR\ndetections\x12P\n\x0fclassifications\x18\x03 \x03(\x0b2&.viam.service.vision.v1.ClassificationR\x0fclassifications\x12:\n\x07objects\x18\x04 \x03(\x0b2 .viam.common.v1.PointCloudObjectR\x07objects\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xca\x01\n\x15GetPropertiesResponse\x12;\n\x19classifications_supported\x18\x01 \x01(\x08R\x18classificationsSupported\x121\n\x14detections_supported\x18\x02 \x01(\x08R\x13detectionsSupported\x12A\n\x1dobject_point_clouds_supported\x18\x03 \x01(\x08R\x1aobjectPointCloudsSupported2\xcd\x0b\n\rVisionService\x12\xc8\x01\n\x17GetDetectionsFromCamera\x126.viam.service.vision.v1.GetDetectionsFromCameraRequest\x1a7.viam.service.vision.v1.GetDetectionsFromCameraResponse"<\x82\xd3\xe4\x93\x026"4/viam/api/v1/service/vision/{name}/camera_detections\x12\xa3\x01\n\rGetDetections\x12,.viam.service.vision.v1.GetDetectionsRequest\x1a-.viam.service.vision.v1.GetDetectionsResponse"5\x82\xd3\xe4\x93\x02/"-/viam/api/v1/service/vision/{name}/detections\x12\xdc\x01\n\x1cGetClassificationsFromCamera\x12;.viam.service.vision.v1.GetClassificationsFromCameraRequest\x1a<.viam.service.vision.v1.GetClassificationsFromCameraResponse"A\x82\xd3\xe4\x93\x02;"9/viam/api/v1/service/vision/{name}/camera_classifications\x12\xb7\x01\n\x12GetClassifications\x121.viam.service.vision.v1.GetClassificationsRequest\x1a2.viam.service.vision.v1.GetClassificationsResponse":\x82\xd3\xe4\x93\x024"2/viam/api/v1/service/vision/{name}/classifications\x12\xc1\x01\n\x14GetObjectPointClouds\x123.viam.service.vision.v1.GetObjectPointCloudsRequest\x1a4.viam.service.vision.v1.GetObjectPointCloudsResponse">\x82\xd3\xe4\x93\x028"6/viam/api/v1/service/vision/{name}/object_point_clouds\x12\xa7\x01\n\rGetProperties\x12,.viam.service.vision.v1.GetPropertiesRequest\x1a-.viam.service.vision.v1.GetPropertiesResponse"9\x82\xd3\xe4\x93\x023"1/viam/api/v1/service/vision/{name}/get_properties\x12\xb9\x01\n\x14CaptureAllFromCamera\x123.viam.service.vision.v1.CaptureAllFromCameraRequest\x1a4.viam.service.vision.v1.CaptureAllFromCameraResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/service/vision/{name}/capture_all\x12\x87\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"5\x82\xd3\xe4\x93\x02/"-/viam/api/v1/service/vision/{name}/do_commandB?\n\x1acom.viam.service.vision.v1Z!go.viam.com/api/service/vision/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/service/vision/v1/vision_pb2.pyi b/src/viam/gen/service/vision/v1/vision_pb2.pyi index 8989ebbaf0..2bf98d6251 100644 --- a/src/viam/gen/service/vision/v1/vision_pb2.pyi +++ b/src/viam/gen/service/vision/v1/vision_pb2.pyi @@ -2,453 +2,499 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -from .... import common -from .... import component -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import google.protobuf.struct_pb2 -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class GetDetectionsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - IMAGE_FIELD_NUMBER: builtins.int - WIDTH_FIELD_NUMBER: builtins.int - HEIGHT_FIELD_NUMBER: builtins.int - MIME_TYPE_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +from collections import abc as _abc +from common.v1 import common_pb2 as _common_pb2 +from component.camera.v1 import camera_pb2 as _camera_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class GetDetectionsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + IMAGE_FIELD_NUMBER: _builtins.int + WIDTH_FIELD_NUMBER: _builtins.int + HEIGHT_FIELD_NUMBER: _builtins.int + MIME_TYPE_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'name of the vision service' - image: builtins.bytes + image: _builtins.bytes 'the image, encoded as bytes' - width: builtins.int + width: _builtins.int 'the width of the image' - height: builtins.int + height: _builtins.int 'the height of the image' - mime_type: builtins.str + mime_type: _builtins.str 'the actual MIME type of image' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., image: builtins.bytes=..., width: builtins.int=..., height: builtins.int=..., mime_type: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., image: _builtins.bytes=..., width: _builtins.int=..., height: _builtins.int=..., mime_type: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'height', b'height', 'image', b'image', 'mime_type', b'mime_type', 'name', b'name', 'width', b'width'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'height', b'height', 'image', b'image', 'mime_type', b'mime_type', 'name', b'name', 'width', b'width']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetDetectionsRequest = GetDetectionsRequest +Global___GetDetectionsRequest: _TypeAlias = GetDetectionsRequest -@typing.final -class GetDetectionsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DETECTIONS_FIELD_NUMBER: builtins.int +@_typing.final +class GetDetectionsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DETECTIONS_FIELD_NUMBER: _builtins.int - @property - def detections(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Detection]: + @_builtins.property + def detections(self) -> _containers.RepeatedCompositeFieldContainer[Global___Detection]: """the bounding boxes and labels""" - def __init__(self, *, detections: collections.abc.Iterable[global___Detection] | None=...) -> None: + def __init__(self, *, detections: _abc.Iterable[Global___Detection] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['detections', b'detections'] - def ClearField(self, field_name: typing.Literal['detections', b'detections']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetDetectionsResponse = GetDetectionsResponse +Global___GetDetectionsResponse: _TypeAlias = GetDetectionsResponse -@typing.final -class GetDetectionsFromCameraRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - CAMERA_NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetDetectionsFromCameraRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + CAMERA_NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'name of the vision service' - camera_name: builtins.str + camera_name: _builtins.str 'name of camera source to use as input' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., camera_name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., camera_name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['camera_name', b'camera_name', 'extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['camera_name', b'camera_name', 'extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetDetectionsFromCameraRequest = GetDetectionsFromCameraRequest +Global___GetDetectionsFromCameraRequest: _TypeAlias = GetDetectionsFromCameraRequest -@typing.final -class GetDetectionsFromCameraResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DETECTIONS_FIELD_NUMBER: builtins.int +@_typing.final +class GetDetectionsFromCameraResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + DETECTIONS_FIELD_NUMBER: _builtins.int - @property - def detections(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Detection]: + @_builtins.property + def detections(self) -> _containers.RepeatedCompositeFieldContainer[Global___Detection]: """the bounding boxes and labels""" - def __init__(self, *, detections: collections.abc.Iterable[global___Detection] | None=...) -> None: + def __init__(self, *, detections: _abc.Iterable[Global___Detection] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['detections', b'detections'] - def ClearField(self, field_name: typing.Literal['detections', b'detections']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetDetectionsFromCameraResponse = GetDetectionsFromCameraResponse +Global___GetDetectionsFromCameraResponse: _TypeAlias = GetDetectionsFromCameraResponse -@typing.final -class Detection(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - X_MIN_FIELD_NUMBER: builtins.int - Y_MIN_FIELD_NUMBER: builtins.int - X_MAX_FIELD_NUMBER: builtins.int - Y_MAX_FIELD_NUMBER: builtins.int - CONFIDENCE_FIELD_NUMBER: builtins.int - CLASS_NAME_FIELD_NUMBER: builtins.int - X_MIN_NORMALIZED_FIELD_NUMBER: builtins.int - Y_MIN_NORMALIZED_FIELD_NUMBER: builtins.int - X_MAX_NORMALIZED_FIELD_NUMBER: builtins.int - Y_MAX_NORMALIZED_FIELD_NUMBER: builtins.int - x_min: builtins.int +@_typing.final +class Detection(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + X_MIN_FIELD_NUMBER: _builtins.int + Y_MIN_FIELD_NUMBER: _builtins.int + X_MAX_FIELD_NUMBER: _builtins.int + Y_MAX_FIELD_NUMBER: _builtins.int + CONFIDENCE_FIELD_NUMBER: _builtins.int + CLASS_NAME_FIELD_NUMBER: _builtins.int + X_MIN_NORMALIZED_FIELD_NUMBER: _builtins.int + Y_MIN_NORMALIZED_FIELD_NUMBER: _builtins.int + X_MAX_NORMALIZED_FIELD_NUMBER: _builtins.int + Y_MAX_NORMALIZED_FIELD_NUMBER: _builtins.int + x_min: _builtins.int 'the four corners of the box' - y_min: builtins.int - x_max: builtins.int - y_max: builtins.int - confidence: builtins.float + y_min: _builtins.int + x_max: _builtins.int + y_max: _builtins.int + confidence: _builtins.float 'the confidence of the detection' - class_name: builtins.str + class_name: _builtins.str 'label associated with the detected object' - x_min_normalized: builtins.float + x_min_normalized: _builtins.float 'the four corners of the box, in proportion to the respective image dimension' - y_min_normalized: builtins.float - x_max_normalized: builtins.float - y_max_normalized: builtins.float + y_min_normalized: _builtins.float + x_max_normalized: _builtins.float + y_max_normalized: _builtins.float - def __init__(self, *, x_min: builtins.int | None=..., y_min: builtins.int | None=..., x_max: builtins.int | None=..., y_max: builtins.int | None=..., confidence: builtins.float=..., class_name: builtins.str=..., x_min_normalized: builtins.float | None=..., y_min_normalized: builtins.float | None=..., x_max_normalized: builtins.float | None=..., y_max_normalized: builtins.float | None=...) -> None: + def __init__(self, *, x_min: _builtins.int | None=..., y_min: _builtins.int | None=..., x_max: _builtins.int | None=..., y_max: _builtins.int | None=..., confidence: _builtins.float=..., class_name: _builtins.str=..., x_min_normalized: _builtins.float | None=..., y_min_normalized: _builtins.float | None=..., x_max_normalized: _builtins.float | None=..., y_max_normalized: _builtins.float | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['_x_max', b'_x_max', '_x_max_normalized', b'_x_max_normalized', '_x_min', b'_x_min', '_x_min_normalized', b'_x_min_normalized', '_y_max', b'_y_max', '_y_max_normalized', b'_y_max_normalized', '_y_min', b'_y_min', '_y_min_normalized', b'_y_min_normalized', 'x_max', b'x_max', 'x_max_normalized', b'x_max_normalized', 'x_min', b'x_min', 'x_min_normalized', b'x_min_normalized', 'y_max', b'y_max', 'y_max_normalized', b'y_max_normalized', 'y_min', b'y_min', 'y_min_normalized', b'y_min_normalized'] - def HasField(self, field_name: typing.Literal['_x_max', b'_x_max', '_x_max_normalized', b'_x_max_normalized', '_x_min', b'_x_min', '_x_min_normalized', b'_x_min_normalized', '_y_max', b'_y_max', '_y_max_normalized', b'_y_max_normalized', '_y_min', b'_y_min', '_y_min_normalized', b'_y_min_normalized', 'x_max', b'x_max', 'x_max_normalized', b'x_max_normalized', 'x_min', b'x_min', 'x_min_normalized', b'x_min_normalized', 'y_max', b'y_max', 'y_max_normalized', b'y_max_normalized', 'y_min', b'y_min', 'y_min_normalized', b'y_min_normalized']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['_x_max', b'_x_max', '_x_max_normalized', b'_x_max_normalized', '_x_min', b'_x_min', '_x_min_normalized', b'_x_min_normalized', '_y_max', b'_y_max', '_y_max_normalized', b'_y_max_normalized', '_y_min', b'_y_min', '_y_min_normalized', b'_y_min_normalized', 'class_name', b'class_name', 'confidence', b'confidence', 'x_max', b'x_max', 'x_max_normalized', b'x_max_normalized', 'x_min', b'x_min', 'x_min_normalized', b'x_min_normalized', 'y_max', b'y_max', 'y_max_normalized', b'y_max_normalized', 'y_min', b'y_min', 'y_min_normalized', b'y_min_normalized'] - def ClearField(self, field_name: typing.Literal['_x_max', b'_x_max', '_x_max_normalized', b'_x_max_normalized', '_x_min', b'_x_min', '_x_min_normalized', b'_x_min_normalized', '_y_max', b'_y_max', '_y_max_normalized', b'_y_max_normalized', '_y_min', b'_y_min', '_y_min_normalized', b'_y_min_normalized', 'class_name', b'class_name', 'confidence', b'confidence', 'x_max', b'x_max', 'x_max_normalized', b'x_max_normalized', 'x_min', b'x_min', 'x_min_normalized', b'x_min_normalized', 'y_max', b'y_max', 'y_max_normalized', b'y_max_normalized', 'y_min', b'y_min', 'y_min_normalized', b'y_min_normalized']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__x_max: _TypeAlias = _typing.Literal['x_max'] + _WhichOneofArgType__x_max: _TypeAlias = _typing.Literal['_x_max', b'_x_max'] + _WhichOneofReturnType__x_max_normalized: _TypeAlias = _typing.Literal['x_max_normalized'] + _WhichOneofArgType__x_max_normalized: _TypeAlias = _typing.Literal['_x_max_normalized', b'_x_max_normalized'] + _WhichOneofReturnType__x_min: _TypeAlias = _typing.Literal['x_min'] + _WhichOneofArgType__x_min: _TypeAlias = _typing.Literal['_x_min', b'_x_min'] + _WhichOneofReturnType__x_min_normalized: _TypeAlias = _typing.Literal['x_min_normalized'] + _WhichOneofArgType__x_min_normalized: _TypeAlias = _typing.Literal['_x_min_normalized', b'_x_min_normalized'] + _WhichOneofReturnType__y_max: _TypeAlias = _typing.Literal['y_max'] + _WhichOneofArgType__y_max: _TypeAlias = _typing.Literal['_y_max', b'_y_max'] + _WhichOneofReturnType__y_max_normalized: _TypeAlias = _typing.Literal['y_max_normalized'] + _WhichOneofArgType__y_max_normalized: _TypeAlias = _typing.Literal['_y_max_normalized', b'_y_max_normalized'] + _WhichOneofReturnType__y_min: _TypeAlias = _typing.Literal['y_min'] + _WhichOneofArgType__y_min: _TypeAlias = _typing.Literal['_y_min', b'_y_min'] + _WhichOneofReturnType__y_min_normalized: _TypeAlias = _typing.Literal['y_min_normalized'] + _WhichOneofArgType__y_min_normalized: _TypeAlias = _typing.Literal['_y_min_normalized', b'_y_min_normalized'] - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_x_max', b'_x_max']) -> typing.Literal['x_max'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__x_max) -> _WhichOneofReturnType__x_max | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_x_max_normalized', b'_x_max_normalized']) -> typing.Literal['x_max_normalized'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__x_max_normalized) -> _WhichOneofReturnType__x_max_normalized | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_x_min', b'_x_min']) -> typing.Literal['x_min'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__x_min) -> _WhichOneofReturnType__x_min | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_x_min_normalized', b'_x_min_normalized']) -> typing.Literal['x_min_normalized'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__x_min_normalized) -> _WhichOneofReturnType__x_min_normalized | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_y_max', b'_y_max']) -> typing.Literal['y_max'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__y_max) -> _WhichOneofReturnType__y_max | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_y_max_normalized', b'_y_max_normalized']) -> typing.Literal['y_max_normalized'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__y_max_normalized) -> _WhichOneofReturnType__y_max_normalized | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_y_min', b'_y_min']) -> typing.Literal['y_min'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__y_min) -> _WhichOneofReturnType__y_min | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal['_y_min_normalized', b'_y_min_normalized']) -> typing.Literal['y_min_normalized'] | None: + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__y_min_normalized) -> _WhichOneofReturnType__y_min_normalized | None: ... -global___Detection = Detection +Global___Detection: _TypeAlias = Detection -@typing.final -class GetClassificationsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - IMAGE_FIELD_NUMBER: builtins.int - WIDTH_FIELD_NUMBER: builtins.int - HEIGHT_FIELD_NUMBER: builtins.int - MIME_TYPE_FIELD_NUMBER: builtins.int - N_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetClassificationsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + IMAGE_FIELD_NUMBER: _builtins.int + WIDTH_FIELD_NUMBER: _builtins.int + HEIGHT_FIELD_NUMBER: _builtins.int + MIME_TYPE_FIELD_NUMBER: _builtins.int + N_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'name of the vision service' - image: builtins.bytes + image: _builtins.bytes 'the image encoded as bytes' - width: builtins.int + width: _builtins.int 'the width of the image' - height: builtins.int + height: _builtins.int 'the height of the image' - mime_type: builtins.str + mime_type: _builtins.str 'the actual MIME type of image' - n: builtins.int + n: _builtins.int 'the number of classifications desired' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., image: builtins.bytes=..., width: builtins.int=..., height: builtins.int=..., mime_type: builtins.str=..., n: builtins.int=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., image: _builtins.bytes=..., width: _builtins.int=..., height: _builtins.int=..., mime_type: _builtins.str=..., n: _builtins.int=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'height', b'height', 'image', b'image', 'mime_type', b'mime_type', 'n', b'n', 'name', b'name', 'width', b'width'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'height', b'height', 'image', b'image', 'mime_type', b'mime_type', 'n', b'n', 'name', b'name', 'width', b'width']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetClassificationsRequest = GetClassificationsRequest +Global___GetClassificationsRequest: _TypeAlias = GetClassificationsRequest -@typing.final -class GetClassificationsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CLASSIFICATIONS_FIELD_NUMBER: builtins.int +@_typing.final +class GetClassificationsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CLASSIFICATIONS_FIELD_NUMBER: _builtins.int - @property - def classifications(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Classification]: + @_builtins.property + def classifications(self) -> _containers.RepeatedCompositeFieldContainer[Global___Classification]: ... - def __init__(self, *, classifications: collections.abc.Iterable[global___Classification] | None=...) -> None: + def __init__(self, *, classifications: _abc.Iterable[Global___Classification] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['classifications', b'classifications'] - def ClearField(self, field_name: typing.Literal['classifications', b'classifications']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetClassificationsResponse = GetClassificationsResponse +Global___GetClassificationsResponse: _TypeAlias = GetClassificationsResponse -@typing.final -class GetClassificationsFromCameraRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - CAMERA_NAME_FIELD_NUMBER: builtins.int - N_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetClassificationsFromCameraRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + CAMERA_NAME_FIELD_NUMBER: _builtins.int + N_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'name of the vision service' - camera_name: builtins.str + camera_name: _builtins.str 'the image encoded as bytes' - n: builtins.int + n: _builtins.int 'the number of classifications desired' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., camera_name: builtins.str=..., n: builtins.int=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., camera_name: _builtins.str=..., n: _builtins.int=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['camera_name', b'camera_name', 'extra', b'extra', 'n', b'n', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['camera_name', b'camera_name', 'extra', b'extra', 'n', b'n', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetClassificationsFromCameraRequest = GetClassificationsFromCameraRequest +Global___GetClassificationsFromCameraRequest: _TypeAlias = GetClassificationsFromCameraRequest -@typing.final -class GetClassificationsFromCameraResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CLASSIFICATIONS_FIELD_NUMBER: builtins.int +@_typing.final +class GetClassificationsFromCameraResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CLASSIFICATIONS_FIELD_NUMBER: _builtins.int - @property - def classifications(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Classification]: + @_builtins.property + def classifications(self) -> _containers.RepeatedCompositeFieldContainer[Global___Classification]: ... - def __init__(self, *, classifications: collections.abc.Iterable[global___Classification] | None=...) -> None: + def __init__(self, *, classifications: _abc.Iterable[Global___Classification] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['classifications', b'classifications'] - def ClearField(self, field_name: typing.Literal['classifications', b'classifications']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetClassificationsFromCameraResponse = GetClassificationsFromCameraResponse +Global___GetClassificationsFromCameraResponse: _TypeAlias = GetClassificationsFromCameraResponse -@typing.final -class Classification(google.protobuf.message.Message): +@_typing.final +class Classification(_message.Message): """the general form of the output from a classifier""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CLASS_NAME_FIELD_NUMBER: builtins.int - CONFIDENCE_FIELD_NUMBER: builtins.int - class_name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + CLASS_NAME_FIELD_NUMBER: _builtins.int + CONFIDENCE_FIELD_NUMBER: _builtins.int + class_name: _builtins.str 'the class name' - confidence: builtins.float + confidence: _builtins.float 'the confidence score of the classification' - def __init__(self, *, class_name: builtins.str=..., confidence: builtins.float=...) -> None: + def __init__(self, *, class_name: _builtins.str=..., confidence: _builtins.float=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['class_name', b'class_name', 'confidence', b'confidence'] - def ClearField(self, field_name: typing.Literal['class_name', b'class_name', 'confidence', b'confidence']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Classification = Classification +Global___Classification: _TypeAlias = Classification -@typing.final -class GetObjectPointCloudsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - CAMERA_NAME_FIELD_NUMBER: builtins.int - MIME_TYPE_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str - camera_name: builtins.str +@_typing.final +class GetObjectPointCloudsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + CAMERA_NAME_FIELD_NUMBER: _builtins.int + MIME_TYPE_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str + camera_name: _builtins.str 'Name of a camera' - mime_type: builtins.str + mime_type: _builtins.str 'Requested MIME type of response' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., camera_name: builtins.str=..., mime_type: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., camera_name: _builtins.str=..., mime_type: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['camera_name', b'camera_name', 'extra', b'extra', 'mime_type', b'mime_type', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['camera_name', b'camera_name', 'extra', b'extra', 'mime_type', b'mime_type', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetObjectPointCloudsRequest = GetObjectPointCloudsRequest +Global___GetObjectPointCloudsRequest: _TypeAlias = GetObjectPointCloudsRequest -@typing.final -class GetObjectPointCloudsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - MIME_TYPE_FIELD_NUMBER: builtins.int - OBJECTS_FIELD_NUMBER: builtins.int - mime_type: builtins.str +@_typing.final +class GetObjectPointCloudsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + MIME_TYPE_FIELD_NUMBER: _builtins.int + OBJECTS_FIELD_NUMBER: _builtins.int + mime_type: _builtins.str 'Actual MIME type of response' - @property - def objects(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.PointCloudObject]: + @_builtins.property + def objects(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.PointCloudObject]: """List of objects in the scene""" - def __init__(self, *, mime_type: builtins.str=..., objects: collections.abc.Iterable[common.v1.common_pb2.PointCloudObject] | None=...) -> None: + def __init__(self, *, mime_type: _builtins.str=..., objects: _abc.Iterable[_common_pb2.PointCloudObject] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['mime_type', b'mime_type', 'objects', b'objects'] - def ClearField(self, field_name: typing.Literal['mime_type', b'mime_type', 'objects', b'objects']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetObjectPointCloudsResponse = GetObjectPointCloudsResponse +Global___GetObjectPointCloudsResponse: _TypeAlias = GetObjectPointCloudsResponse -@typing.final -class GetPropertiesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetPropertiesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'name of the vision service' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesRequest = GetPropertiesRequest +Global___GetPropertiesRequest: _TypeAlias = GetPropertiesRequest -@typing.final -class CaptureAllFromCameraRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - CAMERA_NAME_FIELD_NUMBER: builtins.int - RETURN_IMAGE_FIELD_NUMBER: builtins.int - RETURN_CLASSIFICATIONS_FIELD_NUMBER: builtins.int - RETURN_DETECTIONS_FIELD_NUMBER: builtins.int - RETURN_OBJECT_POINT_CLOUDS_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class CaptureAllFromCameraRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + CAMERA_NAME_FIELD_NUMBER: _builtins.int + RETURN_IMAGE_FIELD_NUMBER: _builtins.int + RETURN_CLASSIFICATIONS_FIELD_NUMBER: _builtins.int + RETURN_DETECTIONS_FIELD_NUMBER: _builtins.int + RETURN_OBJECT_POINT_CLOUDS_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'name of the vision service' - camera_name: builtins.str + camera_name: _builtins.str 'name of camera source to use as input' - return_image: builtins.bool + return_image: _builtins.bool 'whether or not including the image in the response' - return_classifications: builtins.bool + return_classifications: _builtins.bool 'whether or not including classifications in the response' - return_detections: builtins.bool + return_detections: _builtins.bool 'whether or not including detections in the response' - return_object_point_clouds: builtins.bool + return_object_point_clouds: _builtins.bool 'whether or not including pcd in the response' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, name: builtins.str=..., camera_name: builtins.str=..., return_image: builtins.bool=..., return_classifications: builtins.bool=..., return_detections: builtins.bool=..., return_object_point_clouds: builtins.bool=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., camera_name: _builtins.str=..., return_image: _builtins.bool=..., return_classifications: _builtins.bool=..., return_detections: _builtins.bool=..., return_object_point_clouds: _builtins.bool=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['camera_name', b'camera_name', 'extra', b'extra', 'name', b'name', 'return_classifications', b'return_classifications', 'return_detections', b'return_detections', 'return_image', b'return_image', 'return_object_point_clouds', b'return_object_point_clouds'] - def ClearField(self, field_name: typing.Literal['camera_name', b'camera_name', 'extra', b'extra', 'name', b'name', 'return_classifications', b'return_classifications', 'return_detections', b'return_detections', 'return_image', b'return_image', 'return_object_point_clouds', b'return_object_point_clouds']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CaptureAllFromCameraRequest = CaptureAllFromCameraRequest +Global___CaptureAllFromCameraRequest: _TypeAlias = CaptureAllFromCameraRequest -@typing.final -class CaptureAllFromCameraResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - IMAGE_FIELD_NUMBER: builtins.int - DETECTIONS_FIELD_NUMBER: builtins.int - CLASSIFICATIONS_FIELD_NUMBER: builtins.int - OBJECTS_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int +@_typing.final +class CaptureAllFromCameraResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + IMAGE_FIELD_NUMBER: _builtins.int + DETECTIONS_FIELD_NUMBER: _builtins.int + CLASSIFICATIONS_FIELD_NUMBER: _builtins.int + OBJECTS_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int - @property - def image(self) -> component.camera.v1.camera_pb2.Image: + @_builtins.property + def image(self) -> _camera_pb2.Image: ... - @property - def detections(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Detection]: + @_builtins.property + def detections(self) -> _containers.RepeatedCompositeFieldContainer[Global___Detection]: ... - @property - def classifications(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Classification]: + @_builtins.property + def classifications(self) -> _containers.RepeatedCompositeFieldContainer[Global___Classification]: ... - @property - def objects(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.v1.common_pb2.PointCloudObject]: + @_builtins.property + def objects(self) -> _containers.RepeatedCompositeFieldContainer[_common_pb2.PointCloudObject]: ... - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: ... - def __init__(self, *, image: component.camera.v1.camera_pb2.Image | None=..., detections: collections.abc.Iterable[global___Detection] | None=..., classifications: collections.abc.Iterable[global___Classification] | None=..., objects: collections.abc.Iterable[common.v1.common_pb2.PointCloudObject] | None=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, image: _camera_pb2.Image | None=..., detections: _abc.Iterable[Global___Detection] | None=..., classifications: _abc.Iterable[Global___Classification] | None=..., objects: _abc.Iterable[_common_pb2.PointCloudObject] | None=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'image', b'image'] - def HasField(self, field_name: typing.Literal['extra', b'extra', 'image', b'image']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['classifications', b'classifications', 'detections', b'detections', 'extra', b'extra', 'image', b'image', 'objects', b'objects'] - def ClearField(self, field_name: typing.Literal['classifications', b'classifications', 'detections', b'detections', 'extra', b'extra', 'image', b'image', 'objects', b'objects']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___CaptureAllFromCameraResponse = CaptureAllFromCameraResponse +Global___CaptureAllFromCameraResponse: _TypeAlias = CaptureAllFromCameraResponse -@typing.final -class GetPropertiesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CLASSIFICATIONS_SUPPORTED_FIELD_NUMBER: builtins.int - DETECTIONS_SUPPORTED_FIELD_NUMBER: builtins.int - OBJECT_POINT_CLOUDS_SUPPORTED_FIELD_NUMBER: builtins.int - classifications_supported: builtins.bool +@_typing.final +class GetPropertiesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CLASSIFICATIONS_SUPPORTED_FIELD_NUMBER: _builtins.int + DETECTIONS_SUPPORTED_FIELD_NUMBER: _builtins.int + OBJECT_POINT_CLOUDS_SUPPORTED_FIELD_NUMBER: _builtins.int + classifications_supported: _builtins.bool 'whether or not classifactions are supported by the vision service' - detections_supported: builtins.bool + detections_supported: _builtins.bool 'whether or not detections are supported by the vision service' - object_point_clouds_supported: builtins.bool + object_point_clouds_supported: _builtins.bool 'whether or not 3d segmentation is supported by the vision service' - def __init__(self, *, classifications_supported: builtins.bool=..., detections_supported: builtins.bool=..., object_point_clouds_supported: builtins.bool=...) -> None: + def __init__(self, *, classifications_supported: _builtins.bool=..., detections_supported: _builtins.bool=..., object_point_clouds_supported: _builtins.bool=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['classifications_supported', b'classifications_supported', 'detections_supported', b'detections_supported', 'object_point_clouds_supported', b'object_point_clouds_supported'] - def ClearField(self, field_name: typing.Literal['classifications_supported', b'classifications_supported', 'detections_supported', b'detections_supported', 'object_point_clouds_supported', b'object_point_clouds_supported']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetPropertiesResponse = GetPropertiesResponse \ No newline at end of file +Global___GetPropertiesResponse: _TypeAlias = GetPropertiesResponse \ No newline at end of file diff --git a/src/viam/gen/service/worldstatestore/v1/world_state_store_grpc.py b/src/viam/gen/service/worldstatestore/v1/world_state_store_grpc.py index 0552f97266..ec0da5c3e9 100644 --- a/src/viam/gen/service/worldstatestore/v1/world_state_store_grpc.py +++ b/src/viam/gen/service/worldstatestore/v1/world_state_store_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -import google.api.annotations_pb2 +from .... import google import google.protobuf.field_mask_pb2 import google.protobuf.struct_pb2 from .... import service diff --git a/src/viam/gen/service/worldstatestore/v1/world_state_store_pb2.py b/src/viam/gen/service/worldstatestore/v1/world_state_store_pb2.py index 210c9cf278..d8c3c373fb 100644 --- a/src/viam/gen/service/worldstatestore/v1/world_state_store_pb2.py +++ b/src/viam/gen/service/worldstatestore/v1/world_state_store_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'service/worldstatestore/v1/world_state_store.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/worldstatestore/v1/world_state_store.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import field_mask_pb2 as google_dot_protobuf_dot_field__mask__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n2service/worldstatestore/v1/world_state_store.proto\x12\x1fviam.service.worldstatestore.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a google/protobuf/field_mask.proto\x1a\x1cgoogle/protobuf/struct.proto"U\n\x10ListUUIDsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra")\n\x11ListUUIDsResponse\x12\x14\n\x05uuids\x18\x01 \x03(\x0cR\x05uuids"l\n\x13GetTransformRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04uuid\x18\x02 \x01(\x0cR\x04uuid\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"O\n\x14GetTransformResponse\x127\n\ttransform\x18\x02 \x01(\x0b2\x19.viam.common.v1.TransformR\ttransform"b\n\x1dStreamTransformChangesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xf3\x01\n\x1eStreamTransformChangesResponse\x12U\n\x0bchange_type\x18\x01 \x01(\x0e24.viam.service.worldstatestore.v1.TransformChangeTypeR\nchangeType\x127\n\ttransform\x18\x02 \x01(\x0b2\x19.viam.common.v1.TransformR\ttransform\x12A\n\x0eupdated_fields\x18\x03 \x01(\x0b2\x1a.google.protobuf.FieldMaskR\rupdatedFields*\xa3\x01\n\x13TransformChangeType\x12%\n!TRANSFORM_CHANGE_TYPE_UNSPECIFIED\x10\x00\x12\x1f\n\x1bTRANSFORM_CHANGE_TYPE_ADDED\x10\x01\x12!\n\x1dTRANSFORM_CHANGE_TYPE_REMOVED\x10\x02\x12!\n\x1dTRANSFORM_CHANGE_TYPE_UPDATED\x10\x032\x8c\x05\n\x16WorldStateStoreService\x12t\n\tListUUIDs\x121.viam.service.worldstatestore.v1.ListUUIDsRequest\x1a2.viam.service.worldstatestore.v1.ListUUIDsResponse"\x00\x12}\n\x0cGetTransform\x124.viam.service.worldstatestore.v1.GetTransformRequest\x1a5.viam.service.worldstatestore.v1.GetTransformResponse"\x00\x12\xe9\x01\n\x16StreamTransformChanges\x12>.viam.service.worldstatestore.v1.StreamTransformChangesRequest\x1a?.viam.service.worldstatestore.v1.StreamTransformChangesResponse"L\x82\xd3\xe4\x93\x02F\x12D/viam/api/v1/service/worldstatestore/{name}/stream_transform_changes0\x01\x12\x90\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse">\x82\xd3\xe4\x93\x028"6/viam/api/v1/service/worldstatestore/{name}/do_commandBQ\n#com.viam.service.worldstatestore.v1Z*go.viam.com/api/service/worldstatestore/v1b\x06proto3') diff --git a/src/viam/gen/service/worldstatestore/v1/world_state_store_pb2.pyi b/src/viam/gen/service/worldstatestore/v1/world_state_store_pb2.pyi index dfd0cd80b0..64a66388f7 100644 --- a/src/viam/gen/service/worldstatestore/v1/world_state_store_pb2.pyi +++ b/src/viam/gen/service/worldstatestore/v1/world_state_store_pb2.pyi @@ -2,29 +2,29 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -from .... import common -import google.protobuf.descriptor -import google.protobuf.field_mask_pb2 -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.struct_pb2 +from collections import abc as _abc +from common.v1 import common_pb2 as _common_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import field_mask_pb2 as _field_mask_pb2 +from google.protobuf import message as _message +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +import builtins as _builtins import sys -import typing +import typing as _typing if sys.version_info >= (3, 10): - import typing as typing_extensions + from typing import TypeAlias as _TypeAlias else: - import typing_extensions -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor class _TransformChangeType: - ValueType = typing.NewType('ValueType', builtins.int) - V: typing_extensions.TypeAlias = ValueType + ValueType = _typing.NewType('ValueType', _builtins.int) + V: _TypeAlias = ValueType -class _TransformChangeTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TransformChangeType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor +class _TransformChangeTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_TransformChangeType.ValueType], _builtins.type): + DESCRIPTOR: _descriptor.EnumDescriptor TRANSFORM_CHANGE_TYPE_UNSPECIFIED: _TransformChangeType.ValueType TRANSFORM_CHANGE_TYPE_ADDED: _TransformChangeType.ValueType TRANSFORM_CHANGE_TYPE_REMOVED: _TransformChangeType.ValueType @@ -36,136 +36,147 @@ TRANSFORM_CHANGE_TYPE_UNSPECIFIED: TransformChangeType.ValueType TRANSFORM_CHANGE_TYPE_ADDED: TransformChangeType.ValueType TRANSFORM_CHANGE_TYPE_REMOVED: TransformChangeType.ValueType TRANSFORM_CHANGE_TYPE_UPDATED: TransformChangeType.ValueType -global___TransformChangeType = TransformChangeType - -@typing.final -class ListUUIDsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +Global___TransformChangeType: _TypeAlias = TransformChangeType + +@_typing.final +class ListUUIDsRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of the world object store service' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListUUIDsRequest = ListUUIDsRequest +Global___ListUUIDsRequest: _TypeAlias = ListUUIDsRequest -@typing.final -class ListUUIDsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - UUIDS_FIELD_NUMBER: builtins.int +@_typing.final +class ListUUIDsResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + UUIDS_FIELD_NUMBER: _builtins.int - @property - def uuids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: + @_builtins.property + def uuids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.bytes]: ... - def __init__(self, *, uuids: collections.abc.Iterable[builtins.bytes] | None=...) -> None: + def __init__(self, *, uuids: _abc.Iterable[_builtins.bytes] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['uuids', b'uuids'] - def ClearField(self, field_name: typing.Literal['uuids', b'uuids']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListUUIDsResponse = ListUUIDsResponse +Global___ListUUIDsResponse: _TypeAlias = ListUUIDsResponse -@typing.final -class GetTransformRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - UUID_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class GetTransformRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + UUID_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of the world object store service' - uuid: builtins.bytes + uuid: _builtins.bytes - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., uuid: builtins.bytes=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., uuid: _builtins.bytes=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name', 'uuid', b'uuid'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name', 'uuid', b'uuid']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetTransformRequest = GetTransformRequest +Global___GetTransformRequest: _TypeAlias = GetTransformRequest -@typing.final -class GetTransformResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - TRANSFORM_FIELD_NUMBER: builtins.int +@_typing.final +class GetTransformResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + TRANSFORM_FIELD_NUMBER: _builtins.int - @property - def transform(self) -> common.v1.common_pb2.Transform: + @_builtins.property + def transform(self) -> _common_pb2.Transform: ... - def __init__(self, *, transform: common.v1.common_pb2.Transform | None=...) -> None: + def __init__(self, *, transform: _common_pb2.Transform | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['transform', b'transform'] - def HasField(self, field_name: typing.Literal['transform', b'transform']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['transform', b'transform'] - def ClearField(self, field_name: typing.Literal['transform', b'transform']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetTransformResponse = GetTransformResponse +Global___GetTransformResponse: _TypeAlias = GetTransformResponse -@typing.final -class StreamTransformChangesRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - EXTRA_FIELD_NUMBER: builtins.int - name: builtins.str +@_typing.final +class StreamTransformChangesRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + EXTRA_FIELD_NUMBER: _builtins.int + name: _builtins.str 'Name of the world object store service' - @property - def extra(self) -> google.protobuf.struct_pb2.Struct: + @_builtins.property + def extra(self) -> _struct_pb2.Struct: """Additional arguments to the method""" - def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., extra: _struct_pb2.Struct | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra'] - def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['extra', b'extra', 'name', b'name'] - def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StreamTransformChangesRequest = StreamTransformChangesRequest +Global___StreamTransformChangesRequest: _TypeAlias = StreamTransformChangesRequest -@typing.final -class StreamTransformChangesResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - CHANGE_TYPE_FIELD_NUMBER: builtins.int - TRANSFORM_FIELD_NUMBER: builtins.int - UPDATED_FIELDS_FIELD_NUMBER: builtins.int - change_type: global___TransformChangeType.ValueType +@_typing.final +class StreamTransformChangesResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + CHANGE_TYPE_FIELD_NUMBER: _builtins.int + TRANSFORM_FIELD_NUMBER: _builtins.int + UPDATED_FIELDS_FIELD_NUMBER: _builtins.int + change_type: Global___TransformChangeType.ValueType - @property - def transform(self) -> common.v1.common_pb2.Transform: + @_builtins.property + def transform(self) -> _common_pb2.Transform: ... - @property - def updated_fields(self) -> google.protobuf.field_mask_pb2.FieldMask: + @_builtins.property + def updated_fields(self) -> _field_mask_pb2.FieldMask: """The field mask of the transform that has changed, if any. For added transforms, this will be empty. For updated transforms, this will be the fields that have changed. For removed transforms, this will be the transform's UUID path. """ - def __init__(self, *, change_type: global___TransformChangeType.ValueType=..., transform: common.v1.common_pb2.Transform | None=..., updated_fields: google.protobuf.field_mask_pb2.FieldMask | None=...) -> None: + def __init__(self, *, change_type: Global___TransformChangeType.ValueType=..., transform: _common_pb2.Transform | None=..., updated_fields: _field_mask_pb2.FieldMask | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['transform', b'transform', 'updated_fields', b'updated_fields'] - def HasField(self, field_name: typing.Literal['transform', b'transform', 'updated_fields', b'updated_fields']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['change_type', b'change_type', 'transform', b'transform', 'updated_fields', b'updated_fields'] - def ClearField(self, field_name: typing.Literal['change_type', b'change_type', 'transform', b'transform', 'updated_fields', b'updated_fields']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___StreamTransformChangesResponse = StreamTransformChangesResponse \ No newline at end of file +Global___StreamTransformChangesResponse: _TypeAlias = StreamTransformChangesResponse \ No newline at end of file diff --git a/src/viam/gen/stream/v1/stream_pb2.py b/src/viam/gen/stream/v1/stream_pb2.py index de74da9d41..0880f1f7ce 100644 --- a/src/viam/gen/stream/v1/stream_pb2.py +++ b/src/viam/gen/stream/v1/stream_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'stream/v1/stream.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'stream/v1/stream.proto') _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16stream/v1/stream.proto\x12\x0fproto.stream.v1"\x14\n\x12ListStreamsRequest"+\n\x13ListStreamsResponse\x12\x14\n\x05names\x18\x01 \x03(\tR\x05names"&\n\x10AddStreamRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"\x13\n\x11AddStreamResponse")\n\x13RemoveStreamRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"\x16\n\x14RemoveStreamResponse":\n\nResolution\x12\x14\n\x05width\x18\x01 \x01(\x05R\x05width\x12\x16\n\x06height\x18\x02 \x01(\x05R\x06height"-\n\x17GetStreamOptionsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"Y\n\x18GetStreamOptionsResponse\x12=\n\x0bresolutions\x18\x01 \x03(\x0b2\x1b.proto.stream.v1.ResolutionR\x0bresolutions"j\n\x17SetStreamOptionsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12;\n\nresolution\x18\x02 \x01(\x0b2\x1b.proto.stream.v1.ResolutionR\nresolution"\x1a\n\x18SetStreamOptionsResponse2\xec\x03\n\rStreamService\x12X\n\x0bListStreams\x12#.proto.stream.v1.ListStreamsRequest\x1a$.proto.stream.v1.ListStreamsResponse\x12R\n\tAddStream\x12!.proto.stream.v1.AddStreamRequest\x1a".proto.stream.v1.AddStreamResponse\x12g\n\x10GetStreamOptions\x12(.proto.stream.v1.GetStreamOptionsRequest\x1a).proto.stream.v1.GetStreamOptionsResponse\x12g\n\x10SetStreamOptions\x12(.proto.stream.v1.SetStreamOptionsRequest\x1a).proto.stream.v1.SetStreamOptionsResponse\x12[\n\x0cRemoveStream\x12$.proto.stream.v1.RemoveStreamRequest\x1a%.proto.stream.v1.RemoveStreamResponseB.Z,github.com/edaniels/gostream/proto/stream/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/stream/v1/stream_pb2.pyi b/src/viam/gen/stream/v1/stream_pb2.pyi index bae532ce76..0464d48a26 100644 --- a/src/viam/gen/stream/v1/stream_pb2.pyi +++ b/src/viam/gen/stream/v1/stream_pb2.pyi @@ -2,160 +2,173 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import typing -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class ListStreamsRequest(google.protobuf.message.Message): +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class ListStreamsRequest(_message.Message): """ListStreamsRequest requests all streams registered.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___ListStreamsRequest = ListStreamsRequest +Global___ListStreamsRequest: _TypeAlias = ListStreamsRequest -@typing.final -class ListStreamsResponse(google.protobuf.message.Message): +@_typing.final +class ListStreamsResponse(_message.Message): """A ListStreamsResponse details streams registered.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAMES_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + NAMES_FIELD_NUMBER: _builtins.int - @property - def names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + @_builtins.property + def names(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... - def __init__(self, *, names: collections.abc.Iterable[builtins.str] | None=...) -> None: + def __init__(self, *, names: _abc.Iterable[_builtins.str] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['names', b'names'] - def ClearField(self, field_name: typing.Literal['names', b'names']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___ListStreamsResponse = ListStreamsResponse +Global___ListStreamsResponse: _TypeAlias = ListStreamsResponse -@typing.final -class AddStreamRequest(google.protobuf.message.Message): +@_typing.final +class AddStreamRequest(_message.Message): """A AddStreamRequest requests the given stream be added to the connection.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___AddStreamRequest = AddStreamRequest +Global___AddStreamRequest: _TypeAlias = AddStreamRequest -@typing.final -class AddStreamResponse(google.protobuf.message.Message): +@_typing.final +class AddStreamResponse(_message.Message): """AddStreamResponse is returned after a successful AddStreamRequest.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___AddStreamResponse = AddStreamResponse +Global___AddStreamResponse: _TypeAlias = AddStreamResponse -@typing.final -class RemoveStreamRequest(google.protobuf.message.Message): +@_typing.final +class RemoveStreamRequest(_message.Message): """A RemoveStreamRequest requests the given stream be removed from the connection.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___RemoveStreamRequest = RemoveStreamRequest +Global___RemoveStreamRequest: _TypeAlias = RemoveStreamRequest -@typing.final -class RemoveStreamResponse(google.protobuf.message.Message): +@_typing.final +class RemoveStreamResponse(_message.Message): """RemoveStreamResponse is returned after a successful RemoveStreamRequest.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___RemoveStreamResponse = RemoveStreamResponse +Global___RemoveStreamResponse: _TypeAlias = RemoveStreamResponse -@typing.final -class Resolution(google.protobuf.message.Message): +@_typing.final +class Resolution(_message.Message): """Resolution details the width and height of a stream.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - WIDTH_FIELD_NUMBER: builtins.int - HEIGHT_FIELD_NUMBER: builtins.int - width: builtins.int - height: builtins.int + DESCRIPTOR: _descriptor.Descriptor + WIDTH_FIELD_NUMBER: _builtins.int + HEIGHT_FIELD_NUMBER: _builtins.int + width: _builtins.int + height: _builtins.int - def __init__(self, *, width: builtins.int=..., height: builtins.int=...) -> None: + def __init__(self, *, width: _builtins.int=..., height: _builtins.int=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['height', b'height', 'width', b'width'] - def ClearField(self, field_name: typing.Literal['height', b'height', 'width', b'width']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___Resolution = Resolution +Global___Resolution: _TypeAlias = Resolution -@typing.final -class GetStreamOptionsRequest(google.protobuf.message.Message): +@_typing.final +class GetStreamOptionsRequest(_message.Message): """GetStreamOptionsRequest requests the options for a particular stream.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + name: _builtins.str - def __init__(self, *, name: builtins.str=...) -> None: + def __init__(self, *, name: _builtins.str=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - def ClearField(self, field_name: typing.Literal['name', b'name']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetStreamOptionsRequest = GetStreamOptionsRequest +Global___GetStreamOptionsRequest: _TypeAlias = GetStreamOptionsRequest -@typing.final -class GetStreamOptionsResponse(google.protobuf.message.Message): +@_typing.final +class GetStreamOptionsResponse(_message.Message): """GetStreamOptionsResponse details the options for a particular stream.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - RESOLUTIONS_FIELD_NUMBER: builtins.int + DESCRIPTOR: _descriptor.Descriptor + RESOLUTIONS_FIELD_NUMBER: _builtins.int - @property - def resolutions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Resolution]: + @_builtins.property + def resolutions(self) -> _containers.RepeatedCompositeFieldContainer[Global___Resolution]: ... - def __init__(self, *, resolutions: collections.abc.Iterable[global___Resolution] | None=...) -> None: + def __init__(self, *, resolutions: _abc.Iterable[Global___Resolution] | None=...) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['resolutions', b'resolutions'] - def ClearField(self, field_name: typing.Literal['resolutions', b'resolutions']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___GetStreamOptionsResponse = GetStreamOptionsResponse +Global___GetStreamOptionsResponse: _TypeAlias = GetStreamOptionsResponse -@typing.final -class SetStreamOptionsRequest(google.protobuf.message.Message): +@_typing.final +class SetStreamOptionsRequest(_message.Message): """SetStreamOptionsRequest sets the options for a particular stream.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAME_FIELD_NUMBER: builtins.int - RESOLUTION_FIELD_NUMBER: builtins.int - name: builtins.str + DESCRIPTOR: _descriptor.Descriptor + NAME_FIELD_NUMBER: _builtins.int + RESOLUTION_FIELD_NUMBER: _builtins.int + name: _builtins.str - @property - def resolution(self) -> global___Resolution: + @_builtins.property + def resolution(self) -> Global___Resolution: ... - def __init__(self, *, name: builtins.str=..., resolution: global___Resolution | None=...) -> None: + def __init__(self, *, name: _builtins.str=..., resolution: Global___Resolution | None=...) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal['resolution', b'resolution'] - def HasField(self, field_name: typing.Literal['resolution', b'resolution']) -> builtins.bool: + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'resolution', b'resolution'] - def ClearField(self, field_name: typing.Literal['name', b'name', 'resolution', b'resolution']) -> None: + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... -global___SetStreamOptionsRequest = SetStreamOptionsRequest +Global___SetStreamOptionsRequest: _TypeAlias = SetStreamOptionsRequest -@typing.final -class SetStreamOptionsResponse(google.protobuf.message.Message): +@_typing.final +class SetStreamOptionsResponse(_message.Message): """SetStreamOptionsResponse is returned after a successful SetStreamOptionsRequest.""" - DESCRIPTOR: google.protobuf.descriptor.Descriptor + DESCRIPTOR: _descriptor.Descriptor def __init__(self) -> None: ... -global___SetStreamOptionsResponse = SetStreamOptionsResponse \ No newline at end of file +Global___SetStreamOptionsResponse: _TypeAlias = SetStreamOptionsResponse \ No newline at end of file diff --git a/src/viam/gen/tagger/v1/tagger_pb2.py b/src/viam/gen/tagger/v1/tagger_pb2.py index c8be831dfe..d8d2e0adea 100644 --- a/src/viam/gen/tagger/v1/tagger_pb2.py +++ b/src/viam/gen/tagger/v1/tagger_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 2, '', 'tagger/v1/tagger.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'tagger/v1/tagger.proto') _sym_db = _symbol_database.Default() from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16tagger/v1/tagger.proto\x12\ttagger.v1\x1a google/protobuf/descriptor.proto:3\n\x04tags\x12\x1d.google.protobuf.FieldOptions\x18\xc3\xe03 \x01(\tR\x04tags:>\n\noneof_tags\x12\x1d.google.protobuf.OneofOptions\x18\xc3\xe03 \x01(\tR\toneofTagsB4Z2github.com/srikrsna/protoc-gen-gotag/tagger;taggerb\x06proto3') diff --git a/src/viam/gen/tagger/v1/tagger_pb2.pyi b/src/viam/gen/tagger/v1/tagger_pb2.pyi index fb3f00a250..d8b6b52fe5 100644 --- a/src/viam/gen/tagger/v1/tagger_pb2.pyi +++ b/src/viam/gen/tagger/v1/tagger_pb2.pyi @@ -2,14 +2,14 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ -import builtins -import google.protobuf.descriptor -import google.protobuf.descriptor_pb2 -import google.protobuf.internal.extension_dict -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor -TAGS_FIELD_NUMBER: builtins.int -ONEOF_TAGS_FIELD_NUMBER: builtins.int -tags: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.FieldOptions, builtins.str] +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pb2 as _descriptor_pb2 +from google.protobuf.internal import extension_dict as _extension_dict +import builtins as _builtins +DESCRIPTOR: _descriptor.FileDescriptor +TAGS_FIELD_NUMBER: _builtins.int +ONEOF_TAGS_FIELD_NUMBER: _builtins.int +tags: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.FieldOptions, _builtins.str] 'Multiple Tags can be spcified.' -oneof_tags: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.OneofOptions, builtins.str] +oneof_tags: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.OneofOptions, _builtins.str] 'Multiple Tags can be spcified.' \ No newline at end of file diff --git a/src/viam/proto/app/__init__.py b/src/viam/proto/app/__init__.py index bf8ec975f7..073253d723 100644 --- a/src/viam/proto/app/__init__.py +++ b/src/viam/proto/app/__init__.py @@ -1,16 +1,18 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.app.v1.app_grpc import AppServiceBase, AppServiceStub, UnimplementedAppServiceBase +''' +from ...gen.app.v1.app_grpc import ( + AppServiceBase, + AppServiceStub, + UnimplementedAppServiceBase +) from ...gen.app.v1.app_pb2 import ( - PKCE, - AdditionalFragment, - AddRoleRequest, - AddRoleResponse, APIKey, APIKeyWithAuthorizations, + AddRoleRequest, + AddRoleResponse, + AdditionalFragment, App, AppCustomizations, AppType, @@ -181,16 +183,16 @@ LocationAuthResponse, LocationOrganization, LocationSummary, + MLModelMetadata, + MLModelVersion, + MLTrainingMetadata, + MLTrainingVersion, MachinePickerCustomizations, MachineSummary, MarkPartAsMainRequest, MarkPartAsMainResponse, MarkPartForRestartRequest, MarkPartForRestartResponse, - MLModelMetadata, - MLModelVersion, - MLTrainingMetadata, - MLTrainingVersion, Model, Module, ModuleFileInfo, @@ -204,6 +206,7 @@ NewRobotResponse, OAuthConfig, OnlineState, + OrgDetails, Organization, OrganizationGetLogoRequest, OrganizationGetLogoResponse, @@ -216,7 +219,7 @@ OrganizationSetLogoResponse, OrganizationSetSupportEmailRequest, OrganizationSetSupportEmailResponse, - OrgDetails, + PKCE, PartSummary, ReadOAuthAppRequest, ReadOAuthAppResponse, @@ -241,15 +244,16 @@ SearchOrganizationsResponse, SetFragmentTagRequest, SetFragmentTagResponse, - SharedSecret, ShareLocationRequest, ShareLocationResponse, + SharedSecret, StorageConfig, TailRobotPartLogsRequest, TailRobotPartLogsResponse, TextOverrides, TransferRegistryItemRequest, TransferRegistryItemResponse, + URLValidation, UnshareLocationRequest, UnshareLocationResponse, UpdateBillingServiceRequest, @@ -288,303 +292,302 @@ UploadModuleFileRequest, UploadModuleFileResponse, Uploads, - URLValidation, VersionHistory, ViamAgentVersion, ViamServerVersion, - Visibility, + Visibility ) __all__ = [ - "AppServiceBase", - "AppServiceStub", - "UnimplementedAppServiceBase", - "APIKey", - "APIKeyWithAuthorizations", - "AddRoleRequest", - "AddRoleResponse", - "AdditionalFragment", - "App", - "AppCustomizations", - "AppType", - "AuthenticationType", - "AuthenticatorInfo", - "Authorization", - "AuthorizationDetails", - "AuthorizedPermissions", - "BillingAddress", - "ChangeRoleRequest", - "ChangeRoleResponse", - "CheckPermissionsRequest", - "CheckPermissionsResponse", - "ClientAuthentication", - "CreateFragmentRequest", - "CreateFragmentResponse", - "CreateKeyFromExistingKeyAuthorizationsRequest", - "CreateKeyFromExistingKeyAuthorizationsResponse", - "CreateKeyRequest", - "CreateKeyResponse", - "CreateLocationRequest", - "CreateLocationResponse", - "CreateLocationSecretRequest", - "CreateLocationSecretResponse", - "CreateModuleRequest", - "CreateModuleResponse", - "CreateOAuthAppRequest", - "CreateOAuthAppResponse", - "CreateOrganizationInviteRequest", - "CreateOrganizationInviteResponse", - "CreateOrganizationRequest", - "CreateOrganizationResponse", - "CreateRegistryItemRequest", - "CreateRegistryItemResponse", - "CreateRobotPartSecretRequest", - "CreateRobotPartSecretResponse", - "DeleteFragmentRequest", - "DeleteFragmentResponse", - "DeleteFragmentTagRequest", - "DeleteFragmentTagResponse", - "DeleteKeyRequest", - "DeleteKeyResponse", - "DeleteLocationRequest", - "DeleteLocationResponse", - "DeleteLocationSecretRequest", - "DeleteLocationSecretResponse", - "DeleteOAuthAppRequest", - "DeleteOAuthAppResponse", - "DeleteOrganizationInviteRequest", - "DeleteOrganizationInviteResponse", - "DeleteOrganizationMemberRequest", - "DeleteOrganizationMemberResponse", - "DeleteOrganizationRequest", - "DeleteOrganizationResponse", - "DeleteRegistryItemRequest", - "DeleteRegistryItemResponse", - "DeleteRobotPartRequest", - "DeleteRobotPartResponse", - "DeleteRobotPartSecretRequest", - "DeleteRobotPartSecretResponse", - "DeleteRobotRequest", - "DeleteRobotResponse", - "DisableAuthServiceRequest", - "DisableAuthServiceResponse", - "DisableBillingServiceRequest", - "DisableBillingServiceResponse", - "EnableAuthServiceRequest", - "EnableAuthServiceResponse", - "EnableBillingServiceRequest", - "EnableBillingServiceResponse", - "EnabledGrant", - "Fragment", - "FragmentError", - "FragmentErrorType", - "FragmentHistoryEntry", - "FragmentImport", - "FragmentImportList", - "FragmentRevision", - "FragmentSummary", - "FragmentTag", - "FragmentUsage", - "FragmentVisibility", - "GetAppBrandingRequest", - "GetAppBrandingResponse", - "GetAppContentRequest", - "GetAppContentResponse", - "GetBillingServiceConfigRequest", - "GetBillingServiceConfigResponse", - "GetFragmentHistoryRequest", - "GetFragmentHistoryResponse", - "GetFragmentRequest", - "GetFragmentResponse", - "GetFragmentUsageRequest", - "GetFragmentUsageResponse", - "GetLocationMetadataRequest", - "GetLocationMetadataResponse", - "GetLocationRequest", - "GetLocationResponse", - "GetModuleRequest", - "GetModuleResponse", - "GetOrganizationMetadataRequest", - "GetOrganizationMetadataResponse", - "GetOrganizationNamespaceAvailabilityRequest", - "GetOrganizationNamespaceAvailabilityResponse", - "GetOrganizationRequest", - "GetOrganizationResponse", - "GetOrganizationsWithAccessToLocationRequest", - "GetOrganizationsWithAccessToLocationResponse", - "GetRegistryItemRequest", - "GetRegistryItemResponse", - "GetRobotAPIKeysRequest", - "GetRobotAPIKeysResponse", - "GetRobotMetadataRequest", - "GetRobotMetadataResponse", - "GetRobotPartByNameAndLocationRequest", - "GetRobotPartByNameAndLocationResponse", - "GetRobotPartHistoryRequest", - "GetRobotPartHistoryResponse", - "GetRobotPartLogsRequest", - "GetRobotPartLogsResponse", - "GetRobotPartMetadataRequest", - "GetRobotPartMetadataResponse", - "GetRobotPartRequest", - "GetRobotPartResponse", - "GetRobotPartsRequest", - "GetRobotPartsResponse", - "GetRobotRequest", - "GetRobotResponse", - "GetRoverRentalRobotsRequest", - "GetRoverRentalRobotsResponse", - "GetUserIDByEmailRequest", - "GetUserIDByEmailResponse", - "ListAuthorizationsRequest", - "ListAuthorizationsResponse", - "ListFragmentsRequest", - "ListFragmentsResponse", - "ListKeysRequest", - "ListKeysResponse", - "ListLocationsRequest", - "ListLocationsResponse", - "ListMachineFragmentsRequest", - "ListMachineFragmentsResponse", - "ListMachineSummariesRequest", - "ListMachineSummariesResponse", - "ListModulesRequest", - "ListModulesResponse", - "ListNestedFragmentsRequest", - "ListNestedFragmentsResponse", - "ListOAuthAppsRequest", - "ListOAuthAppsResponse", - "ListOrganizationMembersRequest", - "ListOrganizationMembersResponse", - "ListOrganizationsByUserRequest", - "ListOrganizationsByUserResponse", - "ListOrganizationsRequest", - "ListOrganizationsResponse", - "ListRegistryItemsRequest", - "ListRegistryItemsResponse", - "ListRobotsForLocationsRequest", - "ListRobotsForLocationsResponse", - "ListRobotsForOrgRequest", - "ListRobotsForOrgResponse", - "ListRobotsRequest", - "ListRobotsResponse", - "Location", - "LocationAuth", - "LocationAuthRequest", - "LocationAuthResponse", - "LocationOrganization", - "LocationSummary", - "MLModelMetadata", - "MLModelVersion", - "MLTrainingMetadata", - "MLTrainingVersion", - "MachinePickerCustomizations", - "MachineSummary", - "MarkPartAsMainRequest", - "MarkPartAsMainResponse", - "MarkPartForRestartRequest", - "MarkPartForRestartResponse", - "Model", - "Module", - "ModuleFileInfo", - "ModuleLanguage", - "ModuleMetadata", - "ModuleSourceType", - "ModuleVersion", - "NewRobotPartRequest", - "NewRobotPartResponse", - "NewRobotRequest", - "NewRobotResponse", - "OAuthConfig", - "OnlineState", - "OrgDetails", - "Organization", - "OrganizationGetLogoRequest", - "OrganizationGetLogoResponse", - "OrganizationGetSupportEmailRequest", - "OrganizationGetSupportEmailResponse", - "OrganizationIdentity", - "OrganizationInvite", - "OrganizationMember", - "OrganizationSetLogoRequest", - "OrganizationSetLogoResponse", - "OrganizationSetSupportEmailRequest", - "OrganizationSetSupportEmailResponse", - "PKCE", - "PartSummary", - "ReadOAuthAppRequest", - "ReadOAuthAppResponse", - "RegistryItem", - "RegistryItemStatus", - "RemoveRoleRequest", - "RemoveRoleResponse", - "RenameKeyRequest", - "RenameKeyResponse", - "RenameRegistryItemRequest", - "RenameRegistryItemResponse", - "ResendOrganizationInviteRequest", - "ResendOrganizationInviteResponse", - "ResolvedFragment", - "Robot", - "RobotPart", - "RobotPartHistoryEntry", - "RotateKeyRequest", - "RotateKeyResponse", - "RoverRentalRobot", - "SearchOrganizationsRequest", - "SearchOrganizationsResponse", - "SetFragmentTagRequest", - "SetFragmentTagResponse", - "ShareLocationRequest", - "ShareLocationResponse", - "SharedSecret", - "StorageConfig", - "TailRobotPartLogsRequest", - "TailRobotPartLogsResponse", - "TextOverrides", - "TransferRegistryItemRequest", - "TransferRegistryItemResponse", - "URLValidation", - "UnshareLocationRequest", - "UnshareLocationResponse", - "UpdateBillingServiceRequest", - "UpdateBillingServiceResponse", - "UpdateFragmentRequest", - "UpdateFragmentResponse", - "UpdateLocationMetadataRequest", - "UpdateLocationMetadataResponse", - "UpdateLocationRequest", - "UpdateLocationResponse", - "UpdateMLModelMetadata", - "UpdateMLTrainingMetadata", - "UpdateModuleMetadata", - "UpdateModuleRequest", - "UpdateModuleResponse", - "UpdateOAuthAppRequest", - "UpdateOAuthAppResponse", - "UpdateOrganizationInviteAuthorizationsRequest", - "UpdateOrganizationInviteAuthorizationsResponse", - "UpdateOrganizationMetadataRequest", - "UpdateOrganizationMetadataResponse", - "UpdateOrganizationNamespaceRequest", - "UpdateOrganizationNamespaceResponse", - "UpdateOrganizationRequest", - "UpdateOrganizationResponse", - "UpdateRegistryItemRequest", - "UpdateRegistryItemResponse", - "UpdateRobotMetadataRequest", - "UpdateRobotMetadataResponse", - "UpdateRobotPartMetadataRequest", - "UpdateRobotPartMetadataResponse", - "UpdateRobotPartRequest", - "UpdateRobotPartResponse", - "UpdateRobotRequest", - "UpdateRobotResponse", - "UploadModuleFileRequest", - "UploadModuleFileResponse", - "Uploads", - "VersionHistory", - "ViamAgentVersion", - "ViamServerVersion", - "Visibility", + 'AppServiceBase', + 'AppServiceStub', + 'UnimplementedAppServiceBase', + 'APIKey', + 'APIKeyWithAuthorizations', + 'AddRoleRequest', + 'AddRoleResponse', + 'AdditionalFragment', + 'App', + 'AppCustomizations', + 'AppType', + 'AuthenticationType', + 'AuthenticatorInfo', + 'Authorization', + 'AuthorizationDetails', + 'AuthorizedPermissions', + 'BillingAddress', + 'ChangeRoleRequest', + 'ChangeRoleResponse', + 'CheckPermissionsRequest', + 'CheckPermissionsResponse', + 'ClientAuthentication', + 'CreateFragmentRequest', + 'CreateFragmentResponse', + 'CreateKeyFromExistingKeyAuthorizationsRequest', + 'CreateKeyFromExistingKeyAuthorizationsResponse', + 'CreateKeyRequest', + 'CreateKeyResponse', + 'CreateLocationRequest', + 'CreateLocationResponse', + 'CreateLocationSecretRequest', + 'CreateLocationSecretResponse', + 'CreateModuleRequest', + 'CreateModuleResponse', + 'CreateOAuthAppRequest', + 'CreateOAuthAppResponse', + 'CreateOrganizationInviteRequest', + 'CreateOrganizationInviteResponse', + 'CreateOrganizationRequest', + 'CreateOrganizationResponse', + 'CreateRegistryItemRequest', + 'CreateRegistryItemResponse', + 'CreateRobotPartSecretRequest', + 'CreateRobotPartSecretResponse', + 'DeleteFragmentRequest', + 'DeleteFragmentResponse', + 'DeleteFragmentTagRequest', + 'DeleteFragmentTagResponse', + 'DeleteKeyRequest', + 'DeleteKeyResponse', + 'DeleteLocationRequest', + 'DeleteLocationResponse', + 'DeleteLocationSecretRequest', + 'DeleteLocationSecretResponse', + 'DeleteOAuthAppRequest', + 'DeleteOAuthAppResponse', + 'DeleteOrganizationInviteRequest', + 'DeleteOrganizationInviteResponse', + 'DeleteOrganizationMemberRequest', + 'DeleteOrganizationMemberResponse', + 'DeleteOrganizationRequest', + 'DeleteOrganizationResponse', + 'DeleteRegistryItemRequest', + 'DeleteRegistryItemResponse', + 'DeleteRobotPartRequest', + 'DeleteRobotPartResponse', + 'DeleteRobotPartSecretRequest', + 'DeleteRobotPartSecretResponse', + 'DeleteRobotRequest', + 'DeleteRobotResponse', + 'DisableAuthServiceRequest', + 'DisableAuthServiceResponse', + 'DisableBillingServiceRequest', + 'DisableBillingServiceResponse', + 'EnableAuthServiceRequest', + 'EnableAuthServiceResponse', + 'EnableBillingServiceRequest', + 'EnableBillingServiceResponse', + 'EnabledGrant', + 'Fragment', + 'FragmentError', + 'FragmentErrorType', + 'FragmentHistoryEntry', + 'FragmentImport', + 'FragmentImportList', + 'FragmentRevision', + 'FragmentSummary', + 'FragmentTag', + 'FragmentUsage', + 'FragmentVisibility', + 'GetAppBrandingRequest', + 'GetAppBrandingResponse', + 'GetAppContentRequest', + 'GetAppContentResponse', + 'GetBillingServiceConfigRequest', + 'GetBillingServiceConfigResponse', + 'GetFragmentHistoryRequest', + 'GetFragmentHistoryResponse', + 'GetFragmentRequest', + 'GetFragmentResponse', + 'GetFragmentUsageRequest', + 'GetFragmentUsageResponse', + 'GetLocationMetadataRequest', + 'GetLocationMetadataResponse', + 'GetLocationRequest', + 'GetLocationResponse', + 'GetModuleRequest', + 'GetModuleResponse', + 'GetOrganizationMetadataRequest', + 'GetOrganizationMetadataResponse', + 'GetOrganizationNamespaceAvailabilityRequest', + 'GetOrganizationNamespaceAvailabilityResponse', + 'GetOrganizationRequest', + 'GetOrganizationResponse', + 'GetOrganizationsWithAccessToLocationRequest', + 'GetOrganizationsWithAccessToLocationResponse', + 'GetRegistryItemRequest', + 'GetRegistryItemResponse', + 'GetRobotAPIKeysRequest', + 'GetRobotAPIKeysResponse', + 'GetRobotMetadataRequest', + 'GetRobotMetadataResponse', + 'GetRobotPartByNameAndLocationRequest', + 'GetRobotPartByNameAndLocationResponse', + 'GetRobotPartHistoryRequest', + 'GetRobotPartHistoryResponse', + 'GetRobotPartLogsRequest', + 'GetRobotPartLogsResponse', + 'GetRobotPartMetadataRequest', + 'GetRobotPartMetadataResponse', + 'GetRobotPartRequest', + 'GetRobotPartResponse', + 'GetRobotPartsRequest', + 'GetRobotPartsResponse', + 'GetRobotRequest', + 'GetRobotResponse', + 'GetRoverRentalRobotsRequest', + 'GetRoverRentalRobotsResponse', + 'GetUserIDByEmailRequest', + 'GetUserIDByEmailResponse', + 'ListAuthorizationsRequest', + 'ListAuthorizationsResponse', + 'ListFragmentsRequest', + 'ListFragmentsResponse', + 'ListKeysRequest', + 'ListKeysResponse', + 'ListLocationsRequest', + 'ListLocationsResponse', + 'ListMachineFragmentsRequest', + 'ListMachineFragmentsResponse', + 'ListMachineSummariesRequest', + 'ListMachineSummariesResponse', + 'ListModulesRequest', + 'ListModulesResponse', + 'ListNestedFragmentsRequest', + 'ListNestedFragmentsResponse', + 'ListOAuthAppsRequest', + 'ListOAuthAppsResponse', + 'ListOrganizationMembersRequest', + 'ListOrganizationMembersResponse', + 'ListOrganizationsByUserRequest', + 'ListOrganizationsByUserResponse', + 'ListOrganizationsRequest', + 'ListOrganizationsResponse', + 'ListRegistryItemsRequest', + 'ListRegistryItemsResponse', + 'ListRobotsForLocationsRequest', + 'ListRobotsForLocationsResponse', + 'ListRobotsForOrgRequest', + 'ListRobotsForOrgResponse', + 'ListRobotsRequest', + 'ListRobotsResponse', + 'Location', + 'LocationAuth', + 'LocationAuthRequest', + 'LocationAuthResponse', + 'LocationOrganization', + 'LocationSummary', + 'MLModelMetadata', + 'MLModelVersion', + 'MLTrainingMetadata', + 'MLTrainingVersion', + 'MachinePickerCustomizations', + 'MachineSummary', + 'MarkPartAsMainRequest', + 'MarkPartAsMainResponse', + 'MarkPartForRestartRequest', + 'MarkPartForRestartResponse', + 'Model', + 'Module', + 'ModuleFileInfo', + 'ModuleLanguage', + 'ModuleMetadata', + 'ModuleSourceType', + 'ModuleVersion', + 'NewRobotPartRequest', + 'NewRobotPartResponse', + 'NewRobotRequest', + 'NewRobotResponse', + 'OAuthConfig', + 'OnlineState', + 'OrgDetails', + 'Organization', + 'OrganizationGetLogoRequest', + 'OrganizationGetLogoResponse', + 'OrganizationGetSupportEmailRequest', + 'OrganizationGetSupportEmailResponse', + 'OrganizationIdentity', + 'OrganizationInvite', + 'OrganizationMember', + 'OrganizationSetLogoRequest', + 'OrganizationSetLogoResponse', + 'OrganizationSetSupportEmailRequest', + 'OrganizationSetSupportEmailResponse', + 'PKCE', + 'PartSummary', + 'ReadOAuthAppRequest', + 'ReadOAuthAppResponse', + 'RegistryItem', + 'RegistryItemStatus', + 'RemoveRoleRequest', + 'RemoveRoleResponse', + 'RenameKeyRequest', + 'RenameKeyResponse', + 'RenameRegistryItemRequest', + 'RenameRegistryItemResponse', + 'ResendOrganizationInviteRequest', + 'ResendOrganizationInviteResponse', + 'ResolvedFragment', + 'Robot', + 'RobotPart', + 'RobotPartHistoryEntry', + 'RotateKeyRequest', + 'RotateKeyResponse', + 'RoverRentalRobot', + 'SearchOrganizationsRequest', + 'SearchOrganizationsResponse', + 'SetFragmentTagRequest', + 'SetFragmentTagResponse', + 'ShareLocationRequest', + 'ShareLocationResponse', + 'SharedSecret', + 'StorageConfig', + 'TailRobotPartLogsRequest', + 'TailRobotPartLogsResponse', + 'TextOverrides', + 'TransferRegistryItemRequest', + 'TransferRegistryItemResponse', + 'URLValidation', + 'UnshareLocationRequest', + 'UnshareLocationResponse', + 'UpdateBillingServiceRequest', + 'UpdateBillingServiceResponse', + 'UpdateFragmentRequest', + 'UpdateFragmentResponse', + 'UpdateLocationMetadataRequest', + 'UpdateLocationMetadataResponse', + 'UpdateLocationRequest', + 'UpdateLocationResponse', + 'UpdateMLModelMetadata', + 'UpdateMLTrainingMetadata', + 'UpdateModuleMetadata', + 'UpdateModuleRequest', + 'UpdateModuleResponse', + 'UpdateOAuthAppRequest', + 'UpdateOAuthAppResponse', + 'UpdateOrganizationInviteAuthorizationsRequest', + 'UpdateOrganizationInviteAuthorizationsResponse', + 'UpdateOrganizationMetadataRequest', + 'UpdateOrganizationMetadataResponse', + 'UpdateOrganizationNamespaceRequest', + 'UpdateOrganizationNamespaceResponse', + 'UpdateOrganizationRequest', + 'UpdateOrganizationResponse', + 'UpdateRegistryItemRequest', + 'UpdateRegistryItemResponse', + 'UpdateRobotMetadataRequest', + 'UpdateRobotMetadataResponse', + 'UpdateRobotPartMetadataRequest', + 'UpdateRobotPartMetadataResponse', + 'UpdateRobotPartRequest', + 'UpdateRobotPartResponse', + 'UpdateRobotRequest', + 'UpdateRobotResponse', + 'UploadModuleFileRequest', + 'UploadModuleFileResponse', + 'Uploads', + 'VersionHistory', + 'ViamAgentVersion', + 'ViamServerVersion', + 'Visibility', ] diff --git a/src/viam/proto/app/agent/__init__.py b/src/viam/proto/app/agent/__init__.py index d65e26305c..2e0e2b9fc4 100644 --- a/src/viam/proto/app/agent/__init__.py +++ b/src/viam/proto/app/agent/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.agent.v1.agent_grpc import AgentDeviceServiceBase, AgentDeviceServiceStub, UnimplementedAgentDeviceServiceBase +''' +from ....gen.app.agent.v1.agent_grpc import ( + AgentDeviceServiceBase, + AgentDeviceServiceStub, + UnimplementedAgentDeviceServiceBase +) from ....gen.app.agent.v1.agent_pb2 import ( DeviceAgentConfigRequest, DeviceAgentConfigResponse, @@ -11,18 +14,18 @@ HostInfo, PackageFormat, UpdateInfo, - VersionInfo, + VersionInfo ) __all__ = [ - "AgentDeviceServiceBase", - "AgentDeviceServiceStub", - "UnimplementedAgentDeviceServiceBase", - "DeviceAgentConfigRequest", - "DeviceAgentConfigResponse", - "DeviceSubsystemConfig", - "HostInfo", - "PackageFormat", - "UpdateInfo", - "VersionInfo", + 'AgentDeviceServiceBase', + 'AgentDeviceServiceStub', + 'UnimplementedAgentDeviceServiceBase', + 'DeviceAgentConfigRequest', + 'DeviceAgentConfigResponse', + 'DeviceSubsystemConfig', + 'HostInfo', + 'PackageFormat', + 'UpdateInfo', + 'VersionInfo', ] diff --git a/src/viam/proto/app/billing.py b/src/viam/proto/app/billing.py index 0fdec984e6..9da3d8ed02 100644 --- a/src/viam/proto/app/billing.py +++ b/src/viam/proto/app/billing.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.app.v1.billing_grpc import BillingServiceBase, BillingServiceStub, UnimplementedBillingServiceBase +''' +from ...gen.app.v1.billing_grpc import ( + BillingServiceBase, + BillingServiceStub, + UnimplementedBillingServiceBase +) from ...gen.app.v1.billing_pb2 import ( ChargeOrganizationRequest, ChargeOrganizationResponse, @@ -36,43 +39,43 @@ UpdateOrganizationBillingTierResponse, UsageCost, UsageCostType, - VerificationInfo, + VerificationInfo ) __all__ = [ - "BillingServiceBase", - "BillingServiceStub", - "UnimplementedBillingServiceBase", - "ChargeOrganizationRequest", - "ChargeOrganizationResponse", - "CreateInvoiceAndChargeImmediatelyRequest", - "CreateInvoiceAndChargeImmediatelyResponse", - "GetAvailableBillingTiersRequest", - "GetAvailableBillingTiersResponse", - "GetCurrentMonthUsageRequest", - "GetCurrentMonthUsageResponse", - "GetInvoicePdfRequest", - "GetInvoicePdfResponse", - "GetInvoicesSummaryRequest", - "GetInvoicesSummaryResponse", - "GetLocationBillingOrganizationRequest", - "GetLocationBillingOrganizationResponse", - "GetOrgBillingInformationRequest", - "GetOrgBillingInformationResponse", - "InvoiceSummary", - "PaymentMethodCard", - "PaymentMethodType", - "PaymentMethodUSBankAccount", - "ResourceUsageCosts", - "ResourceUsageCostsBySource", - "SendPaymentRequiredEmailRequest", - "SendPaymentRequiredEmailResponse", - "SourceType", - "UpdateLocationBillingOrganizationRequest", - "UpdateLocationBillingOrganizationResponse", - "UpdateOrganizationBillingTierRequest", - "UpdateOrganizationBillingTierResponse", - "UsageCost", - "UsageCostType", - "VerificationInfo", + 'BillingServiceBase', + 'BillingServiceStub', + 'UnimplementedBillingServiceBase', + 'ChargeOrganizationRequest', + 'ChargeOrganizationResponse', + 'CreateInvoiceAndChargeImmediatelyRequest', + 'CreateInvoiceAndChargeImmediatelyResponse', + 'GetAvailableBillingTiersRequest', + 'GetAvailableBillingTiersResponse', + 'GetCurrentMonthUsageRequest', + 'GetCurrentMonthUsageResponse', + 'GetInvoicePdfRequest', + 'GetInvoicePdfResponse', + 'GetInvoicesSummaryRequest', + 'GetInvoicesSummaryResponse', + 'GetLocationBillingOrganizationRequest', + 'GetLocationBillingOrganizationResponse', + 'GetOrgBillingInformationRequest', + 'GetOrgBillingInformationResponse', + 'InvoiceSummary', + 'PaymentMethodCard', + 'PaymentMethodType', + 'PaymentMethodUSBankAccount', + 'ResourceUsageCosts', + 'ResourceUsageCostsBySource', + 'SendPaymentRequiredEmailRequest', + 'SendPaymentRequiredEmailResponse', + 'SourceType', + 'UpdateLocationBillingOrganizationRequest', + 'UpdateLocationBillingOrganizationResponse', + 'UpdateOrganizationBillingTierRequest', + 'UpdateOrganizationBillingTierResponse', + 'UsageCost', + 'UsageCostType', + 'VerificationInfo', ] diff --git a/src/viam/proto/app/cloudslam/__init__.py b/src/viam/proto/app/cloudslam/__init__.py index 1f01b79f50..2fad1b5cef 100644 --- a/src/viam/proto/app/cloudslam/__init__.py +++ b/src/viam/proto/app/cloudslam/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.cloudslam.v1.cloud_slam_grpc import CloudSLAMServiceBase, CloudSLAMServiceStub, UnimplementedCloudSLAMServiceBase +''' +from ....gen.app.cloudslam.v1.cloud_slam_grpc import ( + CloudSLAMServiceBase, + CloudSLAMServiceStub, + UnimplementedCloudSLAMServiceBase +) from ....gen.app.cloudslam.v1.cloud_slam_pb2 import ( CaptureInterval, EndStatus, @@ -21,28 +24,28 @@ StartMappingSessionRequest, StartMappingSessionResponse, StopMappingSessionRequest, - StopMappingSessionResponse, + StopMappingSessionResponse ) __all__ = [ - "CloudSLAMServiceBase", - "CloudSLAMServiceStub", - "UnimplementedCloudSLAMServiceBase", - "CaptureInterval", - "EndStatus", - "GetActiveMappingSessionsForRobotRequest", - "GetActiveMappingSessionsForRobotResponse", - "GetMappingSessionMetadataByIDRequest", - "GetMappingSessionMetadataByIDResponse", - "GetMappingSessionPointCloudRequest", - "GetMappingSessionPointCloudResponse", - "ListMappingSessionsRequest", - "ListMappingSessionsResponse", - "MappingMetadata", - "Module", - "SensorInfo", - "StartMappingSessionRequest", - "StartMappingSessionResponse", - "StopMappingSessionRequest", - "StopMappingSessionResponse", + 'CloudSLAMServiceBase', + 'CloudSLAMServiceStub', + 'UnimplementedCloudSLAMServiceBase', + 'CaptureInterval', + 'EndStatus', + 'GetActiveMappingSessionsForRobotRequest', + 'GetActiveMappingSessionsForRobotResponse', + 'GetMappingSessionMetadataByIDRequest', + 'GetMappingSessionMetadataByIDResponse', + 'GetMappingSessionPointCloudRequest', + 'GetMappingSessionPointCloudResponse', + 'ListMappingSessionsRequest', + 'ListMappingSessionsResponse', + 'MappingMetadata', + 'Module', + 'SensorInfo', + 'StartMappingSessionRequest', + 'StartMappingSessionResponse', + 'StopMappingSessionRequest', + 'StopMappingSessionResponse', ] diff --git a/src/viam/proto/app/data/__init__.py b/src/viam/proto/app/data/__init__.py index b6d237f51f..708349fb7d 100644 --- a/src/viam/proto/app/data/__init__.py +++ b/src/viam/proto/app/data/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.data.v1.data_grpc import DataServiceBase, DataServiceStub, UnimplementedDataServiceBase +''' +from ....gen.app.data.v1.data_grpc import ( + DataServiceBase, + DataServiceStub, + UnimplementedDataServiceBase +) from ....gen.app.data.v1.data_pb2 import ( AddBinaryDataToDatasetByIDsRequest, AddBinaryDataToDatasetByIDsResponse, @@ -57,8 +60,8 @@ GetSavedQueryRequest, GetSavedQueryResponse, Index, - IndexableCollection, IndexCreator, + IndexableCollection, ListIndexesRequest, ListIndexesResponse, ListSavedQueriesRequest, @@ -89,96 +92,96 @@ UpdateBoundingBoxRequest, UpdateBoundingBoxResponse, UpdateSavedQueryRequest, - UpdateSavedQueryResponse, + UpdateSavedQueryResponse ) __all__ = [ - "DataServiceBase", - "DataServiceStub", - "UnimplementedDataServiceBase", - "AddBinaryDataToDatasetByIDsRequest", - "AddBinaryDataToDatasetByIDsResponse", - "AddBoundingBoxToImageByIDRequest", - "AddBoundingBoxToImageByIDResponse", - "AddTagsToBinaryDataByFilterRequest", - "AddTagsToBinaryDataByFilterResponse", - "AddTagsToBinaryDataByIDsRequest", - "AddTagsToBinaryDataByIDsResponse", - "Annotations", - "BinaryData", - "BinaryDataByFilterRequest", - "BinaryDataByFilterResponse", - "BinaryDataByIDsRequest", - "BinaryDataByIDsResponse", - "BinaryID", - "BinaryMetadata", - "BoundingBox", - "BoundingBoxLabelsByFilterRequest", - "BoundingBoxLabelsByFilterResponse", - "CaptureInterval", - "CaptureMetadata", - "Classification", - "ConfigureDatabaseUserRequest", - "ConfigureDatabaseUserResponse", - "CreateBinaryDataSignedURLRequest", - "CreateBinaryDataSignedURLResponse", - "CreateIndexRequest", - "CreateIndexResponse", - "CreateSavedQueryRequest", - "CreateSavedQueryResponse", - "DataRequest", - "DeleteBinaryDataByFilterRequest", - "DeleteBinaryDataByFilterResponse", - "DeleteBinaryDataByIDsRequest", - "DeleteBinaryDataByIDsResponse", - "DeleteIndexRequest", - "DeleteIndexResponse", - "DeleteSavedQueryRequest", - "DeleteSavedQueryResponse", - "DeleteTabularDataRequest", - "DeleteTabularDataResponse", - "DeleteTabularFilter", - "ExportTabularDataRequest", - "ExportTabularDataResponse", - "Filter", - "GetDatabaseConnectionRequest", - "GetDatabaseConnectionResponse", - "GetLatestTabularDataRequest", - "GetLatestTabularDataResponse", - "GetSavedQueryRequest", - "GetSavedQueryResponse", - "Index", - "IndexCreator", - "IndexableCollection", - "ListIndexesRequest", - "ListIndexesResponse", - "ListSavedQueriesRequest", - "ListSavedQueriesResponse", - "Order", - "Query", - "RemoveBinaryDataFromDatasetByIDsRequest", - "RemoveBinaryDataFromDatasetByIDsResponse", - "RemoveBoundingBoxFromImageByIDRequest", - "RemoveBoundingBoxFromImageByIDResponse", - "RemoveTagsFromBinaryDataByFilterRequest", - "RemoveTagsFromBinaryDataByFilterResponse", - "RemoveTagsFromBinaryDataByIDsRequest", - "RemoveTagsFromBinaryDataByIDsResponse", - "TabularData", - "TabularDataByFilterRequest", - "TabularDataByFilterResponse", - "TabularDataByMQLRequest", - "TabularDataByMQLResponse", - "TabularDataBySQLRequest", - "TabularDataBySQLResponse", - "TabularDataSource", - "TabularDataSourceType", - "TagsByFilterRequest", - "TagsByFilterResponse", - "TagsFilter", - "TagsFilterType", - "UpdateBoundingBoxRequest", - "UpdateBoundingBoxResponse", - "UpdateSavedQueryRequest", - "UpdateSavedQueryResponse", + 'DataServiceBase', + 'DataServiceStub', + 'UnimplementedDataServiceBase', + 'AddBinaryDataToDatasetByIDsRequest', + 'AddBinaryDataToDatasetByIDsResponse', + 'AddBoundingBoxToImageByIDRequest', + 'AddBoundingBoxToImageByIDResponse', + 'AddTagsToBinaryDataByFilterRequest', + 'AddTagsToBinaryDataByFilterResponse', + 'AddTagsToBinaryDataByIDsRequest', + 'AddTagsToBinaryDataByIDsResponse', + 'Annotations', + 'BinaryData', + 'BinaryDataByFilterRequest', + 'BinaryDataByFilterResponse', + 'BinaryDataByIDsRequest', + 'BinaryDataByIDsResponse', + 'BinaryID', + 'BinaryMetadata', + 'BoundingBox', + 'BoundingBoxLabelsByFilterRequest', + 'BoundingBoxLabelsByFilterResponse', + 'CaptureInterval', + 'CaptureMetadata', + 'Classification', + 'ConfigureDatabaseUserRequest', + 'ConfigureDatabaseUserResponse', + 'CreateBinaryDataSignedURLRequest', + 'CreateBinaryDataSignedURLResponse', + 'CreateIndexRequest', + 'CreateIndexResponse', + 'CreateSavedQueryRequest', + 'CreateSavedQueryResponse', + 'DataRequest', + 'DeleteBinaryDataByFilterRequest', + 'DeleteBinaryDataByFilterResponse', + 'DeleteBinaryDataByIDsRequest', + 'DeleteBinaryDataByIDsResponse', + 'DeleteIndexRequest', + 'DeleteIndexResponse', + 'DeleteSavedQueryRequest', + 'DeleteSavedQueryResponse', + 'DeleteTabularDataRequest', + 'DeleteTabularDataResponse', + 'DeleteTabularFilter', + 'ExportTabularDataRequest', + 'ExportTabularDataResponse', + 'Filter', + 'GetDatabaseConnectionRequest', + 'GetDatabaseConnectionResponse', + 'GetLatestTabularDataRequest', + 'GetLatestTabularDataResponse', + 'GetSavedQueryRequest', + 'GetSavedQueryResponse', + 'Index', + 'IndexCreator', + 'IndexableCollection', + 'ListIndexesRequest', + 'ListIndexesResponse', + 'ListSavedQueriesRequest', + 'ListSavedQueriesResponse', + 'Order', + 'Query', + 'RemoveBinaryDataFromDatasetByIDsRequest', + 'RemoveBinaryDataFromDatasetByIDsResponse', + 'RemoveBoundingBoxFromImageByIDRequest', + 'RemoveBoundingBoxFromImageByIDResponse', + 'RemoveTagsFromBinaryDataByFilterRequest', + 'RemoveTagsFromBinaryDataByFilterResponse', + 'RemoveTagsFromBinaryDataByIDsRequest', + 'RemoveTagsFromBinaryDataByIDsResponse', + 'TabularData', + 'TabularDataByFilterRequest', + 'TabularDataByFilterResponse', + 'TabularDataByMQLRequest', + 'TabularDataByMQLResponse', + 'TabularDataBySQLRequest', + 'TabularDataBySQLResponse', + 'TabularDataSource', + 'TabularDataSourceType', + 'TagsByFilterRequest', + 'TagsByFilterResponse', + 'TagsFilter', + 'TagsFilterType', + 'UpdateBoundingBoxRequest', + 'UpdateBoundingBoxResponse', + 'UpdateSavedQueryRequest', + 'UpdateSavedQueryResponse', ] diff --git a/src/viam/proto/app/datapipelines/__init__.py b/src/viam/proto/app/datapipelines/__init__.py index b81d834f12..060344965d 100644 --- a/src/viam/proto/app/datapipelines/__init__.py +++ b/src/viam/proto/app/datapipelines/__init__.py @@ -1,12 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.app.datapipelines.v1.data_pipelines_grpc import ( DataPipelinesServiceBase, DataPipelinesServiceStub, - UnimplementedDataPipelinesServiceBase, + UnimplementedDataPipelinesServiceBase ) from ....gen.app.datapipelines.v1.data_pipelines_pb2 import ( CreateDataPipelineRequest, @@ -27,30 +26,30 @@ ListDataPipelinesRequest, ListDataPipelinesResponse, RenameDataPipelineRequest, - RenameDataPipelineResponse, + RenameDataPipelineResponse ) __all__ = [ - "DataPipelinesServiceBase", - "DataPipelinesServiceStub", - "UnimplementedDataPipelinesServiceBase", - "CreateDataPipelineRequest", - "CreateDataPipelineResponse", - "DataPipeline", - "DataPipelineRun", - "DataPipelineRunStatus", - "DeleteDataPipelineRequest", - "DeleteDataPipelineResponse", - "DisableDataPipelineRequest", - "DisableDataPipelineResponse", - "EnableDataPipelineRequest", - "EnableDataPipelineResponse", - "GetDataPipelineRequest", - "GetDataPipelineResponse", - "ListDataPipelineRunsRequest", - "ListDataPipelineRunsResponse", - "ListDataPipelinesRequest", - "ListDataPipelinesResponse", - "RenameDataPipelineRequest", - "RenameDataPipelineResponse", + 'DataPipelinesServiceBase', + 'DataPipelinesServiceStub', + 'UnimplementedDataPipelinesServiceBase', + 'CreateDataPipelineRequest', + 'CreateDataPipelineResponse', + 'DataPipeline', + 'DataPipelineRun', + 'DataPipelineRunStatus', + 'DeleteDataPipelineRequest', + 'DeleteDataPipelineResponse', + 'DisableDataPipelineRequest', + 'DisableDataPipelineResponse', + 'EnableDataPipelineRequest', + 'EnableDataPipelineResponse', + 'GetDataPipelineRequest', + 'GetDataPipelineResponse', + 'ListDataPipelineRunsRequest', + 'ListDataPipelineRunsResponse', + 'ListDataPipelinesRequest', + 'ListDataPipelinesResponse', + 'RenameDataPipelineRequest', + 'RenameDataPipelineResponse', ] diff --git a/src/viam/proto/app/dataset/__init__.py b/src/viam/proto/app/dataset/__init__.py index 602f219342..36c0715d98 100644 --- a/src/viam/proto/app/dataset/__init__.py +++ b/src/viam/proto/app/dataset/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.dataset.v1.dataset_grpc import DatasetServiceBase, DatasetServiceStub, UnimplementedDatasetServiceBase +''' +from ....gen.app.dataset.v1.dataset_grpc import ( + DatasetServiceBase, + DatasetServiceStub, + UnimplementedDatasetServiceBase +) from ....gen.app.dataset.v1.dataset_pb2 import ( CreateDatasetRequest, CreateDatasetResponse, @@ -17,24 +20,24 @@ MergeDatasetsRequest, MergeDatasetsResponse, RenameDatasetRequest, - RenameDatasetResponse, + RenameDatasetResponse ) __all__ = [ - "DatasetServiceBase", - "DatasetServiceStub", - "UnimplementedDatasetServiceBase", - "CreateDatasetRequest", - "CreateDatasetResponse", - "Dataset", - "DeleteDatasetRequest", - "DeleteDatasetResponse", - "ListDatasetsByIDsRequest", - "ListDatasetsByIDsResponse", - "ListDatasetsByOrganizationIDRequest", - "ListDatasetsByOrganizationIDResponse", - "MergeDatasetsRequest", - "MergeDatasetsResponse", - "RenameDatasetRequest", - "RenameDatasetResponse", + 'DatasetServiceBase', + 'DatasetServiceStub', + 'UnimplementedDatasetServiceBase', + 'CreateDatasetRequest', + 'CreateDatasetResponse', + 'Dataset', + 'DeleteDatasetRequest', + 'DeleteDatasetResponse', + 'ListDatasetsByIDsRequest', + 'ListDatasetsByIDsResponse', + 'ListDatasetsByOrganizationIDRequest', + 'ListDatasetsByOrganizationIDResponse', + 'MergeDatasetsRequest', + 'MergeDatasetsResponse', + 'RenameDatasetRequest', + 'RenameDatasetResponse', ] diff --git a/src/viam/proto/app/datasync/__init__.py b/src/viam/proto/app/datasync/__init__.py index a9f8451b5c..62e46c8abd 100644 --- a/src/viam/proto/app/datasync/__init__.py +++ b/src/viam/proto/app/datasync/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.datasync.v1.data_sync_grpc import DataSyncServiceBase, DataSyncServiceStub, UnimplementedDataSyncServiceBase +''' +from ....gen.app.datasync.v1.data_sync_grpc import ( + DataSyncServiceBase, + DataSyncServiceStub, + UnimplementedDataSyncServiceBase +) from ....gen.app.datasync.v1.data_sync_pb2 import ( CaptureInterval, DataCaptureMetadata, @@ -19,26 +22,26 @@ SensorMetadata, StreamingDataCaptureUploadRequest, StreamingDataCaptureUploadResponse, - UploadMetadata, + UploadMetadata ) __all__ = [ - "DataSyncServiceBase", - "DataSyncServiceStub", - "UnimplementedDataSyncServiceBase", - "CaptureInterval", - "DataCaptureMetadata", - "DataCaptureUploadMetadata", - "DataCaptureUploadRequest", - "DataCaptureUploadResponse", - "DataType", - "FileData", - "FileUploadRequest", - "FileUploadResponse", - "MimeType", - "SensorData", - "SensorMetadata", - "StreamingDataCaptureUploadRequest", - "StreamingDataCaptureUploadResponse", - "UploadMetadata", + 'DataSyncServiceBase', + 'DataSyncServiceStub', + 'UnimplementedDataSyncServiceBase', + 'CaptureInterval', + 'DataCaptureMetadata', + 'DataCaptureUploadMetadata', + 'DataCaptureUploadRequest', + 'DataCaptureUploadResponse', + 'DataType', + 'FileData', + 'FileUploadRequest', + 'FileUploadResponse', + 'MimeType', + 'SensorData', + 'SensorMetadata', + 'StreamingDataCaptureUploadRequest', + 'StreamingDataCaptureUploadResponse', + 'UploadMetadata', ] diff --git a/src/viam/proto/app/end_user.py b/src/viam/proto/app/end_user.py index f0290e5f07..4eaa744ca1 100644 --- a/src/viam/proto/app/end_user.py +++ b/src/viam/proto/app/end_user.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.app.v1.end_user_grpc import EndUserServiceBase, EndUserServiceStub, UnimplementedEndUserServiceBase +''' +from ...gen.app.v1.end_user_grpc import ( + EndUserServiceBase, + EndUserServiceStub, + UnimplementedEndUserServiceBase +) from ...gen.app.v1.end_user_pb2 import ( AcceptLegalRequest, AcceptLegalResponse, @@ -14,21 +17,21 @@ RegisterAuthApplicationRequest, RegisterAuthApplicationResponse, UpdateAuthApplicationRequest, - UpdateAuthApplicationResponse, + UpdateAuthApplicationResponse ) __all__ = [ - "EndUserServiceBase", - "EndUserServiceStub", - "UnimplementedEndUserServiceBase", - "AcceptLegalRequest", - "AcceptLegalResponse", - "GetAuthApplicationRequest", - "GetAuthApplicationResponse", - "IsLegalAcceptedRequest", - "IsLegalAcceptedResponse", - "RegisterAuthApplicationRequest", - "RegisterAuthApplicationResponse", - "UpdateAuthApplicationRequest", - "UpdateAuthApplicationResponse", + 'EndUserServiceBase', + 'EndUserServiceStub', + 'UnimplementedEndUserServiceBase', + 'AcceptLegalRequest', + 'AcceptLegalResponse', + 'GetAuthApplicationRequest', + 'GetAuthApplicationResponse', + 'IsLegalAcceptedRequest', + 'IsLegalAcceptedResponse', + 'RegisterAuthApplicationRequest', + 'RegisterAuthApplicationResponse', + 'UpdateAuthApplicationRequest', + 'UpdateAuthApplicationResponse', ] diff --git a/src/viam/proto/app/mlinference/__init__.py b/src/viam/proto/app/mlinference/__init__.py index 4bd1fe1824..d3b3de1230 100644 --- a/src/viam/proto/app/mlinference/__init__.py +++ b/src/viam/proto/app/mlinference/__init__.py @@ -1,15 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.mlinference.v1.ml_inference_grpc import MLInferenceServiceBase, MLInferenceServiceStub, UnimplementedMLInferenceServiceBase -from ....gen.app.mlinference.v1.ml_inference_pb2 import GetInferenceRequest, GetInferenceResponse +''' +from ....gen.app.mlinference.v1.ml_inference_grpc import ( + MLInferenceServiceBase, + MLInferenceServiceStub, + UnimplementedMLInferenceServiceBase +) +from ....gen.app.mlinference.v1.ml_inference_pb2 import ( + GetInferenceRequest, + GetInferenceResponse +) __all__ = [ - "MLInferenceServiceBase", - "MLInferenceServiceStub", - "UnimplementedMLInferenceServiceBase", - "GetInferenceRequest", - "GetInferenceResponse", + 'MLInferenceServiceBase', + 'MLInferenceServiceStub', + 'UnimplementedMLInferenceServiceBase', + 'GetInferenceRequest', + 'GetInferenceResponse', ] diff --git a/src/viam/proto/app/mltraining/__init__.py b/src/viam/proto/app/mltraining/__init__.py index 650b266553..ccf8f80a7f 100644 --- a/src/viam/proto/app/mltraining/__init__.py +++ b/src/viam/proto/app/mltraining/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.mltraining.v1.ml_training_grpc import MLTrainingServiceBase, MLTrainingServiceStub, UnimplementedMLTrainingServiceBase +''' +from ....gen.app.mltraining.v1.ml_training_grpc import ( + MLTrainingServiceBase, + MLTrainingServiceStub, + UnimplementedMLTrainingServiceBase +) from ....gen.app.mltraining.v1.ml_training_pb2 import ( CancelTrainingJobRequest, CancelTrainingJobResponse, @@ -26,33 +29,33 @@ SubmitTrainingJobResponse, TrainingJobLogEntry, TrainingJobMetadata, - TrainingStatus, + TrainingStatus ) __all__ = [ - "MLTrainingServiceBase", - "MLTrainingServiceStub", - "UnimplementedMLTrainingServiceBase", - "CancelTrainingJobRequest", - "CancelTrainingJobResponse", - "Container", - "DeleteCompletedTrainingJobRequest", - "DeleteCompletedTrainingJobResponse", - "GetTrainingJobLogsRequest", - "GetTrainingJobLogsResponse", - "GetTrainingJobRequest", - "GetTrainingJobResponse", - "ListSupportedContainersRequest", - "ListSupportedContainersResponse", - "ListTrainingJobsRequest", - "ListTrainingJobsResponse", - "ModelFramework", - "ModelType", - "SubmitCustomTrainingJobRequest", - "SubmitCustomTrainingJobResponse", - "SubmitTrainingJobRequest", - "SubmitTrainingJobResponse", - "TrainingJobLogEntry", - "TrainingJobMetadata", - "TrainingStatus", + 'MLTrainingServiceBase', + 'MLTrainingServiceStub', + 'UnimplementedMLTrainingServiceBase', + 'CancelTrainingJobRequest', + 'CancelTrainingJobResponse', + 'Container', + 'DeleteCompletedTrainingJobRequest', + 'DeleteCompletedTrainingJobResponse', + 'GetTrainingJobLogsRequest', + 'GetTrainingJobLogsResponse', + 'GetTrainingJobRequest', + 'GetTrainingJobResponse', + 'ListSupportedContainersRequest', + 'ListSupportedContainersResponse', + 'ListTrainingJobsRequest', + 'ListTrainingJobsResponse', + 'ModelFramework', + 'ModelType', + 'SubmitCustomTrainingJobRequest', + 'SubmitCustomTrainingJobResponse', + 'SubmitTrainingJobRequest', + 'SubmitTrainingJobResponse', + 'TrainingJobLogEntry', + 'TrainingJobMetadata', + 'TrainingStatus', ] diff --git a/src/viam/proto/app/packages/__init__.py b/src/viam/proto/app/packages/__init__.py index b09b26537f..263674cc7a 100644 --- a/src/viam/proto/app/packages/__init__.py +++ b/src/viam/proto/app/packages/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.packages.v1.packages_grpc import PackageServiceBase, PackageServiceStub, UnimplementedPackageServiceBase +''' +from ....gen.app.packages.v1.packages_grpc import ( + PackageServiceBase, + PackageServiceStub, + UnimplementedPackageServiceBase +) from ....gen.app.packages.v1.packages_pb2 import ( CreatePackageRequest, CreatePackageResponse, @@ -16,23 +19,23 @@ ListPackagesResponse, Package, PackageInfo, - PackageType, + PackageType ) __all__ = [ - "PackageServiceBase", - "PackageServiceStub", - "UnimplementedPackageServiceBase", - "CreatePackageRequest", - "CreatePackageResponse", - "DeletePackageRequest", - "DeletePackageResponse", - "FileInfo", - "GetPackageRequest", - "GetPackageResponse", - "ListPackagesRequest", - "ListPackagesResponse", - "Package", - "PackageInfo", - "PackageType", + 'PackageServiceBase', + 'PackageServiceStub', + 'UnimplementedPackageServiceBase', + 'CreatePackageRequest', + 'CreatePackageResponse', + 'DeletePackageRequest', + 'DeletePackageResponse', + 'FileInfo', + 'GetPackageRequest', + 'GetPackageResponse', + 'ListPackagesRequest', + 'ListPackagesResponse', + 'Package', + 'PackageInfo', + 'PackageType', ] diff --git a/src/viam/proto/app/robot.py b/src/viam/proto/app/robot.py index 87494020ce..c092bf778f 100644 --- a/src/viam/proto/app/robot.py +++ b/src/viam/proto/app/robot.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.app.v1.robot_grpc import RobotServiceBase, RobotServiceStub, UnimplementedRobotServiceBase +''' +from ...gen.app.v1.robot_grpc import ( + RobotServiceBase, + RobotServiceStub, + UnimplementedRobotServiceBase +) from ...gen.app.v1.robot_pb2 import ( AgentInfo, AppValidationStatus, @@ -18,8 +21,8 @@ CredentialsType, ExternalAuthConfig, Frame, - JobConfig, JWKSFile, + JobConfig, LocationSecret, LogConfiguration, LogPatternConfig, @@ -41,48 +44,48 @@ SessionsConfig, TracingConfig, TrafficTunnelEndpoint, - Translation, + Translation ) __all__ = [ - "RobotServiceBase", - "RobotServiceStub", - "UnimplementedRobotServiceBase", - "AgentInfo", - "AppValidationStatus", - "AuthConfig", - "AuthHandlerConfig", - "CertificateRequest", - "CertificateResponse", - "CloudConfig", - "ComponentConfig", - "ConfigRequest", - "ConfigResponse", - "CredentialsType", - "ExternalAuthConfig", - "Frame", - "JWKSFile", - "JobConfig", - "LocationSecret", - "LogConfiguration", - "LogPatternConfig", - "LogRequest", - "LogResponse", - "MaintenanceConfig", - "ModuleConfig", - "NeedsRestartRequest", - "NeedsRestartResponse", - "NetworkConfig", - "Orientation", - "PackageConfig", - "ProcessConfig", - "RemoteAuth", - "RemoteConfig", - "ResourceLevelServiceConfig", - "RobotConfig", - "ServiceConfig", - "SessionsConfig", - "TracingConfig", - "TrafficTunnelEndpoint", - "Translation", + 'RobotServiceBase', + 'RobotServiceStub', + 'UnimplementedRobotServiceBase', + 'AgentInfo', + 'AppValidationStatus', + 'AuthConfig', + 'AuthHandlerConfig', + 'CertificateRequest', + 'CertificateResponse', + 'CloudConfig', + 'ComponentConfig', + 'ConfigRequest', + 'ConfigResponse', + 'CredentialsType', + 'ExternalAuthConfig', + 'Frame', + 'JWKSFile', + 'JobConfig', + 'LocationSecret', + 'LogConfiguration', + 'LogPatternConfig', + 'LogRequest', + 'LogResponse', + 'MaintenanceConfig', + 'ModuleConfig', + 'NeedsRestartRequest', + 'NeedsRestartResponse', + 'NetworkConfig', + 'Orientation', + 'PackageConfig', + 'ProcessConfig', + 'RemoteAuth', + 'RemoteConfig', + 'ResourceLevelServiceConfig', + 'RobotConfig', + 'ServiceConfig', + 'SessionsConfig', + 'TracingConfig', + 'TrafficTunnelEndpoint', + 'Translation', ] diff --git a/src/viam/proto/common/__init__.py b/src/viam/proto/common/__init__.py index f6f72fc580..6ce7d8a204 100644 --- a/src/viam/proto/common/__init__.py +++ b/src/viam/proto/common/__init__.py @@ -1,8 +1,7 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ...gen.common.v1.common_pb2 import ( ActuatorStatus, AudioInfo, @@ -10,9 +9,9 @@ DoCommandRequest, DoCommandResponse, GeoGeometry, + GeoPoint, GeometriesInFrame, Geometry, - GeoPoint, Get3DModelsRequest, Get3DModelsResponse, GetGeometriesRequest, @@ -37,42 +36,42 @@ Sphere, Transform, Vector3, - WorldState, + WorldState ) __all__ = [ - "ActuatorStatus", - "AudioInfo", - "Capsule", - "DoCommandRequest", - "DoCommandResponse", - "GeoGeometry", - "GeoPoint", - "GeometriesInFrame", - "Geometry", - "Get3DModelsRequest", - "Get3DModelsResponse", - "GetGeometriesRequest", - "GetGeometriesResponse", - "GetKinematicsRequest", - "GetKinematicsResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "GetReadingsRequest", - "GetReadingsResponse", - "KinematicsFileFormat", - "LogEntry", - "Mesh", - "Orientation", - "PointCloud", - "PointCloudObject", - "Pose", - "PoseInFrame", - "RectangularPrism", - "ResourceName", - "ResponseMetadata", - "Sphere", - "Transform", - "Vector3", - "WorldState", + 'ActuatorStatus', + 'AudioInfo', + 'Capsule', + 'DoCommandRequest', + 'DoCommandResponse', + 'GeoGeometry', + 'GeoPoint', + 'GeometriesInFrame', + 'Geometry', + 'Get3DModelsRequest', + 'Get3DModelsResponse', + 'GetGeometriesRequest', + 'GetGeometriesResponse', + 'GetKinematicsRequest', + 'GetKinematicsResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'GetReadingsRequest', + 'GetReadingsResponse', + 'KinematicsFileFormat', + 'LogEntry', + 'Mesh', + 'Orientation', + 'PointCloud', + 'PointCloudObject', + 'Pose', + 'PoseInFrame', + 'RectangularPrism', + 'ResourceName', + 'ResponseMetadata', + 'Sphere', + 'Transform', + 'Vector3', + 'WorldState', ] diff --git a/src/viam/proto/component/arm/__init__.py b/src/viam/proto/component/arm/__init__.py index 65297b3187..1365355c43 100644 --- a/src/viam/proto/component/arm/__init__.py +++ b/src/viam/proto/component/arm/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.arm.v1.arm_grpc import ArmServiceBase, ArmServiceStub, UnimplementedArmServiceBase +''' +from ....gen.component.arm.v1.arm_grpc import ( + ArmServiceBase, + ArmServiceStub, + UnimplementedArmServiceBase +) from ....gen.component.arm.v1.arm_pb2 import ( GetEndPositionRequest, GetEndPositionResponse, @@ -21,28 +24,28 @@ MoveToPositionResponse, Status, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "ArmServiceBase", - "ArmServiceStub", - "UnimplementedArmServiceBase", - "GetEndPositionRequest", - "GetEndPositionResponse", - "GetJointPositionsRequest", - "GetJointPositionsResponse", - "IsMovingRequest", - "IsMovingResponse", - "JointPositions", - "MoveOptions", - "MoveThroughJointPositionsRequest", - "MoveThroughJointPositionsResponse", - "MoveToJointPositionsRequest", - "MoveToJointPositionsResponse", - "MoveToPositionRequest", - "MoveToPositionResponse", - "Status", - "StopRequest", - "StopResponse", + 'ArmServiceBase', + 'ArmServiceStub', + 'UnimplementedArmServiceBase', + 'GetEndPositionRequest', + 'GetEndPositionResponse', + 'GetJointPositionsRequest', + 'GetJointPositionsResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'JointPositions', + 'MoveOptions', + 'MoveThroughJointPositionsRequest', + 'MoveThroughJointPositionsResponse', + 'MoveToJointPositionsRequest', + 'MoveToJointPositionsResponse', + 'MoveToPositionRequest', + 'MoveToPositionResponse', + 'Status', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/audioin/__init__.py b/src/viam/proto/component/audioin/__init__.py index 106e87e08f..6fefd629b4 100644 --- a/src/viam/proto/component/audioin/__init__.py +++ b/src/viam/proto/component/audioin/__init__.py @@ -1,16 +1,23 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.audioin.v1.audioin_grpc import AudioInServiceBase, AudioInServiceStub, UnimplementedAudioInServiceBase -from ....gen.component.audioin.v1.audioin_pb2 import AudioChunk, GetAudioRequest, GetAudioResponse +''' +from ....gen.component.audioin.v1.audioin_grpc import ( + AudioInServiceBase, + AudioInServiceStub, + UnimplementedAudioInServiceBase +) +from ....gen.component.audioin.v1.audioin_pb2 import ( + AudioChunk, + GetAudioRequest, + GetAudioResponse +) __all__ = [ - "AudioInServiceBase", - "AudioInServiceStub", - "UnimplementedAudioInServiceBase", - "AudioChunk", - "GetAudioRequest", - "GetAudioResponse", + 'AudioInServiceBase', + 'AudioInServiceStub', + 'UnimplementedAudioInServiceBase', + 'AudioChunk', + 'GetAudioRequest', + 'GetAudioResponse', ] diff --git a/src/viam/proto/component/audioout/__init__.py b/src/viam/proto/component/audioout/__init__.py index 4f52daa91b..c2f5d2e78b 100644 --- a/src/viam/proto/component/audioout/__init__.py +++ b/src/viam/proto/component/audioout/__init__.py @@ -1,15 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.audioout.v1.audioout_grpc import AudioOutServiceBase, AudioOutServiceStub, UnimplementedAudioOutServiceBase -from ....gen.component.audioout.v1.audioout_pb2 import PlayRequest, PlayResponse +''' +from ....gen.component.audioout.v1.audioout_grpc import ( + AudioOutServiceBase, + AudioOutServiceStub, + UnimplementedAudioOutServiceBase +) +from ....gen.component.audioout.v1.audioout_pb2 import ( + PlayRequest, + PlayResponse +) __all__ = [ - "AudioOutServiceBase", - "AudioOutServiceStub", - "UnimplementedAudioOutServiceBase", - "PlayRequest", - "PlayResponse", + 'AudioOutServiceBase', + 'AudioOutServiceStub', + 'UnimplementedAudioOutServiceBase', + 'PlayRequest', + 'PlayResponse', ] diff --git a/src/viam/proto/component/base/__init__.py b/src/viam/proto/component/base/__init__.py index 74b5f27043..d92a15a21e 100644 --- a/src/viam/proto/component/base/__init__.py +++ b/src/viam/proto/component/base/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.base.v1.base_grpc import BaseServiceBase, BaseServiceStub, UnimplementedBaseServiceBase +''' +from ....gen.component.base.v1.base_grpc import ( + BaseServiceBase, + BaseServiceStub, + UnimplementedBaseServiceBase +) from ....gen.component.base.v1.base_pb2 import ( GetPropertiesRequest, GetPropertiesResponse, @@ -18,25 +21,25 @@ SpinRequest, SpinResponse, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "BaseServiceBase", - "BaseServiceStub", - "UnimplementedBaseServiceBase", - "GetPropertiesRequest", - "GetPropertiesResponse", - "IsMovingRequest", - "IsMovingResponse", - "MoveStraightRequest", - "MoveStraightResponse", - "SetPowerRequest", - "SetPowerResponse", - "SetVelocityRequest", - "SetVelocityResponse", - "SpinRequest", - "SpinResponse", - "StopRequest", - "StopResponse", + 'BaseServiceBase', + 'BaseServiceStub', + 'UnimplementedBaseServiceBase', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'MoveStraightRequest', + 'MoveStraightResponse', + 'SetPowerRequest', + 'SetPowerResponse', + 'SetVelocityRequest', + 'SetVelocityResponse', + 'SpinRequest', + 'SpinResponse', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/board/__init__.py b/src/viam/proto/component/board/__init__.py index 2f5bc98749..21dfbb18ed 100644 --- a/src/viam/proto/component/board/__init__.py +++ b/src/viam/proto/component/board/__init__.py @@ -1,62 +1,65 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.board.v1.board_grpc import BoardServiceBase, BoardServiceStub, UnimplementedBoardServiceBase +''' +from ....gen.component.board.v1.board_grpc import ( + BoardServiceBase, + BoardServiceStub, + UnimplementedBoardServiceBase +) from ....gen.component.board.v1.board_pb2 import ( GetDigitalInterruptValueRequest, GetDigitalInterruptValueResponse, GetGPIORequest, GetGPIOResponse, - PowerMode, PWMFrequencyRequest, PWMFrequencyResponse, PWMRequest, PWMResponse, + PowerMode, ReadAnalogReaderRequest, ReadAnalogReaderResponse, SetGPIORequest, SetGPIOResponse, - SetPowerModeRequest, - SetPowerModeResponse, SetPWMFrequencyRequest, SetPWMFrequencyResponse, SetPWMRequest, SetPWMResponse, + SetPowerModeRequest, + SetPowerModeResponse, Status, StreamTicksRequest, StreamTicksResponse, WriteAnalogRequest, - WriteAnalogResponse, + WriteAnalogResponse ) __all__ = [ - "BoardServiceBase", - "BoardServiceStub", - "UnimplementedBoardServiceBase", - "GetDigitalInterruptValueRequest", - "GetDigitalInterruptValueResponse", - "GetGPIORequest", - "GetGPIOResponse", - "PWMFrequencyRequest", - "PWMFrequencyResponse", - "PWMRequest", - "PWMResponse", - "PowerMode", - "ReadAnalogReaderRequest", - "ReadAnalogReaderResponse", - "SetGPIORequest", - "SetGPIOResponse", - "SetPWMFrequencyRequest", - "SetPWMFrequencyResponse", - "SetPWMRequest", - "SetPWMResponse", - "SetPowerModeRequest", - "SetPowerModeResponse", - "Status", - "StreamTicksRequest", - "StreamTicksResponse", - "WriteAnalogRequest", - "WriteAnalogResponse", + 'BoardServiceBase', + 'BoardServiceStub', + 'UnimplementedBoardServiceBase', + 'GetDigitalInterruptValueRequest', + 'GetDigitalInterruptValueResponse', + 'GetGPIORequest', + 'GetGPIOResponse', + 'PWMFrequencyRequest', + 'PWMFrequencyResponse', + 'PWMRequest', + 'PWMResponse', + 'PowerMode', + 'ReadAnalogReaderRequest', + 'ReadAnalogReaderResponse', + 'SetGPIORequest', + 'SetGPIOResponse', + 'SetPWMFrequencyRequest', + 'SetPWMFrequencyResponse', + 'SetPWMRequest', + 'SetPWMResponse', + 'SetPowerModeRequest', + 'SetPowerModeResponse', + 'Status', + 'StreamTicksRequest', + 'StreamTicksResponse', + 'WriteAnalogRequest', + 'WriteAnalogResponse', ] diff --git a/src/viam/proto/component/button/__init__.py b/src/viam/proto/component/button/__init__.py index 45dd96e591..79eb582154 100644 --- a/src/viam/proto/component/button/__init__.py +++ b/src/viam/proto/component/button/__init__.py @@ -1,15 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.button.v1.button_grpc import ButtonServiceBase, ButtonServiceStub, UnimplementedButtonServiceBase -from ....gen.component.button.v1.button_pb2 import PushRequest, PushResponse +''' +from ....gen.component.button.v1.button_grpc import ( + ButtonServiceBase, + ButtonServiceStub, + UnimplementedButtonServiceBase +) +from ....gen.component.button.v1.button_pb2 import ( + PushRequest, + PushResponse +) __all__ = [ - "ButtonServiceBase", - "ButtonServiceStub", - "UnimplementedButtonServiceBase", - "PushRequest", - "PushResponse", + 'ButtonServiceBase', + 'ButtonServiceStub', + 'UnimplementedButtonServiceBase', + 'PushRequest', + 'PushResponse', ] diff --git a/src/viam/proto/component/camera/__init__.py b/src/viam/proto/component/camera/__init__.py index b59a331745..0166cf6876 100644 --- a/src/viam/proto/component/camera/__init__.py +++ b/src/viam/proto/component/camera/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.camera.v1.camera_grpc import CameraServiceBase, CameraServiceStub, UnimplementedCameraServiceBase +''' +from ....gen.component.camera.v1.camera_grpc import ( + CameraServiceBase, + CameraServiceStub, + UnimplementedCameraServiceBase +) from ....gen.component.camera.v1.camera_pb2 import ( DistortionParameters, ExtrinsicParameters, @@ -21,28 +24,28 @@ Property, RenderFrameRequest, Webcam, - Webcams, + Webcams ) __all__ = [ - "CameraServiceBase", - "CameraServiceStub", - "UnimplementedCameraServiceBase", - "DistortionParameters", - "ExtrinsicParameters", - "Format", - "GetImageRequest", - "GetImageResponse", - "GetImagesRequest", - "GetImagesResponse", - "GetPointCloudRequest", - "GetPointCloudResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "Image", - "IntrinsicParameters", - "Property", - "RenderFrameRequest", - "Webcam", - "Webcams", + 'CameraServiceBase', + 'CameraServiceStub', + 'UnimplementedCameraServiceBase', + 'DistortionParameters', + 'ExtrinsicParameters', + 'Format', + 'GetImageRequest', + 'GetImageResponse', + 'GetImagesRequest', + 'GetImagesResponse', + 'GetPointCloudRequest', + 'GetPointCloudResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'Image', + 'IntrinsicParameters', + 'Property', + 'RenderFrameRequest', + 'Webcam', + 'Webcams', ] diff --git a/src/viam/proto/component/encoder/__init__.py b/src/viam/proto/component/encoder/__init__.py index ff442c7a16..0f26320668 100644 --- a/src/viam/proto/component/encoder/__init__.py +++ b/src/viam/proto/component/encoder/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.encoder.v1.encoder_grpc import EncoderServiceBase, EncoderServiceStub, UnimplementedEncoderServiceBase +''' +from ....gen.component.encoder.v1.encoder_grpc import ( + EncoderServiceBase, + EncoderServiceStub, + UnimplementedEncoderServiceBase +) from ....gen.component.encoder.v1.encoder_pb2 import ( GetPositionRequest, GetPositionResponse, @@ -11,18 +14,18 @@ GetPropertiesResponse, PositionType, ResetPositionRequest, - ResetPositionResponse, + ResetPositionResponse ) __all__ = [ - "EncoderServiceBase", - "EncoderServiceStub", - "UnimplementedEncoderServiceBase", - "GetPositionRequest", - "GetPositionResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "PositionType", - "ResetPositionRequest", - "ResetPositionResponse", + 'EncoderServiceBase', + 'EncoderServiceStub', + 'UnimplementedEncoderServiceBase', + 'GetPositionRequest', + 'GetPositionResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'PositionType', + 'ResetPositionRequest', + 'ResetPositionResponse', ] diff --git a/src/viam/proto/component/gantry/__init__.py b/src/viam/proto/component/gantry/__init__.py index 6c2649e9a8..9ec08ed1fd 100644 --- a/src/viam/proto/component/gantry/__init__.py +++ b/src/viam/proto/component/gantry/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.gantry.v1.gantry_grpc import GantryServiceBase, GantryServiceStub, UnimplementedGantryServiceBase +''' +from ....gen.component.gantry.v1.gantry_grpc import ( + GantryServiceBase, + GantryServiceStub, + UnimplementedGantryServiceBase +) from ....gen.component.gantry.v1.gantry_pb2 import ( GetLengthsRequest, GetLengthsResponse, @@ -17,24 +20,24 @@ MoveToPositionResponse, Status, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "GantryServiceBase", - "GantryServiceStub", - "UnimplementedGantryServiceBase", - "GetLengthsRequest", - "GetLengthsResponse", - "GetPositionRequest", - "GetPositionResponse", - "HomeRequest", - "HomeResponse", - "IsMovingRequest", - "IsMovingResponse", - "MoveToPositionRequest", - "MoveToPositionResponse", - "Status", - "StopRequest", - "StopResponse", + 'GantryServiceBase', + 'GantryServiceStub', + 'UnimplementedGantryServiceBase', + 'GetLengthsRequest', + 'GetLengthsResponse', + 'GetPositionRequest', + 'GetPositionResponse', + 'HomeRequest', + 'HomeResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'MoveToPositionRequest', + 'MoveToPositionResponse', + 'Status', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/generic/__init__.py b/src/viam/proto/component/generic/__init__.py index 9b7a1533e8..c3c169edcd 100644 --- a/src/viam/proto/component/generic/__init__.py +++ b/src/viam/proto/component/generic/__init__.py @@ -1,12 +1,15 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.generic.v1.generic_grpc import GenericServiceBase, GenericServiceStub, UnimplementedGenericServiceBase +''' +from ....gen.component.generic.v1.generic_grpc import ( + GenericServiceBase, + GenericServiceStub, + UnimplementedGenericServiceBase +) __all__ = [ - "GenericServiceBase", - "GenericServiceStub", - "UnimplementedGenericServiceBase", + 'GenericServiceBase', + 'GenericServiceStub', + 'UnimplementedGenericServiceBase', ] diff --git a/src/viam/proto/component/gripper/__init__.py b/src/viam/proto/component/gripper/__init__.py index a132693024..551807a1bd 100644 --- a/src/viam/proto/component/gripper/__init__.py +++ b/src/viam/proto/component/gripper/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.gripper.v1.gripper_grpc import GripperServiceBase, GripperServiceStub, UnimplementedGripperServiceBase +''' +from ....gen.component.gripper.v1.gripper_grpc import ( + GripperServiceBase, + GripperServiceStub, + UnimplementedGripperServiceBase +) from ....gen.component.gripper.v1.gripper_pb2 import ( GrabRequest, GrabResponse, @@ -14,21 +17,21 @@ OpenRequest, OpenResponse, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "GripperServiceBase", - "GripperServiceStub", - "UnimplementedGripperServiceBase", - "GrabRequest", - "GrabResponse", - "IsHoldingSomethingRequest", - "IsHoldingSomethingResponse", - "IsMovingRequest", - "IsMovingResponse", - "OpenRequest", - "OpenResponse", - "StopRequest", - "StopResponse", + 'GripperServiceBase', + 'GripperServiceStub', + 'UnimplementedGripperServiceBase', + 'GrabRequest', + 'GrabResponse', + 'IsHoldingSomethingRequest', + 'IsHoldingSomethingResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'OpenRequest', + 'OpenResponse', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/inputcontroller/__init__.py b/src/viam/proto/component/inputcontroller/__init__.py index ba3f345684..6cc11c1655 100644 --- a/src/viam/proto/component/inputcontroller/__init__.py +++ b/src/viam/proto/component/inputcontroller/__init__.py @@ -1,12 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.component.inputcontroller.v1.input_controller_grpc import ( InputControllerServiceBase, InputControllerServiceStub, - UnimplementedInputControllerServiceBase, + UnimplementedInputControllerServiceBase ) from ....gen.component.inputcontroller.v1.input_controller_pb2 import ( Event, @@ -18,21 +17,21 @@ StreamEventsRequest, StreamEventsResponse, TriggerEventRequest, - TriggerEventResponse, + TriggerEventResponse ) __all__ = [ - "InputControllerServiceBase", - "InputControllerServiceStub", - "UnimplementedInputControllerServiceBase", - "Event", - "GetControlsRequest", - "GetControlsResponse", - "GetEventsRequest", - "GetEventsResponse", - "Status", - "StreamEventsRequest", - "StreamEventsResponse", - "TriggerEventRequest", - "TriggerEventResponse", + 'InputControllerServiceBase', + 'InputControllerServiceStub', + 'UnimplementedInputControllerServiceBase', + 'Event', + 'GetControlsRequest', + 'GetControlsResponse', + 'GetEventsRequest', + 'GetEventsResponse', + 'Status', + 'StreamEventsRequest', + 'StreamEventsResponse', + 'TriggerEventRequest', + 'TriggerEventResponse', ] diff --git a/src/viam/proto/component/motor/__init__.py b/src/viam/proto/component/motor/__init__.py index b27fd89819..d5dd4c1c5e 100644 --- a/src/viam/proto/component/motor/__init__.py +++ b/src/viam/proto/component/motor/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.motor.v1.motor_grpc import MotorServiceBase, MotorServiceStub, UnimplementedMotorServiceBase +''' +from ....gen.component.motor.v1.motor_grpc import ( + MotorServiceBase, + MotorServiceStub, + UnimplementedMotorServiceBase +) from ....gen.component.motor.v1.motor_pb2 import ( GetPositionRequest, GetPositionResponse, @@ -25,32 +28,32 @@ SetRPMResponse, Status, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "MotorServiceBase", - "MotorServiceStub", - "UnimplementedMotorServiceBase", - "GetPositionRequest", - "GetPositionResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "GoForRequest", - "GoForResponse", - "GoToRequest", - "GoToResponse", - "IsMovingRequest", - "IsMovingResponse", - "IsPoweredRequest", - "IsPoweredResponse", - "ResetZeroPositionRequest", - "ResetZeroPositionResponse", - "SetPowerRequest", - "SetPowerResponse", - "SetRPMRequest", - "SetRPMResponse", - "Status", - "StopRequest", - "StopResponse", + 'MotorServiceBase', + 'MotorServiceStub', + 'UnimplementedMotorServiceBase', + 'GetPositionRequest', + 'GetPositionResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'GoForRequest', + 'GoForResponse', + 'GoToRequest', + 'GoToResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'IsPoweredRequest', + 'IsPoweredResponse', + 'ResetZeroPositionRequest', + 'ResetZeroPositionResponse', + 'SetPowerRequest', + 'SetPowerResponse', + 'SetRPMRequest', + 'SetRPMResponse', + 'Status', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/movementsensor/__init__.py b/src/viam/proto/component/movementsensor/__init__.py index 770de4997f..cef69fa106 100644 --- a/src/viam/proto/component/movementsensor/__init__.py +++ b/src/viam/proto/component/movementsensor/__init__.py @@ -1,12 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.component.movementsensor.v1.movementsensor_grpc import ( MovementSensorServiceBase, MovementSensorServiceStub, - UnimplementedMovementSensorServiceBase, + UnimplementedMovementSensorServiceBase ) from ....gen.component.movementsensor.v1.movementsensor_pb2 import ( GetAccuracyRequest, @@ -24,27 +23,27 @@ GetPositionRequest, GetPositionResponse, GetPropertiesRequest, - GetPropertiesResponse, + GetPropertiesResponse ) __all__ = [ - "MovementSensorServiceBase", - "MovementSensorServiceStub", - "UnimplementedMovementSensorServiceBase", - "GetAccuracyRequest", - "GetAccuracyResponse", - "GetAngularVelocityRequest", - "GetAngularVelocityResponse", - "GetCompassHeadingRequest", - "GetCompassHeadingResponse", - "GetLinearAccelerationRequest", - "GetLinearAccelerationResponse", - "GetLinearVelocityRequest", - "GetLinearVelocityResponse", - "GetOrientationRequest", - "GetOrientationResponse", - "GetPositionRequest", - "GetPositionResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", + 'MovementSensorServiceBase', + 'MovementSensorServiceStub', + 'UnimplementedMovementSensorServiceBase', + 'GetAccuracyRequest', + 'GetAccuracyResponse', + 'GetAngularVelocityRequest', + 'GetAngularVelocityResponse', + 'GetCompassHeadingRequest', + 'GetCompassHeadingResponse', + 'GetLinearAccelerationRequest', + 'GetLinearAccelerationResponse', + 'GetLinearVelocityRequest', + 'GetLinearVelocityResponse', + 'GetOrientationRequest', + 'GetOrientationResponse', + 'GetPositionRequest', + 'GetPositionResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', ] diff --git a/src/viam/proto/component/posetracker/__init__.py b/src/viam/proto/component/posetracker/__init__.py index 7073f07f1b..2644a7d67b 100644 --- a/src/viam/proto/component/posetracker/__init__.py +++ b/src/viam/proto/component/posetracker/__init__.py @@ -1,19 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.component.posetracker.v1.pose_tracker_grpc import ( PoseTrackerServiceBase, PoseTrackerServiceStub, - UnimplementedPoseTrackerServiceBase, + UnimplementedPoseTrackerServiceBase +) +from ....gen.component.posetracker.v1.pose_tracker_pb2 import ( + GetPosesRequest, + GetPosesResponse ) -from ....gen.component.posetracker.v1.pose_tracker_pb2 import GetPosesRequest, GetPosesResponse __all__ = [ - "PoseTrackerServiceBase", - "PoseTrackerServiceStub", - "UnimplementedPoseTrackerServiceBase", - "GetPosesRequest", - "GetPosesResponse", + 'PoseTrackerServiceBase', + 'PoseTrackerServiceStub', + 'UnimplementedPoseTrackerServiceBase', + 'GetPosesRequest', + 'GetPosesResponse', ] diff --git a/src/viam/proto/component/powersensor/__init__.py b/src/viam/proto/component/powersensor/__init__.py index dbd1b7076a..c170f347e4 100644 --- a/src/viam/proto/component/powersensor/__init__.py +++ b/src/viam/proto/component/powersensor/__init__.py @@ -1,12 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.component.powersensor.v1.powersensor_grpc import ( PowerSensorServiceBase, PowerSensorServiceStub, - UnimplementedPowerSensorServiceBase, + UnimplementedPowerSensorServiceBase ) from ....gen.component.powersensor.v1.powersensor_pb2 import ( GetCurrentRequest, @@ -14,17 +13,17 @@ GetPowerRequest, GetPowerResponse, GetVoltageRequest, - GetVoltageResponse, + GetVoltageResponse ) __all__ = [ - "PowerSensorServiceBase", - "PowerSensorServiceStub", - "UnimplementedPowerSensorServiceBase", - "GetCurrentRequest", - "GetCurrentResponse", - "GetPowerRequest", - "GetPowerResponse", - "GetVoltageRequest", - "GetVoltageResponse", + 'PowerSensorServiceBase', + 'PowerSensorServiceStub', + 'UnimplementedPowerSensorServiceBase', + 'GetCurrentRequest', + 'GetCurrentResponse', + 'GetPowerRequest', + 'GetPowerResponse', + 'GetVoltageRequest', + 'GetVoltageResponse', ] diff --git a/src/viam/proto/component/sensor/__init__.py b/src/viam/proto/component/sensor/__init__.py index 86939e9943..034b03b894 100644 --- a/src/viam/proto/component/sensor/__init__.py +++ b/src/viam/proto/component/sensor/__init__.py @@ -1,12 +1,15 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.sensor.v1.sensor_grpc import SensorServiceBase, SensorServiceStub, UnimplementedSensorServiceBase +''' +from ....gen.component.sensor.v1.sensor_grpc import ( + SensorServiceBase, + SensorServiceStub, + UnimplementedSensorServiceBase +) __all__ = [ - "SensorServiceBase", - "SensorServiceStub", - "UnimplementedSensorServiceBase", + 'SensorServiceBase', + 'SensorServiceStub', + 'UnimplementedSensorServiceBase', ] diff --git a/src/viam/proto/component/servo/__init__.py b/src/viam/proto/component/servo/__init__.py index 2e4626130e..5312e00896 100644 --- a/src/viam/proto/component/servo/__init__.py +++ b/src/viam/proto/component/servo/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.servo.v1.servo_grpc import ServoServiceBase, ServoServiceStub, UnimplementedServoServiceBase +''' +from ....gen.component.servo.v1.servo_grpc import ( + ServoServiceBase, + ServoServiceStub, + UnimplementedServoServiceBase +) from ....gen.component.servo.v1.servo_pb2 import ( GetPositionRequest, GetPositionResponse, @@ -13,20 +16,20 @@ MoveResponse, Status, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "ServoServiceBase", - "ServoServiceStub", - "UnimplementedServoServiceBase", - "GetPositionRequest", - "GetPositionResponse", - "IsMovingRequest", - "IsMovingResponse", - "MoveRequest", - "MoveResponse", - "Status", - "StopRequest", - "StopResponse", + 'ServoServiceBase', + 'ServoServiceStub', + 'UnimplementedServoServiceBase', + 'GetPositionRequest', + 'GetPositionResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'MoveRequest', + 'MoveResponse', + 'Status', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/switch/__init__.py b/src/viam/proto/component/switch/__init__.py index 1fb43ec49f..9572873ac7 100644 --- a/src/viam/proto/component/switch/__init__.py +++ b/src/viam/proto/component/switch/__init__.py @@ -1,26 +1,29 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.switch.v1.switch_grpc import SwitchServiceBase, SwitchServiceStub, UnimplementedSwitchServiceBase +''' +from ....gen.component.switch.v1.switch_grpc import ( + SwitchServiceBase, + SwitchServiceStub, + UnimplementedSwitchServiceBase +) from ....gen.component.switch.v1.switch_pb2 import ( GetNumberOfPositionsRequest, GetNumberOfPositionsResponse, GetPositionRequest, GetPositionResponse, SetPositionRequest, - SetPositionResponse, + SetPositionResponse ) __all__ = [ - "SwitchServiceBase", - "SwitchServiceStub", - "UnimplementedSwitchServiceBase", - "GetNumberOfPositionsRequest", - "GetNumberOfPositionsResponse", - "GetPositionRequest", - "GetPositionResponse", - "SetPositionRequest", - "SetPositionResponse", + 'SwitchServiceBase', + 'SwitchServiceStub', + 'UnimplementedSwitchServiceBase', + 'GetNumberOfPositionsRequest', + 'GetNumberOfPositionsResponse', + 'GetPositionRequest', + 'GetPositionResponse', + 'SetPositionRequest', + 'SetPositionResponse', ] diff --git a/src/viam/proto/component/testecho/__init__.py b/src/viam/proto/component/testecho/__init__.py index a60f271f9b..9590dbc733 100644 --- a/src/viam/proto/component/testecho/__init__.py +++ b/src/viam/proto/component/testecho/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.testecho.v1.testecho_grpc import TestEchoServiceBase, TestEchoServiceStub, UnimplementedTestEchoServiceBase +''' +from ....gen.component.testecho.v1.testecho_grpc import ( + TestEchoServiceBase, + TestEchoServiceStub, + UnimplementedTestEchoServiceBase +) from ....gen.component.testecho.v1.testecho_pb2 import ( EchoBiDiRequest, EchoBiDiResponse, @@ -12,19 +15,19 @@ EchoRequest, EchoResponse, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "TestEchoServiceBase", - "TestEchoServiceStub", - "UnimplementedTestEchoServiceBase", - "EchoBiDiRequest", - "EchoBiDiResponse", - "EchoMultipleRequest", - "EchoMultipleResponse", - "EchoRequest", - "EchoResponse", - "StopRequest", - "StopResponse", + 'TestEchoServiceBase', + 'TestEchoServiceStub', + 'UnimplementedTestEchoServiceBase', + 'EchoBiDiRequest', + 'EchoBiDiResponse', + 'EchoMultipleRequest', + 'EchoMultipleResponse', + 'EchoRequest', + 'EchoResponse', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/module/__init__.py b/src/viam/proto/module/__init__.py index fdc3ea5942..6a160a540f 100644 --- a/src/viam/proto/module/__init__.py +++ b/src/viam/proto/module/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.module.v1.module_grpc import ModuleServiceBase, ModuleServiceStub, UnimplementedModuleServiceBase +''' +from ...gen.module.v1.module_grpc import ( + ModuleServiceBase, + ModuleServiceStub, + UnimplementedModuleServiceBase +) from ...gen.module.v1.module_pb2 import ( AddResourceRequest, AddResourceResponse, @@ -16,23 +19,23 @@ RemoveResourceRequest, RemoveResourceResponse, ValidateConfigRequest, - ValidateConfigResponse, + ValidateConfigResponse ) __all__ = [ - "ModuleServiceBase", - "ModuleServiceStub", - "UnimplementedModuleServiceBase", - "AddResourceRequest", - "AddResourceResponse", - "HandlerDefinition", - "HandlerMap", - "ReadyRequest", - "ReadyResponse", - "ReconfigureResourceRequest", - "ReconfigureResourceResponse", - "RemoveResourceRequest", - "RemoveResourceResponse", - "ValidateConfigRequest", - "ValidateConfigResponse", + 'ModuleServiceBase', + 'ModuleServiceStub', + 'UnimplementedModuleServiceBase', + 'AddResourceRequest', + 'AddResourceResponse', + 'HandlerDefinition', + 'HandlerMap', + 'ReadyRequest', + 'ReadyResponse', + 'ReconfigureResourceRequest', + 'ReconfigureResourceResponse', + 'RemoveResourceRequest', + 'RemoveResourceResponse', + 'ValidateConfigRequest', + 'ValidateConfigResponse', ] diff --git a/src/viam/proto/opentelemetry/proto/common/__init__.py b/src/viam/proto/opentelemetry/proto/common/__init__.py index e3ecdd62fa..7857066e99 100644 --- a/src/viam/proto/opentelemetry/proto/common/__init__.py +++ b/src/viam/proto/opentelemetry/proto/common/__init__.py @@ -1,15 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from .....gen.opentelemetry.proto.common.v1.common_pb2 import AnyValue, ArrayValue, EntityRef, InstrumentationScope, KeyValue, KeyValueList +''' +from .....gen.opentelemetry.proto.common.v1.common_pb2 import ( + AnyValue, + ArrayValue, + EntityRef, + InstrumentationScope, + KeyValue, + KeyValueList +) __all__ = [ - "AnyValue", - "ArrayValue", - "EntityRef", - "InstrumentationScope", - "KeyValue", - "KeyValueList", + 'AnyValue', + 'ArrayValue', + 'EntityRef', + 'InstrumentationScope', + 'KeyValue', + 'KeyValueList', ] diff --git a/src/viam/proto/opentelemetry/proto/resource/__init__.py b/src/viam/proto/opentelemetry/proto/resource/__init__.py index c9a1962cc6..63dd3b991f 100644 --- a/src/viam/proto/opentelemetry/proto/resource/__init__.py +++ b/src/viam/proto/opentelemetry/proto/resource/__init__.py @@ -1,10 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from .....gen.opentelemetry.proto.resource.v1.resource_pb2 import Resource +''' +from .....gen.opentelemetry.proto.resource.v1.resource_pb2 import ( + Resource +) __all__ = [ - "Resource", + 'Resource', ] diff --git a/src/viam/proto/opentelemetry/proto/trace/__init__.py b/src/viam/proto/opentelemetry/proto/trace/__init__.py index 84c730ed16..fdb0b48913 100644 --- a/src/viam/proto/opentelemetry/proto/trace/__init__.py +++ b/src/viam/proto/opentelemetry/proto/trace/__init__.py @@ -1,15 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from .....gen.opentelemetry.proto.trace.v1.trace_pb2 import ResourceSpans, ScopeSpans, Span, SpanFlags, Status, TracesData +''' +from .....gen.opentelemetry.proto.trace.v1.trace_pb2 import ( + ResourceSpans, + ScopeSpans, + Span, + SpanFlags, + Status, + TracesData +) __all__ = [ - "ResourceSpans", - "ScopeSpans", - "Span", - "SpanFlags", - "Status", - "TracesData", + 'ResourceSpans', + 'ScopeSpans', + 'Span', + 'SpanFlags', + 'Status', + 'TracesData', ] diff --git a/src/viam/proto/provisioning/__init__.py b/src/viam/proto/provisioning/__init__.py index 1e70aeca42..49f71aa0d4 100644 --- a/src/viam/proto/provisioning/__init__.py +++ b/src/viam/proto/provisioning/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.provisioning.v1.provisioning_grpc import ProvisioningServiceBase, ProvisioningServiceStub, UnimplementedProvisioningServiceBase +''' +from ...gen.provisioning.v1.provisioning_grpc import ( + ProvisioningServiceBase, + ProvisioningServiceStub, + UnimplementedProvisioningServiceBase +) from ...gen.provisioning.v1.provisioning_pb2 import ( APIKey, CloudConfig, @@ -18,25 +21,25 @@ SetNetworkCredentialsRequest, SetNetworkCredentialsResponse, SetSmartMachineCredentialsRequest, - SetSmartMachineCredentialsResponse, + SetSmartMachineCredentialsResponse ) __all__ = [ - "ProvisioningServiceBase", - "ProvisioningServiceStub", - "UnimplementedProvisioningServiceBase", - "APIKey", - "CloudConfig", - "ExitProvisioningRequest", - "ExitProvisioningResponse", - "GetNetworkListRequest", - "GetNetworkListResponse", - "GetSmartMachineStatusRequest", - "GetSmartMachineStatusResponse", - "NetworkInfo", - "ProvisioningInfo", - "SetNetworkCredentialsRequest", - "SetNetworkCredentialsResponse", - "SetSmartMachineCredentialsRequest", - "SetSmartMachineCredentialsResponse", + 'ProvisioningServiceBase', + 'ProvisioningServiceStub', + 'UnimplementedProvisioningServiceBase', + 'APIKey', + 'CloudConfig', + 'ExitProvisioningRequest', + 'ExitProvisioningResponse', + 'GetNetworkListRequest', + 'GetNetworkListResponse', + 'GetSmartMachineStatusRequest', + 'GetSmartMachineStatusResponse', + 'NetworkInfo', + 'ProvisioningInfo', + 'SetNetworkCredentialsRequest', + 'SetNetworkCredentialsResponse', + 'SetSmartMachineCredentialsRequest', + 'SetSmartMachineCredentialsResponse', ] diff --git a/src/viam/proto/robot/__init__.py b/src/viam/proto/robot/__init__.py index f28c2ea418..69ef8ad1ef 100644 --- a/src/viam/proto/robot/__init__.py +++ b/src/viam/proto/robot/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.robot.v1.robot_grpc import RobotServiceBase, RobotServiceStub, UnimplementedRobotServiceBase +''' +from ...gen.robot.v1.robot_grpc import ( + RobotServiceBase, + RobotServiceStub, + UnimplementedRobotServiceBase +) from ...gen.robot.v1.robot_pb2 import ( BlockForOperationRequest, BlockForOperationResponse, @@ -67,74 +70,74 @@ TransformPoseResponse, Tunnel, TunnelRequest, - TunnelResponse, + TunnelResponse ) __all__ = [ - "RobotServiceBase", - "RobotServiceStub", - "UnimplementedRobotServiceBase", - "BlockForOperationRequest", - "BlockForOperationResponse", - "CancelOperationRequest", - "CancelOperationResponse", - "ConfigStatus", - "FrameSystemConfig", - "FrameSystemConfigRequest", - "FrameSystemConfigResponse", - "GetCloudMetadataRequest", - "GetCloudMetadataResponse", - "GetMachineStatusRequest", - "GetMachineStatusResponse", - "GetModelsFromModulesRequest", - "GetModelsFromModulesResponse", - "GetOperationsRequest", - "GetOperationsResponse", - "GetPoseRequest", - "GetPoseResponse", - "GetSessionsRequest", - "GetSessionsResponse", - "GetStatusRequest", - "GetStatusResponse", - "GetVersionRequest", - "GetVersionResponse", - "JobStatus", - "ListTunnelsRequest", - "ListTunnelsResponse", - "LogRequest", - "LogResponse", - "ModuleModel", - "Operation", - "PeerConnectionInfo", - "PeerConnectionType", - "ResourceNamesRequest", - "ResourceNamesResponse", - "ResourceRPCSubtype", - "ResourceRPCSubtypesRequest", - "ResourceRPCSubtypesResponse", - "ResourceStatus", - "RestartModuleRequest", - "RestartModuleResponse", - "SendSessionHeartbeatRequest", - "SendSessionHeartbeatResponse", - "SendTracesRequest", - "SendTracesResponse", - "Session", - "ShutdownRequest", - "ShutdownResponse", - "StartSessionRequest", - "StartSessionResponse", - "Status", - "StopAllRequest", - "StopAllResponse", - "StopExtraParameters", - "StreamStatusRequest", - "StreamStatusResponse", - "TransformPCDRequest", - "TransformPCDResponse", - "TransformPoseRequest", - "TransformPoseResponse", - "Tunnel", - "TunnelRequest", - "TunnelResponse", + 'RobotServiceBase', + 'RobotServiceStub', + 'UnimplementedRobotServiceBase', + 'BlockForOperationRequest', + 'BlockForOperationResponse', + 'CancelOperationRequest', + 'CancelOperationResponse', + 'ConfigStatus', + 'FrameSystemConfig', + 'FrameSystemConfigRequest', + 'FrameSystemConfigResponse', + 'GetCloudMetadataRequest', + 'GetCloudMetadataResponse', + 'GetMachineStatusRequest', + 'GetMachineStatusResponse', + 'GetModelsFromModulesRequest', + 'GetModelsFromModulesResponse', + 'GetOperationsRequest', + 'GetOperationsResponse', + 'GetPoseRequest', + 'GetPoseResponse', + 'GetSessionsRequest', + 'GetSessionsResponse', + 'GetStatusRequest', + 'GetStatusResponse', + 'GetVersionRequest', + 'GetVersionResponse', + 'JobStatus', + 'ListTunnelsRequest', + 'ListTunnelsResponse', + 'LogRequest', + 'LogResponse', + 'ModuleModel', + 'Operation', + 'PeerConnectionInfo', + 'PeerConnectionType', + 'ResourceNamesRequest', + 'ResourceNamesResponse', + 'ResourceRPCSubtype', + 'ResourceRPCSubtypesRequest', + 'ResourceRPCSubtypesResponse', + 'ResourceStatus', + 'RestartModuleRequest', + 'RestartModuleResponse', + 'SendSessionHeartbeatRequest', + 'SendSessionHeartbeatResponse', + 'SendTracesRequest', + 'SendTracesResponse', + 'Session', + 'ShutdownRequest', + 'ShutdownResponse', + 'StartSessionRequest', + 'StartSessionResponse', + 'Status', + 'StopAllRequest', + 'StopAllResponse', + 'StopExtraParameters', + 'StreamStatusRequest', + 'StreamStatusResponse', + 'TransformPCDRequest', + 'TransformPCDResponse', + 'TransformPoseRequest', + 'TransformPoseResponse', + 'Tunnel', + 'TunnelRequest', + 'TunnelResponse', ] diff --git a/src/viam/proto/rpc/auth.py b/src/viam/proto/rpc/auth.py index 1704c74cd4..462f075a39 100644 --- a/src/viam/proto/rpc/auth.py +++ b/src/viam/proto/rpc/auth.py @@ -1,34 +1,33 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ...gen.proto.rpc.v1.auth_grpc import ( AuthServiceBase, AuthServiceStub, ExternalAuthServiceBase, ExternalAuthServiceStub, UnimplementedAuthServiceBase, - UnimplementedExternalAuthServiceBase, + UnimplementedExternalAuthServiceBase ) from ...gen.proto.rpc.v1.auth_pb2 import ( AuthenticateRequest, AuthenticateResponse, AuthenticateToRequest, AuthenticateToResponse, - Credentials, + Credentials ) __all__ = [ - "AuthServiceBase", - "AuthServiceStub", - "ExternalAuthServiceBase", - "ExternalAuthServiceStub", - "UnimplementedAuthServiceBase", - "UnimplementedExternalAuthServiceBase", - "AuthenticateRequest", - "AuthenticateResponse", - "AuthenticateToRequest", - "AuthenticateToResponse", - "Credentials", + 'AuthServiceBase', + 'AuthServiceStub', + 'ExternalAuthServiceBase', + 'ExternalAuthServiceStub', + 'UnimplementedAuthServiceBase', + 'UnimplementedExternalAuthServiceBase', + 'AuthenticateRequest', + 'AuthenticateResponse', + 'AuthenticateToRequest', + 'AuthenticateToResponse', + 'Credentials', ] diff --git a/src/viam/proto/rpc/examples/echo/__init__.py b/src/viam/proto/rpc/examples/echo/__init__.py index 60cefe6d90..5ec2ea10a1 100644 --- a/src/viam/proto/rpc/examples/echo/__init__.py +++ b/src/viam/proto/rpc/examples/echo/__init__.py @@ -1,26 +1,29 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from .....gen.proto.rpc.examples.echo.v1.echo_grpc import EchoServiceBase, EchoServiceStub, UnimplementedEchoServiceBase +''' +from .....gen.proto.rpc.examples.echo.v1.echo_grpc import ( + EchoServiceBase, + EchoServiceStub, + UnimplementedEchoServiceBase +) from .....gen.proto.rpc.examples.echo.v1.echo_pb2 import ( EchoBiDiRequest, EchoBiDiResponse, EchoMultipleRequest, EchoMultipleResponse, EchoRequest, - EchoResponse, + EchoResponse ) __all__ = [ - "EchoServiceBase", - "EchoServiceStub", - "UnimplementedEchoServiceBase", - "EchoBiDiRequest", - "EchoBiDiResponse", - "EchoMultipleRequest", - "EchoMultipleResponse", - "EchoRequest", - "EchoResponse", + 'EchoServiceBase', + 'EchoServiceStub', + 'UnimplementedEchoServiceBase', + 'EchoBiDiRequest', + 'EchoBiDiResponse', + 'EchoMultipleRequest', + 'EchoMultipleResponse', + 'EchoRequest', + 'EchoResponse', ] diff --git a/src/viam/proto/rpc/examples/echoresource/__init__.py b/src/viam/proto/rpc/examples/echoresource/__init__.py index 18e72d0443..e85abde49f 100644 --- a/src/viam/proto/rpc/examples/echoresource/__init__.py +++ b/src/viam/proto/rpc/examples/echoresource/__init__.py @@ -1,12 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from .....gen.proto.rpc.examples.echoresource.v1.echoresource_grpc import ( EchoResourceServiceBase, EchoResourceServiceStub, - UnimplementedEchoResourceServiceBase, + UnimplementedEchoResourceServiceBase ) from .....gen.proto.rpc.examples.echoresource.v1.echoresource_pb2 import ( EchoResourceBiDiRequest, @@ -14,17 +13,17 @@ EchoResourceMultipleRequest, EchoResourceMultipleResponse, EchoResourceRequest, - EchoResourceResponse, + EchoResourceResponse ) __all__ = [ - "EchoResourceServiceBase", - "EchoResourceServiceStub", - "UnimplementedEchoResourceServiceBase", - "EchoResourceBiDiRequest", - "EchoResourceBiDiResponse", - "EchoResourceMultipleRequest", - "EchoResourceMultipleResponse", - "EchoResourceRequest", - "EchoResourceResponse", + 'EchoResourceServiceBase', + 'EchoResourceServiceStub', + 'UnimplementedEchoResourceServiceBase', + 'EchoResourceBiDiRequest', + 'EchoResourceBiDiResponse', + 'EchoResourceMultipleRequest', + 'EchoResourceMultipleResponse', + 'EchoResourceRequest', + 'EchoResourceResponse', ] diff --git a/src/viam/proto/rpc/webrtc/grpc.py b/src/viam/proto/rpc/webrtc/grpc.py index bdb49fa2f8..17813a7bc1 100644 --- a/src/viam/proto/rpc/webrtc/grpc.py +++ b/src/viam/proto/rpc/webrtc/grpc.py @@ -1,8 +1,7 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.proto.rpc.webrtc.v1.grpc_pb2 import ( Metadata, PacketMessage, @@ -14,23 +13,27 @@ ResponseMessage, ResponseTrailers, Stream, - Strings, + Strings +) +from ....gen.proto.rpc.webrtc.v1.signaling_grpc import ( + SignalingServiceBase, + SignalingServiceStub, + UnimplementedSignalingServiceBase ) -from ....gen.proto.rpc.webrtc.v1.signaling_grpc import SignalingServiceBase, SignalingServiceStub, UnimplementedSignalingServiceBase __all__ = [ - "Metadata", - "PacketMessage", - "Request", - "RequestHeaders", - "RequestMessage", - "Response", - "ResponseHeaders", - "ResponseMessage", - "ResponseTrailers", - "Stream", - "Strings", - "SignalingServiceBase", - "SignalingServiceStub", - "UnimplementedSignalingServiceBase", + 'Metadata', + 'PacketMessage', + 'Request', + 'RequestHeaders', + 'RequestMessage', + 'Response', + 'ResponseHeaders', + 'ResponseMessage', + 'ResponseTrailers', + 'Stream', + 'Strings', + 'SignalingServiceBase', + 'SignalingServiceStub', + 'UnimplementedSignalingServiceBase', ] diff --git a/src/viam/proto/rpc/webrtc/signaling.py b/src/viam/proto/rpc/webrtc/signaling.py index a47b891752..a64090df20 100644 --- a/src/viam/proto/rpc/webrtc/signaling.py +++ b/src/viam/proto/rpc/webrtc/signaling.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.proto.rpc.webrtc.v1.signaling_grpc import SignalingServiceBase, SignalingServiceStub, UnimplementedSignalingServiceBase +''' +from ....gen.proto.rpc.webrtc.v1.signaling_grpc import ( + SignalingServiceBase, + SignalingServiceStub, + UnimplementedSignalingServiceBase +) from ....gen.proto.rpc.webrtc.v1.signaling_pb2 import ( AnswerRequest, AnswerRequestDoneStage, @@ -26,33 +29,33 @@ ICEServer, OptionalWebRTCConfigRequest, OptionalWebRTCConfigResponse, - WebRTCConfig, + WebRTCConfig ) __all__ = [ - "SignalingServiceBase", - "SignalingServiceStub", - "UnimplementedSignalingServiceBase", - "AnswerRequest", - "AnswerRequestDoneStage", - "AnswerRequestErrorStage", - "AnswerRequestHeartbeatStage", - "AnswerRequestInitStage", - "AnswerRequestUpdateStage", - "AnswerResponse", - "AnswerResponseDoneStage", - "AnswerResponseErrorStage", - "AnswerResponseInitStage", - "AnswerResponseUpdateStage", - "CallRequest", - "CallResponse", - "CallResponseInitStage", - "CallResponseUpdateStage", - "CallUpdateRequest", - "CallUpdateResponse", - "ICECandidate", - "ICEServer", - "OptionalWebRTCConfigRequest", - "OptionalWebRTCConfigResponse", - "WebRTCConfig", + 'SignalingServiceBase', + 'SignalingServiceStub', + 'UnimplementedSignalingServiceBase', + 'AnswerRequest', + 'AnswerRequestDoneStage', + 'AnswerRequestErrorStage', + 'AnswerRequestHeartbeatStage', + 'AnswerRequestInitStage', + 'AnswerRequestUpdateStage', + 'AnswerResponse', + 'AnswerResponseDoneStage', + 'AnswerResponseErrorStage', + 'AnswerResponseInitStage', + 'AnswerResponseUpdateStage', + 'CallRequest', + 'CallResponse', + 'CallResponseInitStage', + 'CallResponseUpdateStage', + 'CallUpdateRequest', + 'CallUpdateResponse', + 'ICECandidate', + 'ICEServer', + 'OptionalWebRTCConfigRequest', + 'OptionalWebRTCConfigResponse', + 'WebRTCConfig', ] diff --git a/src/viam/proto/service/datamanager/__init__.py b/src/viam/proto/service/datamanager/__init__.py index 4b3766eacc..cbf556f15e 100644 --- a/src/viam/proto/service/datamanager/__init__.py +++ b/src/viam/proto/service/datamanager/__init__.py @@ -1,26 +1,25 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.service.datamanager.v1.data_manager_grpc import ( DataManagerServiceBase, DataManagerServiceStub, - UnimplementedDataManagerServiceBase, + UnimplementedDataManagerServiceBase ) from ....gen.service.datamanager.v1.data_manager_pb2 import ( SyncRequest, SyncResponse, UploadBinaryDataToDatasetsRequest, - UploadBinaryDataToDatasetsResponse, + UploadBinaryDataToDatasetsResponse ) __all__ = [ - "DataManagerServiceBase", - "DataManagerServiceStub", - "UnimplementedDataManagerServiceBase", - "SyncRequest", - "SyncResponse", - "UploadBinaryDataToDatasetsRequest", - "UploadBinaryDataToDatasetsResponse", + 'DataManagerServiceBase', + 'DataManagerServiceStub', + 'UnimplementedDataManagerServiceBase', + 'SyncRequest', + 'SyncResponse', + 'UploadBinaryDataToDatasetsRequest', + 'UploadBinaryDataToDatasetsResponse', ] diff --git a/src/viam/proto/service/discovery/__init__.py b/src/viam/proto/service/discovery/__init__.py index 3593fd1fe7..1b4ea7ee96 100644 --- a/src/viam/proto/service/discovery/__init__.py +++ b/src/viam/proto/service/discovery/__init__.py @@ -1,15 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.discovery.v1.discovery_grpc import DiscoveryServiceBase, DiscoveryServiceStub, UnimplementedDiscoveryServiceBase -from ....gen.service.discovery.v1.discovery_pb2 import DiscoverResourcesRequest, DiscoverResourcesResponse +''' +from ....gen.service.discovery.v1.discovery_grpc import ( + DiscoveryServiceBase, + DiscoveryServiceStub, + UnimplementedDiscoveryServiceBase +) +from ....gen.service.discovery.v1.discovery_pb2 import ( + DiscoverResourcesRequest, + DiscoverResourcesResponse +) __all__ = [ - "DiscoveryServiceBase", - "DiscoveryServiceStub", - "UnimplementedDiscoveryServiceBase", - "DiscoverResourcesRequest", - "DiscoverResourcesResponse", + 'DiscoveryServiceBase', + 'DiscoveryServiceStub', + 'UnimplementedDiscoveryServiceBase', + 'DiscoverResourcesRequest', + 'DiscoverResourcesResponse', ] diff --git a/src/viam/proto/service/generic/__init__.py b/src/viam/proto/service/generic/__init__.py index bdfbb40f9e..8158bb0d69 100644 --- a/src/viam/proto/service/generic/__init__.py +++ b/src/viam/proto/service/generic/__init__.py @@ -1,12 +1,15 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.generic.v1.generic_grpc import GenericServiceBase, GenericServiceStub, UnimplementedGenericServiceBase +''' +from ....gen.service.generic.v1.generic_grpc import ( + GenericServiceBase, + GenericServiceStub, + UnimplementedGenericServiceBase +) __all__ = [ - "GenericServiceBase", - "GenericServiceStub", - "UnimplementedGenericServiceBase", + 'GenericServiceBase', + 'GenericServiceStub', + 'UnimplementedGenericServiceBase', ] diff --git a/src/viam/proto/service/mlmodel/__init__.py b/src/viam/proto/service/mlmodel/__init__.py index b6687bdefe..486d2c7ad1 100644 --- a/src/viam/proto/service/mlmodel/__init__.py +++ b/src/viam/proto/service/mlmodel/__init__.py @@ -1,22 +1,25 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.mlmodel.v1.mlmodel_grpc import MLModelServiceBase, MLModelServiceStub, UnimplementedMLModelServiceBase +''' +from ....gen.service.mlmodel.v1.mlmodel_grpc import ( + MLModelServiceBase, + MLModelServiceStub, + UnimplementedMLModelServiceBase +) from ....gen.service.mlmodel.v1.mlmodel_pb2 import ( File, FlatTensor, FlatTensorDataDouble, FlatTensorDataFloat, - FlatTensorDataInt8, FlatTensorDataInt16, FlatTensorDataInt32, FlatTensorDataInt64, - FlatTensorDataUInt8, + FlatTensorDataInt8, FlatTensorDataUInt16, FlatTensorDataUInt32, FlatTensorDataUInt64, + FlatTensorDataUInt8, FlatTensors, InferRequest, InferResponse, @@ -24,31 +27,31 @@ Metadata, MetadataRequest, MetadataResponse, - TensorInfo, + TensorInfo ) __all__ = [ - "MLModelServiceBase", - "MLModelServiceStub", - "UnimplementedMLModelServiceBase", - "File", - "FlatTensor", - "FlatTensorDataDouble", - "FlatTensorDataFloat", - "FlatTensorDataInt16", - "FlatTensorDataInt32", - "FlatTensorDataInt64", - "FlatTensorDataInt8", - "FlatTensorDataUInt16", - "FlatTensorDataUInt32", - "FlatTensorDataUInt64", - "FlatTensorDataUInt8", - "FlatTensors", - "InferRequest", - "InferResponse", - "LabelType", - "Metadata", - "MetadataRequest", - "MetadataResponse", - "TensorInfo", + 'MLModelServiceBase', + 'MLModelServiceStub', + 'UnimplementedMLModelServiceBase', + 'File', + 'FlatTensor', + 'FlatTensorDataDouble', + 'FlatTensorDataFloat', + 'FlatTensorDataInt16', + 'FlatTensorDataInt32', + 'FlatTensorDataInt64', + 'FlatTensorDataInt8', + 'FlatTensorDataUInt16', + 'FlatTensorDataUInt32', + 'FlatTensorDataUInt64', + 'FlatTensorDataUInt8', + 'FlatTensors', + 'InferRequest', + 'InferResponse', + 'LabelType', + 'Metadata', + 'MetadataRequest', + 'MetadataResponse', + 'TensorInfo', ] diff --git a/src/viam/proto/service/motion/__init__.py b/src/viam/proto/service/motion/__init__.py index b4306e0608..1f890c4a48 100644 --- a/src/viam/proto/service/motion/__init__.py +++ b/src/viam/proto/service/motion/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.motion.v1.motion_grpc import MotionServiceBase, MotionServiceStub, UnimplementedMotionServiceBase +''' +from ....gen.service.motion.v1.motion_grpc import ( + MotionServiceBase, + MotionServiceStub, + UnimplementedMotionServiceBase +) from ....gen.service.motion.v1.motion_pb2 import ( CollisionSpecification, ComponentState, @@ -32,39 +35,39 @@ PlanWithStatus, PseudolinearConstraint, StopPlanRequest, - StopPlanResponse, + StopPlanResponse ) __all__ = [ - "MotionServiceBase", - "MotionServiceStub", - "UnimplementedMotionServiceBase", - "CollisionSpecification", - "ComponentState", - "Constraints", - "GetPlanRequest", - "GetPlanResponse", - "GetPoseRequest", - "GetPoseResponse", - "LinearConstraint", - "ListPlanStatusesRequest", - "ListPlanStatusesResponse", - "MotionConfiguration", - "MoveOnGlobeRequest", - "MoveOnGlobeResponse", - "MoveOnMapRequest", - "MoveOnMapResponse", - "MoveRequest", - "MoveResponse", - "ObstacleDetector", - "OrientationConstraint", - "Plan", - "PlanState", - "PlanStatus", - "PlanStatusWithID", - "PlanStep", - "PlanWithStatus", - "PseudolinearConstraint", - "StopPlanRequest", - "StopPlanResponse", + 'MotionServiceBase', + 'MotionServiceStub', + 'UnimplementedMotionServiceBase', + 'CollisionSpecification', + 'ComponentState', + 'Constraints', + 'GetPlanRequest', + 'GetPlanResponse', + 'GetPoseRequest', + 'GetPoseResponse', + 'LinearConstraint', + 'ListPlanStatusesRequest', + 'ListPlanStatusesResponse', + 'MotionConfiguration', + 'MoveOnGlobeRequest', + 'MoveOnGlobeResponse', + 'MoveOnMapRequest', + 'MoveOnMapResponse', + 'MoveRequest', + 'MoveResponse', + 'ObstacleDetector', + 'OrientationConstraint', + 'Plan', + 'PlanState', + 'PlanStatus', + 'PlanStatusWithID', + 'PlanStep', + 'PlanWithStatus', + 'PseudolinearConstraint', + 'StopPlanRequest', + 'StopPlanResponse', ] diff --git a/src/viam/proto/service/navigation/__init__.py b/src/viam/proto/service/navigation/__init__.py index c0c7f058c0..4cde4b7bbd 100644 --- a/src/viam/proto/service/navigation/__init__.py +++ b/src/viam/proto/service/navigation/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.navigation.v1.navigation_grpc import NavigationServiceBase, NavigationServiceStub, UnimplementedNavigationServiceBase +''' +from ....gen.service.navigation.v1.navigation_grpc import ( + NavigationServiceBase, + NavigationServiceStub, + UnimplementedNavigationServiceBase +) from ....gen.service.navigation.v1.navigation_pb2 import ( AddWaypointRequest, AddWaypointResponse, @@ -26,33 +29,33 @@ RemoveWaypointResponse, SetModeRequest, SetModeResponse, - Waypoint, + Waypoint ) __all__ = [ - "NavigationServiceBase", - "NavigationServiceStub", - "UnimplementedNavigationServiceBase", - "AddWaypointRequest", - "AddWaypointResponse", - "GetLocationRequest", - "GetLocationResponse", - "GetModeRequest", - "GetModeResponse", - "GetObstaclesRequest", - "GetObstaclesResponse", - "GetPathsRequest", - "GetPathsResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "GetWaypointsRequest", - "GetWaypointsResponse", - "MapType", - "Mode", - "Path", - "RemoveWaypointRequest", - "RemoveWaypointResponse", - "SetModeRequest", - "SetModeResponse", - "Waypoint", + 'NavigationServiceBase', + 'NavigationServiceStub', + 'UnimplementedNavigationServiceBase', + 'AddWaypointRequest', + 'AddWaypointResponse', + 'GetLocationRequest', + 'GetLocationResponse', + 'GetModeRequest', + 'GetModeResponse', + 'GetObstaclesRequest', + 'GetObstaclesResponse', + 'GetPathsRequest', + 'GetPathsResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'GetWaypointsRequest', + 'GetWaypointsResponse', + 'MapType', + 'Mode', + 'Path', + 'RemoveWaypointRequest', + 'RemoveWaypointResponse', + 'SetModeRequest', + 'SetModeResponse', + 'Waypoint', ] diff --git a/src/viam/proto/service/sensors/__init__.py b/src/viam/proto/service/sensors/__init__.py index 0f7a042779..f2a0905e5e 100644 --- a/src/viam/proto/service/sensors/__init__.py +++ b/src/viam/proto/service/sensors/__init__.py @@ -1,18 +1,27 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.sensors.v1.sensors_grpc import SensorsServiceBase, SensorsServiceStub, UnimplementedSensorsServiceBase -from ....gen.service.sensors.v1.sensors_pb2 import GetReadingsRequest, GetReadingsResponse, GetSensorsRequest, GetSensorsResponse, Readings +''' +from ....gen.service.sensors.v1.sensors_grpc import ( + SensorsServiceBase, + SensorsServiceStub, + UnimplementedSensorsServiceBase +) +from ....gen.service.sensors.v1.sensors_pb2 import ( + GetReadingsRequest, + GetReadingsResponse, + GetSensorsRequest, + GetSensorsResponse, + Readings +) __all__ = [ - "SensorsServiceBase", - "SensorsServiceStub", - "UnimplementedSensorsServiceBase", - "GetReadingsRequest", - "GetReadingsResponse", - "GetSensorsRequest", - "GetSensorsResponse", - "Readings", + 'SensorsServiceBase', + 'SensorsServiceStub', + 'UnimplementedSensorsServiceBase', + 'GetReadingsRequest', + 'GetReadingsResponse', + 'GetSensorsRequest', + 'GetSensorsResponse', + 'Readings', ] diff --git a/src/viam/proto/service/shell/__init__.py b/src/viam/proto/service/shell/__init__.py index 47a2a44f69..07fc72562e 100644 --- a/src/viam/proto/service/shell/__init__.py +++ b/src/viam/proto/service/shell/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.shell.v1.shell_grpc import ShellServiceBase, ShellServiceStub, UnimplementedShellServiceBase +''' +from ....gen.service.shell.v1.shell_grpc import ( + ShellServiceBase, + ShellServiceStub, + UnimplementedShellServiceBase +) from ....gen.service.shell.v1.shell_pb2 import ( CopyFilesFromMachineRequest, CopyFilesFromMachineRequestMetadata, @@ -15,22 +18,22 @@ CopyFilesToMachineResponse, FileData, ShellRequest, - ShellResponse, + ShellResponse ) __all__ = [ - "ShellServiceBase", - "ShellServiceStub", - "UnimplementedShellServiceBase", - "CopyFilesFromMachineRequest", - "CopyFilesFromMachineRequestMetadata", - "CopyFilesFromMachineResponse", - "CopyFilesFromMachineResponseMetadata", - "CopyFilesSourceType", - "CopyFilesToMachineRequest", - "CopyFilesToMachineRequestMetadata", - "CopyFilesToMachineResponse", - "FileData", - "ShellRequest", - "ShellResponse", + 'ShellServiceBase', + 'ShellServiceStub', + 'UnimplementedShellServiceBase', + 'CopyFilesFromMachineRequest', + 'CopyFilesFromMachineRequestMetadata', + 'CopyFilesFromMachineResponse', + 'CopyFilesFromMachineResponseMetadata', + 'CopyFilesSourceType', + 'CopyFilesToMachineRequest', + 'CopyFilesToMachineRequestMetadata', + 'CopyFilesToMachineResponse', + 'FileData', + 'ShellRequest', + 'ShellResponse', ] diff --git a/src/viam/proto/service/slam/__init__.py b/src/viam/proto/service/slam/__init__.py index 0703e95d24..bba528710a 100644 --- a/src/viam/proto/service/slam/__init__.py +++ b/src/viam/proto/service/slam/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.slam.v1.slam_grpc import SLAMServiceBase, SLAMServiceStub, UnimplementedSLAMServiceBase +''' +from ....gen.service.slam.v1.slam_grpc import ( + SLAMServiceBase, + SLAMServiceStub, + UnimplementedSLAMServiceBase +) from ....gen.service.slam.v1.slam_pb2 import ( GetInternalStateRequest, GetInternalStateResponse, @@ -15,22 +18,22 @@ GetPropertiesResponse, MappingMode, SensorInfo, - SensorType, + SensorType ) __all__ = [ - "SLAMServiceBase", - "SLAMServiceStub", - "UnimplementedSLAMServiceBase", - "GetInternalStateRequest", - "GetInternalStateResponse", - "GetPointCloudMapRequest", - "GetPointCloudMapResponse", - "GetPositionRequest", - "GetPositionResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "MappingMode", - "SensorInfo", - "SensorType", + 'SLAMServiceBase', + 'SLAMServiceStub', + 'UnimplementedSLAMServiceBase', + 'GetInternalStateRequest', + 'GetInternalStateResponse', + 'GetPointCloudMapRequest', + 'GetPointCloudMapResponse', + 'GetPositionRequest', + 'GetPositionResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'MappingMode', + 'SensorInfo', + 'SensorType', ] diff --git a/src/viam/proto/service/video/__init__.py b/src/viam/proto/service/video/__init__.py index bb515b5e78..d3b1668585 100644 --- a/src/viam/proto/service/video/__init__.py +++ b/src/viam/proto/service/video/__init__.py @@ -1,15 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.video.v1.video_grpc import UnimplementedVideoServiceBase, VideoServiceBase, VideoServiceStub -from ....gen.service.video.v1.video_pb2 import GetVideoRequest, GetVideoResponse +''' +from ....gen.service.video.v1.video_grpc import ( + UnimplementedVideoServiceBase, + VideoServiceBase, + VideoServiceStub +) +from ....gen.service.video.v1.video_pb2 import ( + GetVideoRequest, + GetVideoResponse +) __all__ = [ - "UnimplementedVideoServiceBase", - "VideoServiceBase", - "VideoServiceStub", - "GetVideoRequest", - "GetVideoResponse", + 'UnimplementedVideoServiceBase', + 'VideoServiceBase', + 'VideoServiceStub', + 'GetVideoRequest', + 'GetVideoResponse', ] diff --git a/src/viam/proto/service/vision/__init__.py b/src/viam/proto/service/vision/__init__.py index a31dcafb76..580019886f 100644 --- a/src/viam/proto/service/vision/__init__.py +++ b/src/viam/proto/service/vision/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.vision.v1.vision_grpc import UnimplementedVisionServiceBase, VisionServiceBase, VisionServiceStub +''' +from ....gen.service.vision.v1.vision_grpc import ( + UnimplementedVisionServiceBase, + VisionServiceBase, + VisionServiceStub +) from ....gen.service.vision.v1.vision_pb2 import ( CaptureAllFromCameraRequest, CaptureAllFromCameraResponse, @@ -20,27 +23,27 @@ GetObjectPointCloudsRequest, GetObjectPointCloudsResponse, GetPropertiesRequest, - GetPropertiesResponse, + GetPropertiesResponse ) __all__ = [ - "UnimplementedVisionServiceBase", - "VisionServiceBase", - "VisionServiceStub", - "CaptureAllFromCameraRequest", - "CaptureAllFromCameraResponse", - "Classification", - "Detection", - "GetClassificationsFromCameraRequest", - "GetClassificationsFromCameraResponse", - "GetClassificationsRequest", - "GetClassificationsResponse", - "GetDetectionsFromCameraRequest", - "GetDetectionsFromCameraResponse", - "GetDetectionsRequest", - "GetDetectionsResponse", - "GetObjectPointCloudsRequest", - "GetObjectPointCloudsResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", + 'UnimplementedVisionServiceBase', + 'VisionServiceBase', + 'VisionServiceStub', + 'CaptureAllFromCameraRequest', + 'CaptureAllFromCameraResponse', + 'Classification', + 'Detection', + 'GetClassificationsFromCameraRequest', + 'GetClassificationsFromCameraResponse', + 'GetClassificationsRequest', + 'GetClassificationsResponse', + 'GetDetectionsFromCameraRequest', + 'GetDetectionsFromCameraResponse', + 'GetDetectionsRequest', + 'GetDetectionsResponse', + 'GetObjectPointCloudsRequest', + 'GetObjectPointCloudsResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', ] diff --git a/src/viam/proto/service/worldstatestore/__init__.py b/src/viam/proto/service/worldstatestore/__init__.py index b6c2b155ab..d728dc694b 100644 --- a/src/viam/proto/service/worldstatestore/__init__.py +++ b/src/viam/proto/service/worldstatestore/__init__.py @@ -1,12 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.service.worldstatestore.v1.world_state_store_grpc import ( UnimplementedWorldStateStoreServiceBase, WorldStateStoreServiceBase, - WorldStateStoreServiceStub, + WorldStateStoreServiceStub ) from ....gen.service.worldstatestore.v1.world_state_store_pb2 import ( GetTransformRequest, @@ -15,18 +14,18 @@ ListUUIDsResponse, StreamTransformChangesRequest, StreamTransformChangesResponse, - TransformChangeType, + TransformChangeType ) __all__ = [ - "UnimplementedWorldStateStoreServiceBase", - "WorldStateStoreServiceBase", - "WorldStateStoreServiceStub", - "GetTransformRequest", - "GetTransformResponse", - "ListUUIDsRequest", - "ListUUIDsResponse", - "StreamTransformChangesRequest", - "StreamTransformChangesResponse", - "TransformChangeType", + 'UnimplementedWorldStateStoreServiceBase', + 'WorldStateStoreServiceBase', + 'WorldStateStoreServiceStub', + 'GetTransformRequest', + 'GetTransformResponse', + 'ListUUIDsRequest', + 'ListUUIDsResponse', + 'StreamTransformChangesRequest', + 'StreamTransformChangesResponse', + 'TransformChangeType', ] diff --git a/src/viam/proto/stream/__init__.py b/src/viam/proto/stream/__init__.py index 4053789543..65e7c5d375 100644 --- a/src/viam/proto/stream/__init__.py +++ b/src/viam/proto/stream/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.stream.v1.stream_grpc import StreamServiceBase, StreamServiceStub, UnimplementedStreamServiceBase +''' +from ...gen.stream.v1.stream_grpc import ( + StreamServiceBase, + StreamServiceStub, + UnimplementedStreamServiceBase +) from ...gen.stream.v1.stream_pb2 import ( AddStreamRequest, AddStreamResponse, @@ -15,22 +18,22 @@ RemoveStreamResponse, Resolution, SetStreamOptionsRequest, - SetStreamOptionsResponse, + SetStreamOptionsResponse ) __all__ = [ - "StreamServiceBase", - "StreamServiceStub", - "UnimplementedStreamServiceBase", - "AddStreamRequest", - "AddStreamResponse", - "GetStreamOptionsRequest", - "GetStreamOptionsResponse", - "ListStreamsRequest", - "ListStreamsResponse", - "RemoveStreamRequest", - "RemoveStreamResponse", - "Resolution", - "SetStreamOptionsRequest", - "SetStreamOptionsResponse", + 'StreamServiceBase', + 'StreamServiceStub', + 'UnimplementedStreamServiceBase', + 'AddStreamRequest', + 'AddStreamResponse', + 'GetStreamOptionsRequest', + 'GetStreamOptionsResponse', + 'ListStreamsRequest', + 'ListStreamsResponse', + 'RemoveStreamRequest', + 'RemoveStreamResponse', + 'Resolution', + 'SetStreamOptionsRequest', + 'SetStreamOptionsResponse', ] diff --git a/src/viam/proto/tagger/__init__.py b/src/viam/proto/tagger/__init__.py index 3484a6ee3c..0e7ab86b40 100644 --- a/src/viam/proto/tagger/__init__.py +++ b/src/viam/proto/tagger/__init__.py @@ -1,6 +1,7 @@ -""" +''' @generated by Viam. Do not edit manually! -""" +''' -__all__ = [] +__all__ = [ +] diff --git a/uv.lock b/uv.lock index 012dc4fc27..5950ad084a 100644 --- a/uv.lock +++ b/uv.lock @@ -1,29 +1,19 @@ version = 1 revision = 3 -requires-python = ">=3.8.1" +requires-python = ">=3.10" resolution-markers = [ - "python_full_version < '3.9'", - "python_full_version >= '3.9' and python_full_version < '3.12'", - "python_full_version == '3.12.*'", - "python_full_version >= '3.13'", + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version < '3.11'", ] [[package]] name = "alabaster" -version = "0.7.13" +version = "1.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/71/a8ee96d1fd95ca04a0d2e2d9c4081dac4c2d2b12f7ddb899c8cb9bfd1532/alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2", size = 11454, upload-time = "2023-01-13T06:42:53.797Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/f8/d9c74d0daf3f742840fd818d69cfae176fa332022fd44e3469487d5a9420/alabaster-1.0.0.tar.gz", hash = "sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e", size = 24210, upload-time = "2024-07-26T18:15:03.762Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/64/88/c7083fc61120ab661c5d0b82cb77079fc1429d3f913a456c1c82cf4658f7/alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3", size = 13857, upload-time = "2023-01-13T06:42:52.336Z" }, -] - -[[package]] -name = "anyascii" -version = "0.3.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9f/52/93b9ea99063f7cf37fb67f5e3f49480686cbe7f228c48b9d713326223b6e/anyascii-0.3.2.tar.gz", hash = "sha256:9d5d32ef844fe225b8bc7cba7f950534fae4da27a9bf3a6bea2cb0ea46ce4730", size = 214052, upload-time = "2023-03-16T00:24:42.431Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/7b/a9a747e0632271d855da379532b05a62c58e979813814a57fa3b3afeb3a4/anyascii-0.3.2-py3-none-any.whl", hash = "sha256:3b3beef6fc43d9036d3b0529050b0c48bfad8bc960e9e562d7223cfb94fe45d4", size = 289923, upload-time = "2023-03-16T00:24:39.649Z" }, + { url = "https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl", hash = "sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b", size = 13929, upload-time = "2024-07-26T18:15:02.05Z" }, ] [[package]] @@ -37,238 +27,242 @@ wheels = [ [[package]] name = "astroid" -version = "3.2.4" +version = "4.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9e/53/1067e1113ecaf58312357f2cd93063674924119d80d173adc3f6f2387aa2/astroid-3.2.4.tar.gz", hash = "sha256:0e14202810b30da1b735827f78f5157be2bbd4a7a59b7707ca0bfc2fb4c0063a", size = 397576, upload-time = "2024-07-20T12:57:43.26Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/4c/569eefb533ce71bc9f4f12a4a0d7f0ba27e500681dec1312d4657e849d20/astroid-4.1.1.tar.gz", hash = "sha256:445d831fe785df8c670bbb46b900b8424b82f85b4af187103f71a63a63ebed43", size = 412522, upload-time = "2026-02-23T02:36:30.315Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/80/96/b32bbbb46170a1c8b8b1f28c794202e25cfe743565e9d3469b8eb1e0cc05/astroid-3.2.4-py3-none-any.whl", hash = "sha256:413658a61eeca6202a59231abb473f932038fbcbf1666587f66d482083413a25", size = 276348, upload-time = "2024-07-20T12:57:40.886Z" }, + { url = "https://files.pythonhosted.org/packages/32/53/bac4724684064bfee95ece0bb6caf3887e509006845e25388a12cac26d0c/astroid-4.1.1-py3-none-any.whl", hash = "sha256:6b28522096f7e7a36ffcf3be60e77de15e2411ab3a713184beac33fb8f20c0c9", size = 279273, upload-time = "2026-02-23T02:36:28.676Z" }, ] [[package]] name = "asttokens" -version = "2.4.1" +version = "3.0.1" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/45/1d/f03bcb60c4a3212e15f99a56085d93093a497718adf828d050b9d675da81/asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0", size = 62284, upload-time = "2023-10-26T10:03:05.06Z" } +sdist = { url = "https://files.pythonhosted.org/packages/be/a5/8e3f9b6771b0b408517c82d97aed8f2036509bc247d46114925e32fe33f0/asttokens-3.0.1.tar.gz", hash = "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7", size = 62308, upload-time = "2025-11-15T16:43:48.578Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/45/86/4736ac618d82a20d87d2f92ae19441ebc7ac9e7a581d7e58bbe79233b24a/asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24", size = 27764, upload-time = "2023-10-26T10:03:01.789Z" }, + { url = "https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a", size = 27047, upload-time = "2025-11-15T16:43:16.109Z" }, ] [[package]] name = "attrs" -version = "24.2.0" +version = "25.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fc/0f/aafca9af9315aee06a89ffde799a10a582fe8de76c563ee80bbcdc08b3fb/attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346", size = 792678, upload-time = "2024-08-06T14:37:38.364Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2", size = 63001, upload-time = "2024-08-06T14:37:36.958Z" }, + { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, ] [[package]] name = "babel" -version = "2.16.0" +version = "2.18.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pytz", marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2a/74/f1bc80f23eeba13393b7222b11d95ca3af2c1e28edca18af487137eefed9/babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316", size = 9348104, upload-time = "2024-08-08T14:25:45.459Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/b2/51899539b6ceeeb420d40ed3cd4b7a40519404f9baf3d4ac99dc413a834b/babel-2.18.0.tar.gz", hash = "sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d", size = 9959554, upload-time = "2026-02-01T12:30:56.078Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/20/bc79bc575ba2e2a7f70e8a1155618bb1301eaa5132a8271373a6903f73f8/babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b", size = 9587599, upload-time = "2024-08-08T14:25:42.686Z" }, + { url = "https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl", hash = "sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35", size = 10196845, upload-time = "2026-02-01T12:30:53.445Z" }, ] [[package]] -name = "backcall" -version = "0.2.0" +name = "backports-asyncio-runner" +version = "1.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/40/764a663805d84deee23043e1426a9175567db89c8b3287b5c2ad9f71aa93/backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e", size = 18041, upload-time = "2020-06-09T15:11:32.931Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/ff/70dca7d7cb1cbc0edb2c6cc0c38b65cba36cccc491eca64cabd5fe7f8670/backports_asyncio_runner-1.2.0.tar.gz", hash = "sha256:a5aa7b2b7d8f8bfcaa2b57313f70792df84e32a2a746f585213373f900b42162", size = 69893, upload-time = "2025-07-02T02:27:15.685Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4c/1c/ff6546b6c12603d8dd1070aa3c3d273ad4c07f5771689a7b69a550e8c951/backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255", size = 11157, upload-time = "2020-06-09T15:11:30.87Z" }, + { url = "https://files.pythonhosted.org/packages/a0/59/76ab57e3fe74484f48a53f8e337171b4a2349e506eabe136d7e01d059086/backports_asyncio_runner-1.2.0-py3-none-any.whl", hash = "sha256:0da0a936a8aeb554eccb426dc55af3ba63bcdc69fa1a600b5bb305413a4477b5", size = 12313, upload-time = "2025-07-02T02:27:14.263Z" }, ] [[package]] name = "certifi" -version = "2024.8.30" +version = "2026.2.25" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507, upload-time = "2024-08-30T01:55:04.365Z" } +sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321, upload-time = "2024-08-30T01:55:02.591Z" }, + { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" }, ] [[package]] name = "cffi" -version = "1.17.1" +version = "2.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pycparser" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191, upload-time = "2024-09-04T20:43:30.027Z" }, - { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592, upload-time = "2024-09-04T20:43:32.108Z" }, - { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024, upload-time = "2024-09-04T20:43:34.186Z" }, - { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188, upload-time = "2024-09-04T20:43:36.286Z" }, - { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571, upload-time = "2024-09-04T20:43:38.586Z" }, - { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687, upload-time = "2024-09-04T20:43:40.084Z" }, - { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211, upload-time = "2024-09-04T20:43:41.526Z" }, - { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325, upload-time = "2024-09-04T20:43:43.117Z" }, - { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784, upload-time = "2024-09-04T20:43:45.256Z" }, - { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564, upload-time = "2024-09-04T20:43:46.779Z" }, - { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804, upload-time = "2024-09-04T20:43:48.186Z" }, - { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299, upload-time = "2024-09-04T20:43:49.812Z" }, - { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264, upload-time = "2024-09-04T20:43:51.124Z" }, - { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651, upload-time = "2024-09-04T20:43:52.872Z" }, - { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259, upload-time = "2024-09-04T20:43:56.123Z" }, - { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200, upload-time = "2024-09-04T20:43:57.891Z" }, - { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235, upload-time = "2024-09-04T20:44:00.18Z" }, - { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721, upload-time = "2024-09-04T20:44:01.585Z" }, - { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242, upload-time = "2024-09-04T20:44:03.467Z" }, - { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999, upload-time = "2024-09-04T20:44:05.023Z" }, - { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242, upload-time = "2024-09-04T20:44:06.444Z" }, - { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604, upload-time = "2024-09-04T20:44:08.206Z" }, - { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload-time = "2024-09-04T20:44:09.481Z" }, - { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload-time = "2024-09-04T20:44:10.873Z" }, - { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, - { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, - { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" }, - { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, - { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, - { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, - { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, - { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, - { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, - { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, - { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" }, - { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" }, - { url = "https://files.pythonhosted.org/packages/48/08/15bf6b43ae9bd06f6b00ad8a91f5a8fe1069d4c9fab550a866755402724e/cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b", size = 182457, upload-time = "2024-09-04T20:44:47.892Z" }, - { url = "https://files.pythonhosted.org/packages/c2/5b/f1523dd545f92f7df468e5f653ffa4df30ac222f3c884e51e139878f1cb5/cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964", size = 425932, upload-time = "2024-09-04T20:44:49.491Z" }, - { url = "https://files.pythonhosted.org/packages/53/93/7e547ab4105969cc8c93b38a667b82a835dd2cc78f3a7dad6130cfd41e1d/cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9", size = 448585, upload-time = "2024-09-04T20:44:51.671Z" }, - { url = "https://files.pythonhosted.org/packages/56/c4/a308f2c332006206bb511de219efeff090e9d63529ba0a77aae72e82248b/cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc", size = 456268, upload-time = "2024-09-04T20:44:53.51Z" }, - { url = "https://files.pythonhosted.org/packages/ca/5b/b63681518265f2f4060d2b60755c1c77ec89e5e045fc3773b72735ddaad5/cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c", size = 436592, upload-time = "2024-09-04T20:44:55.085Z" }, - { url = "https://files.pythonhosted.org/packages/bb/19/b51af9f4a4faa4a8ac5a0e5d5c2522dcd9703d07fac69da34a36c4d960d3/cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1", size = 446512, upload-time = "2024-09-04T20:44:57.135Z" }, - { url = "https://files.pythonhosted.org/packages/e2/63/2bed8323890cb613bbecda807688a31ed11a7fe7afe31f8faaae0206a9a3/cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8", size = 171576, upload-time = "2024-09-04T20:44:58.535Z" }, - { url = "https://files.pythonhosted.org/packages/2f/70/80c33b044ebc79527447fd4fbc5455d514c3bb840dede4455de97da39b4d/cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1", size = 181229, upload-time = "2024-09-04T20:44:59.963Z" }, - { url = "https://files.pythonhosted.org/packages/b9/ea/8bb50596b8ffbc49ddd7a1ad305035daa770202a6b782fc164647c2673ad/cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16", size = 182220, upload-time = "2024-09-04T20:45:01.577Z" }, - { url = "https://files.pythonhosted.org/packages/ae/11/e77c8cd24f58285a82c23af484cf5b124a376b32644e445960d1a4654c3a/cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36", size = 178605, upload-time = "2024-09-04T20:45:03.837Z" }, - { url = "https://files.pythonhosted.org/packages/ed/65/25a8dc32c53bf5b7b6c2686b42ae2ad58743f7ff644844af7cdb29b49361/cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8", size = 424910, upload-time = "2024-09-04T20:45:05.315Z" }, - { url = "https://files.pythonhosted.org/packages/42/7a/9d086fab7c66bd7c4d0f27c57a1b6b068ced810afc498cc8c49e0088661c/cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576", size = 447200, upload-time = "2024-09-04T20:45:06.903Z" }, - { url = "https://files.pythonhosted.org/packages/da/63/1785ced118ce92a993b0ec9e0d0ac8dc3e5dbfbcaa81135be56c69cabbb6/cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87", size = 454565, upload-time = "2024-09-04T20:45:08.975Z" }, - { url = "https://files.pythonhosted.org/packages/74/06/90b8a44abf3556599cdec107f7290277ae8901a58f75e6fe8f970cd72418/cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0", size = 435635, upload-time = "2024-09-04T20:45:10.64Z" }, - { url = "https://files.pythonhosted.org/packages/bd/62/a1f468e5708a70b1d86ead5bab5520861d9c7eacce4a885ded9faa7729c3/cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3", size = 445218, upload-time = "2024-09-04T20:45:12.366Z" }, - { url = "https://files.pythonhosted.org/packages/5b/95/b34462f3ccb09c2594aa782d90a90b045de4ff1f70148ee79c69d37a0a5a/cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595", size = 460486, upload-time = "2024-09-04T20:45:13.935Z" }, - { url = "https://files.pythonhosted.org/packages/fc/fc/a1e4bebd8d680febd29cf6c8a40067182b64f00c7d105f8f26b5bc54317b/cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a", size = 437911, upload-time = "2024-09-04T20:45:15.696Z" }, - { url = "https://files.pythonhosted.org/packages/e6/c3/21cab7a6154b6a5ea330ae80de386e7665254835b9e98ecc1340b3a7de9a/cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e", size = 460632, upload-time = "2024-09-04T20:45:17.284Z" }, - { url = "https://files.pythonhosted.org/packages/cb/b5/fd9f8b5a84010ca169ee49f4e4ad6f8c05f4e3545b72ee041dbbcb159882/cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7", size = 171820, upload-time = "2024-09-04T20:45:18.762Z" }, - { url = "https://files.pythonhosted.org/packages/8c/52/b08750ce0bce45c143e1b5d7357ee8c55341b52bdef4b0f081af1eb248c2/cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662", size = 181290, upload-time = "2024-09-04T20:45:20.226Z" }, + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", size = 184283, upload-time = "2025-09-08T23:22:08.01Z" }, + { url = "https://files.pythonhosted.org/packages/9e/84/ad6a0b408daa859246f57c03efd28e5dd1b33c21737c2db84cae8c237aa5/cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", size = 180504, upload-time = "2025-09-08T23:22:10.637Z" }, + { url = "https://files.pythonhosted.org/packages/50/bd/b1a6362b80628111e6653c961f987faa55262b4002fcec42308cad1db680/cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", size = 208811, upload-time = "2025-09-08T23:22:12.267Z" }, + { url = "https://files.pythonhosted.org/packages/4f/27/6933a8b2562d7bd1fb595074cf99cc81fc3789f6a6c05cdabb46284a3188/cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", size = 216402, upload-time = "2025-09-08T23:22:13.455Z" }, + { url = "https://files.pythonhosted.org/packages/05/eb/b86f2a2645b62adcfff53b0dd97e8dfafb5c8aa864bd0d9a2c2049a0d551/cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", size = 203217, upload-time = "2025-09-08T23:22:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/9f/e0/6cbe77a53acf5acc7c08cc186c9928864bd7c005f9efd0d126884858a5fe/cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", size = 203079, upload-time = "2025-09-08T23:22:15.769Z" }, + { url = "https://files.pythonhosted.org/packages/98/29/9b366e70e243eb3d14a5cb488dfd3a0b6b2f1fb001a203f653b93ccfac88/cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", size = 216475, upload-time = "2025-09-08T23:22:17.427Z" }, + { url = "https://files.pythonhosted.org/packages/21/7a/13b24e70d2f90a322f2900c5d8e1f14fa7e2a6b3332b7309ba7b2ba51a5a/cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", size = 218829, upload-time = "2025-09-08T23:22:19.069Z" }, + { url = "https://files.pythonhosted.org/packages/60/99/c9dc110974c59cc981b1f5b66e1d8af8af764e00f0293266824d9c4254bc/cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", size = 211211, upload-time = "2025-09-08T23:22:20.588Z" }, + { url = "https://files.pythonhosted.org/packages/49/72/ff2d12dbf21aca1b32a40ed792ee6b40f6dc3a9cf1644bd7ef6e95e0ac5e/cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", size = 218036, upload-time = "2025-09-08T23:22:22.143Z" }, + { url = "https://files.pythonhosted.org/packages/e2/cc/027d7fb82e58c48ea717149b03bcadcbdc293553edb283af792bd4bcbb3f/cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", size = 172184, upload-time = "2025-09-08T23:22:23.328Z" }, + { url = "https://files.pythonhosted.org/packages/33/fa/072dd15ae27fbb4e06b437eb6e944e75b068deb09e2a2826039e49ee2045/cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", size = 182790, upload-time = "2025-09-08T23:22:24.752Z" }, + { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, + { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, + { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, + { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, + { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, + { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, + { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/015b25184413d7ab0a410775fdb4a50fca20f5589b5dab1dbbfa3baad8ce/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", size = 172076, upload-time = "2025-09-08T23:22:40.95Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8f/dc5531155e7070361eb1b7e4c1a9d896d0cb21c49f807a6c03fd63fc877e/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", size = 182820, upload-time = "2025-09-08T23:22:42.463Z" }, + { url = "https://files.pythonhosted.org/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload-time = "2025-09-08T23:22:43.623Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, ] [[package]] name = "charset-normalizer" -version = "3.3.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/63/09/c1bc53dab74b1816a00d8d030de5bf98f724c52c1635e07681d312f20be8/charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", size = 104809, upload-time = "2023-11-01T04:04:59.997Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/61/095a0aa1a84d1481998b534177c8566fdc50bb1233ea9a0478cd3cc075bd/charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3", size = 194219, upload-time = "2023-11-01T04:02:29.048Z" }, - { url = "https://files.pythonhosted.org/packages/cc/94/f7cf5e5134175de79ad2059edf2adce18e0685ebdb9227ff0139975d0e93/charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027", size = 122521, upload-time = "2023-11-01T04:02:32.452Z" }, - { url = "https://files.pythonhosted.org/packages/46/6a/d5c26c41c49b546860cc1acabdddf48b0b3fb2685f4f5617ac59261b44ae/charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03", size = 120383, upload-time = "2023-11-01T04:02:34.11Z" }, - { url = "https://files.pythonhosted.org/packages/b8/60/e2f67915a51be59d4539ed189eb0a2b0d292bf79270410746becb32bc2c3/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d", size = 138223, upload-time = "2023-11-01T04:02:36.213Z" }, - { url = "https://files.pythonhosted.org/packages/05/8c/eb854996d5fef5e4f33ad56927ad053d04dc820e4a3d39023f35cad72617/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e", size = 148101, upload-time = "2023-11-01T04:02:38.067Z" }, - { url = "https://files.pythonhosted.org/packages/f6/93/bb6cbeec3bf9da9b2eba458c15966658d1daa8b982c642f81c93ad9b40e1/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6", size = 140699, upload-time = "2023-11-01T04:02:39.436Z" }, - { url = "https://files.pythonhosted.org/packages/da/f1/3702ba2a7470666a62fd81c58a4c40be00670e5006a67f4d626e57f013ae/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5", size = 142065, upload-time = "2023-11-01T04:02:41.357Z" }, - { url = "https://files.pythonhosted.org/packages/3f/ba/3f5e7be00b215fa10e13d64b1f6237eb6ebea66676a41b2bcdd09fe74323/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537", size = 144505, upload-time = "2023-11-01T04:02:43.108Z" }, - { url = "https://files.pythonhosted.org/packages/33/c3/3b96a435c5109dd5b6adc8a59ba1d678b302a97938f032e3770cc84cd354/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c", size = 139425, upload-time = "2023-11-01T04:02:45.427Z" }, - { url = "https://files.pythonhosted.org/packages/43/05/3bf613e719efe68fb3a77f9c536a389f35b95d75424b96b426a47a45ef1d/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12", size = 145287, upload-time = "2023-11-01T04:02:46.705Z" }, - { url = "https://files.pythonhosted.org/packages/58/78/a0bc646900994df12e07b4ae5c713f2b3e5998f58b9d3720cce2aa45652f/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f", size = 149929, upload-time = "2023-11-01T04:02:48.098Z" }, - { url = "https://files.pythonhosted.org/packages/eb/5c/97d97248af4920bc68687d9c3b3c0f47c910e21a8ff80af4565a576bd2f0/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269", size = 141605, upload-time = "2023-11-01T04:02:49.605Z" }, - { url = "https://files.pythonhosted.org/packages/a8/31/47d018ef89f95b8aded95c589a77c072c55e94b50a41aa99c0a2008a45a4/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519", size = 142646, upload-time = "2023-11-01T04:02:51.35Z" }, - { url = "https://files.pythonhosted.org/packages/ae/d5/4fecf1d58bedb1340a50f165ba1c7ddc0400252d6832ff619c4568b36cc0/charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73", size = 92846, upload-time = "2023-11-01T04:02:52.679Z" }, - { url = "https://files.pythonhosted.org/packages/a2/a0/4af29e22cb5942488cf45630cbdd7cefd908768e69bdd90280842e4e8529/charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09", size = 100343, upload-time = "2023-11-01T04:02:53.915Z" }, - { url = "https://files.pythonhosted.org/packages/68/77/02839016f6fbbf808e8b38601df6e0e66c17bbab76dff4613f7511413597/charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db", size = 191647, upload-time = "2023-11-01T04:02:55.329Z" }, - { url = "https://files.pythonhosted.org/packages/3e/33/21a875a61057165e92227466e54ee076b73af1e21fe1b31f1e292251aa1e/charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96", size = 121434, upload-time = "2023-11-01T04:02:57.173Z" }, - { url = "https://files.pythonhosted.org/packages/dd/51/68b61b90b24ca35495956b718f35a9756ef7d3dd4b3c1508056fa98d1a1b/charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e", size = 118979, upload-time = "2023-11-01T04:02:58.442Z" }, - { url = "https://files.pythonhosted.org/packages/e4/a6/7ee57823d46331ddc37dd00749c95b0edec2c79b15fc0d6e6efb532e89ac/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f", size = 136582, upload-time = "2023-11-01T04:02:59.776Z" }, - { url = "https://files.pythonhosted.org/packages/74/f1/0d9fe69ac441467b737ba7f48c68241487df2f4522dd7246d9426e7c690e/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574", size = 146645, upload-time = "2023-11-01T04:03:02.186Z" }, - { url = "https://files.pythonhosted.org/packages/05/31/e1f51c76db7be1d4aef220d29fbfa5dbb4a99165d9833dcbf166753b6dc0/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4", size = 139398, upload-time = "2023-11-01T04:03:04.255Z" }, - { url = "https://files.pythonhosted.org/packages/40/26/f35951c45070edc957ba40a5b1db3cf60a9dbb1b350c2d5bef03e01e61de/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8", size = 140273, upload-time = "2023-11-01T04:03:05.983Z" }, - { url = "https://files.pythonhosted.org/packages/07/07/7e554f2bbce3295e191f7e653ff15d55309a9ca40d0362fcdab36f01063c/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc", size = 142577, upload-time = "2023-11-01T04:03:07.567Z" }, - { url = "https://files.pythonhosted.org/packages/d8/b5/eb705c313100defa57da79277d9207dc8d8e45931035862fa64b625bfead/charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae", size = 137747, upload-time = "2023-11-01T04:03:08.886Z" }, - { url = "https://files.pythonhosted.org/packages/19/28/573147271fd041d351b438a5665be8223f1dd92f273713cb882ddafe214c/charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887", size = 143375, upload-time = "2023-11-01T04:03:10.613Z" }, - { url = "https://files.pythonhosted.org/packages/cf/7c/f3b682fa053cc21373c9a839e6beba7705857075686a05c72e0f8c4980ca/charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae", size = 148474, upload-time = "2023-11-01T04:03:11.973Z" }, - { url = "https://files.pythonhosted.org/packages/1e/49/7ab74d4ac537ece3bc3334ee08645e231f39f7d6df6347b29a74b0537103/charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce", size = 140232, upload-time = "2023-11-01T04:03:13.505Z" }, - { url = "https://files.pythonhosted.org/packages/2d/dc/9dacba68c9ac0ae781d40e1a0c0058e26302ea0660e574ddf6797a0347f7/charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f", size = 140859, upload-time = "2023-11-01T04:03:17.362Z" }, - { url = "https://files.pythonhosted.org/packages/6c/c2/4a583f800c0708dd22096298e49f887b49d9746d0e78bfc1d7e29816614c/charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab", size = 92509, upload-time = "2023-11-01T04:03:21.453Z" }, - { url = "https://files.pythonhosted.org/packages/57/ec/80c8d48ac8b1741d5b963797b7c0c869335619e13d4744ca2f67fc11c6fc/charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77", size = 99870, upload-time = "2023-11-01T04:03:22.723Z" }, - { url = "https://files.pythonhosted.org/packages/d1/b2/fcedc8255ec42afee97f9e6f0145c734bbe104aac28300214593eb326f1d/charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8", size = 192892, upload-time = "2023-11-01T04:03:24.135Z" }, - { url = "https://files.pythonhosted.org/packages/2e/7d/2259318c202f3d17f3fe6438149b3b9e706d1070fe3fcbb28049730bb25c/charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b", size = 122213, upload-time = "2023-11-01T04:03:25.66Z" }, - { url = "https://files.pythonhosted.org/packages/3a/52/9f9d17c3b54dc238de384c4cb5a2ef0e27985b42a0e5cc8e8a31d918d48d/charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6", size = 119404, upload-time = "2023-11-01T04:03:27.04Z" }, - { url = "https://files.pythonhosted.org/packages/99/b0/9c365f6d79a9f0f3c379ddb40a256a67aa69c59609608fe7feb6235896e1/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a", size = 137275, upload-time = "2023-11-01T04:03:28.466Z" }, - { url = "https://files.pythonhosted.org/packages/91/33/749df346e93d7a30cdcb90cbfdd41a06026317bfbfb62cd68307c1a3c543/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389", size = 147518, upload-time = "2023-11-01T04:03:29.82Z" }, - { url = "https://files.pythonhosted.org/packages/72/1a/641d5c9f59e6af4c7b53da463d07600a695b9824e20849cb6eea8a627761/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa", size = 140182, upload-time = "2023-11-01T04:03:31.511Z" }, - { url = "https://files.pythonhosted.org/packages/ee/fb/14d30eb4956408ee3ae09ad34299131fb383c47df355ddb428a7331cfa1e/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b", size = 141869, upload-time = "2023-11-01T04:03:32.887Z" }, - { url = "https://files.pythonhosted.org/packages/df/3e/a06b18788ca2eb6695c9b22325b6fde7dde0f1d1838b1792a0076f58fe9d/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed", size = 144042, upload-time = "2023-11-01T04:03:34.412Z" }, - { url = "https://files.pythonhosted.org/packages/45/59/3d27019d3b447a88fe7e7d004a1e04be220227760264cc41b405e863891b/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26", size = 138275, upload-time = "2023-11-01T04:03:35.759Z" }, - { url = "https://files.pythonhosted.org/packages/7b/ef/5eb105530b4da8ae37d506ccfa25057961b7b63d581def6f99165ea89c7e/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d", size = 144819, upload-time = "2023-11-01T04:03:37.216Z" }, - { url = "https://files.pythonhosted.org/packages/a2/51/e5023f937d7f307c948ed3e5c29c4b7a3e42ed2ee0b8cdf8f3a706089bf0/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068", size = 149415, upload-time = "2023-11-01T04:03:38.694Z" }, - { url = "https://files.pythonhosted.org/packages/24/9d/2e3ef673dfd5be0154b20363c5cdcc5606f35666544381bee15af3778239/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143", size = 141212, upload-time = "2023-11-01T04:03:40.07Z" }, - { url = "https://files.pythonhosted.org/packages/5b/ae/ce2c12fcac59cb3860b2e2d76dc405253a4475436b1861d95fe75bdea520/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4", size = 142167, upload-time = "2023-11-01T04:03:41.491Z" }, - { url = "https://files.pythonhosted.org/packages/ed/3a/a448bf035dce5da359daf9ae8a16b8a39623cc395a2ffb1620aa1bce62b0/charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7", size = 93041, upload-time = "2023-11-01T04:03:42.836Z" }, - { url = "https://files.pythonhosted.org/packages/b6/7c/8debebb4f90174074b827c63242c23851bdf00a532489fba57fef3416e40/charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001", size = 100397, upload-time = "2023-11-01T04:03:44.467Z" }, - { url = "https://files.pythonhosted.org/packages/ef/d4/a1d72a8f6aa754fdebe91b848912025d30ab7dced61e9ed8aabbf791ed65/charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a", size = 191415, upload-time = "2023-11-01T04:04:07.592Z" }, - { url = "https://files.pythonhosted.org/packages/13/82/83c188028b6f38d39538442dd127dc794c602ae6d45d66c469f4063a4c30/charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac", size = 121051, upload-time = "2023-11-01T04:04:09.231Z" }, - { url = "https://files.pythonhosted.org/packages/16/ea/a9e284aa38cccea06b7056d4cbc7adf37670b1f8a668a312864abf1ff7c6/charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a", size = 119143, upload-time = "2023-11-01T04:04:10.897Z" }, - { url = "https://files.pythonhosted.org/packages/34/2a/f392457d45e24a0c9bfc012887ed4f3c54bf5d4d05a5deb970ffec4b7fc0/charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33", size = 137506, upload-time = "2023-11-01T04:04:12.612Z" }, - { url = "https://files.pythonhosted.org/packages/be/4d/9e370f8281cec2fcc9452c4d1ac513324c32957c5f70c73dd2fa8442a21a/charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238", size = 147272, upload-time = "2023-11-01T04:04:13.978Z" }, - { url = "https://files.pythonhosted.org/packages/33/95/ef68482e4a6adf781fae8d183fb48d6f2be8facb414f49c90ba6a5149cd1/charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a", size = 139734, upload-time = "2023-11-01T04:04:15.626Z" }, - { url = "https://files.pythonhosted.org/packages/3d/09/d82fe4a34c5f0585f9ea1df090e2a71eb9bb1e469723053e1ee9f57c16f3/charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2", size = 141094, upload-time = "2023-11-01T04:04:17.286Z" }, - { url = "https://files.pythonhosted.org/packages/81/b2/160893421adfa3c45554fb418e321ed342bb10c0a4549e855b2b2a3699cb/charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8", size = 144113, upload-time = "2023-11-01T04:04:18.739Z" }, - { url = "https://files.pythonhosted.org/packages/9e/ef/cd47a63d3200b232792e361cd67530173a09eb011813478b1c0fb8aa7226/charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898", size = 138555, upload-time = "2023-11-01T04:04:20.482Z" }, - { url = "https://files.pythonhosted.org/packages/a8/6f/4ff299b97da2ed6358154b6eb3a2db67da2ae204e53d205aacb18a7e4f34/charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99", size = 144944, upload-time = "2023-11-01T04:04:21.973Z" }, - { url = "https://files.pythonhosted.org/packages/d1/2f/0d1efd07c74c52b6886c32a3b906fb8afd2fecf448650e73ecb90a5a27f1/charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d", size = 148925, upload-time = "2023-11-01T04:04:23.472Z" }, - { url = "https://files.pythonhosted.org/packages/bd/28/7ea29e73eea52c7e15b4b9108d0743fc9e4cc2cdb00d275af1df3d46d360/charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04", size = 140732, upload-time = "2023-11-01T04:04:25.156Z" }, - { url = "https://files.pythonhosted.org/packages/b3/c1/ebca8e87c714a6a561cfee063f0655f742e54b8ae6e78151f60ba8708b3a/charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087", size = 141288, upload-time = "2023-11-01T04:04:26.567Z" }, - { url = "https://files.pythonhosted.org/packages/74/20/8923a06f15eb3d7f6a306729360bd58f9ead1dc39bc7ea8831f4b407e4ae/charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25", size = 92373, upload-time = "2023-11-01T04:04:29.116Z" }, - { url = "https://files.pythonhosted.org/packages/db/fb/d29e343e7c57bbf1231275939f6e75eb740cd47a9d7cb2c52ffeb62ef869/charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b", size = 99577, upload-time = "2023-11-01T04:04:30.833Z" }, - { url = "https://files.pythonhosted.org/packages/f7/9d/bcf4a449a438ed6f19790eee543a86a740c77508fbc5ddab210ab3ba3a9a/charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4", size = 194198, upload-time = "2023-11-01T04:04:32.328Z" }, - { url = "https://files.pythonhosted.org/packages/66/fe/c7d3da40a66a6bf2920cce0f436fa1f62ee28aaf92f412f0bf3b84c8ad6c/charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d", size = 122494, upload-time = "2023-11-01T04:04:33.993Z" }, - { url = "https://files.pythonhosted.org/packages/2a/9d/a6d15bd1e3e2914af5955c8eb15f4071997e7078419328fee93dfd497eb7/charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0", size = 120393, upload-time = "2023-11-01T04:04:35.533Z" }, - { url = "https://files.pythonhosted.org/packages/3d/85/5b7416b349609d20611a64718bed383b9251b5a601044550f0c8983b8900/charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269", size = 138331, upload-time = "2023-11-01T04:04:37.199Z" }, - { url = "https://files.pythonhosted.org/packages/79/66/8946baa705c588521afe10b2d7967300e49380ded089a62d38537264aece/charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c", size = 148097, upload-time = "2023-11-01T04:04:39.217Z" }, - { url = "https://files.pythonhosted.org/packages/44/80/b339237b4ce635b4af1c73742459eee5f97201bd92b2371c53e11958392e/charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519", size = 140711, upload-time = "2023-11-01T04:04:40.964Z" }, - { url = "https://files.pythonhosted.org/packages/98/69/5d8751b4b670d623aa7a47bef061d69c279e9f922f6705147983aa76c3ce/charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796", size = 142251, upload-time = "2023-11-01T04:04:42.893Z" }, - { url = "https://files.pythonhosted.org/packages/1f/8d/33c860a7032da5b93382cbe2873261f81467e7b37f4ed91e25fed62fd49b/charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185", size = 144636, upload-time = "2023-11-01T04:04:44.693Z" }, - { url = "https://files.pythonhosted.org/packages/c2/65/52aaf47b3dd616c11a19b1052ce7fa6321250a7a0b975f48d8c366733b9f/charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c", size = 139514, upload-time = "2023-11-01T04:04:46.388Z" }, - { url = "https://files.pythonhosted.org/packages/51/fd/0ee5b1c2860bb3c60236d05b6e4ac240cf702b67471138571dad91bcfed8/charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458", size = 145528, upload-time = "2023-11-01T04:04:47.893Z" }, - { url = "https://files.pythonhosted.org/packages/e1/9c/60729bf15dc82e3aaf5f71e81686e42e50715a1399770bcde1a9e43d09db/charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2", size = 149804, upload-time = "2023-11-01T04:04:49.979Z" }, - { url = "https://files.pythonhosted.org/packages/53/cd/aa4b8a4d82eeceb872f83237b2d27e43e637cac9ffaef19a1321c3bafb67/charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8", size = 141708, upload-time = "2023-11-01T04:04:51.846Z" }, - { url = "https://files.pythonhosted.org/packages/54/7f/cad0b328759630814fcf9d804bfabaf47776816ad4ef2e9938b7e1123d04/charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561", size = 142708, upload-time = "2023-11-01T04:04:53.252Z" }, - { url = "https://files.pythonhosted.org/packages/c1/9d/254a2f1bcb0ce9acad838e94ed05ba71a7cb1e27affaa4d9e1ca3958cdb6/charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f", size = 92830, upload-time = "2023-11-01T04:04:54.827Z" }, - { url = "https://files.pythonhosted.org/packages/2f/0e/d7303ccae9735ff8ff01e36705ad6233ad2002962e8668a970fc000c5e1b/charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d", size = 100376, upload-time = "2023-11-01T04:04:56.588Z" }, - { url = "https://files.pythonhosted.org/packages/28/76/e6222113b83e3622caa4bb41032d0b1bf785250607392e1b778aca0b8a7d/charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc", size = 48543, upload-time = "2023-11-01T04:04:58.622Z" }, +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/35/02daf95b9cd686320bb622eb148792655c9412dbb9b67abb5694e5910a24/charset_normalizer-3.4.5.tar.gz", hash = "sha256:95adae7b6c42a6c5b5b559b1a99149f090a57128155daeea91732c8d970d8644", size = 134804, upload-time = "2026-03-06T06:03:19.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/21/a2b1505639008ba2e6ef03733a81fc6cfd6a07ea6139a2b76421230b8dad/charset_normalizer-3.4.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4167a621a9a1a986c73777dbc15d4b5eac8ac5c10393374109a343d4013ec765", size = 283319, upload-time = "2026-03-06T06:00:26.433Z" }, + { url = "https://files.pythonhosted.org/packages/70/67/df234c29b68f4e1e095885c9db1cb4b69b8aba49cf94fac041db4aaf1267/charset_normalizer-3.4.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3f64c6bf8f32f9133b668c7f7a7cbdbc453412bc95ecdbd157f3b1e377a92990", size = 189974, upload-time = "2026-03-06T06:00:28.222Z" }, + { url = "https://files.pythonhosted.org/packages/df/7f/fc66af802961c6be42e2c7b69c58f95cbd1f39b0e81b3365d8efe2a02a04/charset_normalizer-3.4.5-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:568e3c34b58422075a1b49575a6abc616d9751b4d61b23f712e12ebb78fe47b2", size = 207866, upload-time = "2026-03-06T06:00:29.769Z" }, + { url = "https://files.pythonhosted.org/packages/c9/23/404eb36fac4e95b833c50e305bba9a241086d427bb2167a42eac7c4f7da4/charset_normalizer-3.4.5-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:036c079aa08a6a592b82487f97c60b439428320ed1b2ea0b3912e99d30c77765", size = 203239, upload-time = "2026-03-06T06:00:31.086Z" }, + { url = "https://files.pythonhosted.org/packages/4b/2f/8a1d989bfadd120c90114ab33e0d2a0cbde05278c1fc15e83e62d570f50a/charset_normalizer-3.4.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:340810d34ef83af92148e96e3e44cb2d3f910d2bf95e5618a5c467d9f102231d", size = 196529, upload-time = "2026-03-06T06:00:32.608Z" }, + { url = "https://files.pythonhosted.org/packages/a5/0c/c75f85ff7ca1f051958bb518cd43922d86f576c03947a050fbedfdfb4f15/charset_normalizer-3.4.5-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:cd2d0f0ec9aa977a27731a3209ebbcacebebaf41f902bd453a928bfd281cf7f8", size = 184152, upload-time = "2026-03-06T06:00:33.93Z" }, + { url = "https://files.pythonhosted.org/packages/f9/20/4ed37f6199af5dde94d4aeaf577f3813a5ec6635834cda1d957013a09c76/charset_normalizer-3.4.5-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0b362bcd27819f9c07cbf23db4e0e8cd4b44c5ecd900c2ff907b2b92274a7412", size = 195226, upload-time = "2026-03-06T06:00:35.469Z" }, + { url = "https://files.pythonhosted.org/packages/28/31/7ba1102178cba7c34dcc050f43d427172f389729e356038f0726253dd914/charset_normalizer-3.4.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:77be992288f720306ab4108fe5c74797de327f3248368dfc7e1a916d6ed9e5a2", size = 192933, upload-time = "2026-03-06T06:00:36.83Z" }, + { url = "https://files.pythonhosted.org/packages/4b/23/f86443ab3921e6a60b33b93f4a1161222231f6c69bc24fb18f3bee7b8518/charset_normalizer-3.4.5-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:8b78d8a609a4b82c273257ee9d631ded7fac0d875bdcdccc109f3ee8328cfcb1", size = 185647, upload-time = "2026-03-06T06:00:38.367Z" }, + { url = "https://files.pythonhosted.org/packages/82/44/08b8be891760f1f5a6d23ce11d6d50c92981603e6eb740b4f72eea9424e2/charset_normalizer-3.4.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ba20bdf69bd127f66d0174d6f2a93e69045e0b4036dc1ca78e091bcc765830c4", size = 209533, upload-time = "2026-03-06T06:00:41.931Z" }, + { url = "https://files.pythonhosted.org/packages/3b/5f/df114f23406199f8af711ddccfbf409ffbc5b7cdc18fa19644997ff0c9bb/charset_normalizer-3.4.5-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:76a9d0de4d0eab387822e7b35d8f89367dd237c72e82ab42b9f7bf5e15ada00f", size = 195901, upload-time = "2026-03-06T06:00:43.978Z" }, + { url = "https://files.pythonhosted.org/packages/07/83/71ef34a76fe8aa05ff8f840244bda2d61e043c2ef6f30d200450b9f6a1be/charset_normalizer-3.4.5-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8fff79bf5978c693c9b1a4d71e4a94fddfb5fe744eb062a318e15f4a2f63a550", size = 204950, upload-time = "2026-03-06T06:00:45.202Z" }, + { url = "https://files.pythonhosted.org/packages/58/40/0253be623995365137d7dc68e45245036207ab2227251e69a3d93ce43183/charset_normalizer-3.4.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c7e84e0c0005e3bdc1a9211cd4e62c78ba80bc37b2365ef4410cd2007a9047f2", size = 198546, upload-time = "2026-03-06T06:00:46.481Z" }, + { url = "https://files.pythonhosted.org/packages/ed/5c/5f3cb5b259a130895ef5ae16b38eaf141430fa3f7af50cd06c5d67e4f7b2/charset_normalizer-3.4.5-cp310-cp310-win32.whl", hash = "sha256:58ad8270cfa5d4bef1bc85bd387217e14ff154d6630e976c6f56f9a040757475", size = 132516, upload-time = "2026-03-06T06:00:47.924Z" }, + { url = "https://files.pythonhosted.org/packages/a5/c3/84fb174e7770f2df2e1a2115090771bfbc2227fb39a765c6d00568d1aab4/charset_normalizer-3.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:02a9d1b01c1e12c27883b0c9349e0bcd9ae92e727ff1a277207e1a262b1cbf05", size = 142906, upload-time = "2026-03-06T06:00:49.389Z" }, + { url = "https://files.pythonhosted.org/packages/d7/b2/6f852f8b969f2cbd0d4092d2e60139ab1af95af9bb651337cae89ec0f684/charset_normalizer-3.4.5-cp310-cp310-win_arm64.whl", hash = "sha256:039215608ac7b358c4da0191d10fc76868567fbf276d54c14721bdedeb6de064", size = 133258, upload-time = "2026-03-06T06:00:51.051Z" }, + { url = "https://files.pythonhosted.org/packages/8f/9e/bcec3b22c64ecec47d39bf5167c2613efd41898c019dccd4183f6aa5d6a7/charset_normalizer-3.4.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:610f72c0ee565dfb8ae1241b666119582fdbfe7c0975c175be719f940e110694", size = 279531, upload-time = "2026-03-06T06:00:52.252Z" }, + { url = "https://files.pythonhosted.org/packages/58/12/81fd25f7e7078ab5d1eedbb0fac44be4904ae3370a3bf4533c8f2d159acd/charset_normalizer-3.4.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60d68e820af339df4ae8358c7a2e7596badeb61e544438e489035f9fbf3246a5", size = 188006, upload-time = "2026-03-06T06:00:53.8Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6e/f2d30e8c27c1b0736a6520311982cf5286cfc7f6cac77d7bc1325e3a23f2/charset_normalizer-3.4.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:10b473fc8dca1c3ad8559985794815f06ca3fc71942c969129070f2c3cdf7281", size = 205085, upload-time = "2026-03-06T06:00:55.311Z" }, + { url = "https://files.pythonhosted.org/packages/d0/90/d12cefcb53b5931e2cf792a33718d7126efb116a320eaa0742c7059a95e4/charset_normalizer-3.4.5-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d4eb8ac7469b2a5d64b5b8c04f84d8bf3ad340f4514b98523805cbf46e3b3923", size = 200545, upload-time = "2026-03-06T06:00:56.532Z" }, + { url = "https://files.pythonhosted.org/packages/03/f4/44d3b830a20e89ff82a3134912d9a1cf6084d64f3b95dcad40f74449a654/charset_normalizer-3.4.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bcb3227c3d9aaf73eaaab1db7ccd80a8995c509ee9941e2aae060ca6e4e5d81", size = 193863, upload-time = "2026-03-06T06:00:57.823Z" }, + { url = "https://files.pythonhosted.org/packages/25/4b/f212119c18a6320a9d4a730d1b4057875cdeabf21b3614f76549042ef8a8/charset_normalizer-3.4.5-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:75ee9c1cce2911581a70a3c0919d8bccf5b1cbc9b0e5171400ec736b4b569497", size = 181827, upload-time = "2026-03-06T06:00:59.323Z" }, + { url = "https://files.pythonhosted.org/packages/74/00/b26158e48b425a202a92965f8069e8a63d9af1481dfa206825d7f74d2a3c/charset_normalizer-3.4.5-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1d1401945cb77787dbd3af2446ff2d75912327c4c3a1526ab7955ecf8600687c", size = 191085, upload-time = "2026-03-06T06:01:00.546Z" }, + { url = "https://files.pythonhosted.org/packages/c4/c2/1c1737bf6fd40335fe53d28fe49afd99ee4143cc57a845e99635ce0b9b6d/charset_normalizer-3.4.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a45e504f5e1be0bd385935a8e1507c442349ca36f511a47057a71c9d1d6ea9e", size = 190688, upload-time = "2026-03-06T06:01:02.479Z" }, + { url = "https://files.pythonhosted.org/packages/5a/3d/abb5c22dc2ef493cd56522f811246a63c5427c08f3e3e50ab663de27fcf4/charset_normalizer-3.4.5-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e09f671a54ce70b79a1fc1dc6da3072b7ef7251fadb894ed92d9aa8218465a5f", size = 183077, upload-time = "2026-03-06T06:01:04.231Z" }, + { url = "https://files.pythonhosted.org/packages/44/33/5298ad4d419a58e25b3508e87f2758d1442ff00c2471f8e0403dab8edad5/charset_normalizer-3.4.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d01de5e768328646e6a3fa9e562706f8f6641708c115c62588aef2b941a4f88e", size = 206706, upload-time = "2026-03-06T06:01:05.773Z" }, + { url = "https://files.pythonhosted.org/packages/7b/17/51e7895ac0f87c3b91d276a449ef09f5532a7529818f59646d7a55089432/charset_normalizer-3.4.5-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:131716d6786ad5e3dc542f5cc6f397ba3339dc0fb87f87ac30e550e8987756af", size = 191665, upload-time = "2026-03-06T06:01:07.473Z" }, + { url = "https://files.pythonhosted.org/packages/90/8f/cce9adf1883e98906dbae380d769b4852bb0fa0004bc7d7a2243418d3ea8/charset_normalizer-3.4.5-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:1a374cc0b88aa710e8865dc1bd6edb3743c59f27830f0293ab101e4cf3ce9f85", size = 201950, upload-time = "2026-03-06T06:01:08.973Z" }, + { url = "https://files.pythonhosted.org/packages/08/ca/bce99cd5c397a52919e2769d126723f27a4c037130374c051c00470bcd38/charset_normalizer-3.4.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d31f0d1671e1534e395f9eb84a68e0fb670e1edb1fe819a9d7f564ae3bc4e53f", size = 195830, upload-time = "2026-03-06T06:01:10.155Z" }, + { url = "https://files.pythonhosted.org/packages/87/4f/2e3d023a06911f1281f97b8f036edc9872167036ca6f55cc874a0be6c12c/charset_normalizer-3.4.5-cp311-cp311-win32.whl", hash = "sha256:cace89841c0599d736d3d74a27bc5821288bb47c5441923277afc6059d7fbcb4", size = 132029, upload-time = "2026-03-06T06:01:11.706Z" }, + { url = "https://files.pythonhosted.org/packages/fe/1f/a853b73d386521fd44b7f67ded6b17b7b2367067d9106a5c4b44f9a34274/charset_normalizer-3.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:f8102ae93c0bc863b1d41ea0f4499c20a83229f52ed870850892df555187154a", size = 142404, upload-time = "2026-03-06T06:01:12.865Z" }, + { url = "https://files.pythonhosted.org/packages/b4/10/dba36f76b71c38e9d391abe0fd8a5b818790e053c431adecfc98c35cd2a9/charset_normalizer-3.4.5-cp311-cp311-win_arm64.whl", hash = "sha256:ed98364e1c262cf5f9363c3eca8c2df37024f52a8fa1180a3610014f26eac51c", size = 132796, upload-time = "2026-03-06T06:01:14.106Z" }, + { url = "https://files.pythonhosted.org/packages/9c/b6/9ee9c1a608916ca5feae81a344dffbaa53b26b90be58cc2159e3332d44ec/charset_normalizer-3.4.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ed97c282ee4f994ef814042423a529df9497e3c666dca19be1d4cd1129dc7ade", size = 280976, upload-time = "2026-03-06T06:01:15.276Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d8/a54f7c0b96f1df3563e9190f04daf981e365a9b397eedfdfb5dbef7e5c6c/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0294916d6ccf2d069727d65973c3a1ca477d68708db25fd758dd28b0827cff54", size = 189356, upload-time = "2026-03-06T06:01:16.511Z" }, + { url = "https://files.pythonhosted.org/packages/42/69/2bf7f76ce1446759a5787cb87d38f6a61eb47dbbdf035cfebf6347292a65/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dc57a0baa3eeedd99fafaef7511b5a6ef4581494e8168ee086031744e2679467", size = 206369, upload-time = "2026-03-06T06:01:17.853Z" }, + { url = "https://files.pythonhosted.org/packages/10/9c/949d1a46dab56b959d9a87272482195f1840b515a3380e39986989a893ae/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ed1a9a204f317ef879b32f9af507d47e49cd5e7f8e8d5d96358c98373314fc60", size = 203285, upload-time = "2026-03-06T06:01:19.473Z" }, + { url = "https://files.pythonhosted.org/packages/67/5c/ae30362a88b4da237d71ea214a8c7eb915db3eec941adda511729ac25fa2/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ad83b8f9379176c841f8865884f3514d905bcd2a9a3b210eaa446e7d2223e4d", size = 196274, upload-time = "2026-03-06T06:01:20.728Z" }, + { url = "https://files.pythonhosted.org/packages/b2/07/c9f2cb0e46cb6d64fdcc4f95953747b843bb2181bda678dc4e699b8f0f9a/charset_normalizer-3.4.5-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:a118e2e0b5ae6b0120d5efa5f866e58f2bb826067a646431da4d6a2bdae7950e", size = 184715, upload-time = "2026-03-06T06:01:22.194Z" }, + { url = "https://files.pythonhosted.org/packages/36/64/6b0ca95c44fddf692cd06d642b28f63009d0ce325fad6e9b2b4d0ef86a52/charset_normalizer-3.4.5-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:754f96058e61a5e22e91483f823e07df16416ce76afa4ebf306f8e1d1296d43f", size = 193426, upload-time = "2026-03-06T06:01:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/50/bc/a730690d726403743795ca3f5bb2baf67838c5fea78236098f324b965e40/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0c300cefd9b0970381a46394902cd18eaf2aa00163f999590ace991989dcd0fc", size = 191780, upload-time = "2026-03-06T06:01:25.053Z" }, + { url = "https://files.pythonhosted.org/packages/97/4f/6c0bc9af68222b22951552d73df4532b5be6447cee32d58e7e8c74ecbb7b/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c108f8619e504140569ee7de3f97d234f0fbae338a7f9f360455071ef9855a95", size = 185805, upload-time = "2026-03-06T06:01:26.294Z" }, + { url = "https://files.pythonhosted.org/packages/dd/b9/a523fb9b0ee90814b503452b2600e4cbc118cd68714d57041564886e7325/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d1028de43596a315e2720a9849ee79007ab742c06ad8b45a50db8cdb7ed4a82a", size = 208342, upload-time = "2026-03-06T06:01:27.55Z" }, + { url = "https://files.pythonhosted.org/packages/4d/61/c59e761dee4464050713e50e27b58266cc8e209e518c0b378c1580c959ba/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:19092dde50335accf365cce21998a1c6dd8eafd42c7b226eb54b2747cdce2fac", size = 193661, upload-time = "2026-03-06T06:01:29.051Z" }, + { url = "https://files.pythonhosted.org/packages/1c/43/729fa30aad69783f755c5ad8649da17ee095311ca42024742701e202dc59/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4354e401eb6dab9aed3c7b4030514328a6c748d05e1c3e19175008ca7de84fb1", size = 204819, upload-time = "2026-03-06T06:01:30.298Z" }, + { url = "https://files.pythonhosted.org/packages/87/33/d9b442ce5a91b96fc0840455a9e49a611bbadae6122778d0a6a79683dd31/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a68766a3c58fde7f9aaa22b3786276f62ab2f594efb02d0a1421b6282e852e98", size = 198080, upload-time = "2026-03-06T06:01:31.478Z" }, + { url = "https://files.pythonhosted.org/packages/56/5a/b8b5a23134978ee9885cee2d6995f4c27cc41f9baded0a9685eabc5338f0/charset_normalizer-3.4.5-cp312-cp312-win32.whl", hash = "sha256:1827734a5b308b65ac54e86a618de66f935a4f63a8a462ff1e19a6788d6c2262", size = 132630, upload-time = "2026-03-06T06:01:33.056Z" }, + { url = "https://files.pythonhosted.org/packages/70/53/e44a4c07e8904500aec95865dc3f6464dc3586a039ef0df606eb3ac38e35/charset_normalizer-3.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:728c6a963dfab66ef865f49286e45239384249672cd598576765acc2a640a636", size = 142856, upload-time = "2026-03-06T06:01:34.489Z" }, + { url = "https://files.pythonhosted.org/packages/ea/aa/c5628f7cad591b1cf45790b7a61483c3e36cf41349c98af7813c483fd6e8/charset_normalizer-3.4.5-cp312-cp312-win_arm64.whl", hash = "sha256:75dfd1afe0b1647449e852f4fb428195a7ed0588947218f7ba929f6538487f02", size = 132982, upload-time = "2026-03-06T06:01:35.641Z" }, + { url = "https://files.pythonhosted.org/packages/f5/48/9f34ec4bb24aa3fdba1890c1bddb97c8a4be1bd84ef5c42ac2352563ad05/charset_normalizer-3.4.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ac59c15e3f1465f722607800c68713f9fbc2f672b9eb649fe831da4019ae9b23", size = 280788, upload-time = "2026-03-06T06:01:37.126Z" }, + { url = "https://files.pythonhosted.org/packages/0e/09/6003e7ffeb90cc0560da893e3208396a44c210c5ee42efff539639def59b/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:165c7b21d19365464e8f70e5ce5e12524c58b48c78c1f5a57524603c1ab003f8", size = 188890, upload-time = "2026-03-06T06:01:38.73Z" }, + { url = "https://files.pythonhosted.org/packages/42/1e/02706edf19e390680daa694d17e2b8eab4b5f7ac285e2a51168b4b22ee6b/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:28269983f25a4da0425743d0d257a2d6921ea7d9b83599d4039486ec5b9f911d", size = 206136, upload-time = "2026-03-06T06:01:40.016Z" }, + { url = "https://files.pythonhosted.org/packages/c7/87/942c3def1b37baf3cf786bad01249190f3ca3d5e63a84f831e704977de1f/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d27ce22ec453564770d29d03a9506d449efbb9fa13c00842262b2f6801c48cce", size = 202551, upload-time = "2026-03-06T06:01:41.522Z" }, + { url = "https://files.pythonhosted.org/packages/94/0a/af49691938dfe175d71b8a929bd7e4ace2809c0c5134e28bc535660d5262/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0625665e4ebdddb553ab185de5db7054393af8879fb0c87bd5690d14379d6819", size = 195572, upload-time = "2026-03-06T06:01:43.208Z" }, + { url = "https://files.pythonhosted.org/packages/20/ea/dfb1792a8050a8e694cfbde1570ff97ff74e48afd874152d38163d1df9ae/charset_normalizer-3.4.5-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:c23eb3263356d94858655b3e63f85ac5d50970c6e8febcdde7830209139cc37d", size = 184438, upload-time = "2026-03-06T06:01:44.755Z" }, + { url = "https://files.pythonhosted.org/packages/72/12/c281e2067466e3ddd0595bfaea58a6946765ace5c72dfa3edc2f5f118026/charset_normalizer-3.4.5-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e6302ca4ae283deb0af68d2fbf467474b8b6aedcd3dab4db187e07f94c109763", size = 193035, upload-time = "2026-03-06T06:01:46.051Z" }, + { url = "https://files.pythonhosted.org/packages/ba/4f/3792c056e7708e10464bad0438a44708886fb8f92e3c3d29ec5e2d964d42/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e51ae7d81c825761d941962450f50d041db028b7278e7b08930b4541b3e45cb9", size = 191340, upload-time = "2026-03-06T06:01:47.547Z" }, + { url = "https://files.pythonhosted.org/packages/e7/86/80ddba897127b5c7a9bccc481b0cd36c8fefa485d113262f0fe4332f0bf4/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:597d10dec876923e5c59e48dbd366e852eacb2b806029491d307daea6b917d7c", size = 185464, upload-time = "2026-03-06T06:01:48.764Z" }, + { url = "https://files.pythonhosted.org/packages/4d/00/b5eff85ba198faacab83e0e4b6f0648155f072278e3b392a82478f8b988b/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5cffde4032a197bd3b42fd0b9509ec60fb70918d6970e4cc773f20fc9180ca67", size = 208014, upload-time = "2026-03-06T06:01:50.371Z" }, + { url = "https://files.pythonhosted.org/packages/c8/11/d36f70be01597fd30850dde8a1269ebc8efadd23ba5785808454f2389bde/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2da4eedcb6338e2321e831a0165759c0c620e37f8cd044a263ff67493be8ffb3", size = 193297, upload-time = "2026-03-06T06:01:51.933Z" }, + { url = "https://files.pythonhosted.org/packages/1a/1d/259eb0a53d4910536c7c2abb9cb25f4153548efb42800c6a9456764649c0/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:65a126fb4b070d05340a84fc709dd9e7c75d9b063b610ece8a60197a291d0adf", size = 204321, upload-time = "2026-03-06T06:01:53.887Z" }, + { url = "https://files.pythonhosted.org/packages/84/31/faa6c5b9d3688715e1ed1bb9d124c384fe2fc1633a409e503ffe1c6398c1/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7a80a9242963416bd81f99349d5f3fce1843c303bd404f204918b6d75a75fd6", size = 197509, upload-time = "2026-03-06T06:01:56.439Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a5/c7d9dd1503ffc08950b3260f5d39ec2366dd08254f0900ecbcf3a6197c7c/charset_normalizer-3.4.5-cp313-cp313-win32.whl", hash = "sha256:f1d725b754e967e648046f00c4facc42d414840f5ccc670c5670f59f83693e4f", size = 132284, upload-time = "2026-03-06T06:01:57.812Z" }, + { url = "https://files.pythonhosted.org/packages/b9/0f/57072b253af40c8aa6636e6de7d75985624c1eb392815b2f934199340a89/charset_normalizer-3.4.5-cp313-cp313-win_amd64.whl", hash = "sha256:e37bd100d2c5d3ba35db9c7c5ba5a9228cbcffe5c4778dc824b164e5257813d7", size = 142630, upload-time = "2026-03-06T06:01:59.062Z" }, + { url = "https://files.pythonhosted.org/packages/31/41/1c4b7cc9f13bd9d369ce3bc993e13d374ce25fa38a2663644283ecf422c1/charset_normalizer-3.4.5-cp313-cp313-win_arm64.whl", hash = "sha256:93b3b2cc5cf1b8743660ce77a4f45f3f6d1172068207c1defc779a36eea6bb36", size = 133254, upload-time = "2026-03-06T06:02:00.281Z" }, + { url = "https://files.pythonhosted.org/packages/43/be/0f0fd9bb4a7fa4fb5067fb7d9ac693d4e928d306f80a0d02bde43a7c4aee/charset_normalizer-3.4.5-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8197abe5ca1ffb7d91e78360f915eef5addff270f8a71c1fc5be24a56f3e4873", size = 280232, upload-time = "2026-03-06T06:02:01.508Z" }, + { url = "https://files.pythonhosted.org/packages/28/02/983b5445e4bef49cd8c9da73a8e029f0825f39b74a06d201bfaa2e55142a/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2aecdb364b8a1802afdc7f9327d55dad5366bc97d8502d0f5854e50712dbc5f", size = 189688, upload-time = "2026-03-06T06:02:02.857Z" }, + { url = "https://files.pythonhosted.org/packages/d0/88/152745c5166437687028027dc080e2daed6fe11cfa95a22f4602591c42db/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a66aa5022bf81ab4b1bebfb009db4fd68e0c6d4307a1ce5ef6a26e5878dfc9e4", size = 206833, upload-time = "2026-03-06T06:02:05.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0f/ebc15c8b02af2f19be9678d6eed115feeeccc45ce1f4b098d986c13e8769/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d77f97e515688bd615c1d1f795d540f32542d514242067adcb8ef532504cb9ee", size = 202879, upload-time = "2026-03-06T06:02:06.446Z" }, + { url = "https://files.pythonhosted.org/packages/38/9c/71336bff6934418dc8d1e8a1644176ac9088068bc571da612767619c97b3/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01a1ed54b953303ca7e310fafe0fe347aab348bd81834a0bcd602eb538f89d66", size = 195764, upload-time = "2026-03-06T06:02:08.763Z" }, + { url = "https://files.pythonhosted.org/packages/b7/95/ce92fde4f98615661871bc282a856cf9b8a15f686ba0af012984660d480b/charset_normalizer-3.4.5-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:b2d37d78297b39a9eb9eb92c0f6df98c706467282055419df141389b23f93362", size = 183728, upload-time = "2026-03-06T06:02:10.137Z" }, + { url = "https://files.pythonhosted.org/packages/1c/e7/f5b4588d94e747ce45ae680f0f242bc2d98dbd4eccfab73e6160b6893893/charset_normalizer-3.4.5-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e71bbb595973622b817c042bd943c3f3667e9c9983ce3d205f973f486fec98a7", size = 192937, upload-time = "2026-03-06T06:02:11.663Z" }, + { url = "https://files.pythonhosted.org/packages/f9/29/9d94ed6b929bf9f48bf6ede6e7474576499f07c4c5e878fb186083622716/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4cd966c2559f501c6fd69294d082c2934c8dd4719deb32c22961a5ac6db0df1d", size = 192040, upload-time = "2026-03-06T06:02:13.489Z" }, + { url = "https://files.pythonhosted.org/packages/15/d2/1a093a1cf827957f9445f2fe7298bcc16f8fc5e05c1ed2ad1af0b239035e/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:d5e52d127045d6ae01a1e821acfad2f3a1866c54d0e837828538fabe8d9d1bd6", size = 184107, upload-time = "2026-03-06T06:02:14.83Z" }, + { url = "https://files.pythonhosted.org/packages/0f/7d/82068ce16bd36135df7b97f6333c5d808b94e01d4599a682e2337ed5fd14/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:30a2b1a48478c3428d047ed9690d57c23038dac838a87ad624c85c0a78ebeb39", size = 208310, upload-time = "2026-03-06T06:02:16.165Z" }, + { url = "https://files.pythonhosted.org/packages/84/4e/4dfb52307bb6af4a5c9e73e482d171b81d36f522b21ccd28a49656baa680/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d8ed79b8f6372ca4254955005830fd61c1ccdd8c0fac6603e2c145c61dd95db6", size = 192918, upload-time = "2026-03-06T06:02:18.144Z" }, + { url = "https://files.pythonhosted.org/packages/08/a4/159ff7da662cf7201502ca89980b8f06acf3e887b278956646a8aeb178ab/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:c5af897b45fa606b12464ccbe0014bbf8c09191e0a66aab6aa9d5cf6e77e0c94", size = 204615, upload-time = "2026-03-06T06:02:19.821Z" }, + { url = "https://files.pythonhosted.org/packages/d6/62/0dd6172203cb6b429ffffc9935001fde42e5250d57f07b0c28c6046deb6b/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1088345bcc93c58d8d8f3d783eca4a6e7a7752bbff26c3eee7e73c597c191c2e", size = 197784, upload-time = "2026-03-06T06:02:21.86Z" }, + { url = "https://files.pythonhosted.org/packages/c7/5e/1aab5cb737039b9c59e63627dc8bbc0d02562a14f831cc450e5f91d84ce1/charset_normalizer-3.4.5-cp314-cp314-win32.whl", hash = "sha256:ee57b926940ba00bca7ba7041e665cc956e55ef482f851b9b65acb20d867e7a2", size = 133009, upload-time = "2026-03-06T06:02:23.289Z" }, + { url = "https://files.pythonhosted.org/packages/40/65/e7c6c77d7aaa4c0d7974f2e403e17f0ed2cb0fc135f77d686b916bf1eead/charset_normalizer-3.4.5-cp314-cp314-win_amd64.whl", hash = "sha256:4481e6da1830c8a1cc0b746b47f603b653dadb690bcd851d039ffaefe70533aa", size = 143511, upload-time = "2026-03-06T06:02:26.195Z" }, + { url = "https://files.pythonhosted.org/packages/ba/91/52b0841c71f152f563b8e072896c14e3d83b195c188b338d3cc2e582d1d4/charset_normalizer-3.4.5-cp314-cp314-win_arm64.whl", hash = "sha256:97ab7787092eb9b50fb47fa04f24c75b768a606af1bcba1957f07f128a7219e4", size = 133775, upload-time = "2026-03-06T06:02:27.473Z" }, + { url = "https://files.pythonhosted.org/packages/c5/60/3a621758945513adfd4db86827a5bafcc615f913dbd0b4c2ed64a65731be/charset_normalizer-3.4.5-py3-none-any.whl", hash = "sha256:9db5e3fcdcee89a78c04dffb3fe33c79f77bd741a624946db2591c81b2fc85b0", size = 55455, upload-time = "2026-03-06T06:03:17.827Z" }, ] [[package]] name = "click" -version = "8.1.7" +version = "8.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121, upload-time = "2023-08-17T17:29:11.868Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941, upload-time = "2023-08-17T17:29:10.08Z" }, + { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, ] [[package]] @@ -282,355 +276,376 @@ wheels = [ [[package]] name = "comm" -version = "0.2.2" +version = "0.2.3" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210, upload-time = "2024-03-12T16:53:41.133Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/13/7d740c5849255756bc17888787313b61fd38a0a8304fc4f073dfc46122aa/comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971", size = 6319, upload-time = "2025-07-25T14:02:04.452Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180, upload-time = "2024-03-12T16:53:39.226Z" }, + { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" }, ] [[package]] name = "coverage" -version = "7.6.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f7/08/7e37f82e4d1aead42a7443ff06a1e406aabf7302c4f00a546e4b320b994c/coverage-7.6.1.tar.gz", hash = "sha256:953510dfb7b12ab69d20135a0662397f077c59b1e6379a768e97c59d852ee51d", size = 798791, upload-time = "2024-08-04T19:45:30.9Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/61/eb7ce5ed62bacf21beca4937a90fe32545c91a3c8a42a30c6616d48fc70d/coverage-7.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b06079abebbc0e89e6163b8e8f0e16270124c154dc6e4a47b413dd538859af16", size = 206690, upload-time = "2024-08-04T19:43:07.695Z" }, - { url = "https://files.pythonhosted.org/packages/7d/73/041928e434442bd3afde5584bdc3f932fb4562b1597629f537387cec6f3d/coverage-7.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cf4b19715bccd7ee27b6b120e7e9dd56037b9c0681dcc1adc9ba9db3d417fa36", size = 207127, upload-time = "2024-08-04T19:43:10.15Z" }, - { url = "https://files.pythonhosted.org/packages/c7/c8/6ca52b5147828e45ad0242388477fdb90df2c6cbb9a441701a12b3c71bc8/coverage-7.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61c0abb4c85b095a784ef23fdd4aede7a2628478e7baba7c5e3deba61070a02", size = 235654, upload-time = "2024-08-04T19:43:12.405Z" }, - { url = "https://files.pythonhosted.org/packages/d5/da/9ac2b62557f4340270942011d6efeab9833648380109e897d48ab7c1035d/coverage-7.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd21f6ae3f08b41004dfb433fa895d858f3f5979e7762d052b12aef444e29afc", size = 233598, upload-time = "2024-08-04T19:43:14.078Z" }, - { url = "https://files.pythonhosted.org/packages/53/23/9e2c114d0178abc42b6d8d5281f651a8e6519abfa0ef460a00a91f80879d/coverage-7.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f59d57baca39b32db42b83b2a7ba6f47ad9c394ec2076b084c3f029b7afca23", size = 234732, upload-time = "2024-08-04T19:43:16.632Z" }, - { url = "https://files.pythonhosted.org/packages/0f/7e/a0230756fb133343a52716e8b855045f13342b70e48e8ad41d8a0d60ab98/coverage-7.6.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a1ac0ae2b8bd743b88ed0502544847c3053d7171a3cff9228af618a068ed9c34", size = 233816, upload-time = "2024-08-04T19:43:19.049Z" }, - { url = "https://files.pythonhosted.org/packages/28/7c/3753c8b40d232b1e5eeaed798c875537cf3cb183fb5041017c1fdb7ec14e/coverage-7.6.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e6a08c0be454c3b3beb105c0596ebdc2371fab6bb90c0c0297f4e58fd7e1012c", size = 232325, upload-time = "2024-08-04T19:43:21.246Z" }, - { url = "https://files.pythonhosted.org/packages/57/e3/818a2b2af5b7573b4b82cf3e9f137ab158c90ea750a8f053716a32f20f06/coverage-7.6.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f5796e664fe802da4f57a168c85359a8fbf3eab5e55cd4e4569fbacecc903959", size = 233418, upload-time = "2024-08-04T19:43:22.945Z" }, - { url = "https://files.pythonhosted.org/packages/c8/fb/4532b0b0cefb3f06d201648715e03b0feb822907edab3935112b61b885e2/coverage-7.6.1-cp310-cp310-win32.whl", hash = "sha256:7bb65125fcbef8d989fa1dd0e8a060999497629ca5b0efbca209588a73356232", size = 209343, upload-time = "2024-08-04T19:43:25.121Z" }, - { url = "https://files.pythonhosted.org/packages/5a/25/af337cc7421eca1c187cc9c315f0a755d48e755d2853715bfe8c418a45fa/coverage-7.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:3115a95daa9bdba70aea750db7b96b37259a81a709223c8448fa97727d546fe0", size = 210136, upload-time = "2024-08-04T19:43:26.851Z" }, - { url = "https://files.pythonhosted.org/packages/ad/5f/67af7d60d7e8ce61a4e2ddcd1bd5fb787180c8d0ae0fbd073f903b3dd95d/coverage-7.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7dea0889685db8550f839fa202744652e87c60015029ce3f60e006f8c4462c93", size = 206796, upload-time = "2024-08-04T19:43:29.115Z" }, - { url = "https://files.pythonhosted.org/packages/e1/0e/e52332389e057daa2e03be1fbfef25bb4d626b37d12ed42ae6281d0a274c/coverage-7.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed37bd3c3b063412f7620464a9ac1314d33100329f39799255fb8d3027da50d3", size = 207244, upload-time = "2024-08-04T19:43:31.285Z" }, - { url = "https://files.pythonhosted.org/packages/aa/cd/766b45fb6e090f20f8927d9c7cb34237d41c73a939358bc881883fd3a40d/coverage-7.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85f5e9a5f8b73e2350097c3756ef7e785f55bd71205defa0bfdaf96c31616ff", size = 239279, upload-time = "2024-08-04T19:43:33.581Z" }, - { url = "https://files.pythonhosted.org/packages/70/6c/a9ccd6fe50ddaf13442a1e2dd519ca805cbe0f1fcd377fba6d8339b98ccb/coverage-7.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bc572be474cafb617672c43fe989d6e48d3c83af02ce8de73fff1c6bb3c198d", size = 236859, upload-time = "2024-08-04T19:43:35.301Z" }, - { url = "https://files.pythonhosted.org/packages/14/6f/8351b465febb4dbc1ca9929505202db909c5a635c6fdf33e089bbc3d7d85/coverage-7.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0420b573964c760df9e9e86d1a9a622d0d27f417e1a949a8a66dd7bcee7bc6", size = 238549, upload-time = "2024-08-04T19:43:37.578Z" }, - { url = "https://files.pythonhosted.org/packages/68/3c/289b81fa18ad72138e6d78c4c11a82b5378a312c0e467e2f6b495c260907/coverage-7.6.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f4aa8219db826ce6be7099d559f8ec311549bfc4046f7f9fe9b5cea5c581c56", size = 237477, upload-time = "2024-08-04T19:43:39.92Z" }, - { url = "https://files.pythonhosted.org/packages/ed/1c/aa1efa6459d822bd72c4abc0b9418cf268de3f60eeccd65dc4988553bd8d/coverage-7.6.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:fc5a77d0c516700ebad189b587de289a20a78324bc54baee03dd486f0855d234", size = 236134, upload-time = "2024-08-04T19:43:41.453Z" }, - { url = "https://files.pythonhosted.org/packages/fb/c8/521c698f2d2796565fe9c789c2ee1ccdae610b3aa20b9b2ef980cc253640/coverage-7.6.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b48f312cca9621272ae49008c7f613337c53fadca647d6384cc129d2996d1133", size = 236910, upload-time = "2024-08-04T19:43:43.037Z" }, - { url = "https://files.pythonhosted.org/packages/7d/30/033e663399ff17dca90d793ee8a2ea2890e7fdf085da58d82468b4220bf7/coverage-7.6.1-cp311-cp311-win32.whl", hash = "sha256:1125ca0e5fd475cbbba3bb67ae20bd2c23a98fac4e32412883f9bcbaa81c314c", size = 209348, upload-time = "2024-08-04T19:43:44.787Z" }, - { url = "https://files.pythonhosted.org/packages/20/05/0d1ccbb52727ccdadaa3ff37e4d2dc1cd4d47f0c3df9eb58d9ec8508ca88/coverage-7.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:8ae539519c4c040c5ffd0632784e21b2f03fc1340752af711f33e5be83a9d6c6", size = 210230, upload-time = "2024-08-04T19:43:46.707Z" }, - { url = "https://files.pythonhosted.org/packages/7e/d4/300fc921dff243cd518c7db3a4c614b7e4b2431b0d1145c1e274fd99bd70/coverage-7.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:95cae0efeb032af8458fc27d191f85d1717b1d4e49f7cb226cf526ff28179778", size = 206983, upload-time = "2024-08-04T19:43:49.082Z" }, - { url = "https://files.pythonhosted.org/packages/e1/ab/6bf00de5327ecb8db205f9ae596885417a31535eeda6e7b99463108782e1/coverage-7.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5621a9175cf9d0b0c84c2ef2b12e9f5f5071357c4d2ea6ca1cf01814f45d2391", size = 207221, upload-time = "2024-08-04T19:43:52.15Z" }, - { url = "https://files.pythonhosted.org/packages/92/8f/2ead05e735022d1a7f3a0a683ac7f737de14850395a826192f0288703472/coverage-7.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:260933720fdcd75340e7dbe9060655aff3af1f0c5d20f46b57f262ab6c86a5e8", size = 240342, upload-time = "2024-08-04T19:43:53.746Z" }, - { url = "https://files.pythonhosted.org/packages/0f/ef/94043e478201ffa85b8ae2d2c79b4081e5a1b73438aafafccf3e9bafb6b5/coverage-7.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07e2ca0ad381b91350c0ed49d52699b625aab2b44b65e1b4e02fa9df0e92ad2d", size = 237371, upload-time = "2024-08-04T19:43:55.993Z" }, - { url = "https://files.pythonhosted.org/packages/1f/0f/c890339dd605f3ebc269543247bdd43b703cce6825b5ed42ff5f2d6122c7/coverage-7.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca", size = 239455, upload-time = "2024-08-04T19:43:57.618Z" }, - { url = "https://files.pythonhosted.org/packages/d1/04/7fd7b39ec7372a04efb0f70c70e35857a99b6a9188b5205efb4c77d6a57a/coverage-7.6.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:877abb17e6339d96bf08e7a622d05095e72b71f8afd8a9fefc82cf30ed944163", size = 238924, upload-time = "2024-08-04T19:44:00.012Z" }, - { url = "https://files.pythonhosted.org/packages/ed/bf/73ce346a9d32a09cf369f14d2a06651329c984e106f5992c89579d25b27e/coverage-7.6.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3e0cadcf6733c09154b461f1ca72d5416635e5e4ec4e536192180d34ec160f8a", size = 237252, upload-time = "2024-08-04T19:44:01.713Z" }, - { url = "https://files.pythonhosted.org/packages/86/74/1dc7a20969725e917b1e07fe71a955eb34bc606b938316bcc799f228374b/coverage-7.6.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c3c02d12f837d9683e5ab2f3d9844dc57655b92c74e286c262e0fc54213c216d", size = 238897, upload-time = "2024-08-04T19:44:03.898Z" }, - { url = "https://files.pythonhosted.org/packages/b6/e9/d9cc3deceb361c491b81005c668578b0dfa51eed02cd081620e9a62f24ec/coverage-7.6.1-cp312-cp312-win32.whl", hash = "sha256:e05882b70b87a18d937ca6768ff33cc3f72847cbc4de4491c8e73880766718e5", size = 209606, upload-time = "2024-08-04T19:44:05.532Z" }, - { url = "https://files.pythonhosted.org/packages/47/c8/5a2e41922ea6740f77d555c4d47544acd7dc3f251fe14199c09c0f5958d3/coverage-7.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:b5d7b556859dd85f3a541db6a4e0167b86e7273e1cdc973e5b175166bb634fdb", size = 210373, upload-time = "2024-08-04T19:44:07.079Z" }, - { url = "https://files.pythonhosted.org/packages/8c/f9/9aa4dfb751cb01c949c990d136a0f92027fbcc5781c6e921df1cb1563f20/coverage-7.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a4acd025ecc06185ba2b801f2de85546e0b8ac787cf9d3b06e7e2a69f925b106", size = 207007, upload-time = "2024-08-04T19:44:09.453Z" }, - { url = "https://files.pythonhosted.org/packages/b9/67/e1413d5a8591622a46dd04ff80873b04c849268831ed5c304c16433e7e30/coverage-7.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a6d3adcf24b624a7b778533480e32434a39ad8fa30c315208f6d3e5542aeb6e9", size = 207269, upload-time = "2024-08-04T19:44:11.045Z" }, - { url = "https://files.pythonhosted.org/packages/14/5b/9dec847b305e44a5634d0fb8498d135ab1d88330482b74065fcec0622224/coverage-7.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0c212c49b6c10e6951362f7c6df3329f04c2b1c28499563d4035d964ab8e08c", size = 239886, upload-time = "2024-08-04T19:44:12.83Z" }, - { url = "https://files.pythonhosted.org/packages/7b/b7/35760a67c168e29f454928f51f970342d23cf75a2bb0323e0f07334c85f3/coverage-7.6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e81d7a3e58882450ec4186ca59a3f20a5d4440f25b1cff6f0902ad890e6748a", size = 237037, upload-time = "2024-08-04T19:44:15.393Z" }, - { url = "https://files.pythonhosted.org/packages/f7/95/d2fd31f1d638df806cae59d7daea5abf2b15b5234016a5ebb502c2f3f7ee/coverage-7.6.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78b260de9790fd81e69401c2dc8b17da47c8038176a79092a89cb2b7d945d060", size = 239038, upload-time = "2024-08-04T19:44:17.466Z" }, - { url = "https://files.pythonhosted.org/packages/6e/bd/110689ff5752b67924efd5e2aedf5190cbbe245fc81b8dec1abaffba619d/coverage-7.6.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a78d169acd38300060b28d600344a803628c3fd585c912cacc9ea8790fe96862", size = 238690, upload-time = "2024-08-04T19:44:19.336Z" }, - { url = "https://files.pythonhosted.org/packages/d3/a8/08d7b38e6ff8df52331c83130d0ab92d9c9a8b5462f9e99c9f051a4ae206/coverage-7.6.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2c09f4ce52cb99dd7505cd0fc8e0e37c77b87f46bc9c1eb03fe3bc9991085388", size = 236765, upload-time = "2024-08-04T19:44:20.994Z" }, - { url = "https://files.pythonhosted.org/packages/d6/6a/9cf96839d3147d55ae713eb2d877f4d777e7dc5ba2bce227167d0118dfe8/coverage-7.6.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6878ef48d4227aace338d88c48738a4258213cd7b74fd9a3d4d7582bb1d8a155", size = 238611, upload-time = "2024-08-04T19:44:22.616Z" }, - { url = "https://files.pythonhosted.org/packages/74/e4/7ff20d6a0b59eeaab40b3140a71e38cf52547ba21dbcf1d79c5a32bba61b/coverage-7.6.1-cp313-cp313-win32.whl", hash = "sha256:44df346d5215a8c0e360307d46ffaabe0f5d3502c8a1cefd700b34baf31d411a", size = 209671, upload-time = "2024-08-04T19:44:24.418Z" }, - { url = "https://files.pythonhosted.org/packages/35/59/1812f08a85b57c9fdb6d0b383d779e47b6f643bc278ed682859512517e83/coverage-7.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:8284cf8c0dd272a247bc154eb6c95548722dce90d098c17a883ed36e67cdb129", size = 210368, upload-time = "2024-08-04T19:44:26.276Z" }, - { url = "https://files.pythonhosted.org/packages/9c/15/08913be1c59d7562a3e39fce20661a98c0a3f59d5754312899acc6cb8a2d/coverage-7.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d3296782ca4eab572a1a4eca686d8bfb00226300dcefdf43faa25b5242ab8a3e", size = 207758, upload-time = "2024-08-04T19:44:29.028Z" }, - { url = "https://files.pythonhosted.org/packages/c4/ae/b5d58dff26cade02ada6ca612a76447acd69dccdbb3a478e9e088eb3d4b9/coverage-7.6.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:502753043567491d3ff6d08629270127e0c31d4184c4c8d98f92c26f65019962", size = 208035, upload-time = "2024-08-04T19:44:30.673Z" }, - { url = "https://files.pythonhosted.org/packages/b8/d7/62095e355ec0613b08dfb19206ce3033a0eedb6f4a67af5ed267a8800642/coverage-7.6.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a89ecca80709d4076b95f89f308544ec8f7b4727e8a547913a35f16717856cb", size = 250839, upload-time = "2024-08-04T19:44:32.412Z" }, - { url = "https://files.pythonhosted.org/packages/7c/1e/c2967cb7991b112ba3766df0d9c21de46b476d103e32bb401b1b2adf3380/coverage-7.6.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a318d68e92e80af8b00fa99609796fdbcdfef3629c77c6283566c6f02c6d6704", size = 246569, upload-time = "2024-08-04T19:44:34.547Z" }, - { url = "https://files.pythonhosted.org/packages/8b/61/a7a6a55dd266007ed3b1df7a3386a0d760d014542d72f7c2c6938483b7bd/coverage-7.6.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13b0a73a0896988f053e4fbb7de6d93388e6dd292b0d87ee51d106f2c11b465b", size = 248927, upload-time = "2024-08-04T19:44:36.313Z" }, - { url = "https://files.pythonhosted.org/packages/c8/fa/13a6f56d72b429f56ef612eb3bc5ce1b75b7ee12864b3bd12526ab794847/coverage-7.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4421712dbfc5562150f7554f13dde997a2e932a6b5f352edcce948a815efee6f", size = 248401, upload-time = "2024-08-04T19:44:38.155Z" }, - { url = "https://files.pythonhosted.org/packages/75/06/0429c652aa0fb761fc60e8c6b291338c9173c6aa0f4e40e1902345b42830/coverage-7.6.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:166811d20dfea725e2e4baa71fffd6c968a958577848d2131f39b60043400223", size = 246301, upload-time = "2024-08-04T19:44:39.883Z" }, - { url = "https://files.pythonhosted.org/packages/52/76/1766bb8b803a88f93c3a2d07e30ffa359467810e5cbc68e375ebe6906efb/coverage-7.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:225667980479a17db1048cb2bf8bfb39b8e5be8f164b8f6628b64f78a72cf9d3", size = 247598, upload-time = "2024-08-04T19:44:41.59Z" }, - { url = "https://files.pythonhosted.org/packages/66/8b/f54f8db2ae17188be9566e8166ac6df105c1c611e25da755738025708d54/coverage-7.6.1-cp313-cp313t-win32.whl", hash = "sha256:170d444ab405852903b7d04ea9ae9b98f98ab6d7e63e1115e82620807519797f", size = 210307, upload-time = "2024-08-04T19:44:43.301Z" }, - { url = "https://files.pythonhosted.org/packages/9f/b0/e0dca6da9170aefc07515cce067b97178cefafb512d00a87a1c717d2efd5/coverage-7.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b9f222de8cded79c49bf184bdbc06630d4c58eec9459b939b4a690c82ed05657", size = 211453, upload-time = "2024-08-04T19:44:45.677Z" }, - { url = "https://files.pythonhosted.org/packages/81/d0/d9e3d554e38beea5a2e22178ddb16587dbcbe9a1ef3211f55733924bf7fa/coverage-7.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6db04803b6c7291985a761004e9060b2bca08da6d04f26a7f2294b8623a0c1a0", size = 206674, upload-time = "2024-08-04T19:44:47.694Z" }, - { url = "https://files.pythonhosted.org/packages/38/ea/cab2dc248d9f45b2b7f9f1f596a4d75a435cb364437c61b51d2eb33ceb0e/coverage-7.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f1adfc8ac319e1a348af294106bc6a8458a0f1633cc62a1446aebc30c5fa186a", size = 207101, upload-time = "2024-08-04T19:44:49.32Z" }, - { url = "https://files.pythonhosted.org/packages/ca/6f/f82f9a500c7c5722368978a5390c418d2a4d083ef955309a8748ecaa8920/coverage-7.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a95324a9de9650a729239daea117df21f4b9868ce32e63f8b650ebe6cef5595b", size = 236554, upload-time = "2024-08-04T19:44:51.631Z" }, - { url = "https://files.pythonhosted.org/packages/a6/94/d3055aa33d4e7e733d8fa309d9adf147b4b06a82c1346366fc15a2b1d5fa/coverage-7.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b43c03669dc4618ec25270b06ecd3ee4fa94c7f9b3c14bae6571ca00ef98b0d3", size = 234440, upload-time = "2024-08-04T19:44:53.464Z" }, - { url = "https://files.pythonhosted.org/packages/e4/6e/885bcd787d9dd674de4a7d8ec83faf729534c63d05d51d45d4fa168f7102/coverage-7.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8929543a7192c13d177b770008bc4e8119f2e1f881d563fc6b6305d2d0ebe9de", size = 235889, upload-time = "2024-08-04T19:44:55.165Z" }, - { url = "https://files.pythonhosted.org/packages/f4/63/df50120a7744492710854860783d6819ff23e482dee15462c9a833cc428a/coverage-7.6.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a09ece4a69cf399510c8ab25e0950d9cf2b42f7b3cb0374f95d2e2ff594478a6", size = 235142, upload-time = "2024-08-04T19:44:57.269Z" }, - { url = "https://files.pythonhosted.org/packages/3a/5d/9d0acfcded2b3e9ce1c7923ca52ccc00c78a74e112fc2aee661125b7843b/coverage-7.6.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9054a0754de38d9dbd01a46621636689124d666bad1936d76c0341f7d71bf569", size = 233805, upload-time = "2024-08-04T19:44:59.033Z" }, - { url = "https://files.pythonhosted.org/packages/c4/56/50abf070cb3cd9b1dd32f2c88f083aab561ecbffbcd783275cb51c17f11d/coverage-7.6.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0dbde0f4aa9a16fa4d754356a8f2e36296ff4d83994b2c9d8398aa32f222f989", size = 234655, upload-time = "2024-08-04T19:45:01.398Z" }, - { url = "https://files.pythonhosted.org/packages/25/ee/b4c246048b8485f85a2426ef4abab88e48c6e80c74e964bea5cd4cd4b115/coverage-7.6.1-cp38-cp38-win32.whl", hash = "sha256:da511e6ad4f7323ee5702e6633085fb76c2f893aaf8ce4c51a0ba4fc07580ea7", size = 209296, upload-time = "2024-08-04T19:45:03.819Z" }, - { url = "https://files.pythonhosted.org/packages/5c/1c/96cf86b70b69ea2b12924cdf7cabb8ad10e6130eab8d767a1099fbd2a44f/coverage-7.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:3f1156e3e8f2872197af3840d8ad307a9dd18e615dc64d9ee41696f287c57ad8", size = 210137, upload-time = "2024-08-04T19:45:06.25Z" }, - { url = "https://files.pythonhosted.org/packages/19/d3/d54c5aa83268779d54c86deb39c1c4566e5d45c155369ca152765f8db413/coverage-7.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abd5fd0db5f4dc9289408aaf34908072f805ff7792632250dcb36dc591d24255", size = 206688, upload-time = "2024-08-04T19:45:08.358Z" }, - { url = "https://files.pythonhosted.org/packages/a5/fe/137d5dca72e4a258b1bc17bb04f2e0196898fe495843402ce826a7419fe3/coverage-7.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:547f45fa1a93154bd82050a7f3cddbc1a7a4dd2a9bf5cb7d06f4ae29fe94eaf8", size = 207120, upload-time = "2024-08-04T19:45:11.526Z" }, - { url = "https://files.pythonhosted.org/packages/78/5b/a0a796983f3201ff5485323b225d7c8b74ce30c11f456017e23d8e8d1945/coverage-7.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645786266c8f18a931b65bfcefdbf6952dd0dea98feee39bd188607a9d307ed2", size = 235249, upload-time = "2024-08-04T19:45:13.202Z" }, - { url = "https://files.pythonhosted.org/packages/4e/e1/76089d6a5ef9d68f018f65411fcdaaeb0141b504587b901d74e8587606ad/coverage-7.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e0b2df163b8ed01d515807af24f63de04bebcecbd6c3bfeff88385789fdf75a", size = 233237, upload-time = "2024-08-04T19:45:14.961Z" }, - { url = "https://files.pythonhosted.org/packages/9a/6f/eef79b779a540326fee9520e5542a8b428cc3bfa8b7c8f1022c1ee4fc66c/coverage-7.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:609b06f178fe8e9f89ef676532760ec0b4deea15e9969bf754b37f7c40326dbc", size = 234311, upload-time = "2024-08-04T19:45:16.924Z" }, - { url = "https://files.pythonhosted.org/packages/75/e1/656d65fb126c29a494ef964005702b012f3498db1a30dd562958e85a4049/coverage-7.6.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:702855feff378050ae4f741045e19a32d57d19f3e0676d589df0575008ea5004", size = 233453, upload-time = "2024-08-04T19:45:18.672Z" }, - { url = "https://files.pythonhosted.org/packages/68/6a/45f108f137941a4a1238c85f28fd9d048cc46b5466d6b8dda3aba1bb9d4f/coverage-7.6.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2bdb062ea438f22d99cba0d7829c2ef0af1d768d1e4a4f528087224c90b132cb", size = 231958, upload-time = "2024-08-04T19:45:20.63Z" }, - { url = "https://files.pythonhosted.org/packages/9b/e7/47b809099168b8b8c72ae311efc3e88c8d8a1162b3ba4b8da3cfcdb85743/coverage-7.6.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9c56863d44bd1c4fe2abb8a4d6f5371d197f1ac0ebdee542f07f35895fc07f36", size = 232938, upload-time = "2024-08-04T19:45:23.062Z" }, - { url = "https://files.pythonhosted.org/packages/52/80/052222ba7058071f905435bad0ba392cc12006380731c37afaf3fe749b88/coverage-7.6.1-cp39-cp39-win32.whl", hash = "sha256:6e2cd258d7d927d09493c8df1ce9174ad01b381d4729a9d8d4e38670ca24774c", size = 209352, upload-time = "2024-08-04T19:45:25.042Z" }, - { url = "https://files.pythonhosted.org/packages/b8/d8/1b92e0b3adcf384e98770a00ca095da1b5f7b483e6563ae4eb5e935d24a1/coverage-7.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:06a737c882bd26d0d6ee7269b20b12f14a8704807a01056c80bb881a4b2ce6ca", size = 210153, upload-time = "2024-08-04T19:45:27.079Z" }, - { url = "https://files.pythonhosted.org/packages/a5/2b/0354ed096bca64dc8e32a7cbcae28b34cb5ad0b1fe2125d6d99583313ac0/coverage-7.6.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:e9a6e0eb86070e8ccaedfbd9d38fec54864f3125ab95419970575b42af7541df", size = 198926, upload-time = "2024-08-04T19:45:28.875Z" }, +version = "7.13.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/56/95b7e30fa389756cb56630faa728da46a27b8c6eb46f9d557c68fff12b65/coverage-7.13.4.tar.gz", hash = "sha256:e5c8f6ed1e61a8b2dcdf31eb0b9bbf0130750ca79c1c49eb898e2ad86f5ccc91", size = 827239, upload-time = "2026-02-09T12:59:03.86Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/d4/7827d9ffa34d5d4d752eec907022aa417120936282fc488306f5da08c292/coverage-7.13.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fc31c787a84f8cd6027eba44010517020e0d18487064cd3d8968941856d1415", size = 219152, upload-time = "2026-02-09T12:56:11.974Z" }, + { url = "https://files.pythonhosted.org/packages/35/b0/d69df26607c64043292644dbb9dc54b0856fabaa2cbb1eeee3331cc9e280/coverage-7.13.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a32ebc02a1805adf637fc8dec324b5cdacd2e493515424f70ee33799573d661b", size = 219667, upload-time = "2026-02-09T12:56:13.33Z" }, + { url = "https://files.pythonhosted.org/packages/82/a4/c1523f7c9e47b2271dbf8c2a097e7a1f89ef0d66f5840bb59b7e8814157b/coverage-7.13.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e24f9156097ff9dc286f2f913df3a7f63c0e333dcafa3c196f2c18b4175ca09a", size = 246425, upload-time = "2026-02-09T12:56:14.552Z" }, + { url = "https://files.pythonhosted.org/packages/f8/02/aa7ec01d1a5023c4b680ab7257f9bfde9defe8fdddfe40be096ac19e8177/coverage-7.13.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8041b6c5bfdc03257666e9881d33b1abc88daccaf73f7b6340fb7946655cd10f", size = 248229, upload-time = "2026-02-09T12:56:16.31Z" }, + { url = "https://files.pythonhosted.org/packages/35/98/85aba0aed5126d896162087ef3f0e789a225697245256fc6181b95f47207/coverage-7.13.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a09cfa6a5862bc2fc6ca7c3def5b2926194a56b8ab78ffcf617d28911123012", size = 250106, upload-time = "2026-02-09T12:56:18.024Z" }, + { url = "https://files.pythonhosted.org/packages/96/72/1db59bd67494bc162e3e4cd5fbc7edba2c7026b22f7c8ef1496d58c2b94c/coverage-7.13.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:296f8b0af861d3970c2a4d8c91d48eb4dd4771bcef9baedec6a9b515d7de3def", size = 252021, upload-time = "2026-02-09T12:56:19.272Z" }, + { url = "https://files.pythonhosted.org/packages/9d/97/72899c59c7066961de6e3daa142d459d47d104956db43e057e034f015c8a/coverage-7.13.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e101609bcbbfb04605ea1027b10dc3735c094d12d40826a60f897b98b1c30256", size = 247114, upload-time = "2026-02-09T12:56:21.051Z" }, + { url = "https://files.pythonhosted.org/packages/39/1f/f1885573b5970235e908da4389176936c8933e86cb316b9620aab1585fa2/coverage-7.13.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aa3feb8db2e87ff5e6d00d7e1480ae241876286691265657b500886c98f38bda", size = 248143, upload-time = "2026-02-09T12:56:22.585Z" }, + { url = "https://files.pythonhosted.org/packages/a8/cf/e80390c5b7480b722fa3e994f8202807799b85bc562aa4f1dde209fbb7be/coverage-7.13.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4fc7fa81bbaf5a02801b65346c8b3e657f1d93763e58c0abdf7c992addd81a92", size = 246152, upload-time = "2026-02-09T12:56:23.748Z" }, + { url = "https://files.pythonhosted.org/packages/44/bf/f89a8350d85572f95412debb0fb9bb4795b1d5b5232bd652923c759e787b/coverage-7.13.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:33901f604424145c6e9c2398684b92e176c0b12df77d52db81c20abd48c3794c", size = 249959, upload-time = "2026-02-09T12:56:25.209Z" }, + { url = "https://files.pythonhosted.org/packages/f7/6e/612a02aece8178c818df273e8d1642190c4875402ca2ba74514394b27aba/coverage-7.13.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:bb28c0f2cf2782508a40cec377935829d5fcc3ad9a3681375af4e84eb34b6b58", size = 246416, upload-time = "2026-02-09T12:56:26.475Z" }, + { url = "https://files.pythonhosted.org/packages/cb/98/b5afc39af67c2fa6786b03c3a7091fc300947387ce8914b096db8a73d67a/coverage-7.13.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d107aff57a83222ddbd8d9ee705ede2af2cc926608b57abed8ef96b50b7e8f9", size = 247025, upload-time = "2026-02-09T12:56:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/51/30/2bba8ef0682d5bd210c38fe497e12a06c9f8d663f7025e9f5c2c31ce847d/coverage-7.13.4-cp310-cp310-win32.whl", hash = "sha256:a6f94a7d00eb18f1b6d403c91a88fd58cfc92d4b16080dfdb774afc8294469bf", size = 221758, upload-time = "2026-02-09T12:56:29.051Z" }, + { url = "https://files.pythonhosted.org/packages/78/13/331f94934cf6c092b8ea59ff868eb587bc8fe0893f02c55bc6c0183a192e/coverage-7.13.4-cp310-cp310-win_amd64.whl", hash = "sha256:2cb0f1e000ebc419632bbe04366a8990b6e32c4e0b51543a6484ffe15eaeda95", size = 222693, upload-time = "2026-02-09T12:56:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/b4/ad/b59e5b451cf7172b8d1043dc0fa718f23aab379bc1521ee13d4bd9bfa960/coverage-7.13.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d490ba50c3f35dd7c17953c68f3270e7ccd1c6642e2d2afe2d8e720b98f5a053", size = 219278, upload-time = "2026-02-09T12:56:31.673Z" }, + { url = "https://files.pythonhosted.org/packages/f1/17/0cb7ca3de72e5f4ef2ec2fa0089beafbcaaaead1844e8b8a63d35173d77d/coverage-7.13.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:19bc3c88078789f8ef36acb014d7241961dbf883fd2533d18cb1e7a5b4e28b11", size = 219783, upload-time = "2026-02-09T12:56:33.104Z" }, + { url = "https://files.pythonhosted.org/packages/ab/63/325d8e5b11e0eaf6d0f6a44fad444ae58820929a9b0de943fa377fe73e85/coverage-7.13.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3998e5a32e62fdf410c0dbd3115df86297995d6e3429af80b8798aad894ca7aa", size = 250200, upload-time = "2026-02-09T12:56:34.474Z" }, + { url = "https://files.pythonhosted.org/packages/76/53/c16972708cbb79f2942922571a687c52bd109a7bd51175aeb7558dff2236/coverage-7.13.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8e264226ec98e01a8e1054314af91ee6cde0eacac4f465cc93b03dbe0bce2fd7", size = 252114, upload-time = "2026-02-09T12:56:35.749Z" }, + { url = "https://files.pythonhosted.org/packages/eb/c2/7ab36d8b8cc412bec9ea2d07c83c48930eb4ba649634ba00cb7e4e0f9017/coverage-7.13.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a3aa4e7b9e416774b21797365b358a6e827ffadaaca81b69ee02946852449f00", size = 254220, upload-time = "2026-02-09T12:56:37.796Z" }, + { url = "https://files.pythonhosted.org/packages/d6/4d/cf52c9a3322c89a0e6febdfbc83bb45c0ed3c64ad14081b9503adee702e7/coverage-7.13.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:71ca20079dd8f27fcf808817e281e90220475cd75115162218d0e27549f95fef", size = 256164, upload-time = "2026-02-09T12:56:39.016Z" }, + { url = "https://files.pythonhosted.org/packages/78/e9/eb1dd17bd6de8289df3580e967e78294f352a5df8a57ff4671ee5fc3dcd0/coverage-7.13.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e2f25215f1a359ab17320b47bcdaca3e6e6356652e8256f2441e4ef972052903", size = 250325, upload-time = "2026-02-09T12:56:40.668Z" }, + { url = "https://files.pythonhosted.org/packages/71/07/8c1542aa873728f72267c07278c5cc0ec91356daf974df21335ccdb46368/coverage-7.13.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d65b2d373032411e86960604dc4edac91fdfb5dca539461cf2cbe78327d1e64f", size = 251913, upload-time = "2026-02-09T12:56:41.97Z" }, + { url = "https://files.pythonhosted.org/packages/74/d7/c62e2c5e4483a748e27868e4c32ad3daa9bdddbba58e1bc7a15e252baa74/coverage-7.13.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94eb63f9b363180aff17de3e7c8760c3ba94664ea2695c52f10111244d16a299", size = 249974, upload-time = "2026-02-09T12:56:43.323Z" }, + { url = "https://files.pythonhosted.org/packages/98/9f/4c5c015a6e98ced54efd0f5cf8d31b88e5504ecb6857585fc0161bb1e600/coverage-7.13.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e856bf6616714c3a9fbc270ab54103f4e685ba236fa98c054e8f87f266c93505", size = 253741, upload-time = "2026-02-09T12:56:45.155Z" }, + { url = "https://files.pythonhosted.org/packages/bd/59/0f4eef89b9f0fcd9633b5d350016f54126ab49426a70ff4c4e87446cabdc/coverage-7.13.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:65dfcbe305c3dfe658492df2d85259e0d79ead4177f9ae724b6fb245198f55d6", size = 249695, upload-time = "2026-02-09T12:56:46.636Z" }, + { url = "https://files.pythonhosted.org/packages/b5/2c/b7476f938deb07166f3eb281a385c262675d688ff4659ad56c6c6b8e2e70/coverage-7.13.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b507778ae8a4c915436ed5c2e05b4a6cecfa70f734e19c22a005152a11c7b6a9", size = 250599, upload-time = "2026-02-09T12:56:48.13Z" }, + { url = "https://files.pythonhosted.org/packages/b8/34/c3420709d9846ee3785b9f2831b4d94f276f38884032dca1457fa83f7476/coverage-7.13.4-cp311-cp311-win32.whl", hash = "sha256:784fc3cf8be001197b652d51d3fd259b1e2262888693a4636e18879f613a62a9", size = 221780, upload-time = "2026-02-09T12:56:50.479Z" }, + { url = "https://files.pythonhosted.org/packages/61/08/3d9c8613079d2b11c185b865de9a4c1a68850cfda2b357fae365cf609f29/coverage-7.13.4-cp311-cp311-win_amd64.whl", hash = "sha256:2421d591f8ca05b308cf0092807308b2facbefe54af7c02ac22548b88b95c98f", size = 222715, upload-time = "2026-02-09T12:56:51.815Z" }, + { url = "https://files.pythonhosted.org/packages/18/1a/54c3c80b2f056164cc0a6cdcb040733760c7c4be9d780fe655f356f433e4/coverage-7.13.4-cp311-cp311-win_arm64.whl", hash = "sha256:79e73a76b854d9c6088fe5d8b2ebe745f8681c55f7397c3c0a016192d681045f", size = 221385, upload-time = "2026-02-09T12:56:53.194Z" }, + { url = "https://files.pythonhosted.org/packages/d1/81/4ce2fdd909c5a0ed1f6dedb88aa57ab79b6d1fbd9b588c1ac7ef45659566/coverage-7.13.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:02231499b08dabbe2b96612993e5fc34217cdae907a51b906ac7fca8027a4459", size = 219449, upload-time = "2026-02-09T12:56:54.889Z" }, + { url = "https://files.pythonhosted.org/packages/5d/96/5238b1efc5922ddbdc9b0db9243152c09777804fb7c02ad1741eb18a11c0/coverage-7.13.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40aa8808140e55dc022b15d8aa7f651b6b3d68b365ea0398f1441e0b04d859c3", size = 219810, upload-time = "2026-02-09T12:56:56.33Z" }, + { url = "https://files.pythonhosted.org/packages/78/72/2f372b726d433c9c35e56377cf1d513b4c16fe51841060d826b95caacec1/coverage-7.13.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5b856a8ccf749480024ff3bd7310adaef57bf31fd17e1bfc404b7940b6986634", size = 251308, upload-time = "2026-02-09T12:56:57.858Z" }, + { url = "https://files.pythonhosted.org/packages/5d/a0/2ea570925524ef4e00bb6c82649f5682a77fac5ab910a65c9284de422600/coverage-7.13.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c048ea43875fbf8b45d476ad79f179809c590ec7b79e2035c662e7afa3192e3", size = 254052, upload-time = "2026-02-09T12:56:59.754Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ac/45dc2e19a1939098d783c846e130b8f862fbb50d09e0af663988f2f21973/coverage-7.13.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b7b38448866e83176e28086674fe7368ab8590e4610fb662b44e345b86d63ffa", size = 255165, upload-time = "2026-02-09T12:57:01.287Z" }, + { url = "https://files.pythonhosted.org/packages/2d/4d/26d236ff35abc3b5e63540d3386e4c3b192168c1d96da5cb2f43c640970f/coverage-7.13.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:de6defc1c9badbf8b9e67ae90fd00519186d6ab64e5cc5f3d21359c2a9b2c1d3", size = 257432, upload-time = "2026-02-09T12:57:02.637Z" }, + { url = "https://files.pythonhosted.org/packages/ec/55/14a966c757d1348b2e19caf699415a2a4c4f7feaa4bbc6326a51f5c7dd1b/coverage-7.13.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7eda778067ad7ffccd23ecffce537dface96212576a07924cbf0d8799d2ded5a", size = 251716, upload-time = "2026-02-09T12:57:04.056Z" }, + { url = "https://files.pythonhosted.org/packages/77/33/50116647905837c66d28b2af1321b845d5f5d19be9655cb84d4a0ea806b4/coverage-7.13.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e87f6c587c3f34356c3759f0420693e35e7eb0e2e41e4c011cb6ec6ecbbf1db7", size = 253089, upload-time = "2026-02-09T12:57:05.503Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b4/8efb11a46e3665d92635a56e4f2d4529de6d33f2cb38afd47d779d15fc99/coverage-7.13.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8248977c2e33aecb2ced42fef99f2d319e9904a36e55a8a68b69207fb7e43edc", size = 251232, upload-time = "2026-02-09T12:57:06.879Z" }, + { url = "https://files.pythonhosted.org/packages/51/24/8cd73dd399b812cc76bb0ac260e671c4163093441847ffe058ac9fda1e32/coverage-7.13.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:25381386e80ae727608e662474db537d4df1ecd42379b5ba33c84633a2b36d47", size = 255299, upload-time = "2026-02-09T12:57:08.245Z" }, + { url = "https://files.pythonhosted.org/packages/03/94/0a4b12f1d0e029ce1ccc1c800944a9984cbe7d678e470bb6d3c6bc38a0da/coverage-7.13.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:ee756f00726693e5ba94d6df2bdfd64d4852d23b09bb0bc700e3b30e6f333985", size = 250796, upload-time = "2026-02-09T12:57:10.142Z" }, + { url = "https://files.pythonhosted.org/packages/73/44/6002fbf88f6698ca034360ce474c406be6d5a985b3fdb3401128031eef6b/coverage-7.13.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fdfc1e28e7c7cdce44985b3043bc13bbd9c747520f94a4d7164af8260b3d91f0", size = 252673, upload-time = "2026-02-09T12:57:12.197Z" }, + { url = "https://files.pythonhosted.org/packages/de/c6/a0279f7c00e786be75a749a5674e6fa267bcbd8209cd10c9a450c655dfa7/coverage-7.13.4-cp312-cp312-win32.whl", hash = "sha256:01d4cbc3c283a17fc1e42d614a119f7f438eabb593391283adca8dc86eff1246", size = 221990, upload-time = "2026-02-09T12:57:14.085Z" }, + { url = "https://files.pythonhosted.org/packages/77/4e/c0a25a425fcf5557d9abd18419c95b63922e897bc86c1f327f155ef234a9/coverage-7.13.4-cp312-cp312-win_amd64.whl", hash = "sha256:9401ebc7ef522f01d01d45532c68c5ac40fb27113019b6b7d8b208f6e9baa126", size = 222800, upload-time = "2026-02-09T12:57:15.944Z" }, + { url = "https://files.pythonhosted.org/packages/47/ac/92da44ad9a6f4e3a7debd178949d6f3769bedca33830ce9b1dcdab589a37/coverage-7.13.4-cp312-cp312-win_arm64.whl", hash = "sha256:b1ec7b6b6e93255f952e27ab58fbc68dcc468844b16ecbee881aeb29b6ab4d8d", size = 221415, upload-time = "2026-02-09T12:57:17.497Z" }, + { url = "https://files.pythonhosted.org/packages/db/23/aad45061a31677d68e47499197a131eea55da4875d16c1f42021ab963503/coverage-7.13.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b66a2da594b6068b48b2692f043f35d4d3693fb639d5ea8b39533c2ad9ac3ab9", size = 219474, upload-time = "2026-02-09T12:57:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/a5/70/9b8b67a0945f3dfec1fd896c5cefb7c19d5a3a6d74630b99a895170999ae/coverage-7.13.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3599eb3992d814d23b35c536c28df1a882caa950f8f507cef23d1cbf334995ac", size = 219844, upload-time = "2026-02-09T12:57:20.66Z" }, + { url = "https://files.pythonhosted.org/packages/97/fd/7e859f8fab324cef6c4ad7cff156ca7c489fef9179d5749b0c8d321281c2/coverage-7.13.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:93550784d9281e374fb5a12bf1324cc8a963fd63b2d2f223503ef0fd4aa339ea", size = 250832, upload-time = "2026-02-09T12:57:22.007Z" }, + { url = "https://files.pythonhosted.org/packages/e4/dc/b2442d10020c2f52617828862d8b6ee337859cd8f3a1f13d607dddda9cf7/coverage-7.13.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b720ce6a88a2755f7c697c23268ddc47a571b88052e6b155224347389fdf6a3b", size = 253434, upload-time = "2026-02-09T12:57:23.339Z" }, + { url = "https://files.pythonhosted.org/packages/5a/88/6728a7ad17428b18d836540630487231f5470fb82454871149502f5e5aa2/coverage-7.13.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7b322db1284a2ed3aa28ffd8ebe3db91c929b7a333c0820abec3d838ef5b3525", size = 254676, upload-time = "2026-02-09T12:57:24.774Z" }, + { url = "https://files.pythonhosted.org/packages/7c/bc/21244b1b8cedf0dff0a2b53b208015fe798d5f2a8d5348dbfece04224fff/coverage-7.13.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f4594c67d8a7c89cf922d9df0438c7c7bb022ad506eddb0fdb2863359ff78242", size = 256807, upload-time = "2026-02-09T12:57:26.125Z" }, + { url = "https://files.pythonhosted.org/packages/97/a0/ddba7ed3251cff51006737a727d84e05b61517d1784a9988a846ba508877/coverage-7.13.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:53d133df809c743eb8bce33b24bcababb371f4441340578cd406e084d94a6148", size = 251058, upload-time = "2026-02-09T12:57:27.614Z" }, + { url = "https://files.pythonhosted.org/packages/9b/55/e289addf7ff54d3a540526f33751951bf0878f3809b47f6dfb3def69c6f7/coverage-7.13.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76451d1978b95ba6507a039090ba076105c87cc76fc3efd5d35d72093964d49a", size = 252805, upload-time = "2026-02-09T12:57:29.066Z" }, + { url = "https://files.pythonhosted.org/packages/13/4e/cc276b1fa4a59be56d96f1dabddbdc30f4ba22e3b1cd42504c37b3313255/coverage-7.13.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7f57b33491e281e962021de110b451ab8a24182589be17e12a22c79047935e23", size = 250766, upload-time = "2026-02-09T12:57:30.522Z" }, + { url = "https://files.pythonhosted.org/packages/94/44/1093b8f93018f8b41a8cf29636c9292502f05e4a113d4d107d14a3acd044/coverage-7.13.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1731dc33dc276dafc410a885cbf5992f1ff171393e48a21453b78727d090de80", size = 254923, upload-time = "2026-02-09T12:57:31.946Z" }, + { url = "https://files.pythonhosted.org/packages/8b/55/ea2796da2d42257f37dbea1aab239ba9263b31bd91d5527cdd6db5efe174/coverage-7.13.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:bd60d4fe2f6fa7dff9223ca1bbc9f05d2b6697bc5961072e5d3b952d46e1b1ea", size = 250591, upload-time = "2026-02-09T12:57:33.842Z" }, + { url = "https://files.pythonhosted.org/packages/d4/fa/7c4bb72aacf8af5020675aa633e59c1fbe296d22aed191b6a5b711eb2bc7/coverage-7.13.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9181a3ccead280b828fae232df12b16652702b49d41e99d657f46cc7b1f6ec7a", size = 252364, upload-time = "2026-02-09T12:57:35.743Z" }, + { url = "https://files.pythonhosted.org/packages/5c/38/a8d2ec0146479c20bbaa7181b5b455a0c41101eed57f10dd19a78ab44c80/coverage-7.13.4-cp313-cp313-win32.whl", hash = "sha256:f53d492307962561ac7de4cd1de3e363589b000ab69617c6156a16ba7237998d", size = 222010, upload-time = "2026-02-09T12:57:37.25Z" }, + { url = "https://files.pythonhosted.org/packages/e2/0c/dbfafbe90a185943dcfbc766fe0e1909f658811492d79b741523a414a6cc/coverage-7.13.4-cp313-cp313-win_amd64.whl", hash = "sha256:e6f70dec1cc557e52df5306d051ef56003f74d56e9c4dd7ddb07e07ef32a84dd", size = 222818, upload-time = "2026-02-09T12:57:38.734Z" }, + { url = "https://files.pythonhosted.org/packages/04/d1/934918a138c932c90d78301f45f677fb05c39a3112b96fd2c8e60503cdc7/coverage-7.13.4-cp313-cp313-win_arm64.whl", hash = "sha256:fb07dc5da7e849e2ad31a5d74e9bece81f30ecf5a42909d0a695f8bd1874d6af", size = 221438, upload-time = "2026-02-09T12:57:40.223Z" }, + { url = "https://files.pythonhosted.org/packages/52/57/ee93ced533bcb3e6df961c0c6e42da2fc6addae53fb95b94a89b1e33ebd7/coverage-7.13.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:40d74da8e6c4b9ac18b15331c4b5ebc35a17069410cad462ad4f40dcd2d50c0d", size = 220165, upload-time = "2026-02-09T12:57:41.639Z" }, + { url = "https://files.pythonhosted.org/packages/c5/e0/969fc285a6fbdda49d91af278488d904dcd7651b2693872f0ff94e40e84a/coverage-7.13.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4223b4230a376138939a9173f1bdd6521994f2aff8047fae100d6d94d50c5a12", size = 220516, upload-time = "2026-02-09T12:57:44.215Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b8/9531944e16267e2735a30a9641ff49671f07e8138ecf1ca13db9fd2560c7/coverage-7.13.4-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1d4be36a5114c499f9f1f9195e95ebf979460dbe2d88e6816ea202010ba1c34b", size = 261804, upload-time = "2026-02-09T12:57:45.989Z" }, + { url = "https://files.pythonhosted.org/packages/8a/f3/e63df6d500314a2a60390d1989240d5f27318a7a68fa30ad3806e2a9323e/coverage-7.13.4-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:200dea7d1e8095cc6e98cdabe3fd1d21ab17d3cee6dab00cadbb2fe35d9c15b9", size = 263885, upload-time = "2026-02-09T12:57:47.42Z" }, + { url = "https://files.pythonhosted.org/packages/f3/67/7654810de580e14b37670b60a09c599fa348e48312db5b216d730857ffe6/coverage-7.13.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8eb931ee8e6d8243e253e5ed7336deea6904369d2fd8ae6e43f68abbf167092", size = 266308, upload-time = "2026-02-09T12:57:49.345Z" }, + { url = "https://files.pythonhosted.org/packages/37/6f/39d41eca0eab3cc82115953ad41c4e77935286c930e8fad15eaed1389d83/coverage-7.13.4-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:75eab1ebe4f2f64d9509b984f9314d4aa788540368218b858dad56dc8f3e5eb9", size = 267452, upload-time = "2026-02-09T12:57:50.811Z" }, + { url = "https://files.pythonhosted.org/packages/50/6d/39c0fbb8fc5cd4d2090811e553c2108cf5112e882f82505ee7495349a6bf/coverage-7.13.4-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c35eb28c1d085eb7d8c9b3296567a1bebe03ce72962e932431b9a61f28facf26", size = 261057, upload-time = "2026-02-09T12:57:52.447Z" }, + { url = "https://files.pythonhosted.org/packages/a4/a2/60010c669df5fa603bb5a97fb75407e191a846510da70ac657eb696b7fce/coverage-7.13.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb88b316ec33760714a4720feb2816a3a59180fd58c1985012054fa7aebee4c2", size = 263875, upload-time = "2026-02-09T12:57:53.938Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d9/63b22a6bdbd17f1f96e9ed58604c2a6b0e72a9133e37d663bef185877cf6/coverage-7.13.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7d41eead3cc673cbd38a4417deb7fd0b4ca26954ff7dc6078e33f6ff97bed940", size = 261500, upload-time = "2026-02-09T12:57:56.012Z" }, + { url = "https://files.pythonhosted.org/packages/70/bf/69f86ba1ad85bc3ad240e4c0e57a2e620fbc0e1645a47b5c62f0e941ad7f/coverage-7.13.4-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:fb26a934946a6afe0e326aebe0730cdff393a8bc0bbb65a2f41e30feddca399c", size = 265212, upload-time = "2026-02-09T12:57:57.5Z" }, + { url = "https://files.pythonhosted.org/packages/ae/f2/5f65a278a8c2148731831574c73e42f57204243d33bedaaf18fa79c5958f/coverage-7.13.4-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:dae88bc0fc77edaa65c14be099bd57ee140cf507e6bfdeea7938457ab387efb0", size = 260398, upload-time = "2026-02-09T12:57:59.027Z" }, + { url = "https://files.pythonhosted.org/packages/ef/80/6e8280a350ee9fea92f14b8357448a242dcaa243cb2c72ab0ca591f66c8c/coverage-7.13.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:845f352911777a8e722bfce168958214951e07e47e5d5d9744109fa5fe77f79b", size = 262584, upload-time = "2026-02-09T12:58:01.129Z" }, + { url = "https://files.pythonhosted.org/packages/22/63/01ff182fc95f260b539590fb12c11ad3e21332c15f9799cb5e2386f71d9f/coverage-7.13.4-cp313-cp313t-win32.whl", hash = "sha256:2fa8d5f8de70688a28240de9e139fa16b153cc3cbb01c5f16d88d6505ebdadf9", size = 222688, upload-time = "2026-02-09T12:58:02.736Z" }, + { url = "https://files.pythonhosted.org/packages/a9/43/89de4ef5d3cd53b886afa114065f7e9d3707bdb3e5efae13535b46ae483d/coverage-7.13.4-cp313-cp313t-win_amd64.whl", hash = "sha256:9351229c8c8407645840edcc277f4a2d44814d1bc34a2128c11c2a031d45a5dd", size = 223746, upload-time = "2026-02-09T12:58:05.362Z" }, + { url = "https://files.pythonhosted.org/packages/35/39/7cf0aa9a10d470a5309b38b289b9bb07ddeac5d61af9b664fe9775a4cb3e/coverage-7.13.4-cp313-cp313t-win_arm64.whl", hash = "sha256:30b8d0512f2dc8c8747557e8fb459d6176a2c9e5731e2b74d311c03b78451997", size = 222003, upload-time = "2026-02-09T12:58:06.952Z" }, + { url = "https://files.pythonhosted.org/packages/92/11/a9cf762bb83386467737d32187756a42094927150c3e107df4cb078e8590/coverage-7.13.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:300deaee342f90696ed186e3a00c71b5b3d27bffe9e827677954f4ee56969601", size = 219522, upload-time = "2026-02-09T12:58:08.623Z" }, + { url = "https://files.pythonhosted.org/packages/d3/28/56e6d892b7b052236d67c95f1936b6a7cf7c3e2634bf27610b8cbd7f9c60/coverage-7.13.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:29e3220258d682b6226a9b0925bc563ed9a1ebcff3cad30f043eceea7eaf2689", size = 219855, upload-time = "2026-02-09T12:58:10.176Z" }, + { url = "https://files.pythonhosted.org/packages/e5/69/233459ee9eb0c0d10fcc2fe425a029b3fa5ce0f040c966ebce851d030c70/coverage-7.13.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:391ee8f19bef69210978363ca930f7328081c6a0152f1166c91f0b5fdd2a773c", size = 250887, upload-time = "2026-02-09T12:58:12.503Z" }, + { url = "https://files.pythonhosted.org/packages/06/90/2cdab0974b9b5bbc1623f7876b73603aecac11b8d95b85b5b86b32de5eab/coverage-7.13.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0dd7ab8278f0d58a0128ba2fca25824321f05d059c1441800e934ff2efa52129", size = 253396, upload-time = "2026-02-09T12:58:14.615Z" }, + { url = "https://files.pythonhosted.org/packages/ac/15/ea4da0f85bf7d7b27635039e649e99deb8173fe551096ea15017f7053537/coverage-7.13.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:78cdf0d578b15148b009ccf18c686aa4f719d887e76e6b40c38ffb61d264a552", size = 254745, upload-time = "2026-02-09T12:58:16.162Z" }, + { url = "https://files.pythonhosted.org/packages/99/11/bb356e86920c655ca4d61daee4e2bbc7258f0a37de0be32d233b561134ff/coverage-7.13.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:48685fee12c2eb3b27c62f2658e7ea21e9c3239cba5a8a242801a0a3f6a8c62a", size = 257055, upload-time = "2026-02-09T12:58:17.892Z" }, + { url = "https://files.pythonhosted.org/packages/c9/0f/9ae1f8cb17029e09da06ca4e28c9e1d5c1c0a511c7074592e37e0836c915/coverage-7.13.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4e83efc079eb39480e6346a15a1bcb3e9b04759c5202d157e1dd4303cd619356", size = 250911, upload-time = "2026-02-09T12:58:19.495Z" }, + { url = "https://files.pythonhosted.org/packages/89/3a/adfb68558fa815cbc29747b553bc833d2150228f251b127f1ce97e48547c/coverage-7.13.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ecae9737b72408d6a950f7e525f30aca12d4bd8dd95e37342e5beb3a2a8c4f71", size = 252754, upload-time = "2026-02-09T12:58:21.064Z" }, + { url = "https://files.pythonhosted.org/packages/32/b1/540d0c27c4e748bd3cd0bd001076ee416eda993c2bae47a73b7cc9357931/coverage-7.13.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ae4578f8528569d3cf303fef2ea569c7f4c4059a38c8667ccef15c6e1f118aa5", size = 250720, upload-time = "2026-02-09T12:58:22.622Z" }, + { url = "https://files.pythonhosted.org/packages/c7/95/383609462b3ffb1fe133014a7c84fc0dd01ed55ac6140fa1093b5af7ebb1/coverage-7.13.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:6fdef321fdfbb30a197efa02d48fcd9981f0d8ad2ae8903ac318adc653f5df98", size = 254994, upload-time = "2026-02-09T12:58:24.548Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ba/1761138e86c81680bfc3c49579d66312865457f9fe405b033184e5793cb3/coverage-7.13.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b0f6ccf3dbe577170bebfce1318707d0e8c3650003cb4b3a9dd744575daa8b5", size = 250531, upload-time = "2026-02-09T12:58:26.271Z" }, + { url = "https://files.pythonhosted.org/packages/f8/8e/05900df797a9c11837ab59c4d6fe94094e029582aab75c3309a93e6fb4e3/coverage-7.13.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75fcd519f2a5765db3f0e391eb3b7d150cce1a771bf4c9f861aeab86c767a3c0", size = 252189, upload-time = "2026-02-09T12:58:27.807Z" }, + { url = "https://files.pythonhosted.org/packages/00/bd/29c9f2db9ea4ed2738b8a9508c35626eb205d51af4ab7bf56a21a2e49926/coverage-7.13.4-cp314-cp314-win32.whl", hash = "sha256:8e798c266c378da2bd819b0677df41ab46d78065fb2a399558f3f6cae78b2fbb", size = 222258, upload-time = "2026-02-09T12:58:29.441Z" }, + { url = "https://files.pythonhosted.org/packages/a7/4d/1f8e723f6829977410efeb88f73673d794075091c8c7c18848d273dc9d73/coverage-7.13.4-cp314-cp314-win_amd64.whl", hash = "sha256:245e37f664d89861cf2329c9afa2c1fe9e6d4e1a09d872c947e70718aeeac505", size = 223073, upload-time = "2026-02-09T12:58:31.026Z" }, + { url = "https://files.pythonhosted.org/packages/51/5b/84100025be913b44e082ea32abcf1afbf4e872f5120b7a1cab1d331b1e13/coverage-7.13.4-cp314-cp314-win_arm64.whl", hash = "sha256:ad27098a189e5838900ce4c2a99f2fe42a0bf0c2093c17c69b45a71579e8d4a2", size = 221638, upload-time = "2026-02-09T12:58:32.599Z" }, + { url = "https://files.pythonhosted.org/packages/a7/e4/c884a405d6ead1370433dad1e3720216b4f9fd8ef5b64bfd984a2a60a11a/coverage-7.13.4-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:85480adfb35ffc32d40918aad81b89c69c9cc5661a9b8a81476d3e645321a056", size = 220246, upload-time = "2026-02-09T12:58:34.181Z" }, + { url = "https://files.pythonhosted.org/packages/81/5c/4d7ed8b23b233b0fffbc9dfec53c232be2e695468523242ea9fd30f97ad2/coverage-7.13.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:79be69cf7f3bf9b0deeeb062eab7ac7f36cd4cc4c4dd694bd28921ba4d8596cc", size = 220514, upload-time = "2026-02-09T12:58:35.704Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6f/3284d4203fd2f28edd73034968398cd2d4cb04ab192abc8cff007ea35679/coverage-7.13.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:caa421e2684e382c5d8973ac55e4f36bed6821a9bad5c953494de960c74595c9", size = 261877, upload-time = "2026-02-09T12:58:37.864Z" }, + { url = "https://files.pythonhosted.org/packages/09/aa/b672a647bbe1556a85337dc95bfd40d146e9965ead9cc2fe81bde1e5cbce/coverage-7.13.4-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:14375934243ee05f56c45393fe2ce81fe5cc503c07cee2bdf1725fb8bef3ffaf", size = 264004, upload-time = "2026-02-09T12:58:39.492Z" }, + { url = "https://files.pythonhosted.org/packages/79/a1/aa384dbe9181f98bba87dd23dda436f0c6cf2e148aecbb4e50fc51c1a656/coverage-7.13.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25a41c3104d08edb094d9db0d905ca54d0cd41c928bb6be3c4c799a54753af55", size = 266408, upload-time = "2026-02-09T12:58:41.852Z" }, + { url = "https://files.pythonhosted.org/packages/53/5e/5150bf17b4019bc600799f376bb9606941e55bd5a775dc1e096b6ffea952/coverage-7.13.4-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6f01afcff62bf9a08fb32b2c1d6e924236c0383c02c790732b6537269e466a72", size = 267544, upload-time = "2026-02-09T12:58:44.093Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ed/f1de5c675987a4a7a672250d2c5c9d73d289dbf13410f00ed7181d8017dd/coverage-7.13.4-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:eb9078108fbf0bcdde37c3f4779303673c2fa1fe8f7956e68d447d0dd426d38a", size = 260980, upload-time = "2026-02-09T12:58:45.721Z" }, + { url = "https://files.pythonhosted.org/packages/b3/e3/fe758d01850aa172419a6743fe76ba8b92c29d181d4f676ffe2dae2ba631/coverage-7.13.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0e086334e8537ddd17e5f16a344777c1ab8194986ec533711cbe6c41cde841b6", size = 263871, upload-time = "2026-02-09T12:58:47.334Z" }, + { url = "https://files.pythonhosted.org/packages/b6/76/b829869d464115e22499541def9796b25312b8cf235d3bb00b39f1675395/coverage-7.13.4-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:725d985c5ab621268b2edb8e50dfe57633dc69bda071abc470fed55a14935fd3", size = 261472, upload-time = "2026-02-09T12:58:48.995Z" }, + { url = "https://files.pythonhosted.org/packages/14/9e/caedb1679e73e2f6ad240173f55218488bfe043e38da577c4ec977489915/coverage-7.13.4-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:3c06f0f1337c667b971ca2f975523347e63ec5e500b9aa5882d91931cd3ef750", size = 265210, upload-time = "2026-02-09T12:58:51.178Z" }, + { url = "https://files.pythonhosted.org/packages/3a/10/0dd02cb009b16ede425b49ec344aba13a6ae1dc39600840ea6abcb085ac4/coverage-7.13.4-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:590c0ed4bf8e85f745e6b805b2e1c457b2e33d5255dd9729743165253bc9ad39", size = 260319, upload-time = "2026-02-09T12:58:53.081Z" }, + { url = "https://files.pythonhosted.org/packages/92/8e/234d2c927af27c6d7a5ffad5bd2cf31634c46a477b4c7adfbfa66baf7ebb/coverage-7.13.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:eb30bf180de3f632cd043322dad5751390e5385108b2807368997d1a92a509d0", size = 262638, upload-time = "2026-02-09T12:58:55.258Z" }, + { url = "https://files.pythonhosted.org/packages/2f/64/e5547c8ff6964e5965c35a480855911b61509cce544f4d442caa759a0702/coverage-7.13.4-cp314-cp314t-win32.whl", hash = "sha256:c4240e7eded42d131a2d2c4dec70374b781b043ddc79a9de4d55ca71f8e98aea", size = 223040, upload-time = "2026-02-09T12:58:56.936Z" }, + { url = "https://files.pythonhosted.org/packages/c7/96/38086d58a181aac86d503dfa9c47eb20715a79c3e3acbdf786e92e5c09a8/coverage-7.13.4-cp314-cp314t-win_amd64.whl", hash = "sha256:4c7d3cc01e7350f2f0f6f7036caaf5673fb56b6998889ccfe9e1c1fe75a9c932", size = 224148, upload-time = "2026-02-09T12:58:58.645Z" }, + { url = "https://files.pythonhosted.org/packages/ce/72/8d10abd3740a0beb98c305e0c3faf454366221c0f37a8bcf8f60020bb65a/coverage-7.13.4-cp314-cp314t-win_arm64.whl", hash = "sha256:23e3f687cf945070d1c90f85db66d11e3025665d8dafa831301a0e0038f3db9b", size = 222172, upload-time = "2026-02-09T12:59:00.396Z" }, + { url = "https://files.pythonhosted.org/packages/0d/4a/331fe2caf6799d591109bb9c08083080f6de90a823695d412a935622abb2/coverage-7.13.4-py3-none-any.whl", hash = "sha256:1af1641e57cf7ba1bd67d677c9abdbcd6cc2ab7da3bca7fa1e2b7e50e65f2ad0", size = 211242, upload-time = "2026-02-09T12:59:02.032Z" }, ] [[package]] name = "debugpy" -version = "1.8.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ce/b3/05c94639560cf0eaef33662ee5102d3e2a8b9e8c527c53190bf7187bacdb/debugpy-1.8.6.zip", hash = "sha256:c931a9371a86784cee25dec8d65bc2dc7a21f3f1552e3833d9ef8f919d22280a", size = 4956612, upload-time = "2024-09-24T20:41:47.02Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/ce/5e093945df2da28dbd1bc14c631d71431d1aa08adc629e221c9658841f82/debugpy-1.8.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:30f467c5345d9dfdcc0afdb10e018e47f092e383447500f125b4e013236bf14b", size = 2089048, upload-time = "2024-09-24T20:41:49.274Z" }, - { url = "https://files.pythonhosted.org/packages/d4/7a/a5fe4eaf648016a27a875403735a089ba7cc9a4cc906d37c8fdb2997b50d/debugpy-1.8.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d73d8c52614432f4215d0fe79a7e595d0dd162b5c15233762565be2f014803b", size = 3547450, upload-time = "2024-09-24T20:41:51.338Z" }, - { url = "https://files.pythonhosted.org/packages/bf/fe/53d6d46e4a1cb5fb1a979695a9a26c8a04aed6d6ce4ba808a6d42341beba/debugpy-1.8.6-cp310-cp310-win32.whl", hash = "sha256:e3e182cd98eac20ee23a00653503315085b29ab44ed66269482349d307b08df9", size = 5151732, upload-time = "2024-09-24T20:41:53.458Z" }, - { url = "https://files.pythonhosted.org/packages/ce/68/127cfc6012fbeef126eab1e168ad788ee9832b8b0d572743e5c6fa03ea83/debugpy-1.8.6-cp310-cp310-win_amd64.whl", hash = "sha256:e3a82da039cfe717b6fb1886cbbe5c4a3f15d7df4765af857f4307585121c2dd", size = 5183983, upload-time = "2024-09-24T20:41:55.01Z" }, - { url = "https://files.pythonhosted.org/packages/9f/cc/3158aa2c96c677e324981230dfd33087ef4bfb5afb1d9cd40b7a1b35edb2/debugpy-1.8.6-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:67479a94cf5fd2c2d88f9615e087fcb4fec169ec780464a3f2ba4a9a2bb79955", size = 2203403, upload-time = "2024-09-24T20:41:56.625Z" }, - { url = "https://files.pythonhosted.org/packages/d5/9f/5691af62c556392ee45ed9b5c3fde4aaa7cb3b519cc8bea92fc27eab31fc/debugpy-1.8.6-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fb8653f6cbf1dd0a305ac1aa66ec246002145074ea57933978346ea5afdf70b", size = 3120088, upload-time = "2024-09-24T20:41:58.324Z" }, - { url = "https://files.pythonhosted.org/packages/5e/3e/e32b36f9a391af4f8ff6b9c068ee822b5e4aa2d9cf4dc0937696e9249fa6/debugpy-1.8.6-cp311-cp311-win32.whl", hash = "sha256:cdaf0b9691879da2d13fa39b61c01887c34558d1ff6e5c30e2eb698f5384cd43", size = 5077329, upload-time = "2024-09-24T20:42:00.081Z" }, - { url = "https://files.pythonhosted.org/packages/9d/de/ddad801b7fdbe2f97c744b44bb61169c4e0ab48a90f881c8f43b463f206b/debugpy-1.8.6-cp311-cp311-win_amd64.whl", hash = "sha256:43996632bee7435583952155c06881074b9a742a86cee74e701d87ca532fe833", size = 5101373, upload-time = "2024-09-24T20:42:01.685Z" }, - { url = "https://files.pythonhosted.org/packages/b8/9e/882dae43f281fc4742fd9e5d2e0f5dae77f38d4f345e78bf1ed5e1f6202e/debugpy-1.8.6-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:db891b141fc6ee4b5fc6d1cc8035ec329cabc64bdd2ae672b4550c87d4ecb128", size = 2526807, upload-time = "2024-09-24T20:42:03.313Z" }, - { url = "https://files.pythonhosted.org/packages/77/cf/6c0497f4b092cb4a408dda5ab84750032e5535f994d21eb812086d62094d/debugpy-1.8.6-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:567419081ff67da766c898ccf21e79f1adad0e321381b0dfc7a9c8f7a9347972", size = 4162582, upload-time = "2024-09-24T20:42:04.816Z" }, - { url = "https://files.pythonhosted.org/packages/8e/66/e9c0aef0a5118aeaa6dfccb6d4f388602271cfb37c689da5e7b6168075d2/debugpy-1.8.6-cp312-cp312-win32.whl", hash = "sha256:c9834dfd701a1f6bf0f7f0b8b1573970ae99ebbeee68314116e0ccc5c78eea3c", size = 5193541, upload-time = "2024-09-24T20:42:06.768Z" }, - { url = "https://files.pythonhosted.org/packages/c2/97/2196c4132c29f7cd8e574bb05a4b03ed35f94e3fcd1f56e72ea9f10732f4/debugpy-1.8.6-cp312-cp312-win_amd64.whl", hash = "sha256:e4ce0570aa4aca87137890d23b86faeadf184924ad892d20c54237bcaab75d8f", size = 5233374, upload-time = "2024-09-24T20:42:08.364Z" }, - { url = "https://files.pythonhosted.org/packages/b9/db/1fcb9b0cd12cd417fecaab545df7d3c77793092adbe614c51b8352904e85/debugpy-1.8.6-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:df5dc9eb4ca050273b8e374a4cd967c43be1327eeb42bfe2f58b3cdfe7c68dcb", size = 2090260, upload-time = "2024-09-24T20:42:10.467Z" }, - { url = "https://files.pythonhosted.org/packages/dd/07/301ab6ce54793213eef5f85f86fd0f0c7b3579d204149405ffdb7e5c67db/debugpy-1.8.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a85707c6a84b0c5b3db92a2df685b5230dd8fb8c108298ba4f11dba157a615a", size = 3617517, upload-time = "2024-09-24T20:42:12.942Z" }, - { url = "https://files.pythonhosted.org/packages/73/f9/934930dd49ed8f5660fe0c39fded7a5b180eabc6db03e49d9243ce316f1a/debugpy-1.8.6-cp38-cp38-win32.whl", hash = "sha256:538c6cdcdcdad310bbefd96d7850be1cd46e703079cc9e67d42a9ca776cdc8a8", size = 5156468, upload-time = "2024-09-24T20:42:14.47Z" }, - { url = "https://files.pythonhosted.org/packages/e0/19/fa925b305b4c1766ec20ee1c6301fc16a40fb7affba0a0d3d1d12248ef3d/debugpy-1.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:22140bc02c66cda6053b6eb56dfe01bbe22a4447846581ba1dd6df2c9f97982d", size = 5189752, upload-time = "2024-09-24T20:42:16.444Z" }, - { url = "https://files.pythonhosted.org/packages/e4/61/38fa2e907aae3a293e887b04045e4d30f931aafc462b207f4cb846e78c13/debugpy-1.8.6-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:c1cef65cffbc96e7b392d9178dbfd524ab0750da6c0023c027ddcac968fd1caa", size = 2090326, upload-time = "2024-09-24T20:42:18.293Z" }, - { url = "https://files.pythonhosted.org/packages/39/b0/9790509ffeee155038f9707b74d031ed90a17552fe6a63e9069c9c42e0d9/debugpy-1.8.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1e60bd06bb3cc5c0e957df748d1fab501e01416c43a7bdc756d2a992ea1b881", size = 3544122, upload-time = "2024-09-24T20:42:19.751Z" }, - { url = "https://files.pythonhosted.org/packages/7a/a1/d95a015eadf79997cdd2028a5fe3d1f37fbe2548b51470517d3d425960dc/debugpy-1.8.6-cp39-cp39-win32.whl", hash = "sha256:f7158252803d0752ed5398d291dee4c553bb12d14547c0e1843ab74ee9c31123", size = 5152549, upload-time = "2024-09-24T20:42:21.622Z" }, - { url = "https://files.pythonhosted.org/packages/81/6a/32e2c9e980924f3c4b1b644a5c3d949d05fa7b445673ecf3e3244c883669/debugpy-1.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:3358aa619a073b620cd0d51d8a6176590af24abcc3fe2e479929a154bf591b51", size = 5185080, upload-time = "2024-09-24T20:42:24.016Z" }, - { url = "https://files.pythonhosted.org/packages/05/ce/785925e87ce735cc3da7fb2bd66d8ca83173d8a0b60ce35a59a60b8d636f/debugpy-1.8.6-py2.py3-none-any.whl", hash = "sha256:b48892df4d810eff21d3ef37274f4c60d32cdcafc462ad5647239036b0f0649f", size = 5209208, upload-time = "2024-09-24T20:42:25.652Z" }, +version = "1.8.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/b7/cd8080344452e4874aae67c40d8940e2b4d47b01601a8fd9f44786c757c7/debugpy-1.8.20.tar.gz", hash = "sha256:55bc8701714969f1ab89a6d5f2f3d40c36f91b2cbe2f65d98bf8196f6a6a2c33", size = 1645207, upload-time = "2026-01-29T23:03:28.199Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/be/8bd693a0b9d53d48c8978fa5d889e06f3b5b03e45fd1ea1e78267b4887cb/debugpy-1.8.20-cp310-cp310-macosx_15_0_x86_64.whl", hash = "sha256:157e96ffb7f80b3ad36d808646198c90acb46fdcfd8bb1999838f0b6f2b59c64", size = 2099192, upload-time = "2026-01-29T23:03:29.707Z" }, + { url = "https://files.pythonhosted.org/packages/77/1b/85326d07432086a06361d493d2743edd0c4fc2ef62162be7f8618441ac37/debugpy-1.8.20-cp310-cp310-manylinux_2_34_x86_64.whl", hash = "sha256:c1178ae571aff42e61801a38b007af504ec8e05fde1c5c12e5a7efef21009642", size = 3088568, upload-time = "2026-01-29T23:03:31.467Z" }, + { url = "https://files.pythonhosted.org/packages/e8/60/3e08462ee3eccd10998853eb35947c416e446bfe2bc37dbb886b9044586c/debugpy-1.8.20-cp310-cp310-win32.whl", hash = "sha256:c29dd9d656c0fbd77906a6e6a82ae4881514aa3294b94c903ff99303e789b4a2", size = 5284399, upload-time = "2026-01-29T23:03:33.678Z" }, + { url = "https://files.pythonhosted.org/packages/72/43/09d49106e770fe558ced5e80df2e3c2ebee10e576eda155dcc5670473663/debugpy-1.8.20-cp310-cp310-win_amd64.whl", hash = "sha256:3ca85463f63b5dd0aa7aaa933d97cbc47c174896dcae8431695872969f981893", size = 5316388, upload-time = "2026-01-29T23:03:35.095Z" }, + { url = "https://files.pythonhosted.org/packages/51/56/c3baf5cbe4dd77427fd9aef99fcdade259ad128feeb8a786c246adb838e5/debugpy-1.8.20-cp311-cp311-macosx_15_0_universal2.whl", hash = "sha256:eada6042ad88fa1571b74bd5402ee8b86eded7a8f7b827849761700aff171f1b", size = 2208318, upload-time = "2026-01-29T23:03:36.481Z" }, + { url = "https://files.pythonhosted.org/packages/9a/7d/4fa79a57a8e69fe0d9763e98d1110320f9ecd7f1f362572e3aafd7417c9d/debugpy-1.8.20-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:7de0b7dfeedc504421032afba845ae2a7bcc32ddfb07dae2c3ca5442f821c344", size = 3171493, upload-time = "2026-01-29T23:03:37.775Z" }, + { url = "https://files.pythonhosted.org/packages/7d/f2/1e8f8affe51e12a26f3a8a8a4277d6e60aa89d0a66512f63b1e799d424a4/debugpy-1.8.20-cp311-cp311-win32.whl", hash = "sha256:773e839380cf459caf73cc533ea45ec2737a5cc184cf1b3b796cd4fd98504fec", size = 5209240, upload-time = "2026-01-29T23:03:39.109Z" }, + { url = "https://files.pythonhosted.org/packages/d5/92/1cb532e88560cbee973396254b21bece8c5d7c2ece958a67afa08c9f10dc/debugpy-1.8.20-cp311-cp311-win_amd64.whl", hash = "sha256:1f7650546e0eded1902d0f6af28f787fa1f1dbdbc97ddabaf1cd963a405930cb", size = 5233481, upload-time = "2026-01-29T23:03:40.659Z" }, + { url = "https://files.pythonhosted.org/packages/14/57/7f34f4736bfb6e00f2e4c96351b07805d83c9a7b33d28580ae01374430f7/debugpy-1.8.20-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:4ae3135e2089905a916909ef31922b2d733d756f66d87345b3e5e52b7a55f13d", size = 2550686, upload-time = "2026-01-29T23:03:42.023Z" }, + { url = "https://files.pythonhosted.org/packages/ab/78/b193a3975ca34458f6f0e24aaf5c3e3da72f5401f6054c0dfd004b41726f/debugpy-1.8.20-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:88f47850a4284b88bd2bfee1f26132147d5d504e4e86c22485dfa44b97e19b4b", size = 4310588, upload-time = "2026-01-29T23:03:43.314Z" }, + { url = "https://files.pythonhosted.org/packages/c1/55/f14deb95eaf4f30f07ef4b90a8590fc05d9e04df85ee379712f6fb6736d7/debugpy-1.8.20-cp312-cp312-win32.whl", hash = "sha256:4057ac68f892064e5f98209ab582abfee3b543fb55d2e87610ddc133a954d390", size = 5331372, upload-time = "2026-01-29T23:03:45.526Z" }, + { url = "https://files.pythonhosted.org/packages/a1/39/2bef246368bd42f9bd7cba99844542b74b84dacbdbea0833e610f384fee8/debugpy-1.8.20-cp312-cp312-win_amd64.whl", hash = "sha256:a1a8f851e7cf171330679ef6997e9c579ef6dd33c9098458bd9986a0f4ca52e3", size = 5372835, upload-time = "2026-01-29T23:03:47.245Z" }, + { url = "https://files.pythonhosted.org/packages/15/e2/fc500524cc6f104a9d049abc85a0a8b3f0d14c0a39b9c140511c61e5b40b/debugpy-1.8.20-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:5dff4bb27027821fdfcc9e8f87309a28988231165147c31730128b1c983e282a", size = 2539560, upload-time = "2026-01-29T23:03:48.738Z" }, + { url = "https://files.pythonhosted.org/packages/90/83/fb33dcea789ed6018f8da20c5a9bc9d82adc65c0c990faed43f7c955da46/debugpy-1.8.20-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:84562982dd7cf5ebebfdea667ca20a064e096099997b175fe204e86817f64eaf", size = 4293272, upload-time = "2026-01-29T23:03:50.169Z" }, + { url = "https://files.pythonhosted.org/packages/a6/25/b1e4a01bfb824d79a6af24b99ef291e24189080c93576dfd9b1a2815cd0f/debugpy-1.8.20-cp313-cp313-win32.whl", hash = "sha256:da11dea6447b2cadbf8ce2bec59ecea87cc18d2c574980f643f2d2dfe4862393", size = 5331208, upload-time = "2026-01-29T23:03:51.547Z" }, + { url = "https://files.pythonhosted.org/packages/13/f7/a0b368ce54ffff9e9028c098bd2d28cfc5b54f9f6c186929083d4c60ba58/debugpy-1.8.20-cp313-cp313-win_amd64.whl", hash = "sha256:eb506e45943cab2efb7c6eafdd65b842f3ae779f020c82221f55aca9de135ed7", size = 5372930, upload-time = "2026-01-29T23:03:53.585Z" }, + { url = "https://files.pythonhosted.org/packages/33/2e/f6cb9a8a13f5058f0a20fe09711a7b726232cd5a78c6a7c05b2ec726cff9/debugpy-1.8.20-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:9c74df62fc064cd5e5eaca1353a3ef5a5d50da5eb8058fcef63106f7bebe6173", size = 2538066, upload-time = "2026-01-29T23:03:54.999Z" }, + { url = "https://files.pythonhosted.org/packages/c5/56/6ddca50b53624e1ca3ce1d1e49ff22db46c47ea5fb4c0cc5c9b90a616364/debugpy-1.8.20-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:077a7447589ee9bc1ff0cdf443566d0ecf540ac8aa7333b775ebcb8ce9f4ecad", size = 4269425, upload-time = "2026-01-29T23:03:56.518Z" }, + { url = "https://files.pythonhosted.org/packages/c5/d9/d64199c14a0d4c476df46c82470a3ce45c8d183a6796cfb5e66533b3663c/debugpy-1.8.20-cp314-cp314-win32.whl", hash = "sha256:352036a99dd35053b37b7803f748efc456076f929c6a895556932eaf2d23b07f", size = 5331407, upload-time = "2026-01-29T23:03:58.481Z" }, + { url = "https://files.pythonhosted.org/packages/e0/d9/1f07395b54413432624d61524dfd98c1a7c7827d2abfdb8829ac92638205/debugpy-1.8.20-cp314-cp314-win_amd64.whl", hash = "sha256:a98eec61135465b062846112e5ecf2eebb855305acc1dfbae43b72903b8ab5be", size = 5372521, upload-time = "2026-01-29T23:03:59.864Z" }, + { url = "https://files.pythonhosted.org/packages/e0/c3/7f67dea8ccf8fdcb9c99033bbe3e90b9e7395415843accb81428c441be2d/debugpy-1.8.20-py2.py3-none-any.whl", hash = "sha256:5be9bed9ae3be00665a06acaa48f8329d2b9632f15fd09f6a9a8c8d9907e54d7", size = 5337658, upload-time = "2026-01-29T23:04:17.404Z" }, ] [[package]] name = "decorator" -version = "5.1.1" +version = "5.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/66/0c/8d907af351aa16b42caae42f9d6aa37b900c67308052d10fdce809f8d952/decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", size = 35016, upload-time = "2022-01-07T08:20:05.666Z" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d5/50/83c593b07763e1161326b3b8c6686f0f4b0f24d5526546bee538c89837d6/decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186", size = 9073, upload-time = "2022-01-07T08:20:03.734Z" }, + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, ] [[package]] name = "dnspython" -version = "2.6.1" +version = "2.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/37/7d/c871f55054e403fdfd6b8f65fd6d1c4e147ed100d3e9f9ba1fe695403939/dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc", size = 332727, upload-time = "2024-02-18T18:48:48.952Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/8b/57666417c0f90f08bcafa776861060426765fdb422eb10212086fb811d26/dnspython-2.8.0.tar.gz", hash = "sha256:181d3c6996452cb1189c4046c61599b84a5a86e099562ffde77d26984ff26d0f", size = 368251, upload-time = "2025-09-07T18:58:00.022Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/87/a1/8c5287991ddb8d3e4662f71356d9656d91ab3a36618c3dd11b280df0d255/dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50", size = 307696, upload-time = "2024-02-18T18:48:46.786Z" }, + { url = "https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl", hash = "sha256:01d9bbc4a2d76bf0db7c1f729812ded6d912bd318d3b1cf81d30c0f845dbf3af", size = 331094, upload-time = "2025-09-07T18:57:58.071Z" }, ] [[package]] name = "docutils" -version = "0.19" +version = "0.21.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/330ea8d383eb2ce973df34d1239b3b21e91cd8c865d21ff82902d952f91f/docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6", size = 2056383, upload-time = "2022-07-05T20:17:31.045Z" } +resolution-markers = [ + "python_full_version < '3.11'", +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", size = 2204444, upload-time = "2024-04-23T18:57:18.24Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/93/69/e391bd51bc08ed9141ecd899a0ddb61ab6465309f1eb470905c0c8868081/docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc", size = 570472, upload-time = "2022-07-05T20:17:26.388Z" }, + { url = "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", size = 587408, upload-time = "2024-04-23T18:57:14.835Z" }, ] [[package]] -name = "exceptiongroup" -version = "1.2.2" +name = "docutils" +version = "0.22.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883, upload-time = "2024-07-12T22:26:00.161Z" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/b6/03bb70946330e88ffec97aefd3ea75ba575cb2e762061e0e62a213befee8/docutils-0.22.4.tar.gz", hash = "sha256:4db53b1fde9abecbb74d91230d32ab626d94f6badfc575d6db9194a49df29968", size = 2291750, upload-time = "2025-12-18T19:00:26.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453, upload-time = "2024-07-12T22:25:58.476Z" }, + { url = "https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl", hash = "sha256:d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de", size = 633196, upload-time = "2025-12-18T19:00:18.077Z" }, ] [[package]] -name = "executing" -version = "2.1.0" +name = "exceptiongroup" +version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8c/e3/7d45f492c2c4a0e8e0fad57d081a7c8a0286cdd86372b070cca1ec0caa1e/executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab", size = 977485, upload-time = "2024-09-01T12:37:35.708Z" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/fd/afcd0496feca3276f509df3dbd5dae726fcc756f1a08d9e25abe1733f962/executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf", size = 25805, upload-time = "2024-09-01T12:37:33.007Z" }, + { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, ] [[package]] -name = "fastjsonschema" -version = "2.20.0" +name = "executing" +version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/03/3f/3ad5e7be13b4b8b55f4477141885ab2364f65d5f6ad5f7a9daffd634d066/fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23", size = 373056, upload-time = "2024-06-15T13:27:49.208Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488, upload-time = "2025-09-01T09:48:10.866Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/ca/086311cdfc017ec964b2436fe0c98c1f4efcb7e4c328956a22456e497655/fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a", size = 23543, upload-time = "2024-06-15T13:27:46.393Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317, upload-time = "2025-09-01T09:48:08.5Z" }, ] [[package]] -name = "googleapis-common-protos" -version = "1.65.0" +name = "fastjsonschema" +version = "2.21.2" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "protobuf" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/53/3b/1599ceafa875ffb951480c8c74f4b77646a6b80e80970698f2aa93c216ce/googleapis_common_protos-1.65.0.tar.gz", hash = "sha256:334a29d07cddc3aa01dee4988f9afd9b2916ee2ff49d6b757155dc0d197852c0", size = 113657, upload-time = "2024-08-27T16:16:54.012Z" } +sdist = { url = "https://files.pythonhosted.org/packages/20/b5/23b216d9d985a956623b6bd12d4086b60f0059b27799f23016af04a74ea1/fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de", size = 374130, upload-time = "2025-08-14T18:49:36.666Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/08/49bfe7cf737952cc1a9c43e80cc258ed45dad7f183c5b8276fc94cb3862d/googleapis_common_protos-1.65.0-py2.py3-none-any.whl", hash = "sha256:2972e6c496f435b92590fd54045060867f3fe9be2c82ab148fc8885035479a63", size = 220890, upload-time = "2024-08-27T16:16:52.675Z" }, + { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024, upload-time = "2025-08-14T18:49:34.776Z" }, ] [[package]] name = "greenlet" -version = "3.1.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2f/ff/df5fede753cc10f6a5be0931204ea30c35fa2f2ea7a35b25bdaf4fe40e46/greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467", size = 186022, upload-time = "2024-09-20T18:21:04.506Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/25/90/5234a78dc0ef6496a6eb97b67a42a8e96742a56f7dc808cb954a85390448/greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563", size = 271235, upload-time = "2024-09-20T17:07:18.761Z" }, - { url = "https://files.pythonhosted.org/packages/7c/16/cd631fa0ab7d06ef06387135b7549fdcc77d8d859ed770a0d28e47b20972/greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83", size = 637168, upload-time = "2024-09-20T17:36:43.774Z" }, - { url = "https://files.pythonhosted.org/packages/2f/b1/aed39043a6fec33c284a2c9abd63ce191f4f1a07319340ffc04d2ed3256f/greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0", size = 648826, upload-time = "2024-09-20T17:39:16.921Z" }, - { url = "https://files.pythonhosted.org/packages/fb/2f/3850b867a9af519794784a7eeed1dd5bc68ffbcc5b28cef703711025fd0a/greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc", size = 643295, upload-time = "2024-09-20T17:08:37.951Z" }, - { url = "https://files.pythonhosted.org/packages/cf/69/79e4d63b9387b48939096e25115b8af7cd8a90397a304f92436bcb21f5b2/greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617", size = 599544, upload-time = "2024-09-20T17:08:27.894Z" }, - { url = "https://files.pythonhosted.org/packages/46/1d/44dbcb0e6c323bd6f71b8c2f4233766a5faf4b8948873225d34a0b7efa71/greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7", size = 1125456, upload-time = "2024-09-20T17:44:11.755Z" }, - { url = "https://files.pythonhosted.org/packages/e0/1d/a305dce121838d0278cee39d5bb268c657f10a5363ae4b726848f833f1bb/greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6", size = 1149111, upload-time = "2024-09-20T17:09:22.104Z" }, - { url = "https://files.pythonhosted.org/packages/96/28/d62835fb33fb5652f2e98d34c44ad1a0feacc8b1d3f1aecab035f51f267d/greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80", size = 298392, upload-time = "2024-09-20T17:28:51.988Z" }, - { url = "https://files.pythonhosted.org/packages/28/62/1c2665558618553c42922ed47a4e6d6527e2fa3516a8256c2f431c5d0441/greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70", size = 272479, upload-time = "2024-09-20T17:07:22.332Z" }, - { url = "https://files.pythonhosted.org/packages/76/9d/421e2d5f07285b6e4e3a676b016ca781f63cfe4a0cd8eaecf3fd6f7a71ae/greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159", size = 640404, upload-time = "2024-09-20T17:36:45.588Z" }, - { url = "https://files.pythonhosted.org/packages/e5/de/6e05f5c59262a584e502dd3d261bbdd2c97ab5416cc9c0b91ea38932a901/greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e", size = 652813, upload-time = "2024-09-20T17:39:19.052Z" }, - { url = "https://files.pythonhosted.org/packages/15/85/72f77fc02d00470c86a5c982b8daafdf65d38aefbbe441cebff3bf7037fc/greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383", size = 647831, upload-time = "2024-09-20T17:08:40.577Z" }, - { url = "https://files.pythonhosted.org/packages/f7/4b/1c9695aa24f808e156c8f4813f685d975ca73c000c2a5056c514c64980f6/greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a", size = 602413, upload-time = "2024-09-20T17:08:31.728Z" }, - { url = "https://files.pythonhosted.org/packages/76/70/ad6e5b31ef330f03b12559d19fda2606a522d3849cde46b24f223d6d1619/greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511", size = 1129619, upload-time = "2024-09-20T17:44:14.222Z" }, - { url = "https://files.pythonhosted.org/packages/f4/fb/201e1b932e584066e0f0658b538e73c459b34d44b4bd4034f682423bc801/greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395", size = 1155198, upload-time = "2024-09-20T17:09:23.903Z" }, - { url = "https://files.pythonhosted.org/packages/12/da/b9ed5e310bb8b89661b80cbcd4db5a067903bbcd7fc854923f5ebb4144f0/greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39", size = 298930, upload-time = "2024-09-20T17:25:18.656Z" }, - { url = "https://files.pythonhosted.org/packages/7d/ec/bad1ac26764d26aa1353216fcbfa4670050f66d445448aafa227f8b16e80/greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d", size = 274260, upload-time = "2024-09-20T17:08:07.301Z" }, - { url = "https://files.pythonhosted.org/packages/66/d4/c8c04958870f482459ab5956c2942c4ec35cac7fe245527f1039837c17a9/greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79", size = 649064, upload-time = "2024-09-20T17:36:47.628Z" }, - { url = "https://files.pythonhosted.org/packages/51/41/467b12a8c7c1303d20abcca145db2be4e6cd50a951fa30af48b6ec607581/greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa", size = 663420, upload-time = "2024-09-20T17:39:21.258Z" }, - { url = "https://files.pythonhosted.org/packages/57/5c/7c6f50cb12be092e1dccb2599be5a942c3416dbcfb76efcf54b3f8be4d8d/greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36", size = 660105, upload-time = "2024-09-20T17:08:42.048Z" }, - { url = "https://files.pythonhosted.org/packages/f1/66/033e58a50fd9ec9df00a8671c74f1f3a320564c6415a4ed82a1c651654ba/greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9", size = 613077, upload-time = "2024-09-20T17:08:33.707Z" }, - { url = "https://files.pythonhosted.org/packages/19/c5/36384a06f748044d06bdd8776e231fadf92fc896bd12cb1c9f5a1bda9578/greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0", size = 1135975, upload-time = "2024-09-20T17:44:15.989Z" }, - { url = "https://files.pythonhosted.org/packages/38/f9/c0a0eb61bdf808d23266ecf1d63309f0e1471f284300ce6dac0ae1231881/greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942", size = 1163955, upload-time = "2024-09-20T17:09:25.539Z" }, - { url = "https://files.pythonhosted.org/packages/43/21/a5d9df1d21514883333fc86584c07c2b49ba7c602e670b174bd73cfc9c7f/greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01", size = 299655, upload-time = "2024-09-20T17:21:22.427Z" }, - { url = "https://files.pythonhosted.org/packages/f3/57/0db4940cd7bb461365ca8d6fd53e68254c9dbbcc2b452e69d0d41f10a85e/greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1", size = 272990, upload-time = "2024-09-20T17:08:26.312Z" }, - { url = "https://files.pythonhosted.org/packages/1c/ec/423d113c9f74e5e402e175b157203e9102feeb7088cee844d735b28ef963/greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff", size = 649175, upload-time = "2024-09-20T17:36:48.983Z" }, - { url = "https://files.pythonhosted.org/packages/a9/46/ddbd2db9ff209186b7b7c621d1432e2f21714adc988703dbdd0e65155c77/greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a", size = 663425, upload-time = "2024-09-20T17:39:22.705Z" }, - { url = "https://files.pythonhosted.org/packages/d9/42/b87bc2a81e3a62c3de2b0d550bf91a86939442b7ff85abb94eec3fc0e6aa/greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4", size = 660347, upload-time = "2024-09-20T17:08:45.56Z" }, - { url = "https://files.pythonhosted.org/packages/37/fa/71599c3fd06336cdc3eac52e6871cfebab4d9d70674a9a9e7a482c318e99/greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e", size = 615583, upload-time = "2024-09-20T17:08:36.85Z" }, - { url = "https://files.pythonhosted.org/packages/4e/96/e9ef85de031703ee7a4483489b40cf307f93c1824a02e903106f2ea315fe/greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1", size = 1133039, upload-time = "2024-09-20T17:44:18.287Z" }, - { url = "https://files.pythonhosted.org/packages/87/76/b2b6362accd69f2d1889db61a18c94bc743e961e3cab344c2effaa4b4a25/greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c", size = 1160716, upload-time = "2024-09-20T17:09:27.112Z" }, - { url = "https://files.pythonhosted.org/packages/1f/1b/54336d876186920e185066d8c3024ad55f21d7cc3683c856127ddb7b13ce/greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761", size = 299490, upload-time = "2024-09-20T17:17:09.501Z" }, - { url = "https://files.pythonhosted.org/packages/5f/17/bea55bf36990e1638a2af5ba10c1640273ef20f627962cf97107f1e5d637/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011", size = 643731, upload-time = "2024-09-20T17:36:50.376Z" }, - { url = "https://files.pythonhosted.org/packages/78/d2/aa3d2157f9ab742a08e0fd8f77d4699f37c22adfbfeb0c610a186b5f75e0/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13", size = 649304, upload-time = "2024-09-20T17:39:24.55Z" }, - { url = "https://files.pythonhosted.org/packages/05/79/e15408220bbb989469c8871062c97c6c9136770657ba779711b90870d867/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b", size = 642506, upload-time = "2024-09-20T17:08:47.852Z" }, - { url = "https://files.pythonhosted.org/packages/18/87/470e01a940307796f1d25f8167b551a968540fbe0551c0ebb853cb527dd6/greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822", size = 602753, upload-time = "2024-09-20T17:08:38.079Z" }, - { url = "https://files.pythonhosted.org/packages/e2/72/576815ba674eddc3c25028238f74d7b8068902b3968cbe456771b166455e/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01", size = 1122731, upload-time = "2024-09-20T17:44:20.556Z" }, - { url = "https://files.pythonhosted.org/packages/ac/38/08cc303ddddc4b3d7c628c3039a61a3aae36c241ed01393d00c2fd663473/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6", size = 1142112, upload-time = "2024-09-20T17:09:28.753Z" }, - { url = "https://files.pythonhosted.org/packages/97/83/bdf5f69fcf304065ec7cf8fc7c08248479cfed9bcca02bf0001c07e000aa/greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9", size = 271017, upload-time = "2024-09-20T17:08:54.806Z" }, - { url = "https://files.pythonhosted.org/packages/31/4a/2d4443adcb38e1e90e50c653a26b2be39998ea78ca1a4cf414dfdeb2e98b/greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111", size = 642888, upload-time = "2024-09-20T17:36:53.307Z" }, - { url = "https://files.pythonhosted.org/packages/5a/c9/b5d9ac1b932aa772dd1eb90a8a2b30dbd7ad5569dcb7fdac543810d206b4/greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81", size = 655451, upload-time = "2024-09-20T17:39:28.564Z" }, - { url = "https://files.pythonhosted.org/packages/a7/25/de419a2b22fa6e18ce3b2a5adb01d33ec7b2784530f76fa36ba43d8f0fac/greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8", size = 650661, upload-time = "2024-09-20T17:08:50.932Z" }, - { url = "https://files.pythonhosted.org/packages/d8/88/0ce16c0afb2d71d85562a7bcd9b092fec80a7767ab5b5f7e1bbbca8200f8/greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1", size = 605959, upload-time = "2024-09-20T17:08:43.376Z" }, - { url = "https://files.pythonhosted.org/packages/5a/10/39a417ad0afb0b7e5b150f1582cdeb9416f41f2e1df76018434dfac4a6cc/greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd", size = 1132341, upload-time = "2024-09-20T17:44:25.225Z" }, - { url = "https://files.pythonhosted.org/packages/9f/f5/e9b151ddd2ed0508b7a47bef7857e46218dbc3fd10e564617a3865abfaac/greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7", size = 1159409, upload-time = "2024-09-20T17:09:32.224Z" }, - { url = "https://files.pythonhosted.org/packages/86/97/2c86989ca4e0f089fbcdc9229c972a01ef53abdafd5ae89e0f3dcdcd4adb/greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef", size = 281126, upload-time = "2024-09-20T17:48:09.107Z" }, - { url = "https://files.pythonhosted.org/packages/d3/50/7b7a3e10ed82c760c1fd8d3167a7c95508e9fdfc0b0604f05ed1a9a9efdc/greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d", size = 298285, upload-time = "2024-09-20T17:37:05.007Z" }, - { url = "https://files.pythonhosted.org/packages/8c/82/8051e82af6d6b5150aacb6789a657a8afd48f0a44d8e91cb72aaaf28553a/greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3", size = 270027, upload-time = "2024-09-20T17:08:27.964Z" }, - { url = "https://files.pythonhosted.org/packages/f9/74/f66de2785880293780eebd18a2958aeea7cbe7814af1ccef634f4701f846/greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42", size = 634822, upload-time = "2024-09-20T17:36:54.764Z" }, - { url = "https://files.pythonhosted.org/packages/68/23/acd9ca6bc412b02b8aa755e47b16aafbe642dde0ad2f929f836e57a7949c/greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f", size = 646866, upload-time = "2024-09-20T17:39:30.2Z" }, - { url = "https://files.pythonhosted.org/packages/03/d3/1006543621f16689f6dc75f6bcf06e3c23e044c26fe391c16c253623313e/greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145", size = 641268, upload-time = "2024-09-20T17:08:52.469Z" }, - { url = "https://files.pythonhosted.org/packages/2f/c1/ad71ce1b5f61f900593377b3f77b39408bce5dc96754790311b49869e146/greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c", size = 597376, upload-time = "2024-09-20T17:08:46.096Z" }, - { url = "https://files.pythonhosted.org/packages/f7/ff/183226685b478544d61d74804445589e069d00deb8ddef042699733950c7/greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e", size = 1123359, upload-time = "2024-09-20T17:44:27.559Z" }, - { url = "https://files.pythonhosted.org/packages/c0/8b/9b3b85a89c22f55f315908b94cd75ab5fed5973f7393bbef000ca8b2c5c1/greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e", size = 1147458, upload-time = "2024-09-20T17:09:33.708Z" }, - { url = "https://files.pythonhosted.org/packages/b8/1c/248fadcecd1790b0ba793ff81fa2375c9ad6442f4c748bf2cc2e6563346a/greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c", size = 281131, upload-time = "2024-09-20T17:44:53.141Z" }, - { url = "https://files.pythonhosted.org/packages/ae/02/e7d0aef2354a38709b764df50b2b83608f0621493e47f47694eb80922822/greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22", size = 298306, upload-time = "2024-09-20T17:33:23.059Z" }, +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/51/1664f6b78fc6ebbd98019a1fd730e83fa78f2db7058f72b1463d3612b8db/greenlet-3.3.2.tar.gz", hash = "sha256:2eaf067fc6d886931c7962e8c6bede15d2f01965560f3359b27c80bde2d151f2", size = 188267, upload-time = "2026-02-20T20:54:15.531Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/3f/9859f655d11901e7b2996c6e3d33e0caa9a1d4572c3bc61ed0faa64b2f4c/greenlet-3.3.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9bc885b89709d901859cf95179ec9f6bb67a3d2bb1f0e88456461bd4b7f8fd0d", size = 277747, upload-time = "2026-02-20T20:16:21.325Z" }, + { url = "https://files.pythonhosted.org/packages/fb/07/cb284a8b5c6498dbd7cba35d31380bb123d7dceaa7907f606c8ff5993cbf/greenlet-3.3.2-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b568183cf65b94919be4438dc28416b234b678c608cafac8874dfeeb2a9bbe13", size = 579202, upload-time = "2026-02-20T20:47:28.955Z" }, + { url = "https://files.pythonhosted.org/packages/ed/45/67922992b3a152f726163b19f890a85129a992f39607a2a53155de3448b8/greenlet-3.3.2-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:527fec58dc9f90efd594b9b700662ed3fb2493c2122067ac9c740d98080a620e", size = 590620, upload-time = "2026-02-20T20:55:55.581Z" }, + { url = "https://files.pythonhosted.org/packages/ad/55/9f1ebb5a825215fadcc0f7d5073f6e79e3007e3282b14b22d6aba7ca6cb8/greenlet-3.3.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ad0c8917dd42a819fe77e6bdfcb84e3379c0de956469301d9fd36427a1ca501f", size = 591729, upload-time = "2026-02-20T20:20:58.395Z" }, + { url = "https://files.pythonhosted.org/packages/24/b4/21f5455773d37f94b866eb3cf5caed88d6cea6dd2c6e1f9c34f463cba3ec/greenlet-3.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:97245cc10e5515dbc8c3104b2928f7f02b6813002770cfaffaf9a6e0fc2b94ef", size = 1551946, upload-time = "2026-02-20T20:49:31.102Z" }, + { url = "https://files.pythonhosted.org/packages/00/68/91f061a926abead128fe1a87f0b453ccf07368666bd59ffa46016627a930/greenlet-3.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8c1fdd7d1b309ff0da81d60a9688a8bd044ac4e18b250320a96fc68d31c209ca", size = 1618494, upload-time = "2026-02-20T20:21:06.541Z" }, + { url = "https://files.pythonhosted.org/packages/ac/78/f93e840cbaef8becaf6adafbaf1319682a6c2d8c1c20224267a5c6c8c891/greenlet-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:5d0e35379f93a6d0222de929a25ab47b5eb35b5ef4721c2b9cbcc4036129ff1f", size = 230092, upload-time = "2026-02-20T20:17:09.379Z" }, + { url = "https://files.pythonhosted.org/packages/f3/47/16400cb42d18d7a6bb46f0626852c1718612e35dcb0dffa16bbaffdf5dd2/greenlet-3.3.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:c56692189a7d1c7606cb794be0a8381470d95c57ce5be03fb3d0ef57c7853b86", size = 278890, upload-time = "2026-02-20T20:19:39.263Z" }, + { url = "https://files.pythonhosted.org/packages/a3/90/42762b77a5b6aa96cd8c0e80612663d39211e8ae8a6cd47c7f1249a66262/greenlet-3.3.2-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ebd458fa8285960f382841da585e02201b53a5ec2bac6b156fc623b5ce4499f", size = 581120, upload-time = "2026-02-20T20:47:30.161Z" }, + { url = "https://files.pythonhosted.org/packages/bf/6f/f3d64f4fa0a9c7b5c5b3c810ff1df614540d5aa7d519261b53fba55d4df9/greenlet-3.3.2-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a443358b33c4ec7b05b79a7c8b466f5d275025e750298be7340f8fc63dff2a55", size = 594363, upload-time = "2026-02-20T20:55:56.965Z" }, + { url = "https://files.pythonhosted.org/packages/72/83/3e06a52aca8128bdd4dcd67e932b809e76a96ab8c232a8b025b2850264c5/greenlet-3.3.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8e2cd90d413acbf5e77ae41e5d3c9b3ac1d011a756d7284d7f3f2b806bbd6358", size = 594156, upload-time = "2026-02-20T20:20:59.955Z" }, + { url = "https://files.pythonhosted.org/packages/70/79/0de5e62b873e08fe3cef7dbe84e5c4bc0e8ed0c7ff131bccb8405cd107c8/greenlet-3.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:442b6057453c8cb29b4fb36a2ac689382fc71112273726e2423f7f17dc73bf99", size = 1554649, upload-time = "2026-02-20T20:49:32.293Z" }, + { url = "https://files.pythonhosted.org/packages/5a/00/32d30dee8389dc36d42170a9c66217757289e2afb0de59a3565260f38373/greenlet-3.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:45abe8eb6339518180d5a7fa47fa01945414d7cca5ecb745346fc6a87d2750be", size = 1619472, upload-time = "2026-02-20T20:21:07.966Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3a/efb2cf697fbccdf75b24e2c18025e7dfa54c4f31fab75c51d0fe79942cef/greenlet-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e692b2dae4cc7077cbb11b47d258533b48c8fde69a33d0d8a82e2fe8d8531d5", size = 230389, upload-time = "2026-02-20T20:17:18.772Z" }, + { url = "https://files.pythonhosted.org/packages/e1/a1/65bbc059a43a7e2143ec4fc1f9e3f673e04f9c7b371a494a101422ac4fd5/greenlet-3.3.2-cp311-cp311-win_arm64.whl", hash = "sha256:02b0a8682aecd4d3c6c18edf52bc8e51eacdd75c8eac52a790a210b06aa295fd", size = 229645, upload-time = "2026-02-20T20:18:18.695Z" }, + { url = "https://files.pythonhosted.org/packages/ea/ab/1608e5a7578e62113506740b88066bf09888322a311cff602105e619bd87/greenlet-3.3.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:ac8d61d4343b799d1e526db579833d72f23759c71e07181c2d2944e429eb09cd", size = 280358, upload-time = "2026-02-20T20:17:43.971Z" }, + { url = "https://files.pythonhosted.org/packages/a5/23/0eae412a4ade4e6623ff7626e38998cb9b11e9ff1ebacaa021e4e108ec15/greenlet-3.3.2-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ceec72030dae6ac0c8ed7591b96b70410a8be370b6a477b1dbc072856ad02bd", size = 601217, upload-time = "2026-02-20T20:47:31.462Z" }, + { url = "https://files.pythonhosted.org/packages/f8/16/5b1678a9c07098ecb9ab2dd159fafaf12e963293e61ee8d10ecb55273e5e/greenlet-3.3.2-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a2a5be83a45ce6188c045bcc44b0ee037d6a518978de9a5d97438548b953a1ac", size = 611792, upload-time = "2026-02-20T20:55:58.423Z" }, + { url = "https://files.pythonhosted.org/packages/50/1f/5155f55bd71cabd03765a4aac9ac446be129895271f73872c36ebd4b04b6/greenlet-3.3.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43e99d1749147ac21dde49b99c9abffcbc1e2d55c67501465ef0930d6e78e070", size = 613875, upload-time = "2026-02-20T20:21:01.102Z" }, + { url = "https://files.pythonhosted.org/packages/fc/dd/845f249c3fcd69e32df80cdab059b4be8b766ef5830a3d0aa9d6cad55beb/greenlet-3.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4c956a19350e2c37f2c48b336a3afb4bff120b36076d9d7fb68cb44e05d95b79", size = 1571467, upload-time = "2026-02-20T20:49:33.495Z" }, + { url = "https://files.pythonhosted.org/packages/2a/50/2649fe21fcc2b56659a452868e695634722a6655ba245d9f77f5656010bf/greenlet-3.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6c6f8ba97d17a1e7d664151284cb3315fc5f8353e75221ed4324f84eb162b395", size = 1640001, upload-time = "2026-02-20T20:21:09.154Z" }, + { url = "https://files.pythonhosted.org/packages/9b/40/cc802e067d02af8b60b6771cea7d57e21ef5e6659912814babb42b864713/greenlet-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:34308836d8370bddadb41f5a7ce96879b72e2fdfb4e87729330c6ab52376409f", size = 231081, upload-time = "2026-02-20T20:17:28.121Z" }, + { url = "https://files.pythonhosted.org/packages/58/2e/fe7f36ff1982d6b10a60d5e0740c759259a7d6d2e1dc41da6d96de32fff6/greenlet-3.3.2-cp312-cp312-win_arm64.whl", hash = "sha256:d3a62fa76a32b462a97198e4c9e99afb9ab375115e74e9a83ce180e7a496f643", size = 230331, upload-time = "2026-02-20T20:17:23.34Z" }, + { url = "https://files.pythonhosted.org/packages/ac/48/f8b875fa7dea7dd9b33245e37f065af59df6a25af2f9561efa8d822fde51/greenlet-3.3.2-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:aa6ac98bdfd716a749b84d4034486863fd81c3abde9aa3cf8eff9127981a4ae4", size = 279120, upload-time = "2026-02-20T20:19:01.9Z" }, + { url = "https://files.pythonhosted.org/packages/49/8d/9771d03e7a8b1ee456511961e1b97a6d77ae1dea4a34a5b98eee706689d3/greenlet-3.3.2-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab0c7e7901a00bc0a7284907273dc165b32e0d109a6713babd04471327ff7986", size = 603238, upload-time = "2026-02-20T20:47:32.873Z" }, + { url = "https://files.pythonhosted.org/packages/59/0e/4223c2bbb63cd5c97f28ffb2a8aee71bdfb30b323c35d409450f51b91e3e/greenlet-3.3.2-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d248d8c23c67d2291ffd47af766e2a3aa9fa1c6703155c099feb11f526c63a92", size = 614219, upload-time = "2026-02-20T20:55:59.817Z" }, + { url = "https://files.pythonhosted.org/packages/7a/34/259b28ea7a2a0c904b11cd36c79b8cef8019b26ee5dbe24e73b469dea347/greenlet-3.3.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b6997d360a4e6a4e936c0f9625b1c20416b8a0ea18a8e19cabbefc712e7397ab", size = 616774, upload-time = "2026-02-20T20:21:02.454Z" }, + { url = "https://files.pythonhosted.org/packages/0a/03/996c2d1689d486a6e199cb0f1cf9e4aa940c500e01bdf201299d7d61fa69/greenlet-3.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:64970c33a50551c7c50491671265d8954046cb6e8e2999aacdd60e439b70418a", size = 1571277, upload-time = "2026-02-20T20:49:34.795Z" }, + { url = "https://files.pythonhosted.org/packages/d9/c4/2570fc07f34a39f2caf0bf9f24b0a1a0a47bc2e8e465b2c2424821389dfc/greenlet-3.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1a9172f5bf6bd88e6ba5a84e0a68afeac9dc7b6b412b245dd64f52d83c81e55b", size = 1640455, upload-time = "2026-02-20T20:21:10.261Z" }, + { url = "https://files.pythonhosted.org/packages/91/39/5ef5aa23bc545aa0d31e1b9b55822b32c8da93ba657295840b6b34124009/greenlet-3.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:a7945dd0eab63ded0a48e4dcade82939783c172290a7903ebde9e184333ca124", size = 230961, upload-time = "2026-02-20T20:16:58.461Z" }, + { url = "https://files.pythonhosted.org/packages/62/6b/a89f8456dcb06becff288f563618e9f20deed8dd29beea14f9a168aef64b/greenlet-3.3.2-cp313-cp313-win_arm64.whl", hash = "sha256:394ead29063ee3515b4e775216cb756b2e3b4a7e55ae8fd884f17fa579e6b327", size = 230221, upload-time = "2026-02-20T20:17:37.152Z" }, + { url = "https://files.pythonhosted.org/packages/3f/ae/8bffcbd373b57a5992cd077cbe8858fff39110480a9d50697091faea6f39/greenlet-3.3.2-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:8d1658d7291f9859beed69a776c10822a0a799bc4bfe1bd4272bb60e62507dab", size = 279650, upload-time = "2026-02-20T20:18:00.783Z" }, + { url = "https://files.pythonhosted.org/packages/d1/c0/45f93f348fa49abf32ac8439938726c480bd96b2a3c6f4d949ec0124b69f/greenlet-3.3.2-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:18cb1b7337bca281915b3c5d5ae19f4e76d35e1df80f4ad3c1a7be91fadf1082", size = 650295, upload-time = "2026-02-20T20:47:34.036Z" }, + { url = "https://files.pythonhosted.org/packages/b3/de/dd7589b3f2b8372069ab3e4763ea5329940fc7ad9dcd3e272a37516d7c9b/greenlet-3.3.2-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c2e47408e8ce1c6f1ceea0dffcdf6ebb85cc09e55c7af407c99f1112016e45e9", size = 662163, upload-time = "2026-02-20T20:56:01.295Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d8/09bfa816572a4d83bccd6750df1926f79158b1c36c5f73786e26dbe4ee38/greenlet-3.3.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63d10328839d1973e5ba35e98cccbca71b232b14051fd957b6f8b6e8e80d0506", size = 664160, upload-time = "2026-02-20T20:21:04.015Z" }, + { url = "https://files.pythonhosted.org/packages/48/cf/56832f0c8255d27f6c35d41b5ec91168d74ec721d85f01a12131eec6b93c/greenlet-3.3.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8e4ab3cfb02993c8cc248ea73d7dae6cec0253e9afa311c9b37e603ca9fad2ce", size = 1619181, upload-time = "2026-02-20T20:49:36.052Z" }, + { url = "https://files.pythonhosted.org/packages/0a/23/b90b60a4aabb4cec0796e55f25ffbfb579a907c3898cd2905c8918acaa16/greenlet-3.3.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:94ad81f0fd3c0c0681a018a976e5c2bd2ca2d9d94895f23e7bb1af4e8af4e2d5", size = 1687713, upload-time = "2026-02-20T20:21:11.684Z" }, + { url = "https://files.pythonhosted.org/packages/f3/ca/2101ca3d9223a1dc125140dbc063644dca76df6ff356531eb27bc267b446/greenlet-3.3.2-cp314-cp314-win_amd64.whl", hash = "sha256:8c4dd0f3997cf2512f7601563cc90dfb8957c0cff1e3a1b23991d4ea1776c492", size = 232034, upload-time = "2026-02-20T20:20:08.186Z" }, + { url = "https://files.pythonhosted.org/packages/f6/4a/ecf894e962a59dea60f04877eea0fd5724618da89f1867b28ee8b91e811f/greenlet-3.3.2-cp314-cp314-win_arm64.whl", hash = "sha256:cd6f9e2bbd46321ba3bbb4c8a15794d32960e3b0ae2cc4d49a1a53d314805d71", size = 231437, upload-time = "2026-02-20T20:18:59.722Z" }, + { url = "https://files.pythonhosted.org/packages/98/6d/8f2ef704e614bcf58ed43cfb8d87afa1c285e98194ab2cfad351bf04f81e/greenlet-3.3.2-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:e26e72bec7ab387ac80caa7496e0f908ff954f31065b0ffc1f8ecb1338b11b54", size = 286617, upload-time = "2026-02-20T20:19:29.856Z" }, + { url = "https://files.pythonhosted.org/packages/5e/0d/93894161d307c6ea237a43988f27eba0947b360b99ac5239ad3fe09f0b47/greenlet-3.3.2-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b466dff7a4ffda6ca975979bab80bdadde979e29fc947ac3be4451428d8b0e4", size = 655189, upload-time = "2026-02-20T20:47:35.742Z" }, + { url = "https://files.pythonhosted.org/packages/f5/2c/d2d506ebd8abcb57386ec4f7ba20f4030cbe56eae541bc6fd6ef399c0b41/greenlet-3.3.2-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b8bddc5b73c9720bea487b3bffdb1840fe4e3656fba3bd40aa1489e9f37877ff", size = 658225, upload-time = "2026-02-20T20:56:02.527Z" }, + { url = "https://files.pythonhosted.org/packages/8e/30/3a09155fbf728673a1dea713572d2d31159f824a37c22da82127056c44e4/greenlet-3.3.2-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b26b0f4428b871a751968285a1ac9648944cea09807177ac639b030bddebcea4", size = 657907, upload-time = "2026-02-20T20:21:05.259Z" }, + { url = "https://files.pythonhosted.org/packages/f3/fd/d05a4b7acd0154ed758797f0a43b4c0962a843bedfe980115e842c5b2d08/greenlet-3.3.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1fb39a11ee2e4d94be9a76671482be9398560955c9e568550de0224e41104727", size = 1618857, upload-time = "2026-02-20T20:49:37.309Z" }, + { url = "https://files.pythonhosted.org/packages/6f/e1/50ee92a5db521de8f35075b5eff060dd43d39ebd46c2181a2042f7070385/greenlet-3.3.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:20154044d9085151bc309e7689d6f7ba10027f8f5a8c0676ad398b951913d89e", size = 1680010, upload-time = "2026-02-20T20:21:13.427Z" }, + { url = "https://files.pythonhosted.org/packages/29/4b/45d90626aef8e65336bed690106d1382f7a43665e2249017e9527df8823b/greenlet-3.3.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c04c5e06ec3e022cbfe2cd4a846e1d4e50087444f875ff6d2c2ad8445495cf1a", size = 237086, upload-time = "2026-02-20T20:20:45.786Z" }, ] [[package]] name = "grpclib" -version = "0.4.7" +version = "0.4.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "h2" }, { name = "multidict" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/79/b9/55936e462a5925190d7427e880b3033601d1effd13809b483d13a926061a/grpclib-0.4.7.tar.gz", hash = "sha256:2988ef57c02b22b7a2e8e961792c41ccf97efc2ace91ae7a5b0de03c363823c3", size = 61254, upload-time = "2023-12-24T17:47:41.572Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/28/5a2c299ec82a876a252c5919aa895a6f1d1d35c96417c5ce4a4660dc3a80/grpclib-0.4.9.tar.gz", hash = "sha256:cc589c330fa81004c6400a52a566407574498cb5b055fa927013361e21466c46", size = 84798, upload-time = "2025-12-14T22:23:14.349Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/90/b0cbbd9efcc82816c58f31a34963071aa19fb792a212a5d9caf8e0fc3097/grpclib-0.4.9-py3-none-any.whl", hash = "sha256:7762ec1c8ed94dfad597475152dd35cbd11aecaaca2f243e29702435ca24cf0e", size = 77063, upload-time = "2025-12-14T22:23:13.224Z" }, +] [[package]] name = "h2" -version = "4.1.0" +version = "4.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "hpack" }, { name = "hyperframe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2a/32/fec683ddd10629ea4ea46d206752a95a2d8a48c22521edd70b142488efe1/h2-4.1.0.tar.gz", hash = "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb", size = 2145593, upload-time = "2021-10-05T18:27:47.18Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/17/afa56379f94ad0fe8defd37d6eb3f89a25404ffc71d4d848893d270325fc/h2-4.3.0.tar.gz", hash = "sha256:6c59efe4323fa18b47a632221a1888bd7fde6249819beda254aeca909f221bf1", size = 2152026, upload-time = "2025-08-23T18:12:19.778Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/e5/db6d438da759efbb488c4f3fbdab7764492ff3c3f953132efa6b9f0e9e53/h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d", size = 57488, upload-time = "2021-10-05T18:27:39.977Z" }, + { url = "https://files.pythonhosted.org/packages/69/b2/119f6e6dcbd96f9069ce9a2665e0146588dc9f88f29549711853645e736a/h2-4.3.0-py3-none-any.whl", hash = "sha256:c438f029a25f7945c69e0ccf0fb951dc3f73a5f6412981daee861431b70e2bdd", size = 61779, upload-time = "2025-08-23T18:12:17.779Z" }, ] [[package]] name = "hpack" -version = "4.0.0" +version = "4.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3e/9b/fda93fb4d957db19b0f6b370e79d586b3e8528b20252c729c476a2c02954/hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095", size = 49117, upload-time = "2020-08-30T10:35:57.868Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/48/71de9ed269fdae9c8057e5a4c0aa7402e8bb16f2c6e90b3aa53327b113f8/hpack-4.1.0.tar.gz", hash = "sha256:ec5eca154f7056aa06f196a557655c5b009b382873ac8d1e66e79e87535f1dca", size = 51276, upload-time = "2025-01-22T21:44:58.347Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d5/34/e8b383f35b77c402d28563d2b8f83159319b509bc5f760b15d60b0abf165/hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c", size = 32611, upload-time = "2020-08-30T10:35:56.357Z" }, + { url = "https://files.pythonhosted.org/packages/07/c6/80c95b1b2b94682a72cbdbfb85b81ae2daffa4291fbfa1b1464502ede10d/hpack-4.1.0-py3-none-any.whl", hash = "sha256:157ac792668d995c657d93111f46b4535ed114f0c9c8d672271bbec7eae1b496", size = 34357, upload-time = "2025-01-22T21:44:56.92Z" }, ] [[package]] name = "hyperframe" -version = "6.0.1" +version = "6.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/2a/4747bff0a17f7281abe73e955d60d80aae537a5d203f417fa1c2e7578ebb/hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914", size = 25008, upload-time = "2021-04-17T12:11:22.757Z" } +sdist = { url = "https://files.pythonhosted.org/packages/02/e7/94f8232d4a74cc99514c13a9f995811485a6903d48e5d952771ef6322e30/hyperframe-6.1.0.tar.gz", hash = "sha256:f630908a00854a7adeabd6382b43923a4c4cd4b821fcb527e6ab9e15382a3b08", size = 26566, upload-time = "2025-01-22T21:41:49.302Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/de/85a784bcc4a3779d1753a7ec2dee5de90e18c7bcf402e71b51fcf150b129/hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15", size = 12389, upload-time = "2021-04-17T12:11:21.045Z" }, + { url = "https://files.pythonhosted.org/packages/48/30/47d0bf6072f7252e6521f3447ccfa40b421b6824517f82854703d0f5a98b/hyperframe-6.1.0-py3-none-any.whl", hash = "sha256:b03380493a519fce58ea5af42e4a42317bf9bd425596f7a0835ffce80f1a42e5", size = 13007, upload-time = "2025-01-22T21:41:47.295Z" }, ] [[package]] name = "idna" -version = "3.10" +version = "3.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, ] [[package]] name = "imagesize" -version = "1.4.1" +version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a7/84/62473fb57d61e31fef6e36d64a179c8781605429fd927b5dd608c997be31/imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a", size = 1280026, upload-time = "2022-07-01T12:21:05.687Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/e6/7bf14eeb8f8b7251141944835abd42eb20a658d89084b7e1f3e5fe394090/imagesize-2.0.0.tar.gz", hash = "sha256:8e8358c4a05c304f1fccf7ff96f036e7243a189e9e42e90851993c558cfe9ee3", size = 1773045, upload-time = "2026-03-03T14:18:29.941Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b", size = 8769, upload-time = "2022-07-01T12:21:02.467Z" }, + { url = "https://files.pythonhosted.org/packages/5f/53/fb7122b71361a0d121b669dcf3d31244ef75badbbb724af388948de543e2/imagesize-2.0.0-py2.py3-none-any.whl", hash = "sha256:5667c5bbb57ab3f1fa4bc366f4fbc971db3d5ed011fd2715fd8001f782718d96", size = 9441, upload-time = "2026-03-03T14:18:27.892Z" }, ] [[package]] name = "importlib-metadata" -version = "8.5.0" +version = "8.7.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", size = 55304, upload-time = "2024-09-11T14:56:08.937Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", size = 26514, upload-time = "2024-09-11T14:56:07.019Z" }, -] - -[[package]] -name = "importlib-resources" -version = "6.4.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "zipp", marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/98/be/f3e8c6081b684f176b761e6a2fef02a0be939740ed6f54109a2951d806f3/importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065", size = 43372, upload-time = "2024-09-09T17:03:14.677Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/6a/4604f9ae2fa62ef47b9de2fa5ad599589d28c9fd1d335f32759813dfa91e/importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717", size = 36115, upload-time = "2024-09-09T17:03:13.39Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size = 27865, upload-time = "2025-12-21T10:00:18.329Z" }, ] [[package]] name = "iniconfig" -version = "2.0.0" +version = "2.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646, upload-time = "2023-01-07T11:08:11.254Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892, upload-time = "2023-01-07T11:08:09.864Z" }, + { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, ] [[package]] name = "ipykernel" -version = "6.29.5" +version = "7.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "appnope", marker = "sys_platform == 'darwin'" }, { name = "comm" }, { name = "debugpy" }, - { name = "ipython" }, + { name = "ipython", version = "8.38.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "ipython", version = "9.10.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "ipython", version = "9.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, { name = "jupyter-client" }, { name = "jupyter-core" }, { name = "matplotlib-inline" }, @@ -641,45 +656,107 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367, upload-time = "2024-07-01T14:07:22.543Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/8d/b68b728e2d06b9e0051019640a40a9eb7a88fcd82c2e1b5ce70bef5ff044/ipykernel-7.2.0.tar.gz", hash = "sha256:18ed160b6dee2cbb16e5f3575858bc19d8f1fe6046a9a680c708494ce31d909e", size = 176046, upload-time = "2026-02-06T16:43:27.403Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173, upload-time = "2024-07-01T14:07:19.603Z" }, + { url = "https://files.pythonhosted.org/packages/82/b9/e73d5d9f405cba7706c539aa8b311b49d4c2f3d698d9c12f815231169c71/ipykernel-7.2.0-py3-none-any.whl", hash = "sha256:3bbd4420d2b3cc105cbdf3756bfc04500b1e52f090a90716851f3916c62e1661", size = 118788, upload-time = "2026-02-06T16:43:25.149Z" }, ] [[package]] name = "ipython" -version = "8.12.3" +version = "8.38.0" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] dependencies = [ - { name = "appnope", marker = "sys_platform == 'darwin'" }, - { name = "backcall" }, - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "decorator" }, - { name = "jedi" }, - { name = "matplotlib-inline" }, - { name = "pexpect", marker = "sys_platform != 'win32'" }, - { name = "pickleshare" }, - { name = "prompt-toolkit" }, - { name = "pygments" }, - { name = "stack-data" }, - { name = "traitlets" }, - { name = "typing-extensions", marker = "python_full_version < '3.10'" }, + { name = "colorama", marker = "python_full_version < '3.11' and sys_platform == 'win32'" }, + { name = "decorator", marker = "python_full_version < '3.11'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "jedi", marker = "python_full_version < '3.11'" }, + { name = "matplotlib-inline", marker = "python_full_version < '3.11'" }, + { name = "pexpect", marker = "python_full_version < '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit", marker = "python_full_version < '3.11'" }, + { name = "pygments", marker = "python_full_version < '3.11'" }, + { name = "stack-data", marker = "python_full_version < '3.11'" }, + { name = "traitlets", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e5/61/1810830e8b93c72dcd3c0f150c80a00c3deb229562d9423807ec92c3a539/ipython-8.38.0.tar.gz", hash = "sha256:9cfea8c903ce0867cc2f23199ed8545eb741f3a69420bfcf3743ad1cec856d39", size = 5513996, upload-time = "2026-01-05T10:59:06.901Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/df/db59624f4c71b39717c423409950ac3f2c8b2ce4b0aac843112c7fb3f721/ipython-8.38.0-py3-none-any.whl", hash = "sha256:750162629d800ac65bb3b543a14e7a74b0e88063eac9b92124d4b2aa3f6d8e86", size = 831813, upload-time = "2026-01-05T10:59:04.239Z" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9e/6a/44ef299b1762f5a73841e87fae8a73a8cc8aee538d6dc8c77a5afe1fd2ce/ipython-8.12.3.tar.gz", hash = "sha256:3910c4b54543c2ad73d06579aa771041b7d5707b033bd488669b4cf544e3b363", size = 5470171, upload-time = "2023-09-29T09:14:37.468Z" } + +[[package]] +name = "ipython" +version = "9.10.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "colorama", marker = "python_full_version == '3.11.*' and sys_platform == 'win32'" }, + { name = "decorator", marker = "python_full_version == '3.11.*'" }, + { name = "ipython-pygments-lexers", marker = "python_full_version == '3.11.*'" }, + { name = "jedi", marker = "python_full_version == '3.11.*'" }, + { name = "matplotlib-inline", marker = "python_full_version == '3.11.*'" }, + { name = "pexpect", marker = "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit", marker = "python_full_version == '3.11.*'" }, + { name = "pygments", marker = "python_full_version == '3.11.*'" }, + { name = "stack-data", marker = "python_full_version == '3.11.*'" }, + { name = "traitlets", marker = "python_full_version == '3.11.*'" }, + { name = "typing-extensions", marker = "python_full_version == '3.11.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/60/2111715ea11f39b1535bed6024b7dec7918b71e5e5d30855a5b503056b50/ipython-9.10.0.tar.gz", hash = "sha256:cd9e656be97618a0676d058134cd44e6dc7012c0e5cb36a9ce96a8c904adaf77", size = 4426526, upload-time = "2026-02-02T10:00:33.594Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8d/97/8fe103906cd81bc42d3b0175b5534a9f67dccae47d6451131cf8d0d70bb2/ipython-8.12.3-py3-none-any.whl", hash = "sha256:b0340d46a933d27c657b211a329d0be23793c36595acf9e6ef4164bc01a1804c", size = 798307, upload-time = "2023-09-29T09:14:34.431Z" }, + { url = "https://files.pythonhosted.org/packages/3d/aa/898dec789a05731cd5a9f50605b7b44a72bd198fd0d4528e11fc610177cc/ipython-9.10.0-py3-none-any.whl", hash = "sha256:c6ab68cc23bba8c7e18e9b932797014cc61ea7fd6f19de180ab9ba73e65ee58d", size = 622774, upload-time = "2026-02-02T10:00:31.503Z" }, +] + +[[package]] +name = "ipython" +version = "9.11.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", +] +dependencies = [ + { name = "colorama", marker = "python_full_version >= '3.12' and sys_platform == 'win32'" }, + { name = "decorator", marker = "python_full_version >= '3.12'" }, + { name = "ipython-pygments-lexers", marker = "python_full_version >= '3.12'" }, + { name = "jedi", marker = "python_full_version >= '3.12'" }, + { name = "matplotlib-inline", marker = "python_full_version >= '3.12'" }, + { name = "pexpect", marker = "python_full_version >= '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit", marker = "python_full_version >= '3.12'" }, + { name = "pygments", marker = "python_full_version >= '3.12'" }, + { name = "stack-data", marker = "python_full_version >= '3.12'" }, + { name = "traitlets", marker = "python_full_version >= '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/86/28/a4698eda5a8928a45d6b693578b135b753e14fa1c2b36ee9441e69a45576/ipython-9.11.0.tar.gz", hash = "sha256:2a94bc4406b22ecc7e4cb95b98450f3ea493a76bec8896cda11b78d7752a6667", size = 4427354, upload-time = "2026-03-05T08:57:30.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/90/45c72becc57158facc6a6404f663b77bbcea2519ca57f760e2879ae1315d/ipython-9.11.0-py3-none-any.whl", hash = "sha256:6922d5bcf944c6e525a76a0a304451b60a2b6f875e86656d8bc2dfda5d710e19", size = 624222, upload-time = "2026-03-05T08:57:28.94Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, ] [[package]] name = "jedi" -version = "0.19.1" +version = "0.19.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "parso" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d6/99/99b493cec4bf43176b678de30f81ed003fd6a647a301b9c927280c600f0a/jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd", size = 1227821, upload-time = "2023-10-02T09:20:39.728Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/9f/bc63f0f0737ad7a60800bfd472a4836661adae21f9c2535f3957b1e54ceb/jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0", size = 1569361, upload-time = "2023-10-02T09:20:35.754Z" }, + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, ] [[package]] @@ -696,37 +773,34 @@ wheels = [ [[package]] name = "jsonschema" -version = "4.23.0" +version = "4.26.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, - { name = "importlib-resources", marker = "python_full_version < '3.9'" }, { name = "jsonschema-specifications" }, - { name = "pkgutil-resolve-name", marker = "python_full_version < '3.9'" }, { name = "referencing" }, { name = "rpds-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778, upload-time = "2024-07-08T18:40:05.546Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload-time = "2026-01-07T13:41:07.246Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462, upload-time = "2024-07-08T18:40:00.165Z" }, + { url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce", size = 90630, upload-time = "2026-01-07T13:41:05.306Z" }, ] [[package]] name = "jsonschema-specifications" -version = "2023.12.1" +version = "2025.9.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "importlib-resources", marker = "python_full_version < '3.9'" }, { name = "referencing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b9/cc0cc592e7c195fb8a650c1d5990b10175cf13b4c97465c72ec841de9e4b/jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc", size = 13983, upload-time = "2023-12-25T15:16:53.63Z" } +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/07/44bd408781594c4d0a027666ef27fab1e441b109dc3b76b4f836f8fd04fe/jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c", size = 18482, upload-time = "2023-12-25T15:16:51.997Z" }, + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, ] [[package]] name = "jupyter-cache" -version = "0.6.1" +version = "1.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -738,174 +812,179 @@ dependencies = [ { name = "sqlalchemy" }, { name = "tabulate" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/69/64/08dcc1f6fc54a263525edd23b5d2754793470c1c41a8dd82d52406f8d876/jupyter-cache-0.6.1.tar.gz", hash = "sha256:26f83901143edf4af2f3ff5a91e2d2ad298e46e2cee03c8071d37a23a63ccbfc", size = 31953, upload-time = "2023-04-22T15:38:06.006Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/f7/3627358075f183956e8c4974603232b03afd4ddc7baf72c2bc9fff522291/jupyter_cache-1.0.1.tar.gz", hash = "sha256:16e808eb19e3fb67a223db906e131ea6e01f03aa27f49a7214ce6a5fec186fb9", size = 32048, upload-time = "2024-11-15T16:03:55.322Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/da/8e/918b115bb3b4b821e2d43315e1a08b909219723191623ffbae9072fd226a/jupyter_cache-0.6.1-py3-none-any.whl", hash = "sha256:2fce7d4975805c77f75bdfc1bc2e82bc538b8e5b1af27f2f5e06d55b9f996a82", size = 33886, upload-time = "2023-04-22T15:38:04.33Z" }, + { url = "https://files.pythonhosted.org/packages/64/6b/67b87da9d36bff9df7d0efbd1a325fa372a43be7158effaf43ed7b22341d/jupyter_cache-1.0.1-py3-none-any.whl", hash = "sha256:9c3cafd825ba7da8b5830485343091143dff903e4d8c69db9349b728b140abf6", size = 33907, upload-time = "2024-11-15T16:03:54.021Z" }, ] [[package]] name = "jupyter-client" -version = "8.6.3" +version = "8.8.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, { name = "jupyter-core" }, { name = "python-dateutil" }, { name = "pyzmq" }, { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } +sdist = { url = "https://files.pythonhosted.org/packages/05/e4/ba649102a3bc3fbca54e7239fb924fd434c766f855693d86de0b1f2bec81/jupyter_client-8.8.0.tar.gz", hash = "sha256:d556811419a4f2d96c869af34e854e3f059b7cc2d6d01a9cd9c85c267691be3e", size = 348020, upload-time = "2026-01-08T13:55:47.938Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, + { url = "https://files.pythonhosted.org/packages/2d/0b/ceb7694d864abc0a047649aec263878acb9f792e1fec3e676f22dc9015e3/jupyter_client-8.8.0-py3-none-any.whl", hash = "sha256:f93a5b99c5e23a507b773d3a1136bd6e16c67883ccdbd9a829b0bbdb98cd7d7a", size = 107371, upload-time = "2026-01-08T13:55:45.562Z" }, ] [[package]] name = "jupyter-core" -version = "5.7.2" +version = "5.9.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "platformdirs" }, - { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/00/11/b56381fa6c3f4cc5d2cf54a7dbf98ad9aa0b339ef7a601d6053538b079a7/jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9", size = 87629, upload-time = "2024-03-12T12:37:35.652Z" } +sdist = { url = "https://files.pythonhosted.org/packages/02/49/9d1284d0dc65e2c757b74c6687b6d319b02f822ad039e5c512df9194d9dd/jupyter_core-5.9.1.tar.gz", hash = "sha256:4d09aaff303b9566c3ce657f580bd089ff5c91f5f89cf7d8846c3cdf465b5508", size = 89814, upload-time = "2025-10-16T19:19:18.444Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965, upload-time = "2024-03-12T12:37:32.36Z" }, + { url = "https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl", hash = "sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407", size = 29032, upload-time = "2025-10-16T19:19:16.783Z" }, ] [[package]] name = "markdown-it-py" -version = "2.2.0" +version = "3.0.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version < '3.9'", + "python_full_version < '3.11'", ] dependencies = [ - { name = "mdurl", marker = "python_full_version < '3.9'" }, + { name = "mdurl", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e4/c0/59bd6d0571986f72899288a95d9d6178d0eebd70b6650f1bb3f0da90f8f7/markdown-it-py-2.2.0.tar.gz", hash = "sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1", size = 67120, upload-time = "2023-02-22T05:54:30.899Z" } +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/25/2d88e8feee8e055d015343f9b86e370a1ccbec546f2865c98397aaef24af/markdown_it_py-2.2.0-py3-none-any.whl", hash = "sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30", size = 84466, upload-time = "2023-02-22T05:54:29.508Z" }, + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload-time = "2023-06-03T06:41:11.019Z" }, ] [[package]] name = "markdown-it-py" -version = "3.0.0" +version = "4.0.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.9' and python_full_version < '3.12'", - "python_full_version == '3.12.*'", - "python_full_version >= '3.13'", + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", ] dependencies = [ - { name = "mdurl", marker = "python_full_version >= '3.9'" }, + { name = "mdurl", marker = "python_full_version >= '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload-time = "2023-06-03T06:41:11.019Z" }, + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, ] [[package]] name = "markupsafe" -version = "2.1.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/87/5b/aae44c6655f3801e81aa3eef09dbbf012431987ba564d7231722f68df02d/MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b", size = 19384, upload-time = "2024-02-02T16:31:22.863Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/54/ad5eb37bf9d51800010a74e4665425831a9db4e7c4e0fde4352e391e808e/MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc", size = 18206, upload-time = "2024-02-02T16:30:04.105Z" }, - { url = "https://files.pythonhosted.org/packages/6a/4a/a4d49415e600bacae038c67f9fecc1d5433b9d3c71a4de6f33537b89654c/MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5", size = 14079, upload-time = "2024-02-02T16:30:06.5Z" }, - { url = "https://files.pythonhosted.org/packages/0a/7b/85681ae3c33c385b10ac0f8dd025c30af83c78cec1c37a6aa3b55e67f5ec/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46", size = 26620, upload-time = "2024-02-02T16:30:08.31Z" }, - { url = "https://files.pythonhosted.org/packages/7c/52/2b1b570f6b8b803cef5ac28fdf78c0da318916c7d2fe9402a84d591b394c/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f", size = 25818, upload-time = "2024-02-02T16:30:09.577Z" }, - { url = "https://files.pythonhosted.org/packages/29/fe/a36ba8c7ca55621620b2d7c585313efd10729e63ef81e4e61f52330da781/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900", size = 25493, upload-time = "2024-02-02T16:30:11.488Z" }, - { url = "https://files.pythonhosted.org/packages/60/ae/9c60231cdfda003434e8bd27282b1f4e197ad5a710c14bee8bea8a9ca4f0/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff", size = 30630, upload-time = "2024-02-02T16:30:13.144Z" }, - { url = "https://files.pythonhosted.org/packages/65/dc/1510be4d179869f5dafe071aecb3f1f41b45d37c02329dfba01ff59e5ac5/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad", size = 29745, upload-time = "2024-02-02T16:30:14.222Z" }, - { url = "https://files.pythonhosted.org/packages/30/39/8d845dd7d0b0613d86e0ef89549bfb5f61ed781f59af45fc96496e897f3a/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd", size = 30021, upload-time = "2024-02-02T16:30:16.032Z" }, - { url = "https://files.pythonhosted.org/packages/c7/5c/356a6f62e4f3c5fbf2602b4771376af22a3b16efa74eb8716fb4e328e01e/MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4", size = 16659, upload-time = "2024-02-02T16:30:17.079Z" }, - { url = "https://files.pythonhosted.org/packages/69/48/acbf292615c65f0604a0c6fc402ce6d8c991276e16c80c46a8f758fbd30c/MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5", size = 17213, upload-time = "2024-02-02T16:30:18.251Z" }, - { url = "https://files.pythonhosted.org/packages/11/e7/291e55127bb2ae67c64d66cef01432b5933859dfb7d6949daa721b89d0b3/MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f", size = 18219, upload-time = "2024-02-02T16:30:19.988Z" }, - { url = "https://files.pythonhosted.org/packages/6b/cb/aed7a284c00dfa7c0682d14df85ad4955a350a21d2e3b06d8240497359bf/MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2", size = 14098, upload-time = "2024-02-02T16:30:21.063Z" }, - { url = "https://files.pythonhosted.org/packages/1c/cf/35fe557e53709e93feb65575c93927942087e9b97213eabc3fe9d5b25a55/MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced", size = 29014, upload-time = "2024-02-02T16:30:22.926Z" }, - { url = "https://files.pythonhosted.org/packages/97/18/c30da5e7a0e7f4603abfc6780574131221d9148f323752c2755d48abad30/MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5", size = 28220, upload-time = "2024-02-02T16:30:24.76Z" }, - { url = "https://files.pythonhosted.org/packages/0c/40/2e73e7d532d030b1e41180807a80d564eda53babaf04d65e15c1cf897e40/MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c", size = 27756, upload-time = "2024-02-02T16:30:25.877Z" }, - { url = "https://files.pythonhosted.org/packages/18/46/5dca760547e8c59c5311b332f70605d24c99d1303dd9a6e1fc3ed0d73561/MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f", size = 33988, upload-time = "2024-02-02T16:30:26.935Z" }, - { url = "https://files.pythonhosted.org/packages/6d/c5/27febe918ac36397919cd4a67d5579cbbfa8da027fa1238af6285bb368ea/MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a", size = 32718, upload-time = "2024-02-02T16:30:28.111Z" }, - { url = "https://files.pythonhosted.org/packages/f8/81/56e567126a2c2bc2684d6391332e357589a96a76cb9f8e5052d85cb0ead8/MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f", size = 33317, upload-time = "2024-02-02T16:30:29.214Z" }, - { url = "https://files.pythonhosted.org/packages/00/0b/23f4b2470accb53285c613a3ab9ec19dc944eaf53592cb6d9e2af8aa24cc/MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906", size = 16670, upload-time = "2024-02-02T16:30:30.915Z" }, - { url = "https://files.pythonhosted.org/packages/b7/a2/c78a06a9ec6d04b3445a949615c4c7ed86a0b2eb68e44e7541b9d57067cc/MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617", size = 17224, upload-time = "2024-02-02T16:30:32.09Z" }, - { url = "https://files.pythonhosted.org/packages/53/bd/583bf3e4c8d6a321938c13f49d44024dbe5ed63e0a7ba127e454a66da974/MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1", size = 18215, upload-time = "2024-02-02T16:30:33.081Z" }, - { url = "https://files.pythonhosted.org/packages/48/d6/e7cd795fc710292c3af3a06d80868ce4b02bfbbf370b7cee11d282815a2a/MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4", size = 14069, upload-time = "2024-02-02T16:30:34.148Z" }, - { url = "https://files.pythonhosted.org/packages/51/b5/5d8ec796e2a08fc814a2c7d2584b55f889a55cf17dd1a90f2beb70744e5c/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee", size = 29452, upload-time = "2024-02-02T16:30:35.149Z" }, - { url = "https://files.pythonhosted.org/packages/0a/0d/2454f072fae3b5a137c119abf15465d1771319dfe9e4acbb31722a0fff91/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5", size = 28462, upload-time = "2024-02-02T16:30:36.166Z" }, - { url = "https://files.pythonhosted.org/packages/2d/75/fd6cb2e68780f72d47e6671840ca517bda5ef663d30ada7616b0462ad1e3/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b", size = 27869, upload-time = "2024-02-02T16:30:37.834Z" }, - { url = "https://files.pythonhosted.org/packages/b0/81/147c477391c2750e8fc7705829f7351cf1cd3be64406edcf900dc633feb2/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a", size = 33906, upload-time = "2024-02-02T16:30:39.366Z" }, - { url = "https://files.pythonhosted.org/packages/8b/ff/9a52b71839d7a256b563e85d11050e307121000dcebc97df120176b3ad93/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f", size = 32296, upload-time = "2024-02-02T16:30:40.413Z" }, - { url = "https://files.pythonhosted.org/packages/88/07/2dc76aa51b481eb96a4c3198894f38b480490e834479611a4053fbf08623/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169", size = 33038, upload-time = "2024-02-02T16:30:42.243Z" }, - { url = "https://files.pythonhosted.org/packages/96/0c/620c1fb3661858c0e37eb3cbffd8c6f732a67cd97296f725789679801b31/MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad", size = 16572, upload-time = "2024-02-02T16:30:43.326Z" }, - { url = "https://files.pythonhosted.org/packages/3f/14/c3554d512d5f9100a95e737502f4a2323a1959f6d0d01e0d0997b35f7b10/MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb", size = 17127, upload-time = "2024-02-02T16:30:44.418Z" }, - { url = "https://files.pythonhosted.org/packages/f8/ff/2c942a82c35a49df5de3a630ce0a8456ac2969691b230e530ac12314364c/MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a", size = 18192, upload-time = "2024-02-02T16:30:57.715Z" }, - { url = "https://files.pythonhosted.org/packages/4f/14/6f294b9c4f969d0c801a4615e221c1e084722ea6114ab2114189c5b8cbe0/MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46", size = 14072, upload-time = "2024-02-02T16:30:58.844Z" }, - { url = "https://files.pythonhosted.org/packages/81/d4/fd74714ed30a1dedd0b82427c02fa4deec64f173831ec716da11c51a50aa/MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532", size = 26928, upload-time = "2024-02-02T16:30:59.922Z" }, - { url = "https://files.pythonhosted.org/packages/c7/bd/50319665ce81bb10e90d1cf76f9e1aa269ea6f7fa30ab4521f14d122a3df/MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab", size = 26106, upload-time = "2024-02-02T16:31:01.582Z" }, - { url = "https://files.pythonhosted.org/packages/4c/6f/f2b0f675635b05f6afd5ea03c094557bdb8622fa8e673387444fe8d8e787/MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68", size = 25781, upload-time = "2024-02-02T16:31:02.71Z" }, - { url = "https://files.pythonhosted.org/packages/51/e0/393467cf899b34a9d3678e78961c2c8cdf49fb902a959ba54ece01273fb1/MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0", size = 30518, upload-time = "2024-02-02T16:31:04.392Z" }, - { url = "https://files.pythonhosted.org/packages/f6/02/5437e2ad33047290dafced9df741d9efc3e716b75583bbd73a9984f1b6f7/MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4", size = 29669, upload-time = "2024-02-02T16:31:05.53Z" }, - { url = "https://files.pythonhosted.org/packages/0e/7d/968284145ffd9d726183ed6237c77938c021abacde4e073020f920e060b2/MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3", size = 29933, upload-time = "2024-02-02T16:31:06.636Z" }, - { url = "https://files.pythonhosted.org/packages/bf/f3/ecb00fc8ab02b7beae8699f34db9357ae49d9f21d4d3de6f305f34fa949e/MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff", size = 16656, upload-time = "2024-02-02T16:31:07.767Z" }, - { url = "https://files.pythonhosted.org/packages/92/21/357205f03514a49b293e214ac39de01fadd0970a6e05e4bf1ddd0ffd0881/MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029", size = 17206, upload-time = "2024-02-02T16:31:08.843Z" }, - { url = "https://files.pythonhosted.org/packages/0f/31/780bb297db036ba7b7bbede5e1d7f1e14d704ad4beb3ce53fb495d22bc62/MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf", size = 18193, upload-time = "2024-02-02T16:31:10.155Z" }, - { url = "https://files.pythonhosted.org/packages/6c/77/d77701bbef72892affe060cdacb7a2ed7fd68dae3b477a8642f15ad3b132/MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2", size = 14073, upload-time = "2024-02-02T16:31:11.442Z" }, - { url = "https://files.pythonhosted.org/packages/d9/a7/1e558b4f78454c8a3a0199292d96159eb4d091f983bc35ef258314fe7269/MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8", size = 26486, upload-time = "2024-02-02T16:31:12.488Z" }, - { url = "https://files.pythonhosted.org/packages/5f/5a/360da85076688755ea0cceb92472923086993e86b5613bbae9fbc14136b0/MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3", size = 25685, upload-time = "2024-02-02T16:31:13.726Z" }, - { url = "https://files.pythonhosted.org/packages/6a/18/ae5a258e3401f9b8312f92b028c54d7026a97ec3ab20bfaddbdfa7d8cce8/MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465", size = 25338, upload-time = "2024-02-02T16:31:14.812Z" }, - { url = "https://files.pythonhosted.org/packages/0b/cc/48206bd61c5b9d0129f4d75243b156929b04c94c09041321456fd06a876d/MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e", size = 30439, upload-time = "2024-02-02T16:31:15.946Z" }, - { url = "https://files.pythonhosted.org/packages/d1/06/a41c112ab9ffdeeb5f77bc3e331fdadf97fa65e52e44ba31880f4e7f983c/MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea", size = 29531, upload-time = "2024-02-02T16:31:17.13Z" }, - { url = "https://files.pythonhosted.org/packages/02/8c/ab9a463301a50dab04d5472e998acbd4080597abc048166ded5c7aa768c8/MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6", size = 29823, upload-time = "2024-02-02T16:31:18.247Z" }, - { url = "https://files.pythonhosted.org/packages/bc/29/9bc18da763496b055d8e98ce476c8e718dcfd78157e17f555ce6dd7d0895/MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf", size = 16658, upload-time = "2024-02-02T16:31:19.583Z" }, - { url = "https://files.pythonhosted.org/packages/f6/f8/4da07de16f10551ca1f640c92b5f316f9394088b183c6a57183df6de5ae4/MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5", size = 17211, upload-time = "2024-02-02T16:31:20.96Z" }, +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/4b/3541d44f3937ba468b75da9eebcae497dcf67adb65caa16760b0a6807ebb/markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", size = 11631, upload-time = "2025-09-27T18:36:05.558Z" }, + { url = "https://files.pythonhosted.org/packages/98/1b/fbd8eed11021cabd9226c37342fa6ca4e8a98d8188a8d9b66740494960e4/markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", size = 12057, upload-time = "2025-09-27T18:36:07.165Z" }, + { url = "https://files.pythonhosted.org/packages/40/01/e560d658dc0bb8ab762670ece35281dec7b6c1b33f5fbc09ebb57a185519/markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695", size = 22050, upload-time = "2025-09-27T18:36:08.005Z" }, + { url = "https://files.pythonhosted.org/packages/af/cd/ce6e848bbf2c32314c9b237839119c5a564a59725b53157c856e90937b7a/markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591", size = 20681, upload-time = "2025-09-27T18:36:08.881Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2a/b5c12c809f1c3045c4d580b035a743d12fcde53cf685dbc44660826308da/markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c", size = 20705, upload-time = "2025-09-27T18:36:10.131Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e3/9427a68c82728d0a88c50f890d0fc072a1484de2f3ac1ad0bfc1a7214fd5/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f", size = 21524, upload-time = "2025-09-27T18:36:11.324Z" }, + { url = "https://files.pythonhosted.org/packages/bc/36/23578f29e9e582a4d0278e009b38081dbe363c5e7165113fad546918a232/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6", size = 20282, upload-time = "2025-09-27T18:36:12.573Z" }, + { url = "https://files.pythonhosted.org/packages/56/21/dca11354e756ebd03e036bd8ad58d6d7168c80ce1fe5e75218e4945cbab7/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1", size = 20745, upload-time = "2025-09-27T18:36:13.504Z" }, + { url = "https://files.pythonhosted.org/packages/87/99/faba9369a7ad6e4d10b6a5fbf71fa2a188fe4a593b15f0963b73859a1bbd/markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa", size = 14571, upload-time = "2025-09-27T18:36:14.779Z" }, + { url = "https://files.pythonhosted.org/packages/d6/25/55dc3ab959917602c96985cb1253efaa4ff42f71194bddeb61eb7278b8be/markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8", size = 15056, upload-time = "2025-09-27T18:36:16.125Z" }, + { url = "https://files.pythonhosted.org/packages/d0/9e/0a02226640c255d1da0b8d12e24ac2aa6734da68bff14c05dd53b94a0fc3/markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1", size = 13932, upload-time = "2025-09-27T18:36:17.311Z" }, + { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" }, + { url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" }, + { url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload-time = "2025-09-27T18:36:22.249Z" }, + { url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload-time = "2025-09-27T18:36:23.535Z" }, + { url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload-time = "2025-09-27T18:36:24.823Z" }, + { url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload-time = "2025-09-27T18:36:25.95Z" }, + { url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload-time = "2025-09-27T18:36:27.109Z" }, + { url = "https://files.pythonhosted.org/packages/0f/62/d9c46a7f5c9adbeeeda52f5b8d802e1094e9717705a645efc71b0913a0a8/markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", size = 14572, upload-time = "2025-09-27T18:36:28.045Z" }, + { url = "https://files.pythonhosted.org/packages/83/8a/4414c03d3f891739326e1783338e48fb49781cc915b2e0ee052aa490d586/markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", size = 15077, upload-time = "2025-09-27T18:36:29.025Z" }, + { url = "https://files.pythonhosted.org/packages/35/73/893072b42e6862f319b5207adc9ae06070f095b358655f077f69a35601f0/markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", size = 13876, upload-time = "2025-09-27T18:36:29.954Z" }, + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, ] [[package]] name = "matplotlib-inline" -version = "0.1.7" +version = "0.2.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload-time = "2024-04-15T13:44:44.803Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, -] - -[[package]] -name = "mdit-py-plugins" -version = "0.3.5" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.9'", -] -dependencies = [ - { name = "markdown-it-py", version = "2.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/49/e7/cc2720da8a32724b36d04c6dba5644154cdf883a1482b3bbb81959a642ed/mdit-py-plugins-0.3.5.tar.gz", hash = "sha256:eee0adc7195e5827e17e02d2a258a2ba159944a0748f59c5099a4a27f78fcf6a", size = 39871, upload-time = "2023-03-02T17:42:50.654Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/74/97e72a36efd4ae2bccb3463284300f8953f199b5ffbc04cbbb0ec78f74b1/matplotlib_inline-0.2.1.tar.gz", hash = "sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe", size = 8110, upload-time = "2025-10-23T09:00:22.126Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/4c/a9b222f045f98775034d243198212cbea36d3524c3ee1e8ab8c0346d6953/mdit_py_plugins-0.3.5-py3-none-any.whl", hash = "sha256:ca9a0714ea59a24b2b044a1831f48d817dd0c817e84339f20e7889f392d77c4e", size = 52087, upload-time = "2023-03-02T17:42:48.841Z" }, + { url = "https://files.pythonhosted.org/packages/af/33/ee4519fa02ed11a94aef9559552f3b17bb863f2ecfe1a35dc7f548cde231/matplotlib_inline-0.2.1-py3-none-any.whl", hash = "sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76", size = 9516, upload-time = "2025-10-23T09:00:20.675Z" }, ] [[package]] name = "mdit-py-plugins" -version = "0.4.2" +version = "0.5.0" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.9' and python_full_version < '3.12'", - "python_full_version == '3.12.*'", - "python_full_version >= '3.13'", -] dependencies = [ - { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "markdown-it-py", version = "4.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/19/03/a2ecab526543b152300717cf232bb4bb8605b6edb946c845016fa9c9c9fd/mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5", size = 43542, upload-time = "2024-09-09T20:27:49.564Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/fd/a756d36c0bfba5f6e39a1cdbdbfdd448dc02692467d83816dff4592a1ebc/mdit_py_plugins-0.5.0.tar.gz", hash = "sha256:f4918cb50119f50446560513a8e311d574ff6aaed72606ddae6d35716fe809c6", size = 44655, upload-time = "2025-08-11T07:25:49.083Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636", size = 55316, upload-time = "2024-09-09T20:27:48.397Z" }, + { url = "https://files.pythonhosted.org/packages/fb/86/dd6e5db36df29e76c7a7699123569a4a18c1623ce68d826ed96c62643cae/mdit_py_plugins-0.5.0-py3-none-any.whl", hash = "sha256:07a08422fc1936a5d26d146759e9155ea466e842f5ab2f7d2266dd084c8dab1f", size = 57205, upload-time = "2025-08-11T07:25:47.597Z" }, ] [[package]] @@ -919,225 +998,236 @@ wheels = [ [[package]] name = "multidict" -version = "6.1.0" +version = "6.7.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d6/be/504b89a5e9ca731cd47487e91c469064f8ae5af93b7259758dcfc2b9c848/multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a", size = 64002, upload-time = "2024-09-09T23:49:38.163Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/29/68/259dee7fd14cf56a17c554125e534f6274c2860159692a414d0b402b9a6d/multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60", size = 48628, upload-time = "2024-09-09T23:47:18.278Z" }, - { url = "https://files.pythonhosted.org/packages/50/79/53ba256069fe5386a4a9e80d4e12857ced9de295baf3e20c68cdda746e04/multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1", size = 29327, upload-time = "2024-09-09T23:47:20.224Z" }, - { url = "https://files.pythonhosted.org/packages/ff/10/71f1379b05b196dae749b5ac062e87273e3f11634f447ebac12a571d90ae/multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53", size = 29689, upload-time = "2024-09-09T23:47:21.667Z" }, - { url = "https://files.pythonhosted.org/packages/71/45/70bac4f87438ded36ad4793793c0095de6572d433d98575a5752629ef549/multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5", size = 126639, upload-time = "2024-09-09T23:47:23.333Z" }, - { url = "https://files.pythonhosted.org/packages/80/cf/17f35b3b9509b4959303c05379c4bfb0d7dd05c3306039fc79cf035bbac0/multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581", size = 134315, upload-time = "2024-09-09T23:47:24.99Z" }, - { url = "https://files.pythonhosted.org/packages/ef/1f/652d70ab5effb33c031510a3503d4d6efc5ec93153562f1ee0acdc895a57/multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56", size = 129471, upload-time = "2024-09-09T23:47:26.305Z" }, - { url = "https://files.pythonhosted.org/packages/a6/64/2dd6c4c681688c0165dea3975a6a4eab4944ea30f35000f8b8af1df3148c/multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429", size = 124585, upload-time = "2024-09-09T23:47:27.958Z" }, - { url = "https://files.pythonhosted.org/packages/87/56/e6ee5459894c7e554b57ba88f7257dc3c3d2d379cb15baaa1e265b8c6165/multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748", size = 116957, upload-time = "2024-09-09T23:47:29.376Z" }, - { url = "https://files.pythonhosted.org/packages/36/9e/616ce5e8d375c24b84f14fc263c7ef1d8d5e8ef529dbc0f1df8ce71bb5b8/multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db", size = 128609, upload-time = "2024-09-09T23:47:31.038Z" }, - { url = "https://files.pythonhosted.org/packages/8c/4f/4783e48a38495d000f2124020dc96bacc806a4340345211b1ab6175a6cb4/multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056", size = 123016, upload-time = "2024-09-09T23:47:32.47Z" }, - { url = "https://files.pythonhosted.org/packages/3e/b3/4950551ab8fc39862ba5e9907dc821f896aa829b4524b4deefd3e12945ab/multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76", size = 133542, upload-time = "2024-09-09T23:47:34.103Z" }, - { url = "https://files.pythonhosted.org/packages/96/4d/f0ce6ac9914168a2a71df117935bb1f1781916acdecbb43285e225b484b8/multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160", size = 130163, upload-time = "2024-09-09T23:47:35.716Z" }, - { url = "https://files.pythonhosted.org/packages/be/72/17c9f67e7542a49dd252c5ae50248607dfb780bcc03035907dafefb067e3/multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7", size = 126832, upload-time = "2024-09-09T23:47:37.116Z" }, - { url = "https://files.pythonhosted.org/packages/71/9f/72d719e248cbd755c8736c6d14780533a1606ffb3fbb0fbd77da9f0372da/multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0", size = 26402, upload-time = "2024-09-09T23:47:38.863Z" }, - { url = "https://files.pythonhosted.org/packages/04/5a/d88cd5d00a184e1ddffc82aa2e6e915164a6d2641ed3606e766b5d2f275a/multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d", size = 28800, upload-time = "2024-09-09T23:47:40.056Z" }, - { url = "https://files.pythonhosted.org/packages/93/13/df3505a46d0cd08428e4c8169a196131d1b0c4b515c3649829258843dde6/multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6", size = 48570, upload-time = "2024-09-09T23:47:41.36Z" }, - { url = "https://files.pythonhosted.org/packages/f0/e1/a215908bfae1343cdb72f805366592bdd60487b4232d039c437fe8f5013d/multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156", size = 29316, upload-time = "2024-09-09T23:47:42.612Z" }, - { url = "https://files.pythonhosted.org/packages/70/0f/6dc70ddf5d442702ed74f298d69977f904960b82368532c88e854b79f72b/multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb", size = 29640, upload-time = "2024-09-09T23:47:44.028Z" }, - { url = "https://files.pythonhosted.org/packages/d8/6d/9c87b73a13d1cdea30b321ef4b3824449866bd7f7127eceed066ccb9b9ff/multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b", size = 131067, upload-time = "2024-09-09T23:47:45.617Z" }, - { url = "https://files.pythonhosted.org/packages/cc/1e/1b34154fef373371fd6c65125b3d42ff5f56c7ccc6bfff91b9b3c60ae9e0/multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72", size = 138507, upload-time = "2024-09-09T23:47:47.429Z" }, - { url = "https://files.pythonhosted.org/packages/fb/e0/0bc6b2bac6e461822b5f575eae85da6aae76d0e2a79b6665d6206b8e2e48/multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304", size = 133905, upload-time = "2024-09-09T23:47:48.878Z" }, - { url = "https://files.pythonhosted.org/packages/ba/af/73d13b918071ff9b2205fcf773d316e0f8fefb4ec65354bbcf0b10908cc6/multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351", size = 129004, upload-time = "2024-09-09T23:47:50.124Z" }, - { url = "https://files.pythonhosted.org/packages/74/21/23960627b00ed39643302d81bcda44c9444ebcdc04ee5bedd0757513f259/multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb", size = 121308, upload-time = "2024-09-09T23:47:51.97Z" }, - { url = "https://files.pythonhosted.org/packages/8b/5c/cf282263ffce4a596ed0bb2aa1a1dddfe1996d6a62d08842a8d4b33dca13/multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3", size = 132608, upload-time = "2024-09-09T23:47:53.201Z" }, - { url = "https://files.pythonhosted.org/packages/d7/3e/97e778c041c72063f42b290888daff008d3ab1427f5b09b714f5a8eff294/multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399", size = 127029, upload-time = "2024-09-09T23:47:54.435Z" }, - { url = "https://files.pythonhosted.org/packages/47/ac/3efb7bfe2f3aefcf8d103e9a7162572f01936155ab2f7ebcc7c255a23212/multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423", size = 137594, upload-time = "2024-09-09T23:47:55.659Z" }, - { url = "https://files.pythonhosted.org/packages/42/9b/6c6e9e8dc4f915fc90a9b7798c44a30773dea2995fdcb619870e705afe2b/multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3", size = 134556, upload-time = "2024-09-09T23:47:56.98Z" }, - { url = "https://files.pythonhosted.org/packages/1d/10/8e881743b26aaf718379a14ac58572a240e8293a1c9d68e1418fb11c0f90/multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753", size = 130993, upload-time = "2024-09-09T23:47:58.163Z" }, - { url = "https://files.pythonhosted.org/packages/45/84/3eb91b4b557442802d058a7579e864b329968c8d0ea57d907e7023c677f2/multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80", size = 26405, upload-time = "2024-09-09T23:47:59.391Z" }, - { url = "https://files.pythonhosted.org/packages/9f/0b/ad879847ecbf6d27e90a6eabb7eff6b62c129eefe617ea45eae7c1f0aead/multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926", size = 28795, upload-time = "2024-09-09T23:48:00.359Z" }, - { url = "https://files.pythonhosted.org/packages/fd/16/92057c74ba3b96d5e211b553895cd6dc7cc4d1e43d9ab8fafc727681ef71/multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa", size = 48713, upload-time = "2024-09-09T23:48:01.893Z" }, - { url = "https://files.pythonhosted.org/packages/94/3d/37d1b8893ae79716179540b89fc6a0ee56b4a65fcc0d63535c6f5d96f217/multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436", size = 29516, upload-time = "2024-09-09T23:48:03.463Z" }, - { url = "https://files.pythonhosted.org/packages/a2/12/adb6b3200c363062f805275b4c1e656be2b3681aada66c80129932ff0bae/multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761", size = 29557, upload-time = "2024-09-09T23:48:04.905Z" }, - { url = "https://files.pythonhosted.org/packages/47/e9/604bb05e6e5bce1e6a5cf80a474e0f072e80d8ac105f1b994a53e0b28c42/multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e", size = 130170, upload-time = "2024-09-09T23:48:06.862Z" }, - { url = "https://files.pythonhosted.org/packages/7e/13/9efa50801785eccbf7086b3c83b71a4fb501a4d43549c2f2f80b8787d69f/multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef", size = 134836, upload-time = "2024-09-09T23:48:08.537Z" }, - { url = "https://files.pythonhosted.org/packages/bf/0f/93808b765192780d117814a6dfcc2e75de6dcc610009ad408b8814dca3ba/multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95", size = 133475, upload-time = "2024-09-09T23:48:09.865Z" }, - { url = "https://files.pythonhosted.org/packages/d3/c8/529101d7176fe7dfe1d99604e48d69c5dfdcadb4f06561f465c8ef12b4df/multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925", size = 131049, upload-time = "2024-09-09T23:48:11.115Z" }, - { url = "https://files.pythonhosted.org/packages/ca/0c/fc85b439014d5a58063e19c3a158a889deec399d47b5269a0f3b6a2e28bc/multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966", size = 120370, upload-time = "2024-09-09T23:48:12.78Z" }, - { url = "https://files.pythonhosted.org/packages/db/46/d4416eb20176492d2258fbd47b4abe729ff3b6e9c829ea4236f93c865089/multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305", size = 125178, upload-time = "2024-09-09T23:48:14.295Z" }, - { url = "https://files.pythonhosted.org/packages/5b/46/73697ad7ec521df7de5531a32780bbfd908ded0643cbe457f981a701457c/multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2", size = 119567, upload-time = "2024-09-09T23:48:16.284Z" }, - { url = "https://files.pythonhosted.org/packages/cd/ed/51f060e2cb0e7635329fa6ff930aa5cffa17f4c7f5c6c3ddc3500708e2f2/multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2", size = 129822, upload-time = "2024-09-09T23:48:17.835Z" }, - { url = "https://files.pythonhosted.org/packages/df/9e/ee7d1954b1331da3eddea0c4e08d9142da5f14b1321c7301f5014f49d492/multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6", size = 128656, upload-time = "2024-09-09T23:48:19.576Z" }, - { url = "https://files.pythonhosted.org/packages/77/00/8538f11e3356b5d95fa4b024aa566cde7a38aa7a5f08f4912b32a037c5dc/multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3", size = 125360, upload-time = "2024-09-09T23:48:20.957Z" }, - { url = "https://files.pythonhosted.org/packages/be/05/5d334c1f2462d43fec2363cd00b1c44c93a78c3925d952e9a71caf662e96/multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133", size = 26382, upload-time = "2024-09-09T23:48:22.351Z" }, - { url = "https://files.pythonhosted.org/packages/a3/bf/f332a13486b1ed0496d624bcc7e8357bb8053823e8cd4b9a18edc1d97e73/multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1", size = 28529, upload-time = "2024-09-09T23:48:23.478Z" }, - { url = "https://files.pythonhosted.org/packages/22/67/1c7c0f39fe069aa4e5d794f323be24bf4d33d62d2a348acdb7991f8f30db/multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008", size = 48771, upload-time = "2024-09-09T23:48:24.594Z" }, - { url = "https://files.pythonhosted.org/packages/3c/25/c186ee7b212bdf0df2519eacfb1981a017bda34392c67542c274651daf23/multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f", size = 29533, upload-time = "2024-09-09T23:48:26.187Z" }, - { url = "https://files.pythonhosted.org/packages/67/5e/04575fd837e0958e324ca035b339cea174554f6f641d3fb2b4f2e7ff44a2/multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28", size = 29595, upload-time = "2024-09-09T23:48:27.305Z" }, - { url = "https://files.pythonhosted.org/packages/d3/b2/e56388f86663810c07cfe4a3c3d87227f3811eeb2d08450b9e5d19d78876/multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b", size = 130094, upload-time = "2024-09-09T23:48:28.544Z" }, - { url = "https://files.pythonhosted.org/packages/6c/ee/30ae9b4186a644d284543d55d491fbd4239b015d36b23fea43b4c94f7052/multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c", size = 134876, upload-time = "2024-09-09T23:48:30.098Z" }, - { url = "https://files.pythonhosted.org/packages/84/c7/70461c13ba8ce3c779503c70ec9d0345ae84de04521c1f45a04d5f48943d/multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3", size = 133500, upload-time = "2024-09-09T23:48:31.793Z" }, - { url = "https://files.pythonhosted.org/packages/4a/9f/002af221253f10f99959561123fae676148dd730e2daa2cd053846a58507/multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44", size = 131099, upload-time = "2024-09-09T23:48:33.193Z" }, - { url = "https://files.pythonhosted.org/packages/82/42/d1c7a7301d52af79d88548a97e297f9d99c961ad76bbe6f67442bb77f097/multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2", size = 120403, upload-time = "2024-09-09T23:48:34.942Z" }, - { url = "https://files.pythonhosted.org/packages/68/f3/471985c2c7ac707547553e8f37cff5158030d36bdec4414cb825fbaa5327/multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3", size = 125348, upload-time = "2024-09-09T23:48:36.222Z" }, - { url = "https://files.pythonhosted.org/packages/67/2c/e6df05c77e0e433c214ec1d21ddd203d9a4770a1f2866a8ca40a545869a0/multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa", size = 119673, upload-time = "2024-09-09T23:48:37.588Z" }, - { url = "https://files.pythonhosted.org/packages/c5/cd/bc8608fff06239c9fb333f9db7743a1b2eafe98c2666c9a196e867a3a0a4/multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa", size = 129927, upload-time = "2024-09-09T23:48:39.128Z" }, - { url = "https://files.pythonhosted.org/packages/44/8e/281b69b7bc84fc963a44dc6e0bbcc7150e517b91df368a27834299a526ac/multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4", size = 128711, upload-time = "2024-09-09T23:48:40.55Z" }, - { url = "https://files.pythonhosted.org/packages/12/a4/63e7cd38ed29dd9f1881d5119f272c898ca92536cdb53ffe0843197f6c85/multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6", size = 125519, upload-time = "2024-09-09T23:48:42.446Z" }, - { url = "https://files.pythonhosted.org/packages/38/e0/4f5855037a72cd8a7a2f60a3952d9aa45feedb37ae7831642102604e8a37/multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81", size = 26426, upload-time = "2024-09-09T23:48:43.936Z" }, - { url = "https://files.pythonhosted.org/packages/7e/a5/17ee3a4db1e310b7405f5d25834460073a8ccd86198ce044dfaf69eac073/multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774", size = 28531, upload-time = "2024-09-09T23:48:45.122Z" }, - { url = "https://files.pythonhosted.org/packages/3e/6a/af41f3aaf5f00fd86cc7d470a2f5b25299b0c84691163b8757f4a1a205f2/multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392", size = 48597, upload-time = "2024-09-09T23:48:46.391Z" }, - { url = "https://files.pythonhosted.org/packages/d9/d6/3d4082760ed11b05734f8bf32a0615b99e7d9d2b3730ad698a4d7377c00a/multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a", size = 29338, upload-time = "2024-09-09T23:48:47.891Z" }, - { url = "https://files.pythonhosted.org/packages/9d/7f/5d1ce7f47d44393d429922910afbe88fcd29ee3069babbb47507a4c3a7ea/multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2", size = 29562, upload-time = "2024-09-09T23:48:49.254Z" }, - { url = "https://files.pythonhosted.org/packages/ce/ec/c425257671af9308a9b626e2e21f7f43841616e4551de94eb3c92aca75b2/multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc", size = 130980, upload-time = "2024-09-09T23:48:50.606Z" }, - { url = "https://files.pythonhosted.org/packages/d8/d7/d4220ad2633a89b314593e9b85b5bc9287a7c563c7f9108a4a68d9da5374/multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478", size = 136694, upload-time = "2024-09-09T23:48:52.042Z" }, - { url = "https://files.pythonhosted.org/packages/a1/2a/13e554db5830c8d40185a2e22aa8325516a5de9634c3fb2caf3886a829b3/multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4", size = 131616, upload-time = "2024-09-09T23:48:54.283Z" }, - { url = "https://files.pythonhosted.org/packages/2e/a9/83692e37d8152f104333132105b67100aabfb2e96a87f6bed67f566035a7/multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d", size = 129664, upload-time = "2024-09-09T23:48:55.785Z" }, - { url = "https://files.pythonhosted.org/packages/cc/1c/1718cd518fb9da7e8890d9d1611c1af0ea5e60f68ff415d026e38401ed36/multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6", size = 121855, upload-time = "2024-09-09T23:48:57.333Z" }, - { url = "https://files.pythonhosted.org/packages/2b/92/f6ed67514b0e3894198f0eb42dcde22f0851ea35f4561a1e4acf36c7b1be/multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2", size = 127928, upload-time = "2024-09-09T23:48:58.778Z" }, - { url = "https://files.pythonhosted.org/packages/f7/30/c66954115a4dc4dc3c84e02c8ae11bb35a43d79ef93122c3c3a40c4d459b/multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd", size = 122793, upload-time = "2024-09-09T23:49:00.244Z" }, - { url = "https://files.pythonhosted.org/packages/62/c9/d386d01b43871e8e1631eb7b3695f6af071b7ae1ab716caf371100f0eb24/multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6", size = 132762, upload-time = "2024-09-09T23:49:02.188Z" }, - { url = "https://files.pythonhosted.org/packages/69/ff/f70cb0a2f7a358acf48e32139ce3a150ff18c961ee9c714cc8c0dc7e3584/multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492", size = 127872, upload-time = "2024-09-09T23:49:04.389Z" }, - { url = "https://files.pythonhosted.org/packages/89/5b/abea7db3ba4cd07752a9b560f9275a11787cd13f86849b5d99c1ceea921d/multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd", size = 126161, upload-time = "2024-09-09T23:49:06.306Z" }, - { url = "https://files.pythonhosted.org/packages/22/03/acc77a4667cca4462ee974fc39990803e58fa573d5a923d6e82b7ef6da7e/multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167", size = 26338, upload-time = "2024-09-09T23:49:07.782Z" }, - { url = "https://files.pythonhosted.org/packages/90/bf/3d0c1cc9c8163abc24625fae89c0ade1ede9bccb6eceb79edf8cff3cca46/multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef", size = 28736, upload-time = "2024-09-09T23:49:09.126Z" }, - { url = "https://files.pythonhosted.org/packages/e7/c9/9e153a6572b38ac5ff4434113af38acf8d5e9957897cdb1f513b3d6614ed/multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c", size = 48550, upload-time = "2024-09-09T23:49:10.475Z" }, - { url = "https://files.pythonhosted.org/packages/76/f5/79565ddb629eba6c7f704f09a09df085c8dc04643b12506f10f718cee37a/multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1", size = 29298, upload-time = "2024-09-09T23:49:12.119Z" }, - { url = "https://files.pythonhosted.org/packages/60/1b/9851878b704bc98e641a3e0bce49382ae9e05743dac6d97748feb5b7baba/multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c", size = 29641, upload-time = "2024-09-09T23:49:13.714Z" }, - { url = "https://files.pythonhosted.org/packages/89/87/d451d45aab9e422cb0fb2f7720c31a4c1d3012c740483c37f642eba568fb/multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c", size = 126202, upload-time = "2024-09-09T23:49:15.238Z" }, - { url = "https://files.pythonhosted.org/packages/fa/b4/27cbe9f3e2e469359887653f2e45470272eef7295139916cc21107c6b48c/multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f", size = 133925, upload-time = "2024-09-09T23:49:16.786Z" }, - { url = "https://files.pythonhosted.org/packages/4d/a3/afc841899face8adfd004235ce759a37619f6ec99eafd959650c5ce4df57/multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875", size = 129039, upload-time = "2024-09-09T23:49:18.381Z" }, - { url = "https://files.pythonhosted.org/packages/5e/41/0d0fb18c1ad574f807196f5f3d99164edf9de3e169a58c6dc2d6ed5742b9/multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255", size = 124072, upload-time = "2024-09-09T23:49:20.115Z" }, - { url = "https://files.pythonhosted.org/packages/00/22/defd7a2e71a44e6e5b9a5428f972e5b572e7fe28e404dfa6519bbf057c93/multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30", size = 116532, upload-time = "2024-09-09T23:49:21.685Z" }, - { url = "https://files.pythonhosted.org/packages/91/25/f7545102def0b1d456ab6449388eed2dfd822debba1d65af60194904a23a/multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057", size = 128173, upload-time = "2024-09-09T23:49:23.657Z" }, - { url = "https://files.pythonhosted.org/packages/45/79/3dbe8d35fc99f5ea610813a72ab55f426cb9cf482f860fa8496e5409be11/multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657", size = 122654, upload-time = "2024-09-09T23:49:25.7Z" }, - { url = "https://files.pythonhosted.org/packages/97/cb/209e735eeab96e1b160825b5d0b36c56d3862abff828fc43999bb957dcad/multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28", size = 133197, upload-time = "2024-09-09T23:49:27.906Z" }, - { url = "https://files.pythonhosted.org/packages/e4/3a/a13808a7ada62808afccea67837a79d00ad6581440015ef00f726d064c2d/multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972", size = 129754, upload-time = "2024-09-09T23:49:29.508Z" }, - { url = "https://files.pythonhosted.org/packages/77/dd/8540e139eafb240079242da8f8ffdf9d3f4b4ad1aac5a786cd4050923783/multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43", size = 126402, upload-time = "2024-09-09T23:49:31.243Z" }, - { url = "https://files.pythonhosted.org/packages/86/99/e82e1a275d8b1ea16d3a251474262258dbbe41c05cce0c01bceda1fc8ea5/multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada", size = 26421, upload-time = "2024-09-09T23:49:32.648Z" }, - { url = "https://files.pythonhosted.org/packages/86/1c/9fa630272355af7e4446a2c7550c259f11ee422ab2d30ff90a0a71cf3d9e/multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a", size = 28791, upload-time = "2024-09-09T23:49:34.725Z" }, - { url = "https://files.pythonhosted.org/packages/99/b7/b9e70fde2c0f0c9af4cc5277782a89b66d35948ea3369ec9f598358c3ac5/multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506", size = 10051, upload-time = "2024-09-09T23:49:36.506Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/1a/c2/c2d94cbe6ac1753f3fc980da97b3d930efe1da3af3c9f5125354436c073d/multidict-6.7.1.tar.gz", hash = "sha256:ec6652a1bee61c53a3e5776b6049172c53b6aaba34f18c9ad04f82712bac623d", size = 102010, upload-time = "2026-01-26T02:46:45.979Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/0b/19348d4c98980c4851d2f943f8ebafdece2ae7ef737adcfa5994ce8e5f10/multidict-6.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c93c3db7ea657dd4637d57e74ab73de31bccefe144d3d4ce370052035bc85fb5", size = 77176, upload-time = "2026-01-26T02:42:59.784Z" }, + { url = "https://files.pythonhosted.org/packages/ef/04/9de3f8077852e3d438215c81e9b691244532d2e05b4270e89ce67b7d103c/multidict-6.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:974e72a2474600827abaeda71af0c53d9ebbc3c2eb7da37b37d7829ae31232d8", size = 44996, upload-time = "2026-01-26T02:43:01.674Z" }, + { url = "https://files.pythonhosted.org/packages/31/5c/08c7f7fe311f32e83f7621cd3f99d805f45519cd06fafb247628b861da7d/multidict-6.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cdea2e7b2456cfb6694fb113066fd0ec7ea4d67e3a35e1f4cbeea0b448bf5872", size = 44631, upload-time = "2026-01-26T02:43:03.169Z" }, + { url = "https://files.pythonhosted.org/packages/b7/7f/0e3b1390ae772f27501199996b94b52ceeb64fe6f9120a32c6c3f6b781be/multidict-6.7.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:17207077e29342fdc2c9a82e4b306f1127bf1ea91f8b71e02d4798a70bb99991", size = 242561, upload-time = "2026-01-26T02:43:04.733Z" }, + { url = "https://files.pythonhosted.org/packages/dd/f4/8719f4f167586af317b69dd3e90f913416c91ca610cac79a45c53f590312/multidict-6.7.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4f49cb5661344764e4c7c7973e92a47a59b8fc19b6523649ec9dc4960e58a03", size = 242223, upload-time = "2026-01-26T02:43:06.695Z" }, + { url = "https://files.pythonhosted.org/packages/47/ab/7c36164cce64a6ad19c6d9a85377b7178ecf3b89f8fd589c73381a5eedfd/multidict-6.7.1-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a9fc4caa29e2e6ae408d1c450ac8bf19892c5fca83ee634ecd88a53332c59981", size = 222322, upload-time = "2026-01-26T02:43:08.472Z" }, + { url = "https://files.pythonhosted.org/packages/f5/79/a25add6fb38035b5337bc5734f296d9afc99163403bbcf56d4170f97eb62/multidict-6.7.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c5f0c21549ab432b57dcc82130f388d84ad8179824cc3f223d5e7cfbfd4143f6", size = 254005, upload-time = "2026-01-26T02:43:10.127Z" }, + { url = "https://files.pythonhosted.org/packages/4a/7b/64a87cf98e12f756fc8bd444b001232ffff2be37288f018ad0d3f0aae931/multidict-6.7.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7dfb78d966b2c906ae1d28ccf6e6712a3cd04407ee5088cd276fe8cb42186190", size = 251173, upload-time = "2026-01-26T02:43:11.731Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ac/b605473de2bb404e742f2cc3583d12aedb2352a70e49ae8fce455b50c5aa/multidict-6.7.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9b0d9b91d1aa44db9c1f1ecd0d9d2ae610b2f4f856448664e01a3b35899f3f92", size = 243273, upload-time = "2026-01-26T02:43:13.063Z" }, + { url = "https://files.pythonhosted.org/packages/03/65/11492d6a0e259783720f3bc1d9ea55579a76f1407e31ed44045c99542004/multidict-6.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:dd96c01a9dcd4889dcfcf9eb5544ca0c77603f239e3ffab0524ec17aea9a93ee", size = 238956, upload-time = "2026-01-26T02:43:14.843Z" }, + { url = "https://files.pythonhosted.org/packages/5f/a7/7ee591302af64e7c196fb63fe856c788993c1372df765102bd0448e7e165/multidict-6.7.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:067343c68cd6612d375710f895337b3a98a033c94f14b9a99eff902f205424e2", size = 233477, upload-time = "2026-01-26T02:43:16.025Z" }, + { url = "https://files.pythonhosted.org/packages/9c/99/c109962d58756c35fd9992fed7f2355303846ea2ff054bb5f5e9d6b888de/multidict-6.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5884a04f4ff56c6120f6ccf703bdeb8b5079d808ba604d4d53aec0d55dc33568", size = 243615, upload-time = "2026-01-26T02:43:17.84Z" }, + { url = "https://files.pythonhosted.org/packages/d5/5f/1973e7c771c86e93dcfe1c9cc55a5481b610f6614acfc28c0d326fe6bfad/multidict-6.7.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8affcf1c98b82bc901702eb73b6947a1bfa170823c153fe8a47b5f5f02e48e40", size = 249930, upload-time = "2026-01-26T02:43:19.06Z" }, + { url = "https://files.pythonhosted.org/packages/5d/a5/f170fc2268c3243853580203378cd522446b2df632061e0a5409817854c7/multidict-6.7.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0d17522c37d03e85c8098ec8431636309b2682cf12e58f4dbc76121fb50e4962", size = 243807, upload-time = "2026-01-26T02:43:20.286Z" }, + { url = "https://files.pythonhosted.org/packages/de/01/73856fab6d125e5bc652c3986b90e8699a95e84b48d72f39ade6c0e74a8c/multidict-6.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24c0cf81544ca5e17cfcb6e482e7a82cd475925242b308b890c9452a074d4505", size = 239103, upload-time = "2026-01-26T02:43:21.508Z" }, + { url = "https://files.pythonhosted.org/packages/e7/46/f1220bd9944d8aa40d8ccff100eeeee19b505b857b6f603d6078cb5315b0/multidict-6.7.1-cp310-cp310-win32.whl", hash = "sha256:d82dd730a95e6643802f4454b8fdecdf08667881a9c5670db85bc5a56693f122", size = 41416, upload-time = "2026-01-26T02:43:22.703Z" }, + { url = "https://files.pythonhosted.org/packages/68/00/9b38e272a770303692fc406c36e1a4c740f401522d5787691eb38a8925a8/multidict-6.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:cf37cbe5ced48d417ba045aca1b21bafca67489452debcde94778a576666a1df", size = 46022, upload-time = "2026-01-26T02:43:23.77Z" }, + { url = "https://files.pythonhosted.org/packages/64/65/d8d42490c02ee07b6bbe00f7190d70bb4738b3cce7629aaf9f213ef730dd/multidict-6.7.1-cp310-cp310-win_arm64.whl", hash = "sha256:59bc83d3f66b41dac1e7460aac1d196edc70c9ba3094965c467715a70ecb46db", size = 43238, upload-time = "2026-01-26T02:43:24.882Z" }, + { url = "https://files.pythonhosted.org/packages/ce/f1/a90635c4f88fb913fbf4ce660b83b7445b7a02615bda034b2f8eb38fd597/multidict-6.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7ff981b266af91d7b4b3793ca3382e53229088d193a85dfad6f5f4c27fc73e5d", size = 76626, upload-time = "2026-01-26T02:43:26.485Z" }, + { url = "https://files.pythonhosted.org/packages/a6/9b/267e64eaf6fc637a15b35f5de31a566634a2740f97d8d094a69d34f524a4/multidict-6.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:844c5bca0b5444adb44a623fb0a1310c2f4cd41f402126bb269cd44c9b3f3e1e", size = 44706, upload-time = "2026-01-26T02:43:27.607Z" }, + { url = "https://files.pythonhosted.org/packages/dd/a4/d45caf2b97b035c57267791ecfaafbd59c68212004b3842830954bb4b02e/multidict-6.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f2a0a924d4c2e9afcd7ec64f9de35fcd96915149b2216e1cb2c10a56df483855", size = 44356, upload-time = "2026-01-26T02:43:28.661Z" }, + { url = "https://files.pythonhosted.org/packages/fd/d2/0a36c8473f0cbaeadd5db6c8b72d15bbceeec275807772bfcd059bef487d/multidict-6.7.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8be1802715a8e892c784c0197c2ace276ea52702a0ede98b6310c8f255a5afb3", size = 244355, upload-time = "2026-01-26T02:43:31.165Z" }, + { url = "https://files.pythonhosted.org/packages/5d/16/8c65be997fd7dd311b7d39c7b6e71a0cb449bad093761481eccbbe4b42a2/multidict-6.7.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2e2d2ed645ea29f31c4c7ea1552fcfd7cb7ba656e1eafd4134a6620c9f5fdd9e", size = 246433, upload-time = "2026-01-26T02:43:32.581Z" }, + { url = "https://files.pythonhosted.org/packages/01/fb/4dbd7e848d2799c6a026ec88ad39cf2b8416aa167fcc903baa55ecaa045c/multidict-6.7.1-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:95922cee9a778659e91db6497596435777bd25ed116701a4c034f8e46544955a", size = 225376, upload-time = "2026-01-26T02:43:34.417Z" }, + { url = "https://files.pythonhosted.org/packages/b6/8a/4a3a6341eac3830f6053062f8fbc9a9e54407c80755b3f05bc427295c2d0/multidict-6.7.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6b83cabdc375ffaaa15edd97eb7c0c672ad788e2687004990074d7d6c9b140c8", size = 257365, upload-time = "2026-01-26T02:43:35.741Z" }, + { url = "https://files.pythonhosted.org/packages/f7/a2/dd575a69c1aa206e12d27d0770cdf9b92434b48a9ef0cd0d1afdecaa93c4/multidict-6.7.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:38fb49540705369bab8484db0689d86c0a33a0a9f2c1b197f506b71b4b6c19b0", size = 254747, upload-time = "2026-01-26T02:43:36.976Z" }, + { url = "https://files.pythonhosted.org/packages/5a/56/21b27c560c13822ed93133f08aa6372c53a8e067f11fbed37b4adcdac922/multidict-6.7.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:439cbebd499f92e9aa6793016a8acaa161dfa749ae86d20960189f5398a19144", size = 246293, upload-time = "2026-01-26T02:43:38.258Z" }, + { url = "https://files.pythonhosted.org/packages/5a/a4/23466059dc3854763423d0ad6c0f3683a379d97673b1b89ec33826e46728/multidict-6.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6d3bc717b6fe763b8be3f2bee2701d3c8eb1b2a8ae9f60910f1b2860c82b6c49", size = 242962, upload-time = "2026-01-26T02:43:40.034Z" }, + { url = "https://files.pythonhosted.org/packages/1f/67/51dd754a3524d685958001e8fa20a0f5f90a6a856e0a9dcabff69be3dbb7/multidict-6.7.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:619e5a1ac57986dbfec9f0b301d865dddf763696435e2962f6d9cf2fdff2bb71", size = 237360, upload-time = "2026-01-26T02:43:41.752Z" }, + { url = "https://files.pythonhosted.org/packages/64/3f/036dfc8c174934d4b55d86ff4f978e558b0e585cef70cfc1ad01adc6bf18/multidict-6.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0b38ebffd9be37c1170d33bc0f36f4f262e0a09bc1aac1c34c7aa51a7293f0b3", size = 245940, upload-time = "2026-01-26T02:43:43.042Z" }, + { url = "https://files.pythonhosted.org/packages/3d/20/6214d3c105928ebc353a1c644a6ef1408bc5794fcb4f170bb524a3c16311/multidict-6.7.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:10ae39c9cfe6adedcdb764f5e8411d4a92b055e35573a2eaa88d3323289ef93c", size = 253502, upload-time = "2026-01-26T02:43:44.371Z" }, + { url = "https://files.pythonhosted.org/packages/b1/e2/c653bc4ae1be70a0f836b82172d643fcf1dade042ba2676ab08ec08bff0f/multidict-6.7.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:25167cc263257660290fba06b9318d2026e3c910be240a146e1f66dd114af2b0", size = 247065, upload-time = "2026-01-26T02:43:45.745Z" }, + { url = "https://files.pythonhosted.org/packages/c8/11/a854b4154cd3bd8b1fd375e8a8ca9d73be37610c361543d56f764109509b/multidict-6.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:128441d052254f42989ef98b7b6a6ecb1e6f708aa962c7984235316db59f50fa", size = 241870, upload-time = "2026-01-26T02:43:47.054Z" }, + { url = "https://files.pythonhosted.org/packages/13/bf/9676c0392309b5fdae322333d22a829715b570edb9baa8016a517b55b558/multidict-6.7.1-cp311-cp311-win32.whl", hash = "sha256:d62b7f64ffde3b99d06b707a280db04fb3855b55f5a06df387236051d0668f4a", size = 41302, upload-time = "2026-01-26T02:43:48.753Z" }, + { url = "https://files.pythonhosted.org/packages/c9/68/f16a3a8ba6f7b6dc92a1f19669c0810bd2c43fc5a02da13b1cbf8e253845/multidict-6.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:bdbf9f3b332abd0cdb306e7c2113818ab1e922dc84b8f8fd06ec89ed2a19ab8b", size = 45981, upload-time = "2026-01-26T02:43:49.921Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ad/9dd5305253fa00cd3c7555dbef69d5bf4133debc53b87ab8d6a44d411665/multidict-6.7.1-cp311-cp311-win_arm64.whl", hash = "sha256:b8c990b037d2fff2f4e33d3f21b9b531c5745b33a49a7d6dbe7a177266af44f6", size = 43159, upload-time = "2026-01-26T02:43:51.635Z" }, + { url = "https://files.pythonhosted.org/packages/8d/9c/f20e0e2cf80e4b2e4b1c365bf5fe104ee633c751a724246262db8f1a0b13/multidict-6.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a90f75c956e32891a4eda3639ce6dd86e87105271f43d43442a3aedf3cddf172", size = 76893, upload-time = "2026-01-26T02:43:52.754Z" }, + { url = "https://files.pythonhosted.org/packages/fe/cf/18ef143a81610136d3da8193da9d80bfe1cb548a1e2d1c775f26b23d024a/multidict-6.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fccb473e87eaa1382689053e4a4618e7ba7b9b9b8d6adf2027ee474597128cd", size = 45456, upload-time = "2026-01-26T02:43:53.893Z" }, + { url = "https://files.pythonhosted.org/packages/a9/65/1caac9d4cd32e8433908683446eebc953e82d22b03d10d41a5f0fefe991b/multidict-6.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0fa96985700739c4c7853a43c0b3e169360d6855780021bfc6d0f1ce7c123e7", size = 43872, upload-time = "2026-01-26T02:43:55.041Z" }, + { url = "https://files.pythonhosted.org/packages/cf/3b/d6bd75dc4f3ff7c73766e04e705b00ed6dbbaccf670d9e05a12b006f5a21/multidict-6.7.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cb2a55f408c3043e42b40cc8eecd575afa27b7e0b956dfb190de0f8499a57a53", size = 251018, upload-time = "2026-01-26T02:43:56.198Z" }, + { url = "https://files.pythonhosted.org/packages/fd/80/c959c5933adedb9ac15152e4067c702a808ea183a8b64cf8f31af8ad3155/multidict-6.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb0ce7b2a32d09892b3dd6cc44877a0d02a33241fafca5f25c8b6b62374f8b75", size = 258883, upload-time = "2026-01-26T02:43:57.499Z" }, + { url = "https://files.pythonhosted.org/packages/86/85/7ed40adafea3d4f1c8b916e3b5cc3a8e07dfcdcb9cd72800f4ed3ca1b387/multidict-6.7.1-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c3a32d23520ee37bf327d1e1a656fec76a2edd5c038bf43eddfa0572ec49c60b", size = 242413, upload-time = "2026-01-26T02:43:58.755Z" }, + { url = "https://files.pythonhosted.org/packages/d2/57/b8565ff533e48595503c785f8361ff9a4fde4d67de25c207cd0ba3befd03/multidict-6.7.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9c90fed18bffc0189ba814749fdcc102b536e83a9f738a9003e569acd540a733", size = 268404, upload-time = "2026-01-26T02:44:00.216Z" }, + { url = "https://files.pythonhosted.org/packages/e0/50/9810c5c29350f7258180dfdcb2e52783a0632862eb334c4896ac717cebcb/multidict-6.7.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:da62917e6076f512daccfbbde27f46fed1c98fee202f0559adec8ee0de67f71a", size = 269456, upload-time = "2026-01-26T02:44:02.202Z" }, + { url = "https://files.pythonhosted.org/packages/f3/8d/5e5be3ced1d12966fefb5c4ea3b2a5b480afcea36406559442c6e31d4a48/multidict-6.7.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bfde23ef6ed9db7eaee6c37dcec08524cb43903c60b285b172b6c094711b3961", size = 256322, upload-time = "2026-01-26T02:44:03.56Z" }, + { url = "https://files.pythonhosted.org/packages/31/6e/d8a26d81ac166a5592782d208dd90dfdc0a7a218adaa52b45a672b46c122/multidict-6.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3758692429e4e32f1ba0df23219cd0b4fc0a52f476726fff9337d1a57676a582", size = 253955, upload-time = "2026-01-26T02:44:04.845Z" }, + { url = "https://files.pythonhosted.org/packages/59/4c/7c672c8aad41534ba619bcd4ade7a0dc87ed6b8b5c06149b85d3dd03f0cd/multidict-6.7.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:398c1478926eca669f2fd6a5856b6de9c0acf23a2cb59a14c0ba5844fa38077e", size = 251254, upload-time = "2026-01-26T02:44:06.133Z" }, + { url = "https://files.pythonhosted.org/packages/7b/bd/84c24de512cbafbdbc39439f74e967f19570ce7924e3007174a29c348916/multidict-6.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c102791b1c4f3ab36ce4101154549105a53dc828f016356b3e3bcae2e3a039d3", size = 252059, upload-time = "2026-01-26T02:44:07.518Z" }, + { url = "https://files.pythonhosted.org/packages/fa/ba/f5449385510825b73d01c2d4087bf6d2fccc20a2d42ac34df93191d3dd03/multidict-6.7.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a088b62bd733e2ad12c50dad01b7d0166c30287c166e137433d3b410add807a6", size = 263588, upload-time = "2026-01-26T02:44:09.382Z" }, + { url = "https://files.pythonhosted.org/packages/d7/11/afc7c677f68f75c84a69fe37184f0f82fce13ce4b92f49f3db280b7e92b3/multidict-6.7.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3d51ff4785d58d3f6c91bdbffcb5e1f7ddfda557727043aa20d20ec4f65e324a", size = 259642, upload-time = "2026-01-26T02:44:10.73Z" }, + { url = "https://files.pythonhosted.org/packages/2b/17/ebb9644da78c4ab36403739e0e6e0e30ebb135b9caf3440825001a0bddcb/multidict-6.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc5907494fccf3e7d3f94f95c91d6336b092b5fc83811720fae5e2765890dfba", size = 251377, upload-time = "2026-01-26T02:44:12.042Z" }, + { url = "https://files.pythonhosted.org/packages/ca/a4/840f5b97339e27846c46307f2530a2805d9d537d8b8bd416af031cad7fa0/multidict-6.7.1-cp312-cp312-win32.whl", hash = "sha256:28ca5ce2fd9716631133d0e9a9b9a745ad7f60bac2bccafb56aa380fc0b6c511", size = 41887, upload-time = "2026-01-26T02:44:14.245Z" }, + { url = "https://files.pythonhosted.org/packages/80/31/0b2517913687895f5904325c2069d6a3b78f66cc641a86a2baf75a05dcbb/multidict-6.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcee94dfbd638784645b066074b338bc9cc155d4b4bffa4adce1615c5a426c19", size = 46053, upload-time = "2026-01-26T02:44:15.371Z" }, + { url = "https://files.pythonhosted.org/packages/0c/5b/aba28e4ee4006ae4c7df8d327d31025d760ffa992ea23812a601d226e682/multidict-6.7.1-cp312-cp312-win_arm64.whl", hash = "sha256:ba0a9fb644d0c1a2194cf7ffb043bd852cea63a57f66fbd33959f7dae18517bf", size = 43307, upload-time = "2026-01-26T02:44:16.852Z" }, + { url = "https://files.pythonhosted.org/packages/f2/22/929c141d6c0dba87d3e1d38fbdf1ba8baba86b7776469f2bc2d3227a1e67/multidict-6.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2b41f5fed0ed563624f1c17630cb9941cf2309d4df00e494b551b5f3e3d67a23", size = 76174, upload-time = "2026-01-26T02:44:18.509Z" }, + { url = "https://files.pythonhosted.org/packages/c7/75/bc704ae15fee974f8fccd871305e254754167dce5f9e42d88a2def741a1d/multidict-6.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84e61e3af5463c19b67ced91f6c634effb89ef8bfc5ca0267f954451ed4bb6a2", size = 45116, upload-time = "2026-01-26T02:44:19.745Z" }, + { url = "https://files.pythonhosted.org/packages/79/76/55cd7186f498ed080a18440c9013011eb548f77ae1b297206d030eb1180a/multidict-6.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:935434b9853c7c112eee7ac891bc4cb86455aa631269ae35442cb316790c1445", size = 43524, upload-time = "2026-01-26T02:44:21.571Z" }, + { url = "https://files.pythonhosted.org/packages/e9/3c/414842ef8d5a1628d68edee29ba0e5bcf235dbfb3ccd3ea303a7fe8c72ff/multidict-6.7.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:432feb25a1cb67fe82a9680b4d65fb542e4635cb3166cd9c01560651ad60f177", size = 249368, upload-time = "2026-01-26T02:44:22.803Z" }, + { url = "https://files.pythonhosted.org/packages/f6/32/befed7f74c458b4a525e60519fe8d87eef72bb1e99924fa2b0f9d97a221e/multidict-6.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e82d14e3c948952a1a85503817e038cba5905a3352de76b9a465075d072fba23", size = 256952, upload-time = "2026-01-26T02:44:24.306Z" }, + { url = "https://files.pythonhosted.org/packages/03/d6/c878a44ba877f366630c860fdf74bfb203c33778f12b6ac274936853c451/multidict-6.7.1-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4cfb48c6ea66c83bcaaf7e4dfa7ec1b6bbcf751b7db85a328902796dfde4c060", size = 240317, upload-time = "2026-01-26T02:44:25.772Z" }, + { url = "https://files.pythonhosted.org/packages/68/49/57421b4d7ad2e9e60e25922b08ceb37e077b90444bde6ead629095327a6f/multidict-6.7.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1d540e51b7e8e170174555edecddbd5538105443754539193e3e1061864d444d", size = 267132, upload-time = "2026-01-26T02:44:27.648Z" }, + { url = "https://files.pythonhosted.org/packages/b7/fe/ec0edd52ddbcea2a2e89e174f0206444a61440b40f39704e64dc807a70bd/multidict-6.7.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:273d23f4b40f3dce4d6c8a821c741a86dec62cded82e1175ba3d99be128147ed", size = 268140, upload-time = "2026-01-26T02:44:29.588Z" }, + { url = "https://files.pythonhosted.org/packages/b0/73/6e1b01cbeb458807aa0831742232dbdd1fa92bfa33f52a3f176b4ff3dc11/multidict-6.7.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d624335fd4fa1c08a53f8b4be7676ebde19cd092b3895c421045ca87895b429", size = 254277, upload-time = "2026-01-26T02:44:30.902Z" }, + { url = "https://files.pythonhosted.org/packages/6a/b2/5fb8c124d7561a4974c342bc8c778b471ebbeb3cc17df696f034a7e9afe7/multidict-6.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:12fad252f8b267cc75b66e8fc51b3079604e8d43a75428ffe193cd9e2195dfd6", size = 252291, upload-time = "2026-01-26T02:44:32.31Z" }, + { url = "https://files.pythonhosted.org/packages/5a/96/51d4e4e06bcce92577fcd488e22600bd38e4fd59c20cb49434d054903bd2/multidict-6.7.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:03ede2a6ffbe8ef936b92cb4529f27f42be7f56afcdab5ab739cd5f27fb1cbf9", size = 250156, upload-time = "2026-01-26T02:44:33.734Z" }, + { url = "https://files.pythonhosted.org/packages/db/6b/420e173eec5fba721a50e2a9f89eda89d9c98fded1124f8d5c675f7a0c0f/multidict-6.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:90efbcf47dbe33dcf643a1e400d67d59abeac5db07dc3f27d6bdeae497a2198c", size = 249742, upload-time = "2026-01-26T02:44:35.222Z" }, + { url = "https://files.pythonhosted.org/packages/44/a3/ec5b5bd98f306bc2aa297b8c6f11a46714a56b1e6ef5ebda50a4f5d7c5fb/multidict-6.7.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5c4b9bfc148f5a91be9244d6264c53035c8a0dcd2f51f1c3c6e30e30ebaa1c84", size = 262221, upload-time = "2026-01-26T02:44:36.604Z" }, + { url = "https://files.pythonhosted.org/packages/cd/f7/e8c0d0da0cd1e28d10e624604e1a36bcc3353aaebdfdc3a43c72bc683a12/multidict-6.7.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:401c5a650f3add2472d1d288c26deebc540f99e2fb83e9525007a74cd2116f1d", size = 258664, upload-time = "2026-01-26T02:44:38.008Z" }, + { url = "https://files.pythonhosted.org/packages/52/da/151a44e8016dd33feed44f730bd856a66257c1ee7aed4f44b649fb7edeb3/multidict-6.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:97891f3b1b3ffbded884e2916cacf3c6fc87b66bb0dde46f7357404750559f33", size = 249490, upload-time = "2026-01-26T02:44:39.386Z" }, + { url = "https://files.pythonhosted.org/packages/87/af/a3b86bf9630b732897f6fc3f4c4714b90aa4361983ccbdcd6c0339b21b0c/multidict-6.7.1-cp313-cp313-win32.whl", hash = "sha256:e1c5988359516095535c4301af38d8a8838534158f649c05dd1050222321bcb3", size = 41695, upload-time = "2026-01-26T02:44:41.318Z" }, + { url = "https://files.pythonhosted.org/packages/b2/35/e994121b0e90e46134673422dd564623f93304614f5d11886b1b3e06f503/multidict-6.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:960c83bf01a95b12b08fd54324a4eb1d5b52c88932b5cba5d6e712bb3ed12eb5", size = 45884, upload-time = "2026-01-26T02:44:42.488Z" }, + { url = "https://files.pythonhosted.org/packages/ca/61/42d3e5dbf661242a69c97ea363f2d7b46c567da8eadef8890022be6e2ab0/multidict-6.7.1-cp313-cp313-win_arm64.whl", hash = "sha256:563fe25c678aaba333d5399408f5ec3c383ca5b663e7f774dd179a520b8144df", size = 43122, upload-time = "2026-01-26T02:44:43.664Z" }, + { url = "https://files.pythonhosted.org/packages/6d/b3/e6b21c6c4f314bb956016b0b3ef2162590a529b84cb831c257519e7fde44/multidict-6.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:c76c4bec1538375dad9d452d246ca5368ad6e1c9039dadcf007ae59c70619ea1", size = 83175, upload-time = "2026-01-26T02:44:44.894Z" }, + { url = "https://files.pythonhosted.org/packages/fb/76/23ecd2abfe0957b234f6c960f4ade497f55f2c16aeb684d4ecdbf1c95791/multidict-6.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:57b46b24b5d5ebcc978da4ec23a819a9402b4228b8a90d9c656422b4bdd8a963", size = 48460, upload-time = "2026-01-26T02:44:46.106Z" }, + { url = "https://files.pythonhosted.org/packages/c4/57/a0ed92b23f3a042c36bc4227b72b97eca803f5f1801c1ab77c8a212d455e/multidict-6.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e954b24433c768ce78ab7929e84ccf3422e46deb45a4dc9f93438f8217fa2d34", size = 46930, upload-time = "2026-01-26T02:44:47.278Z" }, + { url = "https://files.pythonhosted.org/packages/b5/66/02ec7ace29162e447f6382c495dc95826bf931d3818799bbef11e8f7df1a/multidict-6.7.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3bd231490fa7217cc832528e1cd8752a96f0125ddd2b5749390f7c3ec8721b65", size = 242582, upload-time = "2026-01-26T02:44:48.604Z" }, + { url = "https://files.pythonhosted.org/packages/58/18/64f5a795e7677670e872673aca234162514696274597b3708b2c0d276cce/multidict-6.7.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:253282d70d67885a15c8a7716f3a73edf2d635793ceda8173b9ecc21f2fb8292", size = 250031, upload-time = "2026-01-26T02:44:50.544Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ed/e192291dbbe51a8290c5686f482084d31bcd9d09af24f63358c3d42fd284/multidict-6.7.1-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0b4c48648d7649c9335cf1927a8b87fa692de3dcb15faa676c6a6f1f1aabda43", size = 228596, upload-time = "2026-01-26T02:44:51.951Z" }, + { url = "https://files.pythonhosted.org/packages/1e/7e/3562a15a60cf747397e7f2180b0a11dc0c38d9175a650e75fa1b4d325e15/multidict-6.7.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:98bc624954ec4d2c7cb074b8eefc2b5d0ce7d482e410df446414355d158fe4ca", size = 257492, upload-time = "2026-01-26T02:44:53.902Z" }, + { url = "https://files.pythonhosted.org/packages/24/02/7d0f9eae92b5249bb50ac1595b295f10e263dd0078ebb55115c31e0eaccd/multidict-6.7.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1b99af4d9eec0b49927b4402bcbb58dea89d3e0db8806a4086117019939ad3dd", size = 255899, upload-time = "2026-01-26T02:44:55.316Z" }, + { url = "https://files.pythonhosted.org/packages/00/e3/9b60ed9e23e64c73a5cde95269ef1330678e9c6e34dd4eb6b431b85b5a10/multidict-6.7.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6aac4f16b472d5b7dc6f66a0d49dd57b0e0902090be16594dc9ebfd3d17c47e7", size = 247970, upload-time = "2026-01-26T02:44:56.783Z" }, + { url = "https://files.pythonhosted.org/packages/3e/06/538e58a63ed5cfb0bd4517e346b91da32fde409d839720f664e9a4ae4f9d/multidict-6.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:21f830fe223215dffd51f538e78c172ed7c7f60c9b96a2bf05c4848ad49921c3", size = 245060, upload-time = "2026-01-26T02:44:58.195Z" }, + { url = "https://files.pythonhosted.org/packages/b2/2f/d743a3045a97c895d401e9bd29aaa09b94f5cbdf1bd561609e5a6c431c70/multidict-6.7.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f5dd81c45b05518b9aa4da4aa74e1c93d715efa234fd3e8a179df611cc85e5f4", size = 235888, upload-time = "2026-01-26T02:44:59.57Z" }, + { url = "https://files.pythonhosted.org/packages/38/83/5a325cac191ab28b63c52f14f1131f3b0a55ba3b9aa65a6d0bf2a9b921a0/multidict-6.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:eb304767bca2bb92fb9c5bd33cedc95baee5bb5f6c88e63706533a1c06ad08c8", size = 243554, upload-time = "2026-01-26T02:45:01.054Z" }, + { url = "https://files.pythonhosted.org/packages/20/1f/9d2327086bd15da2725ef6aae624208e2ef828ed99892b17f60c344e57ed/multidict-6.7.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c9035dde0f916702850ef66460bc4239d89d08df4d02023a5926e7446724212c", size = 252341, upload-time = "2026-01-26T02:45:02.484Z" }, + { url = "https://files.pythonhosted.org/packages/e8/2c/2a1aa0280cf579d0f6eed8ee5211c4f1730bd7e06c636ba2ee6aafda302e/multidict-6.7.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:af959b9beeb66c822380f222f0e0a1889331597e81f1ded7f374f3ecb0fd6c52", size = 246391, upload-time = "2026-01-26T02:45:03.862Z" }, + { url = "https://files.pythonhosted.org/packages/e5/03/7ca022ffc36c5a3f6e03b179a5ceb829be9da5783e6fe395f347c0794680/multidict-6.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:41f2952231456154ee479651491e94118229844dd7226541788be783be2b5108", size = 243422, upload-time = "2026-01-26T02:45:05.296Z" }, + { url = "https://files.pythonhosted.org/packages/dc/1d/b31650eab6c5778aceed46ba735bd97f7c7d2f54b319fa916c0f96e7805b/multidict-6.7.1-cp313-cp313t-win32.whl", hash = "sha256:df9f19c28adcb40b6aae30bbaa1478c389efd50c28d541d76760199fc1037c32", size = 47770, upload-time = "2026-01-26T02:45:06.754Z" }, + { url = "https://files.pythonhosted.org/packages/ac/5b/2d2d1d522e51285bd61b1e20df8f47ae1a9d80839db0b24ea783b3832832/multidict-6.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:d54ecf9f301853f2c5e802da559604b3e95bb7a3b01a9c295c6ee591b9882de8", size = 53109, upload-time = "2026-01-26T02:45:08.044Z" }, + { url = "https://files.pythonhosted.org/packages/3d/a3/cc409ba012c83ca024a308516703cf339bdc4b696195644a7215a5164a24/multidict-6.7.1-cp313-cp313t-win_arm64.whl", hash = "sha256:5a37ca18e360377cfda1d62f5f382ff41f2b8c4ccb329ed974cc2e1643440118", size = 45573, upload-time = "2026-01-26T02:45:09.349Z" }, + { url = "https://files.pythonhosted.org/packages/91/cc/db74228a8be41884a567e88a62fd589a913708fcf180d029898c17a9a371/multidict-6.7.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8f333ec9c5eb1b7105e3b84b53141e66ca05a19a605368c55450b6ba208cb9ee", size = 75190, upload-time = "2026-01-26T02:45:10.651Z" }, + { url = "https://files.pythonhosted.org/packages/d5/22/492f2246bb5b534abd44804292e81eeaf835388901f0c574bac4eeec73c5/multidict-6.7.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:a407f13c188f804c759fc6a9f88286a565c242a76b27626594c133b82883b5c2", size = 44486, upload-time = "2026-01-26T02:45:11.938Z" }, + { url = "https://files.pythonhosted.org/packages/f1/4f/733c48f270565d78b4544f2baddc2fb2a245e5a8640254b12c36ac7ac68e/multidict-6.7.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0e161ddf326db5577c3a4cc2d8648f81456e8a20d40415541587a71620d7a7d1", size = 43219, upload-time = "2026-01-26T02:45:14.346Z" }, + { url = "https://files.pythonhosted.org/packages/24/bb/2c0c2287963f4259c85e8bcbba9182ced8d7fca65c780c38e99e61629d11/multidict-6.7.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1e3a8bb24342a8201d178c3b4984c26ba81a577c80d4d525727427460a50c22d", size = 245132, upload-time = "2026-01-26T02:45:15.712Z" }, + { url = "https://files.pythonhosted.org/packages/a7/f9/44d4b3064c65079d2467888794dea218d1601898ac50222ab8a9a8094460/multidict-6.7.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97231140a50f5d447d3164f994b86a0bed7cd016e2682f8650d6a9158e14fd31", size = 252420, upload-time = "2026-01-26T02:45:17.293Z" }, + { url = "https://files.pythonhosted.org/packages/8b/13/78f7275e73fa17b24c9a51b0bd9d73ba64bb32d0ed51b02a746eb876abe7/multidict-6.7.1-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6b10359683bd8806a200fd2909e7c8ca3a7b24ec1d8132e483d58e791d881048", size = 233510, upload-time = "2026-01-26T02:45:19.356Z" }, + { url = "https://files.pythonhosted.org/packages/4b/25/8167187f62ae3cbd52da7893f58cb036b47ea3fb67138787c76800158982/multidict-6.7.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:283ddac99f7ac25a4acadbf004cb5ae34480bbeb063520f70ce397b281859362", size = 264094, upload-time = "2026-01-26T02:45:20.834Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e7/69a3a83b7b030cf283fb06ce074a05a02322359783424d7edf0f15fe5022/multidict-6.7.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:538cec1e18c067d0e6103aa9a74f9e832904c957adc260e61cd9d8cf0c3b3d37", size = 260786, upload-time = "2026-01-26T02:45:22.818Z" }, + { url = "https://files.pythonhosted.org/packages/fe/3b/8ec5074bcfc450fe84273713b4b0a0dd47c0249358f5d82eb8104ffe2520/multidict-6.7.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7eee46ccb30ff48a1e35bb818cc90846c6be2b68240e42a78599166722cea709", size = 248483, upload-time = "2026-01-26T02:45:24.368Z" }, + { url = "https://files.pythonhosted.org/packages/48/5a/d5a99e3acbca0e29c5d9cba8f92ceb15dce78bab963b308ae692981e3a5d/multidict-6.7.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa263a02f4f2dd2d11a7b1bb4362aa7cb1049f84a9235d31adf63f30143469a0", size = 248403, upload-time = "2026-01-26T02:45:25.982Z" }, + { url = "https://files.pythonhosted.org/packages/35/48/e58cd31f6c7d5102f2a4bf89f96b9cf7e00b6c6f3d04ecc44417c00a5a3c/multidict-6.7.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:2e1425e2f99ec5bd36c15a01b690a1a2456209c5deed58f95469ffb46039ccbb", size = 240315, upload-time = "2026-01-26T02:45:27.487Z" }, + { url = "https://files.pythonhosted.org/packages/94/33/1cd210229559cb90b6786c30676bb0c58249ff42f942765f88793b41fdce/multidict-6.7.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:497394b3239fc6f0e13a78a3e1b61296e72bf1c5f94b4c4eb80b265c37a131cd", size = 245528, upload-time = "2026-01-26T02:45:28.991Z" }, + { url = "https://files.pythonhosted.org/packages/64/f2/6e1107d226278c876c783056b7db43d800bb64c6131cec9c8dfb6903698e/multidict-6.7.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:233b398c29d3f1b9676b4b6f75c518a06fcb2ea0b925119fb2c1bc35c05e1601", size = 258784, upload-time = "2026-01-26T02:45:30.503Z" }, + { url = "https://files.pythonhosted.org/packages/4d/c1/11f664f14d525e4a1b5327a82d4de61a1db604ab34c6603bb3c2cc63ad34/multidict-6.7.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:93b1818e4a6e0930454f0f2af7dfce69307ca03cdcfb3739bf4d91241967b6c1", size = 251980, upload-time = "2026-01-26T02:45:32.603Z" }, + { url = "https://files.pythonhosted.org/packages/e1/9f/75a9ac888121d0c5bbd4ecf4eead45668b1766f6baabfb3b7f66a410e231/multidict-6.7.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f33dc2a3abe9249ea5d8360f969ec7f4142e7ac45ee7014d8f8d5acddf178b7b", size = 243602, upload-time = "2026-01-26T02:45:34.043Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e7/50bf7b004cc8525d80dbbbedfdc7aed3e4c323810890be4413e589074032/multidict-6.7.1-cp314-cp314-win32.whl", hash = "sha256:3ab8b9d8b75aef9df299595d5388b14530839f6422333357af1339443cff777d", size = 40930, upload-time = "2026-01-26T02:45:36.278Z" }, + { url = "https://files.pythonhosted.org/packages/e0/bf/52f25716bbe93745595800f36fb17b73711f14da59ed0bb2eba141bc9f0f/multidict-6.7.1-cp314-cp314-win_amd64.whl", hash = "sha256:5e01429a929600e7dab7b166062d9bb54a5eed752384c7384c968c2afab8f50f", size = 45074, upload-time = "2026-01-26T02:45:37.546Z" }, + { url = "https://files.pythonhosted.org/packages/97/ab/22803b03285fa3a525f48217963da3a65ae40f6a1b6f6cf2768879e208f9/multidict-6.7.1-cp314-cp314-win_arm64.whl", hash = "sha256:4885cb0e817aef5d00a2e8451d4665c1808378dc27c2705f1bf4ef8505c0d2e5", size = 42471, upload-time = "2026-01-26T02:45:38.889Z" }, + { url = "https://files.pythonhosted.org/packages/e0/6d/f9293baa6146ba9507e360ea0292b6422b016907c393e2f63fc40ab7b7b5/multidict-6.7.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:0458c978acd8e6ea53c81eefaddbbee9c6c5e591f41b3f5e8e194780fe026581", size = 82401, upload-time = "2026-01-26T02:45:40.254Z" }, + { url = "https://files.pythonhosted.org/packages/7a/68/53b5494738d83558d87c3c71a486504d8373421c3e0dbb6d0db48ad42ee0/multidict-6.7.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:c0abd12629b0af3cf590982c0b413b1e7395cd4ec026f30986818ab95bfaa94a", size = 48143, upload-time = "2026-01-26T02:45:41.635Z" }, + { url = "https://files.pythonhosted.org/packages/37/e8/5284c53310dcdc99ce5d66563f6e5773531a9b9fe9ec7a615e9bc306b05f/multidict-6.7.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:14525a5f61d7d0c94b368a42cff4c9a4e7ba2d52e2672a7b23d84dc86fb02b0c", size = 46507, upload-time = "2026-01-26T02:45:42.99Z" }, + { url = "https://files.pythonhosted.org/packages/e4/fc/6800d0e5b3875568b4083ecf5f310dcf91d86d52573160834fb4bfcf5e4f/multidict-6.7.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:17307b22c217b4cf05033dabefe68255a534d637c6c9b0cc8382718f87be4262", size = 239358, upload-time = "2026-01-26T02:45:44.376Z" }, + { url = "https://files.pythonhosted.org/packages/41/75/4ad0973179361cdf3a113905e6e088173198349131be2b390f9fa4da5fc6/multidict-6.7.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a7e590ff876a3eaf1c02a4dfe0724b6e69a9e9de6d8f556816f29c496046e59", size = 246884, upload-time = "2026-01-26T02:45:47.167Z" }, + { url = "https://files.pythonhosted.org/packages/c3/9c/095bb28b5da139bd41fb9a5d5caff412584f377914bd8787c2aa98717130/multidict-6.7.1-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:5fa6a95dfee63893d80a34758cd0e0c118a30b8dcb46372bf75106c591b77889", size = 225878, upload-time = "2026-01-26T02:45:48.698Z" }, + { url = "https://files.pythonhosted.org/packages/07/d0/c0a72000243756e8f5a277b6b514fa005f2c73d481b7d9e47cd4568aa2e4/multidict-6.7.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a0543217a6a017692aa6ae5cc39adb75e587af0f3a82288b1492eb73dd6cc2a4", size = 253542, upload-time = "2026-01-26T02:45:50.164Z" }, + { url = "https://files.pythonhosted.org/packages/c0/6b/f69da15289e384ecf2a68837ec8b5ad8c33e973aa18b266f50fe55f24b8c/multidict-6.7.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f99fe611c312b3c1c0ace793f92464d8cd263cc3b26b5721950d977b006b6c4d", size = 252403, upload-time = "2026-01-26T02:45:51.779Z" }, + { url = "https://files.pythonhosted.org/packages/a2/76/b9669547afa5a1a25cd93eaca91c0da1c095b06b6d2d8ec25b713588d3a1/multidict-6.7.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9004d8386d133b7e6135679424c91b0b854d2d164af6ea3f289f8f2761064609", size = 244889, upload-time = "2026-01-26T02:45:53.27Z" }, + { url = "https://files.pythonhosted.org/packages/7e/a9/a50d2669e506dad33cfc45b5d574a205587b7b8a5f426f2fbb2e90882588/multidict-6.7.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e628ef0e6859ffd8273c69412a2465c4be4a9517d07261b33334b5ec6f3c7489", size = 241982, upload-time = "2026-01-26T02:45:54.919Z" }, + { url = "https://files.pythonhosted.org/packages/c5/bb/1609558ad8b456b4827d3c5a5b775c93b87878fd3117ed3db3423dfbce1b/multidict-6.7.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:841189848ba629c3552035a6a7f5bf3b02eb304e9fea7492ca220a8eda6b0e5c", size = 232415, upload-time = "2026-01-26T02:45:56.981Z" }, + { url = "https://files.pythonhosted.org/packages/d8/59/6f61039d2aa9261871e03ab9dc058a550d240f25859b05b67fd70f80d4b3/multidict-6.7.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:ce1bbd7d780bb5a0da032e095c951f7014d6b0a205f8318308140f1a6aba159e", size = 240337, upload-time = "2026-01-26T02:45:58.698Z" }, + { url = "https://files.pythonhosted.org/packages/a1/29/fdc6a43c203890dc2ae9249971ecd0c41deaedfe00d25cb6564b2edd99eb/multidict-6.7.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:b26684587228afed0d50cf804cc71062cc9c1cdf55051c4c6345d372947b268c", size = 248788, upload-time = "2026-01-26T02:46:00.862Z" }, + { url = "https://files.pythonhosted.org/packages/a9/14/a153a06101323e4cf086ecee3faadba52ff71633d471f9685c42e3736163/multidict-6.7.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:9f9af11306994335398293f9958071019e3ab95e9a707dc1383a35613f6abcb9", size = 242842, upload-time = "2026-01-26T02:46:02.824Z" }, + { url = "https://files.pythonhosted.org/packages/41/5f/604ae839e64a4a6efc80db94465348d3b328ee955e37acb24badbcd24d83/multidict-6.7.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b4938326284c4f1224178a560987b6cf8b4d38458b113d9b8c1db1a836e640a2", size = 240237, upload-time = "2026-01-26T02:46:05.898Z" }, + { url = "https://files.pythonhosted.org/packages/5f/60/c3a5187bf66f6fb546ff4ab8fb5a077cbdd832d7b1908d4365c7f74a1917/multidict-6.7.1-cp314-cp314t-win32.whl", hash = "sha256:98655c737850c064a65e006a3df7c997cd3b220be4ec8fe26215760b9697d4d7", size = 48008, upload-time = "2026-01-26T02:46:07.468Z" }, + { url = "https://files.pythonhosted.org/packages/0c/f7/addf1087b860ac60e6f382240f64fb99f8bfb532bb06f7c542b83c29ca61/multidict-6.7.1-cp314-cp314t-win_amd64.whl", hash = "sha256:497bde6223c212ba11d462853cfa4f0ae6ef97465033e7dc9940cdb3ab5b48e5", size = 53542, upload-time = "2026-01-26T02:46:08.809Z" }, + { url = "https://files.pythonhosted.org/packages/4c/81/4629d0aa32302ef7b2ec65c75a728cc5ff4fa410c50096174c1632e70b3e/multidict-6.7.1-cp314-cp314t-win_arm64.whl", hash = "sha256:2bbd113e0d4af5db41d5ebfe9ccaff89de2120578164f86a5d17d5a576d1e5b2", size = 44719, upload-time = "2026-01-26T02:46:11.146Z" }, + { url = "https://files.pythonhosted.org/packages/81/08/7036c080d7117f28a4af526d794aab6a84463126db031b007717c1a6676e/multidict-6.7.1-py3-none-any.whl", hash = "sha256:55d97cc6dae627efa6a6e548885712d4864b81110ac76fa4e534c03819fa4a56", size = 12319, upload-time = "2026-01-26T02:46:44.004Z" }, ] [[package]] name = "mypy-protobuf" -version = "3.6.0" +version = "5.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "protobuf" }, { name = "types-protobuf" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4d/6f/282d64d66bf48ce60e38a6560753f784e0f88ab245ac2fb5e93f701a36cd/mypy-protobuf-3.6.0.tar.gz", hash = "sha256:02f242eb3409f66889f2b1a3aa58356ec4d909cdd0f93115622e9e70366eca3c", size = 24445, upload-time = "2024-04-01T20:24:42.837Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/73/d6b999782ae22f16971cc05378b3b33f6a89ede3b9619e8366aa23484bca/mypy_protobuf-3.6.0-py3-none-any.whl", hash = "sha256:56176e4d569070e7350ea620262478b49b7efceba4103d468448f1d21492fd6c", size = 16434, upload-time = "2024-04-01T20:24:40.583Z" }, -] - -[[package]] -name = "myst-nb" -version = "0.17.2" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.9'", -] -dependencies = [ - { name = "importlib-metadata", marker = "python_full_version < '3.9'" }, - { name = "ipykernel", marker = "python_full_version < '3.9'" }, - { name = "ipython", marker = "python_full_version < '3.9'" }, - { name = "jupyter-cache", marker = "python_full_version < '3.9'" }, - { name = "myst-parser", version = "0.18.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "nbclient", marker = "python_full_version < '3.9'" }, - { name = "nbformat", marker = "python_full_version < '3.9'" }, - { name = "pyyaml", marker = "python_full_version < '3.9'" }, - { name = "sphinx", version = "5.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "typing-extensions", marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/15/e6/6ec454f930f1d542f1c1d9562d939acc41220408ff996b7c5b3b957fba1d/myst-nb-0.17.2.tar.gz", hash = "sha256:0f61386515fab07c73646adca97fff2f69f41e90d313a260217c5bbe419d858b", size = 74184, upload-time = "2023-04-21T12:38:17.712Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/48/658827446368bca30a94e545598065587ece9cd09b678d7d2895c37a59d2/mypy_protobuf-5.0.0.tar.gz", hash = "sha256:6fdd1cfdbb4419c713291d800a332d4bba6510dbd1341ed95e0bcc82fcadb6b5", size = 37309, upload-time = "2026-01-13T17:10:12.616Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/72/84/38b6468146945cf0466a149763d62bd0264cb221eaa74c979498ea215f22/myst_nb-0.17.2-py3-none-any.whl", hash = "sha256:132ca4d0f5c308fdd4b6fdaba077712e28e119ccdafd04d6e41b51aac5483494", size = 78636, upload-time = "2023-04-21T12:38:15.807Z" }, + { url = "https://files.pythonhosted.org/packages/b4/b1/ab1e7a49930a8c1d1f7a570bbd4ec7d552ef035acc7aa4b97906e17a34a9/mypy_protobuf-5.0.0-py3-none-any.whl", hash = "sha256:3a7dd753ef3e3b8783a824eb51f07983f62812f9ec066e4fbb1b22d6c5dc36d0", size = 26008, upload-time = "2026-01-13T17:10:11.053Z" }, ] [[package]] name = "myst-nb" -version = "1.1.2" +version = "1.4.0" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.9' and python_full_version < '3.12'", - "python_full_version == '3.12.*'", - "python_full_version >= '3.13'", -] dependencies = [ - { name = "importlib-metadata", marker = "python_full_version >= '3.9'" }, - { name = "ipykernel", marker = "python_full_version >= '3.9'" }, - { name = "ipython", marker = "python_full_version >= '3.9'" }, - { name = "jupyter-cache", marker = "python_full_version >= '3.9'" }, - { name = "myst-parser", version = "3.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "nbclient", marker = "python_full_version >= '3.9'" }, - { name = "nbformat", marker = "python_full_version >= '3.9'" }, - { name = "pyyaml", marker = "python_full_version >= '3.9'" }, - { name = "sphinx", version = "7.1.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "typing-extensions", marker = "python_full_version >= '3.9'" }, + { name = "importlib-metadata" }, + { name = "ipykernel" }, + { name = "ipython", version = "8.38.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "ipython", version = "9.10.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "ipython", version = "9.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "jupyter-cache" }, + { name = "myst-parser", version = "4.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "myst-parser", version = "5.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "pyyaml" }, + { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/04/e3/01c093f6a46be2edc0fd370cbf6d227495ea19452939b2810b36657c63d4/myst_nb-1.1.2.tar.gz", hash = "sha256:961b4005657029ca89892a4c75edbf0856c54ceaf6172368b46bf7676c1f7700", size = 78036, upload-time = "2024-09-24T13:29:47.299Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/b4/ff1abeea67e8cfe0a8c033389f6d1d8b0bfecfd611befb5cbdeab884fce6/myst_nb-1.4.0.tar.gz", hash = "sha256:c145598de62446a6fd009773dd071a40d3b76106ace780de1abdfc6961f614c2", size = 82285, upload-time = "2026-03-02T21:14:56.95Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/45/cf78b2f09c46b36f486b75c34a8b48580e53b543bd9a467b3c7eb9054b70/myst_nb-1.1.2-py3-none-any.whl", hash = "sha256:9b7034e5d62640cb6daf03f9ca16ef45d0462fced27944c77aa3f98c7cdcd566", size = 80281, upload-time = "2024-09-24T13:29:45.73Z" }, + { url = "https://files.pythonhosted.org/packages/94/93/0a378b48488879a1d925b42a804edfc6e0cd0ef854220f2dce738a46e7e9/myst_nb-1.4.0-py3-none-any.whl", hash = "sha256:0e2c86e7d3b82c3aa51383f82d6268f7714f3b772c23a796ab09538a8e68b4e4", size = 82555, upload-time = "2026-03-02T21:14:55.652Z" }, ] [[package]] name = "myst-parser" -version = "0.18.1" +version = "4.0.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version < '3.9'", + "python_full_version < '3.11'", ] dependencies = [ - { name = "docutils", marker = "python_full_version < '3.9'" }, - { name = "jinja2", marker = "python_full_version < '3.9'" }, - { name = "markdown-it-py", version = "2.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "mdit-py-plugins", version = "0.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "pyyaml", marker = "python_full_version < '3.9'" }, - { name = "sphinx", version = "5.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "typing-extensions", marker = "python_full_version < '3.9'" }, + { name = "docutils", version = "0.21.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "jinja2", marker = "python_full_version < '3.11'" }, + { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "mdit-py-plugins", marker = "python_full_version < '3.11'" }, + { name = "pyyaml", marker = "python_full_version < '3.11'" }, + { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/68/13/91438d3b835a022fcacd858a7106d4813cfccf98b1fd9a6196cfa2c859df/myst-parser-0.18.1.tar.gz", hash = "sha256:79317f4bb2c13053dd6e64f9da1ba1da6cd9c40c8a430c447a7b146a594c246d", size = 64147, upload-time = "2022-09-27T09:57:45.183Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/a5/9626ba4f73555b3735ad86247a8077d4603aa8628537687c839ab08bfe44/myst_parser-4.0.1.tar.gz", hash = "sha256:5cfea715e4f3574138aecbf7d54132296bfd72bb614d31168f48c477a830a7c4", size = 93985, upload-time = "2025-02-12T10:53:03.833Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/72/fd/594c936c65e707deda5670e8fff5ca2c948a12e922813eab5d316694e9ca/myst_parser-0.18.1-py3-none-any.whl", hash = "sha256:61b275b85d9f58aa327f370913ae1bec26ebad372cc99f3ab85c8ec3ee8d9fb8", size = 58157, upload-time = "2022-09-27T09:57:42.689Z" }, + { url = "https://files.pythonhosted.org/packages/5f/df/76d0321c3797b54b60fef9ec3bd6f4cfd124b9e422182156a1dd418722cf/myst_parser-4.0.1-py3-none-any.whl", hash = "sha256:9134e88959ec3b5780aedf8a99680ea242869d012e8821db3126d427edc9c95d", size = 84579, upload-time = "2025-02-12T10:53:02.078Z" }, ] [[package]] name = "myst-parser" -version = "3.0.1" +version = "5.0.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.9' and python_full_version < '3.12'", - "python_full_version == '3.12.*'", - "python_full_version >= '3.13'", + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", ] dependencies = [ - { name = "docutils", marker = "python_full_version >= '3.9'" }, - { name = "jinja2", marker = "python_full_version >= '3.9'" }, - { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "mdit-py-plugins", version = "0.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "pyyaml", marker = "python_full_version >= '3.9'" }, - { name = "sphinx", version = "7.1.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "docutils", version = "0.22.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "jinja2", marker = "python_full_version >= '3.11'" }, + { name = "markdown-it-py", version = "4.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "mdit-py-plugins", marker = "python_full_version >= '3.11'" }, + { name = "pyyaml", marker = "python_full_version >= '3.11'" }, + { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/49/64/e2f13dac02f599980798c01156393b781aec983b52a6e4057ee58f07c43a/myst_parser-3.0.1.tar.gz", hash = "sha256:88f0cb406cb363b077d176b51c476f62d60604d68a8dcdf4832e080441301a87", size = 92392, upload-time = "2024-04-28T20:22:42.116Z" } +sdist = { url = "https://files.pythonhosted.org/packages/33/fa/7b45eef11b7971f0beb29d27b7bfe0d747d063aa29e170d9edd004733c8a/myst_parser-5.0.0.tar.gz", hash = "sha256:f6f231452c56e8baa662cc352c548158f6a16fcbd6e3800fc594978002b94f3a", size = 98535, upload-time = "2026-01-15T09:08:18.036Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/de/21aa8394f16add8f7427f0a1326ccd2b3a2a8a3245c9252bc5ac034c6155/myst_parser-3.0.1-py3-none-any.whl", hash = "sha256:6457aaa33a5d474aca678b8ead9b3dc298e89c68e67012e73146ea6fd54babf1", size = 83163, upload-time = "2024-04-28T20:22:39.985Z" }, + { url = "https://files.pythonhosted.org/packages/d3/ac/686789b9145413f1a61878c407210e41bfdb097976864e0913078b24098c/myst_parser-5.0.0-py3-none-any.whl", hash = "sha256:ab31e516024918296e169139072b81592336f2fef55b8986aa31c9f04b5f7211", size = 84533, upload-time = "2026-01-15T09:08:16.788Z" }, ] [[package]] name = "nbclient" -version = "0.6.8" +version = "0.10.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-client" }, + { name = "jupyter-core" }, { name = "nbformat" }, - { name = "nest-asyncio" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/01/21/917a25fbc2b37ed37135be97efb4c98526008505451ffa841adcd7d11ed5/nbclient-0.6.8.tar.gz", hash = "sha256:268fde3457cafe1539e32eb1c6d796bbedb90b9e92bacd3e43d83413734bb0e8", size = 78917, upload-time = "2022-09-09T12:36:52.332Z" } +sdist = { url = "https://files.pythonhosted.org/packages/56/91/1c1d5a4b9a9ebba2b4e32b8c852c2975c872aec1fe42ab5e516b2cecd193/nbclient-0.10.4.tar.gz", hash = "sha256:1e54091b16e6da39e297b0ece3e10f6f29f4ac4e8ee515d29f8a7099bd6553c9", size = 62554, upload-time = "2025-12-23T07:45:46.369Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/1d/de31c4139603b3f43147dca571de7d1928bd23d5c674865342bd457ec419/nbclient-0.6.8-py3-none-any.whl", hash = "sha256:7cce8b415888539180535953f80ea2385cdbb444944cdeb73ffac1556fdbc228", size = 71848, upload-time = "2022-09-09T12:36:50.326Z" }, + { url = "https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl", hash = "sha256:9162df5a7373d70d606527300a95a975a47c137776cd942e52d9c7e29ff83440", size = 25465, upload-time = "2025-12-23T07:45:44.51Z" }, ] [[package]] @@ -1157,7 +1247,7 @@ wheels = [ [[package]] name = "nbmake" -version = "1.5.4" +version = "1.5.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ipykernel" }, @@ -1166,9 +1256,9 @@ dependencies = [ { name = "pygments" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/db/25/46a5818e699dc72e708754a8b6cfe4383d714d6d2578a795e9393bd5a0a8/nbmake-1.5.4.tar.gz", hash = "sha256:56417fe80d50069671122955532df6e26369a23f68b9c6e2191ae9cfef19abb2", size = 11306, upload-time = "2024-06-05T18:18:29.427Z" } +sdist = { url = "https://files.pythonhosted.org/packages/43/9a/aae201cee5639e1d562b3843af8fd9f8d018bb323e776a2b973bdd5fc64b/nbmake-1.5.5.tar.gz", hash = "sha256:239dc868ea13a7c049746e2aba2c229bd0f6cdbc6bfa1d22f4c88638aa4c5f5c", size = 85929, upload-time = "2024-12-23T18:33:46.774Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/b6/4c8649228a418b0a4ea0577fcc921d9facef9f2b1d8669f2808f2cdf1429/nbmake-1.5.4-py3-none-any.whl", hash = "sha256:8e440a61a7d4ab303064aa86b8d2c088177c89960e2b4a0f91a768dc9f68382b", size = 12860, upload-time = "2024-06-05T18:18:27.657Z" }, + { url = "https://files.pythonhosted.org/packages/eb/be/b257e12f9710819fde40adc972578bee6b72c5992da1bc8369bef2597756/nbmake-1.5.5-py3-none-any.whl", hash = "sha256:c6fbe6e48b60cacac14af40b38bf338a3b88f47f085c54ac5b8639ff0babaf4b", size = 12818, upload-time = "2024-12-23T18:33:44.566Z" }, ] [[package]] @@ -1182,179 +1272,177 @@ wheels = [ [[package]] name = "nodeenv" -version = "1.9.1" +version = "1.10.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } +sdist = { url = "https://files.pythonhosted.org/packages/24/bf/d1bda4f6168e0b2e9e5958945e01910052158313224ada5ce1fb2e1113b8/nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb", size = 55611, upload-time = "2025-12-20T14:08:54.006Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, + { url = "https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827", size = 23438, upload-time = "2025-12-20T14:08:52.782Z" }, ] [[package]] name = "numpy" -version = "1.24.4" +version = "2.2.6" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version < '3.9'", -] -sdist = { url = "https://files.pythonhosted.org/packages/a4/9b/027bec52c633f6556dba6b722d9a0befb40498b9ceddd29cbe67a45a127c/numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463", size = 10911229, upload-time = "2023-06-26T13:39:33.218Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/80/6cdfb3e275d95155a34659163b83c09e3a3ff9f1456880bec6cc63d71083/numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64", size = 19789140, upload-time = "2023-06-26T13:22:33.184Z" }, - { url = "https://files.pythonhosted.org/packages/64/5f/3f01d753e2175cfade1013eea08db99ba1ee4bdb147ebcf3623b75d12aa7/numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1", size = 13854297, upload-time = "2023-06-26T13:22:59.541Z" }, - { url = "https://files.pythonhosted.org/packages/5a/b3/2f9c21d799fa07053ffa151faccdceeb69beec5a010576b8991f614021f7/numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4", size = 13995611, upload-time = "2023-06-26T13:23:22.167Z" }, - { url = "https://files.pythonhosted.org/packages/10/be/ae5bf4737cb79ba437879915791f6f26d92583c738d7d960ad94e5c36adf/numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6", size = 17282357, upload-time = "2023-06-26T13:23:51.446Z" }, - { url = "https://files.pythonhosted.org/packages/c0/64/908c1087be6285f40e4b3e79454552a701664a079321cff519d8c7051d06/numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc", size = 12429222, upload-time = "2023-06-26T13:24:13.849Z" }, - { url = "https://files.pythonhosted.org/packages/22/55/3d5a7c1142e0d9329ad27cece17933b0e2ab4e54ddc5c1861fbfeb3f7693/numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e", size = 14841514, upload-time = "2023-06-26T13:24:38.129Z" }, - { url = "https://files.pythonhosted.org/packages/a9/cc/5ed2280a27e5dab12994c884f1f4d8c3bd4d885d02ae9e52a9d213a6a5e2/numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810", size = 19775508, upload-time = "2023-06-26T13:25:08.882Z" }, - { url = "https://files.pythonhosted.org/packages/c0/bc/77635c657a3668cf652806210b8662e1aff84b818a55ba88257abf6637a8/numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254", size = 13840033, upload-time = "2023-06-26T13:25:33.417Z" }, - { url = "https://files.pythonhosted.org/packages/a7/4c/96cdaa34f54c05e97c1c50f39f98d608f96f0677a6589e64e53104e22904/numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7", size = 13991951, upload-time = "2023-06-26T13:25:55.725Z" }, - { url = "https://files.pythonhosted.org/packages/22/97/dfb1a31bb46686f09e68ea6ac5c63fdee0d22d7b23b8f3f7ea07712869ef/numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5", size = 17278923, upload-time = "2023-06-26T13:26:25.658Z" }, - { url = "https://files.pythonhosted.org/packages/35/e2/76a11e54139654a324d107da1d98f99e7aa2a7ef97cfd7c631fba7dbde71/numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d", size = 12422446, upload-time = "2023-06-26T13:26:49.302Z" }, - { url = "https://files.pythonhosted.org/packages/d8/ec/ebef2f7d7c28503f958f0f8b992e7ce606fb74f9e891199329d5f5f87404/numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694", size = 14834466, upload-time = "2023-06-26T13:27:16.029Z" }, - { url = "https://files.pythonhosted.org/packages/11/10/943cfb579f1a02909ff96464c69893b1d25be3731b5d3652c2e0cf1281ea/numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61", size = 19780722, upload-time = "2023-06-26T13:27:49.573Z" }, - { url = "https://files.pythonhosted.org/packages/a7/ae/f53b7b265fdc701e663fbb322a8e9d4b14d9cb7b2385f45ddfabfc4327e4/numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f", size = 13843102, upload-time = "2023-06-26T13:28:12.288Z" }, - { url = "https://files.pythonhosted.org/packages/25/6f/2586a50ad72e8dbb1d8381f837008a0321a3516dfd7cb57fc8cf7e4bb06b/numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e", size = 14039616, upload-time = "2023-06-26T13:28:35.659Z" }, - { url = "https://files.pythonhosted.org/packages/98/5d/5738903efe0ecb73e51eb44feafba32bdba2081263d40c5043568ff60faf/numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc", size = 17316263, upload-time = "2023-06-26T13:29:09.272Z" }, - { url = "https://files.pythonhosted.org/packages/d1/57/8d328f0b91c733aa9aa7ee540dbc49b58796c862b4fbcb1146c701e888da/numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2", size = 12455660, upload-time = "2023-06-26T13:29:33.434Z" }, - { url = "https://files.pythonhosted.org/packages/69/65/0d47953afa0ad569d12de5f65d964321c208492064c38fe3b0b9744f8d44/numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706", size = 14868112, upload-time = "2023-06-26T13:29:58.385Z" }, - { url = "https://files.pythonhosted.org/packages/9a/cd/d5b0402b801c8a8b56b04c1e85c6165efab298d2f0ab741c2406516ede3a/numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400", size = 19816549, upload-time = "2023-06-26T13:30:36.976Z" }, - { url = "https://files.pythonhosted.org/packages/14/27/638aaa446f39113a3ed38b37a66243e21b38110d021bfcb940c383e120f2/numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f", size = 13879950, upload-time = "2023-06-26T13:31:01.787Z" }, - { url = "https://files.pythonhosted.org/packages/8f/27/91894916e50627476cff1a4e4363ab6179d01077d71b9afed41d9e1f18bf/numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9", size = 14030228, upload-time = "2023-06-26T13:31:26.696Z" }, - { url = "https://files.pythonhosted.org/packages/7a/7c/d7b2a0417af6428440c0ad7cb9799073e507b1a465f827d058b826236964/numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d", size = 17311170, upload-time = "2023-06-26T13:31:56.615Z" }, - { url = "https://files.pythonhosted.org/packages/18/9d/e02ace5d7dfccee796c37b995c63322674daf88ae2f4a4724c5dd0afcc91/numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835", size = 12454918, upload-time = "2023-06-26T13:32:16.8Z" }, - { url = "https://files.pythonhosted.org/packages/63/38/6cc19d6b8bfa1d1a459daf2b3fe325453153ca7019976274b6f33d8b5663/numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8", size = 14867441, upload-time = "2023-06-26T13:32:40.521Z" }, - { url = "https://files.pythonhosted.org/packages/a4/fd/8dff40e25e937c94257455c237b9b6bf5a30d42dd1cc11555533be099492/numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef", size = 19156590, upload-time = "2023-06-26T13:33:10.36Z" }, - { url = "https://files.pythonhosted.org/packages/42/e7/4bf953c6e05df90c6d351af69966384fed8e988d0e8c54dad7103b59f3ba/numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a", size = 16705744, upload-time = "2023-06-26T13:33:36.703Z" }, - { url = "https://files.pythonhosted.org/packages/fc/dd/9106005eb477d022b60b3817ed5937a43dad8fd1f20b0610ea8a32fcb407/numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2", size = 14734290, upload-time = "2023-06-26T13:34:05.409Z" }, + "python_full_version < '3.11'", +] +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, + { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, + { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828, upload-time = "2025-05-17T21:37:56.699Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006, upload-time = "2025-05-17T21:38:18.291Z" }, + { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765, upload-time = "2025-05-17T21:38:27.319Z" }, + { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736, upload-time = "2025-05-17T21:38:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719, upload-time = "2025-05-17T21:38:58.433Z" }, + { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072, upload-time = "2025-05-17T21:39:22.638Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213, upload-time = "2025-05-17T21:39:45.865Z" }, + { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632, upload-time = "2025-05-17T21:40:13.331Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532, upload-time = "2025-05-17T21:43:46.099Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885, upload-time = "2025-05-17T21:44:05.145Z" }, + { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467, upload-time = "2025-05-17T21:40:44Z" }, + { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144, upload-time = "2025-05-17T21:41:05.695Z" }, + { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217, upload-time = "2025-05-17T21:41:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014, upload-time = "2025-05-17T21:41:27.321Z" }, + { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935, upload-time = "2025-05-17T21:41:49.738Z" }, + { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122, upload-time = "2025-05-17T21:42:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143, upload-time = "2025-05-17T21:42:37.464Z" }, + { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260, upload-time = "2025-05-17T21:43:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225, upload-time = "2025-05-17T21:43:16.254Z" }, + { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374, upload-time = "2025-05-17T21:43:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, + { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, + { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, ] [[package]] name = "numpy" -version = "1.26.4" +version = "2.4.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.9' and python_full_version < '3.12'", - "python_full_version == '3.12.*'", -] -sdist = { url = "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", size = 15786129, upload-time = "2024-02-06T00:26:44.495Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/94/ace0fdea5241a27d13543ee117cbc65868e82213fb31a8eb7fe9ff23f313/numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0", size = 20631468, upload-time = "2024-02-05T23:48:01.194Z" }, - { url = "https://files.pythonhosted.org/packages/20/f7/b24208eba89f9d1b58c1668bc6c8c4fd472b20c45573cb767f59d49fb0f6/numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a", size = 13966411, upload-time = "2024-02-05T23:48:29.038Z" }, - { url = "https://files.pythonhosted.org/packages/fc/a5/4beee6488160798683eed5bdb7eead455892c3b4e1f78d79d8d3f3b084ac/numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4", size = 14219016, upload-time = "2024-02-05T23:48:54.098Z" }, - { url = "https://files.pythonhosted.org/packages/4b/d7/ecf66c1cd12dc28b4040b15ab4d17b773b87fa9d29ca16125de01adb36cd/numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f", size = 18240889, upload-time = "2024-02-05T23:49:25.361Z" }, - { url = "https://files.pythonhosted.org/packages/24/03/6f229fe3187546435c4f6f89f6d26c129d4f5bed40552899fcf1f0bf9e50/numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a", size = 13876746, upload-time = "2024-02-05T23:49:51.983Z" }, - { url = "https://files.pythonhosted.org/packages/39/fe/39ada9b094f01f5a35486577c848fe274e374bbf8d8f472e1423a0bbd26d/numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2", size = 18078620, upload-time = "2024-02-05T23:50:22.515Z" }, - { url = "https://files.pythonhosted.org/packages/d5/ef/6ad11d51197aad206a9ad2286dc1aac6a378059e06e8cf22cd08ed4f20dc/numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07", size = 5972659, upload-time = "2024-02-05T23:50:35.834Z" }, - { url = "https://files.pythonhosted.org/packages/19/77/538f202862b9183f54108557bfda67e17603fc560c384559e769321c9d92/numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5", size = 15808905, upload-time = "2024-02-05T23:51:03.701Z" }, - { url = "https://files.pythonhosted.org/packages/11/57/baae43d14fe163fa0e4c47f307b6b2511ab8d7d30177c491960504252053/numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71", size = 20630554, upload-time = "2024-02-05T23:51:50.149Z" }, - { url = "https://files.pythonhosted.org/packages/1a/2e/151484f49fd03944c4a3ad9c418ed193cfd02724e138ac8a9505d056c582/numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef", size = 13997127, upload-time = "2024-02-05T23:52:15.314Z" }, - { url = "https://files.pythonhosted.org/packages/79/ae/7e5b85136806f9dadf4878bf73cf223fe5c2636818ba3ab1c585d0403164/numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e", size = 14222994, upload-time = "2024-02-05T23:52:47.569Z" }, - { url = "https://files.pythonhosted.org/packages/3a/d0/edc009c27b406c4f9cbc79274d6e46d634d139075492ad055e3d68445925/numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5", size = 18252005, upload-time = "2024-02-05T23:53:15.637Z" }, - { url = "https://files.pythonhosted.org/packages/09/bf/2b1aaf8f525f2923ff6cfcf134ae5e750e279ac65ebf386c75a0cf6da06a/numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a", size = 13885297, upload-time = "2024-02-05T23:53:42.16Z" }, - { url = "https://files.pythonhosted.org/packages/df/a0/4e0f14d847cfc2a633a1c8621d00724f3206cfeddeb66d35698c4e2cf3d2/numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a", size = 18093567, upload-time = "2024-02-05T23:54:11.696Z" }, - { url = "https://files.pythonhosted.org/packages/d2/b7/a734c733286e10a7f1a8ad1ae8c90f2d33bf604a96548e0a4a3a6739b468/numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20", size = 5968812, upload-time = "2024-02-05T23:54:26.453Z" }, - { url = "https://files.pythonhosted.org/packages/3f/6b/5610004206cf7f8e7ad91c5a85a8c71b2f2f8051a0c0c4d5916b76d6cbb2/numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2", size = 15811913, upload-time = "2024-02-05T23:54:53.933Z" }, - { url = "https://files.pythonhosted.org/packages/95/12/8f2020a8e8b8383ac0177dc9570aad031a3beb12e38847f7129bacd96228/numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218", size = 20335901, upload-time = "2024-02-05T23:55:32.801Z" }, - { url = "https://files.pythonhosted.org/packages/75/5b/ca6c8bd14007e5ca171c7c03102d17b4f4e0ceb53957e8c44343a9546dcc/numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", size = 13685868, upload-time = "2024-02-05T23:55:56.28Z" }, - { url = "https://files.pythonhosted.org/packages/79/f8/97f10e6755e2a7d027ca783f63044d5b1bc1ae7acb12afe6a9b4286eac17/numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b", size = 13925109, upload-time = "2024-02-05T23:56:20.368Z" }, - { url = "https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed", size = 17950613, upload-time = "2024-02-05T23:56:56.054Z" }, - { url = "https://files.pythonhosted.org/packages/4c/0c/9c603826b6465e82591e05ca230dfc13376da512b25ccd0894709b054ed0/numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a", size = 13572172, upload-time = "2024-02-05T23:57:21.56Z" }, - { url = "https://files.pythonhosted.org/packages/76/8c/2ba3902e1a0fc1c74962ea9bb33a534bb05984ad7ff9515bf8d07527cadd/numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0", size = 17786643, upload-time = "2024-02-05T23:57:56.585Z" }, - { url = "https://files.pythonhosted.org/packages/28/4a/46d9e65106879492374999e76eb85f87b15328e06bd1550668f79f7b18c6/numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110", size = 5677803, upload-time = "2024-02-05T23:58:08.963Z" }, - { url = "https://files.pythonhosted.org/packages/16/2e/86f24451c2d530c88daf997cb8d6ac622c1d40d19f5a031ed68a4b73a374/numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818", size = 15517754, upload-time = "2024-02-05T23:58:36.364Z" }, - { url = "https://files.pythonhosted.org/packages/7d/24/ce71dc08f06534269f66e73c04f5709ee024a1afe92a7b6e1d73f158e1f8/numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c", size = 20636301, upload-time = "2024-02-05T23:59:10.976Z" }, - { url = "https://files.pythonhosted.org/packages/ae/8c/ab03a7c25741f9ebc92684a20125fbc9fc1b8e1e700beb9197d750fdff88/numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be", size = 13971216, upload-time = "2024-02-05T23:59:35.472Z" }, - { url = "https://files.pythonhosted.org/packages/6d/64/c3bcdf822269421d85fe0d64ba972003f9bb4aa9a419da64b86856c9961f/numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764", size = 14226281, upload-time = "2024-02-05T23:59:59.372Z" }, - { url = "https://files.pythonhosted.org/packages/54/30/c2a907b9443cf42b90c17ad10c1e8fa801975f01cb9764f3f8eb8aea638b/numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3", size = 18249516, upload-time = "2024-02-06T00:00:32.79Z" }, - { url = "https://files.pythonhosted.org/packages/43/12/01a563fc44c07095996d0129b8899daf89e4742146f7044cdbdb3101c57f/numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd", size = 13882132, upload-time = "2024-02-06T00:00:58.197Z" }, - { url = "https://files.pythonhosted.org/packages/16/ee/9df80b06680aaa23fc6c31211387e0db349e0e36d6a63ba3bd78c5acdf11/numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c", size = 18084181, upload-time = "2024-02-06T00:01:31.21Z" }, - { url = "https://files.pythonhosted.org/packages/28/7d/4b92e2fe20b214ffca36107f1a3e75ef4c488430e64de2d9af5db3a4637d/numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6", size = 5976360, upload-time = "2024-02-06T00:01:43.013Z" }, - { url = "https://files.pythonhosted.org/packages/b5/42/054082bd8220bbf6f297f982f0a8f5479fcbc55c8b511d928df07b965869/numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea", size = 15814633, upload-time = "2024-02-06T00:02:16.694Z" }, - { url = "https://files.pythonhosted.org/packages/3f/72/3df6c1c06fc83d9cfe381cccb4be2532bbd38bf93fbc9fad087b6687f1c0/numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30", size = 20455961, upload-time = "2024-02-06T00:03:05.993Z" }, - { url = "https://files.pythonhosted.org/packages/8e/02/570545bac308b58ffb21adda0f4e220ba716fb658a63c151daecc3293350/numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c", size = 18061071, upload-time = "2024-02-06T00:03:41.5Z" }, - { url = "https://files.pythonhosted.org/packages/f4/5f/fafd8c51235f60d49f7a88e2275e13971e90555b67da52dd6416caec32fe/numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0", size = 15709730, upload-time = "2024-02-06T00:04:11.719Z" }, -] - -[[package]] -name = "numpy" -version = "2.2.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.13'", -] -sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1d565e0f6e156e1522ab564176b8b29d71e13d8caf003a08768df3d5cec5/numpy-2.2.0.tar.gz", hash = "sha256:140dd80ff8981a583a60980be1a655068f8adebf7a45a06a6858c873fcdcd4a0", size = 20225497, upload-time = "2024-12-08T15:45:53.828Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/81/3882353e097204fe4d7a5fe026b694b0104b78f930c969faadeed1538e00/numpy-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1e25507d85da11ff5066269d0bd25d06e0a0f2e908415534f3e603d2a78e4ffa", size = 21212476, upload-time = "2024-12-08T15:20:47.292Z" }, - { url = "https://files.pythonhosted.org/packages/2c/64/5577dc71240272749e07fcacb47c0f29e31ba4fbd1613fefbd1aa88efc29/numpy-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a62eb442011776e4036af5c8b1a00b706c5bc02dc15eb5344b0c750428c94219", size = 14351441, upload-time = "2024-12-08T15:21:10.966Z" }, - { url = "https://files.pythonhosted.org/packages/c9/43/850c040481c19c1c2289203a606df1a202eeb3aa81440624bac891024f83/numpy-2.2.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:b606b1aaf802e6468c2608c65ff7ece53eae1a6874b3765f69b8ceb20c5fa78e", size = 5390304, upload-time = "2024-12-08T15:21:20.431Z" }, - { url = "https://files.pythonhosted.org/packages/73/96/a4c8a86300dbafc7e4f44d8986f8b64950b7f4640a2dc5c91e036afe28c6/numpy-2.2.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:36b2b43146f646642b425dd2027730f99bac962618ec2052932157e213a040e9", size = 6925476, upload-time = "2024-12-08T15:21:31.436Z" }, - { url = "https://files.pythonhosted.org/packages/0c/0a/22129c3107c4fb237f97876df4399a5c3a83f3d95f86e0353ae6fbbd202f/numpy-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fe8f3583e0607ad4e43a954e35c1748b553bfe9fdac8635c02058023277d1b3", size = 14329997, upload-time = "2024-12-08T15:21:53.67Z" }, - { url = "https://files.pythonhosted.org/packages/4c/49/c2adeccc8a47bcd9335ec000dfcb4de34a7c34aeaa23af57cd504017e8c3/numpy-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:122fd2fcfafdefc889c64ad99c228d5a1f9692c3a83f56c292618a59aa60ae83", size = 16378908, upload-time = "2024-12-08T15:22:18.524Z" }, - { url = "https://files.pythonhosted.org/packages/8d/85/b65f4596748cc5468c0a978a16b3be45f6bcec78339b0fe7bce71d121d89/numpy-2.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3f2f5cddeaa4424a0a118924b988746db6ffa8565e5829b1841a8a3bd73eb59a", size = 15540949, upload-time = "2024-12-08T15:22:42.538Z" }, - { url = "https://files.pythonhosted.org/packages/ff/b3/3b18321c94a6a6a1d972baf1b39a6de50e65c991002c014ffbcce7e09be8/numpy-2.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7fe4bb0695fe986a9e4deec3b6857003b4cfe5c5e4aac0b95f6a658c14635e31", size = 18167677, upload-time = "2024-12-08T15:23:11.062Z" }, - { url = "https://files.pythonhosted.org/packages/41/f0/fa2a76e893a05764e4474f6011575c4e4ccf32af9c95bfcc8ef4b8a99f69/numpy-2.2.0-cp310-cp310-win32.whl", hash = "sha256:b30042fe92dbd79f1ba7f6898fada10bdaad1847c44f2dff9a16147e00a93661", size = 6570288, upload-time = "2024-12-08T15:23:22.863Z" }, - { url = "https://files.pythonhosted.org/packages/97/4e/0b7debcd013214db224997b0d3e39bb7b3656d37d06dfc31bb57d42d143b/numpy-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dc1d6d66f8d37843ed281773c7174f03bf7ad826523f73435deb88ba60d2d4", size = 12912730, upload-time = "2024-12-08T15:23:42.938Z" }, - { url = "https://files.pythonhosted.org/packages/80/1b/736023977a96e787c4e7653a1ac2d31d4f6ab6b4048f83c8359f7c0af2e3/numpy-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9874bc2ff574c40ab7a5cbb7464bf9b045d617e36754a7bc93f933d52bd9ffc6", size = 21216607, upload-time = "2024-12-08T15:24:13.737Z" }, - { url = "https://files.pythonhosted.org/packages/85/4f/5f0be4c5c93525e663573bab9e29bd88a71f85de3a0d01413ee05bce0c2f/numpy-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0da8495970f6b101ddd0c38ace92edea30e7e12b9a926b57f5fabb1ecc25bb90", size = 14387756, upload-time = "2024-12-08T15:24:35.67Z" }, - { url = "https://files.pythonhosted.org/packages/36/78/c38af7833c4f29999cdacdf12452b43b660cd25a1990ea9a7edf1fb01f17/numpy-2.2.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0557eebc699c1c34cccdd8c3778c9294e8196df27d713706895edc6f57d29608", size = 5388483, upload-time = "2024-12-08T15:24:45.64Z" }, - { url = "https://files.pythonhosted.org/packages/e9/b5/306ac6ee3f8f0c51abd3664ee8a9b8e264cbf179a860674827151ecc0a9c/numpy-2.2.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:3579eaeb5e07f3ded59298ce22b65f877a86ba8e9fe701f5576c99bb17c283da", size = 6929721, upload-time = "2024-12-08T15:24:57.76Z" }, - { url = "https://files.pythonhosted.org/packages/ea/15/e33a7d86d8ce91de82c34ce94a87f2b8df891e603675e83ec7039325ff10/numpy-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40deb10198bbaa531509aad0cd2f9fadb26c8b94070831e2208e7df543562b74", size = 14334667, upload-time = "2024-12-08T15:25:20.087Z" }, - { url = "https://files.pythonhosted.org/packages/52/33/10825f580f42a353f744abc450dcd2a4b1e6f1931abb0ccbd1d63bd3993c/numpy-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2aed8fcf8abc3020d6a9ccb31dbc9e7d7819c56a348cc88fd44be269b37427e", size = 16390204, upload-time = "2024-12-08T15:25:45.414Z" }, - { url = "https://files.pythonhosted.org/packages/b4/24/36cce77559572bdc6c8bcdd2f3e0db03c7079d14b9a1cd342476d7f451e8/numpy-2.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a222d764352c773aa5ebde02dd84dba3279c81c6db2e482d62a3fa54e5ece69b", size = 15556123, upload-time = "2024-12-08T15:26:09.247Z" }, - { url = "https://files.pythonhosted.org/packages/05/51/2d706d14adee8f5c70c5de3831673d4d57051fc9ac6f3f6bff8811d2f9bd/numpy-2.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4e58666988605e251d42c2818c7d3d8991555381be26399303053b58a5bbf30d", size = 18179898, upload-time = "2024-12-08T15:26:37.996Z" }, - { url = "https://files.pythonhosted.org/packages/8a/e7/ea8b7652564113f218e75b296e3545a256d88b233021f792fd08591e8f33/numpy-2.2.0-cp311-cp311-win32.whl", hash = "sha256:4723a50e1523e1de4fccd1b9a6dcea750c2102461e9a02b2ac55ffeae09a4410", size = 6568146, upload-time = "2024-12-08T15:26:50.015Z" }, - { url = "https://files.pythonhosted.org/packages/d0/06/3d1ff6ed377cb0340baf90487a35f15f9dc1db8e0a07de2bf2c54a8e490f/numpy-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:16757cf28621e43e252c560d25b15f18a2f11da94fea344bf26c599b9cf54b73", size = 12916677, upload-time = "2024-12-08T15:28:41.652Z" }, - { url = "https://files.pythonhosted.org/packages/7f/bc/a20dc4e1d051149052762e7647455311865d11c603170c476d1e910a353e/numpy-2.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cff210198bb4cae3f3c100444c5eaa573a823f05c253e7188e1362a5555235b3", size = 20909153, upload-time = "2024-12-08T15:29:15.013Z" }, - { url = "https://files.pythonhosted.org/packages/60/3d/ac4fb63f36db94f4c7db05b45e3ecb3f88f778ca71850664460c78cfde41/numpy-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58b92a5828bd4d9aa0952492b7de803135038de47343b2aa3cc23f3b71a3dc4e", size = 14095021, upload-time = "2024-12-08T15:29:42.037Z" }, - { url = "https://files.pythonhosted.org/packages/41/6d/a654d519d24e4fcc7a83d4a51209cda086f26cf30722b3d8ffc1aa9b775e/numpy-2.2.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:ebe5e59545401fbb1b24da76f006ab19734ae71e703cdb4a8b347e84a0cece67", size = 5125491, upload-time = "2024-12-08T15:29:52.979Z" }, - { url = "https://files.pythonhosted.org/packages/e6/22/fab7e1510a62e5092f4e6507a279020052b89f11d9cfe52af7f52c243b04/numpy-2.2.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e2b8cd48a9942ed3f85b95ca4105c45758438c7ed28fff1e4ce3e57c3b589d8e", size = 6658534, upload-time = "2024-12-08T15:30:06.424Z" }, - { url = "https://files.pythonhosted.org/packages/fc/29/a3d938ddc5a534cd53df7ab79d20a68db8c67578de1df0ae0118230f5f54/numpy-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57fcc997ffc0bef234b8875a54d4058afa92b0b0c4223fc1f62f24b3b5e86038", size = 14046306, upload-time = "2024-12-08T15:30:31.079Z" }, - { url = "https://files.pythonhosted.org/packages/90/24/d0bbb56abdd8934f30384632e3c2ca1ebfeb5d17e150c6e366ba291de36b/numpy-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ad7d11b309bd132d74397fcf2920933c9d1dc865487128f5c03d580f2c3d03", size = 16095819, upload-time = "2024-12-08T15:31:00.056Z" }, - { url = "https://files.pythonhosted.org/packages/99/9c/58a673faa9e8a0e77248e782f7a17410cf7259b326265646fd50ed49c4e1/numpy-2.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cb24cca1968b21355cc6f3da1a20cd1cebd8a023e3c5b09b432444617949085a", size = 15243215, upload-time = "2024-12-08T15:31:26.698Z" }, - { url = "https://files.pythonhosted.org/packages/9c/61/f311693f78cbf635cfb69ce9e1e857ff83937a27d93c96ac5932fd33e330/numpy-2.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0798b138c291d792f8ea40fe3768610f3c7dd2574389e37c3f26573757c8f7ef", size = 17860175, upload-time = "2024-12-08T15:31:57.807Z" }, - { url = "https://files.pythonhosted.org/packages/11/3e/491c34262cb1fc9dd13a00beb80d755ee0517b17db20e54cac7aa524533e/numpy-2.2.0-cp312-cp312-win32.whl", hash = "sha256:afe8fb968743d40435c3827632fd36c5fbde633b0423da7692e426529b1759b1", size = 6273281, upload-time = "2024-12-08T15:32:11.897Z" }, - { url = "https://files.pythonhosted.org/packages/89/ea/00537f599eb230771157bc509f6ea5b2dddf05d4b09f9d2f1d7096a18781/numpy-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:3a4199f519e57d517ebd48cb76b36c82da0360781c6a0353e64c0cac30ecaad3", size = 12613227, upload-time = "2024-12-08T15:32:34.792Z" }, - { url = "https://files.pythonhosted.org/packages/bd/4c/0d1eef206545c994289e7a9de21b642880a11e0ed47a2b0c407c688c4f69/numpy-2.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f8c8b141ef9699ae777c6278b52c706b653bf15d135d302754f6b2e90eb30367", size = 20895707, upload-time = "2024-12-08T15:33:12.723Z" }, - { url = "https://files.pythonhosted.org/packages/16/cb/88f6c1e6df83002c421d5f854ccf134aa088aa997af786a5dac3f32ec99b/numpy-2.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f0986e917aca18f7a567b812ef7ca9391288e2acb7a4308aa9d265bd724bdae", size = 14110592, upload-time = "2024-12-08T15:33:38.416Z" }, - { url = "https://files.pythonhosted.org/packages/b4/54/817e6894168a43f33dca74199ba0dd0f1acd99aa6323ed6d323d63d640a2/numpy-2.2.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:1c92113619f7b272838b8d6702a7f8ebe5edea0df48166c47929611d0b4dea69", size = 5110858, upload-time = "2024-12-08T15:33:48.779Z" }, - { url = "https://files.pythonhosted.org/packages/c7/99/00d8a1a8eb70425bba7880257ed73fed08d3e8d05da4202fb6b9a81d5ee4/numpy-2.2.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5a145e956b374e72ad1dff82779177d4a3c62bc8248f41b80cb5122e68f22d13", size = 6645143, upload-time = "2024-12-08T15:34:02.815Z" }, - { url = "https://files.pythonhosted.org/packages/34/86/5b9c2b7c56e7a9d9297a0a4be0b8433f498eba52a8f5892d9132b0f64627/numpy-2.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18142b497d70a34b01642b9feabb70156311b326fdddd875a9981f34a369b671", size = 14042812, upload-time = "2024-12-08T15:34:26.323Z" }, - { url = "https://files.pythonhosted.org/packages/df/54/13535f74391dbe5f479ceed96f1403267be302c840040700d4fd66688089/numpy-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7d41d1612c1a82b64697e894b75db6758d4f21c3ec069d841e60ebe54b5b571", size = 16093419, upload-time = "2024-12-08T15:34:53.056Z" }, - { url = "https://files.pythonhosted.org/packages/dd/37/dfb2056842ac61315f225aa56f455da369f5223e4c5a38b91d20da1b628b/numpy-2.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a98f6f20465e7618c83252c02041517bd2f7ea29be5378f09667a8f654a5918d", size = 15238969, upload-time = "2024-12-08T15:35:20.37Z" }, - { url = "https://files.pythonhosted.org/packages/5a/3d/d20d24ee313992f0b7e7b9d9eef642d9b545d39d5b91c4a2cc8c98776328/numpy-2.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e09d40edfdb4e260cb1567d8ae770ccf3b8b7e9f0d9b5c2a9992696b30ce2742", size = 17855705, upload-time = "2024-12-08T15:35:47.603Z" }, - { url = "https://files.pythonhosted.org/packages/5b/40/944c9ee264f875a2db6f79380944fd2b5bb9d712bb4a134d11f45ad5b693/numpy-2.2.0-cp313-cp313-win32.whl", hash = "sha256:3905a5fffcc23e597ee4d9fb3fcd209bd658c352657548db7316e810ca80458e", size = 6270078, upload-time = "2024-12-08T15:39:19.519Z" }, - { url = "https://files.pythonhosted.org/packages/30/04/e1ee6f8b22034302d4c5c24e15782bdedf76d90b90f3874ed0b48525def0/numpy-2.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:a184288538e6ad699cbe6b24859206e38ce5fba28f3bcfa51c90d0502c1582b2", size = 12605791, upload-time = "2024-12-08T15:39:38.513Z" }, - { url = "https://files.pythonhosted.org/packages/ef/fb/51d458625cd6134d60ac15180ae50995d7d21b0f2f92a6286ae7b0792d19/numpy-2.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7832f9e8eb00be32f15fdfb9a981d6955ea9adc8574c521d48710171b6c55e95", size = 20920160, upload-time = "2024-12-08T15:36:18.605Z" }, - { url = "https://files.pythonhosted.org/packages/b4/34/162ae0c5d2536ea4be98c813b5161c980f0443cd5765fde16ddfe3450140/numpy-2.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f0dd071b95bbca244f4cb7f70b77d2ff3aaaba7fa16dc41f58d14854a6204e6c", size = 14119064, upload-time = "2024-12-08T15:36:40.875Z" }, - { url = "https://files.pythonhosted.org/packages/17/6c/4195dd0e1c41c55f466d516e17e9e28510f32af76d23061ea3da67438e3c/numpy-2.2.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:b0b227dcff8cdc3efbce66d4e50891f04d0a387cce282fe1e66199146a6a8fca", size = 5152778, upload-time = "2024-12-08T15:36:50.563Z" }, - { url = "https://files.pythonhosted.org/packages/2f/47/ea804ae525832c8d05ed85b560dfd242d34e4bb0962bc269ccaa720fb934/numpy-2.2.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ab153263a7c5ccaf6dfe7e53447b74f77789f28ecb278c3b5d49db7ece10d6d", size = 6667605, upload-time = "2024-12-08T15:37:01.343Z" }, - { url = "https://files.pythonhosted.org/packages/76/99/34d20e50b3d894bb16b5374bfbee399ab8ff3a33bf1e1f0b8acfe7bbd70d/numpy-2.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e500aba968a48e9019e42c0c199b7ec0696a97fa69037bea163b55398e390529", size = 14013275, upload-time = "2024-12-08T15:37:22.411Z" }, - { url = "https://files.pythonhosted.org/packages/69/8f/a1df7bd02d434ab82539517d1b98028985700cfc4300bc5496fb140ca648/numpy-2.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:440cfb3db4c5029775803794f8638fbdbf71ec702caf32735f53b008e1eaece3", size = 16074900, upload-time = "2024-12-08T15:37:47.078Z" }, - { url = "https://files.pythonhosted.org/packages/04/94/b419e7a76bf21a00fcb03c613583f10e389fdc8dfe420412ff5710c8ad3d/numpy-2.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a55dc7a7f0b6198b07ec0cd445fbb98b05234e8b00c5ac4874a63372ba98d4ab", size = 15219122, upload-time = "2024-12-08T15:38:10.437Z" }, - { url = "https://files.pythonhosted.org/packages/65/d9/dddf398b2b6c5d750892a207a469c2854a8db0f033edaf72103af8cf05aa/numpy-2.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4bddbaa30d78c86329b26bd6aaaea06b1e47444da99eddac7bf1e2fab717bd72", size = 17851668, upload-time = "2024-12-08T15:38:36.976Z" }, - { url = "https://files.pythonhosted.org/packages/d4/dc/09a4e5819a9782a213c0eb4eecacdc1cd75ad8dac99279b04cfccb7eeb0a/numpy-2.2.0-cp313-cp313t-win32.whl", hash = "sha256:30bf971c12e4365153afb31fc73f441d4da157153f3400b82db32d04de1e4066", size = 6325288, upload-time = "2024-12-08T15:38:48.456Z" }, - { url = "https://files.pythonhosted.org/packages/ce/e1/e0d06ec34036c92b43aef206efe99a5f5f04e12c776eab82a36e00c40afc/numpy-2.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d35717333b39d1b6bb8433fa758a55f1081543de527171543a2b710551d40881", size = 12692303, upload-time = "2024-12-08T15:39:08.17Z" }, - { url = "https://files.pythonhosted.org/packages/f3/18/6d4e1274f221073058b621f4df8050958b7564b24b4fa25be9f1b7639274/numpy-2.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e12c6c1ce84628c52d6367863773f7c8c8241be554e8b79686e91a43f1733773", size = 21043901, upload-time = "2024-12-08T15:40:09.263Z" }, - { url = "https://files.pythonhosted.org/packages/19/3e/2b20599e7ead7ae1b89a77bb34f88c5ec12e43fbb320576ed646388d2cb7/numpy-2.2.0-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:b6207dc8fb3c8cb5668e885cef9ec7f70189bec4e276f0ff70d5aa078d32c88e", size = 6789122, upload-time = "2024-12-08T15:40:21.876Z" }, - { url = "https://files.pythonhosted.org/packages/c9/5a/378954132c192fafa6c3d5c160092a427c7562e5bda0cc6ad9cc37008a7a/numpy-2.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a50aeff71d0f97b6450d33940c7181b08be1441c6c193e678211bff11aa725e7", size = 16194018, upload-time = "2024-12-08T15:40:45.485Z" }, - { url = "https://files.pythonhosted.org/packages/67/17/209bda34fc83f3436834392f44643e66dcf3c77465f232102e7f1c7d8eae/numpy-2.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:df12a1f99b99f569a7c2ae59aa2d31724e8d835fc7f33e14f4792e3071d11221", size = 12819486, upload-time = "2024-12-08T15:41:05.529Z" }, + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/10/8b/c265f4823726ab832de836cdd184d0986dcf94480f81e8739692a7ac7af2/numpy-2.4.3.tar.gz", hash = "sha256:483a201202b73495f00dbc83796c6ae63137a9bdade074f7648b3e32613412dd", size = 20727743, upload-time = "2026-03-09T07:58:53.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/51/5093a2df15c4dc19da3f79d1021e891f5dcf1d9d1db6ba38891d5590f3fe/numpy-2.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:33b3bf58ee84b172c067f56aeadc7ee9ab6de69c5e800ab5b10295d54c581adb", size = 16957183, upload-time = "2026-03-09T07:55:57.774Z" }, + { url = "https://files.pythonhosted.org/packages/b5/7c/c061f3de0630941073d2598dc271ac2f6cbcf5c83c74a5870fea07488333/numpy-2.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ba7b51e71c05aa1f9bc3641463cd82308eab40ce0d5c7e1fd4038cbf9938147", size = 14968734, upload-time = "2026-03-09T07:56:00.494Z" }, + { url = "https://files.pythonhosted.org/packages/ef/27/d26c85cbcd86b26e4f125b0668e7a7c0542d19dd7d23ee12e87b550e95b5/numpy-2.4.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:a1988292870c7cb9d0ebb4cc96b4d447513a9644801de54606dc7aabf2b7d920", size = 5475288, upload-time = "2026-03-09T07:56:02.857Z" }, + { url = "https://files.pythonhosted.org/packages/2b/09/3c4abbc1dcd8010bf1a611d174c7aa689fc505585ec806111b4406f6f1b1/numpy-2.4.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:23b46bb6d8ecb68b58c09944483c135ae5f0e9b8d8858ece5e4ead783771d2a9", size = 6805253, upload-time = "2026-03-09T07:56:04.53Z" }, + { url = "https://files.pythonhosted.org/packages/21/bc/e7aa3f6817e40c3f517d407742337cbb8e6fc4b83ce0b55ab780c829243b/numpy-2.4.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a016db5c5dba78fa8fe9f5d80d6708f9c42ab087a739803c0ac83a43d686a470", size = 15969479, upload-time = "2026-03-09T07:56:06.638Z" }, + { url = "https://files.pythonhosted.org/packages/78/51/9f5d7a41f0b51649ddf2f2320595e15e122a40610b233d51928dd6c92353/numpy-2.4.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:715de7f82e192e8cae5a507a347d97ad17598f8e026152ca97233e3666daaa71", size = 16901035, upload-time = "2026-03-09T07:56:09.405Z" }, + { url = "https://files.pythonhosted.org/packages/64/6e/b221dd847d7181bc5ee4857bfb026182ef69499f9305eb1371cbb1aea626/numpy-2.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2ddb7919366ee468342b91dea2352824c25b55814a987847b6c52003a7c97f15", size = 17325657, upload-time = "2026-03-09T07:56:12.067Z" }, + { url = "https://files.pythonhosted.org/packages/eb/b8/8f3fd2da596e1063964b758b5e3c970aed1949a05200d7e3d46a9d46d643/numpy-2.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a315e5234d88067f2d97e1f2ef670a7569df445d55400f1e33d117418d008d52", size = 18635512, upload-time = "2026-03-09T07:56:14.629Z" }, + { url = "https://files.pythonhosted.org/packages/5c/24/2993b775c37e39d2f8ab4125b44337ab0b2ba106c100980b7c274a22bee7/numpy-2.4.3-cp311-cp311-win32.whl", hash = "sha256:2b3f8d2c4589b1a2028d2a770b0fc4d1f332fb5e01521f4de3199a896d158ddd", size = 6238100, upload-time = "2026-03-09T07:56:17.243Z" }, + { url = "https://files.pythonhosted.org/packages/76/1d/edccf27adedb754db7c4511d5eac8b83f004ae948fe2d3509e8b78097d4c/numpy-2.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:77e76d932c49a75617c6d13464e41203cd410956614d0a0e999b25e9e8d27eec", size = 12609816, upload-time = "2026-03-09T07:56:19.089Z" }, + { url = "https://files.pythonhosted.org/packages/92/82/190b99153480076c8dce85f4cfe7d53ea84444145ffa54cb58dcd460d66b/numpy-2.4.3-cp311-cp311-win_arm64.whl", hash = "sha256:eb610595dd91560905c132c709412b512135a60f1851ccbd2c959e136431ff67", size = 10485757, upload-time = "2026-03-09T07:56:21.753Z" }, + { url = "https://files.pythonhosted.org/packages/a9/ed/6388632536f9788cea23a3a1b629f25b43eaacd7d7377e5d6bc7b9deb69b/numpy-2.4.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:61b0cbabbb6126c8df63b9a3a0c4b1f44ebca5e12ff6997b80fcf267fb3150ef", size = 16669628, upload-time = "2026-03-09T07:56:24.252Z" }, + { url = "https://files.pythonhosted.org/packages/74/1b/ee2abfc68e1ce728b2958b6ba831d65c62e1b13ce3017c13943f8f9b5b2e/numpy-2.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7395e69ff32526710748f92cd8c9849b361830968ea3e24a676f272653e8983e", size = 14696872, upload-time = "2026-03-09T07:56:26.991Z" }, + { url = "https://files.pythonhosted.org/packages/ba/d1/780400e915ff5638166f11ca9dc2c5815189f3d7cf6f8759a1685e586413/numpy-2.4.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:abdce0f71dcb4a00e4e77f3faf05e4616ceccfe72ccaa07f47ee79cda3b7b0f4", size = 5203489, upload-time = "2026-03-09T07:56:29.414Z" }, + { url = "https://files.pythonhosted.org/packages/0b/bb/baffa907e9da4cc34a6e556d6d90e032f6d7a75ea47968ea92b4858826c4/numpy-2.4.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:48da3a4ee1336454b07497ff7ec83903efa5505792c4e6d9bf83d99dc07a1e18", size = 6550814, upload-time = "2026-03-09T07:56:32.225Z" }, + { url = "https://files.pythonhosted.org/packages/7b/12/8c9f0c6c95f76aeb20fc4a699c33e9f827fa0d0f857747c73bb7b17af945/numpy-2.4.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:32e3bef222ad6b052280311d1d60db8e259e4947052c3ae7dd6817451fc8a4c5", size = 15666601, upload-time = "2026-03-09T07:56:34.461Z" }, + { url = "https://files.pythonhosted.org/packages/bd/79/cc665495e4d57d0aa6fbcc0aa57aa82671dfc78fbf95fe733ed86d98f52a/numpy-2.4.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e7dd01a46700b1967487141a66ac1a3cf0dd8ebf1f08db37d46389401512ca97", size = 16621358, upload-time = "2026-03-09T07:56:36.852Z" }, + { url = "https://files.pythonhosted.org/packages/a8/40/b4ecb7224af1065c3539f5ecfff879d090de09608ad1008f02c05c770cb3/numpy-2.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:76f0f283506c28b12bba319c0fab98217e9f9b54e6160e9c79e9f7348ba32e9c", size = 17016135, upload-time = "2026-03-09T07:56:39.337Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b1/6a88e888052eed951afed7a142dcdf3b149a030ca59b4c71eef085858e43/numpy-2.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737f630a337364665aba3b5a77e56a68cc42d350edd010c345d65a3efa3addcc", size = 18345816, upload-time = "2026-03-09T07:56:42.31Z" }, + { url = "https://files.pythonhosted.org/packages/f3/8f/103a60c5f8c3d7fc678c19cd7b2476110da689ccb80bc18050efbaeae183/numpy-2.4.3-cp312-cp312-win32.whl", hash = "sha256:26952e18d82a1dbbc2f008d402021baa8d6fc8e84347a2072a25e08b46d698b9", size = 5960132, upload-time = "2026-03-09T07:56:44.851Z" }, + { url = "https://files.pythonhosted.org/packages/d7/7c/f5ee1bf6ed888494978046a809df2882aad35d414b622893322df7286879/numpy-2.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:65f3c2455188f09678355f5cae1f959a06b778bc66d535da07bf2ef20cd319d5", size = 12316144, upload-time = "2026-03-09T07:56:47.057Z" }, + { url = "https://files.pythonhosted.org/packages/71/46/8d1cb3f7a00f2fb6394140e7e6623696e54c6318a9d9691bb4904672cf42/numpy-2.4.3-cp312-cp312-win_arm64.whl", hash = "sha256:2abad5c7fef172b3377502bde47892439bae394a71bc329f31df0fd829b41a9e", size = 10220364, upload-time = "2026-03-09T07:56:49.849Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d0/1fe47a98ce0df229238b77611340aff92d52691bcbc10583303181abf7fc/numpy-2.4.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b346845443716c8e542d54112966383b448f4a3ba5c66409771b8c0889485dd3", size = 16665297, upload-time = "2026-03-09T07:56:52.296Z" }, + { url = "https://files.pythonhosted.org/packages/27/d9/4e7c3f0e68dfa91f21c6fb6cf839bc829ec920688b1ce7ec722b1a6202fb/numpy-2.4.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2629289168f4897a3c4e23dc98d6f1731f0fc0fe52fb9db19f974041e4cc12b9", size = 14691853, upload-time = "2026-03-09T07:56:54.992Z" }, + { url = "https://files.pythonhosted.org/packages/3a/66/bd096b13a87549683812b53ab211e6d413497f84e794fb3c39191948da97/numpy-2.4.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bb2e3cf95854233799013779216c57e153c1ee67a0bf92138acca0e429aefaee", size = 5198435, upload-time = "2026-03-09T07:56:57.184Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2f/687722910b5a5601de2135c891108f51dfc873d8e43c8ed9f4ebb440b4a2/numpy-2.4.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:7f3408ff897f8ab07a07fbe2823d7aee6ff644c097cc1f90382511fe982f647f", size = 6546347, upload-time = "2026-03-09T07:56:59.531Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ec/7971c4e98d86c564750393fab8d7d83d0a9432a9d78bb8a163a6dc59967a/numpy-2.4.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:decb0eb8a53c3b009b0962378065589685d66b23467ef5dac16cbe818afde27f", size = 15664626, upload-time = "2026-03-09T07:57:01.385Z" }, + { url = "https://files.pythonhosted.org/packages/7e/eb/7daecbea84ec935b7fc732e18f532073064a3816f0932a40a17f3349185f/numpy-2.4.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d5f51900414fc9204a0e0da158ba2ac52b75656e7dce7e77fb9f84bfa343b4cc", size = 16608916, upload-time = "2026-03-09T07:57:04.008Z" }, + { url = "https://files.pythonhosted.org/packages/df/58/2a2b4a817ffd7472dca4421d9f0776898b364154e30c95f42195041dc03b/numpy-2.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6bd06731541f89cdc01b261ba2c9e037f1543df7472517836b78dfb15bd6e476", size = 17015824, upload-time = "2026-03-09T07:57:06.347Z" }, + { url = "https://files.pythonhosted.org/packages/4a/ca/627a828d44e78a418c55f82dd4caea8ea4a8ef24e5144d9e71016e52fb40/numpy-2.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:22654fe6be0e5206f553a9250762c653d3698e46686eee53b399ab90da59bd92", size = 18334581, upload-time = "2026-03-09T07:57:09.114Z" }, + { url = "https://files.pythonhosted.org/packages/cd/c0/76f93962fc79955fcba30a429b62304332345f22d4daec1cb33653425643/numpy-2.4.3-cp313-cp313-win32.whl", hash = "sha256:d71e379452a2f670ccb689ec801b1218cd3983e253105d6e83780967e899d687", size = 5958618, upload-time = "2026-03-09T07:57:11.432Z" }, + { url = "https://files.pythonhosted.org/packages/b1/3c/88af0040119209b9b5cb59485fa48b76f372c73068dbf9254784b975ac53/numpy-2.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:0a60e17a14d640f49146cb38e3f105f571318db7826d9b6fef7e4dce758faecd", size = 12312824, upload-time = "2026-03-09T07:57:13.586Z" }, + { url = "https://files.pythonhosted.org/packages/58/ce/3d07743aced3d173f877c3ef6a454c2174ba42b584ab0b7e6d99374f51ed/numpy-2.4.3-cp313-cp313-win_arm64.whl", hash = "sha256:c9619741e9da2059cd9c3f206110b97583c7152c1dc9f8aafd4beb450ac1c89d", size = 10221218, upload-time = "2026-03-09T07:57:16.183Z" }, + { url = "https://files.pythonhosted.org/packages/62/09/d96b02a91d09e9d97862f4fc8bfebf5400f567d8eb1fe4b0cc4795679c15/numpy-2.4.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7aa4e54f6469300ebca1d9eb80acd5253cdfa36f2c03d79a35883687da430875", size = 14819570, upload-time = "2026-03-09T07:57:18.564Z" }, + { url = "https://files.pythonhosted.org/packages/b5/ca/0b1aba3905fdfa3373d523b2b15b19029f4f3031c87f4066bd9d20ef6c6b/numpy-2.4.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d1b90d840b25874cf5cd20c219af10bac3667db3876d9a495609273ebe679070", size = 5326113, upload-time = "2026-03-09T07:57:21.052Z" }, + { url = "https://files.pythonhosted.org/packages/c0/63/406e0fd32fcaeb94180fd6a4c41e55736d676c54346b7efbce548b94a914/numpy-2.4.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a749547700de0a20a6718293396ec237bb38218049cfce788e08fcb716e8cf73", size = 6646370, upload-time = "2026-03-09T07:57:22.804Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d0/10f7dc157d4b37af92720a196be6f54f889e90dcd30dce9dc657ed92c257/numpy-2.4.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94f3c4a151a2e529adf49c1d54f0f57ff8f9b233ee4d44af623a81553ab86368", size = 15723499, upload-time = "2026-03-09T07:57:24.693Z" }, + { url = "https://files.pythonhosted.org/packages/66/f1/d1c2bf1161396629701bc284d958dc1efa3a5a542aab83cf11ee6eb4cba5/numpy-2.4.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22c31dc07025123aedf7f2db9e91783df13f1776dc52c6b22c620870dc0fab22", size = 16657164, upload-time = "2026-03-09T07:57:27.676Z" }, + { url = "https://files.pythonhosted.org/packages/1a/be/cca19230b740af199ac47331a21c71e7a3d0ba59661350483c1600d28c37/numpy-2.4.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:148d59127ac95979d6f07e4d460f934ebdd6eed641db9c0db6c73026f2b2101a", size = 17081544, upload-time = "2026-03-09T07:57:30.664Z" }, + { url = "https://files.pythonhosted.org/packages/b9/c5/9602b0cbb703a0936fb40f8a95407e8171935b15846de2f0776e08af04c7/numpy-2.4.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a97cbf7e905c435865c2d939af3d93f99d18eaaa3cabe4256f4304fb51604349", size = 18380290, upload-time = "2026-03-09T07:57:33.763Z" }, + { url = "https://files.pythonhosted.org/packages/ed/81/9f24708953cd30be9ee36ec4778f4b112b45165812f2ada4cc5ea1c1f254/numpy-2.4.3-cp313-cp313t-win32.whl", hash = "sha256:be3b8487d725a77acccc9924f65fd8bce9af7fac8c9820df1049424a2115af6c", size = 6082814, upload-time = "2026-03-09T07:57:36.491Z" }, + { url = "https://files.pythonhosted.org/packages/e2/9e/52f6eaa13e1a799f0ab79066c17f7016a4a8ae0c1aefa58c82b4dab690b4/numpy-2.4.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1ec84fd7c8e652b0f4aaaf2e6e9cc8eaa9b1b80a537e06b2e3a2fb176eedcb26", size = 12452673, upload-time = "2026-03-09T07:57:38.281Z" }, + { url = "https://files.pythonhosted.org/packages/c4/04/b8cece6ead0b30c9fbd99bb835ad7ea0112ac5f39f069788c5558e3b1ab2/numpy-2.4.3-cp313-cp313t-win_arm64.whl", hash = "sha256:120df8c0a81ebbf5b9020c91439fccd85f5e018a927a39f624845be194a2be02", size = 10290907, upload-time = "2026-03-09T07:57:40.747Z" }, + { url = "https://files.pythonhosted.org/packages/70/ae/3936f79adebf8caf81bd7a599b90a561334a658be4dcc7b6329ebf4ee8de/numpy-2.4.3-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:5884ce5c7acfae1e4e1b6fde43797d10aa506074d25b531b4f54bde33c0c31d4", size = 16664563, upload-time = "2026-03-09T07:57:43.817Z" }, + { url = "https://files.pythonhosted.org/packages/9b/62/760f2b55866b496bb1fa7da2a6db076bef908110e568b02fcfc1422e2a3a/numpy-2.4.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:297837823f5bc572c5f9379b0c9f3a3365f08492cbdc33bcc3af174372ebb168", size = 14702161, upload-time = "2026-03-09T07:57:46.169Z" }, + { url = "https://files.pythonhosted.org/packages/32/af/a7a39464e2c0a21526fb4fb76e346fb172ebc92f6d1c7a07c2c139cc17b1/numpy-2.4.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:a111698b4a3f8dcbe54c64a7708f049355abd603e619013c346553c1fd4ca90b", size = 5208738, upload-time = "2026-03-09T07:57:48.506Z" }, + { url = "https://files.pythonhosted.org/packages/29/8c/2a0cf86a59558fa078d83805589c2de490f29ed4fb336c14313a161d358a/numpy-2.4.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:4bd4741a6a676770e0e97fe9ab2e51de01183df3dcbcec591d26d331a40de950", size = 6543618, upload-time = "2026-03-09T07:57:50.591Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b8/612ce010c0728b1c363fa4ea3aa4c22fe1c5da1de008486f8c2f5cb92fae/numpy-2.4.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:54f29b877279d51e210e0c80709ee14ccbbad647810e8f3d375561c45ef613dd", size = 15680676, upload-time = "2026-03-09T07:57:52.34Z" }, + { url = "https://files.pythonhosted.org/packages/a9/7e/4f120ecc54ba26ddf3dc348eeb9eb063f421de65c05fc961941798feea18/numpy-2.4.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:679f2a834bae9020f81534671c56fd0cc76dd7e5182f57131478e23d0dc59e24", size = 16613492, upload-time = "2026-03-09T07:57:54.91Z" }, + { url = "https://files.pythonhosted.org/packages/2c/86/1b6020db73be330c4b45d5c6ee4295d59cfeef0e3ea323959d053e5a6909/numpy-2.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d84f0f881cb2225c2dfd7f78a10a5645d487a496c6668d6cc39f0f114164f3d0", size = 17031789, upload-time = "2026-03-09T07:57:57.641Z" }, + { url = "https://files.pythonhosted.org/packages/07/3a/3b90463bf41ebc21d1b7e06079f03070334374208c0f9a1f05e4ae8455e7/numpy-2.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d213c7e6e8d211888cc359bab7199670a00f5b82c0978b9d1c75baf1eddbeac0", size = 18339941, upload-time = "2026-03-09T07:58:00.577Z" }, + { url = "https://files.pythonhosted.org/packages/a8/74/6d736c4cd962259fd8bae9be27363eb4883a2f9069763747347544c2a487/numpy-2.4.3-cp314-cp314-win32.whl", hash = "sha256:52077feedeff7c76ed7c9f1a0428558e50825347b7545bbb8523da2cd55c547a", size = 6007503, upload-time = "2026-03-09T07:58:03.331Z" }, + { url = "https://files.pythonhosted.org/packages/48/39/c56ef87af669364356bb011922ef0734fc49dad51964568634c72a009488/numpy-2.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:0448e7f9caefb34b4b7dd2b77f21e8906e5d6f0365ad525f9f4f530b13df2afc", size = 12444915, upload-time = "2026-03-09T07:58:06.353Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1f/ab8528e38d295fd349310807496fabb7cf9fe2e1f70b97bc20a483ea9d4a/numpy-2.4.3-cp314-cp314-win_arm64.whl", hash = "sha256:b44fd60341c4d9783039598efadd03617fa28d041fc37d22b62d08f2027fa0e7", size = 10494875, upload-time = "2026-03-09T07:58:08.734Z" }, + { url = "https://files.pythonhosted.org/packages/e6/ef/b7c35e4d5ef141b836658ab21a66d1a573e15b335b1d111d31f26c8ef80f/numpy-2.4.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0a195f4216be9305a73c0e91c9b026a35f2161237cf1c6de9b681637772ea657", size = 14822225, upload-time = "2026-03-09T07:58:11.034Z" }, + { url = "https://files.pythonhosted.org/packages/cd/8d/7730fa9278cf6648639946cc816e7cc89f0d891602584697923375f801ed/numpy-2.4.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:cd32fbacb9fd1bf041bf8e89e4576b6f00b895f06d00914820ae06a616bdfef7", size = 5328769, upload-time = "2026-03-09T07:58:13.67Z" }, + { url = "https://files.pythonhosted.org/packages/47/01/d2a137317c958b074d338807c1b6a383406cdf8b8e53b075d804cc3d211d/numpy-2.4.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:2e03c05abaee1f672e9d67bc858f300b5ccba1c21397211e8d77d98350972093", size = 6649461, upload-time = "2026-03-09T07:58:15.912Z" }, + { url = "https://files.pythonhosted.org/packages/5c/34/812ce12bc0f00272a4b0ec0d713cd237cb390666eb6206323d1cc9cedbb2/numpy-2.4.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7d1ce23cce91fcea443320a9d0ece9b9305d4368875bab09538f7a5b4131938a", size = 15725809, upload-time = "2026-03-09T07:58:17.787Z" }, + { url = "https://files.pythonhosted.org/packages/25/c0/2aed473a4823e905e765fee3dc2cbf504bd3e68ccb1150fbdabd5c39f527/numpy-2.4.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c59020932feb24ed49ffd03704fbab89f22aa9c0d4b180ff45542fe8918f5611", size = 16655242, upload-time = "2026-03-09T07:58:20.476Z" }, + { url = "https://files.pythonhosted.org/packages/f2/c8/7e052b2fc87aa0e86de23f20e2c42bd261c624748aa8efd2c78f7bb8d8c6/numpy-2.4.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9684823a78a6cd6ad7511fc5e25b07947d1d5b5e2812c93fe99d7d4195130720", size = 17080660, upload-time = "2026-03-09T07:58:23.067Z" }, + { url = "https://files.pythonhosted.org/packages/f3/3d/0876746044db2adcb11549f214d104f2e1be00f07a67edbb4e2812094847/numpy-2.4.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0200b25c687033316fb39f0ff4e3e690e8957a2c3c8d22499891ec58c37a3eb5", size = 18380384, upload-time = "2026-03-09T07:58:25.839Z" }, + { url = "https://files.pythonhosted.org/packages/07/12/8160bea39da3335737b10308df4f484235fd297f556745f13092aa039d3b/numpy-2.4.3-cp314-cp314t-win32.whl", hash = "sha256:5e10da9e93247e554bb1d22f8edc51847ddd7dde52d85ce31024c1b4312bfba0", size = 6154547, upload-time = "2026-03-09T07:58:28.289Z" }, + { url = "https://files.pythonhosted.org/packages/42/f3/76534f61f80d74cc9cdf2e570d3d4eeb92c2280a27c39b0aaf471eda7b48/numpy-2.4.3-cp314-cp314t-win_amd64.whl", hash = "sha256:45f003dbdffb997a03da2d1d0cb41fbd24a87507fb41605c0420a3db5bd4667b", size = 12633645, upload-time = "2026-03-09T07:58:30.384Z" }, + { url = "https://files.pythonhosted.org/packages/1f/b6/7c0d4334c15983cec7f92a69e8ce9b1e6f31857e5ee3a413ac424e6bd63d/numpy-2.4.3-cp314-cp314t-win_arm64.whl", hash = "sha256:4d382735cecd7bcf090172489a525cd7d4087bc331f7df9f60ddc9a296cf208e", size = 10565454, upload-time = "2026-03-09T07:58:33.031Z" }, + { url = "https://files.pythonhosted.org/packages/64/e4/4dab9fb43c83719c29241c535d9e07be73bea4bc0c6686c5816d8e1b6689/numpy-2.4.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c6b124bfcafb9e8d3ed09130dbee44848c20b3e758b6bbf006e641778927c028", size = 16834892, upload-time = "2026-03-09T07:58:35.334Z" }, + { url = "https://files.pythonhosted.org/packages/c9/29/f8b6d4af90fed3dfda84ebc0df06c9833d38880c79ce954e5b661758aa31/numpy-2.4.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:76dbb9d4e43c16cf9aa711fcd8de1e2eeb27539dcefb60a1d5e9f12fae1d1ed8", size = 14893070, upload-time = "2026-03-09T07:58:37.7Z" }, + { url = "https://files.pythonhosted.org/packages/9a/04/a19b3c91dbec0a49269407f15d5753673a09832daed40c45e8150e6fa558/numpy-2.4.3-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:29363fbfa6f8ee855d7569c96ce524845e3d726d6c19b29eceec7dd555dab152", size = 5399609, upload-time = "2026-03-09T07:58:39.853Z" }, + { url = "https://files.pythonhosted.org/packages/79/34/4d73603f5420eab89ea8a67097b31364bf7c30f811d4dd84b1659c7476d9/numpy-2.4.3-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:bc71942c789ef415a37f0d4eab90341425a00d538cd0642445d30b41023d3395", size = 6714355, upload-time = "2026-03-09T07:58:42.365Z" }, + { url = "https://files.pythonhosted.org/packages/58/ad/1100d7229bb248394939a12a8074d485b655e8ed44207d328fdd7fcebc7b/numpy-2.4.3-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7e58765ad74dcebd3ef0208a5078fba32dc8ec3578fe84a604432950cd043d79", size = 15800434, upload-time = "2026-03-09T07:58:44.837Z" }, + { url = "https://files.pythonhosted.org/packages/0c/fd/16d710c085d28ba4feaf29ac60c936c9d662e390344f94a6beaa2ac9899b/numpy-2.4.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8e236dbda4e1d319d681afcbb136c0c4a8e0f1a5c58ceec2adebb547357fe857", size = 16729409, upload-time = "2026-03-09T07:58:47.972Z" }, + { url = "https://files.pythonhosted.org/packages/57/a7/b35835e278c18b85206834b3aa3abe68e77a98769c59233d1f6300284781/numpy-2.4.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:4b42639cdde6d24e732ff823a3fa5b701d8acad89c4142bc1d0bd6dc85200ba5", size = 12504685, upload-time = "2026-03-09T07:58:50.525Z" }, ] [[package]] name = "packaging" -version = "24.1" +version = "26.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", size = 148788, upload-time = "2024-06-09T23:19:24.956Z" } +sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985, upload-time = "2024-06-09T23:19:21.909Z" }, + { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, ] [[package]] name = "parso" -version = "0.8.4" +version = "0.8.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609, upload-time = "2024-04-05T09:43:55.897Z" } +sdist = { url = "https://files.pythonhosted.org/packages/81/76/a1e769043c0c0c9fe391b702539d594731a4362334cdf4dc25d0c09761e7/parso-0.8.6.tar.gz", hash = "sha256:2b9a0332696df97d454fa67b81618fd69c35a7b90327cbe6ba5c92d2c68a7bfd", size = 401621, upload-time = "2026-02-09T15:45:24.425Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650, upload-time = "2024-04-05T09:43:53.299Z" }, + { url = "https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl", hash = "sha256:2c549f800b70a5c4952197248825584cb00f033b29c692671d3bf08bf380baff", size = 106894, upload-time = "2026-02-09T15:45:21.391Z" }, ] [[package]] @@ -1369,172 +1457,175 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, ] -[[package]] -name = "pickleshare" -version = "0.7.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/b6/df3c1c9b616e9c0edbc4fbab6ddd09df9535849c64ba51fcb6531c32d4d8/pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", size = 6161, upload-time = "2018-09-25T19:17:37.249Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9a/41/220f49aaea88bc6fa6cba8d05ecf24676326156c23b991e80b3f2fc24c77/pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56", size = 6877, upload-time = "2018-09-25T19:17:35.817Z" }, -] - [[package]] name = "pillow" -version = "10.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059, upload-time = "2024-07-01T09:48:43.583Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/69/a31cccd538ca0b5272be2a38347f8839b97a14be104ea08b0db92f749c74/pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e", size = 3509271, upload-time = "2024-07-01T09:45:22.07Z" }, - { url = "https://files.pythonhosted.org/packages/9a/9e/4143b907be8ea0bce215f2ae4f7480027473f8b61fcedfda9d851082a5d2/pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d", size = 3375658, upload-time = "2024-07-01T09:45:25.292Z" }, - { url = "https://files.pythonhosted.org/packages/8a/25/1fc45761955f9359b1169aa75e241551e74ac01a09f487adaaf4c3472d11/pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856", size = 4332075, upload-time = "2024-07-01T09:45:27.94Z" }, - { url = "https://files.pythonhosted.org/packages/5e/dd/425b95d0151e1d6c951f45051112394f130df3da67363b6bc75dc4c27aba/pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f", size = 4444808, upload-time = "2024-07-01T09:45:30.305Z" }, - { url = "https://files.pythonhosted.org/packages/b1/84/9a15cc5726cbbfe7f9f90bfb11f5d028586595907cd093815ca6644932e3/pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b", size = 4356290, upload-time = "2024-07-01T09:45:32.868Z" }, - { url = "https://files.pythonhosted.org/packages/b5/5b/6651c288b08df3b8c1e2f8c1152201e0b25d240e22ddade0f1e242fc9fa0/pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc", size = 4525163, upload-time = "2024-07-01T09:45:35.279Z" }, - { url = "https://files.pythonhosted.org/packages/07/8b/34854bf11a83c248505c8cb0fcf8d3d0b459a2246c8809b967963b6b12ae/pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e", size = 4463100, upload-time = "2024-07-01T09:45:37.74Z" }, - { url = "https://files.pythonhosted.org/packages/78/63/0632aee4e82476d9cbe5200c0cdf9ba41ee04ed77887432845264d81116d/pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46", size = 4592880, upload-time = "2024-07-01T09:45:39.89Z" }, - { url = "https://files.pythonhosted.org/packages/df/56/b8663d7520671b4398b9d97e1ed9f583d4afcbefbda3c6188325e8c297bd/pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984", size = 2235218, upload-time = "2024-07-01T09:45:42.771Z" }, - { url = "https://files.pythonhosted.org/packages/f4/72/0203e94a91ddb4a9d5238434ae6c1ca10e610e8487036132ea9bf806ca2a/pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141", size = 2554487, upload-time = "2024-07-01T09:45:45.176Z" }, - { url = "https://files.pythonhosted.org/packages/bd/52/7e7e93d7a6e4290543f17dc6f7d3af4bd0b3dd9926e2e8a35ac2282bc5f4/pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1", size = 2243219, upload-time = "2024-07-01T09:45:47.274Z" }, - { url = "https://files.pythonhosted.org/packages/a7/62/c9449f9c3043c37f73e7487ec4ef0c03eb9c9afc91a92b977a67b3c0bbc5/pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", size = 3509265, upload-time = "2024-07-01T09:45:49.812Z" }, - { url = "https://files.pythonhosted.org/packages/f4/5f/491dafc7bbf5a3cc1845dc0430872e8096eb9e2b6f8161509d124594ec2d/pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", size = 3375655, upload-time = "2024-07-01T09:45:52.462Z" }, - { url = "https://files.pythonhosted.org/packages/73/d5/c4011a76f4207a3c151134cd22a1415741e42fa5ddecec7c0182887deb3d/pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", size = 4340304, upload-time = "2024-07-01T09:45:55.006Z" }, - { url = "https://files.pythonhosted.org/packages/ac/10/c67e20445a707f7a610699bba4fe050583b688d8cd2d202572b257f46600/pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", size = 4452804, upload-time = "2024-07-01T09:45:58.437Z" }, - { url = "https://files.pythonhosted.org/packages/a9/83/6523837906d1da2b269dee787e31df3b0acb12e3d08f024965a3e7f64665/pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", size = 4365126, upload-time = "2024-07-01T09:46:00.713Z" }, - { url = "https://files.pythonhosted.org/packages/ba/e5/8c68ff608a4203085158cff5cc2a3c534ec384536d9438c405ed6370d080/pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", size = 4533541, upload-time = "2024-07-01T09:46:03.235Z" }, - { url = "https://files.pythonhosted.org/packages/f4/7c/01b8dbdca5bc6785573f4cee96e2358b0918b7b2c7b60d8b6f3abf87a070/pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", size = 4471616, upload-time = "2024-07-01T09:46:05.356Z" }, - { url = "https://files.pythonhosted.org/packages/c8/57/2899b82394a35a0fbfd352e290945440e3b3785655a03365c0ca8279f351/pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", size = 4600802, upload-time = "2024-07-01T09:46:08.145Z" }, - { url = "https://files.pythonhosted.org/packages/4d/d7/a44f193d4c26e58ee5d2d9db3d4854b2cfb5b5e08d360a5e03fe987c0086/pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496", size = 2235213, upload-time = "2024-07-01T09:46:10.211Z" }, - { url = "https://files.pythonhosted.org/packages/c1/d0/5866318eec2b801cdb8c82abf190c8343d8a1cd8bf5a0c17444a6f268291/pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91", size = 2554498, upload-time = "2024-07-01T09:46:12.685Z" }, - { url = "https://files.pythonhosted.org/packages/d4/c8/310ac16ac2b97e902d9eb438688de0d961660a87703ad1561fd3dfbd2aa0/pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22", size = 2243219, upload-time = "2024-07-01T09:46:14.83Z" }, - { url = "https://files.pythonhosted.org/packages/05/cb/0353013dc30c02a8be34eb91d25e4e4cf594b59e5a55ea1128fde1e5f8ea/pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94", size = 3509350, upload-time = "2024-07-01T09:46:17.177Z" }, - { url = "https://files.pythonhosted.org/packages/e7/cf/5c558a0f247e0bf9cec92bff9b46ae6474dd736f6d906315e60e4075f737/pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", size = 3374980, upload-time = "2024-07-01T09:46:19.169Z" }, - { url = "https://files.pythonhosted.org/packages/84/48/6e394b86369a4eb68b8a1382c78dc092245af517385c086c5094e3b34428/pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", size = 4343799, upload-time = "2024-07-01T09:46:21.883Z" }, - { url = "https://files.pythonhosted.org/packages/3b/f3/a8c6c11fa84b59b9df0cd5694492da8c039a24cd159f0f6918690105c3be/pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca", size = 4459973, upload-time = "2024-07-01T09:46:24.321Z" }, - { url = "https://files.pythonhosted.org/packages/7d/1b/c14b4197b80150fb64453585247e6fb2e1d93761fa0fa9cf63b102fde822/pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", size = 4370054, upload-time = "2024-07-01T09:46:26.825Z" }, - { url = "https://files.pythonhosted.org/packages/55/77/40daddf677897a923d5d33329acd52a2144d54a9644f2a5422c028c6bf2d/pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", size = 4539484, upload-time = "2024-07-01T09:46:29.355Z" }, - { url = "https://files.pythonhosted.org/packages/40/54/90de3e4256b1207300fb2b1d7168dd912a2fb4b2401e439ba23c2b2cabde/pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b", size = 4477375, upload-time = "2024-07-01T09:46:31.756Z" }, - { url = "https://files.pythonhosted.org/packages/13/24/1bfba52f44193860918ff7c93d03d95e3f8748ca1de3ceaf11157a14cf16/pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9", size = 4608773, upload-time = "2024-07-01T09:46:33.73Z" }, - { url = "https://files.pythonhosted.org/packages/55/04/5e6de6e6120451ec0c24516c41dbaf80cce1b6451f96561235ef2429da2e/pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42", size = 2235690, upload-time = "2024-07-01T09:46:36.587Z" }, - { url = "https://files.pythonhosted.org/packages/74/0a/d4ce3c44bca8635bd29a2eab5aa181b654a734a29b263ca8efe013beea98/pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a", size = 2554951, upload-time = "2024-07-01T09:46:38.777Z" }, - { url = "https://files.pythonhosted.org/packages/b5/ca/184349ee40f2e92439be9b3502ae6cfc43ac4b50bc4fc6b3de7957563894/pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9", size = 2243427, upload-time = "2024-07-01T09:46:43.15Z" }, - { url = "https://files.pythonhosted.org/packages/c3/00/706cebe7c2c12a6318aabe5d354836f54adff7156fd9e1bd6c89f4ba0e98/pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3", size = 3525685, upload-time = "2024-07-01T09:46:45.194Z" }, - { url = "https://files.pythonhosted.org/packages/cf/76/f658cbfa49405e5ecbfb9ba42d07074ad9792031267e782d409fd8fe7c69/pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb", size = 3374883, upload-time = "2024-07-01T09:46:47.331Z" }, - { url = "https://files.pythonhosted.org/packages/46/2b/99c28c4379a85e65378211971c0b430d9c7234b1ec4d59b2668f6299e011/pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70", size = 4339837, upload-time = "2024-07-01T09:46:49.647Z" }, - { url = "https://files.pythonhosted.org/packages/f1/74/b1ec314f624c0c43711fdf0d8076f82d9d802afd58f1d62c2a86878e8615/pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be", size = 4455562, upload-time = "2024-07-01T09:46:51.811Z" }, - { url = "https://files.pythonhosted.org/packages/4a/2a/4b04157cb7b9c74372fa867096a1607e6fedad93a44deeff553ccd307868/pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0", size = 4366761, upload-time = "2024-07-01T09:46:53.961Z" }, - { url = "https://files.pythonhosted.org/packages/ac/7b/8f1d815c1a6a268fe90481232c98dd0e5fa8c75e341a75f060037bd5ceae/pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc", size = 4536767, upload-time = "2024-07-01T09:46:56.664Z" }, - { url = "https://files.pythonhosted.org/packages/e5/77/05fa64d1f45d12c22c314e7b97398ffb28ef2813a485465017b7978b3ce7/pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a", size = 4477989, upload-time = "2024-07-01T09:46:58.977Z" }, - { url = "https://files.pythonhosted.org/packages/12/63/b0397cfc2caae05c3fb2f4ed1b4fc4fc878f0243510a7a6034ca59726494/pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309", size = 4610255, upload-time = "2024-07-01T09:47:01.189Z" }, - { url = "https://files.pythonhosted.org/packages/7b/f9/cfaa5082ca9bc4a6de66ffe1c12c2d90bf09c309a5f52b27759a596900e7/pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060", size = 2235603, upload-time = "2024-07-01T09:47:03.918Z" }, - { url = "https://files.pythonhosted.org/packages/01/6a/30ff0eef6e0c0e71e55ded56a38d4859bf9d3634a94a88743897b5f96936/pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea", size = 2554972, upload-time = "2024-07-01T09:47:06.152Z" }, - { url = "https://files.pythonhosted.org/packages/48/2c/2e0a52890f269435eee38b21c8218e102c621fe8d8df8b9dd06fabf879ba/pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", size = 2243375, upload-time = "2024-07-01T09:47:09.065Z" }, - { url = "https://files.pythonhosted.org/packages/56/70/f40009702a477ce87d8d9faaa4de51d6562b3445d7a314accd06e4ffb01d/pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736", size = 3509213, upload-time = "2024-07-01T09:47:11.662Z" }, - { url = "https://files.pythonhosted.org/packages/10/43/105823d233c5e5d31cea13428f4474ded9d961652307800979a59d6a4276/pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b", size = 3375883, upload-time = "2024-07-01T09:47:14.453Z" }, - { url = "https://files.pythonhosted.org/packages/3c/ad/7850c10bac468a20c918f6a5dbba9ecd106ea1cdc5db3c35e33a60570408/pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2", size = 4330810, upload-time = "2024-07-01T09:47:16.695Z" }, - { url = "https://files.pythonhosted.org/packages/84/4c/69bbed9e436ac22f9ed193a2b64f64d68fcfbc9f4106249dc7ed4889907b/pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680", size = 4444341, upload-time = "2024-07-01T09:47:19.334Z" }, - { url = "https://files.pythonhosted.org/packages/8f/4f/c183c63828a3f37bf09644ce94cbf72d4929b033b109160a5379c2885932/pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b", size = 4356005, upload-time = "2024-07-01T09:47:21.805Z" }, - { url = "https://files.pythonhosted.org/packages/fb/ad/435fe29865f98a8fbdc64add8875a6e4f8c97749a93577a8919ec6f32c64/pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd", size = 4525201, upload-time = "2024-07-01T09:47:24.457Z" }, - { url = "https://files.pythonhosted.org/packages/80/74/be8bf8acdfd70e91f905a12ae13cfb2e17c0f1da745c40141e26d0971ff5/pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84", size = 4460635, upload-time = "2024-07-01T09:47:26.841Z" }, - { url = "https://files.pythonhosted.org/packages/e4/90/763616e66dc9ad59c9b7fb58f863755e7934ef122e52349f62c7742b82d3/pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0", size = 4590283, upload-time = "2024-07-01T09:47:29.247Z" }, - { url = "https://files.pythonhosted.org/packages/69/66/03002cb5b2c27bb519cba63b9f9aa3709c6f7a5d3b285406c01f03fb77e5/pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e", size = 2235185, upload-time = "2024-07-01T09:47:32.205Z" }, - { url = "https://files.pythonhosted.org/packages/f2/75/3cb820b2812405fc7feb3d0deb701ef0c3de93dc02597115e00704591bc9/pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab", size = 2554594, upload-time = "2024-07-01T09:47:34.285Z" }, - { url = "https://files.pythonhosted.org/packages/31/85/955fa5400fa8039921f630372cfe5056eed6e1b8e0430ee4507d7de48832/pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d", size = 3509283, upload-time = "2024-07-01T09:47:36.394Z" }, - { url = "https://files.pythonhosted.org/packages/23/9c/343827267eb28d41cd82b4180d33b10d868af9077abcec0af9793aa77d2d/pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b", size = 3375691, upload-time = "2024-07-01T09:47:38.853Z" }, - { url = "https://files.pythonhosted.org/packages/60/a3/7ebbeabcd341eab722896d1a5b59a3df98c4b4d26cf4b0385f8aa94296f7/pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd", size = 4328295, upload-time = "2024-07-01T09:47:41.765Z" }, - { url = "https://files.pythonhosted.org/packages/32/3f/c02268d0c6fb6b3958bdda673c17b315c821d97df29ae6969f20fb49388a/pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126", size = 4440810, upload-time = "2024-07-01T09:47:44.27Z" }, - { url = "https://files.pythonhosted.org/packages/67/5d/1c93c8cc35f2fdd3d6cc7e4ad72d203902859a2867de6ad957d9b708eb8d/pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b", size = 4352283, upload-time = "2024-07-01T09:47:46.673Z" }, - { url = "https://files.pythonhosted.org/packages/bc/a8/8655557c9c7202b8abbd001f61ff36711cefaf750debcaa1c24d154ef602/pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c", size = 4521800, upload-time = "2024-07-01T09:47:48.813Z" }, - { url = "https://files.pythonhosted.org/packages/58/78/6f95797af64d137124f68af1bdaa13b5332da282b86031f6fa70cf368261/pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1", size = 4459177, upload-time = "2024-07-01T09:47:52.104Z" }, - { url = "https://files.pythonhosted.org/packages/8a/6d/2b3ce34f1c4266d79a78c9a51d1289a33c3c02833fe294ef0dcbb9cba4ed/pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df", size = 4589079, upload-time = "2024-07-01T09:47:54.999Z" }, - { url = "https://files.pythonhosted.org/packages/e3/e0/456258c74da1ff5bf8ef1eab06a95ca994d8b9ed44c01d45c3f8cbd1db7e/pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef", size = 2235247, upload-time = "2024-07-01T09:47:57.666Z" }, - { url = "https://files.pythonhosted.org/packages/37/f8/bef952bdb32aa53741f58bf21798642209e994edc3f6598f337f23d5400a/pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5", size = 2554479, upload-time = "2024-07-01T09:47:59.881Z" }, - { url = "https://files.pythonhosted.org/packages/bb/8e/805201619cad6651eef5fc1fdef913804baf00053461522fabbc5588ea12/pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e", size = 2243226, upload-time = "2024-07-01T09:48:02.508Z" }, - { url = "https://files.pythonhosted.org/packages/38/30/095d4f55f3a053392f75e2eae45eba3228452783bab3d9a920b951ac495c/pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4", size = 3493889, upload-time = "2024-07-01T09:48:04.815Z" }, - { url = "https://files.pythonhosted.org/packages/f3/e8/4ff79788803a5fcd5dc35efdc9386af153569853767bff74540725b45863/pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da", size = 3346160, upload-time = "2024-07-01T09:48:07.206Z" }, - { url = "https://files.pythonhosted.org/packages/d7/ac/4184edd511b14f760c73f5bb8a5d6fd85c591c8aff7c2229677a355c4179/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026", size = 3435020, upload-time = "2024-07-01T09:48:09.66Z" }, - { url = "https://files.pythonhosted.org/packages/da/21/1749cd09160149c0a246a81d646e05f35041619ce76f6493d6a96e8d1103/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e", size = 3490539, upload-time = "2024-07-01T09:48:12.529Z" }, - { url = "https://files.pythonhosted.org/packages/b6/f5/f71fe1888b96083b3f6dfa0709101f61fc9e972c0c8d04e9d93ccef2a045/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5", size = 3476125, upload-time = "2024-07-01T09:48:14.891Z" }, - { url = "https://files.pythonhosted.org/packages/96/b9/c0362c54290a31866c3526848583a2f45a535aa9d725fd31e25d318c805f/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885", size = 3579373, upload-time = "2024-07-01T09:48:17.601Z" }, - { url = "https://files.pythonhosted.org/packages/52/3b/ce7a01026a7cf46e5452afa86f97a5e88ca97f562cafa76570178ab56d8d/pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5", size = 2554661, upload-time = "2024-07-01T09:48:20.293Z" }, - { url = "https://files.pythonhosted.org/packages/e1/1f/5a9fcd6ced51633c22481417e11b1b47d723f64fb536dfd67c015eb7f0ab/pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b", size = 3493850, upload-time = "2024-07-01T09:48:23.03Z" }, - { url = "https://files.pythonhosted.org/packages/cb/e6/3ea4755ed5320cb62aa6be2f6de47b058c6550f752dd050e86f694c59798/pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908", size = 3346118, upload-time = "2024-07-01T09:48:25.256Z" }, - { url = "https://files.pythonhosted.org/packages/0a/22/492f9f61e4648422b6ca39268ec8139277a5b34648d28f400faac14e0f48/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b", size = 3434958, upload-time = "2024-07-01T09:48:28.078Z" }, - { url = "https://files.pythonhosted.org/packages/f9/19/559a48ad4045704bb0547965b9a9345f5cd461347d977a56d178db28819e/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8", size = 3490340, upload-time = "2024-07-01T09:48:30.734Z" }, - { url = "https://files.pythonhosted.org/packages/d9/de/cebaca6fb79905b3a1aa0281d238769df3fb2ede34fd7c0caa286575915a/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a", size = 3476048, upload-time = "2024-07-01T09:48:33.292Z" }, - { url = "https://files.pythonhosted.org/packages/71/f0/86d5b2f04693b0116a01d75302b0a307800a90d6c351a8aa4f8ae76cd499/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27", size = 3579366, upload-time = "2024-07-01T09:48:36.527Z" }, - { url = "https://files.pythonhosted.org/packages/37/ae/2dbfc38cc4fd14aceea14bc440d5151b21f64c4c3ba3f6f4191610b7ee5d/pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3", size = 2554652, upload-time = "2024-07-01T09:48:38.789Z" }, -] - -[[package]] -name = "pkgutil-resolve-name" -version = "1.3.10" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/f2/f2891a9dc37398696ddd945012b90ef8d0a034f0012e3f83c3f7a70b0f79/pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174", size = 5054, upload-time = "2021-07-21T08:19:05.096Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/5c/3d4882ba113fd55bdba9326c1e4c62a15e674a2501de4869e6bd6301f87e/pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e", size = 4734, upload-time = "2021-07-21T08:19:03.106Z" }, +version = "12.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1f/42/5c74462b4fd957fcd7b13b04fb3205ff8349236ea74c7c375766d6c82288/pillow-12.1.1.tar.gz", hash = "sha256:9ad8fa5937ab05218e2b6a4cff30295ad35afd2f83ac592e68c0d871bb0fdbc4", size = 46980264, upload-time = "2026-02-11T04:23:07.146Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/30/5bd3d794762481f8c8ae9c80e7b76ecea73b916959eb587521358ef0b2f9/pillow-12.1.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1f1625b72740fdda5d77b4def688eb8fd6490975d06b909fd19f13f391e077e0", size = 5304099, upload-time = "2026-02-11T04:20:06.13Z" }, + { url = "https://files.pythonhosted.org/packages/bd/c1/aab9e8f3eeb4490180e357955e15c2ef74b31f64790ff356c06fb6cf6d84/pillow-12.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:178aa072084bd88ec759052feca8e56cbb14a60b39322b99a049e58090479713", size = 4657880, upload-time = "2026-02-11T04:20:09.291Z" }, + { url = "https://files.pythonhosted.org/packages/f1/0a/9879e30d56815ad529d3985aeff5af4964202425c27261a6ada10f7cbf53/pillow-12.1.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b66e95d05ba806247aaa1561f080abc7975daf715c30780ff92a20e4ec546e1b", size = 6222587, upload-time = "2026-02-11T04:20:10.82Z" }, + { url = "https://files.pythonhosted.org/packages/5a/5f/a1b72ff7139e4f89014e8d451442c74a774d5c43cd938fb0a9f878576b37/pillow-12.1.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:89c7e895002bbe49cdc5426150377cbbc04767d7547ed145473f496dfa40408b", size = 8027678, upload-time = "2026-02-11T04:20:12.455Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c2/c7cb187dac79a3d22c3ebeae727abee01e077c8c7d930791dc592f335153/pillow-12.1.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a5cbdcddad0af3da87cb16b60d23648bc3b51967eb07223e9fed77a82b457c4", size = 6335777, upload-time = "2026-02-11T04:20:14.441Z" }, + { url = "https://files.pythonhosted.org/packages/0c/7b/f9b09a7804ec7336effb96c26d37c29d27225783dc1501b7d62dcef6ae25/pillow-12.1.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9f51079765661884a486727f0729d29054242f74b46186026582b4e4769918e4", size = 7027140, upload-time = "2026-02-11T04:20:16.387Z" }, + { url = "https://files.pythonhosted.org/packages/98/b2/2fa3c391550bd421b10849d1a2144c44abcd966daadd2f7c12e19ea988c4/pillow-12.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:99c1506ea77c11531d75e3a412832a13a71c7ebc8192ab9e4b2e355555920e3e", size = 6449855, upload-time = "2026-02-11T04:20:18.554Z" }, + { url = "https://files.pythonhosted.org/packages/96/ff/9caf4b5b950c669263c39e96c78c0d74a342c71c4f43fd031bb5cb7ceac9/pillow-12.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:36341d06738a9f66c8287cf8b876d24b18db9bd8740fa0672c74e259ad408cff", size = 7151329, upload-time = "2026-02-11T04:20:20.646Z" }, + { url = "https://files.pythonhosted.org/packages/7b/f8/4b24841f582704da675ca535935bccb32b00a6da1226820845fac4a71136/pillow-12.1.1-cp310-cp310-win32.whl", hash = "sha256:6c52f062424c523d6c4db85518774cc3d50f5539dd6eed32b8f6229b26f24d40", size = 6325574, upload-time = "2026-02-11T04:20:22.43Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f9/9f6b01c0881d7036063aa6612ef04c0e2cad96be21325a1e92d0203f8e91/pillow-12.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:c6008de247150668a705a6338156efb92334113421ceecf7438a12c9a12dab23", size = 7032347, upload-time = "2026-02-11T04:20:23.932Z" }, + { url = "https://files.pythonhosted.org/packages/79/13/c7922edded3dcdaf10c59297540b72785620abc0538872c819915746757d/pillow-12.1.1-cp310-cp310-win_arm64.whl", hash = "sha256:1a9b0ee305220b392e1124a764ee4265bd063e54a751a6b62eff69992f457fa9", size = 2453457, upload-time = "2026-02-11T04:20:25.392Z" }, + { url = "https://files.pythonhosted.org/packages/2b/46/5da1ec4a5171ee7bf1a0efa064aba70ba3d6e0788ce3f5acd1375d23c8c0/pillow-12.1.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:e879bb6cd5c73848ef3b2b48b8af9ff08c5b71ecda8048b7dd22d8a33f60be32", size = 5304084, upload-time = "2026-02-11T04:20:27.501Z" }, + { url = "https://files.pythonhosted.org/packages/78/93/a29e9bc02d1cf557a834da780ceccd54e02421627200696fcf805ebdc3fb/pillow-12.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:365b10bb9417dd4498c0e3b128018c4a624dc11c7b97d8cc54effe3b096f4c38", size = 4657866, upload-time = "2026-02-11T04:20:29.827Z" }, + { url = "https://files.pythonhosted.org/packages/13/84/583a4558d492a179d31e4aae32eadce94b9acf49c0337c4ce0b70e0a01f2/pillow-12.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d4ce8e329c93845720cd2014659ca67eac35f6433fd3050393d85f3ecef0dad5", size = 6232148, upload-time = "2026-02-11T04:20:31.329Z" }, + { url = "https://files.pythonhosted.org/packages/d5/e2/53c43334bbbb2d3b938978532fbda8e62bb6e0b23a26ce8592f36bcc4987/pillow-12.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc354a04072b765eccf2204f588a7a532c9511e8b9c7f900e1b64e3e33487090", size = 8038007, upload-time = "2026-02-11T04:20:34.225Z" }, + { url = "https://files.pythonhosted.org/packages/b8/a6/3d0e79c8a9d58150dd98e199d7c1c56861027f3829a3a60b3c2784190180/pillow-12.1.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7e7976bf1910a8116b523b9f9f58bf410f3e8aa330cd9a2bb2953f9266ab49af", size = 6345418, upload-time = "2026-02-11T04:20:35.858Z" }, + { url = "https://files.pythonhosted.org/packages/a2/c8/46dfeac5825e600579157eea177be43e2f7ff4a99da9d0d0a49533509ac5/pillow-12.1.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:597bd9c8419bc7c6af5604e55847789b69123bbe25d65cc6ad3012b4f3c98d8b", size = 7034590, upload-time = "2026-02-11T04:20:37.91Z" }, + { url = "https://files.pythonhosted.org/packages/af/bf/e6f65d3db8a8bbfeaf9e13cc0417813f6319863a73de934f14b2229ada18/pillow-12.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2c1fc0f2ca5f96a3c8407e41cca26a16e46b21060fe6d5b099d2cb01412222f5", size = 6458655, upload-time = "2026-02-11T04:20:39.496Z" }, + { url = "https://files.pythonhosted.org/packages/f9/c2/66091f3f34a25894ca129362e510b956ef26f8fb67a0e6417bc5744e56f1/pillow-12.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:578510d88c6229d735855e1f278aa305270438d36a05031dfaae5067cc8eb04d", size = 7159286, upload-time = "2026-02-11T04:20:41.139Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5a/24bc8eb526a22f957d0cec6243146744966d40857e3d8deb68f7902ca6c1/pillow-12.1.1-cp311-cp311-win32.whl", hash = "sha256:7311c0a0dcadb89b36b7025dfd8326ecfa36964e29913074d47382706e516a7c", size = 6328663, upload-time = "2026-02-11T04:20:43.184Z" }, + { url = "https://files.pythonhosted.org/packages/31/03/bef822e4f2d8f9d7448c133d0a18185d3cce3e70472774fffefe8b0ed562/pillow-12.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:fbfa2a7c10cc2623f412753cddf391c7f971c52ca40a3f65dc5039b2939e8563", size = 7031448, upload-time = "2026-02-11T04:20:44.696Z" }, + { url = "https://files.pythonhosted.org/packages/49/70/f76296f53610bd17b2e7d31728b8b7825e3ac3b5b3688b51f52eab7c0818/pillow-12.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:b81b5e3511211631b3f672a595e3221252c90af017e399056d0faabb9538aa80", size = 2453651, upload-time = "2026-02-11T04:20:46.243Z" }, + { url = "https://files.pythonhosted.org/packages/07/d3/8df65da0d4df36b094351dce696f2989bec731d4f10e743b1c5f4da4d3bf/pillow-12.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ab323b787d6e18b3d91a72fc99b1a2c28651e4358749842b8f8dfacd28ef2052", size = 5262803, upload-time = "2026-02-11T04:20:47.653Z" }, + { url = "https://files.pythonhosted.org/packages/d6/71/5026395b290ff404b836e636f51d7297e6c83beceaa87c592718747e670f/pillow-12.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:adebb5bee0f0af4909c30db0d890c773d1a92ffe83da908e2e9e720f8edf3984", size = 4657601, upload-time = "2026-02-11T04:20:49.328Z" }, + { url = "https://files.pythonhosted.org/packages/b1/2e/1001613d941c67442f745aff0f7cc66dd8df9a9c084eb497e6a543ee6f7e/pillow-12.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bb66b7cc26f50977108790e2456b7921e773f23db5630261102233eb355a3b79", size = 6234995, upload-time = "2026-02-11T04:20:51.032Z" }, + { url = "https://files.pythonhosted.org/packages/07/26/246ab11455b2549b9233dbd44d358d033a2f780fa9007b61a913c5b2d24e/pillow-12.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aee2810642b2898bb187ced9b349e95d2a7272930796e022efaf12e99dccd293", size = 8045012, upload-time = "2026-02-11T04:20:52.882Z" }, + { url = "https://files.pythonhosted.org/packages/b2/8b/07587069c27be7535ac1fe33874e32de118fbd34e2a73b7f83436a88368c/pillow-12.1.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a0b1cd6232e2b618adcc54d9882e4e662a089d5768cd188f7c245b4c8c44a397", size = 6349638, upload-time = "2026-02-11T04:20:54.444Z" }, + { url = "https://files.pythonhosted.org/packages/ff/79/6df7b2ee763d619cda2fb4fea498e5f79d984dae304d45a8999b80d6cf5c/pillow-12.1.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7aac39bcf8d4770d089588a2e1dd111cbaa42df5a94be3114222057d68336bd0", size = 7041540, upload-time = "2026-02-11T04:20:55.97Z" }, + { url = "https://files.pythonhosted.org/packages/2c/5e/2ba19e7e7236d7529f4d873bdaf317a318896bac289abebd4bb00ef247f0/pillow-12.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ab174cd7d29a62dd139c44bf74b698039328f45cb03b4596c43473a46656b2f3", size = 6462613, upload-time = "2026-02-11T04:20:57.542Z" }, + { url = "https://files.pythonhosted.org/packages/03/03/31216ec124bb5c3dacd74ce8efff4cc7f52643653bad4825f8f08c697743/pillow-12.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:339ffdcb7cbeaa08221cd401d517d4b1fe7a9ed5d400e4a8039719238620ca35", size = 7166745, upload-time = "2026-02-11T04:20:59.196Z" }, + { url = "https://files.pythonhosted.org/packages/1f/e7/7c4552d80052337eb28653b617eafdef39adfb137c49dd7e831b8dc13bc5/pillow-12.1.1-cp312-cp312-win32.whl", hash = "sha256:5d1f9575a12bed9e9eedd9a4972834b08c97a352bd17955ccdebfeca5913fa0a", size = 6328823, upload-time = "2026-02-11T04:21:01.385Z" }, + { url = "https://files.pythonhosted.org/packages/3d/17/688626d192d7261bbbf98846fc98995726bddc2c945344b65bec3a29d731/pillow-12.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:21329ec8c96c6e979cd0dfd29406c40c1d52521a90544463057d2aaa937d66a6", size = 7033367, upload-time = "2026-02-11T04:21:03.536Z" }, + { url = "https://files.pythonhosted.org/packages/ed/fe/a0ef1f73f939b0eca03ee2c108d0043a87468664770612602c63266a43c4/pillow-12.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:af9a332e572978f0218686636610555ae3defd1633597be015ed50289a03c523", size = 2453811, upload-time = "2026-02-11T04:21:05.116Z" }, + { url = "https://files.pythonhosted.org/packages/d5/11/6db24d4bd7685583caeae54b7009584e38da3c3d4488ed4cd25b439de486/pillow-12.1.1-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:d242e8ac078781f1de88bf823d70c1a9b3c7950a44cdf4b7c012e22ccbcd8e4e", size = 4062689, upload-time = "2026-02-11T04:21:06.804Z" }, + { url = "https://files.pythonhosted.org/packages/33/c0/ce6d3b1fe190f0021203e0d9b5b99e57843e345f15f9ef22fcd43842fd21/pillow-12.1.1-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:02f84dfad02693676692746df05b89cf25597560db2857363a208e393429f5e9", size = 4138535, upload-time = "2026-02-11T04:21:08.452Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c6/d5eb6a4fb32a3f9c21a8c7613ec706534ea1cf9f4b3663e99f0d83f6fca8/pillow-12.1.1-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:e65498daf4b583091ccbb2556c7000abf0f3349fcd57ef7adc9a84a394ed29f6", size = 3601364, upload-time = "2026-02-11T04:21:10.194Z" }, + { url = "https://files.pythonhosted.org/packages/14/a1/16c4b823838ba4c9c52c0e6bbda903a3fe5a1bdbf1b8eb4fff7156f3e318/pillow-12.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c6db3b84c87d48d0088943bf33440e0c42370b99b1c2a7989216f7b42eede60", size = 5262561, upload-time = "2026-02-11T04:21:11.742Z" }, + { url = "https://files.pythonhosted.org/packages/bb/ad/ad9dc98ff24f485008aa5cdedaf1a219876f6f6c42a4626c08bc4e80b120/pillow-12.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8b7e5304e34942bf62e15184219a7b5ad4ff7f3bb5cca4d984f37df1a0e1aee2", size = 4657460, upload-time = "2026-02-11T04:21:13.786Z" }, + { url = "https://files.pythonhosted.org/packages/9e/1b/f1a4ea9a895b5732152789326202a82464d5254759fbacae4deea3069334/pillow-12.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:18e5bddd742a44b7e6b1e773ab5db102bd7a94c32555ba656e76d319d19c3850", size = 6232698, upload-time = "2026-02-11T04:21:15.949Z" }, + { url = "https://files.pythonhosted.org/packages/95/f4/86f51b8745070daf21fd2e5b1fe0eb35d4db9ca26e6d58366562fb56a743/pillow-12.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc44ef1f3de4f45b50ccf9136999d71abb99dca7706bc75d222ed350b9fd2289", size = 8041706, upload-time = "2026-02-11T04:21:17.723Z" }, + { url = "https://files.pythonhosted.org/packages/29/9b/d6ecd956bb1266dd1045e995cce9b8d77759e740953a1c9aad9502a0461e/pillow-12.1.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5a8eb7ed8d4198bccbd07058416eeec51686b498e784eda166395a23eb99138e", size = 6346621, upload-time = "2026-02-11T04:21:19.547Z" }, + { url = "https://files.pythonhosted.org/packages/71/24/538bff45bde96535d7d998c6fed1a751c75ac7c53c37c90dc2601b243893/pillow-12.1.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:47b94983da0c642de92ced1702c5b6c292a84bd3a8e1d1702ff923f183594717", size = 7038069, upload-time = "2026-02-11T04:21:21.378Z" }, + { url = "https://files.pythonhosted.org/packages/94/0e/58cb1a6bc48f746bc4cb3adb8cabff73e2742c92b3bf7a220b7cf69b9177/pillow-12.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:518a48c2aab7ce596d3bf79d0e275661b846e86e4d0e7dec34712c30fe07f02a", size = 6460040, upload-time = "2026-02-11T04:21:23.148Z" }, + { url = "https://files.pythonhosted.org/packages/6c/57/9045cb3ff11eeb6c1adce3b2d60d7d299d7b273a2e6c8381a524abfdc474/pillow-12.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a550ae29b95c6dc13cf69e2c9dc5747f814c54eeb2e32d683e5e93af56caa029", size = 7164523, upload-time = "2026-02-11T04:21:25.01Z" }, + { url = "https://files.pythonhosted.org/packages/73/f2/9be9cb99f2175f0d4dbadd6616ce1bf068ee54a28277ea1bf1fbf729c250/pillow-12.1.1-cp313-cp313-win32.whl", hash = "sha256:a003d7422449f6d1e3a34e3dd4110c22148336918ddbfc6a32581cd54b2e0b2b", size = 6332552, upload-time = "2026-02-11T04:21:27.238Z" }, + { url = "https://files.pythonhosted.org/packages/3f/eb/b0834ad8b583d7d9d42b80becff092082a1c3c156bb582590fcc973f1c7c/pillow-12.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:344cf1e3dab3be4b1fa08e449323d98a2a3f819ad20f4b22e77a0ede31f0faa1", size = 7040108, upload-time = "2026-02-11T04:21:29.462Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7d/fc09634e2aabdd0feabaff4a32f4a7d97789223e7c2042fd805ea4b4d2c2/pillow-12.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:5c0dd1636633e7e6a0afe7bf6a51a14992b7f8e60de5789018ebbdfae55b040a", size = 2453712, upload-time = "2026-02-11T04:21:31.072Z" }, + { url = "https://files.pythonhosted.org/packages/19/2a/b9d62794fc8a0dd14c1943df68347badbd5511103e0d04c035ffe5cf2255/pillow-12.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0330d233c1a0ead844fc097a7d16c0abff4c12e856c0b325f231820fee1f39da", size = 5264880, upload-time = "2026-02-11T04:21:32.865Z" }, + { url = "https://files.pythonhosted.org/packages/26/9d/e03d857d1347fa5ed9247e123fcd2a97b6220e15e9cb73ca0a8d91702c6e/pillow-12.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5dae5f21afb91322f2ff791895ddd8889e5e947ff59f71b46041c8ce6db790bc", size = 4660616, upload-time = "2026-02-11T04:21:34.97Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ec/8a6d22afd02570d30954e043f09c32772bfe143ba9285e2fdb11284952cd/pillow-12.1.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2e0c664be47252947d870ac0d327fea7e63985a08794758aa8af5b6cb6ec0c9c", size = 6269008, upload-time = "2026-02-11T04:21:36.623Z" }, + { url = "https://files.pythonhosted.org/packages/3d/1d/6d875422c9f28a4a361f495a5f68d9de4a66941dc2c619103ca335fa6446/pillow-12.1.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:691ab2ac363b8217f7d31b3497108fb1f50faab2f75dfb03284ec2f217e87bf8", size = 8073226, upload-time = "2026-02-11T04:21:38.585Z" }, + { url = "https://files.pythonhosted.org/packages/a1/cd/134b0b6ee5eda6dc09e25e24b40fdafe11a520bc725c1d0bbaa5e00bf95b/pillow-12.1.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e9e8064fb1cc019296958595f6db671fba95209e3ceb0c4734c9baf97de04b20", size = 6380136, upload-time = "2026-02-11T04:21:40.562Z" }, + { url = "https://files.pythonhosted.org/packages/7a/a9/7628f013f18f001c1b98d8fffe3452f306a70dc6aba7d931019e0492f45e/pillow-12.1.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:472a8d7ded663e6162dafdf20015c486a7009483ca671cece7a9279b512fcb13", size = 7067129, upload-time = "2026-02-11T04:21:42.521Z" }, + { url = "https://files.pythonhosted.org/packages/1e/f8/66ab30a2193b277785601e82ee2d49f68ea575d9637e5e234faaa98efa4c/pillow-12.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:89b54027a766529136a06cfebeecb3a04900397a3590fd252160b888479517bf", size = 6491807, upload-time = "2026-02-11T04:21:44.22Z" }, + { url = "https://files.pythonhosted.org/packages/da/0b/a877a6627dc8318fdb84e357c5e1a758c0941ab1ddffdafd231983788579/pillow-12.1.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:86172b0831b82ce4f7877f280055892b31179e1576aa00d0df3bb1bbf8c3e524", size = 7190954, upload-time = "2026-02-11T04:21:46.114Z" }, + { url = "https://files.pythonhosted.org/packages/83/43/6f732ff85743cf746b1361b91665d9f5155e1483817f693f8d57ea93147f/pillow-12.1.1-cp313-cp313t-win32.whl", hash = "sha256:44ce27545b6efcf0fdbdceb31c9a5bdea9333e664cda58a7e674bb74608b3986", size = 6336441, upload-time = "2026-02-11T04:21:48.22Z" }, + { url = "https://files.pythonhosted.org/packages/3b/44/e865ef3986611bb75bfabdf94a590016ea327833f434558801122979cd0e/pillow-12.1.1-cp313-cp313t-win_amd64.whl", hash = "sha256:a285e3eb7a5a45a2ff504e31f4a8d1b12ef62e84e5411c6804a42197c1cf586c", size = 7045383, upload-time = "2026-02-11T04:21:50.015Z" }, + { url = "https://files.pythonhosted.org/packages/a8/c6/f4fb24268d0c6908b9f04143697ea18b0379490cb74ba9e8d41b898bd005/pillow-12.1.1-cp313-cp313t-win_arm64.whl", hash = "sha256:cc7d296b5ea4d29e6570dabeaed58d31c3fea35a633a69679fb03d7664f43fb3", size = 2456104, upload-time = "2026-02-11T04:21:51.633Z" }, + { url = "https://files.pythonhosted.org/packages/03/d0/bebb3ffbf31c5a8e97241476c4cf8b9828954693ce6744b4a2326af3e16b/pillow-12.1.1-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:417423db963cb4be8bac3fc1204fe61610f6abeed1580a7a2cbb2fbda20f12af", size = 4062652, upload-time = "2026-02-11T04:21:53.19Z" }, + { url = "https://files.pythonhosted.org/packages/2d/c0/0e16fb0addda4851445c28f8350d8c512f09de27bbb0d6d0bbf8b6709605/pillow-12.1.1-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:b957b71c6b2387610f556a7eb0828afbe40b4a98036fc0d2acfa5a44a0c2036f", size = 4138823, upload-time = "2026-02-11T04:22:03.088Z" }, + { url = "https://files.pythonhosted.org/packages/6b/fb/6170ec655d6f6bb6630a013dd7cf7bc218423d7b5fa9071bf63dc32175ae/pillow-12.1.1-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:097690ba1f2efdeb165a20469d59d8bb03c55fb6621eb2041a060ae8ea3e9642", size = 3601143, upload-time = "2026-02-11T04:22:04.909Z" }, + { url = "https://files.pythonhosted.org/packages/59/04/dc5c3f297510ba9a6837cbb318b87dd2b8f73eb41a43cc63767f65cb599c/pillow-12.1.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:2815a87ab27848db0321fb78c7f0b2c8649dee134b7f2b80c6a45c6831d75ccd", size = 5266254, upload-time = "2026-02-11T04:22:07.656Z" }, + { url = "https://files.pythonhosted.org/packages/05/30/5db1236b0d6313f03ebf97f5e17cda9ca060f524b2fcc875149a8360b21c/pillow-12.1.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:f7ed2c6543bad5a7d5530eb9e78c53132f93dfa44a28492db88b41cdab885202", size = 4657499, upload-time = "2026-02-11T04:22:09.613Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/008d2ca0eb612e81968e8be0bbae5051efba24d52debf930126d7eaacbba/pillow-12.1.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:652a2c9ccfb556235b2b501a3a7cf3742148cd22e04b5625c5fe057ea3e3191f", size = 6232137, upload-time = "2026-02-11T04:22:11.434Z" }, + { url = "https://files.pythonhosted.org/packages/70/f1/f14d5b8eeb4b2cd62b9f9f847eb6605f103df89ef619ac68f92f748614ea/pillow-12.1.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d6e4571eedf43af33d0fc233a382a76e849badbccdf1ac438841308652a08e1f", size = 8042721, upload-time = "2026-02-11T04:22:13.321Z" }, + { url = "https://files.pythonhosted.org/packages/5a/d6/17824509146e4babbdabf04d8171491fa9d776f7061ff6e727522df9bd03/pillow-12.1.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b574c51cf7d5d62e9be37ba446224b59a2da26dc4c1bb2ecbe936a4fb1a7cb7f", size = 6347798, upload-time = "2026-02-11T04:22:15.449Z" }, + { url = "https://files.pythonhosted.org/packages/d1/ee/c85a38a9ab92037a75615aba572c85ea51e605265036e00c5b67dfafbfe2/pillow-12.1.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a37691702ed687799de29a518d63d4682d9016932db66d4e90c345831b02fb4e", size = 7039315, upload-time = "2026-02-11T04:22:17.24Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f3/bc8ccc6e08a148290d7523bde4d9a0d6c981db34631390dc6e6ec34cacf6/pillow-12.1.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f95c00d5d6700b2b890479664a06e754974848afaae5e21beb4d83c106923fd0", size = 6462360, upload-time = "2026-02-11T04:22:19.111Z" }, + { url = "https://files.pythonhosted.org/packages/f6/ab/69a42656adb1d0665ab051eec58a41f169ad295cf81ad45406963105408f/pillow-12.1.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:559b38da23606e68681337ad74622c4dbba02254fc9cb4488a305dd5975c7eeb", size = 7165438, upload-time = "2026-02-11T04:22:21.041Z" }, + { url = "https://files.pythonhosted.org/packages/02/46/81f7aa8941873f0f01d4b55cc543b0a3d03ec2ee30d617a0448bf6bd6dec/pillow-12.1.1-cp314-cp314-win32.whl", hash = "sha256:03edcc34d688572014ff223c125a3f77fb08091e4607e7745002fc214070b35f", size = 6431503, upload-time = "2026-02-11T04:22:22.833Z" }, + { url = "https://files.pythonhosted.org/packages/40/72/4c245f7d1044b67affc7f134a09ea619d4895333d35322b775b928180044/pillow-12.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:50480dcd74fa63b8e78235957d302d98d98d82ccbfac4c7e12108ba9ecbdba15", size = 7176748, upload-time = "2026-02-11T04:22:24.64Z" }, + { url = "https://files.pythonhosted.org/packages/e4/ad/8a87bdbe038c5c698736e3348af5c2194ffb872ea52f11894c95f9305435/pillow-12.1.1-cp314-cp314-win_arm64.whl", hash = "sha256:5cb1785d97b0c3d1d1a16bc1d710c4a0049daefc4935f3a8f31f827f4d3d2e7f", size = 2544314, upload-time = "2026-02-11T04:22:26.685Z" }, + { url = "https://files.pythonhosted.org/packages/6c/9d/efd18493f9de13b87ede7c47e69184b9e859e4427225ea962e32e56a49bc/pillow-12.1.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1f90cff8aa76835cba5769f0b3121a22bd4eb9e6884cfe338216e557a9a548b8", size = 5268612, upload-time = "2026-02-11T04:22:29.884Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f1/4f42eb2b388eb2ffc660dcb7f7b556c1015c53ebd5f7f754965ef997585b/pillow-12.1.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1f1be78ce9466a7ee64bfda57bdba0f7cc499d9794d518b854816c41bf0aa4e9", size = 4660567, upload-time = "2026-02-11T04:22:31.799Z" }, + { url = "https://files.pythonhosted.org/packages/01/54/df6ef130fa43e4b82e32624a7b821a2be1c5653a5fdad8469687a7db4e00/pillow-12.1.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:42fc1f4677106188ad9a55562bbade416f8b55456f522430fadab3cef7cd4e60", size = 6269951, upload-time = "2026-02-11T04:22:33.921Z" }, + { url = "https://files.pythonhosted.org/packages/a9/48/618752d06cc44bb4aae8ce0cd4e6426871929ed7b46215638088270d9b34/pillow-12.1.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98edb152429ab62a1818039744d8fbb3ccab98a7c29fc3d5fcef158f3f1f68b7", size = 8074769, upload-time = "2026-02-11T04:22:35.877Z" }, + { url = "https://files.pythonhosted.org/packages/c3/bd/f1d71eb39a72fa088d938655afba3e00b38018d052752f435838961127d8/pillow-12.1.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d470ab1178551dd17fdba0fef463359c41aaa613cdcd7ff8373f54be629f9f8f", size = 6381358, upload-time = "2026-02-11T04:22:37.698Z" }, + { url = "https://files.pythonhosted.org/packages/64/ef/c784e20b96674ed36a5af839305f55616f8b4f8aa8eeccf8531a6e312243/pillow-12.1.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6408a7b064595afcab0a49393a413732a35788f2a5092fdc6266952ed67de586", size = 7068558, upload-time = "2026-02-11T04:22:39.597Z" }, + { url = "https://files.pythonhosted.org/packages/73/cb/8059688b74422ae61278202c4e1ad992e8a2e7375227be0a21c6b87ca8d5/pillow-12.1.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5d8c41325b382c07799a3682c1c258469ea2ff97103c53717b7893862d0c98ce", size = 6493028, upload-time = "2026-02-11T04:22:42.73Z" }, + { url = "https://files.pythonhosted.org/packages/c6/da/e3c008ed7d2dd1f905b15949325934510b9d1931e5df999bb15972756818/pillow-12.1.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c7697918b5be27424e9ce568193efd13d925c4481dd364e43f5dff72d33e10f8", size = 7191940, upload-time = "2026-02-11T04:22:44.543Z" }, + { url = "https://files.pythonhosted.org/packages/01/4a/9202e8d11714c1fc5951f2e1ef362f2d7fbc595e1f6717971d5dd750e969/pillow-12.1.1-cp314-cp314t-win32.whl", hash = "sha256:d2912fd8114fc5545aa3a4b5576512f64c55a03f3ebcca4c10194d593d43ea36", size = 6438736, upload-time = "2026-02-11T04:22:46.347Z" }, + { url = "https://files.pythonhosted.org/packages/f3/ca/cbce2327eb9885476b3957b2e82eb12c866a8b16ad77392864ad601022ce/pillow-12.1.1-cp314-cp314t-win_amd64.whl", hash = "sha256:4ceb838d4bd9dab43e06c363cab2eebf63846d6a4aeaea283bbdfd8f1a8ed58b", size = 7182894, upload-time = "2026-02-11T04:22:48.114Z" }, + { url = "https://files.pythonhosted.org/packages/ec/d2/de599c95ba0a973b94410477f8bf0b6f0b5e67360eb89bcb1ad365258beb/pillow-12.1.1-cp314-cp314t-win_arm64.whl", hash = "sha256:7b03048319bfc6170e93bd60728a1af51d3dd7704935feb228c4d4faab35d334", size = 2546446, upload-time = "2026-02-11T04:22:50.342Z" }, + { url = "https://files.pythonhosted.org/packages/56/11/5d43209aa4cb58e0cc80127956ff1796a68b928e6324bbf06ef4db34367b/pillow-12.1.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:600fd103672b925fe62ed08e0d874ea34d692474df6f4bf7ebe148b30f89f39f", size = 5228606, upload-time = "2026-02-11T04:22:52.106Z" }, + { url = "https://files.pythonhosted.org/packages/5f/d5/3b005b4e4fda6698b371fa6c21b097d4707585d7db99e98d9b0b87ac612a/pillow-12.1.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:665e1b916b043cef294bc54d47bf02d87e13f769bc4bc5fa225a24b3a6c5aca9", size = 4622321, upload-time = "2026-02-11T04:22:53.827Z" }, + { url = "https://files.pythonhosted.org/packages/df/36/ed3ea2d594356fd8037e5a01f6156c74bc8d92dbb0fa60746cc96cabb6e8/pillow-12.1.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:495c302af3aad1ca67420ddd5c7bd480c8867ad173528767d906428057a11f0e", size = 5247579, upload-time = "2026-02-11T04:22:56.094Z" }, + { url = "https://files.pythonhosted.org/packages/54/9a/9cc3e029683cf6d20ae5085da0dafc63148e3252c2f13328e553aaa13cfb/pillow-12.1.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8fd420ef0c52c88b5a035a0886f367748c72147b2b8f384c9d12656678dfdfa9", size = 6989094, upload-time = "2026-02-11T04:22:58.288Z" }, + { url = "https://files.pythonhosted.org/packages/00/98/fc53ab36da80b88df0967896b6c4b4cd948a0dc5aa40a754266aa3ae48b3/pillow-12.1.1-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f975aa7ef9684ce7e2c18a3aa8f8e2106ce1e46b94ab713d156b2898811651d3", size = 5313850, upload-time = "2026-02-11T04:23:00.554Z" }, + { url = "https://files.pythonhosted.org/packages/30/02/00fa585abfd9fe9d73e5f6e554dc36cc2b842898cbfc46d70353dae227f8/pillow-12.1.1-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8089c852a56c2966cf18835db62d9b34fef7ba74c726ad943928d494fa7f4735", size = 5963343, upload-time = "2026-02-11T04:23:02.934Z" }, + { url = "https://files.pythonhosted.org/packages/f2/26/c56ce33ca856e358d27fda9676c055395abddb82c35ac0f593877ed4562e/pillow-12.1.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:cb9bb857b2d057c6dfc72ac5f3b44836924ba15721882ef103cecb40d002d80e", size = 7029880, upload-time = "2026-02-11T04:23:04.783Z" }, ] [[package]] name = "platformdirs" -version = "4.3.6" +version = "4.9.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302, upload-time = "2024-09-17T19:06:50.688Z" } +sdist = { url = "https://files.pythonhosted.org/packages/19/56/8d4c30c8a1d07013911a8fdbd8f89440ef9f08d07a1b50ab8ca8be5a20f9/platformdirs-4.9.4.tar.gz", hash = "sha256:1ec356301b7dc906d83f371c8f487070e99d3ccf9e501686456394622a01a934", size = 28737, upload-time = "2026-03-05T18:34:13.271Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439, upload-time = "2024-09-17T19:06:49.212Z" }, + { url = "https://files.pythonhosted.org/packages/63/d7/97f7e3a6abb67d8080dd406fd4df842c2be0efaf712d1c899c32a075027c/platformdirs-4.9.4-py3-none-any.whl", hash = "sha256:68a9a4619a666ea6439f2ff250c12a853cd1cbd5158d258bd824a7df6be2f868", size = 21216, upload-time = "2026-03-05T18:34:12.172Z" }, ] [[package]] name = "pluggy" -version = "1.5.0" +version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955, upload-time = "2024-04-20T21:34:42.531Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556, upload-time = "2024-04-20T21:34:40.434Z" }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] [[package]] name = "prompt-toolkit" -version = "3.0.48" +version = "3.0.52" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wcwidth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2d/4f/feb5e137aff82f7c7f3248267b97451da3644f6cdc218edfe549fb354127/prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90", size = 424684, upload-time = "2024-09-25T10:20:57.609Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload-time = "2025-08-27T15:24:02.057Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/6a/fd08d94654f7e67c52ca30523a178b3f8ccc4237fce4be90d39c938a831a/prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e", size = 386595, upload-time = "2024-09-25T10:20:53.932Z" }, + { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, ] [[package]] name = "protobuf" -version = "5.29.6" +version = "7.34.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7e/57/394a763c103e0edf87f0938dafcd918d53b4c011dfc5c8ae80f3b0452dbb/protobuf-5.29.6.tar.gz", hash = "sha256:da9ee6a5424b6b30fd5e45c5ea663aef540ca95f9ad99d1e887e819cdf9b8723", size = 425623, upload-time = "2026-02-04T22:54:40.584Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/00/04a2ab36b70a52d0356852979e08b44edde0435f2115dc66e25f2100f3ab/protobuf-7.34.0.tar.gz", hash = "sha256:3871a3df67c710aaf7bb8d214cc997342e63ceebd940c8c7fc65c9b3d697591a", size = 454726, upload-time = "2026-02-27T00:30:25.421Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/88/9ee58ff7863c479d6f8346686d4636dd4c415b0cbeed7a6a7d0617639c2a/protobuf-5.29.6-cp310-abi3-win32.whl", hash = "sha256:62e8a3114992c7c647bce37dcc93647575fc52d50e48de30c6fcb28a6a291eb1", size = 423357, upload-time = "2026-02-04T22:54:25.805Z" }, - { url = "https://files.pythonhosted.org/packages/1c/66/2dc736a4d576847134fb6d80bd995c569b13cdc7b815d669050bf0ce2d2c/protobuf-5.29.6-cp310-abi3-win_amd64.whl", hash = "sha256:7e6ad413275be172f67fdee0f43484b6de5a904cc1c3ea9804cb6fe2ff366eda", size = 435175, upload-time = "2026-02-04T22:54:28.592Z" }, - { url = "https://files.pythonhosted.org/packages/06/db/49b05966fd208ae3f44dcd33837b6243b4915c57561d730a43f881f24dea/protobuf-5.29.6-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:b5a169e664b4057183a34bdc424540e86eea47560f3c123a0d64de4e137f9269", size = 418619, upload-time = "2026-02-04T22:54:30.266Z" }, - { url = "https://files.pythonhosted.org/packages/b7/d7/48cbf6b0c3c39761e47a99cb483405f0fde2be22cf00d71ef316ce52b458/protobuf-5.29.6-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:a8866b2cff111f0f863c1b3b9e7572dc7eaea23a7fae27f6fc613304046483e6", size = 320284, upload-time = "2026-02-04T22:54:31.782Z" }, - { url = "https://files.pythonhosted.org/packages/e3/dd/cadd6ec43069247d91f6345fa7a0d2858bef6af366dbd7ba8f05d2c77d3b/protobuf-5.29.6-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:e3387f44798ac1106af0233c04fb8abf543772ff241169946f698b3a9a3d3ab9", size = 320478, upload-time = "2026-02-04T22:54:32.909Z" }, - { url = "https://files.pythonhosted.org/packages/59/10/45084b81d758f6290579390cbbfdd42610bae27f2facfb3a357aea5e3fc5/protobuf-5.29.6-cp38-cp38-win32.whl", hash = "sha256:36ade6ff88212e91aef4e687a971a11d7d24d6948a66751abc1b3238648f5d05", size = 423297, upload-time = "2026-02-04T22:54:35.053Z" }, - { url = "https://files.pythonhosted.org/packages/7a/fb/8c51a0d8ce92d8bfb6eb05278b806a5fbf574ffd62e68046dc49f3166a20/protobuf-5.29.6-cp38-cp38-win_amd64.whl", hash = "sha256:831e2da16b6cc9d8f1654c041dd594eda43391affd3c03a91bea7f7f6da106d6", size = 435285, upload-time = "2026-02-04T22:54:36.1Z" }, - { url = "https://files.pythonhosted.org/packages/30/a4/ff263f5687815e1a10a9243a3a6463af42ca251224bf4b8fc4c93b9f5b80/protobuf-5.29.6-cp39-cp39-win32.whl", hash = "sha256:cb4c86de9cd8a7f3a256b9744220d87b847371c6b2f10bde87768918ef33ba49", size = 423352, upload-time = "2026-02-04T22:54:37.375Z" }, - { url = "https://files.pythonhosted.org/packages/5c/64/e943206d3b5069050d570a2c53a90631240d99adcc9a91c6ff7b41876f4d/protobuf-5.29.6-cp39-cp39-win_amd64.whl", hash = "sha256:76e07e6567f8baf827137e8d5b8204b6c7b6488bbbff1bf0a72b383f77999c18", size = 435222, upload-time = "2026-02-04T22:54:38.418Z" }, - { url = "https://files.pythonhosted.org/packages/5a/cb/e3065b447186cb70aa65acc70c86baf482d82bf75625bf5a2c4f6919c6a3/protobuf-5.29.6-py3-none-any.whl", hash = "sha256:6b9edb641441b2da9fa8f428760fc136a49cf97a52076010cf22a2ff73438a86", size = 173126, upload-time = "2026-02-04T22:54:39.462Z" }, + { url = "https://files.pythonhosted.org/packages/13/c4/6322ab5c8f279c4c358bc14eb8aefc0550b97222a39f04eb3c1af7a830fa/protobuf-7.34.0-cp310-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e329966799f2c271d5e05e236459fe1cbfdb8755aaa3b0914fa60947ddea408", size = 429248, upload-time = "2026-02-27T00:30:14.924Z" }, + { url = "https://files.pythonhosted.org/packages/45/99/b029bbbc61e8937545da5b79aa405ab2d9cf307a728f8c9459ad60d7a481/protobuf-7.34.0-cp310-abi3-manylinux2014_aarch64.whl", hash = "sha256:9d7a5005fb96f3c1e64f397f91500b0eb371b28da81296ae73a6b08a5b76cdd6", size = 325753, upload-time = "2026-02-27T00:30:17.247Z" }, + { url = "https://files.pythonhosted.org/packages/cc/79/09f02671eb75b251c5550a1c48e7b3d4b0623efd7c95a15a50f6f9fc1e2e/protobuf-7.34.0-cp310-abi3-manylinux2014_s390x.whl", hash = "sha256:4a72a8ec94e7a9f7ef7fe818ed26d073305f347f8b3b5ba31e22f81fd85fca02", size = 340200, upload-time = "2026-02-27T00:30:18.672Z" }, + { url = "https://files.pythonhosted.org/packages/b5/57/89727baef7578897af5ed166735ceb315819f1c184da8c3441271dbcfde7/protobuf-7.34.0-cp310-abi3-manylinux2014_x86_64.whl", hash = "sha256:964cf977e07f479c0697964e83deda72bcbc75c3badab506fb061b352d991b01", size = 324268, upload-time = "2026-02-27T00:30:20.088Z" }, + { url = "https://files.pythonhosted.org/packages/1f/3e/38ff2ddee5cc946f575c9d8cc822e34bde205cf61acf8099ad88ef19d7d2/protobuf-7.34.0-cp310-abi3-win32.whl", hash = "sha256:f791ec509707a1d91bd02e07df157e75e4fb9fbdad12a81b7396201ec244e2e3", size = 426628, upload-time = "2026-02-27T00:30:21.555Z" }, + { url = "https://files.pythonhosted.org/packages/cb/71/7c32eaf34a61a1bae1b62a2ac4ffe09b8d1bb0cf93ad505f42040023db89/protobuf-7.34.0-cp310-abi3-win_amd64.whl", hash = "sha256:9f9079f1dde4e32342ecbd1c118d76367090d4aaa19da78230c38101c5b3dd40", size = 437901, upload-time = "2026-02-27T00:30:22.836Z" }, + { url = "https://files.pythonhosted.org/packages/a4/e7/14dc9366696dcb53a413449881743426ed289d687bcf3d5aee4726c32ebb/protobuf-7.34.0-py3-none-any.whl", hash = "sha256:e3b914dd77fa33fa06ab2baa97937746ab25695f389869afdf03e81f34e45dc7", size = 170716, upload-time = "2026-02-27T00:30:23.994Z" }, ] [[package]] name = "psutil" -version = "6.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/c7/8c6872f7372eb6a6b2e4708b88419fb46b857f7a2e1892966b851cc79fc9/psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2", size = 508067, upload-time = "2024-06-18T21:40:10.559Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/37/f8da2fbd29690b3557cca414c1949f92162981920699cd62095a984983bf/psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0", size = 250961, upload-time = "2024-06-18T21:41:11.662Z" }, - { url = "https://files.pythonhosted.org/packages/35/56/72f86175e81c656a01c4401cd3b1c923f891b31fbcebe98985894176d7c9/psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0", size = 287478, upload-time = "2024-06-18T21:41:16.18Z" }, - { url = "https://files.pythonhosted.org/packages/19/74/f59e7e0d392bc1070e9a70e2f9190d652487ac115bb16e2eff6b22ad1d24/psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd", size = 290455, upload-time = "2024-06-18T21:41:29.048Z" }, - { url = "https://files.pythonhosted.org/packages/cd/5f/60038e277ff0a9cc8f0c9ea3d0c5eb6ee1d2470ea3f9389d776432888e47/psutil-6.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e8d0054fc88153ca0544f5c4d554d42e33df2e009c4ff42284ac9ebdef4132", size = 292046, upload-time = "2024-06-18T21:41:33.53Z" }, - { url = "https://files.pythonhosted.org/packages/8b/20/2ff69ad9c35c3df1858ac4e094f20bd2374d33c8643cf41da8fd7cdcb78b/psutil-6.0.0-cp37-abi3-win32.whl", hash = "sha256:a495580d6bae27291324fe60cea0b5a7c23fa36a7cd35035a16d93bdcf076b9d", size = 253560, upload-time = "2024-06-18T21:41:46.067Z" }, - { url = "https://files.pythonhosted.org/packages/73/44/561092313ae925f3acfaace6f9ddc4f6a9c748704317bad9c8c8f8a36a79/psutil-6.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:33ea5e1c975250a720b3a6609c490db40dae5d83a4eb315170c4fe0d8b1f34b3", size = 257399, upload-time = "2024-06-18T21:41:52.1Z" }, - { url = "https://files.pythonhosted.org/packages/7c/06/63872a64c312a24fb9b4af123ee7007a306617da63ff13bcc1432386ead7/psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:ffe7fc9b6b36beadc8c322f84e1caff51e8703b88eee1da46d1e3a6ae11b4fd0", size = 251988, upload-time = "2024-06-18T21:41:57.337Z" }, +version = "7.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/08/510cbdb69c25a96f4ae523f733cdc963ae654904e8db864c07585ef99875/psutil-7.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b", size = 130595, upload-time = "2026-01-28T18:14:57.293Z" }, + { url = "https://files.pythonhosted.org/packages/d6/f5/97baea3fe7a5a9af7436301f85490905379b1c6f2dd51fe3ecf24b4c5fbf/psutil-7.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea", size = 131082, upload-time = "2026-01-28T18:14:59.732Z" }, + { url = "https://files.pythonhosted.org/packages/37/d6/246513fbf9fa174af531f28412297dd05241d97a75911ac8febefa1a53c6/psutil-7.2.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63", size = 181476, upload-time = "2026-01-28T18:15:01.884Z" }, + { url = "https://files.pythonhosted.org/packages/b8/b5/9182c9af3836cca61696dabe4fd1304e17bc56cb62f17439e1154f225dd3/psutil-7.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312", size = 184062, upload-time = "2026-01-28T18:15:04.436Z" }, + { url = "https://files.pythonhosted.org/packages/16/ba/0756dca669f5a9300d0cbcbfae9a4c30e446dfc7440ffe43ded5724bfd93/psutil-7.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b", size = 139893, upload-time = "2026-01-28T18:15:06.378Z" }, + { url = "https://files.pythonhosted.org/packages/1c/61/8fa0e26f33623b49949346de05ec1ddaad02ed8ba64af45f40a147dbfa97/psutil-7.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9", size = 135589, upload-time = "2026-01-28T18:15:08.03Z" }, + { url = "https://files.pythonhosted.org/packages/81/69/ef179ab5ca24f32acc1dac0c247fd6a13b501fd5534dbae0e05a1c48b66d/psutil-7.2.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00", size = 130664, upload-time = "2026-01-28T18:15:09.469Z" }, + { url = "https://files.pythonhosted.org/packages/7b/64/665248b557a236d3fa9efc378d60d95ef56dd0a490c2cd37dafc7660d4a9/psutil-7.2.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7b6d09433a10592ce39b13d7be5a54fbac1d1228ed29abc880fb23df7cb694c9", size = 131087, upload-time = "2026-01-28T18:15:11.724Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2e/e6782744700d6759ebce3043dcfa661fb61e2fb752b91cdeae9af12c2178/psutil-7.2.2-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fa4ecf83bcdf6e6c8f4449aff98eefb5d0604bf88cb883d7da3d8d2d909546a", size = 182383, upload-time = "2026-01-28T18:15:13.445Z" }, + { url = "https://files.pythonhosted.org/packages/57/49/0a41cefd10cb7505cdc04dab3eacf24c0c2cb158a998b8c7b1d27ee2c1f5/psutil-7.2.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e452c464a02e7dc7822a05d25db4cde564444a67e58539a00f929c51eddda0cf", size = 185210, upload-time = "2026-01-28T18:15:16.002Z" }, + { url = "https://files.pythonhosted.org/packages/dd/2c/ff9bfb544f283ba5f83ba725a3c5fec6d6b10b8f27ac1dc641c473dc390d/psutil-7.2.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c7663d4e37f13e884d13994247449e9f8f574bc4655d509c3b95e9ec9e2b9dc1", size = 141228, upload-time = "2026-01-28T18:15:18.385Z" }, + { url = "https://files.pythonhosted.org/packages/f2/fc/f8d9c31db14fcec13748d373e668bc3bed94d9077dbc17fb0eebc073233c/psutil-7.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:11fe5a4f613759764e79c65cf11ebdf26e33d6dd34336f8a337aa2996d71c841", size = 136284, upload-time = "2026-01-28T18:15:19.912Z" }, + { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" }, + { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload-time = "2026-01-28T18:15:25.976Z" }, + { url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload-time = "2026-01-28T18:15:27.794Z" }, + { url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload-time = "2026-01-28T18:15:29.342Z" }, + { url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload-time = "2026-01-28T18:15:31.597Z" }, + { url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload-time = "2026-01-28T18:15:33.849Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" }, ] [[package]] @@ -1557,107 +1648,109 @@ wheels = [ [[package]] name = "pycparser" -version = "2.22" +version = "3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, ] [[package]] name = "pygments" -version = "2.18.0" +version = "2.19.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", size = 4891905, upload-time = "2024-05-04T13:42:02.013Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513, upload-time = "2024-05-04T13:41:57.345Z" }, + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, ] [[package]] name = "pymongo" -version = "4.10.1" +version = "4.16.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "dnspython" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1a/35/b62a3139f908c68b69aac6a6a3f8cc146869de0a7929b994600e2c587c77/pymongo-4.10.1.tar.gz", hash = "sha256:a9de02be53b6bb98efe0b9eda84ffa1ec027fcb23a2de62c4f941d9a2f2f3330", size = 1903902, upload-time = "2024-10-01T23:07:58.525Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/ca/f56b1dd84541de658d246f86828be27e32285f2151fab97efbce1db3ed57/pymongo-4.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e699aa68c4a7dea2ab5a27067f7d3e08555f8d2c0dc6a0c8c60cfd9ff2e6a4b1", size = 835459, upload-time = "2024-10-01T23:06:19.654Z" }, - { url = "https://files.pythonhosted.org/packages/97/01/fe4ee34b33c6863be6a09d1e805ceb1122d9cd5d4a5d1664e360b91adf7e/pymongo-4.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:70645abc714f06b4ad6b72d5bf73792eaad14e3a2cfe29c62a9c81ada69d9e4b", size = 835716, upload-time = "2024-10-01T23:06:22.252Z" }, - { url = "https://files.pythonhosted.org/packages/46/ff/9eb21c1d5861729ae1c91669b02f5bfbd23221ba9809fb97fade761f3f3b/pymongo-4.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae2fd94c9fe048c94838badcc6e992d033cb9473eb31e5710b3707cba5e8aee2", size = 1407173, upload-time = "2024-10-01T23:06:24.204Z" }, - { url = "https://files.pythonhosted.org/packages/e5/d9/8cf042449d6804e00e38d3bb138b0e9acb8a8e0c9dd9dd989ffffd481c3b/pymongo-4.10.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ded27a4a5374dae03a92e084a60cdbcecd595306555bda553b833baf3fc4868", size = 1456455, upload-time = "2024-10-01T23:06:26.125Z" }, - { url = "https://files.pythonhosted.org/packages/37/9a/da0d121f98c1413853e1172e2095fe77c1629c83a1db107d45a37ca935c2/pymongo-4.10.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ecc2455e3974a6c429687b395a0bc59636f2d6aedf5785098cf4e1f180f1c71", size = 1433360, upload-time = "2024-10-01T23:06:27.898Z" }, - { url = "https://files.pythonhosted.org/packages/7d/6d/50480f0452e2fb59256d9d641d192366c0079920c36851b818ebeff0cec9/pymongo-4.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920fee41f7d0259f5f72c1f1eb331bc26ffbdc952846f9bd8c3b119013bb52c", size = 1410758, upload-time = "2024-10-01T23:06:29.546Z" }, - { url = "https://files.pythonhosted.org/packages/cd/8f/b83b9910c54f63bfff34305074e79cd08cf5e12dda22d1a2b4ad009b32b3/pymongo-4.10.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0a15665b2d6cf364f4cd114d62452ce01d71abfbd9c564ba8c74dcd7bbd6822", size = 1380257, upload-time = "2024-10-01T23:06:30.895Z" }, - { url = "https://files.pythonhosted.org/packages/ed/e3/8f381b576e5f912cf0fe34218c6b0ef23d7afdef13fed592900fb52f0ed4/pymongo-4.10.1-cp310-cp310-win32.whl", hash = "sha256:29e1c323c28a4584b7095378ff046815e39ff82cdb8dc4cc6dfe3acf6f9ad1f8", size = 812324, upload-time = "2024-10-01T23:06:32.717Z" }, - { url = "https://files.pythonhosted.org/packages/ab/14/1cae5359e2c4677856527a2965c999c23f596cced4b7828d880cb8fc0f54/pymongo-4.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:88dc4aa45f8744ccfb45164aedb9a4179c93567bbd98a33109d7dc400b00eb08", size = 826774, upload-time = "2024-10-01T23:06:34.386Z" }, - { url = "https://files.pythonhosted.org/packages/e4/a3/d6403ec53fa2fe922b4a5c86388ea5fada01dd51d803e17bb2a7c9cda839/pymongo-4.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:57ee6becae534e6d47848c97f6a6dff69e3cce7c70648d6049bd586764febe59", size = 889238, upload-time = "2024-10-01T23:06:36.03Z" }, - { url = "https://files.pythonhosted.org/packages/29/a2/9643450424bcf241e80bb713497ec2e3273c183d548b4eca357f75d71885/pymongo-4.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6f437a612f4d4f7aca1812311b1e84477145e950fdafe3285b687ab8c52541f3", size = 889504, upload-time = "2024-10-01T23:06:37.328Z" }, - { url = "https://files.pythonhosted.org/packages/ec/40/4759984f34415509e9111be8ee863034611affdc1e0b41016c9d53b2f1b3/pymongo-4.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a970fd3117ab40a4001c3dad333bbf3c43687d90f35287a6237149b5ccae61d", size = 1649069, upload-time = "2024-10-01T23:06:38.553Z" }, - { url = "https://files.pythonhosted.org/packages/56/0f/b6e917478a3ada81e768475516cd544982cc42cbb7d3be325182768139e1/pymongo-4.10.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7c4d0e7cd08ef9f8fbf2d15ba281ed55604368a32752e476250724c3ce36c72e", size = 1714927, upload-time = "2024-10-01T23:06:40.292Z" }, - { url = "https://files.pythonhosted.org/packages/56/c5/4237d94dfa19ebdf9a92b1071e2139c91f48908c5782e592c571c33b67ab/pymongo-4.10.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca6f700cff6833de4872a4e738f43123db34400173558b558ae079b5535857a4", size = 1683454, upload-time = "2024-10-01T23:06:42.257Z" }, - { url = "https://files.pythonhosted.org/packages/9a/16/dbffca9d4ad66f2a325c280f1177912fa23235987f7b9033e283da889b7a/pymongo-4.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cec237c305fcbeef75c0bcbe9d223d1e22a6e3ba1b53b2f0b79d3d29c742b45b", size = 1653840, upload-time = "2024-10-01T23:06:43.991Z" }, - { url = "https://files.pythonhosted.org/packages/2b/4d/21df934ef5cf8f0e587bac922a129e13d4c0346c54e9bf2371b90dd31112/pymongo-4.10.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3337804ea0394a06e916add4e5fac1c89902f1b6f33936074a12505cab4ff05", size = 1613233, upload-time = "2024-10-01T23:06:46.113Z" }, - { url = "https://files.pythonhosted.org/packages/24/07/dd9c3db30e754680606295d5574521956898005db0629411a89163cc6eee/pymongo-4.10.1-cp311-cp311-win32.whl", hash = "sha256:778ac646ce6ac1e469664062dfe9ae1f5c9961f7790682809f5ec3b8fda29d65", size = 857331, upload-time = "2024-10-01T23:06:47.812Z" }, - { url = "https://files.pythonhosted.org/packages/02/68/b71c4106d03eef2482eade440c6f5737c2a4a42f6155726009f80ea38d06/pymongo-4.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:9df4ab5594fdd208dcba81be815fa8a8a5d8dedaf3b346cbf8b61c7296246a7a", size = 876473, upload-time = "2024-10-01T23:06:49.201Z" }, - { url = "https://files.pythonhosted.org/packages/10/d1/60ad99fe3f64d45e6c71ac0e3078e88d9b64112b1bae571fc3707344d6d1/pymongo-4.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fbedc4617faa0edf423621bb0b3b8707836687161210d470e69a4184be9ca011", size = 943356, upload-time = "2024-10-01T23:06:50.9Z" }, - { url = "https://files.pythonhosted.org/packages/ca/9b/21d4c6b4ee9c1fa9691c68dc2a52565e0acb644b9e95148569b4736a4ebd/pymongo-4.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7bd26b2aec8ceeb95a5d948d5cc0f62b0eb6d66f3f4230705c1e3d3d2c04ec76", size = 943142, upload-time = "2024-10-01T23:06:52.146Z" }, - { url = "https://files.pythonhosted.org/packages/07/af/691b7454e219a8eb2d1641aecedd607e3a94b93650c2011ad8a8fd74ef9f/pymongo-4.10.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb104c3c2a78d9d85571c8ac90ec4f95bca9b297c6eee5ada71fabf1129e1674", size = 1909129, upload-time = "2024-10-01T23:06:53.551Z" }, - { url = "https://files.pythonhosted.org/packages/0c/74/fd75d5ad4181d6e71ce0fca32404fb71b5046ac84d9a1a2f0862262dd032/pymongo-4.10.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4924355245a9c79f77b5cda2db36e0f75ece5faf9f84d16014c0a297f6d66786", size = 1987763, upload-time = "2024-10-01T23:06:55.304Z" }, - { url = "https://files.pythonhosted.org/packages/8a/56/6d3d0ef63c6d8cb98c7c653a3a2e617675f77a95f3853851d17a7664876a/pymongo-4.10.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:11280809e5dacaef4971113f0b4ff4696ee94cfdb720019ff4fa4f9635138252", size = 1950821, upload-time = "2024-10-01T23:06:57.541Z" }, - { url = "https://files.pythonhosted.org/packages/70/ed/1603fa0c0e51444752c3fa91f16c3a97e6d92eb9fe5e553dae4f18df16f6/pymongo-4.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5d55f2a82e5eb23795f724991cac2bffbb1c0f219c0ba3bf73a835f97f1bb2e", size = 1912247, upload-time = "2024-10-01T23:06:59.023Z" }, - { url = "https://files.pythonhosted.org/packages/c1/66/e98b2308971d45667cb8179d4d66deca47336c90663a7e0527589f1038b7/pymongo-4.10.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e974ab16a60be71a8dfad4e5afccf8dd05d41c758060f5d5bda9a758605d9a5d", size = 1862230, upload-time = "2024-10-01T23:07:01.407Z" }, - { url = "https://files.pythonhosted.org/packages/6c/80/ba9b7ed212a5f8cf8ad7037ed5bbebc1c587fc09242108f153776e4a338b/pymongo-4.10.1-cp312-cp312-win32.whl", hash = "sha256:544890085d9641f271d4f7a47684450ed4a7344d6b72d5968bfae32203b1bb7c", size = 903045, upload-time = "2024-10-01T23:07:02.973Z" }, - { url = "https://files.pythonhosted.org/packages/76/8b/5afce891d78159912c43726fab32641e3f9718f14be40f978c148ea8db48/pymongo-4.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:dcc07b1277e8b4bf4d7382ca133850e323b7ab048b8353af496d050671c7ac52", size = 926686, upload-time = "2024-10-01T23:07:04.403Z" }, - { url = "https://files.pythonhosted.org/packages/83/76/df0fd0622a85b652ad0f91ec8a0ebfd0cb86af6caec8999a22a1f7481203/pymongo-4.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:90bc6912948dfc8c363f4ead54d54a02a15a7fee6cfafb36dc450fc8962d2cb7", size = 996981, upload-time = "2024-10-01T23:07:06.001Z" }, - { url = "https://files.pythonhosted.org/packages/4c/39/fa50531de8d1d8af8c253caeed20c18ccbf1de5d970119c4a42c89f2bd09/pymongo-4.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:594dd721b81f301f33e843453638e02d92f63c198358e5a0fa8b8d0b1218dabc", size = 996769, upload-time = "2024-10-01T23:07:07.855Z" }, - { url = "https://files.pythonhosted.org/packages/bf/50/6936612c1b2e32d95c30e860552d3bc9e55cfa79a4f73b73225fa05a028c/pymongo-4.10.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0783e0c8e95397c84e9cf8ab092ab1e5dd7c769aec0ef3a5838ae7173b98dea0", size = 2169159, upload-time = "2024-10-01T23:07:09.963Z" }, - { url = "https://files.pythonhosted.org/packages/78/8c/45cb23096e66c7b1da62bb8d9c7ac2280e7c1071e13841e7fb71bd44fd9f/pymongo-4.10.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6fb6a72e88df46d1c1040fd32cd2d2c5e58722e5d3e31060a0393f04ad3283de", size = 2260569, upload-time = "2024-10-01T23:07:11.856Z" }, - { url = "https://files.pythonhosted.org/packages/29/b6/e5ec697087e527a6a15c5f8daa5bcbd641edb8813487345aaf963d3537dc/pymongo-4.10.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e3a593333e20c87415420a4fb76c00b7aae49b6361d2e2205b6fece0563bf40", size = 2218142, upload-time = "2024-10-01T23:07:13.61Z" }, - { url = "https://files.pythonhosted.org/packages/ad/8a/c0b45bee0f0c57732c5c36da5122c1796efd5a62d585fbc504e2f1401244/pymongo-4.10.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72e2ace7456167c71cfeca7dcb47bd5dceda7db2231265b80fc625c5e8073186", size = 2170623, upload-time = "2024-10-01T23:07:15.319Z" }, - { url = "https://files.pythonhosted.org/packages/3b/26/6c0a5360a571df24c9bfbd51b1dae279f4f0c511bdbc0906f6df6d1543fa/pymongo-4.10.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ad05eb9c97e4f589ed9e74a00fcaac0d443ccd14f38d1258eb4c39a35dd722b", size = 2111112, upload-time = "2024-10-01T23:07:16.859Z" }, - { url = "https://files.pythonhosted.org/packages/38/bc/5b91b728e1cf505d931f04e24cbac71ae519523785570ed046cdc31e6efc/pymongo-4.10.1-cp313-cp313-win32.whl", hash = "sha256:ee4c86d8e6872a61f7888fc96577b0ea165eb3bdb0d841962b444fa36001e2bb", size = 948727, upload-time = "2024-10-01T23:07:18.275Z" }, - { url = "https://files.pythonhosted.org/packages/0d/2a/7c24a6144eaa06d18ed52822ea2b0f119fd9267cd1abbb75dae4d89a3803/pymongo-4.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:45ee87a4e12337353242bc758accc7fb47a2f2d9ecc0382a61e64c8f01e86708", size = 976873, upload-time = "2024-10-01T23:07:19.721Z" }, - { url = "https://files.pythonhosted.org/packages/31/22/0580e055aa609ae61c5c054afc746968be771d75d42b6a43f3979fa1c20e/pymongo-4.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:442ca247f53ad24870a01e80a71cd81b3f2318655fd9d66748ee2bd1b1569d9e", size = 727824, upload-time = "2024-10-01T23:07:21.15Z" }, - { url = "https://files.pythonhosted.org/packages/82/9f/62599a11b2371ea176ddc4444fe9cef7bb1b8d8c2ba3ec2fce03a63f6b37/pymongo-4.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:23e1d62df5592518204943b507be7b457fb8a4ad95a349440406fd42db5d0923", size = 728136, upload-time = "2024-10-01T23:07:22.995Z" }, - { url = "https://files.pythonhosted.org/packages/7f/87/ea553a6b3e2607d409ffcb8958153e84370f1cd54e1f2191b16dcc28b408/pymongo-4.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6131bc6568b26e7495a9f3ef2b1700566b76bbecd919f4472bfe90038a61f425", size = 928973, upload-time = "2024-10-01T23:07:24.577Z" }, - { url = "https://files.pythonhosted.org/packages/6e/be/f7d3df1415af12200b63b3cfebd2d156ea3215f3ce054bf3f73d81e0be73/pymongo-4.10.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fdeba88c540c9ed0338c0b2062d9f81af42b18d6646b3e6dda05cf6edd46ada9", size = 945186, upload-time = "2024-10-01T23:07:26.005Z" }, - { url = "https://files.pythonhosted.org/packages/f6/0c/8b3981432b8d635763aef504475c1f1ec51447889fd13ac30676cecf1229/pymongo-4.10.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15a624d752dd3c89d10deb0ef6431559b6d074703cab90a70bb849ece02adc6b", size = 938573, upload-time = "2024-10-01T23:07:27.486Z" }, - { url = "https://files.pythonhosted.org/packages/5f/54/7da021c70dbac3e993aee5544398f6c1ec58d0aaaf6f91de555e4b6a6e29/pymongo-4.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba164e73fdade9b4614a2497321c5b7512ddf749ed508950bdecc28d8d76a2d9", size = 930164, upload-time = "2024-10-01T23:07:29.073Z" }, - { url = "https://files.pythonhosted.org/packages/bb/f1/848132a5db3f5fba1928018d53d990f4ba81db9126129f2e5a99d9da8d55/pymongo-4.10.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9235fa319993405ae5505bf1333366388add2e06848db7b3deee8f990b69808e", size = 919676, upload-time = "2024-10-01T23:07:30.841Z" }, - { url = "https://files.pythonhosted.org/packages/ad/31/9b5a831f7bd96e932c0b6e234a154896fe0373c19ba32054e959ae258b57/pymongo-4.10.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e4a65567bd17d19f03157c7ec992c6530eafd8191a4e5ede25566792c4fe3fa2", size = 920828, upload-time = "2024-10-01T23:07:32.388Z" }, - { url = "https://files.pythonhosted.org/packages/65/5b/d134139e96fa085ebc7545a7bfb335606e7ee3ae403c170a3fe64ba7b854/pymongo-4.10.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f1945d48fb9b8a87d515da07f37e5b2c35b364a435f534c122e92747881f4a7c", size = 928386, upload-time = "2024-10-01T23:07:33.982Z" }, - { url = "https://files.pythonhosted.org/packages/9e/35/b932c0db60508971701ef42c47ab6db3e60497f0821da4f340ecff9eebf0/pymongo-4.10.1-cp38-cp38-win32.whl", hash = "sha256:345f8d340802ebce509f49d5833cc913da40c82f2e0daf9f60149cacc9ca680f", size = 722400, upload-time = "2024-10-01T23:07:35.537Z" }, - { url = "https://files.pythonhosted.org/packages/38/52/a58196a45232e9046c8b13f4fa3d89cca0e462b5c6d28969759226f781ee/pymongo-4.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:3a70d5efdc0387ac8cd50f9a5f379648ecfc322d14ec9e1ba8ec957e5d08c372", size = 727386, upload-time = "2024-10-01T23:07:37.295Z" }, - { url = "https://files.pythonhosted.org/packages/39/69/a13a61fd9a19e659cb43cb98240a75dab2f8e7b60bee568c309a123f8edc/pymongo-4.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15b1492cc5c7cd260229590be7218261e81684b8da6d6de2660cf743445500ce", size = 781650, upload-time = "2024-10-01T23:07:39.173Z" }, - { url = "https://files.pythonhosted.org/packages/14/13/a5a3da69ee146bac81baacc7b27995849bfbb89eaabfb3d19824c7056fb4/pymongo-4.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:95207503c41b97e7ecc7e596d84a61f441b4935f11aa8332828a754e7ada8c82", size = 781929, upload-time = "2024-10-01T23:07:40.666Z" }, - { url = "https://files.pythonhosted.org/packages/b0/65/118bc20fc66451ae4b8ceafbd9aab1168bb13cf4e5699b81807bb911a443/pymongo-4.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb99f003c720c6d83be02c8f1a7787c22384a8ca9a4181e406174db47a048619", size = 1167200, upload-time = "2024-10-01T23:07:42.37Z" }, - { url = "https://files.pythonhosted.org/packages/d1/4a/19c3d45659835f814efef8b250456923899cc7542c52f8beb1a6a164106f/pymongo-4.10.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f2bc1ee4b1ca2c4e7e6b7a5e892126335ec8d9215bcd3ac2fe075870fefc3358", size = 1200021, upload-time = "2024-10-01T23:07:44.061Z" }, - { url = "https://files.pythonhosted.org/packages/1c/03/69cee6f23463251a8f6de6670fb665e2531cc0df500d61150e57d1aedf70/pymongo-4.10.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:93a0833c10a967effcd823b4e7445ec491f0bf6da5de0ca33629c0528f42b748", size = 1185518, upload-time = "2024-10-01T23:07:45.613Z" }, - { url = "https://files.pythonhosted.org/packages/00/58/01d8b3b374e45931581364752bf7a4693e9c7422704f81e6e91ffa42c38d/pymongo-4.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f56707497323150bd2ed5d63067f4ffce940d0549d4ea2dfae180deec7f9363", size = 1169799, upload-time = "2024-10-01T23:07:47.656Z" }, - { url = "https://files.pythonhosted.org/packages/be/6f/9aa0ba2f4cfa4c30c962bd1f5a38b2eb95b23e3965918d211da82ebaacf6/pymongo-4.10.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:409ab7d6c4223e5c85881697f365239dd3ed1b58f28e4124b846d9d488c86880", size = 1149344, upload-time = "2024-10-01T23:07:49.945Z" }, - { url = "https://files.pythonhosted.org/packages/fc/af/40f0112605f75f5ae5da554b2f779a83c40ecf2298c57e120e6d7bfcff65/pymongo-4.10.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dac78a650dc0637d610905fd06b5fa6419ae9028cf4d04d6a2657bc18a66bbce", size = 1134277, upload-time = "2024-10-01T23:07:51.544Z" }, - { url = "https://files.pythonhosted.org/packages/a1/92/9a4afaf02d4d633c3211b7535e6bfbb2527524ca8ac8039b8d7eb3c765eb/pymongo-4.10.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1ec3fa88b541e0481aff3c35194c9fac96e4d57ec5d1c122376000eb28c01431", size = 1167588, upload-time = "2024-10-01T23:07:53.31Z" }, - { url = "https://files.pythonhosted.org/packages/29/de/3c23e7739b0d0dafa4d802e9773011cf54e305c7cb788a52d50c3ef585d2/pymongo-4.10.1-cp39-cp39-win32.whl", hash = "sha256:e0e961923a7b8a1c801c43552dcb8153e45afa41749d9efbd3a6d33f45489f7a", size = 767325, upload-time = "2024-10-01T23:07:54.92Z" }, - { url = "https://files.pythonhosted.org/packages/36/d4/49198168f296838c49d732743ae073f9ca9e8f65f15f5209637456892968/pymongo-4.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:dabe8bf1ad644e6b93f3acf90ff18536d94538ca4d27e583c6db49889e98e48f", size = 777078, upload-time = "2024-10-01T23:07:56.542Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/65/9c/a4895c4b785fc9865a84a56e14b5bd21ca75aadc3dab79c14187cdca189b/pymongo-4.16.0.tar.gz", hash = "sha256:8ba8405065f6e258a6f872fe62d797a28f383a12178c7153c01ed04e845c600c", size = 2495323, upload-time = "2026-01-07T18:05:48.107Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/93/c36c0998dd91ad8b5031d2e77a903d5cd705b5ba05ca92bcc8731a2c3a8d/pymongo-4.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ed162b2227f98d5b270ecbe1d53be56c8c81db08a1a8f5f02d89c7bb4d19591d", size = 807993, upload-time = "2026-01-07T18:03:40.302Z" }, + { url = "https://files.pythonhosted.org/packages/f3/96/d2117d792fa9fedb2f6ccf0608db31f851e8382706d7c3c88c6ac92cc958/pymongo-4.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4a9390dce61d705a88218f0d7b54d7e1fa1b421da8129fc7c009e029a9a6b81e", size = 808355, upload-time = "2026-01-07T18:03:42.13Z" }, + { url = "https://files.pythonhosted.org/packages/ae/2e/e79b7b86c0dd6323d0985c201583c7921d67b842b502aae3f3327cbe3935/pymongo-4.16.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:92a232af9927710de08a6c16a9710cc1b175fb9179c0d946cd4e213b92b2a69a", size = 1182337, upload-time = "2026-01-07T18:03:44.126Z" }, + { url = "https://files.pythonhosted.org/packages/7b/82/07ec9966381c57d941fddc52637e9c9653e63773be410bd8605f74683084/pymongo-4.16.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4d79aa147ce86aef03079096d83239580006ffb684eead593917186aee407767", size = 1200928, upload-time = "2026-01-07T18:03:45.52Z" }, + { url = "https://files.pythonhosted.org/packages/44/15/9d45e3cc6fa428b0a3600b0c1c86b310f28c91251c41493460695ab40b6b/pymongo-4.16.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:19a1c96e7f39c7a59a9cfd4d17920cf9382f6f684faeff4649bf587dc59f8edc", size = 1239418, upload-time = "2026-01-07T18:03:47.03Z" }, + { url = "https://files.pythonhosted.org/packages/c8/b3/f35ee51e2a3f05f673ad4f5e803ae1284c42f4413e8d121c4958f1af4eb9/pymongo-4.16.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efe020c46ce3c3a89af6baec6569635812129df6fb6cf76d4943af3ba6ee2069", size = 1229045, upload-time = "2026-01-07T18:03:48.377Z" }, + { url = "https://files.pythonhosted.org/packages/18/2d/1688b88d7c0a5c01da8c703dea831419435d9ce67c6ddbb0ac629c9c72d2/pymongo-4.16.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9dc2c00bed568732b89e211b6adca389053d5e6d2d5a8979e80b813c3ec4d1f9", size = 1196517, upload-time = "2026-01-07T18:03:50.205Z" }, + { url = "https://files.pythonhosted.org/packages/e6/c6/e89db0f23bd20757b627a5d8c73a609ffd6741887b9004ab229208a79764/pymongo-4.16.0-cp310-cp310-win32.whl", hash = "sha256:5b9c6d689bbe5beb156374508133218610e14f8c81e35bc17d7a14e30ab593e6", size = 794911, upload-time = "2026-01-07T18:03:52.701Z" }, + { url = "https://files.pythonhosted.org/packages/37/54/e00a5e517153f310a33132375159e42dceb12bee45b51b35aa0df14f1866/pymongo-4.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:2290909275c9b8f637b0a92eb9b89281e18a72922749ebb903403ab6cc7da914", size = 804801, upload-time = "2026-01-07T18:03:57.671Z" }, + { url = "https://files.pythonhosted.org/packages/e5/0a/2572faf89195a944c99c6d756227019c8c5f4b5658ecc261c303645dfe69/pymongo-4.16.0-cp310-cp310-win_arm64.whl", hash = "sha256:6af1aaa26f0835175d2200e62205b78e7ec3ffa430682e322cc91aaa1a0dbf28", size = 797579, upload-time = "2026-01-07T18:03:59.1Z" }, + { url = "https://files.pythonhosted.org/packages/e6/3a/907414a763c4270b581ad6d960d0c6221b74a70eda216a1fdd8fa82ba89f/pymongo-4.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6f2077ec24e2f1248f9cac7b9a2dfb894e50cc7939fcebfb1759f99304caabef", size = 862561, upload-time = "2026-01-07T18:04:00.628Z" }, + { url = "https://files.pythonhosted.org/packages/8c/58/787d8225dd65cb2383c447346ea5e200ecfde89962d531111521e3b53018/pymongo-4.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4d4f7ba040f72a9f43a44059872af5a8c8c660aa5d7f90d5344f2ed1c3c02721", size = 862923, upload-time = "2026-01-07T18:04:02.213Z" }, + { url = "https://files.pythonhosted.org/packages/5d/a7/cc2865aae32bc77ade7b35f957a58df52680d7f8506f93c6edbf458e5738/pymongo-4.16.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8a0f73af1ea56c422b2dcfc0437459148a799ef4231c6aee189d2d4c59d6728f", size = 1426779, upload-time = "2026-01-07T18:04:03.942Z" }, + { url = "https://files.pythonhosted.org/packages/81/25/3e96eb7998eec05382174da2fefc58d28613f46bbdf821045539d0ed60ab/pymongo-4.16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa30cd16ddd2f216d07ba01d9635c873e97ddb041c61cf0847254edc37d1c60e", size = 1454207, upload-time = "2026-01-07T18:04:05.387Z" }, + { url = "https://files.pythonhosted.org/packages/86/7b/8e817a7df8c5d565d39dd4ca417a5e0ef46cc5cc19aea9405f403fec6449/pymongo-4.16.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1d638b0b1b294d95d0fdc73688a3b61e05cc4188872818cd240d51460ccabcb5", size = 1511654, upload-time = "2026-01-07T18:04:08.458Z" }, + { url = "https://files.pythonhosted.org/packages/39/7a/50c4d075ccefcd281cdcfccc5494caa5665b096b85e65a5d6afabb80e09e/pymongo-4.16.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:21d02cc10a158daa20cb040985e280e7e439832fc6b7857bff3d53ef6914ad50", size = 1496794, upload-time = "2026-01-07T18:04:10.355Z" }, + { url = "https://files.pythonhosted.org/packages/0f/cd/ebdc1aaca5deeaf47310c369ef4083e8550e04e7bf7e3752cfb7d95fcdb8/pymongo-4.16.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4fbb8d3552c2ad99d9e236003c0b5f96d5f05e29386ba7abae73949bfebc13dd", size = 1448371, upload-time = "2026-01-07T18:04:11.76Z" }, + { url = "https://files.pythonhosted.org/packages/3d/c9/50fdd78c37f68ea49d590c027c96919fbccfd98f3a4cb39f84f79970bd37/pymongo-4.16.0-cp311-cp311-win32.whl", hash = "sha256:be1099a8295b1a722d03fb7b48be895d30f4301419a583dcf50e9045968a041c", size = 841024, upload-time = "2026-01-07T18:04:13.522Z" }, + { url = "https://files.pythonhosted.org/packages/4a/dd/a3aa1ade0cf9980744db703570afac70a62c85b432c391dea0577f6da7bb/pymongo-4.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:61567f712bda04c7545a037e3284b4367cad8d29b3dec84b4bf3b2147020a75b", size = 855838, upload-time = "2026-01-07T18:04:14.923Z" }, + { url = "https://files.pythonhosted.org/packages/bf/10/9ad82593ccb895e8722e4884bad4c5ce5e8ff6683b740d7823a6c2bcfacf/pymongo-4.16.0-cp311-cp311-win_arm64.whl", hash = "sha256:c53338613043038005bf2e41a2fafa08d29cdbc0ce80891b5366c819456c1ae9", size = 845007, upload-time = "2026-01-07T18:04:17.099Z" }, + { url = "https://files.pythonhosted.org/packages/6a/03/6dd7c53cbde98de469a3e6fb893af896dca644c476beb0f0c6342bcc368b/pymongo-4.16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bd4911c40a43a821dfd93038ac824b756b6e703e26e951718522d29f6eb166a8", size = 917619, upload-time = "2026-01-07T18:04:19.173Z" }, + { url = "https://files.pythonhosted.org/packages/73/e1/328915f2734ea1f355dc9b0e98505ff670f5fab8be5e951d6ed70971c6aa/pymongo-4.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25a6b03a68f9907ea6ec8bc7cf4c58a1b51a18e23394f962a6402f8e46d41211", size = 917364, upload-time = "2026-01-07T18:04:20.861Z" }, + { url = "https://files.pythonhosted.org/packages/41/fe/4769874dd9812a1bc2880a9785e61eba5340da966af888dd430392790ae0/pymongo-4.16.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:91ac0cb0fe2bf17616c2039dac88d7c9a5088f5cb5829b27c9d250e053664d31", size = 1686901, upload-time = "2026-01-07T18:04:22.219Z" }, + { url = "https://files.pythonhosted.org/packages/fa/8d/15707b9669fdc517bbc552ac60da7124dafe7ac1552819b51e97ed4038b4/pymongo-4.16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cf0ec79e8ca7077f455d14d915d629385153b6a11abc0b93283ed73a8013e376", size = 1723034, upload-time = "2026-01-07T18:04:24.055Z" }, + { url = "https://files.pythonhosted.org/packages/5b/af/3d5d16ff11d447d40c1472da1b366a31c7380d7ea2922a449c7f7f495567/pymongo-4.16.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2d0082631a7510318befc2b4fdab140481eb4b9dd62d9245e042157085da2a70", size = 1797161, upload-time = "2026-01-07T18:04:25.964Z" }, + { url = "https://files.pythonhosted.org/packages/fb/04/725ab8664eeec73ec125b5a873448d80f5d8cf2750aaaf804cbc538a50a5/pymongo-4.16.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:85dc2f3444c346ea019a371e321ac868a4fab513b7a55fe368f0cc78de8177cc", size = 1780938, upload-time = "2026-01-07T18:04:28.745Z" }, + { url = "https://files.pythonhosted.org/packages/22/50/dd7e9095e1ca35f93c3c844c92eb6eb0bc491caeb2c9bff3b32fe3c9b18f/pymongo-4.16.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dabbf3c14de75a20cc3c30bf0c6527157224a93dfb605838eabb1a2ee3be008d", size = 1714342, upload-time = "2026-01-07T18:04:30.331Z" }, + { url = "https://files.pythonhosted.org/packages/03/c9/542776987d5c31ae8e93e92680ea2b6e5a2295f398b25756234cabf38a39/pymongo-4.16.0-cp312-cp312-win32.whl", hash = "sha256:60307bb91e0ab44e560fe3a211087748b2b5f3e31f403baf41f5b7b0a70bd104", size = 887868, upload-time = "2026-01-07T18:04:32.124Z" }, + { url = "https://files.pythonhosted.org/packages/2e/d4/b4045a7ccc5680fb496d01edf749c7a9367cc8762fbdf7516cf807ef679b/pymongo-4.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:f513b2c6c0d5c491f478422f6b5b5c27ac1af06a54c93ef8631806f7231bd92e", size = 907554, upload-time = "2026-01-07T18:04:33.685Z" }, + { url = "https://files.pythonhosted.org/packages/60/4c/33f75713d50d5247f2258405142c0318ff32c6f8976171c4fcae87a9dbdf/pymongo-4.16.0-cp312-cp312-win_arm64.whl", hash = "sha256:dfc320f08ea9a7ec5b2403dc4e8150636f0d6150f4b9792faaae539c88e7db3b", size = 892971, upload-time = "2026-01-07T18:04:35.594Z" }, + { url = "https://files.pythonhosted.org/packages/47/84/148d8b5da8260f4679d6665196ae04ab14ffdf06f5fe670b0ab11942951f/pymongo-4.16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d15f060bc6d0964a8bb70aba8f0cb6d11ae99715438f640cff11bbcf172eb0e8", size = 972009, upload-time = "2026-01-07T18:04:38.303Z" }, + { url = "https://files.pythonhosted.org/packages/1e/5e/9f3a8daf583d0adaaa033a3e3e58194d2282737dc164014ff33c7a081103/pymongo-4.16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a19ea46a0fe71248965305a020bc076a163311aefbaa1d83e47d06fa30ac747", size = 971784, upload-time = "2026-01-07T18:04:39.669Z" }, + { url = "https://files.pythonhosted.org/packages/ad/f2/b6c24361fcde24946198573c0176406bfd5f7b8538335f3d939487055322/pymongo-4.16.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:311d4549d6bf1f8c61d025965aebb5ba29d1481dc6471693ab91610aaffbc0eb", size = 1947174, upload-time = "2026-01-07T18:04:41.368Z" }, + { url = "https://files.pythonhosted.org/packages/47/1a/8634192f98cf740b3d174e1018dd0350018607d5bd8ac35a666dc49c732b/pymongo-4.16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:46ffb728d92dd5b09fc034ed91acf5595657c7ca17d4cf3751322cd554153c17", size = 1991727, upload-time = "2026-01-07T18:04:42.965Z" }, + { url = "https://files.pythonhosted.org/packages/5a/2f/0c47ac84572b28e23028a23a3798a1f725e1c23b0cf1c1424678d16aff42/pymongo-4.16.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:acda193f440dd88c2023cb00aa8bd7b93a9df59978306d14d87a8b12fe426b05", size = 2082497, upload-time = "2026-01-07T18:04:44.652Z" }, + { url = "https://files.pythonhosted.org/packages/ba/57/9f46ef9c862b2f0cf5ce798f3541c201c574128d31ded407ba4b3918d7b6/pymongo-4.16.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5d9fdb386cf958e6ef6ff537d6149be7edb76c3268cd6833e6c36aa447e4443f", size = 2064947, upload-time = "2026-01-07T18:04:46.228Z" }, + { url = "https://files.pythonhosted.org/packages/b8/56/5421c0998f38e32288100a07f6cb2f5f9f352522157c901910cb2927e211/pymongo-4.16.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:91899dd7fb9a8c50f09c3c1cf0cb73bfbe2737f511f641f19b9650deb61c00ca", size = 1980478, upload-time = "2026-01-07T18:04:48.017Z" }, + { url = "https://files.pythonhosted.org/packages/92/93/bfc448d025e12313a937d6e1e0101b50cc9751636b4b170e600fe3203063/pymongo-4.16.0-cp313-cp313-win32.whl", hash = "sha256:2cd60cd1e05de7f01927f8e25ca26b3ea2c09de8723241e5d3bcfdc70eaff76b", size = 934672, upload-time = "2026-01-07T18:04:49.538Z" }, + { url = "https://files.pythonhosted.org/packages/96/10/12710a5e01218d50c3dd165fd72c5ed2699285f77348a3b1a119a191d826/pymongo-4.16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3ead8a0050c53eaa55935895d6919d393d0328ec24b2b9115bdbe881aa222673", size = 959237, upload-time = "2026-01-07T18:04:51.382Z" }, + { url = "https://files.pythonhosted.org/packages/0c/56/d288bcd1d05bc17ec69df1d0b1d67bc710c7c5dbef86033a5a4d2e2b08e6/pymongo-4.16.0-cp313-cp313-win_arm64.whl", hash = "sha256:dbbc5b254c36c37d10abb50e899bc3939bbb7ab1e7c659614409af99bd3e7675", size = 940909, upload-time = "2026-01-07T18:04:52.904Z" }, + { url = "https://files.pythonhosted.org/packages/30/9e/4d343f8d0512002fce17915a89477b9f916bda1205729e042d8f23acf194/pymongo-4.16.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:8a254d49a9ffe9d7f888e3c677eed3729b14ce85abb08cd74732cead6ccc3c66", size = 1026634, upload-time = "2026-01-07T18:04:54.359Z" }, + { url = "https://files.pythonhosted.org/packages/c3/e3/341f88c5535df40c0450fda915f582757bb7d988cdfc92990a5e27c4c324/pymongo-4.16.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a1bf44e13cf2d44d2ea2e928a8140d5d667304abe1a61c4d55b4906f389fbe64", size = 1026252, upload-time = "2026-01-07T18:04:56.642Z" }, + { url = "https://files.pythonhosted.org/packages/af/64/9471b22eb98f0a2ca0b8e09393de048502111b2b5b14ab1bd9e39708aab5/pymongo-4.16.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f1c5f1f818b669875d191323a48912d3fcd2e4906410e8297bb09ac50c4d5ccc", size = 2207399, upload-time = "2026-01-07T18:04:58.255Z" }, + { url = "https://files.pythonhosted.org/packages/87/ac/47c4d50b25a02f21764f140295a2efaa583ee7f17992a5e5fa542b3a690f/pymongo-4.16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:77cfd37a43a53b02b7bd930457c7994c924ad8bbe8dff91817904bcbf291b371", size = 2260595, upload-time = "2026-01-07T18:04:59.788Z" }, + { url = "https://files.pythonhosted.org/packages/ee/1b/0ce1ce9dd036417646b2fe6f63b58127acff3cf96eeb630c34ec9cd675ff/pymongo-4.16.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:36ef2fee50eee669587d742fb456e349634b4fcf8926208766078b089054b24b", size = 2366958, upload-time = "2026-01-07T18:05:01.942Z" }, + { url = "https://files.pythonhosted.org/packages/3e/3c/a5a17c0d413aa9d6c17bc35c2b472e9e79cda8068ba8e93433b5f43028e9/pymongo-4.16.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:55f8d5a6fe2fa0b823674db2293f92d74cd5f970bc0360f409a1fc21003862d3", size = 2346081, upload-time = "2026-01-07T18:05:03.576Z" }, + { url = "https://files.pythonhosted.org/packages/65/19/f815533d1a88fb8a3b6c6e895bb085ffdae68ccb1e6ed7102202a307f8e2/pymongo-4.16.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9caacac0dd105e2555521002e2d17afc08665187017b466b5753e84c016628e6", size = 2246053, upload-time = "2026-01-07T18:05:05.459Z" }, + { url = "https://files.pythonhosted.org/packages/c6/88/4be3ec78828dc64b212c123114bd6ae8db5b7676085a7b43cc75d0131bd2/pymongo-4.16.0-cp314-cp314-win32.whl", hash = "sha256:c789236366525c3ee3cd6e4e450a9ff629a7d1f4d88b8e18a0aea0615fd7ecf8", size = 989461, upload-time = "2026-01-07T18:05:07.018Z" }, + { url = "https://files.pythonhosted.org/packages/af/5a/ab8d5af76421b34db483c9c8ebc3a2199fb80ae63dc7e18f4cf1df46306a/pymongo-4.16.0-cp314-cp314-win_amd64.whl", hash = "sha256:2b0714d7764efb29bf9d3c51c964aed7c4c7237b341f9346f15ceaf8321fdb35", size = 1017803, upload-time = "2026-01-07T18:05:08.499Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f4/98d68020728ac6423cf02d17cfd8226bf6cce5690b163d30d3f705e8297e/pymongo-4.16.0-cp314-cp314-win_arm64.whl", hash = "sha256:12762e7cc0f8374a8cae3b9f9ed8dabb5d438c7b33329232dd9b7de783454033", size = 997184, upload-time = "2026-01-07T18:05:09.944Z" }, + { url = "https://files.pythonhosted.org/packages/50/00/dc3a271daf06401825b9c1f4f76f018182c7738281ea54b9762aea0560c1/pymongo-4.16.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1c01e8a7cd0ea66baf64a118005535ab5bf9f9eb63a1b50ac3935dccf9a54abe", size = 1083303, upload-time = "2026-01-07T18:05:11.702Z" }, + { url = "https://files.pythonhosted.org/packages/b8/4b/b5375ee21d12eababe46215011ebc63801c0d2c5ffdf203849d0d79f9852/pymongo-4.16.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:4c4872299ebe315a79f7f922051061634a64fda95b6b17677ba57ef00b2ba2a4", size = 1083233, upload-time = "2026-01-07T18:05:13.182Z" }, + { url = "https://files.pythonhosted.org/packages/ee/e3/52efa3ca900622c7dcb56c5e70f15c906816d98905c22d2ee1f84d9a7b60/pymongo-4.16.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:78037d02389745e247fe5ab0bcad5d1ab30726eaac3ad79219c7d6bbb07eec53", size = 2527438, upload-time = "2026-01-07T18:05:14.981Z" }, + { url = "https://files.pythonhosted.org/packages/cb/96/43b1be151c734e7766c725444bcbfa1de6b60cc66bfb406203746839dd25/pymongo-4.16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c126fb72be2518395cc0465d4bae03125119136462e1945aea19840e45d89cfc", size = 2600399, upload-time = "2026-01-07T18:05:16.794Z" }, + { url = "https://files.pythonhosted.org/packages/e7/62/fa64a5045dfe3a1cd9217232c848256e7bc0136cffb7da4735c5e0d30e40/pymongo-4.16.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f3867dc225d9423c245a51eaac2cfcd53dde8e0a8d8090bb6aed6e31bd6c2d4f", size = 2720960, upload-time = "2026-01-07T18:05:18.498Z" }, + { url = "https://files.pythonhosted.org/packages/54/7b/01577eb97e605502821273a5bc16ce0fb0be5c978fe03acdbff471471202/pymongo-4.16.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f25001a955073b80510c0c3db0e043dbbc36904fd69e511c74e3d8640b8a5111", size = 2699344, upload-time = "2026-01-07T18:05:20.073Z" }, + { url = "https://files.pythonhosted.org/packages/55/68/6ef6372d516f703479c3b6cbbc45a5afd307173b1cbaccd724e23919bb1a/pymongo-4.16.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d9885aad05f82fd7ea0c9ca505d60939746b39263fa273d0125170da8f59098", size = 2577133, upload-time = "2026-01-07T18:05:22.052Z" }, + { url = "https://files.pythonhosted.org/packages/15/c7/b5337093bb01da852f945802328665f85f8109dbe91d81ea2afe5ff059b9/pymongo-4.16.0-cp314-cp314t-win32.whl", hash = "sha256:948152b30eddeae8355495f9943a3bf66b708295c0b9b6f467de1c620f215487", size = 1040560, upload-time = "2026-01-07T18:05:23.888Z" }, + { url = "https://files.pythonhosted.org/packages/96/8c/5b448cd1b103f3889d5713dda37304c81020ff88e38a826e8a75ddff4610/pymongo-4.16.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f6e42c1bc985d9beee884780ae6048790eb4cd565c46251932906bdb1630034a", size = 1075081, upload-time = "2026-01-07T18:05:26.874Z" }, + { url = "https://files.pythonhosted.org/packages/32/cd/ddc794cdc8500f6f28c119c624252fb6dfb19481c6d7ed150f13cf468a6d/pymongo-4.16.0-cp314-cp314t-win_arm64.whl", hash = "sha256:6b2a20edb5452ac8daa395890eeb076c570790dfce6b7a44d788af74c2f8cf96", size = 1047725, upload-time = "2026-01-07T18:05:28.47Z" }, ] [[package]] name = "pyright" -version = "1.1.382.post1" +version = "1.1.408" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "nodeenv" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1b/d3/fbf59f51cb74fc62a0c2b791aaa6242c8004db551b30c726783ba4432f05/pyright-1.1.382.post1.tar.gz", hash = "sha256:66a5d4e83be9452853d73e9dd9e95ba0ac3061845270e4e331d0070a597d3445", size = 21965, upload-time = "2024-09-27T13:36:45.072Z" } +sdist = { url = "https://files.pythonhosted.org/packages/74/b2/5db700e52554b8f025faa9c3c624c59f1f6c8841ba81ab97641b54322f16/pyright-1.1.408.tar.gz", hash = "sha256:f28f2321f96852fa50b5829ea492f6adb0e6954568d1caa3f3af3a5f555eb684", size = 4400578, upload-time = "2026-01-08T08:07:38.795Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/e2/7661f69927bf052e36d9c162c5087a02c346d0269be238cea2f5ae1e80f2/pyright-1.1.382.post1-py3-none-any.whl", hash = "sha256:21a4749dd1740e209f88d3a601e9f40748670d39481ea32b9d77edf7f3f1fb2e", size = 18669, upload-time = "2024-09-27T13:36:43.209Z" }, + { url = "https://files.pythonhosted.org/packages/0c/82/a2c93e32800940d9573fb28c346772a14778b84ba7524e691b324620ab89/pyright-1.1.408-py3-none-any.whl", hash = "sha256:090b32865f4fdb1e0e6cd82bf5618480d48eecd2eb2e70f960982a3d9a4c17c1", size = 6399144, upload-time = "2026-01-08T08:07:37.082Z" }, ] [[package]] name = "pytest" -version = "8.3.3" +version = "9.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -1665,23 +1758,26 @@ dependencies = [ { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, + { name = "pygments" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", size = 1442487, upload-time = "2024-09-10T10:52:15.003Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", size = 342341, upload-time = "2024-09-10T10:52:12.54Z" }, + { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, ] [[package]] name = "pytest-asyncio" -version = "0.24.0" +version = "1.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "backports-asyncio-runner", marker = "python_full_version < '3.11'" }, { name = "pytest" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/52/6d/c6cf50ce320cf8611df7a1254d86233b3df7cc07f9b5f5cbcb82e08aa534/pytest_asyncio-0.24.0.tar.gz", hash = "sha256:d081d828e576d85f875399194281e92bf8a68d60d72d1a2faf2feddb6c46b276", size = 49855, upload-time = "2024-08-22T08:03:18.145Z" } +sdist = { url = "https://files.pythonhosted.org/packages/90/2c/8af215c0f776415f3590cac4f9086ccefd6fd463befeae41cd4d3f193e5a/pytest_asyncio-1.3.0.tar.gz", hash = "sha256:d7f52f36d231b80ee124cd216ffb19369aa168fc10095013c6b014a34d3ee9e5", size = 50087, upload-time = "2025-11-10T16:07:47.256Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/31/6607dab48616902f76885dfcf62c08d929796fc3b2d2318faf9fd54dbed9/pytest_asyncio-0.24.0-py3-none-any.whl", hash = "sha256:a811296ed596b69bf0b6f3dc40f83bcaf341b155a269052d82efa2b25ac7037b", size = 18024, upload-time = "2024-08-22T08:03:15.536Z" }, + { url = "https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl", hash = "sha256:611e26147c7f77640e6d0a92a38ed17c3e9848063698d5c93d5aa7aa11cebff5", size = 15075, upload-time = "2025-11-10T16:07:45.537Z" }, ] [[package]] @@ -1696,525 +1792,498 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] -[[package]] -name = "pytz" -version = "2024.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/31/3c70bf7603cc2dca0f19bdc53b4537a797747a58875b552c8c413d963a3f/pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a", size = 319692, upload-time = "2024-09-11T02:24:47.91Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/11/c3/005fcca25ce078d2cc29fd559379817424e94885510568bc1bc53d7d5846/pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725", size = 508002, upload-time = "2024-09-11T02:24:45.8Z" }, -] - -[[package]] -name = "pywin32" -version = "306" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/08/dc/28c668097edfaf4eac4617ef7adf081b9cf50d254672fcf399a70f5efc41/pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d", size = 8506422, upload-time = "2023-03-26T03:27:46.303Z" }, - { url = "https://files.pythonhosted.org/packages/d3/d6/891894edec688e72c2e308b3243fad98b4066e1839fd2fe78f04129a9d31/pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8", size = 9226392, upload-time = "2023-03-26T03:27:53.591Z" }, - { url = "https://files.pythonhosted.org/packages/8b/1e/fc18ad83ca553e01b97aa8393ff10e33c1fb57801db05488b83282ee9913/pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407", size = 8507689, upload-time = "2023-03-25T23:50:08.499Z" }, - { url = "https://files.pythonhosted.org/packages/7e/9e/ad6b1ae2a5ad1066dc509350e0fbf74d8d50251a51e420a2a8feaa0cecbd/pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e", size = 9227547, upload-time = "2023-03-25T23:50:20.331Z" }, - { url = "https://files.pythonhosted.org/packages/91/20/f744bff1da8f43388498503634378dbbefbe493e65675f2cc52f7185c2c2/pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a", size = 10388324, upload-time = "2023-03-25T23:50:30.904Z" }, - { url = "https://files.pythonhosted.org/packages/14/91/17e016d5923e178346aabda3dfec6629d1a26efe587d19667542105cf0a6/pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b", size = 8507705, upload-time = "2023-03-25T23:50:40.279Z" }, - { url = "https://files.pythonhosted.org/packages/83/1c/25b79fc3ec99b19b0a0730cc47356f7e2959863bf9f3cd314332bddb4f68/pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e", size = 9227429, upload-time = "2023-03-25T23:50:50.222Z" }, - { url = "https://files.pythonhosted.org/packages/1c/43/e3444dc9a12f8365d9603c2145d16bf0a2f8180f343cf87be47f5579e547/pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040", size = 10388145, upload-time = "2023-03-25T23:51:01.401Z" }, - { url = "https://files.pythonhosted.org/packages/0e/57/c3ec32b498f24a2392404d1f0fd29f47a3f7339d7d579df7a0560cff337c/pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a", size = 8632118, upload-time = "2023-03-25T23:51:29.387Z" }, - { url = "https://files.pythonhosted.org/packages/fa/80/a6b22e031590cc5f4fcbd5bf4bcf63a9dabce9d59065f53add99a8caaec5/pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0", size = 9373699, upload-time = "2023-03-25T23:51:39.175Z" }, - { url = "https://files.pythonhosted.org/packages/7e/7f/419c4fcadcaa374a0ae41cbdf6c3a81452892dd6c523aea629d17e49146e/pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802", size = 8573451, upload-time = "2023-03-25T23:51:47.59Z" }, - { url = "https://files.pythonhosted.org/packages/1c/f7/24d8ed4fd9c43b90354df7764f81f0dd5e623f9a50f1538f90fe085d6dff/pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4", size = 9312883, upload-time = "2023-03-25T23:51:56.688Z" }, -] - [[package]] name = "pyyaml" -version = "6.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199, upload-time = "2024-08-06T20:31:40.178Z" }, - { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758, upload-time = "2024-08-06T20:31:42.173Z" }, - { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463, upload-time = "2024-08-06T20:31:44.263Z" }, - { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280, upload-time = "2024-08-06T20:31:50.199Z" }, - { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239, upload-time = "2024-08-06T20:31:52.292Z" }, - { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802, upload-time = "2024-08-06T20:31:53.836Z" }, - { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527, upload-time = "2024-08-06T20:31:55.565Z" }, - { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052, upload-time = "2024-08-06T20:31:56.914Z" }, - { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774, upload-time = "2024-08-06T20:31:58.304Z" }, - { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612, upload-time = "2024-08-06T20:32:03.408Z" }, - { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040, upload-time = "2024-08-06T20:32:04.926Z" }, - { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829, upload-time = "2024-08-06T20:32:06.459Z" }, - { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167, upload-time = "2024-08-06T20:32:08.338Z" }, - { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952, upload-time = "2024-08-06T20:32:14.124Z" }, - { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301, upload-time = "2024-08-06T20:32:16.17Z" }, - { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638, upload-time = "2024-08-06T20:32:18.555Z" }, - { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, - { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, - { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload-time = "2024-08-06T20:32:25.131Z" }, - { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload-time = "2024-08-06T20:32:26.511Z" }, - { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload-time = "2024-08-06T20:32:28.363Z" }, - { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload-time = "2024-08-06T20:32:30.058Z" }, - { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload-time = "2024-08-06T20:32:31.881Z" }, - { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload-time = "2024-08-06T20:32:37.083Z" }, - { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload-time = "2024-08-06T20:32:38.898Z" }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, - { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" }, - { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" }, - { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, - { url = "https://files.pythonhosted.org/packages/74/d9/323a59d506f12f498c2097488d80d16f4cf965cee1791eab58b56b19f47a/PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a", size = 183218, upload-time = "2024-08-06T20:33:06.411Z" }, - { url = "https://files.pythonhosted.org/packages/74/cc/20c34d00f04d785f2028737e2e2a8254e1425102e730fee1d6396f832577/PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5", size = 728067, upload-time = "2024-08-06T20:33:07.879Z" }, - { url = "https://files.pythonhosted.org/packages/20/52/551c69ca1501d21c0de51ddafa8c23a0191ef296ff098e98358f69080577/PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d", size = 757812, upload-time = "2024-08-06T20:33:12.542Z" }, - { url = "https://files.pythonhosted.org/packages/fd/7f/2c3697bba5d4aa5cc2afe81826d73dfae5f049458e44732c7a0938baa673/PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083", size = 746531, upload-time = "2024-08-06T20:33:14.391Z" }, - { url = "https://files.pythonhosted.org/packages/8c/ab/6226d3df99900e580091bb44258fde77a8433511a86883bd4681ea19a858/PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706", size = 800820, upload-time = "2024-08-06T20:33:16.586Z" }, - { url = "https://files.pythonhosted.org/packages/a0/99/a9eb0f3e710c06c5d922026f6736e920d431812ace24aae38228d0d64b04/PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a", size = 145514, upload-time = "2024-08-06T20:33:22.414Z" }, - { url = "https://files.pythonhosted.org/packages/75/8a/ee831ad5fafa4431099aa4e078d4c8efd43cd5e48fbc774641d233b683a9/PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff", size = 162702, upload-time = "2024-08-06T20:33:23.813Z" }, - { url = "https://files.pythonhosted.org/packages/65/d8/b7a1db13636d7fb7d4ff431593c510c8b8fca920ade06ca8ef20015493c5/PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d", size = 184777, upload-time = "2024-08-06T20:33:25.896Z" }, - { url = "https://files.pythonhosted.org/packages/0a/02/6ec546cd45143fdf9840b2c6be8d875116a64076218b61d68e12548e5839/PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f", size = 172318, upload-time = "2024-08-06T20:33:27.212Z" }, - { url = "https://files.pythonhosted.org/packages/0e/9a/8cc68be846c972bda34f6c2a93abb644fb2476f4dcc924d52175786932c9/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290", size = 720891, upload-time = "2024-08-06T20:33:28.974Z" }, - { url = "https://files.pythonhosted.org/packages/e9/6c/6e1b7f40181bc4805e2e07f4abc10a88ce4648e7e95ff1abe4ae4014a9b2/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12", size = 722614, upload-time = "2024-08-06T20:33:34.157Z" }, - { url = "https://files.pythonhosted.org/packages/3d/32/e7bd8535d22ea2874cef6a81021ba019474ace0d13a4819c2a4bce79bd6a/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19", size = 737360, upload-time = "2024-08-06T20:33:35.84Z" }, - { url = "https://files.pythonhosted.org/packages/d7/12/7322c1e30b9be969670b672573d45479edef72c9a0deac3bb2868f5d7469/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e", size = 699006, upload-time = "2024-08-06T20:33:37.501Z" }, - { url = "https://files.pythonhosted.org/packages/82/72/04fcad41ca56491995076630c3ec1e834be241664c0c09a64c9a2589b507/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725", size = 723577, upload-time = "2024-08-06T20:33:39.389Z" }, - { url = "https://files.pythonhosted.org/packages/ed/5e/46168b1f2757f1fcd442bc3029cd8767d88a98c9c05770d8b420948743bb/PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631", size = 144593, upload-time = "2024-08-06T20:33:46.63Z" }, - { url = "https://files.pythonhosted.org/packages/19/87/5124b1c1f2412bb95c59ec481eaf936cd32f0fe2a7b16b97b81c4c017a6a/PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8", size = 162312, upload-time = "2024-08-06T20:33:49.073Z" }, +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" }, + { url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" }, + { url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" }, + { url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" }, + { url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" }, + { url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, + { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, + { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, ] [[package]] name = "pyzmq" -version = "26.2.0" +version = "27.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "implementation_name == 'pypy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fd/05/bed626b9f7bb2322cdbbf7b4bd8f54b1b617b0d2ab2d3547d6e39428a48e/pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f", size = 271975, upload-time = "2024-08-22T09:02:03.351Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/a8/9837c39aba390eb7d01924ace49d761c8dbe7bc2d6082346d00c8332e431/pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629", size = 1340058, upload-time = "2024-08-22T08:59:17.749Z" }, - { url = "https://files.pythonhosted.org/packages/a2/1f/a006f2e8e4f7d41d464272012695da17fb95f33b54342612a6890da96ff6/pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b", size = 1008818, upload-time = "2024-08-22T08:59:19.43Z" }, - { url = "https://files.pythonhosted.org/packages/b6/09/b51b6683fde5ca04593a57bbe81788b6b43114d8f8ee4e80afc991e14760/pyzmq-26.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89289a5ee32ef6c439086184529ae060c741334b8970a6855ec0b6ad3ff28764", size = 673199, upload-time = "2024-08-22T08:59:20.957Z" }, - { url = "https://files.pythonhosted.org/packages/c9/78/486f3e2e824f3a645238332bf5a4c4b4477c3063033a27c1e4052358dee2/pyzmq-26.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5506f06d7dc6ecf1efacb4a013b1f05071bb24b76350832c96449f4a2d95091c", size = 911762, upload-time = "2024-08-22T08:59:22.007Z" }, - { url = "https://files.pythonhosted.org/packages/5e/3b/2eb1667c9b866f53e76ee8b0c301b0469745a23bd5a87b7ee3d5dd9eb6e5/pyzmq-26.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ea039387c10202ce304af74def5021e9adc6297067f3441d348d2b633e8166a", size = 868773, upload-time = "2024-08-22T08:59:23.242Z" }, - { url = "https://files.pythonhosted.org/packages/16/29/ca99b4598a9dc7e468b5417eda91f372b595be1e3eec9b7cbe8e5d3584e8/pyzmq-26.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2224fa4a4c2ee872886ed00a571f5e967c85e078e8e8c2530a2fb01b3309b88", size = 868834, upload-time = "2024-08-22T08:59:24.674Z" }, - { url = "https://files.pythonhosted.org/packages/ad/e5/9efaeb1d2f4f8c50da04144f639b042bc52869d3a206d6bf672ab3522163/pyzmq-26.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:28ad5233e9c3b52d76196c696e362508959741e1a005fb8fa03b51aea156088f", size = 1202861, upload-time = "2024-08-22T08:59:26.326Z" }, - { url = "https://files.pythonhosted.org/packages/c3/62/c721b5608a8ac0a69bb83cbb7d07a56f3ff00b3991a138e44198a16f94c7/pyzmq-26.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1c17211bc037c7d88e85ed8b7d8f7e52db6dc8eca5590d162717c654550f7282", size = 1515304, upload-time = "2024-08-22T08:59:27.851Z" }, - { url = "https://files.pythonhosted.org/packages/87/84/e8bd321aa99b72f48d4606fc5a0a920154125bd0a4608c67eab742dab087/pyzmq-26.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b8f86dd868d41bea9a5f873ee13bf5551c94cf6bc51baebc6f85075971fe6eea", size = 1414712, upload-time = "2024-08-22T08:59:29.611Z" }, - { url = "https://files.pythonhosted.org/packages/cd/cd/420e3fd1ac6977b008b72e7ad2dae6350cc84d4c5027fc390b024e61738f/pyzmq-26.2.0-cp310-cp310-win32.whl", hash = "sha256:46a446c212e58456b23af260f3d9fb785054f3e3653dbf7279d8f2b5546b21c2", size = 578113, upload-time = "2024-08-22T08:59:31.055Z" }, - { url = "https://files.pythonhosted.org/packages/5c/57/73930d56ed45ae0cb4946f383f985c855c9b3d4063f26416998f07523c0e/pyzmq-26.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:49d34ab71db5a9c292a7644ce74190b1dd5a3475612eefb1f8be1d6961441971", size = 641631, upload-time = "2024-08-22T08:59:32.248Z" }, - { url = "https://files.pythonhosted.org/packages/61/d2/ae6ac5c397f1ccad59031c64beaafce7a0d6182e0452cc48f1c9c87d2dd0/pyzmq-26.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:bfa832bfa540e5b5c27dcf5de5d82ebc431b82c453a43d141afb1e5d2de025fa", size = 543528, upload-time = "2024-08-22T08:59:33.698Z" }, - { url = "https://files.pythonhosted.org/packages/12/20/de7442172f77f7c96299a0ac70e7d4fb78cd51eca67aa2cf552b66c14196/pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218", size = 1340639, upload-time = "2024-08-22T08:59:35.163Z" }, - { url = "https://files.pythonhosted.org/packages/98/4d/5000468bd64c7910190ed0a6c76a1ca59a68189ec1f007c451dc181a22f4/pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4", size = 1008710, upload-time = "2024-08-22T08:59:36.775Z" }, - { url = "https://files.pythonhosted.org/packages/e1/bf/c67fd638c2f9fbbab8090a3ee779370b97c82b84cc12d0c498b285d7b2c0/pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef", size = 673129, upload-time = "2024-08-22T08:59:38.012Z" }, - { url = "https://files.pythonhosted.org/packages/86/94/99085a3f492aa538161cbf27246e8886ff850e113e0c294a5b8245f13b52/pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317", size = 910107, upload-time = "2024-08-22T08:59:39.437Z" }, - { url = "https://files.pythonhosted.org/packages/31/1d/346809e8a9b999646d03f21096428453465b1bca5cd5c64ecd048d9ecb01/pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf", size = 867960, upload-time = "2024-08-22T08:59:40.606Z" }, - { url = "https://files.pythonhosted.org/packages/ab/68/6fb6ae5551846ad5beca295b7bca32bf0a7ce19f135cb30e55fa2314e6b6/pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e", size = 869204, upload-time = "2024-08-22T08:59:42.782Z" }, - { url = "https://files.pythonhosted.org/packages/0f/f9/18417771dee223ccf0f48e29adf8b4e25ba6d0e8285e33bcbce078070bc3/pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37", size = 1203351, upload-time = "2024-08-22T08:59:44.443Z" }, - { url = "https://files.pythonhosted.org/packages/e0/46/f13e67fe0d4f8a2315782cbad50493de6203ea0d744610faf4d5f5b16e90/pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3", size = 1514204, upload-time = "2024-08-22T08:59:45.913Z" }, - { url = "https://files.pythonhosted.org/packages/50/11/ddcf7343b7b7a226e0fc7b68cbf5a5bb56291fac07f5c3023bb4c319ebb4/pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6", size = 1414339, upload-time = "2024-08-22T08:59:47.702Z" }, - { url = "https://files.pythonhosted.org/packages/01/14/1c18d7d5b7be2708f513f37c61bfadfa62161c10624f8733f1c8451b3509/pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4", size = 576928, upload-time = "2024-08-22T08:59:48.856Z" }, - { url = "https://files.pythonhosted.org/packages/3b/1b/0a540edd75a41df14ec416a9a500b9fec66e554aac920d4c58fbd5756776/pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5", size = 642317, upload-time = "2024-08-22T08:59:50.561Z" }, - { url = "https://files.pythonhosted.org/packages/98/77/1cbfec0358078a4c5add529d8a70892db1be900980cdb5dd0898b3d6ab9d/pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003", size = 543834, upload-time = "2024-08-22T08:59:51.997Z" }, - { url = "https://files.pythonhosted.org/packages/28/2f/78a766c8913ad62b28581777ac4ede50c6d9f249d39c2963e279524a1bbe/pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9", size = 1343105, upload-time = "2024-08-22T08:59:53.18Z" }, - { url = "https://files.pythonhosted.org/packages/b7/9c/4b1e2d3d4065be715e007fe063ec7885978fad285f87eae1436e6c3201f4/pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52", size = 1008365, upload-time = "2024-08-22T08:59:54.4Z" }, - { url = "https://files.pythonhosted.org/packages/4f/ef/5a23ec689ff36d7625b38d121ef15abfc3631a9aecb417baf7a4245e4124/pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08", size = 665923, upload-time = "2024-08-22T08:59:55.568Z" }, - { url = "https://files.pythonhosted.org/packages/ae/61/d436461a47437d63c6302c90724cf0981883ec57ceb6073873f32172d676/pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5", size = 903400, upload-time = "2024-08-22T08:59:57.001Z" }, - { url = "https://files.pythonhosted.org/packages/47/42/fc6d35ecefe1739a819afaf6f8e686f7f02a4dd241c78972d316f403474c/pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae", size = 860034, upload-time = "2024-08-22T08:59:58.259Z" }, - { url = "https://files.pythonhosted.org/packages/07/3b/44ea6266a6761e9eefaa37d98fabefa112328808ac41aa87b4bbb668af30/pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711", size = 860579, upload-time = "2024-08-22T08:59:59.514Z" }, - { url = "https://files.pythonhosted.org/packages/38/6f/4df2014ab553a6052b0e551b37da55166991510f9e1002c89cab7ce3b3f2/pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6", size = 1196246, upload-time = "2024-08-22T09:00:01.117Z" }, - { url = "https://files.pythonhosted.org/packages/38/9d/ee240fc0c9fe9817f0c9127a43238a3e28048795483c403cc10720ddef22/pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3", size = 1507441, upload-time = "2024-08-22T09:00:02.851Z" }, - { url = "https://files.pythonhosted.org/packages/85/4f/01711edaa58d535eac4a26c294c617c9a01f09857c0ce191fd574d06f359/pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b", size = 1406498, upload-time = "2024-08-22T09:00:04.907Z" }, - { url = "https://files.pythonhosted.org/packages/07/18/907134c85c7152f679ed744e73e645b365f3ad571f38bdb62e36f347699a/pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7", size = 575533, upload-time = "2024-08-22T09:00:06.326Z" }, - { url = "https://files.pythonhosted.org/packages/ce/2c/a6f4a20202a4d3c582ad93f95ee78d79bbdc26803495aec2912b17dbbb6c/pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a", size = 637768, upload-time = "2024-08-22T09:00:08.137Z" }, - { url = "https://files.pythonhosted.org/packages/5f/0e/eb16ff731632d30554bf5af4dbba3ffcd04518219d82028aea4ae1b02ca5/pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b", size = 540675, upload-time = "2024-08-22T09:00:09.479Z" }, - { url = "https://files.pythonhosted.org/packages/04/a7/0f7e2f6c126fe6e62dbae0bc93b1bd3f1099cf7fea47a5468defebe3f39d/pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726", size = 1006564, upload-time = "2024-08-22T09:00:11.054Z" }, - { url = "https://files.pythonhosted.org/packages/31/b6/a187165c852c5d49f826a690857684333a6a4a065af0a6015572d2284f6a/pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3", size = 1340447, upload-time = "2024-08-22T09:00:12.547Z" }, - { url = "https://files.pythonhosted.org/packages/68/ba/f4280c58ff71f321602a6e24fd19879b7e79793fb8ab14027027c0fb58ef/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50", size = 665485, upload-time = "2024-08-22T09:00:14.205Z" }, - { url = "https://files.pythonhosted.org/packages/77/b5/c987a5c53c7d8704216f29fc3d810b32f156bcea488a940e330e1bcbb88d/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb", size = 903484, upload-time = "2024-08-22T09:00:16.148Z" }, - { url = "https://files.pythonhosted.org/packages/29/c9/07da157d2db18c72a7eccef8e684cefc155b712a88e3d479d930aa9eceba/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187", size = 859981, upload-time = "2024-08-22T09:00:17.443Z" }, - { url = "https://files.pythonhosted.org/packages/43/09/e12501bd0b8394b7d02c41efd35c537a1988da67fc9c745cae9c6c776d31/pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b", size = 860334, upload-time = "2024-08-22T09:00:18.65Z" }, - { url = "https://files.pythonhosted.org/packages/eb/ff/f5ec1d455f8f7385cc0a8b2acd8c807d7fade875c14c44b85c1bddabae21/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18", size = 1196179, upload-time = "2024-08-22T09:00:19.981Z" }, - { url = "https://files.pythonhosted.org/packages/ec/8a/bb2ac43295b1950fe436a81fc5b298be0b96ac76fb029b514d3ed58f7b27/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115", size = 1507668, upload-time = "2024-08-22T09:00:21.249Z" }, - { url = "https://files.pythonhosted.org/packages/a9/49/dbc284ebcfd2dca23f6349227ff1616a7ee2c4a35fe0a5d6c3deff2b4fed/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e", size = 1406539, upload-time = "2024-08-22T09:00:22.742Z" }, - { url = "https://files.pythonhosted.org/packages/00/68/093cdce3fe31e30a341d8e52a1ad86392e13c57970d722c1f62a1d1a54b6/pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5", size = 575567, upload-time = "2024-08-22T09:00:24.2Z" }, - { url = "https://files.pythonhosted.org/packages/92/ae/6cc4657148143412b5819b05e362ae7dd09fb9fe76e2a539dcff3d0386bc/pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad", size = 637551, upload-time = "2024-08-22T09:00:25.58Z" }, - { url = "https://files.pythonhosted.org/packages/6c/67/fbff102e201688f97c8092e4c3445d1c1068c2f27bbd45a578df97ed5f94/pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797", size = 540378, upload-time = "2024-08-22T09:00:27.572Z" }, - { url = "https://files.pythonhosted.org/packages/3f/fe/2d998380b6e0122c6c4bdf9b6caf490831e5f5e2d08a203b5adff060c226/pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a", size = 1007378, upload-time = "2024-08-22T09:00:29.274Z" }, - { url = "https://files.pythonhosted.org/packages/4a/f4/30d6e7157f12b3a0390bde94d6a8567cdb88846ed068a6e17238a4ccf600/pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc", size = 1329532, upload-time = "2024-08-22T09:00:30.683Z" }, - { url = "https://files.pythonhosted.org/packages/82/86/3fe917870e15ee1c3ad48229a2a64458e36036e64b4afa9659045d82bfa8/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5", size = 653242, upload-time = "2024-08-22T09:00:32.562Z" }, - { url = "https://files.pythonhosted.org/packages/50/2d/242e7e6ef6c8c19e6cb52d095834508cd581ffb925699fd3c640cdc758f1/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672", size = 888404, upload-time = "2024-08-22T09:00:33.982Z" }, - { url = "https://files.pythonhosted.org/packages/ac/11/7270566e1f31e4ea73c81ec821a4b1688fd551009a3d2bab11ec66cb1e8f/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797", size = 845858, upload-time = "2024-08-22T09:00:35.251Z" }, - { url = "https://files.pythonhosted.org/packages/91/d5/72b38fbc69867795c8711bdd735312f9fef1e3d9204e2f63ab57085434b9/pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386", size = 847375, upload-time = "2024-08-22T09:00:36.546Z" }, - { url = "https://files.pythonhosted.org/packages/dd/9a/10ed3c7f72b4c24e719c59359fbadd1a27556a28b36cdf1cd9e4fb7845d5/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306", size = 1183489, upload-time = "2024-08-22T09:00:37.819Z" }, - { url = "https://files.pythonhosted.org/packages/72/2d/8660892543fabf1fe41861efa222455811adac9f3c0818d6c3170a1153e3/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6", size = 1492932, upload-time = "2024-08-22T09:00:39.127Z" }, - { url = "https://files.pythonhosted.org/packages/7b/d6/32fd69744afb53995619bc5effa2a405ae0d343cd3e747d0fbc43fe894ee/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0", size = 1392485, upload-time = "2024-08-22T09:00:40.432Z" }, - { url = "https://files.pythonhosted.org/packages/64/e7/d5d59205d446c299001d27bfc18702c5353512c5485b11ec7cf6df9552d7/pyzmq-26.2.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2eb7735ee73ca1b0d71e0e67c3739c689067f055c764f73aac4cc8ecf958ee3f", size = 1340492, upload-time = "2024-08-22T09:00:56.006Z" }, - { url = "https://files.pythonhosted.org/packages/59/bb/aa6616a83694ab43cfb3bdb868d194a5ee2fa24b49e6ec7ec4400691ac3b/pyzmq-26.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a534f43bc738181aa7cbbaf48e3eca62c76453a40a746ab95d4b27b1111a7d2", size = 1008257, upload-time = "2024-08-22T09:00:57.43Z" }, - { url = "https://files.pythonhosted.org/packages/a6/b6/e578e6c08970df0daa08b7c54e82b606211f9a7e61317ef2db79cc334389/pyzmq-26.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aedd5dd8692635813368e558a05266b995d3d020b23e49581ddd5bbe197a8ab6", size = 907602, upload-time = "2024-08-22T09:00:58.768Z" }, - { url = "https://files.pythonhosted.org/packages/ab/3a/a26b98aebeb7924b24e9973a2f5bf8974201bb5a3f6ed06ddc3bac19372d/pyzmq-26.2.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8be4700cd8bb02cc454f630dcdf7cfa99de96788b80c51b60fe2fe1dac480289", size = 862291, upload-time = "2024-08-22T09:01:00.247Z" }, - { url = "https://files.pythonhosted.org/packages/c1/b5/7eedb8d63af13c2858beb9c1f58e90e7e00929176b57f45e3592fccd56dc/pyzmq-26.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fcc03fa4997c447dce58264e93b5aa2d57714fbe0f06c07b7785ae131512732", size = 673879, upload-time = "2024-08-22T09:01:01.646Z" }, - { url = "https://files.pythonhosted.org/packages/af/22/38734f47543e61b4eb97eee476f0f7ae544988533215eea22fc65e1ca1d7/pyzmq-26.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:402b190912935d3db15b03e8f7485812db350d271b284ded2b80d2e5704be780", size = 1207011, upload-time = "2024-08-22T09:01:03.264Z" }, - { url = "https://files.pythonhosted.org/packages/59/a4/104cc979ae88ed948ef829db5fb49bca4a771891125fa4166bba1598b2ec/pyzmq-26.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8685fa9c25ff00f550c1fec650430c4b71e4e48e8d852f7ddcf2e48308038640", size = 1516183, upload-time = "2024-08-22T09:01:04.837Z" }, - { url = "https://files.pythonhosted.org/packages/52/8f/73a8e08897f8ed21fe44fc73b5faf3ea4cacb97bfd219a63ee5f3ea203a8/pyzmq-26.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:76589c020680778f06b7e0b193f4b6dd66d470234a16e1df90329f5e14a171cd", size = 1417481, upload-time = "2024-08-22T09:01:06.294Z" }, - { url = "https://files.pythonhosted.org/packages/67/cf/f418670a83fb3a91e2d6d26f271a828a58e0265199944a76e4ef274f9ba7/pyzmq-26.2.0-cp38-cp38-win32.whl", hash = "sha256:8423c1877d72c041f2c263b1ec6e34360448decfb323fa8b94e85883043ef988", size = 577930, upload-time = "2024-08-22T09:01:07.653Z" }, - { url = "https://files.pythonhosted.org/packages/f0/51/1f2b47c8d8fb85c07f088e21df6364b8b5e8298e75bb23ea0e65340ebd82/pyzmq-26.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:76589f2cd6b77b5bdea4fca5992dc1c23389d68b18ccc26a53680ba2dc80ff2f", size = 642503, upload-time = "2024-08-22T09:01:08.965Z" }, - { url = "https://files.pythonhosted.org/packages/ac/9e/ad5fbbe1bcc7a9d1e8c5f4f7de48f2c1dc481e151ef80cc1ce9a7fe67b55/pyzmq-26.2.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:b1d464cb8d72bfc1a3adc53305a63a8e0cac6bc8c5a07e8ca190ab8d3faa43c2", size = 1341256, upload-time = "2024-08-22T09:01:10.314Z" }, - { url = "https://files.pythonhosted.org/packages/4c/d9/d7a8022108c214803a82b0b69d4885cee00933d21928f1f09dca371cf4bf/pyzmq-26.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4da04c48873a6abdd71811c5e163bd656ee1b957971db7f35140a2d573f6949c", size = 1009385, upload-time = "2024-08-22T09:01:11.815Z" }, - { url = "https://files.pythonhosted.org/packages/ed/69/0529b59ac667ea8bfe8796ac71796b688fbb42ff78e06525dabfed3bc7ae/pyzmq-26.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d049df610ac811dcffdc147153b414147428567fbbc8be43bb8885f04db39d98", size = 908009, upload-time = "2024-08-22T09:01:13.235Z" }, - { url = "https://files.pythonhosted.org/packages/6e/bd/3ff3e1172f12f55769793a3a334e956ec2886805ebfb2f64756b6b5c6a1a/pyzmq-26.2.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05590cdbc6b902101d0e65d6a4780af14dc22914cc6ab995d99b85af45362cc9", size = 862078, upload-time = "2024-08-22T09:01:14.713Z" }, - { url = "https://files.pythonhosted.org/packages/c3/ec/ab13585c3a1f48e2874253844c47b194d56eb25c94718691349c646f336f/pyzmq-26.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c811cfcd6a9bf680236c40c6f617187515269ab2912f3d7e8c0174898e2519db", size = 673756, upload-time = "2024-08-22T09:01:16.158Z" }, - { url = "https://files.pythonhosted.org/packages/1e/be/febcd4b04dd50ee6d514dfbc33a3d5d9cb38ec9516e02bbfc929baa0f141/pyzmq-26.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6835dd60355593de10350394242b5757fbbd88b25287314316f266e24c61d073", size = 1203684, upload-time = "2024-08-22T09:01:17.695Z" }, - { url = "https://files.pythonhosted.org/packages/16/28/304150e71afd2df3b82f52f66c0d8ab9ac6fe1f1ffdf92bad4c8cc91d557/pyzmq-26.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc6bee759a6bddea5db78d7dcd609397449cb2d2d6587f48f3ca613b19410cfc", size = 1515864, upload-time = "2024-08-22T09:01:19.142Z" }, - { url = "https://files.pythonhosted.org/packages/18/89/8d48d8cd505c12a1f5edee597cc32ffcedc65fd8d2603aebaaedc38a7041/pyzmq-26.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c530e1eecd036ecc83c3407f77bb86feb79916d4a33d11394b8234f3bd35b940", size = 1415383, upload-time = "2024-08-22T09:01:21.67Z" }, - { url = "https://files.pythonhosted.org/packages/d4/7e/43a60c3b179f7da0cbc2b649bd2702fd6a39bff5f72aa38d6e1aeb00256d/pyzmq-26.2.0-cp39-cp39-win32.whl", hash = "sha256:367b4f689786fca726ef7a6c5ba606958b145b9340a5e4808132cc65759abd44", size = 578540, upload-time = "2024-08-22T09:01:23.147Z" }, - { url = "https://files.pythonhosted.org/packages/3a/55/8841dcd28f783ad06674c8fe8d7d72794b548d0bff8829aaafeb72e8b44d/pyzmq-26.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:e6fa2e3e683f34aea77de8112f6483803c96a44fd726d7358b9888ae5bb394ec", size = 642147, upload-time = "2024-08-22T09:01:24.533Z" }, - { url = "https://files.pythonhosted.org/packages/b4/78/b3c31ccfcfcdd6ea50b6abc8f46a2a7aadb9c3d40531d1b908d834aaa12e/pyzmq-26.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:7445be39143a8aa4faec43b076e06944b8f9d0701b669df4af200531b21e40bb", size = 543903, upload-time = "2024-08-22T09:01:25.931Z" }, - { url = "https://files.pythonhosted.org/packages/53/fb/36b2b2548286e9444e52fcd198760af99fd89102b5be50f0660fcfe902df/pyzmq-26.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:706e794564bec25819d21a41c31d4df2d48e1cc4b061e8d345d7fb4dd3e94072", size = 906955, upload-time = "2024-08-22T09:01:27.361Z" }, - { url = "https://files.pythonhosted.org/packages/77/8f/6ce54f8979a01656e894946db6299e2273fcee21c8e5fa57c6295ef11f57/pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b435f2753621cd36e7c1762156815e21c985c72b19135dac43a7f4f31d28dd1", size = 565701, upload-time = "2024-08-22T09:01:28.842Z" }, - { url = "https://files.pythonhosted.org/packages/ee/1c/bf8cd66730a866b16db8483286078892b7f6536f8c389fb46e4beba0a970/pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160c7e0a5eb178011e72892f99f918c04a131f36056d10d9c1afb223fc952c2d", size = 794312, upload-time = "2024-08-22T09:01:30.592Z" }, - { url = "https://files.pythonhosted.org/packages/71/43/91fa4ff25bbfdc914ab6bafa0f03241d69370ef31a761d16bb859f346582/pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4a71d5d6e7b28a47a394c0471b7e77a0661e2d651e7ae91e0cab0a587859ca", size = 752775, upload-time = "2024-08-22T09:01:32.459Z" }, - { url = "https://files.pythonhosted.org/packages/ec/d2/3b2ab40f455a256cb6672186bea95cd97b459ce4594050132d71e76f0d6f/pyzmq-26.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:90412f2db8c02a3864cbfc67db0e3dcdbda336acf1c469526d3e869394fe001c", size = 550762, upload-time = "2024-08-22T09:01:34.136Z" }, - { url = "https://files.pythonhosted.org/packages/38/a7/1c80b0c8013befad391b92ba8a8e597de8884605ad5ad8ab943c888eb3ca/pyzmq-26.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:39887ac397ff35b7b775db7201095fc6310a35fdbae85bac4523f7eb3b840e20", size = 906946, upload-time = "2024-08-22T09:01:44.671Z" }, - { url = "https://files.pythonhosted.org/packages/9c/ac/34a7ee2e7edb07c7222752096650313424eb05f18401ed0a964e996088fb/pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fdb5b3e311d4d4b0eb8b3e8b4d1b0a512713ad7e6a68791d0923d1aec433d919", size = 802021, upload-time = "2024-08-22T09:01:46.278Z" }, - { url = "https://files.pythonhosted.org/packages/cd/70/c65ddccfb88b469b6044f9664c81f0b7f649711e0dc172cba8b2a968ad99/pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:226af7dcb51fdb0109f0016449b357e182ea0ceb6b47dfb5999d569e5db161d5", size = 756818, upload-time = "2024-08-22T09:01:47.798Z" }, - { url = "https://files.pythonhosted.org/packages/07/7a/fc77f6d57f592207403eab2deca4c6f1ffa9c78b0f03b59e69069a12a1a1/pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bed0e799e6120b9c32756203fb9dfe8ca2fb8467fed830c34c877e25638c3fc", size = 565698, upload-time = "2024-08-22T09:01:49.52Z" }, - { url = "https://files.pythonhosted.org/packages/dc/13/e8494ba2d161fb471955fadbef7f48076bd29b19a4dd3c5d61d22e500505/pyzmq-26.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:29c7947c594e105cb9e6c466bace8532dc1ca02d498684128b339799f5248277", size = 550757, upload-time = "2024-08-22T09:01:50.997Z" }, - { url = "https://files.pythonhosted.org/packages/6c/78/3096d72581365dfb0081ac9512a3b53672fa69854aa174d78636510c4db8/pyzmq-26.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cdeabcff45d1c219636ee2e54d852262e5c2e085d6cb476d938aee8d921356b3", size = 906945, upload-time = "2024-08-22T09:01:52.577Z" }, - { url = "https://files.pythonhosted.org/packages/da/f2/8054574d77c269c31d055d4daf3d8407adf61ea384a50c8d14b158551d09/pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35cffef589bcdc587d06f9149f8d5e9e8859920a071df5a2671de2213bef592a", size = 565698, upload-time = "2024-08-22T09:01:54.381Z" }, - { url = "https://files.pythonhosted.org/packages/77/21/c3ad93236d1d60eea10b67528f55e7db115a9d32e2bf163fcf601f85e9cc/pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18c8dc3b7468d8b4bdf60ce9d7141897da103c7a4690157b32b60acb45e333e6", size = 794307, upload-time = "2024-08-22T09:01:55.876Z" }, - { url = "https://files.pythonhosted.org/packages/6a/49/e95b491724500fcb760178ce8db39b923429e328e57bcf9162e32c2c187c/pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7133d0a1677aec369d67dd78520d3fa96dd7f3dcec99d66c1762870e5ea1a50a", size = 752769, upload-time = "2024-08-22T09:01:57.636Z" }, - { url = "https://files.pythonhosted.org/packages/9b/a9/50c9c06762b30792f71aaad8d1886748d39c4bffedc1171fbc6ad2b92d67/pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a96179a24b14fa6428cbfc08641c779a53f8fcec43644030328f44034c7f1f4", size = 751338, upload-time = "2024-08-22T09:01:59.666Z" }, - { url = "https://files.pythonhosted.org/packages/ca/63/27e6142b4f67a442ee480986ca5b88edb01462dd2319843057683a5148bd/pyzmq-26.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4f78c88905461a9203eac9faac157a2a0dbba84a0fd09fd29315db27be40af9f", size = 550757, upload-time = "2024-08-22T09:02:01.576Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/04/0b/3c9baedbdf613ecaa7aa07027780b8867f57b6293b6ee50de316c9f3222b/pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540", size = 281750, upload-time = "2025-09-08T23:10:18.157Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/b9/52aa9ec2867528b54f1e60846728d8b4d84726630874fee3a91e66c7df81/pyzmq-27.1.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:508e23ec9bc44c0005c4946ea013d9317ae00ac67778bd47519fdf5a0e930ff4", size = 1329850, upload-time = "2025-09-08T23:07:26.274Z" }, + { url = "https://files.pythonhosted.org/packages/99/64/5653e7b7425b169f994835a2b2abf9486264401fdef18df91ddae47ce2cc/pyzmq-27.1.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:507b6f430bdcf0ee48c0d30e734ea89ce5567fd7b8a0f0044a369c176aa44556", size = 906380, upload-time = "2025-09-08T23:07:29.78Z" }, + { url = "https://files.pythonhosted.org/packages/73/78/7d713284dbe022f6440e391bd1f3c48d9185673878034cfb3939cdf333b2/pyzmq-27.1.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf7b38f9fd7b81cb6d9391b2946382c8237fd814075c6aa9c3b746d53076023b", size = 666421, upload-time = "2025-09-08T23:07:31.263Z" }, + { url = "https://files.pythonhosted.org/packages/30/76/8f099f9d6482450428b17c4d6b241281af7ce6a9de8149ca8c1c649f6792/pyzmq-27.1.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03ff0b279b40d687691a6217c12242ee71f0fba28bf8626ff50e3ef0f4410e1e", size = 854149, upload-time = "2025-09-08T23:07:33.17Z" }, + { url = "https://files.pythonhosted.org/packages/59/f0/37fbfff06c68016019043897e4c969ceab18bde46cd2aca89821fcf4fb2e/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:677e744fee605753eac48198b15a2124016c009a11056f93807000ab11ce6526", size = 1655070, upload-time = "2025-09-08T23:07:35.205Z" }, + { url = "https://files.pythonhosted.org/packages/47/14/7254be73f7a8edc3587609554fcaa7bfd30649bf89cd260e4487ca70fdaa/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dd2fec2b13137416a1c5648b7009499bcc8fea78154cd888855fa32514f3dad1", size = 2033441, upload-time = "2025-09-08T23:07:37.432Z" }, + { url = "https://files.pythonhosted.org/packages/22/dc/49f2be26c6f86f347e796a4d99b19167fc94503f0af3fd010ad262158822/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:08e90bb4b57603b84eab1d0ca05b3bbb10f60c1839dc471fc1c9e1507bef3386", size = 1891529, upload-time = "2025-09-08T23:07:39.047Z" }, + { url = "https://files.pythonhosted.org/packages/a3/3e/154fb963ae25be70c0064ce97776c937ecc7d8b0259f22858154a9999769/pyzmq-27.1.0-cp310-cp310-win32.whl", hash = "sha256:a5b42d7a0658b515319148875fcb782bbf118dd41c671b62dae33666c2213bda", size = 567276, upload-time = "2025-09-08T23:07:40.695Z" }, + { url = "https://files.pythonhosted.org/packages/62/b2/f4ab56c8c595abcb26b2be5fd9fa9e6899c1e5ad54964e93ae8bb35482be/pyzmq-27.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:c0bb87227430ee3aefcc0ade2088100e528d5d3298a0a715a64f3d04c60ba02f", size = 632208, upload-time = "2025-09-08T23:07:42.298Z" }, + { url = "https://files.pythonhosted.org/packages/3b/e3/be2cc7ab8332bdac0522fdb64c17b1b6241a795bee02e0196636ec5beb79/pyzmq-27.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:9a916f76c2ab8d045b19f2286851a38e9ac94ea91faf65bd64735924522a8b32", size = 559766, upload-time = "2025-09-08T23:07:43.869Z" }, + { url = "https://files.pythonhosted.org/packages/06/5d/305323ba86b284e6fcb0d842d6adaa2999035f70f8c38a9b6d21ad28c3d4/pyzmq-27.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:226b091818d461a3bef763805e75685e478ac17e9008f49fce2d3e52b3d58b86", size = 1333328, upload-time = "2025-09-08T23:07:45.946Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a0/fc7e78a23748ad5443ac3275943457e8452da67fda347e05260261108cbc/pyzmq-27.1.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:0790a0161c281ca9723f804871b4027f2e8b5a528d357c8952d08cd1a9c15581", size = 908803, upload-time = "2025-09-08T23:07:47.551Z" }, + { url = "https://files.pythonhosted.org/packages/7e/22/37d15eb05f3bdfa4abea6f6d96eb3bb58585fbd3e4e0ded4e743bc650c97/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c895a6f35476b0c3a54e3eb6ccf41bf3018de937016e6e18748317f25d4e925f", size = 668836, upload-time = "2025-09-08T23:07:49.436Z" }, + { url = "https://files.pythonhosted.org/packages/b1/c4/2a6fe5111a01005fc7af3878259ce17684fabb8852815eda6225620f3c59/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bbf8d3630bf96550b3be8e1fc0fea5cbdc8d5466c1192887bd94869da17a63e", size = 857038, upload-time = "2025-09-08T23:07:51.234Z" }, + { url = "https://files.pythonhosted.org/packages/cb/eb/bfdcb41d0db9cd233d6fb22dc131583774135505ada800ebf14dfb0a7c40/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15c8bd0fe0dabf808e2d7a681398c4e5ded70a551ab47482067a572c054c8e2e", size = 1657531, upload-time = "2025-09-08T23:07:52.795Z" }, + { url = "https://files.pythonhosted.org/packages/ab/21/e3180ca269ed4a0de5c34417dfe71a8ae80421198be83ee619a8a485b0c7/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bafcb3dd171b4ae9f19ee6380dfc71ce0390fefaf26b504c0e5f628d7c8c54f2", size = 2034786, upload-time = "2025-09-08T23:07:55.047Z" }, + { url = "https://files.pythonhosted.org/packages/3b/b1/5e21d0b517434b7f33588ff76c177c5a167858cc38ef740608898cd329f2/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e829529fcaa09937189178115c49c504e69289abd39967cd8a4c215761373394", size = 1894220, upload-time = "2025-09-08T23:07:57.172Z" }, + { url = "https://files.pythonhosted.org/packages/03/f2/44913a6ff6941905efc24a1acf3d3cb6146b636c546c7406c38c49c403d4/pyzmq-27.1.0-cp311-cp311-win32.whl", hash = "sha256:6df079c47d5902af6db298ec92151db82ecb557af663098b92f2508c398bb54f", size = 567155, upload-time = "2025-09-08T23:07:59.05Z" }, + { url = "https://files.pythonhosted.org/packages/23/6d/d8d92a0eb270a925c9b4dd039c0b4dc10abc2fcbc48331788824ef113935/pyzmq-27.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:190cbf120fbc0fc4957b56866830def56628934a9d112aec0e2507aa6a032b97", size = 633428, upload-time = "2025-09-08T23:08:00.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/14/01afebc96c5abbbd713ecfc7469cfb1bc801c819a74ed5c9fad9a48801cb/pyzmq-27.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:eca6b47df11a132d1745eb3b5b5e557a7dae2c303277aa0e69c6ba91b8736e07", size = 559497, upload-time = "2025-09-08T23:08:02.15Z" }, + { url = "https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc", size = 1306279, upload-time = "2025-09-08T23:08:03.807Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5e/c3c49fdd0f535ef45eefcc16934648e9e59dace4a37ee88fc53f6cd8e641/pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113", size = 895645, upload-time = "2025-09-08T23:08:05.301Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e5/b0b2504cb4e903a74dcf1ebae157f9e20ebb6ea76095f6cfffea28c42ecd/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233", size = 652574, upload-time = "2025-09-08T23:08:06.828Z" }, + { url = "https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31", size = 840995, upload-time = "2025-09-08T23:08:08.396Z" }, + { url = "https://files.pythonhosted.org/packages/c2/bb/b79798ca177b9eb0825b4c9998c6af8cd2a7f15a6a1a4272c1d1a21d382f/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28", size = 1642070, upload-time = "2025-09-08T23:08:09.989Z" }, + { url = "https://files.pythonhosted.org/packages/9c/80/2df2e7977c4ede24c79ae39dcef3899bfc5f34d1ca7a5b24f182c9b7a9ca/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856", size = 2021121, upload-time = "2025-09-08T23:08:11.907Z" }, + { url = "https://files.pythonhosted.org/packages/46/bd/2d45ad24f5f5ae7e8d01525eb76786fa7557136555cac7d929880519e33a/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496", size = 1878550, upload-time = "2025-09-08T23:08:13.513Z" }, + { url = "https://files.pythonhosted.org/packages/e6/2f/104c0a3c778d7c2ab8190e9db4f62f0b6957b53c9d87db77c284b69f33ea/pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd", size = 559184, upload-time = "2025-09-08T23:08:15.163Z" }, + { url = "https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf", size = 619480, upload-time = "2025-09-08T23:08:17.192Z" }, + { url = "https://files.pythonhosted.org/packages/78/c2/c012beae5f76b72f007a9e91ee9401cb88c51d0f83c6257a03e785c81cc2/pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f", size = 552993, upload-time = "2025-09-08T23:08:18.926Z" }, + { url = "https://files.pythonhosted.org/packages/60/cb/84a13459c51da6cec1b7b1dc1a47e6db6da50b77ad7fd9c145842750a011/pyzmq-27.1.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5", size = 1122436, upload-time = "2025-09-08T23:08:20.801Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b6/94414759a69a26c3dd674570a81813c46a078767d931a6c70ad29fc585cb/pyzmq-27.1.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6", size = 1156301, upload-time = "2025-09-08T23:08:22.47Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ad/15906493fd40c316377fd8a8f6b1f93104f97a752667763c9b9c1b71d42d/pyzmq-27.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7", size = 1341197, upload-time = "2025-09-08T23:08:24.286Z" }, + { url = "https://files.pythonhosted.org/packages/14/1d/d343f3ce13db53a54cb8946594e567410b2125394dafcc0268d8dda027e0/pyzmq-27.1.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05", size = 897275, upload-time = "2025-09-08T23:08:26.063Z" }, + { url = "https://files.pythonhosted.org/packages/69/2d/d83dd6d7ca929a2fc67d2c3005415cdf322af7751d773524809f9e585129/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9", size = 660469, upload-time = "2025-09-08T23:08:27.623Z" }, + { url = "https://files.pythonhosted.org/packages/3e/cd/9822a7af117f4bc0f1952dbe9ef8358eb50a24928efd5edf54210b850259/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128", size = 847961, upload-time = "2025-09-08T23:08:29.672Z" }, + { url = "https://files.pythonhosted.org/packages/9a/12/f003e824a19ed73be15542f172fd0ec4ad0b60cf37436652c93b9df7c585/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39", size = 1650282, upload-time = "2025-09-08T23:08:31.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4a/e82d788ed58e9a23995cee70dbc20c9aded3d13a92d30d57ec2291f1e8a3/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97", size = 2024468, upload-time = "2025-09-08T23:08:33.543Z" }, + { url = "https://files.pythonhosted.org/packages/d9/94/2da0a60841f757481e402b34bf4c8bf57fa54a5466b965de791b1e6f747d/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db", size = 1885394, upload-time = "2025-09-08T23:08:35.51Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6f/55c10e2e49ad52d080dc24e37adb215e5b0d64990b57598abc2e3f01725b/pyzmq-27.1.0-cp313-cp313t-win32.whl", hash = "sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c", size = 574964, upload-time = "2025-09-08T23:08:37.178Z" }, + { url = "https://files.pythonhosted.org/packages/87/4d/2534970ba63dd7c522d8ca80fb92777f362c0f321900667c615e2067cb29/pyzmq-27.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2", size = 641029, upload-time = "2025-09-08T23:08:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/f6/fa/f8aea7a28b0641f31d40dea42d7ef003fded31e184ef47db696bc74cd610/pyzmq-27.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e", size = 561541, upload-time = "2025-09-08T23:08:42.668Z" }, + { url = "https://files.pythonhosted.org/packages/87/45/19efbb3000956e82d0331bafca5d9ac19ea2857722fa2caacefb6042f39d/pyzmq-27.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a", size = 1341197, upload-time = "2025-09-08T23:08:44.973Z" }, + { url = "https://files.pythonhosted.org/packages/48/43/d72ccdbf0d73d1343936296665826350cb1e825f92f2db9db3e61c2162a2/pyzmq-27.1.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea", size = 897175, upload-time = "2025-09-08T23:08:46.601Z" }, + { url = "https://files.pythonhosted.org/packages/2f/2e/a483f73a10b65a9ef0161e817321d39a770b2acf8bcf3004a28d90d14a94/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96", size = 660427, upload-time = "2025-09-08T23:08:48.187Z" }, + { url = "https://files.pythonhosted.org/packages/f5/d2/5f36552c2d3e5685abe60dfa56f91169f7a2d99bbaf67c5271022ab40863/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d", size = 847929, upload-time = "2025-09-08T23:08:49.76Z" }, + { url = "https://files.pythonhosted.org/packages/c4/2a/404b331f2b7bf3198e9945f75c4c521f0c6a3a23b51f7a4a401b94a13833/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146", size = 1650193, upload-time = "2025-09-08T23:08:51.7Z" }, + { url = "https://files.pythonhosted.org/packages/1c/0b/f4107e33f62a5acf60e3ded67ed33d79b4ce18de432625ce2fc5093d6388/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd", size = 2024388, upload-time = "2025-09-08T23:08:53.393Z" }, + { url = "https://files.pythonhosted.org/packages/0d/01/add31fe76512642fd6e40e3a3bd21f4b47e242c8ba33efb6809e37076d9b/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a", size = 1885316, upload-time = "2025-09-08T23:08:55.702Z" }, + { url = "https://files.pythonhosted.org/packages/c4/59/a5f38970f9bf07cee96128de79590bb354917914a9be11272cfc7ff26af0/pyzmq-27.1.0-cp314-cp314t-win32.whl", hash = "sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92", size = 587472, upload-time = "2025-09-08T23:08:58.18Z" }, + { url = "https://files.pythonhosted.org/packages/70/d8/78b1bad170f93fcf5e3536e70e8fadac55030002275c9a29e8f5719185de/pyzmq-27.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0", size = 661401, upload-time = "2025-09-08T23:08:59.802Z" }, + { url = "https://files.pythonhosted.org/packages/81/d6/4bfbb40c9a0b42fc53c7cf442f6385db70b40f74a783130c5d0a5aa62228/pyzmq-27.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7", size = 575170, upload-time = "2025-09-08T23:09:01.418Z" }, + { url = "https://files.pythonhosted.org/packages/f3/81/a65e71c1552f74dec9dff91d95bafb6e0d33338a8dfefbc88aa562a20c92/pyzmq-27.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c17e03cbc9312bee223864f1a2b13a99522e0dc9f7c5df0177cd45210ac286e6", size = 836266, upload-time = "2025-09-08T23:09:40.048Z" }, + { url = "https://files.pythonhosted.org/packages/58/ed/0202ca350f4f2b69faa95c6d931e3c05c3a397c184cacb84cb4f8f42f287/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:f328d01128373cb6763823b2b4e7f73bdf767834268c565151eacb3b7a392f90", size = 800206, upload-time = "2025-09-08T23:09:41.902Z" }, + { url = "https://files.pythonhosted.org/packages/47/42/1ff831fa87fe8f0a840ddb399054ca0009605d820e2b44ea43114f5459f4/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c1790386614232e1b3a40a958454bdd42c6d1811837b15ddbb052a032a43f62", size = 567747, upload-time = "2025-09-08T23:09:43.741Z" }, + { url = "https://files.pythonhosted.org/packages/d1/db/5c4d6807434751e3f21231bee98109aa57b9b9b55e058e450d0aef59b70f/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:448f9cb54eb0cee4732b46584f2710c8bc178b0e5371d9e4fc8125201e413a74", size = 747371, upload-time = "2025-09-08T23:09:45.575Z" }, + { url = "https://files.pythonhosted.org/packages/26/af/78ce193dbf03567eb8c0dc30e3df2b9e56f12a670bf7eb20f9fb532c7e8a/pyzmq-27.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:05b12f2d32112bf8c95ef2e74ec4f1d4beb01f8b5e703b38537f8849f92cb9ba", size = 544862, upload-time = "2025-09-08T23:09:47.448Z" }, + { url = "https://files.pythonhosted.org/packages/4c/c6/c4dcdecdbaa70969ee1fdced6d7b8f60cfabe64d25361f27ac4665a70620/pyzmq-27.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:18770c8d3563715387139060d37859c02ce40718d1faf299abddcdcc6a649066", size = 836265, upload-time = "2025-09-08T23:09:49.376Z" }, + { url = "https://files.pythonhosted.org/packages/3e/79/f38c92eeaeb03a2ccc2ba9866f0439593bb08c5e3b714ac1d553e5c96e25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ac25465d42f92e990f8d8b0546b01c391ad431c3bf447683fdc40565941d0604", size = 800208, upload-time = "2025-09-08T23:09:51.073Z" }, + { url = "https://files.pythonhosted.org/packages/49/0e/3f0d0d335c6b3abb9b7b723776d0b21fa7f3a6c819a0db6097059aada160/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53b40f8ae006f2734ee7608d59ed661419f087521edbfc2149c3932e9c14808c", size = 567747, upload-time = "2025-09-08T23:09:52.698Z" }, + { url = "https://files.pythonhosted.org/packages/a1/cf/f2b3784d536250ffd4be70e049f3b60981235d70c6e8ce7e3ef21e1adb25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f605d884e7c8be8fe1aa94e0a783bf3f591b84c24e4bc4f3e7564c82ac25e271", size = 747371, upload-time = "2025-09-08T23:09:54.563Z" }, + { url = "https://files.pythonhosted.org/packages/01/1b/5dbe84eefc86f48473947e2f41711aded97eecef1231f4558f1f02713c12/pyzmq-27.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c9f7f6e13dff2e44a6afeaf2cf54cee5929ad64afaf4d40b50f93c58fc687355", size = 544862, upload-time = "2025-09-08T23:09:56.509Z" }, ] [[package]] name = "referencing" -version = "0.35.1" +version = "0.37.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/5b/73ca1f8e72fff6fa52119dbd185f73a907b1989428917b24cff660129b6d/referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c", size = 62991, upload-time = "2024-05-01T20:26:04.574Z" } +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/59/2056f61236782a2c86b33906c025d4f4a0b17be0161b63b70fd9e8775d36/referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de", size = 26684, upload-time = "2024-05-01T20:26:02.078Z" }, + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, ] [[package]] name = "requests" -version = "2.32.4" +version = "2.32.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, { name = "charset-normalizer" }, { name = "idna" }, - { name = "urllib3", version = "2.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, +] + +[[package]] +name = "roman-numerals" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/f9/41dc953bbeb056c17d5f7a519f50fdf010bd0553be2d630bc69d1e022703/roman_numerals-4.1.0.tar.gz", hash = "sha256:1af8b147eb1405d5839e78aeb93131690495fe9da5c91856cb33ad55a7f1e5b2", size = 9077, upload-time = "2025-12-17T18:25:34.381Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl", hash = "sha256:647ba99caddc2cc1e55a51e4360689115551bf4476d90e8162cf8c345fe233c7", size = 7676, upload-time = "2025-12-17T18:25:33.098Z" }, ] [[package]] name = "rpds-py" -version = "0.20.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/55/64/b693f262791b818880d17268f3f8181ef799b0d187f6f731b1772e05a29a/rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121", size = 25814, upload-time = "2024-08-06T17:01:23.777Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/71/2d/a7e60483b72b91909e18f29a5c5ae847bac4e2ae95b77bb77e1f41819a58/rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2", size = 318432, upload-time = "2024-08-06T16:58:12.763Z" }, - { url = "https://files.pythonhosted.org/packages/b5/b4/f15b0c55a6d880ce74170e7e28c3ed6c5acdbbd118df50b91d1dabf86008/rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f", size = 311333, upload-time = "2024-08-06T16:58:14.776Z" }, - { url = "https://files.pythonhosted.org/packages/36/10/3f4e490fe6eb069c07c22357d0b4804cd94cb9f8d01345ef9b1d93482b9d/rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150", size = 366697, upload-time = "2024-08-06T16:58:16.195Z" }, - { url = "https://files.pythonhosted.org/packages/f5/c8/cd6ab31b4424c7fab3b17e153b6ea7d1bb0d7cabea5c1ef683cc8adb8bc2/rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e", size = 368386, upload-time = "2024-08-06T16:58:17.87Z" }, - { url = "https://files.pythonhosted.org/packages/60/5e/642a44fda6dda90b5237af7a0ef1d088159c30a504852b94b0396eb62125/rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2", size = 395374, upload-time = "2024-08-06T16:58:19.396Z" }, - { url = "https://files.pythonhosted.org/packages/7c/b5/ff18c093c9e72630f6d6242e5ccb0728ef8265ba0a154b5972f89d23790a/rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3", size = 433189, upload-time = "2024-08-06T16:58:21.337Z" }, - { url = "https://files.pythonhosted.org/packages/4a/6d/1166a157b227f2333f8e8ae320b6b7ea2a6a38fbe7a3563ad76dffc8608d/rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf", size = 354849, upload-time = "2024-08-06T16:58:22.742Z" }, - { url = "https://files.pythonhosted.org/packages/70/a4/70ea49863ea09ae4c2971f2eef58e80b757e3c0f2f618c5815bb751f7847/rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140", size = 373233, upload-time = "2024-08-06T16:58:24.793Z" }, - { url = "https://files.pythonhosted.org/packages/3b/d3/822a28152a1e7e2ba0dc5d06cf8736f4cd64b191bb6ec47fb51d1c3c5ccf/rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f", size = 541852, upload-time = "2024-08-06T16:58:27.867Z" }, - { url = "https://files.pythonhosted.org/packages/c6/a5/6ef91e4425dc8b3445ff77d292fc4c5e37046462434a0423c4e0a596a8bd/rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce", size = 547630, upload-time = "2024-08-06T16:58:29.852Z" }, - { url = "https://files.pythonhosted.org/packages/72/f8/d5625ee05c4e5c478954a16d9359069c66fe8ac8cd5ddf28f80d3b321837/rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94", size = 525766, upload-time = "2024-08-06T16:58:31.851Z" }, - { url = "https://files.pythonhosted.org/packages/94/3c/1ff1ed6ae323b3e16fdfcdae0f0a67f373a6c3d991229dc32b499edeffb7/rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee", size = 199174, upload-time = "2024-08-06T16:58:33.769Z" }, - { url = "https://files.pythonhosted.org/packages/ec/ba/5762c0aee2403dfea14ed74b0f8a2415cfdbb21cf745d600d9a8ac952c5b/rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399", size = 213543, upload-time = "2024-08-06T16:58:35.172Z" }, - { url = "https://files.pythonhosted.org/packages/ab/2a/191374c52d7be0b056cc2a04d718d2244c152f915d4a8d2db2aacc526189/rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489", size = 318369, upload-time = "2024-08-06T16:58:36.944Z" }, - { url = "https://files.pythonhosted.org/packages/0e/6a/2c9fdcc6d235ac0d61ec4fd9981184689c3e682abd05e3caa49bccb9c298/rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318", size = 311303, upload-time = "2024-08-06T16:58:38.361Z" }, - { url = "https://files.pythonhosted.org/packages/d2/b2/725487d29633f64ef8f9cbf4729111a0b61702c8f8e94db1653930f52cce/rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db", size = 366424, upload-time = "2024-08-06T16:58:39.765Z" }, - { url = "https://files.pythonhosted.org/packages/7a/8c/668195ab9226d01b7cf7cd9e59c1c0be1df05d602df7ec0cf46f857dcf59/rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5", size = 368359, upload-time = "2024-08-06T16:58:41.548Z" }, - { url = "https://files.pythonhosted.org/packages/52/28/356f6a39c1adeb02cf3e5dd526f5e8e54e17899bef045397abcfbf50dffa/rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5", size = 394886, upload-time = "2024-08-06T16:58:42.859Z" }, - { url = "https://files.pythonhosted.org/packages/a2/65/640fb1a89080a8fb6f4bebd3dafb65a2edba82e2e44c33e6eb0f3e7956f1/rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6", size = 432416, upload-time = "2024-08-06T16:58:44.753Z" }, - { url = "https://files.pythonhosted.org/packages/a7/e8/85835077b782555d6b3416874b702ea6ebd7db1f145283c9252968670dd5/rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209", size = 354819, upload-time = "2024-08-06T16:58:46.409Z" }, - { url = "https://files.pythonhosted.org/packages/4f/87/1ac631e923d65cbf36fbcfc6eaa702a169496de1311e54be142f178e53ee/rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3", size = 373282, upload-time = "2024-08-06T16:58:48.469Z" }, - { url = "https://files.pythonhosted.org/packages/e4/ce/cb316f7970189e217b998191c7cf0da2ede3d5437932c86a7210dc1e9994/rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272", size = 541540, upload-time = "2024-08-06T16:58:50.433Z" }, - { url = "https://files.pythonhosted.org/packages/90/d7/4112d7655ec8aff168ecc91d4ceb51c557336edde7e6ccf6463691a2f253/rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad", size = 547640, upload-time = "2024-08-06T16:58:51.857Z" }, - { url = "https://files.pythonhosted.org/packages/ab/44/4f61d64dfed98cc71623f3a7fcb612df636a208b4b2c6611eaa985e130a9/rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58", size = 525555, upload-time = "2024-08-06T16:58:53.568Z" }, - { url = "https://files.pythonhosted.org/packages/35/f2/a862d81eacb21f340d584cd1c749c289979f9a60e9229f78bffc0418a199/rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0", size = 199338, upload-time = "2024-08-06T16:58:55.548Z" }, - { url = "https://files.pythonhosted.org/packages/cc/ec/77d0674f9af4872919f3738018558dd9d37ad3f7ad792d062eadd4af7cba/rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c", size = 213585, upload-time = "2024-08-06T16:58:56.858Z" }, - { url = "https://files.pythonhosted.org/packages/89/b7/f9682c5cc37fcc035f4a0fc33c1fe92ec9cbfdee0cdfd071cf948f53e0df/rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6", size = 321468, upload-time = "2024-08-06T16:58:58.143Z" }, - { url = "https://files.pythonhosted.org/packages/b8/ad/fc82be4eaceb8d444cb6fc1956ce972b3a0795104279de05e0e4131d0a47/rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b", size = 313062, upload-time = "2024-08-06T16:59:00.586Z" }, - { url = "https://files.pythonhosted.org/packages/0e/1c/6039e80b13a08569a304dc13476dc986352dca4598e909384db043b4e2bb/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739", size = 370168, upload-time = "2024-08-06T16:59:02.104Z" }, - { url = "https://files.pythonhosted.org/packages/dc/c9/5b9aa35acfb58946b4b785bc8e700ac313669e02fb100f3efa6176a83e81/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c", size = 371376, upload-time = "2024-08-06T16:59:03.894Z" }, - { url = "https://files.pythonhosted.org/packages/7b/dd/0e0dbeb70d8a5357d2814764d467ded98d81d90d3570de4fb05ec7224f6b/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee", size = 397200, upload-time = "2024-08-06T16:59:05.445Z" }, - { url = "https://files.pythonhosted.org/packages/e4/da/a47d931eb688ccfd77a7389e45935c79c41e8098d984d87335004baccb1d/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96", size = 426824, upload-time = "2024-08-06T16:59:07.329Z" }, - { url = "https://files.pythonhosted.org/packages/0f/f7/a59a673594e6c2ff2dbc44b00fd4ecdec2fc399bb6a7bd82d612699a0121/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4", size = 357967, upload-time = "2024-08-06T16:59:08.898Z" }, - { url = "https://files.pythonhosted.org/packages/5f/61/3ba1905396b2cb7088f9503a460b87da33452da54d478cb9241f6ad16d00/rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef", size = 378905, upload-time = "2024-08-06T16:59:10.503Z" }, - { url = "https://files.pythonhosted.org/packages/08/31/6d0df9356b4edb0a3a077f1ef714e25ad21f9f5382fc490c2383691885ea/rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821", size = 546348, upload-time = "2024-08-06T16:59:12.582Z" }, - { url = "https://files.pythonhosted.org/packages/ae/15/d33c021de5cb793101df9961c3c746dfc476953dbbf5db337d8010dffd4e/rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940", size = 553152, upload-time = "2024-08-06T16:59:14.472Z" }, - { url = "https://files.pythonhosted.org/packages/70/2d/5536d28c507a4679179ab15aa0049440e4d3dd6752050fa0843ed11e9354/rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174", size = 528807, upload-time = "2024-08-06T16:59:16.401Z" }, - { url = "https://files.pythonhosted.org/packages/e3/62/7ebe6ec0d3dd6130921f8cffb7e34afb7f71b3819aa0446a24c5e81245ec/rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139", size = 200993, upload-time = "2024-08-06T16:59:18.083Z" }, - { url = "https://files.pythonhosted.org/packages/ec/2f/b938864d66b86a6e4acadefdc56de75ef56f7cafdfd568a6464605457bd5/rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585", size = 214458, upload-time = "2024-08-06T16:59:19.783Z" }, - { url = "https://files.pythonhosted.org/packages/99/32/43b919a0a423c270a838ac2726b1c7168b946f2563fd99a51aaa9692d00f/rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29", size = 321465, upload-time = "2024-08-06T16:59:21.899Z" }, - { url = "https://files.pythonhosted.org/packages/58/a9/c4d899cb28e9e47b0ff12462e8f827381f243176036f17bef9c1604667f2/rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91", size = 312900, upload-time = "2024-08-06T16:59:23.566Z" }, - { url = "https://files.pythonhosted.org/packages/8f/90/9e51670575b5dfaa8c823369ef7d943087bfb73d4f124a99ad6ef19a2b26/rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24", size = 370973, upload-time = "2024-08-06T16:59:25.396Z" }, - { url = "https://files.pythonhosted.org/packages/fc/c1/523f2a03f853fc0d4c1acbef161747e9ab7df0a8abf6236106e333540921/rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7", size = 370890, upload-time = "2024-08-06T16:59:27.407Z" }, - { url = "https://files.pythonhosted.org/packages/51/ca/2458a771f16b0931de4d384decbe43016710bc948036c8f4562d6e063437/rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9", size = 397174, upload-time = "2024-08-06T16:59:29.047Z" }, - { url = "https://files.pythonhosted.org/packages/00/7d/6e06807f6305ea2408b364efb0eef83a6e21b5e7b5267ad6b473b9a7e416/rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8", size = 426449, upload-time = "2024-08-06T16:59:30.558Z" }, - { url = "https://files.pythonhosted.org/packages/8c/d1/6c9e65260a819a1714510a7d69ac1d68aa23ee9ce8a2d9da12187263c8fc/rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879", size = 357698, upload-time = "2024-08-06T16:59:32.77Z" }, - { url = "https://files.pythonhosted.org/packages/5d/fb/ecea8b5286d2f03eec922be7173a03ed17278944f7c124348f535116db15/rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f", size = 378530, upload-time = "2024-08-06T16:59:34.282Z" }, - { url = "https://files.pythonhosted.org/packages/e3/e3/ac72f858957f52a109c588589b73bd2fad4a0fc82387fb55fb34aeb0f9cd/rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c", size = 545753, upload-time = "2024-08-06T16:59:35.783Z" }, - { url = "https://files.pythonhosted.org/packages/b2/a4/a27683b519d5fc98e4390a3b130117d80fd475c67aeda8aac83c0e8e326a/rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2", size = 552443, upload-time = "2024-08-06T16:59:37.772Z" }, - { url = "https://files.pythonhosted.org/packages/a1/ed/c074d248409b4432b1ccb2056974175fa0af2d1bc1f9c21121f80a358fa3/rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57", size = 528380, upload-time = "2024-08-06T16:59:39.528Z" }, - { url = "https://files.pythonhosted.org/packages/d5/bd/04caf938895d2d78201e89c0c8a94dfd9990c34a19ff52fb01d0912343e3/rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a", size = 200540, upload-time = "2024-08-06T16:59:41.065Z" }, - { url = "https://files.pythonhosted.org/packages/95/cc/109eb8b9863680411ae703664abacaa035820c7755acc9686d5dd02cdd2e/rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2", size = 214111, upload-time = "2024-08-06T16:59:42.679Z" }, - { url = "https://files.pythonhosted.org/packages/37/cf/0081318cde7d7e89f802b4939ec8d079d7b59b0ee3fc168435bde31e861c/rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24", size = 319397, upload-time = "2024-08-06T16:59:44.141Z" }, - { url = "https://files.pythonhosted.org/packages/09/4e/ea988bb4fe0f39613dd2b868fc698c19fd970e33dfe4f1bd90658f94fed3/rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29", size = 311674, upload-time = "2024-08-06T16:59:46.29Z" }, - { url = "https://files.pythonhosted.org/packages/9e/38/d4a1f901068dfcb51183266a91bcef614f616d4d820a4dd288ccaff83cbb/rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965", size = 367607, upload-time = "2024-08-06T16:59:48.067Z" }, - { url = "https://files.pythonhosted.org/packages/7a/e3/dc75f3f118f3dc29be962f68729b2d203be9ad52ad34b1ae907c60271302/rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1", size = 367870, upload-time = "2024-08-06T16:59:49.566Z" }, - { url = "https://files.pythonhosted.org/packages/8d/23/2b6acbc76fddb7f89ef2382f136a7a4cf10e078e6e149508a59d7448e2e1/rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752", size = 395245, upload-time = "2024-08-06T16:59:51.103Z" }, - { url = "https://files.pythonhosted.org/packages/53/21/9d405f690986f0215d655c2980de10f63c073e66c56bd5f4d039214d1624/rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c", size = 431699, upload-time = "2024-08-06T16:59:52.622Z" }, - { url = "https://files.pythonhosted.org/packages/88/9d/07fedb6afebe0fe6f1c2981223ffa82c3ff3cc09ffeab8c9859b4852d7e3/rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751", size = 355123, upload-time = "2024-08-06T16:59:54.155Z" }, - { url = "https://files.pythonhosted.org/packages/16/80/857ed7ca6dbb33805f2c8298868d029f9cf0a06f182d7058c8484b47941b/rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8", size = 373349, upload-time = "2024-08-06T16:59:56.073Z" }, - { url = "https://files.pythonhosted.org/packages/97/69/ae242d3c59f04ca3f56d9dbd768e7cabfc093cfb9e030dfc8fbd7fadbc4d/rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e", size = 542737, upload-time = "2024-08-06T16:59:57.775Z" }, - { url = "https://files.pythonhosted.org/packages/9f/c1/06d6c461c41e73c8187471595ce1c9a67c280d533fbd705889e6a0e9da2f/rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253", size = 547562, upload-time = "2024-08-06T16:59:59.614Z" }, - { url = "https://files.pythonhosted.org/packages/1c/0b/918acbb2aa360822f18c6bc8672ee3c231d357f55d5e7f980d8207360742/rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a", size = 525769, upload-time = "2024-08-06T17:00:01.671Z" }, - { url = "https://files.pythonhosted.org/packages/0e/7f/446eb1f1ed22ca855e3966e1b97e10f68f3a40578d9596a4b83323456cef/rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5", size = 199321, upload-time = "2024-08-06T17:00:03.74Z" }, - { url = "https://files.pythonhosted.org/packages/3d/c7/ae73dfcf417fa1bb087341b670083afc3228d6a496d0d2221afd5b20d95f/rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232", size = 213048, upload-time = "2024-08-06T17:00:05.447Z" }, - { url = "https://files.pythonhosted.org/packages/a1/55/228f6d9a8c6940c8d5e49db5e0434ffcbad669c33509ac39cb0af061b0fa/rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22", size = 319496, upload-time = "2024-08-06T17:00:07.167Z" }, - { url = "https://files.pythonhosted.org/packages/68/61/074236253586feb550954f8b4359d38eefb45bafcbbb7d2e74062a82f386/rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789", size = 311837, upload-time = "2024-08-06T17:00:08.973Z" }, - { url = "https://files.pythonhosted.org/packages/03/67/ed6c2fe076bf78296934d4356145fedf3c7c2f8d490e099bcf6f31794dc0/rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5", size = 367819, upload-time = "2024-08-06T17:00:10.604Z" }, - { url = "https://files.pythonhosted.org/packages/30/25/4a9e7b89b6760ac032f375cb236e4f8e518ad1fad685c40b6a9752056d6f/rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2", size = 368322, upload-time = "2024-08-06T17:00:12.342Z" }, - { url = "https://files.pythonhosted.org/packages/67/17/0255bb0e564517b53343ea672ebec9fb7ad40e9083ca09a4080fbc986bb9/rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c", size = 395552, upload-time = "2024-08-06T17:00:14.156Z" }, - { url = "https://files.pythonhosted.org/packages/af/6e/77c65ccb0d7cdc39ec2be19b918a4d4fe9e2d2a1c5cab36745b36f2c1e59/rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de", size = 433735, upload-time = "2024-08-06T17:00:16.395Z" }, - { url = "https://files.pythonhosted.org/packages/04/d8/e73d56b1908a6c0e3e5982365eb293170cd458cc25a19363f69c76e00fd2/rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda", size = 355542, upload-time = "2024-08-06T17:00:18.424Z" }, - { url = "https://files.pythonhosted.org/packages/47/df/e72c79053b0c882b818bfd8f0ed1f1ace550bc9cdba27165cb73dddb9394/rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580", size = 373644, upload-time = "2024-08-06T17:00:21.421Z" }, - { url = "https://files.pythonhosted.org/packages/7f/00/3e16cb08c0cc6a233f0f61e4d009e3098cbe280ec975d14f28935bd15316/rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b", size = 543139, upload-time = "2024-08-06T17:00:23.632Z" }, - { url = "https://files.pythonhosted.org/packages/41/71/799c6b6f6031ed535f22fcf6802601cc7f981842bd28007bb7bb4bd10b2f/rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420", size = 548007, upload-time = "2024-08-06T17:00:25.216Z" }, - { url = "https://files.pythonhosted.org/packages/53/58/ad03eb6718e814fa045198c72d45d2ae60180eb48338f22c9fa34bd89964/rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b", size = 526102, upload-time = "2024-08-06T17:00:26.993Z" }, - { url = "https://files.pythonhosted.org/packages/78/99/a52e5b460f2311fc8ee75ff769e8d67e76208947180eacb4f153af2d9967/rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7", size = 199391, upload-time = "2024-08-06T17:00:29.001Z" }, - { url = "https://files.pythonhosted.org/packages/0c/7d/fd42a27fe392a69faf4a5e635870fc425edcb998485ee73afbc734ecef16/rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364", size = 213205, upload-time = "2024-08-06T17:00:30.613Z" }, - { url = "https://files.pythonhosted.org/packages/06/39/bf1f664c347c946ef56cecaa896e3693d91acc741afa78ebb3fdb7aba08b/rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045", size = 319444, upload-time = "2024-08-06T17:00:32.378Z" }, - { url = "https://files.pythonhosted.org/packages/c1/71/876135d3cb90d62468540b84e8e83ff4dc92052ab309bfdea7ea0b9221ad/rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc", size = 311699, upload-time = "2024-08-06T17:00:34.289Z" }, - { url = "https://files.pythonhosted.org/packages/f7/da/8ccaeba6a3dda7467aebaf893de9eafd56275e2c90773c83bf15fb0b8374/rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02", size = 367825, upload-time = "2024-08-06T17:00:36.114Z" }, - { url = "https://files.pythonhosted.org/packages/04/b6/02a54c47c178d180395b3c9a8bfb3b93906e08f9acf7b4a1067d27c3fae0/rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92", size = 369046, upload-time = "2024-08-06T17:00:37.943Z" }, - { url = "https://files.pythonhosted.org/packages/a7/64/df4966743aa4def8727dc13d06527c8b13eb7412c1429def2d4701bee520/rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d", size = 395896, upload-time = "2024-08-06T17:00:39.81Z" }, - { url = "https://files.pythonhosted.org/packages/6f/d9/7ff03ff3642c600f27ff94512bb158a8d815fea5ed4162c75a7e850d6003/rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855", size = 432427, upload-time = "2024-08-06T17:00:41.594Z" }, - { url = "https://files.pythonhosted.org/packages/b8/c6/e1b886f7277b3454e55e85332e165091c19114eecb5377b88d892fd36ccf/rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511", size = 355403, upload-time = "2024-08-06T17:00:43.35Z" }, - { url = "https://files.pythonhosted.org/packages/e2/62/e26bd5b944e547c7bfd0b6ca7e306bfa430f8bd298ab72a1217976a7ca8d/rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51", size = 374491, upload-time = "2024-08-06T17:00:45.03Z" }, - { url = "https://files.pythonhosted.org/packages/c3/92/93c5a530898d3a5d1ce087455071ba714b77806ed9ffee4070d0c7a53b7e/rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075", size = 543622, upload-time = "2024-08-06T17:00:47.133Z" }, - { url = "https://files.pythonhosted.org/packages/01/9e/d68fba289625b5d3c9d1925825d7da716fbf812bda2133ac409021d5db13/rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60", size = 548558, upload-time = "2024-08-06T17:00:49.464Z" }, - { url = "https://files.pythonhosted.org/packages/bf/d6/4b2fad4898154365f0f2bd72ffd190349274a4c1d6a6f94f02a83bb2b8f1/rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344", size = 525753, upload-time = "2024-08-06T17:00:51.131Z" }, - { url = "https://files.pythonhosted.org/packages/d2/ea/6f121d1802f3adae1981aea4209ea66f9d3c7f2f6d6b85ef4f13a61d17ef/rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989", size = 213529, upload-time = "2024-08-06T17:00:53.579Z" }, - { url = "https://files.pythonhosted.org/packages/0a/6f/7ab47005469f0d73dad89d29b733e3555d454a45146c30f5628242e56d33/rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e", size = 320800, upload-time = "2024-08-06T17:00:55.375Z" }, - { url = "https://files.pythonhosted.org/packages/cc/a1/bef9e0ef30f89c7516559ca7acc40e8ae70397535a0b1a4535a4a01d9ed0/rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c", size = 312001, upload-time = "2024-08-06T17:00:57.86Z" }, - { url = "https://files.pythonhosted.org/packages/31/44/9093c5dca95ee463c3669651e710af182eb6f9cd83626b15a2ebde2247b1/rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03", size = 369279, upload-time = "2024-08-06T17:00:59.851Z" }, - { url = "https://files.pythonhosted.org/packages/6f/ac/0c36e067681fa3fe4c60a9422b011ec0ccc80c1e124f5210951f7982e887/rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921", size = 369716, upload-time = "2024-08-06T17:01:01.581Z" }, - { url = "https://files.pythonhosted.org/packages/6b/78/8896e08625d46ea5bfdd526ee688b91eeafecbc3cf7223612c82ed77905b/rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab", size = 396708, upload-time = "2024-08-06T17:01:05.539Z" }, - { url = "https://files.pythonhosted.org/packages/24/5f/d865ae460e47e46fd2b489f2aceed34439bd8f18a1ff414c299142e0e22a/rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5", size = 433356, upload-time = "2024-08-06T17:01:08.479Z" }, - { url = "https://files.pythonhosted.org/packages/bd/8b/04031937ffa565021f934a9acf44bb6b1b60ea19fa9e58950b32357e85a1/rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f", size = 356157, upload-time = "2024-08-06T17:01:10.602Z" }, - { url = "https://files.pythonhosted.org/packages/3a/64/1f0471b1e688704a716e07340b85f4145109359951feb08676a1f3b8cec4/rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1", size = 374826, upload-time = "2024-08-06T17:01:12.372Z" }, - { url = "https://files.pythonhosted.org/packages/73/4e/082c0c5eba463e29dff1c6b49557f6ad0d6faae4b46832fa9c1e5b69b7ba/rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074", size = 544549, upload-time = "2024-08-06T17:01:14.673Z" }, - { url = "https://files.pythonhosted.org/packages/cd/ee/f4af0a62d1ba912c4a3a7f5ec04350946ddd59017f3f3d1c227b20ddf558/rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08", size = 549245, upload-time = "2024-08-06T17:01:16.4Z" }, - { url = "https://files.pythonhosted.org/packages/59/42/34601dc773be86a85a9ca47f68301a69fdb019aaae0c1426813f265f5ac0/rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec", size = 526722, upload-time = "2024-08-06T17:01:18.951Z" }, - { url = "https://files.pythonhosted.org/packages/ff/4f/280745d5180c9d78df6b53b6e8b65336f8b6adeb958a8fd19c749fded637/rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8", size = 214379, upload-time = "2024-08-06T17:01:21.313Z" }, +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload-time = "2025-11-30T20:24:38.837Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/0c/0c411a0ec64ccb6d104dcabe0e713e05e153a9a2c3c2bd2b32ce412166fe/rpds_py-0.30.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288", size = 370490, upload-time = "2025-11-30T20:21:33.256Z" }, + { url = "https://files.pythonhosted.org/packages/19/6a/4ba3d0fb7297ebae71171822554abe48d7cab29c28b8f9f2c04b79988c05/rpds_py-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00", size = 359751, upload-time = "2025-11-30T20:21:34.591Z" }, + { url = "https://files.pythonhosted.org/packages/cd/7c/e4933565ef7f7a0818985d87c15d9d273f1a649afa6a52ea35ad011195ea/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6", size = 389696, upload-time = "2025-11-30T20:21:36.122Z" }, + { url = "https://files.pythonhosted.org/packages/5e/01/6271a2511ad0815f00f7ed4390cf2567bec1d4b1da39e2c27a41e6e3b4de/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7", size = 403136, upload-time = "2025-11-30T20:21:37.728Z" }, + { url = "https://files.pythonhosted.org/packages/55/64/c857eb7cd7541e9b4eee9d49c196e833128a55b89a9850a9c9ac33ccf897/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324", size = 524699, upload-time = "2025-11-30T20:21:38.92Z" }, + { url = "https://files.pythonhosted.org/packages/9c/ed/94816543404078af9ab26159c44f9e98e20fe47e2126d5d32c9d9948d10a/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df", size = 412022, upload-time = "2025-11-30T20:21:40.407Z" }, + { url = "https://files.pythonhosted.org/packages/61/b5/707f6cf0066a6412aacc11d17920ea2e19e5b2f04081c64526eb35b5c6e7/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3", size = 390522, upload-time = "2025-11-30T20:21:42.17Z" }, + { url = "https://files.pythonhosted.org/packages/13/4e/57a85fda37a229ff4226f8cbcf09f2a455d1ed20e802ce5b2b4a7f5ed053/rpds_py-0.30.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221", size = 404579, upload-time = "2025-11-30T20:21:43.769Z" }, + { url = "https://files.pythonhosted.org/packages/f9/da/c9339293513ec680a721e0e16bf2bac3db6e5d7e922488de471308349bba/rpds_py-0.30.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7", size = 421305, upload-time = "2025-11-30T20:21:44.994Z" }, + { url = "https://files.pythonhosted.org/packages/f9/be/522cb84751114f4ad9d822ff5a1aa3c98006341895d5f084779b99596e5c/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff", size = 572503, upload-time = "2025-11-30T20:21:46.91Z" }, + { url = "https://files.pythonhosted.org/packages/a2/9b/de879f7e7ceddc973ea6e4629e9b380213a6938a249e94b0cdbcc325bb66/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7", size = 598322, upload-time = "2025-11-30T20:21:48.709Z" }, + { url = "https://files.pythonhosted.org/packages/48/ac/f01fc22efec3f37d8a914fc1b2fb9bcafd56a299edbe96406f3053edea5a/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139", size = 560792, upload-time = "2025-11-30T20:21:50.024Z" }, + { url = "https://files.pythonhosted.org/packages/e2/da/4e2b19d0f131f35b6146425f846563d0ce036763e38913d917187307a671/rpds_py-0.30.0-cp310-cp310-win32.whl", hash = "sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464", size = 221901, upload-time = "2025-11-30T20:21:51.32Z" }, + { url = "https://files.pythonhosted.org/packages/96/cb/156d7a5cf4f78a7cc571465d8aec7a3c447c94f6749c5123f08438bcf7bc/rpds_py-0.30.0-cp310-cp310-win_amd64.whl", hash = "sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169", size = 235823, upload-time = "2025-11-30T20:21:52.505Z" }, + { url = "https://files.pythonhosted.org/packages/4d/6e/f964e88b3d2abee2a82c1ac8366da848fce1c6d834dc2132c3fda3970290/rpds_py-0.30.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425", size = 370157, upload-time = "2025-11-30T20:21:53.789Z" }, + { url = "https://files.pythonhosted.org/packages/94/ba/24e5ebb7c1c82e74c4e4f33b2112a5573ddc703915b13a073737b59b86e0/rpds_py-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d", size = 359676, upload-time = "2025-11-30T20:21:55.475Z" }, + { url = "https://files.pythonhosted.org/packages/84/86/04dbba1b087227747d64d80c3b74df946b986c57af0a9f0c98726d4d7a3b/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4", size = 389938, upload-time = "2025-11-30T20:21:57.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/bb/1463f0b1722b7f45431bdd468301991d1328b16cffe0b1c2918eba2c4eee/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f", size = 402932, upload-time = "2025-11-30T20:21:58.47Z" }, + { url = "https://files.pythonhosted.org/packages/99/ee/2520700a5c1f2d76631f948b0736cdf9b0acb25abd0ca8e889b5c62ac2e3/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4", size = 525830, upload-time = "2025-11-30T20:21:59.699Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ad/bd0331f740f5705cc555a5e17fdf334671262160270962e69a2bdef3bf76/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97", size = 412033, upload-time = "2025-11-30T20:22:00.991Z" }, + { url = "https://files.pythonhosted.org/packages/f8/1e/372195d326549bb51f0ba0f2ecb9874579906b97e08880e7a65c3bef1a99/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89", size = 390828, upload-time = "2025-11-30T20:22:02.723Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2b/d88bb33294e3e0c76bc8f351a3721212713629ffca1700fa94979cb3eae8/rpds_py-0.30.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d", size = 404683, upload-time = "2025-11-30T20:22:04.367Z" }, + { url = "https://files.pythonhosted.org/packages/50/32/c759a8d42bcb5289c1fac697cd92f6fe01a018dd937e62ae77e0e7f15702/rpds_py-0.30.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038", size = 421583, upload-time = "2025-11-30T20:22:05.814Z" }, + { url = "https://files.pythonhosted.org/packages/2b/81/e729761dbd55ddf5d84ec4ff1f47857f4374b0f19bdabfcf929164da3e24/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7", size = 572496, upload-time = "2025-11-30T20:22:07.713Z" }, + { url = "https://files.pythonhosted.org/packages/14/f6/69066a924c3557c9c30baa6ec3a0aa07526305684c6f86c696b08860726c/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed", size = 598669, upload-time = "2025-11-30T20:22:09.312Z" }, + { url = "https://files.pythonhosted.org/packages/5f/48/905896b1eb8a05630d20333d1d8ffd162394127b74ce0b0784ae04498d32/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85", size = 561011, upload-time = "2025-11-30T20:22:11.309Z" }, + { url = "https://files.pythonhosted.org/packages/22/16/cd3027c7e279d22e5eb431dd3c0fbc677bed58797fe7581e148f3f68818b/rpds_py-0.30.0-cp311-cp311-win32.whl", hash = "sha256:55f66022632205940f1827effeff17c4fa7ae1953d2b74a8581baaefb7d16f8c", size = 221406, upload-time = "2025-11-30T20:22:13.101Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5b/e7b7aa136f28462b344e652ee010d4de26ee9fd16f1bfd5811f5153ccf89/rpds_py-0.30.0-cp311-cp311-win_amd64.whl", hash = "sha256:a51033ff701fca756439d641c0ad09a41d9242fa69121c7d8769604a0a629825", size = 236024, upload-time = "2025-11-30T20:22:14.853Z" }, + { url = "https://files.pythonhosted.org/packages/14/a6/364bba985e4c13658edb156640608f2c9e1d3ea3c81b27aa9d889fff0e31/rpds_py-0.30.0-cp311-cp311-win_arm64.whl", hash = "sha256:47b0ef6231c58f506ef0b74d44e330405caa8428e770fec25329ed2cb971a229", size = 229069, upload-time = "2025-11-30T20:22:16.577Z" }, + { url = "https://files.pythonhosted.org/packages/03/e7/98a2f4ac921d82f33e03f3835f5bf3a4a40aa1bfdc57975e74a97b2b4bdd/rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad", size = 375086, upload-time = "2025-11-30T20:22:17.93Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a1/bca7fd3d452b272e13335db8d6b0b3ecde0f90ad6f16f3328c6fb150c889/rpds_py-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05", size = 359053, upload-time = "2025-11-30T20:22:19.297Z" }, + { url = "https://files.pythonhosted.org/packages/65/1c/ae157e83a6357eceff62ba7e52113e3ec4834a84cfe07fa4b0757a7d105f/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28", size = 390763, upload-time = "2025-11-30T20:22:21.661Z" }, + { url = "https://files.pythonhosted.org/packages/d4/36/eb2eb8515e2ad24c0bd43c3ee9cd74c33f7ca6430755ccdb240fd3144c44/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd", size = 408951, upload-time = "2025-11-30T20:22:23.408Z" }, + { url = "https://files.pythonhosted.org/packages/d6/65/ad8dc1784a331fabbd740ef6f71ce2198c7ed0890dab595adb9ea2d775a1/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f", size = 514622, upload-time = "2025-11-30T20:22:25.16Z" }, + { url = "https://files.pythonhosted.org/packages/63/8e/0cfa7ae158e15e143fe03993b5bcd743a59f541f5952e1546b1ac1b5fd45/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1", size = 414492, upload-time = "2025-11-30T20:22:26.505Z" }, + { url = "https://files.pythonhosted.org/packages/60/1b/6f8f29f3f995c7ffdde46a626ddccd7c63aefc0efae881dc13b6e5d5bb16/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23", size = 394080, upload-time = "2025-11-30T20:22:27.934Z" }, + { url = "https://files.pythonhosted.org/packages/6d/d5/a266341051a7a3ca2f4b750a3aa4abc986378431fc2da508c5034d081b70/rpds_py-0.30.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6", size = 408680, upload-time = "2025-11-30T20:22:29.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/3b/71b725851df9ab7a7a4e33cf36d241933da66040d195a84781f49c50490c/rpds_py-0.30.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51", size = 423589, upload-time = "2025-11-30T20:22:31.469Z" }, + { url = "https://files.pythonhosted.org/packages/00/2b/e59e58c544dc9bd8bd8384ecdb8ea91f6727f0e37a7131baeff8d6f51661/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5", size = 573289, upload-time = "2025-11-30T20:22:32.997Z" }, + { url = "https://files.pythonhosted.org/packages/da/3e/a18e6f5b460893172a7d6a680e86d3b6bc87a54c1f0b03446a3c8c7b588f/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e", size = 599737, upload-time = "2025-11-30T20:22:34.419Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e2/714694e4b87b85a18e2c243614974413c60aa107fd815b8cbc42b873d1d7/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394", size = 563120, upload-time = "2025-11-30T20:22:35.903Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ab/d5d5e3bcedb0a77f4f613706b750e50a5a3ba1c15ccd3665ecc636c968fd/rpds_py-0.30.0-cp312-cp312-win32.whl", hash = "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf", size = 223782, upload-time = "2025-11-30T20:22:37.271Z" }, + { url = "https://files.pythonhosted.org/packages/39/3b/f786af9957306fdc38a74cef405b7b93180f481fb48453a114bb6465744a/rpds_py-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b", size = 240463, upload-time = "2025-11-30T20:22:39.021Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d2/b91dc748126c1559042cfe41990deb92c4ee3e2b415f6b5234969ffaf0cc/rpds_py-0.30.0-cp312-cp312-win_arm64.whl", hash = "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e", size = 230868, upload-time = "2025-11-30T20:22:40.493Z" }, + { url = "https://files.pythonhosted.org/packages/ed/dc/d61221eb88ff410de3c49143407f6f3147acf2538c86f2ab7ce65ae7d5f9/rpds_py-0.30.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2", size = 374887, upload-time = "2025-11-30T20:22:41.812Z" }, + { url = "https://files.pythonhosted.org/packages/fd/32/55fb50ae104061dbc564ef15cc43c013dc4a9f4527a1f4d99baddf56fe5f/rpds_py-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8", size = 358904, upload-time = "2025-11-30T20:22:43.479Z" }, + { url = "https://files.pythonhosted.org/packages/58/70/faed8186300e3b9bdd138d0273109784eea2396c68458ed580f885dfe7ad/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4", size = 389945, upload-time = "2025-11-30T20:22:44.819Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a8/073cac3ed2c6387df38f71296d002ab43496a96b92c823e76f46b8af0543/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136", size = 407783, upload-time = "2025-11-30T20:22:46.103Z" }, + { url = "https://files.pythonhosted.org/packages/77/57/5999eb8c58671f1c11eba084115e77a8899d6e694d2a18f69f0ba471ec8b/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7", size = 515021, upload-time = "2025-11-30T20:22:47.458Z" }, + { url = "https://files.pythonhosted.org/packages/e0/af/5ab4833eadc36c0a8ed2bc5c0de0493c04f6c06de223170bd0798ff98ced/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2", size = 414589, upload-time = "2025-11-30T20:22:48.872Z" }, + { url = "https://files.pythonhosted.org/packages/b7/de/f7192e12b21b9e9a68a6d0f249b4af3fdcdff8418be0767a627564afa1f1/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6", size = 394025, upload-time = "2025-11-30T20:22:50.196Z" }, + { url = "https://files.pythonhosted.org/packages/91/c4/fc70cd0249496493500e7cc2de87504f5aa6509de1e88623431fec76d4b6/rpds_py-0.30.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e", size = 408895, upload-time = "2025-11-30T20:22:51.87Z" }, + { url = "https://files.pythonhosted.org/packages/58/95/d9275b05ab96556fefff73a385813eb66032e4c99f411d0795372d9abcea/rpds_py-0.30.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d", size = 422799, upload-time = "2025-11-30T20:22:53.341Z" }, + { url = "https://files.pythonhosted.org/packages/06/c1/3088fc04b6624eb12a57eb814f0d4997a44b0d208d6cace713033ff1a6ba/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7", size = 572731, upload-time = "2025-11-30T20:22:54.778Z" }, + { url = "https://files.pythonhosted.org/packages/d8/42/c612a833183b39774e8ac8fecae81263a68b9583ee343db33ab571a7ce55/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31", size = 599027, upload-time = "2025-11-30T20:22:56.212Z" }, + { url = "https://files.pythonhosted.org/packages/5f/60/525a50f45b01d70005403ae0e25f43c0384369ad24ffe46e8d9068b50086/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95", size = 563020, upload-time = "2025-11-30T20:22:58.2Z" }, + { url = "https://files.pythonhosted.org/packages/0b/5d/47c4655e9bcd5ca907148535c10e7d489044243cc9941c16ed7cd53be91d/rpds_py-0.30.0-cp313-cp313-win32.whl", hash = "sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d", size = 223139, upload-time = "2025-11-30T20:23:00.209Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e1/485132437d20aa4d3e1d8b3fb5a5e65aa8139f1e097080c2a8443201742c/rpds_py-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15", size = 240224, upload-time = "2025-11-30T20:23:02.008Z" }, + { url = "https://files.pythonhosted.org/packages/24/95/ffd128ed1146a153d928617b0ef673960130be0009c77d8fbf0abe306713/rpds_py-0.30.0-cp313-cp313-win_arm64.whl", hash = "sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1", size = 230645, upload-time = "2025-11-30T20:23:03.43Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1b/b10de890a0def2a319a2626334a7f0ae388215eb60914dbac8a3bae54435/rpds_py-0.30.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a", size = 364443, upload-time = "2025-11-30T20:23:04.878Z" }, + { url = "https://files.pythonhosted.org/packages/0d/bf/27e39f5971dc4f305a4fb9c672ca06f290f7c4e261c568f3dea16a410d47/rpds_py-0.30.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e", size = 353375, upload-time = "2025-11-30T20:23:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/40/58/442ada3bba6e8e6615fc00483135c14a7538d2ffac30e2d933ccf6852232/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000", size = 383850, upload-time = "2025-11-30T20:23:07.825Z" }, + { url = "https://files.pythonhosted.org/packages/14/14/f59b0127409a33c6ef6f5c1ebd5ad8e32d7861c9c7adfa9a624fc3889f6c/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db", size = 392812, upload-time = "2025-11-30T20:23:09.228Z" }, + { url = "https://files.pythonhosted.org/packages/b3/66/e0be3e162ac299b3a22527e8913767d869e6cc75c46bd844aa43fb81ab62/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2", size = 517841, upload-time = "2025-11-30T20:23:11.186Z" }, + { url = "https://files.pythonhosted.org/packages/3d/55/fa3b9cf31d0c963ecf1ba777f7cf4b2a2c976795ac430d24a1f43d25a6ba/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa", size = 408149, upload-time = "2025-11-30T20:23:12.864Z" }, + { url = "https://files.pythonhosted.org/packages/60/ca/780cf3b1a32b18c0f05c441958d3758f02544f1d613abf9488cd78876378/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083", size = 383843, upload-time = "2025-11-30T20:23:14.638Z" }, + { url = "https://files.pythonhosted.org/packages/82/86/d5f2e04f2aa6247c613da0c1dd87fcd08fa17107e858193566048a1e2f0a/rpds_py-0.30.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9", size = 396507, upload-time = "2025-11-30T20:23:16.105Z" }, + { url = "https://files.pythonhosted.org/packages/4b/9a/453255d2f769fe44e07ea9785c8347edaf867f7026872e76c1ad9f7bed92/rpds_py-0.30.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0", size = 414949, upload-time = "2025-11-30T20:23:17.539Z" }, + { url = "https://files.pythonhosted.org/packages/a3/31/622a86cdc0c45d6df0e9ccb6becdba5074735e7033c20e401a6d9d0e2ca0/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94", size = 565790, upload-time = "2025-11-30T20:23:19.029Z" }, + { url = "https://files.pythonhosted.org/packages/1c/5d/15bbf0fb4a3f58a3b1c67855ec1efcc4ceaef4e86644665fff03e1b66d8d/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08", size = 590217, upload-time = "2025-11-30T20:23:20.885Z" }, + { url = "https://files.pythonhosted.org/packages/6d/61/21b8c41f68e60c8cc3b2e25644f0e3681926020f11d06ab0b78e3c6bbff1/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27", size = 555806, upload-time = "2025-11-30T20:23:22.488Z" }, + { url = "https://files.pythonhosted.org/packages/f9/39/7e067bb06c31de48de3eb200f9fc7c58982a4d3db44b07e73963e10d3be9/rpds_py-0.30.0-cp313-cp313t-win32.whl", hash = "sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6", size = 211341, upload-time = "2025-11-30T20:23:24.449Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4d/222ef0b46443cf4cf46764d9c630f3fe4abaa7245be9417e56e9f52b8f65/rpds_py-0.30.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d", size = 225768, upload-time = "2025-11-30T20:23:25.908Z" }, + { url = "https://files.pythonhosted.org/packages/86/81/dad16382ebbd3d0e0328776d8fd7ca94220e4fa0798d1dc5e7da48cb3201/rpds_py-0.30.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:68f19c879420aa08f61203801423f6cd5ac5f0ac4ac82a2368a9fcd6a9a075e0", size = 362099, upload-time = "2025-11-30T20:23:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/2b/60/19f7884db5d5603edf3c6bce35408f45ad3e97e10007df0e17dd57af18f8/rpds_py-0.30.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ec7c4490c672c1a0389d319b3a9cfcd098dcdc4783991553c332a15acf7249be", size = 353192, upload-time = "2025-11-30T20:23:29.151Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c4/76eb0e1e72d1a9c4703c69607cec123c29028bff28ce41588792417098ac/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f251c812357a3fed308d684a5079ddfb9d933860fc6de89f2b7ab00da481e65f", size = 384080, upload-time = "2025-11-30T20:23:30.785Z" }, + { url = "https://files.pythonhosted.org/packages/72/87/87ea665e92f3298d1b26d78814721dc39ed8d2c74b86e83348d6b48a6f31/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac98b175585ecf4c0348fd7b29c3864bda53b805c773cbf7bfdaffc8070c976f", size = 394841, upload-time = "2025-11-30T20:23:32.209Z" }, + { url = "https://files.pythonhosted.org/packages/77/ad/7783a89ca0587c15dcbf139b4a8364a872a25f861bdb88ed99f9b0dec985/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3e62880792319dbeb7eb866547f2e35973289e7d5696c6e295476448f5b63c87", size = 516670, upload-time = "2025-11-30T20:23:33.742Z" }, + { url = "https://files.pythonhosted.org/packages/5b/3c/2882bdac942bd2172f3da574eab16f309ae10a3925644e969536553cb4ee/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e7fc54e0900ab35d041b0601431b0a0eb495f0851a0639b6ef90f7741b39a18", size = 408005, upload-time = "2025-11-30T20:23:35.253Z" }, + { url = "https://files.pythonhosted.org/packages/ce/81/9a91c0111ce1758c92516a3e44776920b579d9a7c09b2b06b642d4de3f0f/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47e77dc9822d3ad616c3d5759ea5631a75e5809d5a28707744ef79d7a1bcfcad", size = 382112, upload-time = "2025-11-30T20:23:36.842Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8e/1da49d4a107027e5fbc64daeab96a0706361a2918da10cb41769244b805d/rpds_py-0.30.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:b4dc1a6ff022ff85ecafef7979a2c6eb423430e05f1165d6688234e62ba99a07", size = 399049, upload-time = "2025-11-30T20:23:38.343Z" }, + { url = "https://files.pythonhosted.org/packages/df/5a/7ee239b1aa48a127570ec03becbb29c9d5a9eb092febbd1699d567cae859/rpds_py-0.30.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4559c972db3a360808309e06a74628b95eaccbf961c335c8fe0d590cf587456f", size = 415661, upload-time = "2025-11-30T20:23:40.263Z" }, + { url = "https://files.pythonhosted.org/packages/70/ea/caa143cf6b772f823bc7929a45da1fa83569ee49b11d18d0ada7f5ee6fd6/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:0ed177ed9bded28f8deb6ab40c183cd1192aa0de40c12f38be4d59cd33cb5c65", size = 565606, upload-time = "2025-11-30T20:23:42.186Z" }, + { url = "https://files.pythonhosted.org/packages/64/91/ac20ba2d69303f961ad8cf55bf7dbdb4763f627291ba3d0d7d67333cced9/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ad1fa8db769b76ea911cb4e10f049d80bf518c104f15b3edb2371cc65375c46f", size = 591126, upload-time = "2025-11-30T20:23:44.086Z" }, + { url = "https://files.pythonhosted.org/packages/21/20/7ff5f3c8b00c8a95f75985128c26ba44503fb35b8e0259d812766ea966c7/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:46e83c697b1f1c72b50e5ee5adb4353eef7406fb3f2043d64c33f20ad1c2fc53", size = 553371, upload-time = "2025-11-30T20:23:46.004Z" }, + { url = "https://files.pythonhosted.org/packages/72/c7/81dadd7b27c8ee391c132a6b192111ca58d866577ce2d9b0ca157552cce0/rpds_py-0.30.0-cp314-cp314-win32.whl", hash = "sha256:ee454b2a007d57363c2dfd5b6ca4a5d7e2c518938f8ed3b706e37e5d470801ed", size = 215298, upload-time = "2025-11-30T20:23:47.696Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d2/1aaac33287e8cfb07aab2e6b8ac1deca62f6f65411344f1433c55e6f3eb8/rpds_py-0.30.0-cp314-cp314-win_amd64.whl", hash = "sha256:95f0802447ac2d10bcc69f6dc28fe95fdf17940367b21d34e34c737870758950", size = 228604, upload-time = "2025-11-30T20:23:49.501Z" }, + { url = "https://files.pythonhosted.org/packages/e8/95/ab005315818cc519ad074cb7784dae60d939163108bd2b394e60dc7b5461/rpds_py-0.30.0-cp314-cp314-win_arm64.whl", hash = "sha256:613aa4771c99f03346e54c3f038e4cc574ac09a3ddfb0e8878487335e96dead6", size = 222391, upload-time = "2025-11-30T20:23:50.96Z" }, + { url = "https://files.pythonhosted.org/packages/9e/68/154fe0194d83b973cdedcdcc88947a2752411165930182ae41d983dcefa6/rpds_py-0.30.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:7e6ecfcb62edfd632e56983964e6884851786443739dbfe3582947e87274f7cb", size = 364868, upload-time = "2025-11-30T20:23:52.494Z" }, + { url = "https://files.pythonhosted.org/packages/83/69/8bbc8b07ec854d92a8b75668c24d2abcb1719ebf890f5604c61c9369a16f/rpds_py-0.30.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a1d0bc22a7cdc173fedebb73ef81e07faef93692b8c1ad3733b67e31e1b6e1b8", size = 353747, upload-time = "2025-11-30T20:23:54.036Z" }, + { url = "https://files.pythonhosted.org/packages/ab/00/ba2e50183dbd9abcce9497fa5149c62b4ff3e22d338a30d690f9af970561/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d08f00679177226c4cb8c5265012eea897c8ca3b93f429e546600c971bcbae7", size = 383795, upload-time = "2025-11-30T20:23:55.556Z" }, + { url = "https://files.pythonhosted.org/packages/05/6f/86f0272b84926bcb0e4c972262f54223e8ecc556b3224d281e6598fc9268/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5965af57d5848192c13534f90f9dd16464f3c37aaf166cc1da1cae1fd5a34898", size = 393330, upload-time = "2025-11-30T20:23:57.033Z" }, + { url = "https://files.pythonhosted.org/packages/cb/e9/0e02bb2e6dc63d212641da45df2b0bf29699d01715913e0d0f017ee29438/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a4e86e34e9ab6b667c27f3211ca48f73dba7cd3d90f8d5b11be56e5dbc3fb4e", size = 518194, upload-time = "2025-11-30T20:23:58.637Z" }, + { url = "https://files.pythonhosted.org/packages/ee/ca/be7bca14cf21513bdf9c0606aba17d1f389ea2b6987035eb4f62bd923f25/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5d3e6b26f2c785d65cc25ef1e5267ccbe1b069c5c21b8cc724efee290554419", size = 408340, upload-time = "2025-11-30T20:24:00.2Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c7/736e00ebf39ed81d75544c0da6ef7b0998f8201b369acf842f9a90dc8fce/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:626a7433c34566535b6e56a1b39a7b17ba961e97ce3b80ec62e6f1312c025551", size = 383765, upload-time = "2025-11-30T20:24:01.759Z" }, + { url = "https://files.pythonhosted.org/packages/4a/3f/da50dfde9956aaf365c4adc9533b100008ed31aea635f2b8d7b627e25b49/rpds_py-0.30.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:acd7eb3f4471577b9b5a41baf02a978e8bdeb08b4b355273994f8b87032000a8", size = 396834, upload-time = "2025-11-30T20:24:03.687Z" }, + { url = "https://files.pythonhosted.org/packages/4e/00/34bcc2565b6020eab2623349efbdec810676ad571995911f1abdae62a3a0/rpds_py-0.30.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe5fa731a1fa8a0a56b0977413f8cacac1768dad38d16b3a296712709476fbd5", size = 415470, upload-time = "2025-11-30T20:24:05.232Z" }, + { url = "https://files.pythonhosted.org/packages/8c/28/882e72b5b3e6f718d5453bd4d0d9cf8df36fddeb4ddbbab17869d5868616/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:74a3243a411126362712ee1524dfc90c650a503502f135d54d1b352bd01f2404", size = 565630, upload-time = "2025-11-30T20:24:06.878Z" }, + { url = "https://files.pythonhosted.org/packages/3b/97/04a65539c17692de5b85c6e293520fd01317fd878ea1995f0367d4532fb1/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:3e8eeb0544f2eb0d2581774be4c3410356eba189529a6b3e36bbbf9696175856", size = 591148, upload-time = "2025-11-30T20:24:08.445Z" }, + { url = "https://files.pythonhosted.org/packages/85/70/92482ccffb96f5441aab93e26c4d66489eb599efdcf96fad90c14bbfb976/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:dbd936cde57abfee19ab3213cf9c26be06d60750e60a8e4dd85d1ab12c8b1f40", size = 556030, upload-time = "2025-11-30T20:24:10.956Z" }, + { url = "https://files.pythonhosted.org/packages/20/53/7c7e784abfa500a2b6b583b147ee4bb5a2b3747a9166bab52fec4b5b5e7d/rpds_py-0.30.0-cp314-cp314t-win32.whl", hash = "sha256:dc824125c72246d924f7f796b4f63c1e9dc810c7d9e2355864b3c3a73d59ade0", size = 211570, upload-time = "2025-11-30T20:24:12.735Z" }, + { url = "https://files.pythonhosted.org/packages/d0/02/fa464cdfbe6b26e0600b62c528b72d8608f5cc49f96b8d6e38c95d60c676/rpds_py-0.30.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3", size = 226532, upload-time = "2025-11-30T20:24:14.634Z" }, + { url = "https://files.pythonhosted.org/packages/69/71/3f34339ee70521864411f8b6992e7ab13ac30d8e4e3309e07c7361767d91/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58", size = 372292, upload-time = "2025-11-30T20:24:16.537Z" }, + { url = "https://files.pythonhosted.org/packages/57/09/f183df9b8f2d66720d2ef71075c59f7e1b336bec7ee4c48f0a2b06857653/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a", size = 362128, upload-time = "2025-11-30T20:24:18.086Z" }, + { url = "https://files.pythonhosted.org/packages/7a/68/5c2594e937253457342e078f0cc1ded3dd7b2ad59afdbf2d354869110a02/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb", size = 391542, upload-time = "2025-11-30T20:24:20.092Z" }, + { url = "https://files.pythonhosted.org/packages/49/5c/31ef1afd70b4b4fbdb2800249f34c57c64beb687495b10aec0365f53dfc4/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c", size = 404004, upload-time = "2025-11-30T20:24:22.231Z" }, + { url = "https://files.pythonhosted.org/packages/e3/63/0cfbea38d05756f3440ce6534d51a491d26176ac045e2707adc99bb6e60a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3", size = 527063, upload-time = "2025-11-30T20:24:24.302Z" }, + { url = "https://files.pythonhosted.org/packages/42/e6/01e1f72a2456678b0f618fc9a1a13f882061690893c192fcad9f2926553a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5", size = 413099, upload-time = "2025-11-30T20:24:25.916Z" }, + { url = "https://files.pythonhosted.org/packages/b8/25/8df56677f209003dcbb180765520c544525e3ef21ea72279c98b9aa7c7fb/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738", size = 392177, upload-time = "2025-11-30T20:24:27.834Z" }, + { url = "https://files.pythonhosted.org/packages/4a/b4/0a771378c5f16f8115f796d1f437950158679bcd2a7c68cf251cfb00ed5b/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f", size = 406015, upload-time = "2025-11-30T20:24:29.457Z" }, + { url = "https://files.pythonhosted.org/packages/36/d8/456dbba0af75049dc6f63ff295a2f92766b9d521fa00de67a2bd6427d57a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877", size = 423736, upload-time = "2025-11-30T20:24:31.22Z" }, + { url = "https://files.pythonhosted.org/packages/13/64/b4d76f227d5c45a7e0b796c674fd81b0a6c4fbd48dc29271857d8219571c/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a", size = 573981, upload-time = "2025-11-30T20:24:32.934Z" }, + { url = "https://files.pythonhosted.org/packages/20/91/092bacadeda3edf92bf743cc96a7be133e13a39cdbfd7b5082e7ab638406/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4", size = 599782, upload-time = "2025-11-30T20:24:35.169Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b7/b95708304cd49b7b6f82fdd039f1748b66ec2b21d6a45180910802f1abf1/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e", size = 562191, upload-time = "2025-11-30T20:24:36.853Z" }, ] [[package]] name = "ruff" -version = "0.6.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/74/f9/4ce3e765a72ab8fe0f80f48508ea38b4196daab3da14d803c21349b2d367/ruff-0.6.8.tar.gz", hash = "sha256:a5bf44b1aa0adaf6d9d20f86162b34f7c593bfedabc51239953e446aefc8ce18", size = 3084543, upload-time = "2024-09-26T12:27:17.785Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/db/07/42ee57e8b76ca585297a663a552b4f6d6a99372ca47fdc2276ef72cc0f2f/ruff-0.6.8-py3-none-linux_armv6l.whl", hash = "sha256:77944bca110ff0a43b768f05a529fecd0706aac7bcce36d7f1eeb4cbfca5f0f2", size = 10404327, upload-time = "2024-09-26T12:26:31.274Z" }, - { url = "https://files.pythonhosted.org/packages/eb/51/d42571ff8156d65086acb72d39aa64cb24181db53b497d0ed6293f43f07a/ruff-0.6.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:27b87e1801e786cd6ede4ada3faa5e254ce774de835e6723fd94551464c56b8c", size = 10018797, upload-time = "2024-09-26T12:26:34.68Z" }, - { url = "https://files.pythonhosted.org/packages/c1/d7/fa5514a60b03976af972b67fe345deb0335dc96b9f9a9fa4df9890472427/ruff-0.6.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:cd48f945da2a6334f1793d7f701725a76ba93bf3d73c36f6b21fb04d5338dcf5", size = 9691303, upload-time = "2024-09-26T12:26:37.311Z" }, - { url = "https://files.pythonhosted.org/packages/d6/c4/d812a74976927e51d0782a47539069657ac78535779bfa4d061c4fc8d89d/ruff-0.6.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:677e03c00f37c66cea033274295a983c7c546edea5043d0c798833adf4cf4c6f", size = 10719452, upload-time = "2024-09-26T12:26:40.24Z" }, - { url = "https://files.pythonhosted.org/packages/ec/b6/aa700c4ae6db9b3ee660e23f3c7db596e2b16a3034b797704fba33ddbc96/ruff-0.6.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f1476236b3eacfacfc0f66aa9e6cd39f2a624cb73ea99189556015f27c0bdeb", size = 10161353, upload-time = "2024-09-26T12:26:42.464Z" }, - { url = "https://files.pythonhosted.org/packages/ea/39/0b10075ffcd52ff3a581b9b69eac53579deb230aad300ce8f9d0b58e77bc/ruff-0.6.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f5a2f17c7d32991169195d52a04c95b256378bbf0de8cb98478351eb70d526f", size = 10980630, upload-time = "2024-09-26T12:26:45.157Z" }, - { url = "https://files.pythonhosted.org/packages/c1/af/9eb9efc98334f62652e2f9318f137b2667187851911fac3b395365a83708/ruff-0.6.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5fd0d4b7b1457c49e435ee1e437900ced9b35cb8dc5178921dfb7d98d65a08d0", size = 11768996, upload-time = "2024-09-26T12:26:47.987Z" }, - { url = "https://files.pythonhosted.org/packages/e0/59/8b1369cf7878358952b1c0a1559b4d6b5c824c003d09b0db26d26c9d094f/ruff-0.6.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8034b19b993e9601f2ddf2c517451e17a6ab5cdb1c13fdff50c1442a7171d87", size = 11317469, upload-time = "2024-09-26T12:26:50.487Z" }, - { url = "https://files.pythonhosted.org/packages/b9/6d/e252e9b11bbca4114c386ee41ad559d0dac13246201d77ea1223c6fea17f/ruff-0.6.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6cfb227b932ba8ef6e56c9f875d987973cd5e35bc5d05f5abf045af78ad8e098", size = 12467185, upload-time = "2024-09-26T12:26:52.928Z" }, - { url = "https://files.pythonhosted.org/packages/48/44/7caa223af7d4ea0f0b2bd34acca65a7694a58317714675a2478815ab3f45/ruff-0.6.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef0411eccfc3909269fed47c61ffebdcb84a04504bafa6b6df9b85c27e813b0", size = 10887766, upload-time = "2024-09-26T12:26:56.585Z" }, - { url = "https://files.pythonhosted.org/packages/81/ed/394aff3a785f171869158b9d5be61eec9ffb823c3ad5d2bdf2e5f13cb029/ruff-0.6.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:007dee844738c3d2e6c24ab5bc7d43c99ba3e1943bd2d95d598582e9c1b27750", size = 10711609, upload-time = "2024-09-26T12:26:59.23Z" }, - { url = "https://files.pythonhosted.org/packages/47/31/f31d04c842e54699eab7e3b864538fea26e6c94b71806cd10aa49f13e1c1/ruff-0.6.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ce60058d3cdd8490e5e5471ef086b3f1e90ab872b548814e35930e21d848c9ce", size = 10237621, upload-time = "2024-09-26T12:27:01.862Z" }, - { url = "https://files.pythonhosted.org/packages/20/95/a764e84acf11d425f2f23b8b78b4fd715e9c20be4aac157c6414ca859a67/ruff-0.6.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:1085c455d1b3fdb8021ad534379c60353b81ba079712bce7a900e834859182fa", size = 10558329, upload-time = "2024-09-26T12:27:04.753Z" }, - { url = "https://files.pythonhosted.org/packages/2a/76/d4e38846ac9f6dd62dce858a54583911361b5339dcf8f84419241efac93a/ruff-0.6.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:70edf6a93b19481affd287d696d9e311388d808671bc209fb8907b46a8c3af44", size = 10954102, upload-time = "2024-09-26T12:27:07.111Z" }, - { url = "https://files.pythonhosted.org/packages/e7/36/f18c678da6c69f8d022480f3e8ddce6e4a52e07602c1d212056fbd234f8f/ruff-0.6.8-py3-none-win32.whl", hash = "sha256:792213f7be25316f9b46b854df80a77e0da87ec66691e8f012f887b4a671ab5a", size = 8511090, upload-time = "2024-09-26T12:27:10.199Z" }, - { url = "https://files.pythonhosted.org/packages/4c/c4/0ca7d8ffa358b109db7d7d045a1a076fd8e5d9cbeae022242d3c060931da/ruff-0.6.8-py3-none-win_amd64.whl", hash = "sha256:ec0517dc0f37cad14a5319ba7bba6e7e339d03fbf967a6d69b0907d61be7a263", size = 9350079, upload-time = "2024-09-26T12:27:13.123Z" }, - { url = "https://files.pythonhosted.org/packages/d9/bd/a8b0c64945a92eaeeb8d0283f27a726a776a1c9d12734d990c5fc7a1278c/ruff-0.6.8-py3-none-win_arm64.whl", hash = "sha256:8d3bb2e3fbb9875172119021a13eed38849e762499e3cfde9588e4b4d70968dc", size = 8669595, upload-time = "2024-09-26T12:27:15.464Z" }, +version = "0.15.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/77/9b/840e0039e65fcf12758adf684d2289024d6140cde9268cc59887dc55189c/ruff-0.15.5.tar.gz", hash = "sha256:7c3601d3b6d76dce18c5c824fc8d06f4eef33d6df0c21ec7799510cde0f159a2", size = 4574214, upload-time = "2026-03-05T20:06:34.946Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/20/5369c3ce21588c708bcbe517a8fbe1a8dfdb5dfd5137e14790b1da71612c/ruff-0.15.5-py3-none-linux_armv6l.whl", hash = "sha256:4ae44c42281f42e3b06b988e442d344a5b9b72450ff3c892e30d11b29a96a57c", size = 10478185, upload-time = "2026-03-05T20:06:29.093Z" }, + { url = "https://files.pythonhosted.org/packages/44/ed/e81dd668547da281e5dce710cf0bc60193f8d3d43833e8241d006720e42b/ruff-0.15.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6edd3792d408ebcf61adabc01822da687579a1a023f297618ac27a5b51ef0080", size = 10859201, upload-time = "2026-03-05T20:06:32.632Z" }, + { url = "https://files.pythonhosted.org/packages/c4/8f/533075f00aaf19b07c5cd6aa6e5d89424b06b3b3f4583bfa9c640a079059/ruff-0.15.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:89f463f7c8205a9f8dea9d658d59eff49db05f88f89cc3047fb1a02d9f344010", size = 10184752, upload-time = "2026-03-05T20:06:40.312Z" }, + { url = "https://files.pythonhosted.org/packages/66/0e/ba49e2c3fa0395b3152bad634c7432f7edfc509c133b8f4529053ff024fb/ruff-0.15.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba786a8295c6574c1116704cf0b9e6563de3432ac888d8f83685654fe528fd65", size = 10534857, upload-time = "2026-03-05T20:06:19.581Z" }, + { url = "https://files.pythonhosted.org/packages/59/71/39234440f27a226475a0659561adb0d784b4d247dfe7f43ffc12dd02e288/ruff-0.15.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd4b801e57955fe9f02b31d20375ab3a5c4415f2e5105b79fb94cf2642c91440", size = 10309120, upload-time = "2026-03-05T20:06:00.435Z" }, + { url = "https://files.pythonhosted.org/packages/f5/87/4140aa86a93df032156982b726f4952aaec4a883bb98cb6ef73c347da253/ruff-0.15.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:391f7c73388f3d8c11b794dbbc2959a5b5afe66642c142a6effa90b45f6f5204", size = 11047428, upload-time = "2026-03-05T20:05:51.867Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f7/4953e7e3287676f78fbe85e3a0ca414c5ca81237b7575bdadc00229ac240/ruff-0.15.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8dc18f30302e379fe1e998548b0f5e9f4dff907f52f73ad6da419ea9c19d66c8", size = 11914251, upload-time = "2026-03-05T20:06:22.887Z" }, + { url = "https://files.pythonhosted.org/packages/77/46/0f7c865c10cf896ccf5a939c3e84e1cfaeed608ff5249584799a74d33835/ruff-0.15.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1cc6e7f90087e2d27f98dc34ed1b3ab7c8f0d273cc5431415454e22c0bd2a681", size = 11333801, upload-time = "2026-03-05T20:05:57.168Z" }, + { url = "https://files.pythonhosted.org/packages/d3/01/a10fe54b653061585e655f5286c2662ebddb68831ed3eaebfb0eb08c0a16/ruff-0.15.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1cb7169f53c1ddb06e71a9aebd7e98fc0fea936b39afb36d8e86d36ecc2636a", size = 11206821, upload-time = "2026-03-05T20:06:03.441Z" }, + { url = "https://files.pythonhosted.org/packages/7a/0d/2132ceaf20c5e8699aa83da2706ecb5c5dcdf78b453f77edca7fb70f8a93/ruff-0.15.5-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:9b037924500a31ee17389b5c8c4d88874cc6ea8e42f12e9c61a3d754ff72f1ca", size = 11133326, upload-time = "2026-03-05T20:06:25.655Z" }, + { url = "https://files.pythonhosted.org/packages/72/cb/2e5259a7eb2a0f87c08c0fe5bf5825a1e4b90883a52685524596bfc93072/ruff-0.15.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:65bb414e5b4eadd95a8c1e4804f6772bbe8995889f203a01f77ddf2d790929dd", size = 10510820, upload-time = "2026-03-05T20:06:37.79Z" }, + { url = "https://files.pythonhosted.org/packages/ff/20/b67ce78f9e6c59ffbdb5b4503d0090e749b5f2d31b599b554698a80d861c/ruff-0.15.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d20aa469ae3b57033519c559e9bc9cd9e782842e39be05b50e852c7c981fa01d", size = 10302395, upload-time = "2026-03-05T20:05:54.504Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e5/719f1acccd31b720d477751558ed74e9c88134adcc377e5e886af89d3072/ruff-0.15.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:15388dd28c9161cdb8eda68993533acc870aa4e646a0a277aa166de9ad5a8752", size = 10754069, upload-time = "2026-03-05T20:06:06.422Z" }, + { url = "https://files.pythonhosted.org/packages/c3/9c/d1db14469e32d98f3ca27079dbd30b7b44dbb5317d06ab36718dee3baf03/ruff-0.15.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b30da330cbd03bed0c21420b6b953158f60c74c54c5f4c1dabbdf3a57bf355d2", size = 11304315, upload-time = "2026-03-05T20:06:10.867Z" }, + { url = "https://files.pythonhosted.org/packages/28/3a/950367aee7c69027f4f422059227b290ed780366b6aecee5de5039d50fa8/ruff-0.15.5-py3-none-win32.whl", hash = "sha256:732e5ee1f98ba5b3679029989a06ca39a950cced52143a0ea82a2102cb592b74", size = 10551676, upload-time = "2026-03-05T20:06:13.705Z" }, + { url = "https://files.pythonhosted.org/packages/b8/00/bf077a505b4e649bdd3c47ff8ec967735ce2544c8e4a43aba42ee9bf935d/ruff-0.15.5-py3-none-win_amd64.whl", hash = "sha256:821d41c5fa9e19117616c35eaa3f4b75046ec76c65e7ae20a333e9a8696bc7fe", size = 11678972, upload-time = "2026-03-05T20:06:45.379Z" }, + { url = "https://files.pythonhosted.org/packages/fe/4e/cd76eca6db6115604b7626668e891c9dd03330384082e33662fb0f113614/ruff-0.15.5-py3-none-win_arm64.whl", hash = "sha256:b498d1c60d2fe5c10c45ec3f698901065772730b411f164ae270bb6bfcc4740b", size = 10965572, upload-time = "2026-03-05T20:06:16.984Z" }, ] [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041, upload-time = "2021-05-05T14:18:18.379Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053, upload-time = "2021-05-05T14:18:17.237Z" }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] [[package]] name = "snowballstemmer" -version = "2.2.0" +version = "3.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/44/7b/af302bebf22c749c56c9c3e8ae13190b5b5db37a33d9068652e8f73b7089/snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1", size = 86699, upload-time = "2021-11-16T18:38:38.009Z" } +sdist = { url = "https://files.pythonhosted.org/packages/75/a7/9810d872919697c9d01295633f5d574fb416d47e535f258272ca1f01f447/snowballstemmer-3.0.1.tar.gz", hash = "sha256:6d5eeeec8e9f84d4d56b847692bacf79bc2c8e90c7f80ca4444ff8b6f2e52895", size = 105575, upload-time = "2025-05-09T16:34:51.843Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a", size = 93002, upload-time = "2021-11-16T18:38:34.792Z" }, + { url = "https://files.pythonhosted.org/packages/c8/78/3565d011c61f5a43488987ee32b6f3f656e7f107ac2782dd57bdd7d91d9a/snowballstemmer-3.0.1-py3-none-any.whl", hash = "sha256:6cd7b3897da8d6c9ffb968a6781fa6532dce9c3618a4b127d920dab764a19064", size = 103274, upload-time = "2025-05-09T16:34:50.371Z" }, ] [[package]] name = "sphinx" -version = "5.3.0" +version = "8.1.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version < '3.9'", + "python_full_version < '3.11'", ] dependencies = [ - { name = "alabaster", marker = "python_full_version < '3.9'" }, - { name = "babel", marker = "python_full_version < '3.9'" }, - { name = "colorama", marker = "python_full_version < '3.9' and sys_platform == 'win32'" }, - { name = "docutils", marker = "python_full_version < '3.9'" }, - { name = "imagesize", marker = "python_full_version < '3.9'" }, - { name = "importlib-metadata", marker = "python_full_version < '3.9'" }, - { name = "jinja2", marker = "python_full_version < '3.9'" }, - { name = "packaging", marker = "python_full_version < '3.9'" }, - { name = "pygments", marker = "python_full_version < '3.9'" }, - { name = "requests", marker = "python_full_version < '3.9'" }, - { name = "snowballstemmer", marker = "python_full_version < '3.9'" }, - { name = "sphinxcontrib-applehelp", marker = "python_full_version < '3.9'" }, - { name = "sphinxcontrib-devhelp", marker = "python_full_version < '3.9'" }, - { name = "sphinxcontrib-htmlhelp", marker = "python_full_version < '3.9'" }, - { name = "sphinxcontrib-jsmath", marker = "python_full_version < '3.9'" }, - { name = "sphinxcontrib-qthelp", marker = "python_full_version < '3.9'" }, - { name = "sphinxcontrib-serializinghtml", marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/af/b2/02a43597980903483fe5eb081ee8e0ba2bb62ea43a70499484343795f3bf/Sphinx-5.3.0.tar.gz", hash = "sha256:51026de0a9ff9fc13c05d74913ad66047e104f56a129ff73e174eb5c3ee794b5", size = 6811365, upload-time = "2022-10-16T09:58:25.963Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/67/a7/01dd6fd9653c056258d65032aa09a615b5d7b07dd840845a9f41a8860fbc/sphinx-5.3.0-py3-none-any.whl", hash = "sha256:060ca5c9f7ba57a08a1219e547b269fadf125ae25b06b9fa7f66768efb652d6d", size = 3183160, upload-time = "2022-10-16T09:58:21.63Z" }, + { name = "alabaster", marker = "python_full_version < '3.11'" }, + { name = "babel", marker = "python_full_version < '3.11'" }, + { name = "colorama", marker = "python_full_version < '3.11' and sys_platform == 'win32'" }, + { name = "docutils", version = "0.21.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "imagesize", marker = "python_full_version < '3.11'" }, + { name = "jinja2", marker = "python_full_version < '3.11'" }, + { name = "packaging", marker = "python_full_version < '3.11'" }, + { name = "pygments", marker = "python_full_version < '3.11'" }, + { name = "requests", marker = "python_full_version < '3.11'" }, + { name = "snowballstemmer", marker = "python_full_version < '3.11'" }, + { name = "sphinxcontrib-applehelp", marker = "python_full_version < '3.11'" }, + { name = "sphinxcontrib-devhelp", marker = "python_full_version < '3.11'" }, + { name = "sphinxcontrib-htmlhelp", marker = "python_full_version < '3.11'" }, + { name = "sphinxcontrib-jsmath", marker = "python_full_version < '3.11'" }, + { name = "sphinxcontrib-qthelp", marker = "python_full_version < '3.11'" }, + { name = "sphinxcontrib-serializinghtml", marker = "python_full_version < '3.11'" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/be0b61178fe2cdcb67e2a92fc9ebb488e3c51c4f74a36a7824c0adf23425/sphinx-8.1.3.tar.gz", hash = "sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927", size = 8184611, upload-time = "2024-10-13T20:27:13.93Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/60/1ddff83a56d33aaf6f10ec8ce84b4c007d9368b21008876fceda7e7381ef/sphinx-8.1.3-py3-none-any.whl", hash = "sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2", size = 3487125, upload-time = "2024-10-13T20:27:10.448Z" }, ] [[package]] name = "sphinx" -version = "7.1.2" +version = "9.0.4" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.9' and python_full_version < '3.12'", - "python_full_version == '3.12.*'", - "python_full_version >= '3.13'", + "python_full_version == '3.11.*'", ] dependencies = [ - { name = "alabaster", marker = "python_full_version >= '3.9'" }, - { name = "babel", marker = "python_full_version >= '3.9'" }, - { name = "colorama", marker = "python_full_version >= '3.9' and sys_platform == 'win32'" }, - { name = "docutils", marker = "python_full_version >= '3.9'" }, - { name = "imagesize", marker = "python_full_version >= '3.9'" }, - { name = "importlib-metadata", marker = "python_full_version == '3.9.*'" }, - { name = "jinja2", marker = "python_full_version >= '3.9'" }, - { name = "packaging", marker = "python_full_version >= '3.9'" }, - { name = "pygments", marker = "python_full_version >= '3.9'" }, - { name = "requests", marker = "python_full_version >= '3.9'" }, - { name = "snowballstemmer", marker = "python_full_version >= '3.9'" }, - { name = "sphinxcontrib-applehelp", marker = "python_full_version >= '3.9'" }, - { name = "sphinxcontrib-devhelp", marker = "python_full_version >= '3.9'" }, - { name = "sphinxcontrib-htmlhelp", marker = "python_full_version >= '3.9'" }, - { name = "sphinxcontrib-jsmath", marker = "python_full_version >= '3.9'" }, - { name = "sphinxcontrib-qthelp", marker = "python_full_version >= '3.9'" }, - { name = "sphinxcontrib-serializinghtml", marker = "python_full_version >= '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/dc/01/688bdf9282241dca09fe6e3a1110eda399fa9b10d0672db609e37c2e7a39/sphinx-7.1.2.tar.gz", hash = "sha256:780f4d32f1d7d1126576e0e5ecc19dc32ab76cd24e950228dcf7b1f6d3d9e22f", size = 6828258, upload-time = "2023-08-02T02:06:09.375Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/48/17/325cf6a257d84751a48ae90752b3d8fe0be8f9535b6253add61c49d0d9bc/sphinx-7.1.2-py3-none-any.whl", hash = "sha256:d170a81825b2fcacb6dfd5a0d7f578a053e45d3f2b153fecc948c37344eb4cbe", size = 3169543, upload-time = "2023-08-02T02:06:06.816Z" }, + { name = "alabaster", marker = "python_full_version == '3.11.*'" }, + { name = "babel", marker = "python_full_version == '3.11.*'" }, + { name = "colorama", marker = "python_full_version == '3.11.*' and sys_platform == 'win32'" }, + { name = "docutils", version = "0.22.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "imagesize", marker = "python_full_version == '3.11.*'" }, + { name = "jinja2", marker = "python_full_version == '3.11.*'" }, + { name = "packaging", marker = "python_full_version == '3.11.*'" }, + { name = "pygments", marker = "python_full_version == '3.11.*'" }, + { name = "requests", marker = "python_full_version == '3.11.*'" }, + { name = "roman-numerals", marker = "python_full_version == '3.11.*'" }, + { name = "snowballstemmer", marker = "python_full_version == '3.11.*'" }, + { name = "sphinxcontrib-applehelp", marker = "python_full_version == '3.11.*'" }, + { name = "sphinxcontrib-devhelp", marker = "python_full_version == '3.11.*'" }, + { name = "sphinxcontrib-htmlhelp", marker = "python_full_version == '3.11.*'" }, + { name = "sphinxcontrib-jsmath", marker = "python_full_version == '3.11.*'" }, + { name = "sphinxcontrib-qthelp", marker = "python_full_version == '3.11.*'" }, + { name = "sphinxcontrib-serializinghtml", marker = "python_full_version == '3.11.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/50/a8c6ccc36d5eacdfd7913ddccd15a9cee03ecafc5ee2bc40e1f168d85022/sphinx-9.0.4.tar.gz", hash = "sha256:594ef59d042972abbc581d8baa577404abe4e6c3b04ef61bd7fc2acbd51f3fa3", size = 8710502, upload-time = "2025-12-04T07:45:27.343Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/3f/4bbd76424c393caead2e1eb89777f575dee5c8653e2d4b6afd7a564f5974/sphinx-9.0.4-py3-none-any.whl", hash = "sha256:5bebc595a5e943ea248b99c13814c1c5e10b3ece718976824ffa7959ff95fffb", size = 3917713, upload-time = "2025-12-04T07:45:24.944Z" }, ] [[package]] -name = "sphinx-autoapi" -version = "2.1.1" +name = "sphinx" +version = "9.1.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version < '3.9'", + "python_full_version >= '3.12'", ] dependencies = [ - { name = "anyascii", marker = "python_full_version < '3.9'" }, - { name = "astroid", marker = "python_full_version < '3.9'" }, - { name = "jinja2", marker = "python_full_version < '3.9'" }, - { name = "pyyaml", marker = "python_full_version < '3.9'" }, - { name = "sphinx", version = "5.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/71/6a/e9448b7bd3f892e05e538779f0c39e764457807bf08b252c19542f6d0833/sphinx-autoapi-2.1.1.tar.gz", hash = "sha256:fbadb96e79020d6b0ec45d888517bf816d6b587a2d340fbe1ec31135e300a6c8", size = 42160540, upload-time = "2023-06-10T18:03:26.623Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/33/90ed4963df94d3780fe0fd61ce834ae17dcdc507060a3fb1610a68309f2f/sphinx_autoapi-2.1.1-py2.py3-none-any.whl", hash = "sha256:d8da890477bd18e3327cafdead9d5a44a7d798476c6fa32492100e288250a5a3", size = 54197, upload-time = "2023-06-10T18:03:20.433Z" }, + { name = "alabaster", marker = "python_full_version >= '3.12'" }, + { name = "babel", marker = "python_full_version >= '3.12'" }, + { name = "colorama", marker = "python_full_version >= '3.12' and sys_platform == 'win32'" }, + { name = "docutils", version = "0.22.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "imagesize", marker = "python_full_version >= '3.12'" }, + { name = "jinja2", marker = "python_full_version >= '3.12'" }, + { name = "packaging", marker = "python_full_version >= '3.12'" }, + { name = "pygments", marker = "python_full_version >= '3.12'" }, + { name = "requests", marker = "python_full_version >= '3.12'" }, + { name = "roman-numerals", marker = "python_full_version >= '3.12'" }, + { name = "snowballstemmer", marker = "python_full_version >= '3.12'" }, + { name = "sphinxcontrib-applehelp", marker = "python_full_version >= '3.12'" }, + { name = "sphinxcontrib-devhelp", marker = "python_full_version >= '3.12'" }, + { name = "sphinxcontrib-htmlhelp", marker = "python_full_version >= '3.12'" }, + { name = "sphinxcontrib-jsmath", marker = "python_full_version >= '3.12'" }, + { name = "sphinxcontrib-qthelp", marker = "python_full_version >= '3.12'" }, + { name = "sphinxcontrib-serializinghtml", marker = "python_full_version >= '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/bd/f08eb0f4eed5c83f1ba2a3bd18f7745a2b1525fad70660a1c00224ec468a/sphinx-9.1.0.tar.gz", hash = "sha256:7741722357dd75f8190766926071fed3bdc211c74dd2d7d4df5404da95930ddb", size = 8718324, upload-time = "2025-12-31T15:09:27.646Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl", hash = "sha256:c84fdd4e782504495fe4f2c0b3413d6c2bf388589bb352d439b2a3bb99991978", size = 3921742, upload-time = "2025-12-31T15:09:25.561Z" }, ] [[package]] name = "sphinx-autoapi" -version = "3.3.2" +version = "3.8.0" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.9' and python_full_version < '3.12'", - "python_full_version == '3.12.*'", - "python_full_version >= '3.13'", -] dependencies = [ - { name = "astroid", marker = "python_full_version >= '3.9'" }, - { name = "jinja2", marker = "python_full_version >= '3.9'" }, - { name = "pyyaml", marker = "python_full_version >= '3.9'" }, - { name = "sphinx", version = "7.1.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "stdlib-list", marker = "python_full_version == '3.9.*'" }, + { name = "astroid" }, + { name = "jinja2" }, + { name = "pyyaml" }, + { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e1/00/aeca40dec5288678df6dbe69c9fcc3fd5d53d1f94a462f4e6bb821d389a8/sphinx_autoapi-3.3.2.tar.gz", hash = "sha256:ebf8b44b2ebab5c28f0263ec6c2f8acdd156e9b2d539a58eca39d2f368445173", size = 66053, upload-time = "2024-09-25T23:55:57.832Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/25/386d851320bc306e9d7d41b8cecf113f638e205a99595c481c146622de94/sphinx_autoapi-3.8.0.tar.gz", hash = "sha256:9f8ac7d43baf28a0831ac0e392fab6a095b875af07e52d135a5f716cc3cf1142", size = 58418, upload-time = "2026-03-08T03:49:52.931Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/71/f4/73094ddb805607c5661e1b80f528e5235710e52b37a890423ad2ba5a7cee/sphinx_autoapi-3.3.2-py2.py3-none-any.whl", hash = "sha256:08afa656f7fcd45fe7dd64bf9f44698ddb8ca7c2d5cd0614c7455912ed580324", size = 34778, upload-time = "2024-09-25T23:55:56.541Z" }, + { url = "https://files.pythonhosted.org/packages/2f/3a/8923a543fa2422d32be4c5311f488e4f275acde263c811e4d5d22bb544cb/sphinx_autoapi-3.8.0-py3-none-any.whl", hash = "sha256:245aefdeab85609ae4aa3576b0d99f69676aa6333dda438761bd125755b3c42d", size = 35994, upload-time = "2026-03-08T03:49:51.383Z" }, ] [[package]] name = "sphinx-rtd-theme" -version = "2.0.0" +version = "3.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "docutils" }, - { name = "sphinx", version = "5.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "sphinx", version = "7.1.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "docutils", version = "0.21.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "docutils", version = "0.22.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, { name = "sphinxcontrib-jquery" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fe/33/2a35a9cdbfda9086bda11457bcc872173ab3565b16b6d7f6b3efaa6dc3d6/sphinx_rtd_theme-2.0.0.tar.gz", hash = "sha256:bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b", size = 2785005, upload-time = "2023-11-28T04:14:03.104Z" } +sdist = { url = "https://files.pythonhosted.org/packages/84/68/a1bfbf38c0f7bccc9b10bbf76b94606f64acb1552ae394f0b8285bfaea25/sphinx_rtd_theme-3.1.0.tar.gz", hash = "sha256:b44276f2c276e909239a4f6c955aa667aaafeb78597923b1c60babc76db78e4c", size = 7620915, upload-time = "2026-01-12T16:03:31.17Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ea/46/00fda84467815c29951a9c91e3ae7503c409ddad04373e7cfc78daad4300/sphinx_rtd_theme-2.0.0-py2.py3-none-any.whl", hash = "sha256:ec93d0856dc280cf3aee9a4c9807c60e027c7f7b461b77aeffed682e68f0e586", size = 2824721, upload-time = "2023-11-28T04:13:59.589Z" }, + { url = "https://files.pythonhosted.org/packages/87/c7/b5c8015d823bfda1a346adb2c634a2101d50bb75d421eb6dcb31acd25ebc/sphinx_rtd_theme-3.1.0-py2.py3-none-any.whl", hash = "sha256:1785824ae8e6632060490f67cf3a72d404a85d2d9fc26bce3619944de5682b89", size = 7655617, upload-time = "2026-01-12T16:03:28.101Z" }, ] [[package]] name = "sphinxcontrib-applehelp" -version = "1.0.4" +version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/32/df/45e827f4d7e7fcc84e853bcef1d836effd762d63ccb86f43ede4e98b478c/sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e", size = 24766, upload-time = "2023-01-23T09:41:54.435Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/6e/b837e84a1a704953c62ef8776d45c3e8d759876b4a84fe14eba2859106fe/sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1", size = 20053, upload-time = "2024-07-29T01:09:00.465Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/06/c1/5e2cafbd03105ce50d8500f9b4e8a6e8d02e22d0475b574c3b3e9451a15f/sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228", size = 120601, upload-time = "2023-01-23T09:41:52.364Z" }, + { url = "https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5", size = 119300, upload-time = "2024-07-29T01:08:58.99Z" }, ] [[package]] name = "sphinxcontrib-devhelp" -version = "1.0.2" +version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/33/dc28393f16385f722c893cb55539c641c9aaec8d1bc1c15b69ce0ac2dbb3/sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4", size = 17398, upload-time = "2020-02-29T04:14:43.378Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/d2/5beee64d3e4e747f316bae86b55943f51e82bb86ecd325883ef65741e7da/sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad", size = 12967, upload-time = "2024-07-29T01:09:23.417Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/09/5de5ed43a521387f18bdf5f5af31d099605c992fd25372b2b9b825ce48ee/sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e", size = 84690, upload-time = "2020-02-29T04:14:40.765Z" }, + { url = "https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2", size = 82530, upload-time = "2024-07-29T01:09:21.945Z" }, ] [[package]] name = "sphinxcontrib-htmlhelp" -version = "2.0.1" +version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b3/47/64cff68ea3aa450c373301e5bebfbb9fce0a3e70aca245fcadd4af06cd75/sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff", size = 27967, upload-time = "2023-01-31T17:29:20.935Z" } +sdist = { url = "https://files.pythonhosted.org/packages/43/93/983afd9aa001e5201eab16b5a444ed5b9b0a7a010541e0ddfbbfd0b2470c/sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9", size = 22617, upload-time = "2024-07-29T01:09:37.889Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6e/ee/a1f5e39046cbb5f8bc8fba87d1ddf1c6643fbc9194e58d26e606de4b9074/sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903", size = 99833, upload-time = "2023-01-31T17:29:18.489Z" }, + { url = "https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8", size = 98705, upload-time = "2024-07-29T01:09:36.407Z" }, ] [[package]] @@ -2222,8 +2291,9 @@ name = "sphinxcontrib-jquery" version = "4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "sphinx", version = "5.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "sphinx", version = "7.1.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/de/f3/aa67467e051df70a6330fe7770894b3e4f09436dea6881ae0b4f3d87cad8/sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a", size = 122331, upload-time = "2023-03-14T15:01:01.944Z" } wheels = [ @@ -2241,73 +2311,80 @@ wheels = [ [[package]] name = "sphinxcontrib-qthelp" -version = "1.0.3" +version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b1/8e/c4846e59f38a5f2b4a0e3b27af38f2fcf904d4bfd82095bf92de0b114ebd/sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72", size = 21658, upload-time = "2020-02-29T04:19:10.026Z" } +sdist = { url = "https://files.pythonhosted.org/packages/68/bc/9104308fc285eb3e0b31b67688235db556cd5b0ef31d96f30e45f2e51cae/sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab", size = 17165, upload-time = "2024-07-29T01:09:56.435Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/14/05f9206cf4e9cfca1afb5fd224c7cd434dcc3a433d6d9e4e0264d29c6cdb/sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6", size = 90609, upload-time = "2020-02-29T04:19:08.451Z" }, + { url = "https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb", size = 88743, upload-time = "2024-07-29T01:09:54.885Z" }, ] [[package]] name = "sphinxcontrib-serializinghtml" -version = "1.1.5" +version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b5/72/835d6fadb9e5d02304cf39b18f93d227cd93abd3c41ebf58e6853eeb1455/sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952", size = 21019, upload-time = "2021-05-22T16:07:43.043Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3b/44/6716b257b0aa6bfd51a1b31665d1c205fb12cb5ad56de752dfa15657de2f/sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d", size = 16080, upload-time = "2024-07-29T01:10:09.332Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/77/5464ec50dd0f1c1037e3c93249b040c8fc8078fdda97530eeb02424b6eea/sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd", size = 94021, upload-time = "2021-05-22T16:07:41.627Z" }, + { url = "https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331", size = 92072, upload-time = "2024-07-29T01:10:08.203Z" }, ] [[package]] name = "sqlalchemy" -version = "2.0.35" +version = "2.0.48" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "greenlet", marker = "(python_full_version < '3.13' and platform_machine == 'AMD64') or (python_full_version < '3.13' and platform_machine == 'WIN32') or (python_full_version < '3.13' and platform_machine == 'aarch64') or (python_full_version < '3.13' and platform_machine == 'amd64') or (python_full_version < '3.13' and platform_machine == 'ppc64le') or (python_full_version < '3.13' and platform_machine == 'win32') or (python_full_version < '3.13' and platform_machine == 'x86_64')" }, + { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/36/48/4f190a83525f5cefefa44f6adc9e6386c4de5218d686c27eda92eb1f5424/sqlalchemy-2.0.35.tar.gz", hash = "sha256:e11d7ea4d24f0a262bccf9a7cd6284c976c5369dac21db237cff59586045ab9f", size = 9562798, upload-time = "2024-09-16T20:30:05.964Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/61/19395d0ae78c94f6f80c8adf39a142f3fe56cfb2235d8f2317d6dae1bf0e/SQLAlchemy-2.0.35-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:67219632be22f14750f0d1c70e62f204ba69d28f62fd6432ba05ab295853de9b", size = 2090086, upload-time = "2024-09-16T21:29:05.376Z" }, - { url = "https://files.pythonhosted.org/packages/e6/82/06b5fcbe5d49043e40cf4e01e3b33c471c8d9292d478420b08538cae8928/SQLAlchemy-2.0.35-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4668bd8faf7e5b71c0319407b608f278f279668f358857dbfd10ef1954ac9f90", size = 2081278, upload-time = "2024-09-16T21:29:07.224Z" }, - { url = "https://files.pythonhosted.org/packages/68/d1/7fb7ee46949a5fb34005795b1fc06a8fef67587a66da731c14e545f7eb5b/SQLAlchemy-2.0.35-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb8bea573863762bbf45d1e13f87c2d2fd32cee2dbd50d050f83f87429c9e1ea", size = 3063763, upload-time = "2024-09-17T01:18:12.769Z" }, - { url = "https://files.pythonhosted.org/packages/7e/ff/a1eacd78b31e52a5073e9924fb4722ecc2a72f093ca8181ed81fc61aed2e/SQLAlchemy-2.0.35-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f552023710d4b93d8fb29a91fadf97de89c5926c6bd758897875435f2a939f33", size = 3072032, upload-time = "2024-09-16T21:23:30.311Z" }, - { url = "https://files.pythonhosted.org/packages/21/ae/ddfecf149a6d16af87408bca7bd108eef7ef23d376cc8464317efb3cea3f/SQLAlchemy-2.0.35-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:016b2e665f778f13d3c438651dd4de244214b527a275e0acf1d44c05bc6026a9", size = 3028092, upload-time = "2024-09-17T01:18:16.133Z" }, - { url = "https://files.pythonhosted.org/packages/cc/51/3e84d42121662a160bacd311cfacb29c1e6a229d59dd8edb09caa8ab283b/SQLAlchemy-2.0.35-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7befc148de64b6060937231cbff8d01ccf0bfd75aa26383ffdf8d82b12ec04ff", size = 3053543, upload-time = "2024-09-16T21:23:32.274Z" }, - { url = "https://files.pythonhosted.org/packages/3e/7a/039c78105958da3fc361887f0a82c974cb6fa5bba965c1689ec778be1c01/SQLAlchemy-2.0.35-cp310-cp310-win32.whl", hash = "sha256:22b83aed390e3099584b839b93f80a0f4a95ee7f48270c97c90acd40ee646f0b", size = 2062372, upload-time = "2024-09-16T21:03:04.722Z" }, - { url = "https://files.pythonhosted.org/packages/a2/50/f31e927d32f9729f69d150ffe47e7cf51e3e0bb2148fc400b3e93a92ca4c/SQLAlchemy-2.0.35-cp310-cp310-win_amd64.whl", hash = "sha256:a29762cd3d116585278ffb2e5b8cc311fb095ea278b96feef28d0b423154858e", size = 2086485, upload-time = "2024-09-16T21:03:06.66Z" }, - { url = "https://files.pythonhosted.org/packages/c3/46/9215a35bf98c3a2528e987791e6180eb51624d2c7d5cb8e2d96a6450b657/SQLAlchemy-2.0.35-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e21f66748ab725ade40fa7af8ec8b5019c68ab00b929f6643e1b1af461eddb60", size = 2091274, upload-time = "2024-09-16T21:07:13.344Z" }, - { url = "https://files.pythonhosted.org/packages/1e/69/919673c5101a0c633658d58b11b454b251ca82300941fba801201434755d/SQLAlchemy-2.0.35-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8a6219108a15fc6d24de499d0d515c7235c617b2540d97116b663dade1a54d62", size = 2081672, upload-time = "2024-09-16T21:07:14.807Z" }, - { url = "https://files.pythonhosted.org/packages/67/ea/a6b0597cbda12796be2302153369dbbe90573fdab3bc4885f8efac499247/SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:042622a5306c23b972192283f4e22372da3b8ddf5f7aac1cc5d9c9b222ab3ff6", size = 3200083, upload-time = "2024-09-16T22:45:15.766Z" }, - { url = "https://files.pythonhosted.org/packages/8c/d6/97bdc8d714fb21762f2092511f380f18cdb2d985d516071fa925bb433a90/SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:627dee0c280eea91aed87b20a1f849e9ae2fe719d52cbf847c0e0ea34464b3f7", size = 3200080, upload-time = "2024-09-16T21:18:19.033Z" }, - { url = "https://files.pythonhosted.org/packages/87/d2/8c2adaf2ade4f6f1b725acd0b0be9210bb6a2df41024729a8eec6a86fe5a/SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4fdcd72a789c1c31ed242fd8c1bcd9ea186a98ee8e5408a50e610edfef980d71", size = 3137108, upload-time = "2024-09-16T22:45:19.167Z" }, - { url = "https://files.pythonhosted.org/packages/7e/ae/ea05d0bfa8f2b25ae34591895147152854fc950f491c4ce362ae06035db8/SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:89b64cd8898a3a6f642db4eb7b26d1b28a497d4022eccd7717ca066823e9fb01", size = 3157437, upload-time = "2024-09-16T21:18:21.988Z" }, - { url = "https://files.pythonhosted.org/packages/fe/5d/8ad6df01398388a766163d27960b3365f1bbd8bb7b05b5cad321a8b69b25/SQLAlchemy-2.0.35-cp311-cp311-win32.whl", hash = "sha256:6a93c5a0dfe8d34951e8a6f499a9479ffb9258123551fa007fc708ae2ac2bc5e", size = 2061935, upload-time = "2024-09-16T20:54:10.564Z" }, - { url = "https://files.pythonhosted.org/packages/ff/68/8557efc0c32c8e2c147cb6512237448b8ed594a57cd015fda67f8e56bb3f/SQLAlchemy-2.0.35-cp311-cp311-win_amd64.whl", hash = "sha256:c68fe3fcde03920c46697585620135b4ecfdfc1ed23e75cc2c2ae9f8502c10b8", size = 2087281, upload-time = "2024-09-16T20:54:13.429Z" }, - { url = "https://files.pythonhosted.org/packages/2f/2b/fff87e6db0da31212c98bbc445f83fb608ea92b96bda3f3f10e373bac76c/SQLAlchemy-2.0.35-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:eb60b026d8ad0c97917cb81d3662d0b39b8ff1335e3fabb24984c6acd0c900a2", size = 2089790, upload-time = "2024-09-16T21:07:16.161Z" }, - { url = "https://files.pythonhosted.org/packages/68/92/4bb761bd82764d5827bf6b6095168c40fb5dbbd23670203aef2f96ba6bc6/SQLAlchemy-2.0.35-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6921ee01caf375363be5e9ae70d08ce7ca9d7e0e8983183080211a062d299468", size = 2080266, upload-time = "2024-09-16T21:07:18.277Z" }, - { url = "https://files.pythonhosted.org/packages/22/46/068a65db6dc253c6f25a7598d99e0a1d60b14f661f9d09ef6c73c718fa4e/SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cdf1a0dbe5ced887a9b127da4ffd7354e9c1a3b9bb330dce84df6b70ccb3a8d", size = 3229760, upload-time = "2024-09-16T22:45:20.863Z" }, - { url = "https://files.pythonhosted.org/packages/6e/36/59830dafe40dda592304debd4cd86e583f63472f3a62c9e2695a5795e786/SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93a71c8601e823236ac0e5d087e4f397874a421017b3318fd92c0b14acf2b6db", size = 3240649, upload-time = "2024-09-16T21:18:23.996Z" }, - { url = "https://files.pythonhosted.org/packages/00/50/844c50c6996f9c7f000c959dd1a7436a6c94e449ee113046a1d19e470089/SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e04b622bb8a88f10e439084486f2f6349bf4d50605ac3e445869c7ea5cf0fa8c", size = 3176138, upload-time = "2024-09-16T22:45:22.518Z" }, - { url = "https://files.pythonhosted.org/packages/df/d2/336b18cac68eecb67de474fc15c85f13be4e615c6f5bae87ea38c6734ce0/SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1b56961e2d31389aaadf4906d453859f35302b4eb818d34a26fab72596076bb8", size = 3202753, upload-time = "2024-09-16T21:18:25.966Z" }, - { url = "https://files.pythonhosted.org/packages/f0/f3/ee1e62fabdc10910b5ef720ae08e59bc785f26652876af3a50b89b97b412/SQLAlchemy-2.0.35-cp312-cp312-win32.whl", hash = "sha256:0f9f3f9a3763b9c4deb8c5d09c4cc52ffe49f9876af41cc1b2ad0138878453cf", size = 2060113, upload-time = "2024-09-16T20:54:15.16Z" }, - { url = "https://files.pythonhosted.org/packages/60/63/a3cef44a52979169d884f3583d0640e64b3c28122c096474a1d7cfcaf1f3/SQLAlchemy-2.0.35-cp312-cp312-win_amd64.whl", hash = "sha256:25b0f63e7fcc2a6290cb5f7f5b4fc4047843504983a28856ce9b35d8f7de03cc", size = 2085839, upload-time = "2024-09-16T20:54:17.11Z" }, - { url = "https://files.pythonhosted.org/packages/da/bb/38c09ba518abc7da92d6bf638143cfe6298c12e5df0f1b37538e4ea46feb/SQLAlchemy-2.0.35-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4c31943b61ed8fdd63dfd12ccc919f2bf95eefca133767db6fbbd15da62078ec", size = 2095015, upload-time = "2024-09-16T21:23:34.897Z" }, - { url = "https://files.pythonhosted.org/packages/c2/73/7d133479bc602dfb993bafe109727cf8684b3119e9bdee8c8510ebface91/SQLAlchemy-2.0.35-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a62dd5d7cc8626a3634208df458c5fe4f21200d96a74d122c83bc2015b333bc1", size = 2085697, upload-time = "2024-09-16T21:23:37.942Z" }, - { url = "https://files.pythonhosted.org/packages/d9/54/bef04ac2ad5becdcc9f9de6f80d7bf0f679a5d288b1de95507b9823644d6/SQLAlchemy-2.0.35-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0630774b0977804fba4b6bbea6852ab56c14965a2b0c7fc7282c5f7d90a1ae72", size = 3088293, upload-time = "2024-09-16T23:13:42.08Z" }, - { url = "https://files.pythonhosted.org/packages/19/7f/95df57d4763477c23ef2c72ca2fdb0ac3dbf4cc473052b3728cd586185ea/SQLAlchemy-2.0.35-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d625eddf7efeba2abfd9c014a22c0f6b3796e0ffb48f5d5ab106568ef01ff5a", size = 3095166, upload-time = "2024-09-16T21:20:54.137Z" }, - { url = "https://files.pythonhosted.org/packages/97/38/ec497616369b9d1dabd90f80a9a7da2f5e07b8a1ea934a283cbd19a9f3eb/SQLAlchemy-2.0.35-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ada603db10bb865bbe591939de854faf2c60f43c9b763e90f653224138f910d9", size = 3042288, upload-time = "2024-09-16T23:13:44.291Z" }, - { url = "https://files.pythonhosted.org/packages/30/99/9d8513d54b9455ebd10d6e1089e0742578e64c144f5dbbf1f8b74bb0f851/SQLAlchemy-2.0.35-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c41411e192f8d3ea39ea70e0fae48762cd11a2244e03751a98bd3c0ca9a4e936", size = 3065416, upload-time = "2024-09-16T21:20:55.573Z" }, - { url = "https://files.pythonhosted.org/packages/b3/bb/1e31ed9b69080d5d962497189628c3f695e3186949640635db5aa3190ab2/SQLAlchemy-2.0.35-cp38-cp38-win32.whl", hash = "sha256:d299797d75cd747e7797b1b41817111406b8b10a4f88b6e8fe5b5e59598b43b0", size = 2064976, upload-time = "2024-09-16T20:55:49.138Z" }, - { url = "https://files.pythonhosted.org/packages/a2/0c/9e6f99e0e7ae3e01a159b91f8adef6a32d893a8b21196d9d2d1591280ae5/SQLAlchemy-2.0.35-cp38-cp38-win_amd64.whl", hash = "sha256:0375a141e1c0878103eb3d719eb6d5aa444b490c96f3fedab8471c7f6ffe70ee", size = 2089743, upload-time = "2024-09-16T20:55:50.709Z" }, - { url = "https://files.pythonhosted.org/packages/d1/4c/3a538c077057a449441b3e10a62ff1608eaa6e0910e681b2664ce0bcf961/SQLAlchemy-2.0.35-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ccae5de2a0140d8be6838c331604f91d6fafd0735dbdcee1ac78fc8fbaba76b4", size = 2092966, upload-time = "2024-09-16T21:29:09.019Z" }, - { url = "https://files.pythonhosted.org/packages/4e/f0/ac290c05f9118cff70e48abd598bcb0dfb725a7ad0aeebaaa0d781d75367/SQLAlchemy-2.0.35-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2a275a806f73e849e1c309ac11108ea1a14cd7058577aba962cd7190e27c9e3c", size = 2084203, upload-time = "2024-09-16T21:29:10.759Z" }, - { url = "https://files.pythonhosted.org/packages/8f/a7/6ddbcefb0ada3dbc9bc9260de32f9cd85b1eb5ea35c12344472a028a606e/SQLAlchemy-2.0.35-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:732e026240cdd1c1b2e3ac515c7a23820430ed94292ce33806a95869c46bd139", size = 3078233, upload-time = "2024-09-17T01:18:18.109Z" }, - { url = "https://files.pythonhosted.org/packages/08/7b/6fae14cf33ebc54423f0e9c7de793dd2debe3ffd44b399a4905adb4b1225/SQLAlchemy-2.0.35-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:890da8cd1941fa3dab28c5bac3b9da8502e7e366f895b3b8e500896f12f94d11", size = 3086017, upload-time = "2024-09-16T21:23:35.032Z" }, - { url = "https://files.pythonhosted.org/packages/d7/0c/fa68271e608bf4a86c131044966a9f63bc7c6f44e93535be70c7562ff19e/SQLAlchemy-2.0.35-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0d8326269dbf944b9201911b0d9f3dc524d64779a07518199a58384c3d37a44", size = 3045236, upload-time = "2024-09-17T01:18:20.183Z" }, - { url = "https://files.pythonhosted.org/packages/f1/29/65d6441a2875c9e960703fb730c651f0a62505a16e968e6f99f5dd5bb925/SQLAlchemy-2.0.35-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b76d63495b0508ab9fc23f8152bac63205d2a704cd009a2b0722f4c8e0cba8e0", size = 3071708, upload-time = "2024-09-16T21:23:37.239Z" }, - { url = "https://files.pythonhosted.org/packages/13/cb/c354d16eb4b9af27a8ef16ef476118497f61f99bf21cf177ec85d9a23d3f/SQLAlchemy-2.0.35-cp39-cp39-win32.whl", hash = "sha256:69683e02e8a9de37f17985905a5eca18ad651bf592314b4d3d799029797d0eb3", size = 2064708, upload-time = "2024-09-16T21:03:08.78Z" }, - { url = "https://files.pythonhosted.org/packages/56/0a/3025867277836c325a0f69d3e43cfd35e72f877f472d4c4791d32c264d13/SQLAlchemy-2.0.35-cp39-cp39-win_amd64.whl", hash = "sha256:aee110e4ef3c528f3abbc3c2018c121e708938adeeff9006428dd7c8555e9b3f", size = 2088933, upload-time = "2024-09-16T21:03:10.778Z" }, - { url = "https://files.pythonhosted.org/packages/0e/c6/33c706449cdd92b1b6d756b247761e27d32230fd6b2de5f44c4c3e5632b2/SQLAlchemy-2.0.35-py3-none-any.whl", hash = "sha256:2ab3f0336c0387662ce6221ad30ab3a5e6499aab01b9790879b6578fd9b8faa1", size = 1881276, upload-time = "2024-09-16T23:14:28.324Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/1f/73/b4a9737255583b5fa858e0bb8e116eb94b88c910164ed2ed719147bde3de/sqlalchemy-2.0.48.tar.gz", hash = "sha256:5ca74f37f3369b45e1f6b7b06afb182af1fd5dde009e4ffd831830d98cbe5fe7", size = 9886075, upload-time = "2026-03-02T15:28:51.474Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/67/1235676e93dd3b742a4a8eddfae49eea46c85e3eed29f0da446a8dd57500/sqlalchemy-2.0.48-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7001dc9d5f6bb4deb756d5928eaefe1930f6f4179da3924cbd95ee0e9f4dce89", size = 2157384, upload-time = "2026-03-02T15:38:26.781Z" }, + { url = "https://files.pythonhosted.org/packages/4d/d7/fa728b856daa18c10e1390e76f26f64ac890c947008284387451d56ca3d0/sqlalchemy-2.0.48-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1a89ce07ad2d4b8cfc30bd5889ec40613e028ed80ef47da7d9dd2ce969ad30e0", size = 3236981, upload-time = "2026-03-02T15:58:53.53Z" }, + { url = "https://files.pythonhosted.org/packages/5c/ad/6c4395649a212a6c603a72c5b9ab5dce3135a1546cfdffa3c427e71fd535/sqlalchemy-2.0.48-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10853a53a4a00417a00913d270dddda75815fcb80675874285f41051c094d7dd", size = 3235232, upload-time = "2026-03-02T15:52:25.654Z" }, + { url = "https://files.pythonhosted.org/packages/01/f4/58f845e511ac0509765a6f85eb24924c1ef0d54fb50de9d15b28c3601458/sqlalchemy-2.0.48-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fac0fa4e4f55f118fd87177dacb1c6522fe39c28d498d259014020fec9164c29", size = 3188106, upload-time = "2026-03-02T15:58:55.193Z" }, + { url = "https://files.pythonhosted.org/packages/3f/f9/6dcc7bfa5f5794c3a095e78cd1de8269dfb5584dfd4c2c00a50d3c1ade44/sqlalchemy-2.0.48-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3713e21ea67bca727eecd4a24bf68bcd414c403faae4989442be60994301ded0", size = 3209522, upload-time = "2026-03-02T15:52:27.407Z" }, + { url = "https://files.pythonhosted.org/packages/d7/5a/b632875ab35874d42657f079529f0745410604645c269a8c21fb4272ff7a/sqlalchemy-2.0.48-cp310-cp310-win32.whl", hash = "sha256:d404dc897ce10e565d647795861762aa2d06ca3f4a728c5e9a835096c7059018", size = 2117695, upload-time = "2026-03-02T15:46:51.389Z" }, + { url = "https://files.pythonhosted.org/packages/de/03/9752eb2a41afdd8568e41ac3c3128e32a0a73eada5ab80483083604a56d1/sqlalchemy-2.0.48-cp310-cp310-win_amd64.whl", hash = "sha256:841a94c66577661c1f088ac958cd767d7c9bf507698f45afffe7a4017049de76", size = 2140928, upload-time = "2026-03-02T15:46:52.992Z" }, + { url = "https://files.pythonhosted.org/packages/d7/6d/b8b78b5b80f3c3ab3f7fa90faa195ec3401f6d884b60221260fd4d51864c/sqlalchemy-2.0.48-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b4c575df7368b3b13e0cebf01d4679f9a28ed2ae6c1cd0b1d5beffb6b2007dc", size = 2157184, upload-time = "2026-03-02T15:38:28.161Z" }, + { url = "https://files.pythonhosted.org/packages/21/4b/4f3d4a43743ab58b95b9ddf5580a265b593d017693df9e08bd55780af5bb/sqlalchemy-2.0.48-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e83e3f959aaa1c9df95c22c528096d94848a1bc819f5d0ebf7ee3df0ca63db6c", size = 3313555, upload-time = "2026-03-02T15:58:57.21Z" }, + { url = "https://files.pythonhosted.org/packages/21/dd/3b7c53f1dbbf736fd27041aee68f8ac52226b610f914085b1652c2323442/sqlalchemy-2.0.48-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f7b7243850edd0b8b97043f04748f31de50cf426e939def5c16bedb540698f7", size = 3313057, upload-time = "2026-03-02T15:52:29.366Z" }, + { url = "https://files.pythonhosted.org/packages/d9/cc/3e600a90ae64047f33313d7d32e5ad025417f09d2ded487e8284b5e21a15/sqlalchemy-2.0.48-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:82745b03b4043e04600a6b665cb98697c4339b24e34d74b0a2ac0a2488b6f94d", size = 3265431, upload-time = "2026-03-02T15:58:59.096Z" }, + { url = "https://files.pythonhosted.org/packages/8b/19/780138dacfe3f5024f4cf96e4005e91edf6653d53d3673be4844578faf1d/sqlalchemy-2.0.48-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e5e088bf43f6ee6fec7dbf1ef7ff7774a616c236b5c0cb3e00662dd71a56b571", size = 3287646, upload-time = "2026-03-02T15:52:31.569Z" }, + { url = "https://files.pythonhosted.org/packages/40/fd/f32ced124f01a23151f4777e4c705f3a470adc7bd241d9f36a7c941a33bf/sqlalchemy-2.0.48-cp311-cp311-win32.whl", hash = "sha256:9c7d0a77e36b5f4b01ca398482230ab792061d243d715299b44a0b55c89fe617", size = 2116956, upload-time = "2026-03-02T15:46:54.535Z" }, + { url = "https://files.pythonhosted.org/packages/58/d5/dd767277f6feef12d05651538f280277e661698f617fa4d086cce6055416/sqlalchemy-2.0.48-cp311-cp311-win_amd64.whl", hash = "sha256:583849c743e0e3c9bb7446f5b5addeacedc168d657a69b418063dfdb2d90081c", size = 2141627, upload-time = "2026-03-02T15:46:55.849Z" }, + { url = "https://files.pythonhosted.org/packages/ef/91/a42ae716f8925e9659df2da21ba941f158686856107a61cc97a95e7647a3/sqlalchemy-2.0.48-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:348174f228b99f33ca1f773e85510e08927620caa59ffe7803b37170df30332b", size = 2155737, upload-time = "2026-03-02T15:49:13.207Z" }, + { url = "https://files.pythonhosted.org/packages/b9/52/f75f516a1f3888f027c1cfb5d22d4376f4b46236f2e8669dcb0cddc60275/sqlalchemy-2.0.48-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53667b5f668991e279d21f94ccfa6e45b4e3f4500e7591ae59a8012d0f010dcb", size = 3337020, upload-time = "2026-03-02T15:50:34.547Z" }, + { url = "https://files.pythonhosted.org/packages/37/9a/0c28b6371e0cdcb14f8f1930778cb3123acfcbd2c95bb9cf6b4a2ba0cce3/sqlalchemy-2.0.48-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34634e196f620c7a61d18d5cf7dc841ca6daa7961aed75d532b7e58b309ac894", size = 3349983, upload-time = "2026-03-02T15:53:25.542Z" }, + { url = "https://files.pythonhosted.org/packages/1c/46/0aee8f3ff20b1dcbceb46ca2d87fcc3d48b407925a383ff668218509d132/sqlalchemy-2.0.48-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:546572a1793cc35857a2ffa1fe0e58571af1779bcc1ffa7c9fb0839885ed69a9", size = 3279690, upload-time = "2026-03-02T15:50:36.277Z" }, + { url = "https://files.pythonhosted.org/packages/ce/8c/a957bc91293b49181350bfd55e6dfc6e30b7f7d83dc6792d72043274a390/sqlalchemy-2.0.48-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:07edba08061bc277bfdc772dd2a1a43978f5a45994dd3ede26391b405c15221e", size = 3314738, upload-time = "2026-03-02T15:53:27.519Z" }, + { url = "https://files.pythonhosted.org/packages/4b/44/1d257d9f9556661e7bdc83667cc414ba210acfc110c82938cb3611eea58f/sqlalchemy-2.0.48-cp312-cp312-win32.whl", hash = "sha256:908a3fa6908716f803b86896a09a2c4dde5f5ce2bb07aacc71ffebb57986ce99", size = 2115546, upload-time = "2026-03-02T15:54:31.591Z" }, + { url = "https://files.pythonhosted.org/packages/f2/af/c3c7e1f3a2b383155a16454df62ae8c62a30dd238e42e68c24cebebbfae6/sqlalchemy-2.0.48-cp312-cp312-win_amd64.whl", hash = "sha256:68549c403f79a8e25984376480959975212a670405e3913830614432b5daa07a", size = 2142484, upload-time = "2026-03-02T15:54:34.072Z" }, + { url = "https://files.pythonhosted.org/packages/d1/c6/569dc8bf3cd375abc5907e82235923e986799f301cd79a903f784b996fca/sqlalchemy-2.0.48-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e3070c03701037aa418b55d36532ecb8f8446ed0135acb71c678dbdf12f5b6e4", size = 2152599, upload-time = "2026-03-02T15:49:14.41Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ff/f4e04a4bd5a24304f38cb0d4aa2ad4c0fb34999f8b884c656535e1b2b74c/sqlalchemy-2.0.48-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2645b7d8a738763b664a12a1542c89c940daa55196e8d73e55b169cc5c99f65f", size = 3278825, upload-time = "2026-03-02T15:50:38.269Z" }, + { url = "https://files.pythonhosted.org/packages/fe/88/cb59509e4668d8001818d7355d9995be90c321313078c912420603a7cb95/sqlalchemy-2.0.48-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b19151e76620a412c2ac1c6f977ab1b9fa7ad43140178345136456d5265b32ed", size = 3295200, upload-time = "2026-03-02T15:53:29.366Z" }, + { url = "https://files.pythonhosted.org/packages/87/dc/1609a4442aefd750ea2f32629559394ec92e89ac1d621a7f462b70f736ff/sqlalchemy-2.0.48-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5b193a7e29fd9fa56e502920dca47dffe60f97c863494946bd698c6058a55658", size = 3226876, upload-time = "2026-03-02T15:50:39.802Z" }, + { url = "https://files.pythonhosted.org/packages/37/c3/6ae2ab5ea2fa989fbac4e674de01224b7a9d744becaf59bb967d62e99bed/sqlalchemy-2.0.48-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:36ac4ddc3d33e852da9cb00ffb08cea62ca05c39711dc67062ca2bb1fae35fd8", size = 3265045, upload-time = "2026-03-02T15:53:31.421Z" }, + { url = "https://files.pythonhosted.org/packages/6f/82/ea4665d1bb98c50c19666e672f21b81356bd6077c4574e3d2bbb84541f53/sqlalchemy-2.0.48-cp313-cp313-win32.whl", hash = "sha256:389b984139278f97757ea9b08993e7b9d1142912e046ab7d82b3fbaeb0209131", size = 2113700, upload-time = "2026-03-02T15:54:35.825Z" }, + { url = "https://files.pythonhosted.org/packages/b7/2b/b9040bec58c58225f073f5b0c1870defe1940835549dafec680cbd58c3c3/sqlalchemy-2.0.48-cp313-cp313-win_amd64.whl", hash = "sha256:d612c976cbc2d17edfcc4c006874b764e85e990c29ce9bd411f926bbfb02b9a2", size = 2139487, upload-time = "2026-03-02T15:54:37.079Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/7b17bd50244b78a49d22cc63c969d71dc4de54567dc152a9b46f6fae40ce/sqlalchemy-2.0.48-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:69f5bc24904d3bc3640961cddd2523e361257ef68585d6e364166dfbe8c78fae", size = 3558851, upload-time = "2026-03-02T15:57:48.607Z" }, + { url = "https://files.pythonhosted.org/packages/20/0d/213668e9aca61d370f7d2a6449ea4ec699747fac67d4bda1bb3d129025be/sqlalchemy-2.0.48-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fd08b90d211c086181caed76931ecfa2bdfc83eea3cfccdb0f82abc6c4b876cb", size = 3525525, upload-time = "2026-03-02T16:04:38.058Z" }, + { url = "https://files.pythonhosted.org/packages/85/d7/a84edf412979e7d59c69b89a5871f90a49228360594680e667cb2c46a828/sqlalchemy-2.0.48-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:1ccd42229aaac2df431562117ac7e667d702e8e44afdb6cf0e50fa3f18160f0b", size = 3466611, upload-time = "2026-03-02T15:57:50.759Z" }, + { url = "https://files.pythonhosted.org/packages/86/55/42404ce5770f6be26a2b0607e7866c31b9a4176c819e9a7a5e0a055770be/sqlalchemy-2.0.48-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f0dcbc588cd5b725162c076eb9119342f6579c7f7f55057bb7e3c6ff27e13121", size = 3475812, upload-time = "2026-03-02T16:04:40.092Z" }, + { url = "https://files.pythonhosted.org/packages/ae/ae/29b87775fadc43e627cf582fe3bda4d02e300f6b8f2747c764950d13784c/sqlalchemy-2.0.48-cp313-cp313t-win32.whl", hash = "sha256:9764014ef5e58aab76220c5664abb5d47d5bc858d9debf821e55cfdd0f128485", size = 2141335, upload-time = "2026-03-02T15:52:51.518Z" }, + { url = "https://files.pythonhosted.org/packages/91/44/f39d063c90f2443e5b46ec4819abd3d8de653893aae92df42a5c4f5843de/sqlalchemy-2.0.48-cp313-cp313t-win_amd64.whl", hash = "sha256:e2f35b4cccd9ed286ad62e0a3c3ac21e06c02abc60e20aa51a3e305a30f5fa79", size = 2173095, upload-time = "2026-03-02T15:52:52.79Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b3/f437eaa1cf028bb3c927172c7272366393e73ccd104dcf5b6963f4ab5318/sqlalchemy-2.0.48-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e2d0d88686e3d35a76f3e15a34e8c12d73fc94c1dea1cd55782e695cc14086dd", size = 2154401, upload-time = "2026-03-02T15:49:17.24Z" }, + { url = "https://files.pythonhosted.org/packages/6c/1c/b3abdf0f402aa3f60f0df6ea53d92a162b458fca2321d8f1f00278506402/sqlalchemy-2.0.48-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49b7bddc1eebf011ea5ab722fdbe67a401caa34a350d278cc7733c0e88fecb1f", size = 3274528, upload-time = "2026-03-02T15:50:41.489Z" }, + { url = "https://files.pythonhosted.org/packages/f2/5e/327428a034407651a048f5e624361adf3f9fbac9d0fa98e981e9c6ff2f5e/sqlalchemy-2.0.48-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:426c5ca86415d9b8945c7073597e10de9644802e2ff502b8e1f11a7a2642856b", size = 3279523, upload-time = "2026-03-02T15:53:32.962Z" }, + { url = "https://files.pythonhosted.org/packages/2a/ca/ece73c81a918add0965b76b868b7b5359e068380b90ef1656ee995940c02/sqlalchemy-2.0.48-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:288937433bd44e3990e7da2402fabc44a3c6c25d3704da066b85b89a85474ae0", size = 3224312, upload-time = "2026-03-02T15:50:42.996Z" }, + { url = "https://files.pythonhosted.org/packages/88/11/fbaf1ae91fa4ee43f4fe79661cead6358644824419c26adb004941bdce7c/sqlalchemy-2.0.48-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:8183dc57ae7d9edc1346e007e840a9f3d6aa7b7f165203a99e16f447150140d2", size = 3246304, upload-time = "2026-03-02T15:53:34.937Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a8/5fb0deb13930b4f2f698c5541ae076c18981173e27dd00376dbaea7a9c82/sqlalchemy-2.0.48-cp314-cp314-win32.whl", hash = "sha256:1182437cb2d97988cfea04cf6cdc0b0bb9c74f4d56ec3d08b81e23d621a28cc6", size = 2116565, upload-time = "2026-03-02T15:54:38.321Z" }, + { url = "https://files.pythonhosted.org/packages/95/7e/e83615cb63f80047f18e61e31e8e32257d39458426c23006deeaf48f463b/sqlalchemy-2.0.48-cp314-cp314-win_amd64.whl", hash = "sha256:144921da96c08feb9e2b052c5c5c1d0d151a292c6135623c6b2c041f2a45f9e0", size = 2142205, upload-time = "2026-03-02T15:54:39.831Z" }, + { url = "https://files.pythonhosted.org/packages/83/e3/69d8711b3f2c5135e9cde5f063bc1605860f0b2c53086d40c04017eb1f77/sqlalchemy-2.0.48-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5aee45fd2c6c0f2b9cdddf48c48535e7471e42d6fb81adfde801da0bd5b93241", size = 3563519, upload-time = "2026-03-02T15:57:52.387Z" }, + { url = "https://files.pythonhosted.org/packages/f8/4f/a7cce98facca73c149ea4578981594aaa5fd841e956834931de503359336/sqlalchemy-2.0.48-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7cddca31edf8b0653090cbb54562ca027c421c58ddde2c0685f49ff56a1690e0", size = 3528611, upload-time = "2026-03-02T16:04:42.097Z" }, + { url = "https://files.pythonhosted.org/packages/cd/7d/5936c7a03a0b0cb0fa0cc425998821c6029756b0855a8f7ee70fba1de955/sqlalchemy-2.0.48-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7a936f1bb23d370b7c8cc079d5fce4c7d18da87a33c6744e51a93b0f9e97e9b3", size = 3472326, upload-time = "2026-03-02T15:57:54.423Z" }, + { url = "https://files.pythonhosted.org/packages/f4/33/cea7dfc31b52904efe3dcdc169eb4514078887dff1f5ae28a7f4c5d54b3c/sqlalchemy-2.0.48-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e004aa9248e8cb0a5f9b96d003ca7c1c0a5da8decd1066e7b53f59eb8ce7c62b", size = 3478453, upload-time = "2026-03-02T16:04:44.584Z" }, + { url = "https://files.pythonhosted.org/packages/c8/95/32107c4d13be077a9cae61e9ae49966a35dc4bf442a8852dd871db31f62e/sqlalchemy-2.0.48-cp314-cp314t-win32.whl", hash = "sha256:b8438ec5594980d405251451c5b7ea9aa58dda38eb7ac35fb7e4c696712ee24f", size = 2147209, upload-time = "2026-03-02T15:52:54.274Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d7/1e073da7a4bc645eb83c76067284a0374e643bc4be57f14cc6414656f92c/sqlalchemy-2.0.48-cp314-cp314t-win_amd64.whl", hash = "sha256:d854b3970067297f3a7fbd7a4683587134aa9b3877ee15aa29eea478dc68f933", size = 2182198, upload-time = "2026-03-02T15:52:55.606Z" }, + { url = "https://files.pythonhosted.org/packages/46/2c/9664130905f03db57961b8980b05cab624afd114bf2be2576628a9f22da4/sqlalchemy-2.0.48-py3-none-any.whl", hash = "sha256:a66fe406437dd65cacd96a72689a3aaaecaebbcd62d81c5ac1c0fdbeac835096", size = 1940202, upload-time = "2026-03-02T15:52:43.285Z" }, ] [[package]] @@ -2324,49 +2401,86 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, ] -[[package]] -name = "stdlib-list" -version = "0.10.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/39/bb/1cdbc326a5ab0026602e0489cbf02357e78140253c4b57cd866d380eb355/stdlib_list-0.10.0.tar.gz", hash = "sha256:6519c50d645513ed287657bfe856d527f277331540691ddeaf77b25459964a14", size = 59447, upload-time = "2023-11-18T07:01:42.143Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/13/d9/9085375f0d23a4896b307bf14dcc61b49ec8cc67cb33e06cf95bf3af3966/stdlib_list-0.10.0-py3-none-any.whl", hash = "sha256:b3a911bc441d03e0332dd1a9e7d0870ba3bb0a542a74d7524f54fb431256e214", size = 79814, upload-time = "2023-11-18T07:01:40.445Z" }, -] - [[package]] name = "tabulate" -version = "0.9.0" +version = "0.10.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload-time = "2022-10-06T17:21:48.54Z" } +sdist = { url = "https://files.pythonhosted.org/packages/46/58/8c37dea7bbf769b20d58e7ace7e5edfe65b849442b00ffcdd56be88697c6/tabulate-0.10.0.tar.gz", hash = "sha256:e2cfde8f79420f6deeffdeda9aaec3b6bc5abce947655d17ac662b126e48a60d", size = 91754, upload-time = "2026-03-04T18:55:34.402Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, + { url = "https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl", hash = "sha256:f0b0622e567335c8fabaaa659f1b33bcb6ddfe2e496071b743aa113f8774f2d3", size = 39814, upload-time = "2026-03-04T18:55:31.284Z" }, ] [[package]] name = "tomli" -version = "2.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3/tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f", size = 15164, upload-time = "2022-02-08T10:54:04.006Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", size = 12757, upload-time = "2022-02-08T10:54:02.017Z" }, +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size = 17477, upload-time = "2026-01-11T11:22:38.165Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/d9/3dc2289e1f3b32eb19b9785b6a006b28ee99acb37d1d47f78d4c10e28bf8/tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867", size = 153663, upload-time = "2026-01-11T11:21:45.27Z" }, + { url = "https://files.pythonhosted.org/packages/51/32/ef9f6845e6b9ca392cd3f64f9ec185cc6f09f0a2df3db08cbe8809d1d435/tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9", size = 148469, upload-time = "2026-01-11T11:21:46.873Z" }, + { url = "https://files.pythonhosted.org/packages/d6/c2/506e44cce89a8b1b1e047d64bd495c22c9f71f21e05f380f1a950dd9c217/tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95", size = 236039, upload-time = "2026-01-11T11:21:48.503Z" }, + { url = "https://files.pythonhosted.org/packages/b3/40/e1b65986dbc861b7e986e8ec394598187fa8aee85b1650b01dd925ca0be8/tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76", size = 243007, upload-time = "2026-01-11T11:21:49.456Z" }, + { url = "https://files.pythonhosted.org/packages/9c/6f/6e39ce66b58a5b7ae572a0f4352ff40c71e8573633deda43f6a379d56b3e/tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d", size = 240875, upload-time = "2026-01-11T11:21:50.755Z" }, + { url = "https://files.pythonhosted.org/packages/aa/ad/cb089cb190487caa80204d503c7fd0f4d443f90b95cf4ef5cf5aa0f439b0/tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576", size = 246271, upload-time = "2026-01-11T11:21:51.81Z" }, + { url = "https://files.pythonhosted.org/packages/0b/63/69125220e47fd7a3a27fd0de0c6398c89432fec41bc739823bcc66506af6/tomli-2.4.0-cp311-cp311-win32.whl", hash = "sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a", size = 96770, upload-time = "2026-01-11T11:21:52.647Z" }, + { url = "https://files.pythonhosted.org/packages/1e/0d/a22bb6c83f83386b0008425a6cd1fa1c14b5f3dd4bad05e98cf3dbbf4a64/tomli-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa", size = 107626, upload-time = "2026-01-11T11:21:53.459Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6d/77be674a3485e75cacbf2ddba2b146911477bd887dda9d8c9dfb2f15e871/tomli-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614", size = 94842, upload-time = "2026-01-11T11:21:54.831Z" }, + { url = "https://files.pythonhosted.org/packages/3c/43/7389a1869f2f26dba52404e1ef13b4784b6b37dac93bac53457e3ff24ca3/tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1", size = 154894, upload-time = "2026-01-11T11:21:56.07Z" }, + { url = "https://files.pythonhosted.org/packages/e9/05/2f9bf110b5294132b2edf13fe6ca6ae456204f3d749f623307cbb7a946f2/tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8", size = 149053, upload-time = "2026-01-11T11:21:57.467Z" }, + { url = "https://files.pythonhosted.org/packages/e8/41/1eda3ca1abc6f6154a8db4d714a4d35c4ad90adc0bcf700657291593fbf3/tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a", size = 243481, upload-time = "2026-01-11T11:21:58.661Z" }, + { url = "https://files.pythonhosted.org/packages/d2/6d/02ff5ab6c8868b41e7d4b987ce2b5f6a51d3335a70aa144edd999e055a01/tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1", size = 251720, upload-time = "2026-01-11T11:22:00.178Z" }, + { url = "https://files.pythonhosted.org/packages/7b/57/0405c59a909c45d5b6f146107c6d997825aa87568b042042f7a9c0afed34/tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b", size = 247014, upload-time = "2026-01-11T11:22:01.238Z" }, + { url = "https://files.pythonhosted.org/packages/2c/0e/2e37568edd944b4165735687cbaf2fe3648129e440c26d02223672ee0630/tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51", size = 251820, upload-time = "2026-01-11T11:22:02.727Z" }, + { url = "https://files.pythonhosted.org/packages/5a/1c/ee3b707fdac82aeeb92d1a113f803cf6d0f37bdca0849cb489553e1f417a/tomli-2.4.0-cp312-cp312-win32.whl", hash = "sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729", size = 97712, upload-time = "2026-01-11T11:22:03.777Z" }, + { url = "https://files.pythonhosted.org/packages/69/13/c07a9177d0b3bab7913299b9278845fc6eaaca14a02667c6be0b0a2270c8/tomli-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da", size = 108296, upload-time = "2026-01-11T11:22:04.86Z" }, + { url = "https://files.pythonhosted.org/packages/18/27/e267a60bbeeee343bcc279bb9e8fbed0cbe224bc7b2a3dc2975f22809a09/tomli-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3", size = 94553, upload-time = "2026-01-11T11:22:05.854Z" }, + { url = "https://files.pythonhosted.org/packages/34/91/7f65f9809f2936e1f4ce6268ae1903074563603b2a2bd969ebbda802744f/tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0", size = 154915, upload-time = "2026-01-11T11:22:06.703Z" }, + { url = "https://files.pythonhosted.org/packages/20/aa/64dd73a5a849c2e8f216b755599c511badde80e91e9bc2271baa7b2cdbb1/tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e", size = 149038, upload-time = "2026-01-11T11:22:07.56Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8a/6d38870bd3d52c8d1505ce054469a73f73a0fe62c0eaf5dddf61447e32fa/tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4", size = 242245, upload-time = "2026-01-11T11:22:08.344Z" }, + { url = "https://files.pythonhosted.org/packages/59/bb/8002fadefb64ab2669e5b977df3f5e444febea60e717e755b38bb7c41029/tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e", size = 250335, upload-time = "2026-01-11T11:22:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a5/3d/4cdb6f791682b2ea916af2de96121b3cb1284d7c203d97d92d6003e91c8d/tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c", size = 245962, upload-time = "2026-01-11T11:22:11.27Z" }, + { url = "https://files.pythonhosted.org/packages/f2/4a/5f25789f9a460bd858ba9756ff52d0830d825b458e13f754952dd15fb7bb/tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f", size = 250396, upload-time = "2026-01-11T11:22:12.325Z" }, + { url = "https://files.pythonhosted.org/packages/aa/2f/b73a36fea58dfa08e8b3a268750e6853a6aac2a349241a905ebd86f3047a/tomli-2.4.0-cp313-cp313-win32.whl", hash = "sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86", size = 97530, upload-time = "2026-01-11T11:22:13.865Z" }, + { url = "https://files.pythonhosted.org/packages/3b/af/ca18c134b5d75de7e8dc551c5234eaba2e8e951f6b30139599b53de9c187/tomli-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87", size = 108227, upload-time = "2026-01-11T11:22:15.224Z" }, + { url = "https://files.pythonhosted.org/packages/22/c3/b386b832f209fee8073c8138ec50f27b4460db2fdae9ffe022df89a57f9b/tomli-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132", size = 94748, upload-time = "2026-01-11T11:22:16.009Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c4/84047a97eb1004418bc10bdbcfebda209fca6338002eba2dc27cc6d13563/tomli-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6", size = 154725, upload-time = "2026-01-11T11:22:17.269Z" }, + { url = "https://files.pythonhosted.org/packages/a8/5d/d39038e646060b9d76274078cddf146ced86dc2b9e8bbf737ad5983609a0/tomli-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc", size = 148901, upload-time = "2026-01-11T11:22:18.287Z" }, + { url = "https://files.pythonhosted.org/packages/73/e5/383be1724cb30f4ce44983d249645684a48c435e1cd4f8b5cded8a816d3c/tomli-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66", size = 243375, upload-time = "2026-01-11T11:22:19.154Z" }, + { url = "https://files.pythonhosted.org/packages/31/f0/bea80c17971c8d16d3cc109dc3585b0f2ce1036b5f4a8a183789023574f2/tomli-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d", size = 250639, upload-time = "2026-01-11T11:22:20.168Z" }, + { url = "https://files.pythonhosted.org/packages/2c/8f/2853c36abbb7608e3f945d8a74e32ed3a74ee3a1f468f1ffc7d1cb3abba6/tomli-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702", size = 246897, upload-time = "2026-01-11T11:22:21.544Z" }, + { url = "https://files.pythonhosted.org/packages/49/f0/6c05e3196ed5337b9fe7ea003e95fd3819a840b7a0f2bf5a408ef1dad8ed/tomli-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8", size = 254697, upload-time = "2026-01-11T11:22:23.058Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f5/2922ef29c9f2951883525def7429967fc4d8208494e5ab524234f06b688b/tomli-2.4.0-cp314-cp314-win32.whl", hash = "sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776", size = 98567, upload-time = "2026-01-11T11:22:24.033Z" }, + { url = "https://files.pythonhosted.org/packages/7b/31/22b52e2e06dd2a5fdbc3ee73226d763b184ff21fc24e20316a44ccc4d96b/tomli-2.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475", size = 108556, upload-time = "2026-01-11T11:22:25.378Z" }, + { url = "https://files.pythonhosted.org/packages/48/3d/5058dff3255a3d01b705413f64f4306a141a8fd7a251e5a495e3f192a998/tomli-2.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2", size = 96014, upload-time = "2026-01-11T11:22:26.138Z" }, + { url = "https://files.pythonhosted.org/packages/b8/4e/75dab8586e268424202d3a1997ef6014919c941b50642a1682df43204c22/tomli-2.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9", size = 163339, upload-time = "2026-01-11T11:22:27.143Z" }, + { url = "https://files.pythonhosted.org/packages/06/e3/b904d9ab1016829a776d97f163f183a48be6a4deb87304d1e0116a349519/tomli-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0", size = 159490, upload-time = "2026-01-11T11:22:28.399Z" }, + { url = "https://files.pythonhosted.org/packages/e3/5a/fc3622c8b1ad823e8ea98a35e3c632ee316d48f66f80f9708ceb4f2a0322/tomli-2.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df", size = 269398, upload-time = "2026-01-11T11:22:29.345Z" }, + { url = "https://files.pythonhosted.org/packages/fd/33/62bd6152c8bdd4c305ad9faca48f51d3acb2df1f8791b1477d46ff86e7f8/tomli-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d", size = 276515, upload-time = "2026-01-11T11:22:30.327Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ff/ae53619499f5235ee4211e62a8d7982ba9e439a0fb4f2f351a93d67c1dd2/tomli-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f", size = 273806, upload-time = "2026-01-11T11:22:32.56Z" }, + { url = "https://files.pythonhosted.org/packages/47/71/cbca7787fa68d4d0a9f7072821980b39fbb1b6faeb5f5cf02f4a5559fa28/tomli-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b", size = 281340, upload-time = "2026-01-11T11:22:33.505Z" }, + { url = "https://files.pythonhosted.org/packages/f5/00/d595c120963ad42474cf6ee7771ad0d0e8a49d0f01e29576ee9195d9ecdf/tomli-2.4.0-cp314-cp314t-win32.whl", hash = "sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087", size = 108106, upload-time = "2026-01-11T11:22:34.451Z" }, + { url = "https://files.pythonhosted.org/packages/de/69/9aa0c6a505c2f80e519b43764f8b4ba93b5a0bbd2d9a9de6e2b24271b9a5/tomli-2.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd", size = 120504, upload-time = "2026-01-11T11:22:35.764Z" }, + { url = "https://files.pythonhosted.org/packages/b3/9f/f1668c281c58cfae01482f7114a4b88d345e4c140386241a1a24dcc9e7bc/tomli-2.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4", size = 99561, upload-time = "2026-01-11T11:22:36.624Z" }, + { url = "https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477, upload-time = "2026-01-11T11:22:37.446Z" }, ] [[package]] name = "tornado" -version = "6.4.1" +version = "6.5.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/66/398ac7167f1c7835406888a386f6d0d26ee5dbf197d8a571300be57662d3/tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9", size = 500623, upload-time = "2024-06-06T18:36:29.93Z" } +sdist = { url = "https://files.pythonhosted.org/packages/37/1d/0a336abf618272d53f62ebe274f712e213f5a03c0b2339575430b8362ef2/tornado-6.5.4.tar.gz", hash = "sha256:a22fa9047405d03260b483980635f0b041989d8bcc9a313f8fe18b411d84b1d7", size = 513632, upload-time = "2025-12-15T19:21:03.836Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/d9/c33be3c1a7564f7d42d87a8d186371a75fd142097076767a5c27da941fef/tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8", size = 435924, upload-time = "2024-06-06T18:36:10.575Z" }, - { url = "https://files.pythonhosted.org/packages/2e/0f/721e113a2fac2f1d7d124b3279a1da4c77622e104084f56119875019ffab/tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14", size = 433883, upload-time = "2024-06-06T18:36:13.13Z" }, - { url = "https://files.pythonhosted.org/packages/13/cf/786b8f1e6fe1c7c675e79657448178ad65e41c1c9765ef82e7f6f765c4c5/tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4", size = 437224, upload-time = "2024-06-06T18:36:14.657Z" }, - { url = "https://files.pythonhosted.org/packages/e4/8e/a6ce4b8d5935558828b0f30f3afcb2d980566718837b3365d98e34f6067e/tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842", size = 436597, upload-time = "2024-06-06T18:36:17.093Z" }, - { url = "https://files.pythonhosted.org/packages/22/d4/54f9d12668b58336bd30defe0307e6c61589a3e687b05c366f804b7faaf0/tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3", size = 436797, upload-time = "2024-06-06T18:36:19.265Z" }, - { url = "https://files.pythonhosted.org/packages/cf/3f/2c792e7afa7dd8b24fad7a2ed3c2f24a5ec5110c7b43a64cb6095cc106b8/tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f", size = 437516, upload-time = "2024-06-06T18:36:20.813Z" }, - { url = "https://files.pythonhosted.org/packages/71/63/c8fc62745e669ac9009044b889fc531b6f88ac0f5f183cac79eaa950bb23/tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4", size = 436958, upload-time = "2024-06-06T18:36:22.679Z" }, - { url = "https://files.pythonhosted.org/packages/94/d4/f8ac1f5bd22c15fad3b527e025ce219bd526acdbd903f52053df2baecc8b/tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698", size = 436882, upload-time = "2024-06-06T18:36:24.124Z" }, - { url = "https://files.pythonhosted.org/packages/4b/3e/a8124c21cc0bbf144d7903d2a0cadab15cadaf683fa39a0f92bc567f0d4d/tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d", size = 438092, upload-time = "2024-06-06T18:36:25.881Z" }, - { url = "https://files.pythonhosted.org/packages/d9/2f/3f2f05e84a7aff787a96d5fb06821323feb370fe0baed4db6ea7b1088f32/tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7", size = 438532, upload-time = "2024-06-06T18:36:28.494Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a9/e94a9d5224107d7ce3cc1fab8d5dc97f5ea351ccc6322ee4fb661da94e35/tornado-6.5.4-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d6241c1a16b1c9e4cc28148b1cda97dd1c6cb4fb7068ac1bedc610768dff0ba9", size = 443909, upload-time = "2025-12-15T19:20:48.382Z" }, + { url = "https://files.pythonhosted.org/packages/db/7e/f7b8d8c4453f305a51f80dbb49014257bb7d28ccb4bbb8dd328ea995ecad/tornado-6.5.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2d50f63dda1d2cac3ae1fa23d254e16b5e38153758470e9956cbc3d813d40843", size = 442163, upload-time = "2025-12-15T19:20:49.791Z" }, + { url = "https://files.pythonhosted.org/packages/ba/b5/206f82d51e1bfa940ba366a8d2f83904b15942c45a78dd978b599870ab44/tornado-6.5.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1cf66105dc6acb5af613c054955b8137e34a03698aa53272dbda4afe252be17", size = 445746, upload-time = "2025-12-15T19:20:51.491Z" }, + { url = "https://files.pythonhosted.org/packages/8e/9d/1a3338e0bd30ada6ad4356c13a0a6c35fbc859063fa7eddb309183364ac1/tornado-6.5.4-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50ff0a58b0dc97939d29da29cd624da010e7f804746621c78d14b80238669335", size = 445083, upload-time = "2025-12-15T19:20:52.778Z" }, + { url = "https://files.pythonhosted.org/packages/50/d4/e51d52047e7eb9a582da59f32125d17c0482d065afd5d3bc435ff2120dc5/tornado-6.5.4-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5fb5e04efa54cf0baabdd10061eb4148e0be137166146fff835745f59ab9f7f", size = 445315, upload-time = "2025-12-15T19:20:53.996Z" }, + { url = "https://files.pythonhosted.org/packages/27/07/2273972f69ca63dbc139694a3fc4684edec3ea3f9efabf77ed32483b875c/tornado-6.5.4-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9c86b1643b33a4cd415f8d0fe53045f913bf07b4a3ef646b735a6a86047dda84", size = 446003, upload-time = "2025-12-15T19:20:56.101Z" }, + { url = "https://files.pythonhosted.org/packages/d1/83/41c52e47502bf7260044413b6770d1a48dda2f0246f95ee1384a3cd9c44a/tornado-6.5.4-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:6eb82872335a53dd063a4f10917b3efd28270b56a33db69009606a0312660a6f", size = 445412, upload-time = "2025-12-15T19:20:57.398Z" }, + { url = "https://files.pythonhosted.org/packages/10/c7/bc96917f06cbee182d44735d4ecde9c432e25b84f4c2086143013e7b9e52/tornado-6.5.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6076d5dda368c9328ff41ab5d9dd3608e695e8225d1cd0fd1e006f05da3635a8", size = 445392, upload-time = "2025-12-15T19:20:58.692Z" }, + { url = "https://files.pythonhosted.org/packages/0c/1a/d7592328d037d36f2d2462f4bc1fbb383eec9278bc786c1b111cbbd44cfa/tornado-6.5.4-cp39-abi3-win32.whl", hash = "sha256:1768110f2411d5cd281bac0a090f707223ce77fd110424361092859e089b38d1", size = 446481, upload-time = "2025-12-15T19:21:00.008Z" }, + { url = "https://files.pythonhosted.org/packages/d6/6d/c69be695a0a64fd37a97db12355a035a6d90f79067a3cf936ec2b1dc38cd/tornado-6.5.4-cp39-abi3-win_amd64.whl", hash = "sha256:fa07d31e0cd85c60713f2b995da613588aa03e1303d75705dca6af8babc18ddc", size = 446886, upload-time = "2025-12-15T19:21:01.287Z" }, + { url = "https://files.pythonhosted.org/packages/50/49/8dc3fd90902f70084bd2cd059d576ddb4f8bb44c2c7c0e33a11422acb17e/tornado-6.5.4-cp39-abi3-win_arm64.whl", hash = "sha256:053e6e16701eb6cbe641f308f4c1a9541f91b6261991160391bfc342e8a551a1", size = 445910, upload-time = "2025-12-15T19:21:02.571Z" }, ] [[package]] @@ -2378,54 +2492,28 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, ] -[[package]] -name = "types-pillow" -version = "10.2.0.20240822" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/4a/4495264dddaa600d65d68bcedb64dcccf9d9da61adff51f7d2ffd8e4c9ce/types-Pillow-10.2.0.20240822.tar.gz", hash = "sha256:559fb52a2ef991c326e4a0d20accb3bb63a7ba8d40eb493e0ecb0310ba52f0d3", size = 35389, upload-time = "2024-08-22T02:32:48.15Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/66/23/e81a5354859831fcf54d488d33b80ba6133ea84f874a9c0ec40a4881e133/types_Pillow-10.2.0.20240822-py3-none-any.whl", hash = "sha256:d9dab025aba07aeb12fd50a6799d4eac52a9603488eca09d7662543983f16c5d", size = 54354, upload-time = "2024-08-22T02:32:46.664Z" }, -] - [[package]] name = "types-protobuf" -version = "5.28.0.20240924" +version = "6.32.1.20260221" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/c3/217fe2c6a4b8ed75c5ecbd27ae8dedd7bc8e8728ac4b29d16005d3a3aba2/types-protobuf-5.28.0.20240924.tar.gz", hash = "sha256:d181af8a256e5a91ce8d5adb53496e880efd9144c7d54483e3653332b60296f0", size = 54324, upload-time = "2024-09-24T02:43:19.296Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/e2/9aa4a3b2469508bd7b4e2ae11cbedaf419222a09a1b94daffcd5efca4023/types_protobuf-6.32.1.20260221.tar.gz", hash = "sha256:6d5fb060a616bfb076cbb61b4b3c3969f5fc8bec5810f9a2f7e648ee5cbcbf6e", size = 64408, upload-time = "2026-02-21T03:55:13.916Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/61/2b/98bfe67a73b15964513b471ce10b610ab0df28825900e0e7517b2bf23952/types_protobuf-5.28.0.20240924-py3-none-any.whl", hash = "sha256:5cecf612ccdefb7dc95f7a51fb502902f20fc2e6681cd500184aaa1b3931d6a7", size = 68761, upload-time = "2024-09-24T02:43:18.005Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e8/1fd38926f9cf031188fbc5a96694203ea6f24b0e34bd64a225ec6f6291ba/types_protobuf-6.32.1.20260221-py3-none-any.whl", hash = "sha256:da7cdd947975964a93c30bfbcc2c6841ee646b318d3816b033adc2c4eb6448e4", size = 77956, upload-time = "2026-02-21T03:55:12.894Z" }, ] [[package]] name = "typing-extensions" -version = "4.12.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321, upload-time = "2024-06-07T18:52:15.995Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438, upload-time = "2024-06-07T18:52:13.582Z" }, -] - -[[package]] -name = "urllib3" -version = "2.2.3" +version = "4.15.0" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.9'", -] -sdist = { url = "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", size = 300677, upload-time = "2024-09-12T10:52:18.401Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", size = 126338, upload-time = "2024-09-12T10:52:16.589Z" }, + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, ] [[package]] name = "urllib3" version = "2.6.3" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.9' and python_full_version < '3.12'", - "python_full_version == '3.12.*'", - "python_full_version >= '3.13'", -] sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, @@ -2435,7 +2523,6 @@ wheels = [ name = "viam-sdk" source = { editable = "." } dependencies = [ - { name = "googleapis-common-protos" }, { name = "grpclib" }, { name = "protobuf" }, { name = "pymongo" }, @@ -2444,9 +2531,8 @@ dependencies = [ [package.optional-dependencies] mlmodel = [ - { name = "numpy", version = "1.24.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.13'" }, - { name = "numpy", version = "2.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "packaging" }, ] @@ -2454,69 +2540,61 @@ mlmodel = [ dev = [ { name = "coverage" }, { name = "mypy-protobuf" }, - { name = "myst-nb", version = "0.17.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "myst-nb", version = "1.1.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "myst-nb" }, { name = "nbmake" }, - { name = "numpy", version = "1.24.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.13'" }, - { name = "numpy", version = "2.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "pillow" }, { name = "pyright" }, { name = "pytest" }, { name = "pytest-asyncio" }, { name = "ruff" }, - { name = "sphinx-autoapi", version = "2.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "sphinx-autoapi", version = "3.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "sphinx-autoapi" }, { name = "sphinx-rtd-theme" }, - { name = "types-pillow" }, ] [package.metadata] requires-dist = [ - { name = "googleapis-common-protos", specifier = ">=1.65.0" }, - { name = "grpclib", specifier = ">=0.4.7" }, + { name = "grpclib", specifier = ">=0.4.9" }, { name = "numpy", marker = "extra == 'mlmodel'" }, { name = "packaging", marker = "extra == 'mlmodel'" }, - { name = "protobuf", specifier = "==5.29.6" }, + { name = "protobuf", specifier = "==7.34.0" }, { name = "pymongo", specifier = ">=4.10.1" }, - { name = "typing-extensions", specifier = ">=4.12.2" }, + { name = "typing-extensions", specifier = ">=4.15.0" }, ] provides-extras = ["mlmodel"] [package.metadata.requires-dev] dev = [ - { name = "coverage", specifier = ">=7.6.1" }, - { name = "mypy-protobuf", specifier = ">=3.6.0" }, - { name = "myst-nb", marker = "python_full_version < '3.9'", specifier = "<1.0.0" }, - { name = "myst-nb", marker = "python_full_version >= '3.9'", specifier = ">=1.0.0" }, - { name = "nbmake", specifier = ">=1.5.4" }, - { name = "numpy", marker = "python_full_version < '3.9'", specifier = "<1.25.0" }, - { name = "numpy", marker = "python_full_version >= '3.9'", specifier = ">=1.26.2" }, - { name = "pillow", specifier = ">=10.4.0" }, - { name = "pyright", specifier = ">=1.1.382.post1" }, - { name = "pytest", specifier = ">=8.3.3" }, - { name = "pytest-asyncio", specifier = ">=0.24.0" }, - { name = "ruff", specifier = ">=0.6.8" }, - { name = "sphinx-autoapi", marker = "python_full_version < '3.9'", specifier = "<3.0.0" }, - { name = "sphinx-autoapi", marker = "python_full_version >= '3.9'", specifier = ">=3.0.0" }, - { name = "sphinx-rtd-theme", specifier = ">=2.0.0" }, - { name = "types-pillow", specifier = ">=10.2.0.20240822" }, + { name = "coverage", specifier = ">=7.13.4" }, + { name = "mypy-protobuf", specifier = ">=5.0.0" }, + { name = "myst-nb", specifier = ">=1.4.0" }, + { name = "nbmake", specifier = ">=1.5.5" }, + { name = "numpy", marker = "python_full_version < '3.11'", specifier = "<2.3.0" }, + { name = "numpy", marker = "python_full_version >= '3.11'", specifier = ">=1.3.0" }, + { name = "pillow", specifier = ">=12.1.1" }, + { name = "pyright", specifier = ">=1.1.401" }, + { name = "pytest", specifier = ">=9.0.2" }, + { name = "pytest-asyncio", specifier = ">=1.3.0" }, + { name = "ruff", specifier = ">=0.15.5" }, + { name = "sphinx-autoapi", specifier = ">=3.7.0" }, + { name = "sphinx-rtd-theme", specifier = ">=3.1.0" }, ] [[package]] name = "wcwidth" -version = "0.2.13" +version = "0.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload-time = "2024-01-06T02:10:57.829Z" } +sdist = { url = "https://files.pythonhosted.org/packages/35/a2/8e3becb46433538a38726c948d3399905a4c7cabd0df578ede5dc51f0ec2/wcwidth-0.6.0.tar.gz", hash = "sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159", size = 159684, upload-time = "2026-02-06T19:19:40.919Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload-time = "2024-01-06T02:10:55.763Z" }, + { url = "https://files.pythonhosted.org/packages/68/5a/199c59e0a824a3db2b89c5d2dade7ab5f9624dbf6448dc291b46d5ec94d3/wcwidth-0.6.0-py3-none-any.whl", hash = "sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad", size = 94189, upload-time = "2026-02-06T19:19:39.646Z" }, ] [[package]] name = "zipp" -version = "3.20.2" +version = "3.23.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", size = 24199, upload-time = "2024-09-13T13:44:16.101Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", size = 9200, upload-time = "2024-09-13T13:44:14.38Z" }, + { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, ] From 41b45bda2803ff890ad5cd29731c4ccf53dd91f3 Mon Sep 17 00:00:00 2001 From: Naveed Jooma Date: Fri, 13 Mar 2026 19:18:28 -0400 Subject: [PATCH 02/12] Format --- src/viam/app/data_client.py | 4 +- src/viam/errors.py | 2 +- src/viam/logging.py | 2 +- src/viam/proto/app/__init__.py | 617 +++++++++--------- src/viam/proto/app/agent/__init__.py | 33 +- src/viam/proto/app/billing.py | 83 ++- src/viam/proto/app/cloudslam/__init__.py | 53 +- src/viam/proto/app/data/__init__.py | 191 +++--- src/viam/proto/app/datapipelines/__init__.py | 53 +- src/viam/proto/app/dataset/__init__.py | 45 +- src/viam/proto/app/datasync/__init__.py | 49 +- src/viam/proto/app/end_user.py | 39 +- src/viam/proto/app/mlinference/__init__.py | 26 +- src/viam/proto/app/mltraining/__init__.py | 63 +- src/viam/proto/app/packages/__init__.py | 43 +- src/viam/proto/app/robot.py | 95 ++- src/viam/proto/common/__init__.py | 77 +-- src/viam/proto/component/arm/__init__.py | 53 +- src/viam/proto/component/audioin/__init__.py | 29 +- src/viam/proto/component/audioout/__init__.py | 26 +- src/viam/proto/component/base/__init__.py | 47 +- src/viam/proto/component/board/__init__.py | 73 +-- src/viam/proto/component/button/__init__.py | 26 +- src/viam/proto/component/camera/__init__.py | 53 +- src/viam/proto/component/encoder/__init__.py | 33 +- src/viam/proto/component/gantry/__init__.py | 45 +- src/viam/proto/component/generic/__init__.py | 17 +- src/viam/proto/component/gripper/__init__.py | 39 +- .../component/inputcontroller/__init__.py | 35 +- src/viam/proto/component/motor/__init__.py | 61 +- .../component/movementsensor/__init__.py | 47 +- .../proto/component/posetracker/__init__.py | 22 +- .../proto/component/powersensor/__init__.py | 27 +- src/viam/proto/component/sensor/__init__.py | 17 +- src/viam/proto/component/servo/__init__.py | 37 +- src/viam/proto/component/switch/__init__.py | 31 +- src/viam/proto/component/testecho/__init__.py | 35 +- src/viam/proto/module/__init__.py | 43 +- .../opentelemetry/proto/common/__init__.py | 26 +- .../opentelemetry/proto/resource/__init__.py | 11 +- .../opentelemetry/proto/trace/__init__.py | 26 +- src/viam/proto/provisioning/__init__.py | 47 +- src/viam/proto/robot/__init__.py | 145 ++-- src/viam/proto/rpc/auth.py | 31 +- src/viam/proto/rpc/examples/echo/__init__.py | 31 +- .../rpc/examples/echoresource/__init__.py | 27 +- src/viam/proto/rpc/webrtc/grpc.py | 41 +- src/viam/proto/rpc/webrtc/signaling.py | 63 +- .../proto/service/datamanager/__init__.py | 23 +- src/viam/proto/service/discovery/__init__.py | 26 +- src/viam/proto/service/generic/__init__.py | 17 +- src/viam/proto/service/mlmodel/__init__.py | 63 +- src/viam/proto/service/motion/__init__.py | 75 +-- src/viam/proto/service/navigation/__init__.py | 63 +- src/viam/proto/service/sensors/__init__.py | 35 +- src/viam/proto/service/shell/__init__.py | 41 +- src/viam/proto/service/slam/__init__.py | 41 +- src/viam/proto/service/video/__init__.py | 26 +- src/viam/proto/service/vision/__init__.py | 51 +- .../proto/service/worldstatestore/__init__.py | 29 +- src/viam/proto/stream/__init__.py | 41 +- src/viam/proto/tagger/__init__.py | 7 +- src/viam/robot/service.py | 2 +- tests/test_data_client.py | 8 +- tests/test_examples.py | 12 +- 65 files changed, 1551 insertions(+), 1728 deletions(-) diff --git a/src/viam/app/data_client.py b/src/viam/app/data_client.py index 9f50cce5b9..2f897d5928 100644 --- a/src/viam/app/data_client.py +++ b/src/viam/app/data_client.py @@ -881,9 +881,7 @@ async def delete_tabular_data( For more information, see `Data Client API `_. """ - request = DeleteTabularDataRequest( - organization_id=organization_id, delete_older_than_days=delete_older_than_days, filter=filter - ) + request = DeleteTabularDataRequest(organization_id=organization_id, delete_older_than_days=delete_older_than_days, filter=filter) response: DeleteTabularDataResponse = await self._data_client.DeleteTabularData(request, metadata=self._metadata) return response.deleted_count diff --git a/src/viam/errors.py b/src/viam/errors.py index b9a6b0e7d3..05bc359ae3 100644 --- a/src/viam/errors.py +++ b/src/viam/errors.py @@ -22,7 +22,7 @@ class InsecureConnectionError(ViamError): def __init__(self, address: str, authenticated: bool = False) -> None: self.address = address self.authenticated = authenticated - self.message = f"Requested address {self.address} is insecure" + f'{" and will not send credentials" if self.authenticated else ""}' + self.message = f"Requested address {self.address} is insecure" + f"{' and will not send credentials' if self.authenticated else ''}" super().__init__(self.message) diff --git a/src/viam/logging.py b/src/viam/logging.py index 39df32c9a4..64fa595645 100644 --- a/src/viam/logging.py +++ b/src/viam/logging.py @@ -170,7 +170,7 @@ def _addHandlers(loggers: Iterable[logging.Logger], use_default_handlers=False): std_handler.setFormatter(format) # filter out logs at error level or above std_handler.setLevel(LOG_LEVEL) - std_handler.addFilter(filter=lambda record: (record.levelno < ERROR)) + std_handler.addFilter(filter=lambda record: record.levelno < ERROR) err_handler = logging.StreamHandler(stream=sys.stderr) err_handler.setFormatter(format) diff --git a/src/viam/proto/app/__init__.py b/src/viam/proto/app/__init__.py index 073253d723..bf8ec975f7 100644 --- a/src/viam/proto/app/__init__.py +++ b/src/viam/proto/app/__init__.py @@ -1,18 +1,16 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ...gen.app.v1.app_grpc import ( - AppServiceBase, - AppServiceStub, - UnimplementedAppServiceBase -) +""" + +from ...gen.app.v1.app_grpc import AppServiceBase, AppServiceStub, UnimplementedAppServiceBase from ...gen.app.v1.app_pb2 import ( - APIKey, - APIKeyWithAuthorizations, + PKCE, + AdditionalFragment, AddRoleRequest, AddRoleResponse, - AdditionalFragment, + APIKey, + APIKeyWithAuthorizations, App, AppCustomizations, AppType, @@ -183,16 +181,16 @@ LocationAuthResponse, LocationOrganization, LocationSummary, - MLModelMetadata, - MLModelVersion, - MLTrainingMetadata, - MLTrainingVersion, MachinePickerCustomizations, MachineSummary, MarkPartAsMainRequest, MarkPartAsMainResponse, MarkPartForRestartRequest, MarkPartForRestartResponse, + MLModelMetadata, + MLModelVersion, + MLTrainingMetadata, + MLTrainingVersion, Model, Module, ModuleFileInfo, @@ -206,7 +204,6 @@ NewRobotResponse, OAuthConfig, OnlineState, - OrgDetails, Organization, OrganizationGetLogoRequest, OrganizationGetLogoResponse, @@ -219,7 +216,7 @@ OrganizationSetLogoResponse, OrganizationSetSupportEmailRequest, OrganizationSetSupportEmailResponse, - PKCE, + OrgDetails, PartSummary, ReadOAuthAppRequest, ReadOAuthAppResponse, @@ -244,16 +241,15 @@ SearchOrganizationsResponse, SetFragmentTagRequest, SetFragmentTagResponse, + SharedSecret, ShareLocationRequest, ShareLocationResponse, - SharedSecret, StorageConfig, TailRobotPartLogsRequest, TailRobotPartLogsResponse, TextOverrides, TransferRegistryItemRequest, TransferRegistryItemResponse, - URLValidation, UnshareLocationRequest, UnshareLocationResponse, UpdateBillingServiceRequest, @@ -292,302 +288,303 @@ UploadModuleFileRequest, UploadModuleFileResponse, Uploads, + URLValidation, VersionHistory, ViamAgentVersion, ViamServerVersion, - Visibility + Visibility, ) __all__ = [ - 'AppServiceBase', - 'AppServiceStub', - 'UnimplementedAppServiceBase', - 'APIKey', - 'APIKeyWithAuthorizations', - 'AddRoleRequest', - 'AddRoleResponse', - 'AdditionalFragment', - 'App', - 'AppCustomizations', - 'AppType', - 'AuthenticationType', - 'AuthenticatorInfo', - 'Authorization', - 'AuthorizationDetails', - 'AuthorizedPermissions', - 'BillingAddress', - 'ChangeRoleRequest', - 'ChangeRoleResponse', - 'CheckPermissionsRequest', - 'CheckPermissionsResponse', - 'ClientAuthentication', - 'CreateFragmentRequest', - 'CreateFragmentResponse', - 'CreateKeyFromExistingKeyAuthorizationsRequest', - 'CreateKeyFromExistingKeyAuthorizationsResponse', - 'CreateKeyRequest', - 'CreateKeyResponse', - 'CreateLocationRequest', - 'CreateLocationResponse', - 'CreateLocationSecretRequest', - 'CreateLocationSecretResponse', - 'CreateModuleRequest', - 'CreateModuleResponse', - 'CreateOAuthAppRequest', - 'CreateOAuthAppResponse', - 'CreateOrganizationInviteRequest', - 'CreateOrganizationInviteResponse', - 'CreateOrganizationRequest', - 'CreateOrganizationResponse', - 'CreateRegistryItemRequest', - 'CreateRegistryItemResponse', - 'CreateRobotPartSecretRequest', - 'CreateRobotPartSecretResponse', - 'DeleteFragmentRequest', - 'DeleteFragmentResponse', - 'DeleteFragmentTagRequest', - 'DeleteFragmentTagResponse', - 'DeleteKeyRequest', - 'DeleteKeyResponse', - 'DeleteLocationRequest', - 'DeleteLocationResponse', - 'DeleteLocationSecretRequest', - 'DeleteLocationSecretResponse', - 'DeleteOAuthAppRequest', - 'DeleteOAuthAppResponse', - 'DeleteOrganizationInviteRequest', - 'DeleteOrganizationInviteResponse', - 'DeleteOrganizationMemberRequest', - 'DeleteOrganizationMemberResponse', - 'DeleteOrganizationRequest', - 'DeleteOrganizationResponse', - 'DeleteRegistryItemRequest', - 'DeleteRegistryItemResponse', - 'DeleteRobotPartRequest', - 'DeleteRobotPartResponse', - 'DeleteRobotPartSecretRequest', - 'DeleteRobotPartSecretResponse', - 'DeleteRobotRequest', - 'DeleteRobotResponse', - 'DisableAuthServiceRequest', - 'DisableAuthServiceResponse', - 'DisableBillingServiceRequest', - 'DisableBillingServiceResponse', - 'EnableAuthServiceRequest', - 'EnableAuthServiceResponse', - 'EnableBillingServiceRequest', - 'EnableBillingServiceResponse', - 'EnabledGrant', - 'Fragment', - 'FragmentError', - 'FragmentErrorType', - 'FragmentHistoryEntry', - 'FragmentImport', - 'FragmentImportList', - 'FragmentRevision', - 'FragmentSummary', - 'FragmentTag', - 'FragmentUsage', - 'FragmentVisibility', - 'GetAppBrandingRequest', - 'GetAppBrandingResponse', - 'GetAppContentRequest', - 'GetAppContentResponse', - 'GetBillingServiceConfigRequest', - 'GetBillingServiceConfigResponse', - 'GetFragmentHistoryRequest', - 'GetFragmentHistoryResponse', - 'GetFragmentRequest', - 'GetFragmentResponse', - 'GetFragmentUsageRequest', - 'GetFragmentUsageResponse', - 'GetLocationMetadataRequest', - 'GetLocationMetadataResponse', - 'GetLocationRequest', - 'GetLocationResponse', - 'GetModuleRequest', - 'GetModuleResponse', - 'GetOrganizationMetadataRequest', - 'GetOrganizationMetadataResponse', - 'GetOrganizationNamespaceAvailabilityRequest', - 'GetOrganizationNamespaceAvailabilityResponse', - 'GetOrganizationRequest', - 'GetOrganizationResponse', - 'GetOrganizationsWithAccessToLocationRequest', - 'GetOrganizationsWithAccessToLocationResponse', - 'GetRegistryItemRequest', - 'GetRegistryItemResponse', - 'GetRobotAPIKeysRequest', - 'GetRobotAPIKeysResponse', - 'GetRobotMetadataRequest', - 'GetRobotMetadataResponse', - 'GetRobotPartByNameAndLocationRequest', - 'GetRobotPartByNameAndLocationResponse', - 'GetRobotPartHistoryRequest', - 'GetRobotPartHistoryResponse', - 'GetRobotPartLogsRequest', - 'GetRobotPartLogsResponse', - 'GetRobotPartMetadataRequest', - 'GetRobotPartMetadataResponse', - 'GetRobotPartRequest', - 'GetRobotPartResponse', - 'GetRobotPartsRequest', - 'GetRobotPartsResponse', - 'GetRobotRequest', - 'GetRobotResponse', - 'GetRoverRentalRobotsRequest', - 'GetRoverRentalRobotsResponse', - 'GetUserIDByEmailRequest', - 'GetUserIDByEmailResponse', - 'ListAuthorizationsRequest', - 'ListAuthorizationsResponse', - 'ListFragmentsRequest', - 'ListFragmentsResponse', - 'ListKeysRequest', - 'ListKeysResponse', - 'ListLocationsRequest', - 'ListLocationsResponse', - 'ListMachineFragmentsRequest', - 'ListMachineFragmentsResponse', - 'ListMachineSummariesRequest', - 'ListMachineSummariesResponse', - 'ListModulesRequest', - 'ListModulesResponse', - 'ListNestedFragmentsRequest', - 'ListNestedFragmentsResponse', - 'ListOAuthAppsRequest', - 'ListOAuthAppsResponse', - 'ListOrganizationMembersRequest', - 'ListOrganizationMembersResponse', - 'ListOrganizationsByUserRequest', - 'ListOrganizationsByUserResponse', - 'ListOrganizationsRequest', - 'ListOrganizationsResponse', - 'ListRegistryItemsRequest', - 'ListRegistryItemsResponse', - 'ListRobotsForLocationsRequest', - 'ListRobotsForLocationsResponse', - 'ListRobotsForOrgRequest', - 'ListRobotsForOrgResponse', - 'ListRobotsRequest', - 'ListRobotsResponse', - 'Location', - 'LocationAuth', - 'LocationAuthRequest', - 'LocationAuthResponse', - 'LocationOrganization', - 'LocationSummary', - 'MLModelMetadata', - 'MLModelVersion', - 'MLTrainingMetadata', - 'MLTrainingVersion', - 'MachinePickerCustomizations', - 'MachineSummary', - 'MarkPartAsMainRequest', - 'MarkPartAsMainResponse', - 'MarkPartForRestartRequest', - 'MarkPartForRestartResponse', - 'Model', - 'Module', - 'ModuleFileInfo', - 'ModuleLanguage', - 'ModuleMetadata', - 'ModuleSourceType', - 'ModuleVersion', - 'NewRobotPartRequest', - 'NewRobotPartResponse', - 'NewRobotRequest', - 'NewRobotResponse', - 'OAuthConfig', - 'OnlineState', - 'OrgDetails', - 'Organization', - 'OrganizationGetLogoRequest', - 'OrganizationGetLogoResponse', - 'OrganizationGetSupportEmailRequest', - 'OrganizationGetSupportEmailResponse', - 'OrganizationIdentity', - 'OrganizationInvite', - 'OrganizationMember', - 'OrganizationSetLogoRequest', - 'OrganizationSetLogoResponse', - 'OrganizationSetSupportEmailRequest', - 'OrganizationSetSupportEmailResponse', - 'PKCE', - 'PartSummary', - 'ReadOAuthAppRequest', - 'ReadOAuthAppResponse', - 'RegistryItem', - 'RegistryItemStatus', - 'RemoveRoleRequest', - 'RemoveRoleResponse', - 'RenameKeyRequest', - 'RenameKeyResponse', - 'RenameRegistryItemRequest', - 'RenameRegistryItemResponse', - 'ResendOrganizationInviteRequest', - 'ResendOrganizationInviteResponse', - 'ResolvedFragment', - 'Robot', - 'RobotPart', - 'RobotPartHistoryEntry', - 'RotateKeyRequest', - 'RotateKeyResponse', - 'RoverRentalRobot', - 'SearchOrganizationsRequest', - 'SearchOrganizationsResponse', - 'SetFragmentTagRequest', - 'SetFragmentTagResponse', - 'ShareLocationRequest', - 'ShareLocationResponse', - 'SharedSecret', - 'StorageConfig', - 'TailRobotPartLogsRequest', - 'TailRobotPartLogsResponse', - 'TextOverrides', - 'TransferRegistryItemRequest', - 'TransferRegistryItemResponse', - 'URLValidation', - 'UnshareLocationRequest', - 'UnshareLocationResponse', - 'UpdateBillingServiceRequest', - 'UpdateBillingServiceResponse', - 'UpdateFragmentRequest', - 'UpdateFragmentResponse', - 'UpdateLocationMetadataRequest', - 'UpdateLocationMetadataResponse', - 'UpdateLocationRequest', - 'UpdateLocationResponse', - 'UpdateMLModelMetadata', - 'UpdateMLTrainingMetadata', - 'UpdateModuleMetadata', - 'UpdateModuleRequest', - 'UpdateModuleResponse', - 'UpdateOAuthAppRequest', - 'UpdateOAuthAppResponse', - 'UpdateOrganizationInviteAuthorizationsRequest', - 'UpdateOrganizationInviteAuthorizationsResponse', - 'UpdateOrganizationMetadataRequest', - 'UpdateOrganizationMetadataResponse', - 'UpdateOrganizationNamespaceRequest', - 'UpdateOrganizationNamespaceResponse', - 'UpdateOrganizationRequest', - 'UpdateOrganizationResponse', - 'UpdateRegistryItemRequest', - 'UpdateRegistryItemResponse', - 'UpdateRobotMetadataRequest', - 'UpdateRobotMetadataResponse', - 'UpdateRobotPartMetadataRequest', - 'UpdateRobotPartMetadataResponse', - 'UpdateRobotPartRequest', - 'UpdateRobotPartResponse', - 'UpdateRobotRequest', - 'UpdateRobotResponse', - 'UploadModuleFileRequest', - 'UploadModuleFileResponse', - 'Uploads', - 'VersionHistory', - 'ViamAgentVersion', - 'ViamServerVersion', - 'Visibility', + "AppServiceBase", + "AppServiceStub", + "UnimplementedAppServiceBase", + "APIKey", + "APIKeyWithAuthorizations", + "AddRoleRequest", + "AddRoleResponse", + "AdditionalFragment", + "App", + "AppCustomizations", + "AppType", + "AuthenticationType", + "AuthenticatorInfo", + "Authorization", + "AuthorizationDetails", + "AuthorizedPermissions", + "BillingAddress", + "ChangeRoleRequest", + "ChangeRoleResponse", + "CheckPermissionsRequest", + "CheckPermissionsResponse", + "ClientAuthentication", + "CreateFragmentRequest", + "CreateFragmentResponse", + "CreateKeyFromExistingKeyAuthorizationsRequest", + "CreateKeyFromExistingKeyAuthorizationsResponse", + "CreateKeyRequest", + "CreateKeyResponse", + "CreateLocationRequest", + "CreateLocationResponse", + "CreateLocationSecretRequest", + "CreateLocationSecretResponse", + "CreateModuleRequest", + "CreateModuleResponse", + "CreateOAuthAppRequest", + "CreateOAuthAppResponse", + "CreateOrganizationInviteRequest", + "CreateOrganizationInviteResponse", + "CreateOrganizationRequest", + "CreateOrganizationResponse", + "CreateRegistryItemRequest", + "CreateRegistryItemResponse", + "CreateRobotPartSecretRequest", + "CreateRobotPartSecretResponse", + "DeleteFragmentRequest", + "DeleteFragmentResponse", + "DeleteFragmentTagRequest", + "DeleteFragmentTagResponse", + "DeleteKeyRequest", + "DeleteKeyResponse", + "DeleteLocationRequest", + "DeleteLocationResponse", + "DeleteLocationSecretRequest", + "DeleteLocationSecretResponse", + "DeleteOAuthAppRequest", + "DeleteOAuthAppResponse", + "DeleteOrganizationInviteRequest", + "DeleteOrganizationInviteResponse", + "DeleteOrganizationMemberRequest", + "DeleteOrganizationMemberResponse", + "DeleteOrganizationRequest", + "DeleteOrganizationResponse", + "DeleteRegistryItemRequest", + "DeleteRegistryItemResponse", + "DeleteRobotPartRequest", + "DeleteRobotPartResponse", + "DeleteRobotPartSecretRequest", + "DeleteRobotPartSecretResponse", + "DeleteRobotRequest", + "DeleteRobotResponse", + "DisableAuthServiceRequest", + "DisableAuthServiceResponse", + "DisableBillingServiceRequest", + "DisableBillingServiceResponse", + "EnableAuthServiceRequest", + "EnableAuthServiceResponse", + "EnableBillingServiceRequest", + "EnableBillingServiceResponse", + "EnabledGrant", + "Fragment", + "FragmentError", + "FragmentErrorType", + "FragmentHistoryEntry", + "FragmentImport", + "FragmentImportList", + "FragmentRevision", + "FragmentSummary", + "FragmentTag", + "FragmentUsage", + "FragmentVisibility", + "GetAppBrandingRequest", + "GetAppBrandingResponse", + "GetAppContentRequest", + "GetAppContentResponse", + "GetBillingServiceConfigRequest", + "GetBillingServiceConfigResponse", + "GetFragmentHistoryRequest", + "GetFragmentHistoryResponse", + "GetFragmentRequest", + "GetFragmentResponse", + "GetFragmentUsageRequest", + "GetFragmentUsageResponse", + "GetLocationMetadataRequest", + "GetLocationMetadataResponse", + "GetLocationRequest", + "GetLocationResponse", + "GetModuleRequest", + "GetModuleResponse", + "GetOrganizationMetadataRequest", + "GetOrganizationMetadataResponse", + "GetOrganizationNamespaceAvailabilityRequest", + "GetOrganizationNamespaceAvailabilityResponse", + "GetOrganizationRequest", + "GetOrganizationResponse", + "GetOrganizationsWithAccessToLocationRequest", + "GetOrganizationsWithAccessToLocationResponse", + "GetRegistryItemRequest", + "GetRegistryItemResponse", + "GetRobotAPIKeysRequest", + "GetRobotAPIKeysResponse", + "GetRobotMetadataRequest", + "GetRobotMetadataResponse", + "GetRobotPartByNameAndLocationRequest", + "GetRobotPartByNameAndLocationResponse", + "GetRobotPartHistoryRequest", + "GetRobotPartHistoryResponse", + "GetRobotPartLogsRequest", + "GetRobotPartLogsResponse", + "GetRobotPartMetadataRequest", + "GetRobotPartMetadataResponse", + "GetRobotPartRequest", + "GetRobotPartResponse", + "GetRobotPartsRequest", + "GetRobotPartsResponse", + "GetRobotRequest", + "GetRobotResponse", + "GetRoverRentalRobotsRequest", + "GetRoverRentalRobotsResponse", + "GetUserIDByEmailRequest", + "GetUserIDByEmailResponse", + "ListAuthorizationsRequest", + "ListAuthorizationsResponse", + "ListFragmentsRequest", + "ListFragmentsResponse", + "ListKeysRequest", + "ListKeysResponse", + "ListLocationsRequest", + "ListLocationsResponse", + "ListMachineFragmentsRequest", + "ListMachineFragmentsResponse", + "ListMachineSummariesRequest", + "ListMachineSummariesResponse", + "ListModulesRequest", + "ListModulesResponse", + "ListNestedFragmentsRequest", + "ListNestedFragmentsResponse", + "ListOAuthAppsRequest", + "ListOAuthAppsResponse", + "ListOrganizationMembersRequest", + "ListOrganizationMembersResponse", + "ListOrganizationsByUserRequest", + "ListOrganizationsByUserResponse", + "ListOrganizationsRequest", + "ListOrganizationsResponse", + "ListRegistryItemsRequest", + "ListRegistryItemsResponse", + "ListRobotsForLocationsRequest", + "ListRobotsForLocationsResponse", + "ListRobotsForOrgRequest", + "ListRobotsForOrgResponse", + "ListRobotsRequest", + "ListRobotsResponse", + "Location", + "LocationAuth", + "LocationAuthRequest", + "LocationAuthResponse", + "LocationOrganization", + "LocationSummary", + "MLModelMetadata", + "MLModelVersion", + "MLTrainingMetadata", + "MLTrainingVersion", + "MachinePickerCustomizations", + "MachineSummary", + "MarkPartAsMainRequest", + "MarkPartAsMainResponse", + "MarkPartForRestartRequest", + "MarkPartForRestartResponse", + "Model", + "Module", + "ModuleFileInfo", + "ModuleLanguage", + "ModuleMetadata", + "ModuleSourceType", + "ModuleVersion", + "NewRobotPartRequest", + "NewRobotPartResponse", + "NewRobotRequest", + "NewRobotResponse", + "OAuthConfig", + "OnlineState", + "OrgDetails", + "Organization", + "OrganizationGetLogoRequest", + "OrganizationGetLogoResponse", + "OrganizationGetSupportEmailRequest", + "OrganizationGetSupportEmailResponse", + "OrganizationIdentity", + "OrganizationInvite", + "OrganizationMember", + "OrganizationSetLogoRequest", + "OrganizationSetLogoResponse", + "OrganizationSetSupportEmailRequest", + "OrganizationSetSupportEmailResponse", + "PKCE", + "PartSummary", + "ReadOAuthAppRequest", + "ReadOAuthAppResponse", + "RegistryItem", + "RegistryItemStatus", + "RemoveRoleRequest", + "RemoveRoleResponse", + "RenameKeyRequest", + "RenameKeyResponse", + "RenameRegistryItemRequest", + "RenameRegistryItemResponse", + "ResendOrganizationInviteRequest", + "ResendOrganizationInviteResponse", + "ResolvedFragment", + "Robot", + "RobotPart", + "RobotPartHistoryEntry", + "RotateKeyRequest", + "RotateKeyResponse", + "RoverRentalRobot", + "SearchOrganizationsRequest", + "SearchOrganizationsResponse", + "SetFragmentTagRequest", + "SetFragmentTagResponse", + "ShareLocationRequest", + "ShareLocationResponse", + "SharedSecret", + "StorageConfig", + "TailRobotPartLogsRequest", + "TailRobotPartLogsResponse", + "TextOverrides", + "TransferRegistryItemRequest", + "TransferRegistryItemResponse", + "URLValidation", + "UnshareLocationRequest", + "UnshareLocationResponse", + "UpdateBillingServiceRequest", + "UpdateBillingServiceResponse", + "UpdateFragmentRequest", + "UpdateFragmentResponse", + "UpdateLocationMetadataRequest", + "UpdateLocationMetadataResponse", + "UpdateLocationRequest", + "UpdateLocationResponse", + "UpdateMLModelMetadata", + "UpdateMLTrainingMetadata", + "UpdateModuleMetadata", + "UpdateModuleRequest", + "UpdateModuleResponse", + "UpdateOAuthAppRequest", + "UpdateOAuthAppResponse", + "UpdateOrganizationInviteAuthorizationsRequest", + "UpdateOrganizationInviteAuthorizationsResponse", + "UpdateOrganizationMetadataRequest", + "UpdateOrganizationMetadataResponse", + "UpdateOrganizationNamespaceRequest", + "UpdateOrganizationNamespaceResponse", + "UpdateOrganizationRequest", + "UpdateOrganizationResponse", + "UpdateRegistryItemRequest", + "UpdateRegistryItemResponse", + "UpdateRobotMetadataRequest", + "UpdateRobotMetadataResponse", + "UpdateRobotPartMetadataRequest", + "UpdateRobotPartMetadataResponse", + "UpdateRobotPartRequest", + "UpdateRobotPartResponse", + "UpdateRobotRequest", + "UpdateRobotResponse", + "UploadModuleFileRequest", + "UploadModuleFileResponse", + "Uploads", + "VersionHistory", + "ViamAgentVersion", + "ViamServerVersion", + "Visibility", ] diff --git a/src/viam/proto/app/agent/__init__.py b/src/viam/proto/app/agent/__init__.py index 2e0e2b9fc4..d65e26305c 100644 --- a/src/viam/proto/app/agent/__init__.py +++ b/src/viam/proto/app/agent/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.app.agent.v1.agent_grpc import ( - AgentDeviceServiceBase, - AgentDeviceServiceStub, - UnimplementedAgentDeviceServiceBase -) +""" + +from ....gen.app.agent.v1.agent_grpc import AgentDeviceServiceBase, AgentDeviceServiceStub, UnimplementedAgentDeviceServiceBase from ....gen.app.agent.v1.agent_pb2 import ( DeviceAgentConfigRequest, DeviceAgentConfigResponse, @@ -14,18 +11,18 @@ HostInfo, PackageFormat, UpdateInfo, - VersionInfo + VersionInfo, ) __all__ = [ - 'AgentDeviceServiceBase', - 'AgentDeviceServiceStub', - 'UnimplementedAgentDeviceServiceBase', - 'DeviceAgentConfigRequest', - 'DeviceAgentConfigResponse', - 'DeviceSubsystemConfig', - 'HostInfo', - 'PackageFormat', - 'UpdateInfo', - 'VersionInfo', + "AgentDeviceServiceBase", + "AgentDeviceServiceStub", + "UnimplementedAgentDeviceServiceBase", + "DeviceAgentConfigRequest", + "DeviceAgentConfigResponse", + "DeviceSubsystemConfig", + "HostInfo", + "PackageFormat", + "UpdateInfo", + "VersionInfo", ] diff --git a/src/viam/proto/app/billing.py b/src/viam/proto/app/billing.py index 9da3d8ed02..0fdec984e6 100644 --- a/src/viam/proto/app/billing.py +++ b/src/viam/proto/app/billing.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ...gen.app.v1.billing_grpc import ( - BillingServiceBase, - BillingServiceStub, - UnimplementedBillingServiceBase -) +""" + +from ...gen.app.v1.billing_grpc import BillingServiceBase, BillingServiceStub, UnimplementedBillingServiceBase from ...gen.app.v1.billing_pb2 import ( ChargeOrganizationRequest, ChargeOrganizationResponse, @@ -39,43 +36,43 @@ UpdateOrganizationBillingTierResponse, UsageCost, UsageCostType, - VerificationInfo + VerificationInfo, ) __all__ = [ - 'BillingServiceBase', - 'BillingServiceStub', - 'UnimplementedBillingServiceBase', - 'ChargeOrganizationRequest', - 'ChargeOrganizationResponse', - 'CreateInvoiceAndChargeImmediatelyRequest', - 'CreateInvoiceAndChargeImmediatelyResponse', - 'GetAvailableBillingTiersRequest', - 'GetAvailableBillingTiersResponse', - 'GetCurrentMonthUsageRequest', - 'GetCurrentMonthUsageResponse', - 'GetInvoicePdfRequest', - 'GetInvoicePdfResponse', - 'GetInvoicesSummaryRequest', - 'GetInvoicesSummaryResponse', - 'GetLocationBillingOrganizationRequest', - 'GetLocationBillingOrganizationResponse', - 'GetOrgBillingInformationRequest', - 'GetOrgBillingInformationResponse', - 'InvoiceSummary', - 'PaymentMethodCard', - 'PaymentMethodType', - 'PaymentMethodUSBankAccount', - 'ResourceUsageCosts', - 'ResourceUsageCostsBySource', - 'SendPaymentRequiredEmailRequest', - 'SendPaymentRequiredEmailResponse', - 'SourceType', - 'UpdateLocationBillingOrganizationRequest', - 'UpdateLocationBillingOrganizationResponse', - 'UpdateOrganizationBillingTierRequest', - 'UpdateOrganizationBillingTierResponse', - 'UsageCost', - 'UsageCostType', - 'VerificationInfo', + "BillingServiceBase", + "BillingServiceStub", + "UnimplementedBillingServiceBase", + "ChargeOrganizationRequest", + "ChargeOrganizationResponse", + "CreateInvoiceAndChargeImmediatelyRequest", + "CreateInvoiceAndChargeImmediatelyResponse", + "GetAvailableBillingTiersRequest", + "GetAvailableBillingTiersResponse", + "GetCurrentMonthUsageRequest", + "GetCurrentMonthUsageResponse", + "GetInvoicePdfRequest", + "GetInvoicePdfResponse", + "GetInvoicesSummaryRequest", + "GetInvoicesSummaryResponse", + "GetLocationBillingOrganizationRequest", + "GetLocationBillingOrganizationResponse", + "GetOrgBillingInformationRequest", + "GetOrgBillingInformationResponse", + "InvoiceSummary", + "PaymentMethodCard", + "PaymentMethodType", + "PaymentMethodUSBankAccount", + "ResourceUsageCosts", + "ResourceUsageCostsBySource", + "SendPaymentRequiredEmailRequest", + "SendPaymentRequiredEmailResponse", + "SourceType", + "UpdateLocationBillingOrganizationRequest", + "UpdateLocationBillingOrganizationResponse", + "UpdateOrganizationBillingTierRequest", + "UpdateOrganizationBillingTierResponse", + "UsageCost", + "UsageCostType", + "VerificationInfo", ] diff --git a/src/viam/proto/app/cloudslam/__init__.py b/src/viam/proto/app/cloudslam/__init__.py index 2fad1b5cef..1f01b79f50 100644 --- a/src/viam/proto/app/cloudslam/__init__.py +++ b/src/viam/proto/app/cloudslam/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.app.cloudslam.v1.cloud_slam_grpc import ( - CloudSLAMServiceBase, - CloudSLAMServiceStub, - UnimplementedCloudSLAMServiceBase -) +""" + +from ....gen.app.cloudslam.v1.cloud_slam_grpc import CloudSLAMServiceBase, CloudSLAMServiceStub, UnimplementedCloudSLAMServiceBase from ....gen.app.cloudslam.v1.cloud_slam_pb2 import ( CaptureInterval, EndStatus, @@ -24,28 +21,28 @@ StartMappingSessionRequest, StartMappingSessionResponse, StopMappingSessionRequest, - StopMappingSessionResponse + StopMappingSessionResponse, ) __all__ = [ - 'CloudSLAMServiceBase', - 'CloudSLAMServiceStub', - 'UnimplementedCloudSLAMServiceBase', - 'CaptureInterval', - 'EndStatus', - 'GetActiveMappingSessionsForRobotRequest', - 'GetActiveMappingSessionsForRobotResponse', - 'GetMappingSessionMetadataByIDRequest', - 'GetMappingSessionMetadataByIDResponse', - 'GetMappingSessionPointCloudRequest', - 'GetMappingSessionPointCloudResponse', - 'ListMappingSessionsRequest', - 'ListMappingSessionsResponse', - 'MappingMetadata', - 'Module', - 'SensorInfo', - 'StartMappingSessionRequest', - 'StartMappingSessionResponse', - 'StopMappingSessionRequest', - 'StopMappingSessionResponse', + "CloudSLAMServiceBase", + "CloudSLAMServiceStub", + "UnimplementedCloudSLAMServiceBase", + "CaptureInterval", + "EndStatus", + "GetActiveMappingSessionsForRobotRequest", + "GetActiveMappingSessionsForRobotResponse", + "GetMappingSessionMetadataByIDRequest", + "GetMappingSessionMetadataByIDResponse", + "GetMappingSessionPointCloudRequest", + "GetMappingSessionPointCloudResponse", + "ListMappingSessionsRequest", + "ListMappingSessionsResponse", + "MappingMetadata", + "Module", + "SensorInfo", + "StartMappingSessionRequest", + "StartMappingSessionResponse", + "StopMappingSessionRequest", + "StopMappingSessionResponse", ] diff --git a/src/viam/proto/app/data/__init__.py b/src/viam/proto/app/data/__init__.py index 708349fb7d..b6d237f51f 100644 --- a/src/viam/proto/app/data/__init__.py +++ b/src/viam/proto/app/data/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.app.data.v1.data_grpc import ( - DataServiceBase, - DataServiceStub, - UnimplementedDataServiceBase -) +""" + +from ....gen.app.data.v1.data_grpc import DataServiceBase, DataServiceStub, UnimplementedDataServiceBase from ....gen.app.data.v1.data_pb2 import ( AddBinaryDataToDatasetByIDsRequest, AddBinaryDataToDatasetByIDsResponse, @@ -60,8 +57,8 @@ GetSavedQueryRequest, GetSavedQueryResponse, Index, - IndexCreator, IndexableCollection, + IndexCreator, ListIndexesRequest, ListIndexesResponse, ListSavedQueriesRequest, @@ -92,96 +89,96 @@ UpdateBoundingBoxRequest, UpdateBoundingBoxResponse, UpdateSavedQueryRequest, - UpdateSavedQueryResponse + UpdateSavedQueryResponse, ) __all__ = [ - 'DataServiceBase', - 'DataServiceStub', - 'UnimplementedDataServiceBase', - 'AddBinaryDataToDatasetByIDsRequest', - 'AddBinaryDataToDatasetByIDsResponse', - 'AddBoundingBoxToImageByIDRequest', - 'AddBoundingBoxToImageByIDResponse', - 'AddTagsToBinaryDataByFilterRequest', - 'AddTagsToBinaryDataByFilterResponse', - 'AddTagsToBinaryDataByIDsRequest', - 'AddTagsToBinaryDataByIDsResponse', - 'Annotations', - 'BinaryData', - 'BinaryDataByFilterRequest', - 'BinaryDataByFilterResponse', - 'BinaryDataByIDsRequest', - 'BinaryDataByIDsResponse', - 'BinaryID', - 'BinaryMetadata', - 'BoundingBox', - 'BoundingBoxLabelsByFilterRequest', - 'BoundingBoxLabelsByFilterResponse', - 'CaptureInterval', - 'CaptureMetadata', - 'Classification', - 'ConfigureDatabaseUserRequest', - 'ConfigureDatabaseUserResponse', - 'CreateBinaryDataSignedURLRequest', - 'CreateBinaryDataSignedURLResponse', - 'CreateIndexRequest', - 'CreateIndexResponse', - 'CreateSavedQueryRequest', - 'CreateSavedQueryResponse', - 'DataRequest', - 'DeleteBinaryDataByFilterRequest', - 'DeleteBinaryDataByFilterResponse', - 'DeleteBinaryDataByIDsRequest', - 'DeleteBinaryDataByIDsResponse', - 'DeleteIndexRequest', - 'DeleteIndexResponse', - 'DeleteSavedQueryRequest', - 'DeleteSavedQueryResponse', - 'DeleteTabularDataRequest', - 'DeleteTabularDataResponse', - 'DeleteTabularFilter', - 'ExportTabularDataRequest', - 'ExportTabularDataResponse', - 'Filter', - 'GetDatabaseConnectionRequest', - 'GetDatabaseConnectionResponse', - 'GetLatestTabularDataRequest', - 'GetLatestTabularDataResponse', - 'GetSavedQueryRequest', - 'GetSavedQueryResponse', - 'Index', - 'IndexCreator', - 'IndexableCollection', - 'ListIndexesRequest', - 'ListIndexesResponse', - 'ListSavedQueriesRequest', - 'ListSavedQueriesResponse', - 'Order', - 'Query', - 'RemoveBinaryDataFromDatasetByIDsRequest', - 'RemoveBinaryDataFromDatasetByIDsResponse', - 'RemoveBoundingBoxFromImageByIDRequest', - 'RemoveBoundingBoxFromImageByIDResponse', - 'RemoveTagsFromBinaryDataByFilterRequest', - 'RemoveTagsFromBinaryDataByFilterResponse', - 'RemoveTagsFromBinaryDataByIDsRequest', - 'RemoveTagsFromBinaryDataByIDsResponse', - 'TabularData', - 'TabularDataByFilterRequest', - 'TabularDataByFilterResponse', - 'TabularDataByMQLRequest', - 'TabularDataByMQLResponse', - 'TabularDataBySQLRequest', - 'TabularDataBySQLResponse', - 'TabularDataSource', - 'TabularDataSourceType', - 'TagsByFilterRequest', - 'TagsByFilterResponse', - 'TagsFilter', - 'TagsFilterType', - 'UpdateBoundingBoxRequest', - 'UpdateBoundingBoxResponse', - 'UpdateSavedQueryRequest', - 'UpdateSavedQueryResponse', + "DataServiceBase", + "DataServiceStub", + "UnimplementedDataServiceBase", + "AddBinaryDataToDatasetByIDsRequest", + "AddBinaryDataToDatasetByIDsResponse", + "AddBoundingBoxToImageByIDRequest", + "AddBoundingBoxToImageByIDResponse", + "AddTagsToBinaryDataByFilterRequest", + "AddTagsToBinaryDataByFilterResponse", + "AddTagsToBinaryDataByIDsRequest", + "AddTagsToBinaryDataByIDsResponse", + "Annotations", + "BinaryData", + "BinaryDataByFilterRequest", + "BinaryDataByFilterResponse", + "BinaryDataByIDsRequest", + "BinaryDataByIDsResponse", + "BinaryID", + "BinaryMetadata", + "BoundingBox", + "BoundingBoxLabelsByFilterRequest", + "BoundingBoxLabelsByFilterResponse", + "CaptureInterval", + "CaptureMetadata", + "Classification", + "ConfigureDatabaseUserRequest", + "ConfigureDatabaseUserResponse", + "CreateBinaryDataSignedURLRequest", + "CreateBinaryDataSignedURLResponse", + "CreateIndexRequest", + "CreateIndexResponse", + "CreateSavedQueryRequest", + "CreateSavedQueryResponse", + "DataRequest", + "DeleteBinaryDataByFilterRequest", + "DeleteBinaryDataByFilterResponse", + "DeleteBinaryDataByIDsRequest", + "DeleteBinaryDataByIDsResponse", + "DeleteIndexRequest", + "DeleteIndexResponse", + "DeleteSavedQueryRequest", + "DeleteSavedQueryResponse", + "DeleteTabularDataRequest", + "DeleteTabularDataResponse", + "DeleteTabularFilter", + "ExportTabularDataRequest", + "ExportTabularDataResponse", + "Filter", + "GetDatabaseConnectionRequest", + "GetDatabaseConnectionResponse", + "GetLatestTabularDataRequest", + "GetLatestTabularDataResponse", + "GetSavedQueryRequest", + "GetSavedQueryResponse", + "Index", + "IndexCreator", + "IndexableCollection", + "ListIndexesRequest", + "ListIndexesResponse", + "ListSavedQueriesRequest", + "ListSavedQueriesResponse", + "Order", + "Query", + "RemoveBinaryDataFromDatasetByIDsRequest", + "RemoveBinaryDataFromDatasetByIDsResponse", + "RemoveBoundingBoxFromImageByIDRequest", + "RemoveBoundingBoxFromImageByIDResponse", + "RemoveTagsFromBinaryDataByFilterRequest", + "RemoveTagsFromBinaryDataByFilterResponse", + "RemoveTagsFromBinaryDataByIDsRequest", + "RemoveTagsFromBinaryDataByIDsResponse", + "TabularData", + "TabularDataByFilterRequest", + "TabularDataByFilterResponse", + "TabularDataByMQLRequest", + "TabularDataByMQLResponse", + "TabularDataBySQLRequest", + "TabularDataBySQLResponse", + "TabularDataSource", + "TabularDataSourceType", + "TagsByFilterRequest", + "TagsByFilterResponse", + "TagsFilter", + "TagsFilterType", + "UpdateBoundingBoxRequest", + "UpdateBoundingBoxResponse", + "UpdateSavedQueryRequest", + "UpdateSavedQueryResponse", ] diff --git a/src/viam/proto/app/datapipelines/__init__.py b/src/viam/proto/app/datapipelines/__init__.py index 060344965d..b81d834f12 100644 --- a/src/viam/proto/app/datapipelines/__init__.py +++ b/src/viam/proto/app/datapipelines/__init__.py @@ -1,11 +1,12 @@ -''' +""" @generated by Viam. Do not edit manually! -''' +""" + from ....gen.app.datapipelines.v1.data_pipelines_grpc import ( DataPipelinesServiceBase, DataPipelinesServiceStub, - UnimplementedDataPipelinesServiceBase + UnimplementedDataPipelinesServiceBase, ) from ....gen.app.datapipelines.v1.data_pipelines_pb2 import ( CreateDataPipelineRequest, @@ -26,30 +27,30 @@ ListDataPipelinesRequest, ListDataPipelinesResponse, RenameDataPipelineRequest, - RenameDataPipelineResponse + RenameDataPipelineResponse, ) __all__ = [ - 'DataPipelinesServiceBase', - 'DataPipelinesServiceStub', - 'UnimplementedDataPipelinesServiceBase', - 'CreateDataPipelineRequest', - 'CreateDataPipelineResponse', - 'DataPipeline', - 'DataPipelineRun', - 'DataPipelineRunStatus', - 'DeleteDataPipelineRequest', - 'DeleteDataPipelineResponse', - 'DisableDataPipelineRequest', - 'DisableDataPipelineResponse', - 'EnableDataPipelineRequest', - 'EnableDataPipelineResponse', - 'GetDataPipelineRequest', - 'GetDataPipelineResponse', - 'ListDataPipelineRunsRequest', - 'ListDataPipelineRunsResponse', - 'ListDataPipelinesRequest', - 'ListDataPipelinesResponse', - 'RenameDataPipelineRequest', - 'RenameDataPipelineResponse', + "DataPipelinesServiceBase", + "DataPipelinesServiceStub", + "UnimplementedDataPipelinesServiceBase", + "CreateDataPipelineRequest", + "CreateDataPipelineResponse", + "DataPipeline", + "DataPipelineRun", + "DataPipelineRunStatus", + "DeleteDataPipelineRequest", + "DeleteDataPipelineResponse", + "DisableDataPipelineRequest", + "DisableDataPipelineResponse", + "EnableDataPipelineRequest", + "EnableDataPipelineResponse", + "GetDataPipelineRequest", + "GetDataPipelineResponse", + "ListDataPipelineRunsRequest", + "ListDataPipelineRunsResponse", + "ListDataPipelinesRequest", + "ListDataPipelinesResponse", + "RenameDataPipelineRequest", + "RenameDataPipelineResponse", ] diff --git a/src/viam/proto/app/dataset/__init__.py b/src/viam/proto/app/dataset/__init__.py index 36c0715d98..602f219342 100644 --- a/src/viam/proto/app/dataset/__init__.py +++ b/src/viam/proto/app/dataset/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.app.dataset.v1.dataset_grpc import ( - DatasetServiceBase, - DatasetServiceStub, - UnimplementedDatasetServiceBase -) +""" + +from ....gen.app.dataset.v1.dataset_grpc import DatasetServiceBase, DatasetServiceStub, UnimplementedDatasetServiceBase from ....gen.app.dataset.v1.dataset_pb2 import ( CreateDatasetRequest, CreateDatasetResponse, @@ -20,24 +17,24 @@ MergeDatasetsRequest, MergeDatasetsResponse, RenameDatasetRequest, - RenameDatasetResponse + RenameDatasetResponse, ) __all__ = [ - 'DatasetServiceBase', - 'DatasetServiceStub', - 'UnimplementedDatasetServiceBase', - 'CreateDatasetRequest', - 'CreateDatasetResponse', - 'Dataset', - 'DeleteDatasetRequest', - 'DeleteDatasetResponse', - 'ListDatasetsByIDsRequest', - 'ListDatasetsByIDsResponse', - 'ListDatasetsByOrganizationIDRequest', - 'ListDatasetsByOrganizationIDResponse', - 'MergeDatasetsRequest', - 'MergeDatasetsResponse', - 'RenameDatasetRequest', - 'RenameDatasetResponse', + "DatasetServiceBase", + "DatasetServiceStub", + "UnimplementedDatasetServiceBase", + "CreateDatasetRequest", + "CreateDatasetResponse", + "Dataset", + "DeleteDatasetRequest", + "DeleteDatasetResponse", + "ListDatasetsByIDsRequest", + "ListDatasetsByIDsResponse", + "ListDatasetsByOrganizationIDRequest", + "ListDatasetsByOrganizationIDResponse", + "MergeDatasetsRequest", + "MergeDatasetsResponse", + "RenameDatasetRequest", + "RenameDatasetResponse", ] diff --git a/src/viam/proto/app/datasync/__init__.py b/src/viam/proto/app/datasync/__init__.py index 62e46c8abd..a9f8451b5c 100644 --- a/src/viam/proto/app/datasync/__init__.py +++ b/src/viam/proto/app/datasync/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.app.datasync.v1.data_sync_grpc import ( - DataSyncServiceBase, - DataSyncServiceStub, - UnimplementedDataSyncServiceBase -) +""" + +from ....gen.app.datasync.v1.data_sync_grpc import DataSyncServiceBase, DataSyncServiceStub, UnimplementedDataSyncServiceBase from ....gen.app.datasync.v1.data_sync_pb2 import ( CaptureInterval, DataCaptureMetadata, @@ -22,26 +19,26 @@ SensorMetadata, StreamingDataCaptureUploadRequest, StreamingDataCaptureUploadResponse, - UploadMetadata + UploadMetadata, ) __all__ = [ - 'DataSyncServiceBase', - 'DataSyncServiceStub', - 'UnimplementedDataSyncServiceBase', - 'CaptureInterval', - 'DataCaptureMetadata', - 'DataCaptureUploadMetadata', - 'DataCaptureUploadRequest', - 'DataCaptureUploadResponse', - 'DataType', - 'FileData', - 'FileUploadRequest', - 'FileUploadResponse', - 'MimeType', - 'SensorData', - 'SensorMetadata', - 'StreamingDataCaptureUploadRequest', - 'StreamingDataCaptureUploadResponse', - 'UploadMetadata', + "DataSyncServiceBase", + "DataSyncServiceStub", + "UnimplementedDataSyncServiceBase", + "CaptureInterval", + "DataCaptureMetadata", + "DataCaptureUploadMetadata", + "DataCaptureUploadRequest", + "DataCaptureUploadResponse", + "DataType", + "FileData", + "FileUploadRequest", + "FileUploadResponse", + "MimeType", + "SensorData", + "SensorMetadata", + "StreamingDataCaptureUploadRequest", + "StreamingDataCaptureUploadResponse", + "UploadMetadata", ] diff --git a/src/viam/proto/app/end_user.py b/src/viam/proto/app/end_user.py index 4eaa744ca1..f0290e5f07 100644 --- a/src/viam/proto/app/end_user.py +++ b/src/viam/proto/app/end_user.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ...gen.app.v1.end_user_grpc import ( - EndUserServiceBase, - EndUserServiceStub, - UnimplementedEndUserServiceBase -) +""" + +from ...gen.app.v1.end_user_grpc import EndUserServiceBase, EndUserServiceStub, UnimplementedEndUserServiceBase from ...gen.app.v1.end_user_pb2 import ( AcceptLegalRequest, AcceptLegalResponse, @@ -17,21 +14,21 @@ RegisterAuthApplicationRequest, RegisterAuthApplicationResponse, UpdateAuthApplicationRequest, - UpdateAuthApplicationResponse + UpdateAuthApplicationResponse, ) __all__ = [ - 'EndUserServiceBase', - 'EndUserServiceStub', - 'UnimplementedEndUserServiceBase', - 'AcceptLegalRequest', - 'AcceptLegalResponse', - 'GetAuthApplicationRequest', - 'GetAuthApplicationResponse', - 'IsLegalAcceptedRequest', - 'IsLegalAcceptedResponse', - 'RegisterAuthApplicationRequest', - 'RegisterAuthApplicationResponse', - 'UpdateAuthApplicationRequest', - 'UpdateAuthApplicationResponse', + "EndUserServiceBase", + "EndUserServiceStub", + "UnimplementedEndUserServiceBase", + "AcceptLegalRequest", + "AcceptLegalResponse", + "GetAuthApplicationRequest", + "GetAuthApplicationResponse", + "IsLegalAcceptedRequest", + "IsLegalAcceptedResponse", + "RegisterAuthApplicationRequest", + "RegisterAuthApplicationResponse", + "UpdateAuthApplicationRequest", + "UpdateAuthApplicationResponse", ] diff --git a/src/viam/proto/app/mlinference/__init__.py b/src/viam/proto/app/mlinference/__init__.py index d3b3de1230..4bd1fe1824 100644 --- a/src/viam/proto/app/mlinference/__init__.py +++ b/src/viam/proto/app/mlinference/__init__.py @@ -1,21 +1,15 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.app.mlinference.v1.ml_inference_grpc import ( - MLInferenceServiceBase, - MLInferenceServiceStub, - UnimplementedMLInferenceServiceBase -) -from ....gen.app.mlinference.v1.ml_inference_pb2 import ( - GetInferenceRequest, - GetInferenceResponse -) +""" + +from ....gen.app.mlinference.v1.ml_inference_grpc import MLInferenceServiceBase, MLInferenceServiceStub, UnimplementedMLInferenceServiceBase +from ....gen.app.mlinference.v1.ml_inference_pb2 import GetInferenceRequest, GetInferenceResponse __all__ = [ - 'MLInferenceServiceBase', - 'MLInferenceServiceStub', - 'UnimplementedMLInferenceServiceBase', - 'GetInferenceRequest', - 'GetInferenceResponse', + "MLInferenceServiceBase", + "MLInferenceServiceStub", + "UnimplementedMLInferenceServiceBase", + "GetInferenceRequest", + "GetInferenceResponse", ] diff --git a/src/viam/proto/app/mltraining/__init__.py b/src/viam/proto/app/mltraining/__init__.py index ccf8f80a7f..650b266553 100644 --- a/src/viam/proto/app/mltraining/__init__.py +++ b/src/viam/proto/app/mltraining/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.app.mltraining.v1.ml_training_grpc import ( - MLTrainingServiceBase, - MLTrainingServiceStub, - UnimplementedMLTrainingServiceBase -) +""" + +from ....gen.app.mltraining.v1.ml_training_grpc import MLTrainingServiceBase, MLTrainingServiceStub, UnimplementedMLTrainingServiceBase from ....gen.app.mltraining.v1.ml_training_pb2 import ( CancelTrainingJobRequest, CancelTrainingJobResponse, @@ -29,33 +26,33 @@ SubmitTrainingJobResponse, TrainingJobLogEntry, TrainingJobMetadata, - TrainingStatus + TrainingStatus, ) __all__ = [ - 'MLTrainingServiceBase', - 'MLTrainingServiceStub', - 'UnimplementedMLTrainingServiceBase', - 'CancelTrainingJobRequest', - 'CancelTrainingJobResponse', - 'Container', - 'DeleteCompletedTrainingJobRequest', - 'DeleteCompletedTrainingJobResponse', - 'GetTrainingJobLogsRequest', - 'GetTrainingJobLogsResponse', - 'GetTrainingJobRequest', - 'GetTrainingJobResponse', - 'ListSupportedContainersRequest', - 'ListSupportedContainersResponse', - 'ListTrainingJobsRequest', - 'ListTrainingJobsResponse', - 'ModelFramework', - 'ModelType', - 'SubmitCustomTrainingJobRequest', - 'SubmitCustomTrainingJobResponse', - 'SubmitTrainingJobRequest', - 'SubmitTrainingJobResponse', - 'TrainingJobLogEntry', - 'TrainingJobMetadata', - 'TrainingStatus', + "MLTrainingServiceBase", + "MLTrainingServiceStub", + "UnimplementedMLTrainingServiceBase", + "CancelTrainingJobRequest", + "CancelTrainingJobResponse", + "Container", + "DeleteCompletedTrainingJobRequest", + "DeleteCompletedTrainingJobResponse", + "GetTrainingJobLogsRequest", + "GetTrainingJobLogsResponse", + "GetTrainingJobRequest", + "GetTrainingJobResponse", + "ListSupportedContainersRequest", + "ListSupportedContainersResponse", + "ListTrainingJobsRequest", + "ListTrainingJobsResponse", + "ModelFramework", + "ModelType", + "SubmitCustomTrainingJobRequest", + "SubmitCustomTrainingJobResponse", + "SubmitTrainingJobRequest", + "SubmitTrainingJobResponse", + "TrainingJobLogEntry", + "TrainingJobMetadata", + "TrainingStatus", ] diff --git a/src/viam/proto/app/packages/__init__.py b/src/viam/proto/app/packages/__init__.py index 263674cc7a..b09b26537f 100644 --- a/src/viam/proto/app/packages/__init__.py +++ b/src/viam/proto/app/packages/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.app.packages.v1.packages_grpc import ( - PackageServiceBase, - PackageServiceStub, - UnimplementedPackageServiceBase -) +""" + +from ....gen.app.packages.v1.packages_grpc import PackageServiceBase, PackageServiceStub, UnimplementedPackageServiceBase from ....gen.app.packages.v1.packages_pb2 import ( CreatePackageRequest, CreatePackageResponse, @@ -19,23 +16,23 @@ ListPackagesResponse, Package, PackageInfo, - PackageType + PackageType, ) __all__ = [ - 'PackageServiceBase', - 'PackageServiceStub', - 'UnimplementedPackageServiceBase', - 'CreatePackageRequest', - 'CreatePackageResponse', - 'DeletePackageRequest', - 'DeletePackageResponse', - 'FileInfo', - 'GetPackageRequest', - 'GetPackageResponse', - 'ListPackagesRequest', - 'ListPackagesResponse', - 'Package', - 'PackageInfo', - 'PackageType', + "PackageServiceBase", + "PackageServiceStub", + "UnimplementedPackageServiceBase", + "CreatePackageRequest", + "CreatePackageResponse", + "DeletePackageRequest", + "DeletePackageResponse", + "FileInfo", + "GetPackageRequest", + "GetPackageResponse", + "ListPackagesRequest", + "ListPackagesResponse", + "Package", + "PackageInfo", + "PackageType", ] diff --git a/src/viam/proto/app/robot.py b/src/viam/proto/app/robot.py index c092bf778f..87494020ce 100644 --- a/src/viam/proto/app/robot.py +++ b/src/viam/proto/app/robot.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ...gen.app.v1.robot_grpc import ( - RobotServiceBase, - RobotServiceStub, - UnimplementedRobotServiceBase -) +""" + +from ...gen.app.v1.robot_grpc import RobotServiceBase, RobotServiceStub, UnimplementedRobotServiceBase from ...gen.app.v1.robot_pb2 import ( AgentInfo, AppValidationStatus, @@ -21,8 +18,8 @@ CredentialsType, ExternalAuthConfig, Frame, - JWKSFile, JobConfig, + JWKSFile, LocationSecret, LogConfiguration, LogPatternConfig, @@ -44,48 +41,48 @@ SessionsConfig, TracingConfig, TrafficTunnelEndpoint, - Translation + Translation, ) __all__ = [ - 'RobotServiceBase', - 'RobotServiceStub', - 'UnimplementedRobotServiceBase', - 'AgentInfo', - 'AppValidationStatus', - 'AuthConfig', - 'AuthHandlerConfig', - 'CertificateRequest', - 'CertificateResponse', - 'CloudConfig', - 'ComponentConfig', - 'ConfigRequest', - 'ConfigResponse', - 'CredentialsType', - 'ExternalAuthConfig', - 'Frame', - 'JWKSFile', - 'JobConfig', - 'LocationSecret', - 'LogConfiguration', - 'LogPatternConfig', - 'LogRequest', - 'LogResponse', - 'MaintenanceConfig', - 'ModuleConfig', - 'NeedsRestartRequest', - 'NeedsRestartResponse', - 'NetworkConfig', - 'Orientation', - 'PackageConfig', - 'ProcessConfig', - 'RemoteAuth', - 'RemoteConfig', - 'ResourceLevelServiceConfig', - 'RobotConfig', - 'ServiceConfig', - 'SessionsConfig', - 'TracingConfig', - 'TrafficTunnelEndpoint', - 'Translation', + "RobotServiceBase", + "RobotServiceStub", + "UnimplementedRobotServiceBase", + "AgentInfo", + "AppValidationStatus", + "AuthConfig", + "AuthHandlerConfig", + "CertificateRequest", + "CertificateResponse", + "CloudConfig", + "ComponentConfig", + "ConfigRequest", + "ConfigResponse", + "CredentialsType", + "ExternalAuthConfig", + "Frame", + "JWKSFile", + "JobConfig", + "LocationSecret", + "LogConfiguration", + "LogPatternConfig", + "LogRequest", + "LogResponse", + "MaintenanceConfig", + "ModuleConfig", + "NeedsRestartRequest", + "NeedsRestartResponse", + "NetworkConfig", + "Orientation", + "PackageConfig", + "ProcessConfig", + "RemoteAuth", + "RemoteConfig", + "ResourceLevelServiceConfig", + "RobotConfig", + "ServiceConfig", + "SessionsConfig", + "TracingConfig", + "TrafficTunnelEndpoint", + "Translation", ] diff --git a/src/viam/proto/common/__init__.py b/src/viam/proto/common/__init__.py index 6ce7d8a204..f6f72fc580 100644 --- a/src/viam/proto/common/__init__.py +++ b/src/viam/proto/common/__init__.py @@ -1,7 +1,8 @@ -''' +""" @generated by Viam. Do not edit manually! -''' +""" + from ...gen.common.v1.common_pb2 import ( ActuatorStatus, AudioInfo, @@ -9,9 +10,9 @@ DoCommandRequest, DoCommandResponse, GeoGeometry, - GeoPoint, GeometriesInFrame, Geometry, + GeoPoint, Get3DModelsRequest, Get3DModelsResponse, GetGeometriesRequest, @@ -36,42 +37,42 @@ Sphere, Transform, Vector3, - WorldState + WorldState, ) __all__ = [ - 'ActuatorStatus', - 'AudioInfo', - 'Capsule', - 'DoCommandRequest', - 'DoCommandResponse', - 'GeoGeometry', - 'GeoPoint', - 'GeometriesInFrame', - 'Geometry', - 'Get3DModelsRequest', - 'Get3DModelsResponse', - 'GetGeometriesRequest', - 'GetGeometriesResponse', - 'GetKinematicsRequest', - 'GetKinematicsResponse', - 'GetPropertiesRequest', - 'GetPropertiesResponse', - 'GetReadingsRequest', - 'GetReadingsResponse', - 'KinematicsFileFormat', - 'LogEntry', - 'Mesh', - 'Orientation', - 'PointCloud', - 'PointCloudObject', - 'Pose', - 'PoseInFrame', - 'RectangularPrism', - 'ResourceName', - 'ResponseMetadata', - 'Sphere', - 'Transform', - 'Vector3', - 'WorldState', + "ActuatorStatus", + "AudioInfo", + "Capsule", + "DoCommandRequest", + "DoCommandResponse", + "GeoGeometry", + "GeoPoint", + "GeometriesInFrame", + "Geometry", + "Get3DModelsRequest", + "Get3DModelsResponse", + "GetGeometriesRequest", + "GetGeometriesResponse", + "GetKinematicsRequest", + "GetKinematicsResponse", + "GetPropertiesRequest", + "GetPropertiesResponse", + "GetReadingsRequest", + "GetReadingsResponse", + "KinematicsFileFormat", + "LogEntry", + "Mesh", + "Orientation", + "PointCloud", + "PointCloudObject", + "Pose", + "PoseInFrame", + "RectangularPrism", + "ResourceName", + "ResponseMetadata", + "Sphere", + "Transform", + "Vector3", + "WorldState", ] diff --git a/src/viam/proto/component/arm/__init__.py b/src/viam/proto/component/arm/__init__.py index 1365355c43..65297b3187 100644 --- a/src/viam/proto/component/arm/__init__.py +++ b/src/viam/proto/component/arm/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.arm.v1.arm_grpc import ( - ArmServiceBase, - ArmServiceStub, - UnimplementedArmServiceBase -) +""" + +from ....gen.component.arm.v1.arm_grpc import ArmServiceBase, ArmServiceStub, UnimplementedArmServiceBase from ....gen.component.arm.v1.arm_pb2 import ( GetEndPositionRequest, GetEndPositionResponse, @@ -24,28 +21,28 @@ MoveToPositionResponse, Status, StopRequest, - StopResponse + StopResponse, ) __all__ = [ - 'ArmServiceBase', - 'ArmServiceStub', - 'UnimplementedArmServiceBase', - 'GetEndPositionRequest', - 'GetEndPositionResponse', - 'GetJointPositionsRequest', - 'GetJointPositionsResponse', - 'IsMovingRequest', - 'IsMovingResponse', - 'JointPositions', - 'MoveOptions', - 'MoveThroughJointPositionsRequest', - 'MoveThroughJointPositionsResponse', - 'MoveToJointPositionsRequest', - 'MoveToJointPositionsResponse', - 'MoveToPositionRequest', - 'MoveToPositionResponse', - 'Status', - 'StopRequest', - 'StopResponse', + "ArmServiceBase", + "ArmServiceStub", + "UnimplementedArmServiceBase", + "GetEndPositionRequest", + "GetEndPositionResponse", + "GetJointPositionsRequest", + "GetJointPositionsResponse", + "IsMovingRequest", + "IsMovingResponse", + "JointPositions", + "MoveOptions", + "MoveThroughJointPositionsRequest", + "MoveThroughJointPositionsResponse", + "MoveToJointPositionsRequest", + "MoveToJointPositionsResponse", + "MoveToPositionRequest", + "MoveToPositionResponse", + "Status", + "StopRequest", + "StopResponse", ] diff --git a/src/viam/proto/component/audioin/__init__.py b/src/viam/proto/component/audioin/__init__.py index 6fefd629b4..106e87e08f 100644 --- a/src/viam/proto/component/audioin/__init__.py +++ b/src/viam/proto/component/audioin/__init__.py @@ -1,23 +1,16 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.audioin.v1.audioin_grpc import ( - AudioInServiceBase, - AudioInServiceStub, - UnimplementedAudioInServiceBase -) -from ....gen.component.audioin.v1.audioin_pb2 import ( - AudioChunk, - GetAudioRequest, - GetAudioResponse -) +""" + +from ....gen.component.audioin.v1.audioin_grpc import AudioInServiceBase, AudioInServiceStub, UnimplementedAudioInServiceBase +from ....gen.component.audioin.v1.audioin_pb2 import AudioChunk, GetAudioRequest, GetAudioResponse __all__ = [ - 'AudioInServiceBase', - 'AudioInServiceStub', - 'UnimplementedAudioInServiceBase', - 'AudioChunk', - 'GetAudioRequest', - 'GetAudioResponse', + "AudioInServiceBase", + "AudioInServiceStub", + "UnimplementedAudioInServiceBase", + "AudioChunk", + "GetAudioRequest", + "GetAudioResponse", ] diff --git a/src/viam/proto/component/audioout/__init__.py b/src/viam/proto/component/audioout/__init__.py index c2f5d2e78b..4f52daa91b 100644 --- a/src/viam/proto/component/audioout/__init__.py +++ b/src/viam/proto/component/audioout/__init__.py @@ -1,21 +1,15 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.audioout.v1.audioout_grpc import ( - AudioOutServiceBase, - AudioOutServiceStub, - UnimplementedAudioOutServiceBase -) -from ....gen.component.audioout.v1.audioout_pb2 import ( - PlayRequest, - PlayResponse -) +""" + +from ....gen.component.audioout.v1.audioout_grpc import AudioOutServiceBase, AudioOutServiceStub, UnimplementedAudioOutServiceBase +from ....gen.component.audioout.v1.audioout_pb2 import PlayRequest, PlayResponse __all__ = [ - 'AudioOutServiceBase', - 'AudioOutServiceStub', - 'UnimplementedAudioOutServiceBase', - 'PlayRequest', - 'PlayResponse', + "AudioOutServiceBase", + "AudioOutServiceStub", + "UnimplementedAudioOutServiceBase", + "PlayRequest", + "PlayResponse", ] diff --git a/src/viam/proto/component/base/__init__.py b/src/viam/proto/component/base/__init__.py index d92a15a21e..74b5f27043 100644 --- a/src/viam/proto/component/base/__init__.py +++ b/src/viam/proto/component/base/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.base.v1.base_grpc import ( - BaseServiceBase, - BaseServiceStub, - UnimplementedBaseServiceBase -) +""" + +from ....gen.component.base.v1.base_grpc import BaseServiceBase, BaseServiceStub, UnimplementedBaseServiceBase from ....gen.component.base.v1.base_pb2 import ( GetPropertiesRequest, GetPropertiesResponse, @@ -21,25 +18,25 @@ SpinRequest, SpinResponse, StopRequest, - StopResponse + StopResponse, ) __all__ = [ - 'BaseServiceBase', - 'BaseServiceStub', - 'UnimplementedBaseServiceBase', - 'GetPropertiesRequest', - 'GetPropertiesResponse', - 'IsMovingRequest', - 'IsMovingResponse', - 'MoveStraightRequest', - 'MoveStraightResponse', - 'SetPowerRequest', - 'SetPowerResponse', - 'SetVelocityRequest', - 'SetVelocityResponse', - 'SpinRequest', - 'SpinResponse', - 'StopRequest', - 'StopResponse', + "BaseServiceBase", + "BaseServiceStub", + "UnimplementedBaseServiceBase", + "GetPropertiesRequest", + "GetPropertiesResponse", + "IsMovingRequest", + "IsMovingResponse", + "MoveStraightRequest", + "MoveStraightResponse", + "SetPowerRequest", + "SetPowerResponse", + "SetVelocityRequest", + "SetVelocityResponse", + "SpinRequest", + "SpinResponse", + "StopRequest", + "StopResponse", ] diff --git a/src/viam/proto/component/board/__init__.py b/src/viam/proto/component/board/__init__.py index 21dfbb18ed..2f5bc98749 100644 --- a/src/viam/proto/component/board/__init__.py +++ b/src/viam/proto/component/board/__init__.py @@ -1,65 +1,62 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.board.v1.board_grpc import ( - BoardServiceBase, - BoardServiceStub, - UnimplementedBoardServiceBase -) +""" + +from ....gen.component.board.v1.board_grpc import BoardServiceBase, BoardServiceStub, UnimplementedBoardServiceBase from ....gen.component.board.v1.board_pb2 import ( GetDigitalInterruptValueRequest, GetDigitalInterruptValueResponse, GetGPIORequest, GetGPIOResponse, + PowerMode, PWMFrequencyRequest, PWMFrequencyResponse, PWMRequest, PWMResponse, - PowerMode, ReadAnalogReaderRequest, ReadAnalogReaderResponse, SetGPIORequest, SetGPIOResponse, + SetPowerModeRequest, + SetPowerModeResponse, SetPWMFrequencyRequest, SetPWMFrequencyResponse, SetPWMRequest, SetPWMResponse, - SetPowerModeRequest, - SetPowerModeResponse, Status, StreamTicksRequest, StreamTicksResponse, WriteAnalogRequest, - WriteAnalogResponse + WriteAnalogResponse, ) __all__ = [ - 'BoardServiceBase', - 'BoardServiceStub', - 'UnimplementedBoardServiceBase', - 'GetDigitalInterruptValueRequest', - 'GetDigitalInterruptValueResponse', - 'GetGPIORequest', - 'GetGPIOResponse', - 'PWMFrequencyRequest', - 'PWMFrequencyResponse', - 'PWMRequest', - 'PWMResponse', - 'PowerMode', - 'ReadAnalogReaderRequest', - 'ReadAnalogReaderResponse', - 'SetGPIORequest', - 'SetGPIOResponse', - 'SetPWMFrequencyRequest', - 'SetPWMFrequencyResponse', - 'SetPWMRequest', - 'SetPWMResponse', - 'SetPowerModeRequest', - 'SetPowerModeResponse', - 'Status', - 'StreamTicksRequest', - 'StreamTicksResponse', - 'WriteAnalogRequest', - 'WriteAnalogResponse', + "BoardServiceBase", + "BoardServiceStub", + "UnimplementedBoardServiceBase", + "GetDigitalInterruptValueRequest", + "GetDigitalInterruptValueResponse", + "GetGPIORequest", + "GetGPIOResponse", + "PWMFrequencyRequest", + "PWMFrequencyResponse", + "PWMRequest", + "PWMResponse", + "PowerMode", + "ReadAnalogReaderRequest", + "ReadAnalogReaderResponse", + "SetGPIORequest", + "SetGPIOResponse", + "SetPWMFrequencyRequest", + "SetPWMFrequencyResponse", + "SetPWMRequest", + "SetPWMResponse", + "SetPowerModeRequest", + "SetPowerModeResponse", + "Status", + "StreamTicksRequest", + "StreamTicksResponse", + "WriteAnalogRequest", + "WriteAnalogResponse", ] diff --git a/src/viam/proto/component/button/__init__.py b/src/viam/proto/component/button/__init__.py index 79eb582154..45dd96e591 100644 --- a/src/viam/proto/component/button/__init__.py +++ b/src/viam/proto/component/button/__init__.py @@ -1,21 +1,15 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.button.v1.button_grpc import ( - ButtonServiceBase, - ButtonServiceStub, - UnimplementedButtonServiceBase -) -from ....gen.component.button.v1.button_pb2 import ( - PushRequest, - PushResponse -) +""" + +from ....gen.component.button.v1.button_grpc import ButtonServiceBase, ButtonServiceStub, UnimplementedButtonServiceBase +from ....gen.component.button.v1.button_pb2 import PushRequest, PushResponse __all__ = [ - 'ButtonServiceBase', - 'ButtonServiceStub', - 'UnimplementedButtonServiceBase', - 'PushRequest', - 'PushResponse', + "ButtonServiceBase", + "ButtonServiceStub", + "UnimplementedButtonServiceBase", + "PushRequest", + "PushResponse", ] diff --git a/src/viam/proto/component/camera/__init__.py b/src/viam/proto/component/camera/__init__.py index 0166cf6876..b59a331745 100644 --- a/src/viam/proto/component/camera/__init__.py +++ b/src/viam/proto/component/camera/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.camera.v1.camera_grpc import ( - CameraServiceBase, - CameraServiceStub, - UnimplementedCameraServiceBase -) +""" + +from ....gen.component.camera.v1.camera_grpc import CameraServiceBase, CameraServiceStub, UnimplementedCameraServiceBase from ....gen.component.camera.v1.camera_pb2 import ( DistortionParameters, ExtrinsicParameters, @@ -24,28 +21,28 @@ Property, RenderFrameRequest, Webcam, - Webcams + Webcams, ) __all__ = [ - 'CameraServiceBase', - 'CameraServiceStub', - 'UnimplementedCameraServiceBase', - 'DistortionParameters', - 'ExtrinsicParameters', - 'Format', - 'GetImageRequest', - 'GetImageResponse', - 'GetImagesRequest', - 'GetImagesResponse', - 'GetPointCloudRequest', - 'GetPointCloudResponse', - 'GetPropertiesRequest', - 'GetPropertiesResponse', - 'Image', - 'IntrinsicParameters', - 'Property', - 'RenderFrameRequest', - 'Webcam', - 'Webcams', + "CameraServiceBase", + "CameraServiceStub", + "UnimplementedCameraServiceBase", + "DistortionParameters", + "ExtrinsicParameters", + "Format", + "GetImageRequest", + "GetImageResponse", + "GetImagesRequest", + "GetImagesResponse", + "GetPointCloudRequest", + "GetPointCloudResponse", + "GetPropertiesRequest", + "GetPropertiesResponse", + "Image", + "IntrinsicParameters", + "Property", + "RenderFrameRequest", + "Webcam", + "Webcams", ] diff --git a/src/viam/proto/component/encoder/__init__.py b/src/viam/proto/component/encoder/__init__.py index 0f26320668..ff442c7a16 100644 --- a/src/viam/proto/component/encoder/__init__.py +++ b/src/viam/proto/component/encoder/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.encoder.v1.encoder_grpc import ( - EncoderServiceBase, - EncoderServiceStub, - UnimplementedEncoderServiceBase -) +""" + +from ....gen.component.encoder.v1.encoder_grpc import EncoderServiceBase, EncoderServiceStub, UnimplementedEncoderServiceBase from ....gen.component.encoder.v1.encoder_pb2 import ( GetPositionRequest, GetPositionResponse, @@ -14,18 +11,18 @@ GetPropertiesResponse, PositionType, ResetPositionRequest, - ResetPositionResponse + ResetPositionResponse, ) __all__ = [ - 'EncoderServiceBase', - 'EncoderServiceStub', - 'UnimplementedEncoderServiceBase', - 'GetPositionRequest', - 'GetPositionResponse', - 'GetPropertiesRequest', - 'GetPropertiesResponse', - 'PositionType', - 'ResetPositionRequest', - 'ResetPositionResponse', + "EncoderServiceBase", + "EncoderServiceStub", + "UnimplementedEncoderServiceBase", + "GetPositionRequest", + "GetPositionResponse", + "GetPropertiesRequest", + "GetPropertiesResponse", + "PositionType", + "ResetPositionRequest", + "ResetPositionResponse", ] diff --git a/src/viam/proto/component/gantry/__init__.py b/src/viam/proto/component/gantry/__init__.py index 9ec08ed1fd..6c2649e9a8 100644 --- a/src/viam/proto/component/gantry/__init__.py +++ b/src/viam/proto/component/gantry/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.gantry.v1.gantry_grpc import ( - GantryServiceBase, - GantryServiceStub, - UnimplementedGantryServiceBase -) +""" + +from ....gen.component.gantry.v1.gantry_grpc import GantryServiceBase, GantryServiceStub, UnimplementedGantryServiceBase from ....gen.component.gantry.v1.gantry_pb2 import ( GetLengthsRequest, GetLengthsResponse, @@ -20,24 +17,24 @@ MoveToPositionResponse, Status, StopRequest, - StopResponse + StopResponse, ) __all__ = [ - 'GantryServiceBase', - 'GantryServiceStub', - 'UnimplementedGantryServiceBase', - 'GetLengthsRequest', - 'GetLengthsResponse', - 'GetPositionRequest', - 'GetPositionResponse', - 'HomeRequest', - 'HomeResponse', - 'IsMovingRequest', - 'IsMovingResponse', - 'MoveToPositionRequest', - 'MoveToPositionResponse', - 'Status', - 'StopRequest', - 'StopResponse', + "GantryServiceBase", + "GantryServiceStub", + "UnimplementedGantryServiceBase", + "GetLengthsRequest", + "GetLengthsResponse", + "GetPositionRequest", + "GetPositionResponse", + "HomeRequest", + "HomeResponse", + "IsMovingRequest", + "IsMovingResponse", + "MoveToPositionRequest", + "MoveToPositionResponse", + "Status", + "StopRequest", + "StopResponse", ] diff --git a/src/viam/proto/component/generic/__init__.py b/src/viam/proto/component/generic/__init__.py index c3c169edcd..9b7a1533e8 100644 --- a/src/viam/proto/component/generic/__init__.py +++ b/src/viam/proto/component/generic/__init__.py @@ -1,15 +1,12 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.generic.v1.generic_grpc import ( - GenericServiceBase, - GenericServiceStub, - UnimplementedGenericServiceBase -) +""" + +from ....gen.component.generic.v1.generic_grpc import GenericServiceBase, GenericServiceStub, UnimplementedGenericServiceBase __all__ = [ - 'GenericServiceBase', - 'GenericServiceStub', - 'UnimplementedGenericServiceBase', + "GenericServiceBase", + "GenericServiceStub", + "UnimplementedGenericServiceBase", ] diff --git a/src/viam/proto/component/gripper/__init__.py b/src/viam/proto/component/gripper/__init__.py index 551807a1bd..a132693024 100644 --- a/src/viam/proto/component/gripper/__init__.py +++ b/src/viam/proto/component/gripper/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.gripper.v1.gripper_grpc import ( - GripperServiceBase, - GripperServiceStub, - UnimplementedGripperServiceBase -) +""" + +from ....gen.component.gripper.v1.gripper_grpc import GripperServiceBase, GripperServiceStub, UnimplementedGripperServiceBase from ....gen.component.gripper.v1.gripper_pb2 import ( GrabRequest, GrabResponse, @@ -17,21 +14,21 @@ OpenRequest, OpenResponse, StopRequest, - StopResponse + StopResponse, ) __all__ = [ - 'GripperServiceBase', - 'GripperServiceStub', - 'UnimplementedGripperServiceBase', - 'GrabRequest', - 'GrabResponse', - 'IsHoldingSomethingRequest', - 'IsHoldingSomethingResponse', - 'IsMovingRequest', - 'IsMovingResponse', - 'OpenRequest', - 'OpenResponse', - 'StopRequest', - 'StopResponse', + "GripperServiceBase", + "GripperServiceStub", + "UnimplementedGripperServiceBase", + "GrabRequest", + "GrabResponse", + "IsHoldingSomethingRequest", + "IsHoldingSomethingResponse", + "IsMovingRequest", + "IsMovingResponse", + "OpenRequest", + "OpenResponse", + "StopRequest", + "StopResponse", ] diff --git a/src/viam/proto/component/inputcontroller/__init__.py b/src/viam/proto/component/inputcontroller/__init__.py index 6cc11c1655..ba3f345684 100644 --- a/src/viam/proto/component/inputcontroller/__init__.py +++ b/src/viam/proto/component/inputcontroller/__init__.py @@ -1,11 +1,12 @@ -''' +""" @generated by Viam. Do not edit manually! -''' +""" + from ....gen.component.inputcontroller.v1.input_controller_grpc import ( InputControllerServiceBase, InputControllerServiceStub, - UnimplementedInputControllerServiceBase + UnimplementedInputControllerServiceBase, ) from ....gen.component.inputcontroller.v1.input_controller_pb2 import ( Event, @@ -17,21 +18,21 @@ StreamEventsRequest, StreamEventsResponse, TriggerEventRequest, - TriggerEventResponse + TriggerEventResponse, ) __all__ = [ - 'InputControllerServiceBase', - 'InputControllerServiceStub', - 'UnimplementedInputControllerServiceBase', - 'Event', - 'GetControlsRequest', - 'GetControlsResponse', - 'GetEventsRequest', - 'GetEventsResponse', - 'Status', - 'StreamEventsRequest', - 'StreamEventsResponse', - 'TriggerEventRequest', - 'TriggerEventResponse', + "InputControllerServiceBase", + "InputControllerServiceStub", + "UnimplementedInputControllerServiceBase", + "Event", + "GetControlsRequest", + "GetControlsResponse", + "GetEventsRequest", + "GetEventsResponse", + "Status", + "StreamEventsRequest", + "StreamEventsResponse", + "TriggerEventRequest", + "TriggerEventResponse", ] diff --git a/src/viam/proto/component/motor/__init__.py b/src/viam/proto/component/motor/__init__.py index d5dd4c1c5e..b27fd89819 100644 --- a/src/viam/proto/component/motor/__init__.py +++ b/src/viam/proto/component/motor/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.motor.v1.motor_grpc import ( - MotorServiceBase, - MotorServiceStub, - UnimplementedMotorServiceBase -) +""" + +from ....gen.component.motor.v1.motor_grpc import MotorServiceBase, MotorServiceStub, UnimplementedMotorServiceBase from ....gen.component.motor.v1.motor_pb2 import ( GetPositionRequest, GetPositionResponse, @@ -28,32 +25,32 @@ SetRPMResponse, Status, StopRequest, - StopResponse + StopResponse, ) __all__ = [ - 'MotorServiceBase', - 'MotorServiceStub', - 'UnimplementedMotorServiceBase', - 'GetPositionRequest', - 'GetPositionResponse', - 'GetPropertiesRequest', - 'GetPropertiesResponse', - 'GoForRequest', - 'GoForResponse', - 'GoToRequest', - 'GoToResponse', - 'IsMovingRequest', - 'IsMovingResponse', - 'IsPoweredRequest', - 'IsPoweredResponse', - 'ResetZeroPositionRequest', - 'ResetZeroPositionResponse', - 'SetPowerRequest', - 'SetPowerResponse', - 'SetRPMRequest', - 'SetRPMResponse', - 'Status', - 'StopRequest', - 'StopResponse', + "MotorServiceBase", + "MotorServiceStub", + "UnimplementedMotorServiceBase", + "GetPositionRequest", + "GetPositionResponse", + "GetPropertiesRequest", + "GetPropertiesResponse", + "GoForRequest", + "GoForResponse", + "GoToRequest", + "GoToResponse", + "IsMovingRequest", + "IsMovingResponse", + "IsPoweredRequest", + "IsPoweredResponse", + "ResetZeroPositionRequest", + "ResetZeroPositionResponse", + "SetPowerRequest", + "SetPowerResponse", + "SetRPMRequest", + "SetRPMResponse", + "Status", + "StopRequest", + "StopResponse", ] diff --git a/src/viam/proto/component/movementsensor/__init__.py b/src/viam/proto/component/movementsensor/__init__.py index cef69fa106..770de4997f 100644 --- a/src/viam/proto/component/movementsensor/__init__.py +++ b/src/viam/proto/component/movementsensor/__init__.py @@ -1,11 +1,12 @@ -''' +""" @generated by Viam. Do not edit manually! -''' +""" + from ....gen.component.movementsensor.v1.movementsensor_grpc import ( MovementSensorServiceBase, MovementSensorServiceStub, - UnimplementedMovementSensorServiceBase + UnimplementedMovementSensorServiceBase, ) from ....gen.component.movementsensor.v1.movementsensor_pb2 import ( GetAccuracyRequest, @@ -23,27 +24,27 @@ GetPositionRequest, GetPositionResponse, GetPropertiesRequest, - GetPropertiesResponse + GetPropertiesResponse, ) __all__ = [ - 'MovementSensorServiceBase', - 'MovementSensorServiceStub', - 'UnimplementedMovementSensorServiceBase', - 'GetAccuracyRequest', - 'GetAccuracyResponse', - 'GetAngularVelocityRequest', - 'GetAngularVelocityResponse', - 'GetCompassHeadingRequest', - 'GetCompassHeadingResponse', - 'GetLinearAccelerationRequest', - 'GetLinearAccelerationResponse', - 'GetLinearVelocityRequest', - 'GetLinearVelocityResponse', - 'GetOrientationRequest', - 'GetOrientationResponse', - 'GetPositionRequest', - 'GetPositionResponse', - 'GetPropertiesRequest', - 'GetPropertiesResponse', + "MovementSensorServiceBase", + "MovementSensorServiceStub", + "UnimplementedMovementSensorServiceBase", + "GetAccuracyRequest", + "GetAccuracyResponse", + "GetAngularVelocityRequest", + "GetAngularVelocityResponse", + "GetCompassHeadingRequest", + "GetCompassHeadingResponse", + "GetLinearAccelerationRequest", + "GetLinearAccelerationResponse", + "GetLinearVelocityRequest", + "GetLinearVelocityResponse", + "GetOrientationRequest", + "GetOrientationResponse", + "GetPositionRequest", + "GetPositionResponse", + "GetPropertiesRequest", + "GetPropertiesResponse", ] diff --git a/src/viam/proto/component/posetracker/__init__.py b/src/viam/proto/component/posetracker/__init__.py index 2644a7d67b..7073f07f1b 100644 --- a/src/viam/proto/component/posetracker/__init__.py +++ b/src/viam/proto/component/posetracker/__init__.py @@ -1,21 +1,19 @@ -''' +""" @generated by Viam. Do not edit manually! -''' +""" + from ....gen.component.posetracker.v1.pose_tracker_grpc import ( PoseTrackerServiceBase, PoseTrackerServiceStub, - UnimplementedPoseTrackerServiceBase -) -from ....gen.component.posetracker.v1.pose_tracker_pb2 import ( - GetPosesRequest, - GetPosesResponse + UnimplementedPoseTrackerServiceBase, ) +from ....gen.component.posetracker.v1.pose_tracker_pb2 import GetPosesRequest, GetPosesResponse __all__ = [ - 'PoseTrackerServiceBase', - 'PoseTrackerServiceStub', - 'UnimplementedPoseTrackerServiceBase', - 'GetPosesRequest', - 'GetPosesResponse', + "PoseTrackerServiceBase", + "PoseTrackerServiceStub", + "UnimplementedPoseTrackerServiceBase", + "GetPosesRequest", + "GetPosesResponse", ] diff --git a/src/viam/proto/component/powersensor/__init__.py b/src/viam/proto/component/powersensor/__init__.py index c170f347e4..dbd1b7076a 100644 --- a/src/viam/proto/component/powersensor/__init__.py +++ b/src/viam/proto/component/powersensor/__init__.py @@ -1,11 +1,12 @@ -''' +""" @generated by Viam. Do not edit manually! -''' +""" + from ....gen.component.powersensor.v1.powersensor_grpc import ( PowerSensorServiceBase, PowerSensorServiceStub, - UnimplementedPowerSensorServiceBase + UnimplementedPowerSensorServiceBase, ) from ....gen.component.powersensor.v1.powersensor_pb2 import ( GetCurrentRequest, @@ -13,17 +14,17 @@ GetPowerRequest, GetPowerResponse, GetVoltageRequest, - GetVoltageResponse + GetVoltageResponse, ) __all__ = [ - 'PowerSensorServiceBase', - 'PowerSensorServiceStub', - 'UnimplementedPowerSensorServiceBase', - 'GetCurrentRequest', - 'GetCurrentResponse', - 'GetPowerRequest', - 'GetPowerResponse', - 'GetVoltageRequest', - 'GetVoltageResponse', + "PowerSensorServiceBase", + "PowerSensorServiceStub", + "UnimplementedPowerSensorServiceBase", + "GetCurrentRequest", + "GetCurrentResponse", + "GetPowerRequest", + "GetPowerResponse", + "GetVoltageRequest", + "GetVoltageResponse", ] diff --git a/src/viam/proto/component/sensor/__init__.py b/src/viam/proto/component/sensor/__init__.py index 034b03b894..86939e9943 100644 --- a/src/viam/proto/component/sensor/__init__.py +++ b/src/viam/proto/component/sensor/__init__.py @@ -1,15 +1,12 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.sensor.v1.sensor_grpc import ( - SensorServiceBase, - SensorServiceStub, - UnimplementedSensorServiceBase -) +""" + +from ....gen.component.sensor.v1.sensor_grpc import SensorServiceBase, SensorServiceStub, UnimplementedSensorServiceBase __all__ = [ - 'SensorServiceBase', - 'SensorServiceStub', - 'UnimplementedSensorServiceBase', + "SensorServiceBase", + "SensorServiceStub", + "UnimplementedSensorServiceBase", ] diff --git a/src/viam/proto/component/servo/__init__.py b/src/viam/proto/component/servo/__init__.py index 5312e00896..2e4626130e 100644 --- a/src/viam/proto/component/servo/__init__.py +++ b/src/viam/proto/component/servo/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.servo.v1.servo_grpc import ( - ServoServiceBase, - ServoServiceStub, - UnimplementedServoServiceBase -) +""" + +from ....gen.component.servo.v1.servo_grpc import ServoServiceBase, ServoServiceStub, UnimplementedServoServiceBase from ....gen.component.servo.v1.servo_pb2 import ( GetPositionRequest, GetPositionResponse, @@ -16,20 +13,20 @@ MoveResponse, Status, StopRequest, - StopResponse + StopResponse, ) __all__ = [ - 'ServoServiceBase', - 'ServoServiceStub', - 'UnimplementedServoServiceBase', - 'GetPositionRequest', - 'GetPositionResponse', - 'IsMovingRequest', - 'IsMovingResponse', - 'MoveRequest', - 'MoveResponse', - 'Status', - 'StopRequest', - 'StopResponse', + "ServoServiceBase", + "ServoServiceStub", + "UnimplementedServoServiceBase", + "GetPositionRequest", + "GetPositionResponse", + "IsMovingRequest", + "IsMovingResponse", + "MoveRequest", + "MoveResponse", + "Status", + "StopRequest", + "StopResponse", ] diff --git a/src/viam/proto/component/switch/__init__.py b/src/viam/proto/component/switch/__init__.py index 9572873ac7..1fb43ec49f 100644 --- a/src/viam/proto/component/switch/__init__.py +++ b/src/viam/proto/component/switch/__init__.py @@ -1,29 +1,26 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.switch.v1.switch_grpc import ( - SwitchServiceBase, - SwitchServiceStub, - UnimplementedSwitchServiceBase -) +""" + +from ....gen.component.switch.v1.switch_grpc import SwitchServiceBase, SwitchServiceStub, UnimplementedSwitchServiceBase from ....gen.component.switch.v1.switch_pb2 import ( GetNumberOfPositionsRequest, GetNumberOfPositionsResponse, GetPositionRequest, GetPositionResponse, SetPositionRequest, - SetPositionResponse + SetPositionResponse, ) __all__ = [ - 'SwitchServiceBase', - 'SwitchServiceStub', - 'UnimplementedSwitchServiceBase', - 'GetNumberOfPositionsRequest', - 'GetNumberOfPositionsResponse', - 'GetPositionRequest', - 'GetPositionResponse', - 'SetPositionRequest', - 'SetPositionResponse', + "SwitchServiceBase", + "SwitchServiceStub", + "UnimplementedSwitchServiceBase", + "GetNumberOfPositionsRequest", + "GetNumberOfPositionsResponse", + "GetPositionRequest", + "GetPositionResponse", + "SetPositionRequest", + "SetPositionResponse", ] diff --git a/src/viam/proto/component/testecho/__init__.py b/src/viam/proto/component/testecho/__init__.py index 9590dbc733..a60f271f9b 100644 --- a/src/viam/proto/component/testecho/__init__.py +++ b/src/viam/proto/component/testecho/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.component.testecho.v1.testecho_grpc import ( - TestEchoServiceBase, - TestEchoServiceStub, - UnimplementedTestEchoServiceBase -) +""" + +from ....gen.component.testecho.v1.testecho_grpc import TestEchoServiceBase, TestEchoServiceStub, UnimplementedTestEchoServiceBase from ....gen.component.testecho.v1.testecho_pb2 import ( EchoBiDiRequest, EchoBiDiResponse, @@ -15,19 +12,19 @@ EchoRequest, EchoResponse, StopRequest, - StopResponse + StopResponse, ) __all__ = [ - 'TestEchoServiceBase', - 'TestEchoServiceStub', - 'UnimplementedTestEchoServiceBase', - 'EchoBiDiRequest', - 'EchoBiDiResponse', - 'EchoMultipleRequest', - 'EchoMultipleResponse', - 'EchoRequest', - 'EchoResponse', - 'StopRequest', - 'StopResponse', + "TestEchoServiceBase", + "TestEchoServiceStub", + "UnimplementedTestEchoServiceBase", + "EchoBiDiRequest", + "EchoBiDiResponse", + "EchoMultipleRequest", + "EchoMultipleResponse", + "EchoRequest", + "EchoResponse", + "StopRequest", + "StopResponse", ] diff --git a/src/viam/proto/module/__init__.py b/src/viam/proto/module/__init__.py index 6a160a540f..fdc3ea5942 100644 --- a/src/viam/proto/module/__init__.py +++ b/src/viam/proto/module/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ...gen.module.v1.module_grpc import ( - ModuleServiceBase, - ModuleServiceStub, - UnimplementedModuleServiceBase -) +""" + +from ...gen.module.v1.module_grpc import ModuleServiceBase, ModuleServiceStub, UnimplementedModuleServiceBase from ...gen.module.v1.module_pb2 import ( AddResourceRequest, AddResourceResponse, @@ -19,23 +16,23 @@ RemoveResourceRequest, RemoveResourceResponse, ValidateConfigRequest, - ValidateConfigResponse + ValidateConfigResponse, ) __all__ = [ - 'ModuleServiceBase', - 'ModuleServiceStub', - 'UnimplementedModuleServiceBase', - 'AddResourceRequest', - 'AddResourceResponse', - 'HandlerDefinition', - 'HandlerMap', - 'ReadyRequest', - 'ReadyResponse', - 'ReconfigureResourceRequest', - 'ReconfigureResourceResponse', - 'RemoveResourceRequest', - 'RemoveResourceResponse', - 'ValidateConfigRequest', - 'ValidateConfigResponse', + "ModuleServiceBase", + "ModuleServiceStub", + "UnimplementedModuleServiceBase", + "AddResourceRequest", + "AddResourceResponse", + "HandlerDefinition", + "HandlerMap", + "ReadyRequest", + "ReadyResponse", + "ReconfigureResourceRequest", + "ReconfigureResourceResponse", + "RemoveResourceRequest", + "RemoveResourceResponse", + "ValidateConfigRequest", + "ValidateConfigResponse", ] diff --git a/src/viam/proto/opentelemetry/proto/common/__init__.py b/src/viam/proto/opentelemetry/proto/common/__init__.py index 7857066e99..e3ecdd62fa 100644 --- a/src/viam/proto/opentelemetry/proto/common/__init__.py +++ b/src/viam/proto/opentelemetry/proto/common/__init__.py @@ -1,21 +1,15 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from .....gen.opentelemetry.proto.common.v1.common_pb2 import ( - AnyValue, - ArrayValue, - EntityRef, - InstrumentationScope, - KeyValue, - KeyValueList -) +""" + +from .....gen.opentelemetry.proto.common.v1.common_pb2 import AnyValue, ArrayValue, EntityRef, InstrumentationScope, KeyValue, KeyValueList __all__ = [ - 'AnyValue', - 'ArrayValue', - 'EntityRef', - 'InstrumentationScope', - 'KeyValue', - 'KeyValueList', + "AnyValue", + "ArrayValue", + "EntityRef", + "InstrumentationScope", + "KeyValue", + "KeyValueList", ] diff --git a/src/viam/proto/opentelemetry/proto/resource/__init__.py b/src/viam/proto/opentelemetry/proto/resource/__init__.py index 63dd3b991f..c9a1962cc6 100644 --- a/src/viam/proto/opentelemetry/proto/resource/__init__.py +++ b/src/viam/proto/opentelemetry/proto/resource/__init__.py @@ -1,11 +1,10 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from .....gen.opentelemetry.proto.resource.v1.resource_pb2 import ( - Resource -) +""" + +from .....gen.opentelemetry.proto.resource.v1.resource_pb2 import Resource __all__ = [ - 'Resource', + "Resource", ] diff --git a/src/viam/proto/opentelemetry/proto/trace/__init__.py b/src/viam/proto/opentelemetry/proto/trace/__init__.py index fdb0b48913..84c730ed16 100644 --- a/src/viam/proto/opentelemetry/proto/trace/__init__.py +++ b/src/viam/proto/opentelemetry/proto/trace/__init__.py @@ -1,21 +1,15 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from .....gen.opentelemetry.proto.trace.v1.trace_pb2 import ( - ResourceSpans, - ScopeSpans, - Span, - SpanFlags, - Status, - TracesData -) +""" + +from .....gen.opentelemetry.proto.trace.v1.trace_pb2 import ResourceSpans, ScopeSpans, Span, SpanFlags, Status, TracesData __all__ = [ - 'ResourceSpans', - 'ScopeSpans', - 'Span', - 'SpanFlags', - 'Status', - 'TracesData', + "ResourceSpans", + "ScopeSpans", + "Span", + "SpanFlags", + "Status", + "TracesData", ] diff --git a/src/viam/proto/provisioning/__init__.py b/src/viam/proto/provisioning/__init__.py index 49f71aa0d4..1e70aeca42 100644 --- a/src/viam/proto/provisioning/__init__.py +++ b/src/viam/proto/provisioning/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ...gen.provisioning.v1.provisioning_grpc import ( - ProvisioningServiceBase, - ProvisioningServiceStub, - UnimplementedProvisioningServiceBase -) +""" + +from ...gen.provisioning.v1.provisioning_grpc import ProvisioningServiceBase, ProvisioningServiceStub, UnimplementedProvisioningServiceBase from ...gen.provisioning.v1.provisioning_pb2 import ( APIKey, CloudConfig, @@ -21,25 +18,25 @@ SetNetworkCredentialsRequest, SetNetworkCredentialsResponse, SetSmartMachineCredentialsRequest, - SetSmartMachineCredentialsResponse + SetSmartMachineCredentialsResponse, ) __all__ = [ - 'ProvisioningServiceBase', - 'ProvisioningServiceStub', - 'UnimplementedProvisioningServiceBase', - 'APIKey', - 'CloudConfig', - 'ExitProvisioningRequest', - 'ExitProvisioningResponse', - 'GetNetworkListRequest', - 'GetNetworkListResponse', - 'GetSmartMachineStatusRequest', - 'GetSmartMachineStatusResponse', - 'NetworkInfo', - 'ProvisioningInfo', - 'SetNetworkCredentialsRequest', - 'SetNetworkCredentialsResponse', - 'SetSmartMachineCredentialsRequest', - 'SetSmartMachineCredentialsResponse', + "ProvisioningServiceBase", + "ProvisioningServiceStub", + "UnimplementedProvisioningServiceBase", + "APIKey", + "CloudConfig", + "ExitProvisioningRequest", + "ExitProvisioningResponse", + "GetNetworkListRequest", + "GetNetworkListResponse", + "GetSmartMachineStatusRequest", + "GetSmartMachineStatusResponse", + "NetworkInfo", + "ProvisioningInfo", + "SetNetworkCredentialsRequest", + "SetNetworkCredentialsResponse", + "SetSmartMachineCredentialsRequest", + "SetSmartMachineCredentialsResponse", ] diff --git a/src/viam/proto/robot/__init__.py b/src/viam/proto/robot/__init__.py index 69ef8ad1ef..f28c2ea418 100644 --- a/src/viam/proto/robot/__init__.py +++ b/src/viam/proto/robot/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ...gen.robot.v1.robot_grpc import ( - RobotServiceBase, - RobotServiceStub, - UnimplementedRobotServiceBase -) +""" + +from ...gen.robot.v1.robot_grpc import RobotServiceBase, RobotServiceStub, UnimplementedRobotServiceBase from ...gen.robot.v1.robot_pb2 import ( BlockForOperationRequest, BlockForOperationResponse, @@ -70,74 +67,74 @@ TransformPoseResponse, Tunnel, TunnelRequest, - TunnelResponse + TunnelResponse, ) __all__ = [ - 'RobotServiceBase', - 'RobotServiceStub', - 'UnimplementedRobotServiceBase', - 'BlockForOperationRequest', - 'BlockForOperationResponse', - 'CancelOperationRequest', - 'CancelOperationResponse', - 'ConfigStatus', - 'FrameSystemConfig', - 'FrameSystemConfigRequest', - 'FrameSystemConfigResponse', - 'GetCloudMetadataRequest', - 'GetCloudMetadataResponse', - 'GetMachineStatusRequest', - 'GetMachineStatusResponse', - 'GetModelsFromModulesRequest', - 'GetModelsFromModulesResponse', - 'GetOperationsRequest', - 'GetOperationsResponse', - 'GetPoseRequest', - 'GetPoseResponse', - 'GetSessionsRequest', - 'GetSessionsResponse', - 'GetStatusRequest', - 'GetStatusResponse', - 'GetVersionRequest', - 'GetVersionResponse', - 'JobStatus', - 'ListTunnelsRequest', - 'ListTunnelsResponse', - 'LogRequest', - 'LogResponse', - 'ModuleModel', - 'Operation', - 'PeerConnectionInfo', - 'PeerConnectionType', - 'ResourceNamesRequest', - 'ResourceNamesResponse', - 'ResourceRPCSubtype', - 'ResourceRPCSubtypesRequest', - 'ResourceRPCSubtypesResponse', - 'ResourceStatus', - 'RestartModuleRequest', - 'RestartModuleResponse', - 'SendSessionHeartbeatRequest', - 'SendSessionHeartbeatResponse', - 'SendTracesRequest', - 'SendTracesResponse', - 'Session', - 'ShutdownRequest', - 'ShutdownResponse', - 'StartSessionRequest', - 'StartSessionResponse', - 'Status', - 'StopAllRequest', - 'StopAllResponse', - 'StopExtraParameters', - 'StreamStatusRequest', - 'StreamStatusResponse', - 'TransformPCDRequest', - 'TransformPCDResponse', - 'TransformPoseRequest', - 'TransformPoseResponse', - 'Tunnel', - 'TunnelRequest', - 'TunnelResponse', + "RobotServiceBase", + "RobotServiceStub", + "UnimplementedRobotServiceBase", + "BlockForOperationRequest", + "BlockForOperationResponse", + "CancelOperationRequest", + "CancelOperationResponse", + "ConfigStatus", + "FrameSystemConfig", + "FrameSystemConfigRequest", + "FrameSystemConfigResponse", + "GetCloudMetadataRequest", + "GetCloudMetadataResponse", + "GetMachineStatusRequest", + "GetMachineStatusResponse", + "GetModelsFromModulesRequest", + "GetModelsFromModulesResponse", + "GetOperationsRequest", + "GetOperationsResponse", + "GetPoseRequest", + "GetPoseResponse", + "GetSessionsRequest", + "GetSessionsResponse", + "GetStatusRequest", + "GetStatusResponse", + "GetVersionRequest", + "GetVersionResponse", + "JobStatus", + "ListTunnelsRequest", + "ListTunnelsResponse", + "LogRequest", + "LogResponse", + "ModuleModel", + "Operation", + "PeerConnectionInfo", + "PeerConnectionType", + "ResourceNamesRequest", + "ResourceNamesResponse", + "ResourceRPCSubtype", + "ResourceRPCSubtypesRequest", + "ResourceRPCSubtypesResponse", + "ResourceStatus", + "RestartModuleRequest", + "RestartModuleResponse", + "SendSessionHeartbeatRequest", + "SendSessionHeartbeatResponse", + "SendTracesRequest", + "SendTracesResponse", + "Session", + "ShutdownRequest", + "ShutdownResponse", + "StartSessionRequest", + "StartSessionResponse", + "Status", + "StopAllRequest", + "StopAllResponse", + "StopExtraParameters", + "StreamStatusRequest", + "StreamStatusResponse", + "TransformPCDRequest", + "TransformPCDResponse", + "TransformPoseRequest", + "TransformPoseResponse", + "Tunnel", + "TunnelRequest", + "TunnelResponse", ] diff --git a/src/viam/proto/rpc/auth.py b/src/viam/proto/rpc/auth.py index 462f075a39..1704c74cd4 100644 --- a/src/viam/proto/rpc/auth.py +++ b/src/viam/proto/rpc/auth.py @@ -1,33 +1,34 @@ -''' +""" @generated by Viam. Do not edit manually! -''' +""" + from ...gen.proto.rpc.v1.auth_grpc import ( AuthServiceBase, AuthServiceStub, ExternalAuthServiceBase, ExternalAuthServiceStub, UnimplementedAuthServiceBase, - UnimplementedExternalAuthServiceBase + UnimplementedExternalAuthServiceBase, ) from ...gen.proto.rpc.v1.auth_pb2 import ( AuthenticateRequest, AuthenticateResponse, AuthenticateToRequest, AuthenticateToResponse, - Credentials + Credentials, ) __all__ = [ - 'AuthServiceBase', - 'AuthServiceStub', - 'ExternalAuthServiceBase', - 'ExternalAuthServiceStub', - 'UnimplementedAuthServiceBase', - 'UnimplementedExternalAuthServiceBase', - 'AuthenticateRequest', - 'AuthenticateResponse', - 'AuthenticateToRequest', - 'AuthenticateToResponse', - 'Credentials', + "AuthServiceBase", + "AuthServiceStub", + "ExternalAuthServiceBase", + "ExternalAuthServiceStub", + "UnimplementedAuthServiceBase", + "UnimplementedExternalAuthServiceBase", + "AuthenticateRequest", + "AuthenticateResponse", + "AuthenticateToRequest", + "AuthenticateToResponse", + "Credentials", ] diff --git a/src/viam/proto/rpc/examples/echo/__init__.py b/src/viam/proto/rpc/examples/echo/__init__.py index 5ec2ea10a1..60cefe6d90 100644 --- a/src/viam/proto/rpc/examples/echo/__init__.py +++ b/src/viam/proto/rpc/examples/echo/__init__.py @@ -1,29 +1,26 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from .....gen.proto.rpc.examples.echo.v1.echo_grpc import ( - EchoServiceBase, - EchoServiceStub, - UnimplementedEchoServiceBase -) +""" + +from .....gen.proto.rpc.examples.echo.v1.echo_grpc import EchoServiceBase, EchoServiceStub, UnimplementedEchoServiceBase from .....gen.proto.rpc.examples.echo.v1.echo_pb2 import ( EchoBiDiRequest, EchoBiDiResponse, EchoMultipleRequest, EchoMultipleResponse, EchoRequest, - EchoResponse + EchoResponse, ) __all__ = [ - 'EchoServiceBase', - 'EchoServiceStub', - 'UnimplementedEchoServiceBase', - 'EchoBiDiRequest', - 'EchoBiDiResponse', - 'EchoMultipleRequest', - 'EchoMultipleResponse', - 'EchoRequest', - 'EchoResponse', + "EchoServiceBase", + "EchoServiceStub", + "UnimplementedEchoServiceBase", + "EchoBiDiRequest", + "EchoBiDiResponse", + "EchoMultipleRequest", + "EchoMultipleResponse", + "EchoRequest", + "EchoResponse", ] diff --git a/src/viam/proto/rpc/examples/echoresource/__init__.py b/src/viam/proto/rpc/examples/echoresource/__init__.py index e85abde49f..18e72d0443 100644 --- a/src/viam/proto/rpc/examples/echoresource/__init__.py +++ b/src/viam/proto/rpc/examples/echoresource/__init__.py @@ -1,11 +1,12 @@ -''' +""" @generated by Viam. Do not edit manually! -''' +""" + from .....gen.proto.rpc.examples.echoresource.v1.echoresource_grpc import ( EchoResourceServiceBase, EchoResourceServiceStub, - UnimplementedEchoResourceServiceBase + UnimplementedEchoResourceServiceBase, ) from .....gen.proto.rpc.examples.echoresource.v1.echoresource_pb2 import ( EchoResourceBiDiRequest, @@ -13,17 +14,17 @@ EchoResourceMultipleRequest, EchoResourceMultipleResponse, EchoResourceRequest, - EchoResourceResponse + EchoResourceResponse, ) __all__ = [ - 'EchoResourceServiceBase', - 'EchoResourceServiceStub', - 'UnimplementedEchoResourceServiceBase', - 'EchoResourceBiDiRequest', - 'EchoResourceBiDiResponse', - 'EchoResourceMultipleRequest', - 'EchoResourceMultipleResponse', - 'EchoResourceRequest', - 'EchoResourceResponse', + "EchoResourceServiceBase", + "EchoResourceServiceStub", + "UnimplementedEchoResourceServiceBase", + "EchoResourceBiDiRequest", + "EchoResourceBiDiResponse", + "EchoResourceMultipleRequest", + "EchoResourceMultipleResponse", + "EchoResourceRequest", + "EchoResourceResponse", ] diff --git a/src/viam/proto/rpc/webrtc/grpc.py b/src/viam/proto/rpc/webrtc/grpc.py index 17813a7bc1..bdb49fa2f8 100644 --- a/src/viam/proto/rpc/webrtc/grpc.py +++ b/src/viam/proto/rpc/webrtc/grpc.py @@ -1,7 +1,8 @@ -''' +""" @generated by Viam. Do not edit manually! -''' +""" + from ....gen.proto.rpc.webrtc.v1.grpc_pb2 import ( Metadata, PacketMessage, @@ -13,27 +14,23 @@ ResponseMessage, ResponseTrailers, Stream, - Strings -) -from ....gen.proto.rpc.webrtc.v1.signaling_grpc import ( - SignalingServiceBase, - SignalingServiceStub, - UnimplementedSignalingServiceBase + Strings, ) +from ....gen.proto.rpc.webrtc.v1.signaling_grpc import SignalingServiceBase, SignalingServiceStub, UnimplementedSignalingServiceBase __all__ = [ - 'Metadata', - 'PacketMessage', - 'Request', - 'RequestHeaders', - 'RequestMessage', - 'Response', - 'ResponseHeaders', - 'ResponseMessage', - 'ResponseTrailers', - 'Stream', - 'Strings', - 'SignalingServiceBase', - 'SignalingServiceStub', - 'UnimplementedSignalingServiceBase', + "Metadata", + "PacketMessage", + "Request", + "RequestHeaders", + "RequestMessage", + "Response", + "ResponseHeaders", + "ResponseMessage", + "ResponseTrailers", + "Stream", + "Strings", + "SignalingServiceBase", + "SignalingServiceStub", + "UnimplementedSignalingServiceBase", ] diff --git a/src/viam/proto/rpc/webrtc/signaling.py b/src/viam/proto/rpc/webrtc/signaling.py index a64090df20..a47b891752 100644 --- a/src/viam/proto/rpc/webrtc/signaling.py +++ b/src/viam/proto/rpc/webrtc/signaling.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.proto.rpc.webrtc.v1.signaling_grpc import ( - SignalingServiceBase, - SignalingServiceStub, - UnimplementedSignalingServiceBase -) +""" + +from ....gen.proto.rpc.webrtc.v1.signaling_grpc import SignalingServiceBase, SignalingServiceStub, UnimplementedSignalingServiceBase from ....gen.proto.rpc.webrtc.v1.signaling_pb2 import ( AnswerRequest, AnswerRequestDoneStage, @@ -29,33 +26,33 @@ ICEServer, OptionalWebRTCConfigRequest, OptionalWebRTCConfigResponse, - WebRTCConfig + WebRTCConfig, ) __all__ = [ - 'SignalingServiceBase', - 'SignalingServiceStub', - 'UnimplementedSignalingServiceBase', - 'AnswerRequest', - 'AnswerRequestDoneStage', - 'AnswerRequestErrorStage', - 'AnswerRequestHeartbeatStage', - 'AnswerRequestInitStage', - 'AnswerRequestUpdateStage', - 'AnswerResponse', - 'AnswerResponseDoneStage', - 'AnswerResponseErrorStage', - 'AnswerResponseInitStage', - 'AnswerResponseUpdateStage', - 'CallRequest', - 'CallResponse', - 'CallResponseInitStage', - 'CallResponseUpdateStage', - 'CallUpdateRequest', - 'CallUpdateResponse', - 'ICECandidate', - 'ICEServer', - 'OptionalWebRTCConfigRequest', - 'OptionalWebRTCConfigResponse', - 'WebRTCConfig', + "SignalingServiceBase", + "SignalingServiceStub", + "UnimplementedSignalingServiceBase", + "AnswerRequest", + "AnswerRequestDoneStage", + "AnswerRequestErrorStage", + "AnswerRequestHeartbeatStage", + "AnswerRequestInitStage", + "AnswerRequestUpdateStage", + "AnswerResponse", + "AnswerResponseDoneStage", + "AnswerResponseErrorStage", + "AnswerResponseInitStage", + "AnswerResponseUpdateStage", + "CallRequest", + "CallResponse", + "CallResponseInitStage", + "CallResponseUpdateStage", + "CallUpdateRequest", + "CallUpdateResponse", + "ICECandidate", + "ICEServer", + "OptionalWebRTCConfigRequest", + "OptionalWebRTCConfigResponse", + "WebRTCConfig", ] diff --git a/src/viam/proto/service/datamanager/__init__.py b/src/viam/proto/service/datamanager/__init__.py index cbf556f15e..4b3766eacc 100644 --- a/src/viam/proto/service/datamanager/__init__.py +++ b/src/viam/proto/service/datamanager/__init__.py @@ -1,25 +1,26 @@ -''' +""" @generated by Viam. Do not edit manually! -''' +""" + from ....gen.service.datamanager.v1.data_manager_grpc import ( DataManagerServiceBase, DataManagerServiceStub, - UnimplementedDataManagerServiceBase + UnimplementedDataManagerServiceBase, ) from ....gen.service.datamanager.v1.data_manager_pb2 import ( SyncRequest, SyncResponse, UploadBinaryDataToDatasetsRequest, - UploadBinaryDataToDatasetsResponse + UploadBinaryDataToDatasetsResponse, ) __all__ = [ - 'DataManagerServiceBase', - 'DataManagerServiceStub', - 'UnimplementedDataManagerServiceBase', - 'SyncRequest', - 'SyncResponse', - 'UploadBinaryDataToDatasetsRequest', - 'UploadBinaryDataToDatasetsResponse', + "DataManagerServiceBase", + "DataManagerServiceStub", + "UnimplementedDataManagerServiceBase", + "SyncRequest", + "SyncResponse", + "UploadBinaryDataToDatasetsRequest", + "UploadBinaryDataToDatasetsResponse", ] diff --git a/src/viam/proto/service/discovery/__init__.py b/src/viam/proto/service/discovery/__init__.py index 1b4ea7ee96..3593fd1fe7 100644 --- a/src/viam/proto/service/discovery/__init__.py +++ b/src/viam/proto/service/discovery/__init__.py @@ -1,21 +1,15 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.service.discovery.v1.discovery_grpc import ( - DiscoveryServiceBase, - DiscoveryServiceStub, - UnimplementedDiscoveryServiceBase -) -from ....gen.service.discovery.v1.discovery_pb2 import ( - DiscoverResourcesRequest, - DiscoverResourcesResponse -) +""" + +from ....gen.service.discovery.v1.discovery_grpc import DiscoveryServiceBase, DiscoveryServiceStub, UnimplementedDiscoveryServiceBase +from ....gen.service.discovery.v1.discovery_pb2 import DiscoverResourcesRequest, DiscoverResourcesResponse __all__ = [ - 'DiscoveryServiceBase', - 'DiscoveryServiceStub', - 'UnimplementedDiscoveryServiceBase', - 'DiscoverResourcesRequest', - 'DiscoverResourcesResponse', + "DiscoveryServiceBase", + "DiscoveryServiceStub", + "UnimplementedDiscoveryServiceBase", + "DiscoverResourcesRequest", + "DiscoverResourcesResponse", ] diff --git a/src/viam/proto/service/generic/__init__.py b/src/viam/proto/service/generic/__init__.py index 8158bb0d69..bdfbb40f9e 100644 --- a/src/viam/proto/service/generic/__init__.py +++ b/src/viam/proto/service/generic/__init__.py @@ -1,15 +1,12 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.service.generic.v1.generic_grpc import ( - GenericServiceBase, - GenericServiceStub, - UnimplementedGenericServiceBase -) +""" + +from ....gen.service.generic.v1.generic_grpc import GenericServiceBase, GenericServiceStub, UnimplementedGenericServiceBase __all__ = [ - 'GenericServiceBase', - 'GenericServiceStub', - 'UnimplementedGenericServiceBase', + "GenericServiceBase", + "GenericServiceStub", + "UnimplementedGenericServiceBase", ] diff --git a/src/viam/proto/service/mlmodel/__init__.py b/src/viam/proto/service/mlmodel/__init__.py index 486d2c7ad1..b6687bdefe 100644 --- a/src/viam/proto/service/mlmodel/__init__.py +++ b/src/viam/proto/service/mlmodel/__init__.py @@ -1,25 +1,22 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.service.mlmodel.v1.mlmodel_grpc import ( - MLModelServiceBase, - MLModelServiceStub, - UnimplementedMLModelServiceBase -) +""" + +from ....gen.service.mlmodel.v1.mlmodel_grpc import MLModelServiceBase, MLModelServiceStub, UnimplementedMLModelServiceBase from ....gen.service.mlmodel.v1.mlmodel_pb2 import ( File, FlatTensor, FlatTensorDataDouble, FlatTensorDataFloat, + FlatTensorDataInt8, FlatTensorDataInt16, FlatTensorDataInt32, FlatTensorDataInt64, - FlatTensorDataInt8, + FlatTensorDataUInt8, FlatTensorDataUInt16, FlatTensorDataUInt32, FlatTensorDataUInt64, - FlatTensorDataUInt8, FlatTensors, InferRequest, InferResponse, @@ -27,31 +24,31 @@ Metadata, MetadataRequest, MetadataResponse, - TensorInfo + TensorInfo, ) __all__ = [ - 'MLModelServiceBase', - 'MLModelServiceStub', - 'UnimplementedMLModelServiceBase', - 'File', - 'FlatTensor', - 'FlatTensorDataDouble', - 'FlatTensorDataFloat', - 'FlatTensorDataInt16', - 'FlatTensorDataInt32', - 'FlatTensorDataInt64', - 'FlatTensorDataInt8', - 'FlatTensorDataUInt16', - 'FlatTensorDataUInt32', - 'FlatTensorDataUInt64', - 'FlatTensorDataUInt8', - 'FlatTensors', - 'InferRequest', - 'InferResponse', - 'LabelType', - 'Metadata', - 'MetadataRequest', - 'MetadataResponse', - 'TensorInfo', + "MLModelServiceBase", + "MLModelServiceStub", + "UnimplementedMLModelServiceBase", + "File", + "FlatTensor", + "FlatTensorDataDouble", + "FlatTensorDataFloat", + "FlatTensorDataInt16", + "FlatTensorDataInt32", + "FlatTensorDataInt64", + "FlatTensorDataInt8", + "FlatTensorDataUInt16", + "FlatTensorDataUInt32", + "FlatTensorDataUInt64", + "FlatTensorDataUInt8", + "FlatTensors", + "InferRequest", + "InferResponse", + "LabelType", + "Metadata", + "MetadataRequest", + "MetadataResponse", + "TensorInfo", ] diff --git a/src/viam/proto/service/motion/__init__.py b/src/viam/proto/service/motion/__init__.py index 1f890c4a48..b4306e0608 100644 --- a/src/viam/proto/service/motion/__init__.py +++ b/src/viam/proto/service/motion/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.service.motion.v1.motion_grpc import ( - MotionServiceBase, - MotionServiceStub, - UnimplementedMotionServiceBase -) +""" + +from ....gen.service.motion.v1.motion_grpc import MotionServiceBase, MotionServiceStub, UnimplementedMotionServiceBase from ....gen.service.motion.v1.motion_pb2 import ( CollisionSpecification, ComponentState, @@ -35,39 +32,39 @@ PlanWithStatus, PseudolinearConstraint, StopPlanRequest, - StopPlanResponse + StopPlanResponse, ) __all__ = [ - 'MotionServiceBase', - 'MotionServiceStub', - 'UnimplementedMotionServiceBase', - 'CollisionSpecification', - 'ComponentState', - 'Constraints', - 'GetPlanRequest', - 'GetPlanResponse', - 'GetPoseRequest', - 'GetPoseResponse', - 'LinearConstraint', - 'ListPlanStatusesRequest', - 'ListPlanStatusesResponse', - 'MotionConfiguration', - 'MoveOnGlobeRequest', - 'MoveOnGlobeResponse', - 'MoveOnMapRequest', - 'MoveOnMapResponse', - 'MoveRequest', - 'MoveResponse', - 'ObstacleDetector', - 'OrientationConstraint', - 'Plan', - 'PlanState', - 'PlanStatus', - 'PlanStatusWithID', - 'PlanStep', - 'PlanWithStatus', - 'PseudolinearConstraint', - 'StopPlanRequest', - 'StopPlanResponse', + "MotionServiceBase", + "MotionServiceStub", + "UnimplementedMotionServiceBase", + "CollisionSpecification", + "ComponentState", + "Constraints", + "GetPlanRequest", + "GetPlanResponse", + "GetPoseRequest", + "GetPoseResponse", + "LinearConstraint", + "ListPlanStatusesRequest", + "ListPlanStatusesResponse", + "MotionConfiguration", + "MoveOnGlobeRequest", + "MoveOnGlobeResponse", + "MoveOnMapRequest", + "MoveOnMapResponse", + "MoveRequest", + "MoveResponse", + "ObstacleDetector", + "OrientationConstraint", + "Plan", + "PlanState", + "PlanStatus", + "PlanStatusWithID", + "PlanStep", + "PlanWithStatus", + "PseudolinearConstraint", + "StopPlanRequest", + "StopPlanResponse", ] diff --git a/src/viam/proto/service/navigation/__init__.py b/src/viam/proto/service/navigation/__init__.py index 4cde4b7bbd..c0c7f058c0 100644 --- a/src/viam/proto/service/navigation/__init__.py +++ b/src/viam/proto/service/navigation/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.service.navigation.v1.navigation_grpc import ( - NavigationServiceBase, - NavigationServiceStub, - UnimplementedNavigationServiceBase -) +""" + +from ....gen.service.navigation.v1.navigation_grpc import NavigationServiceBase, NavigationServiceStub, UnimplementedNavigationServiceBase from ....gen.service.navigation.v1.navigation_pb2 import ( AddWaypointRequest, AddWaypointResponse, @@ -29,33 +26,33 @@ RemoveWaypointResponse, SetModeRequest, SetModeResponse, - Waypoint + Waypoint, ) __all__ = [ - 'NavigationServiceBase', - 'NavigationServiceStub', - 'UnimplementedNavigationServiceBase', - 'AddWaypointRequest', - 'AddWaypointResponse', - 'GetLocationRequest', - 'GetLocationResponse', - 'GetModeRequest', - 'GetModeResponse', - 'GetObstaclesRequest', - 'GetObstaclesResponse', - 'GetPathsRequest', - 'GetPathsResponse', - 'GetPropertiesRequest', - 'GetPropertiesResponse', - 'GetWaypointsRequest', - 'GetWaypointsResponse', - 'MapType', - 'Mode', - 'Path', - 'RemoveWaypointRequest', - 'RemoveWaypointResponse', - 'SetModeRequest', - 'SetModeResponse', - 'Waypoint', + "NavigationServiceBase", + "NavigationServiceStub", + "UnimplementedNavigationServiceBase", + "AddWaypointRequest", + "AddWaypointResponse", + "GetLocationRequest", + "GetLocationResponse", + "GetModeRequest", + "GetModeResponse", + "GetObstaclesRequest", + "GetObstaclesResponse", + "GetPathsRequest", + "GetPathsResponse", + "GetPropertiesRequest", + "GetPropertiesResponse", + "GetWaypointsRequest", + "GetWaypointsResponse", + "MapType", + "Mode", + "Path", + "RemoveWaypointRequest", + "RemoveWaypointResponse", + "SetModeRequest", + "SetModeResponse", + "Waypoint", ] diff --git a/src/viam/proto/service/sensors/__init__.py b/src/viam/proto/service/sensors/__init__.py index f2a0905e5e..0f7a042779 100644 --- a/src/viam/proto/service/sensors/__init__.py +++ b/src/viam/proto/service/sensors/__init__.py @@ -1,27 +1,18 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.service.sensors.v1.sensors_grpc import ( - SensorsServiceBase, - SensorsServiceStub, - UnimplementedSensorsServiceBase -) -from ....gen.service.sensors.v1.sensors_pb2 import ( - GetReadingsRequest, - GetReadingsResponse, - GetSensorsRequest, - GetSensorsResponse, - Readings -) +""" + +from ....gen.service.sensors.v1.sensors_grpc import SensorsServiceBase, SensorsServiceStub, UnimplementedSensorsServiceBase +from ....gen.service.sensors.v1.sensors_pb2 import GetReadingsRequest, GetReadingsResponse, GetSensorsRequest, GetSensorsResponse, Readings __all__ = [ - 'SensorsServiceBase', - 'SensorsServiceStub', - 'UnimplementedSensorsServiceBase', - 'GetReadingsRequest', - 'GetReadingsResponse', - 'GetSensorsRequest', - 'GetSensorsResponse', - 'Readings', + "SensorsServiceBase", + "SensorsServiceStub", + "UnimplementedSensorsServiceBase", + "GetReadingsRequest", + "GetReadingsResponse", + "GetSensorsRequest", + "GetSensorsResponse", + "Readings", ] diff --git a/src/viam/proto/service/shell/__init__.py b/src/viam/proto/service/shell/__init__.py index 07fc72562e..47a2a44f69 100644 --- a/src/viam/proto/service/shell/__init__.py +++ b/src/viam/proto/service/shell/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.service.shell.v1.shell_grpc import ( - ShellServiceBase, - ShellServiceStub, - UnimplementedShellServiceBase -) +""" + +from ....gen.service.shell.v1.shell_grpc import ShellServiceBase, ShellServiceStub, UnimplementedShellServiceBase from ....gen.service.shell.v1.shell_pb2 import ( CopyFilesFromMachineRequest, CopyFilesFromMachineRequestMetadata, @@ -18,22 +15,22 @@ CopyFilesToMachineResponse, FileData, ShellRequest, - ShellResponse + ShellResponse, ) __all__ = [ - 'ShellServiceBase', - 'ShellServiceStub', - 'UnimplementedShellServiceBase', - 'CopyFilesFromMachineRequest', - 'CopyFilesFromMachineRequestMetadata', - 'CopyFilesFromMachineResponse', - 'CopyFilesFromMachineResponseMetadata', - 'CopyFilesSourceType', - 'CopyFilesToMachineRequest', - 'CopyFilesToMachineRequestMetadata', - 'CopyFilesToMachineResponse', - 'FileData', - 'ShellRequest', - 'ShellResponse', + "ShellServiceBase", + "ShellServiceStub", + "UnimplementedShellServiceBase", + "CopyFilesFromMachineRequest", + "CopyFilesFromMachineRequestMetadata", + "CopyFilesFromMachineResponse", + "CopyFilesFromMachineResponseMetadata", + "CopyFilesSourceType", + "CopyFilesToMachineRequest", + "CopyFilesToMachineRequestMetadata", + "CopyFilesToMachineResponse", + "FileData", + "ShellRequest", + "ShellResponse", ] diff --git a/src/viam/proto/service/slam/__init__.py b/src/viam/proto/service/slam/__init__.py index bba528710a..0703e95d24 100644 --- a/src/viam/proto/service/slam/__init__.py +++ b/src/viam/proto/service/slam/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.service.slam.v1.slam_grpc import ( - SLAMServiceBase, - SLAMServiceStub, - UnimplementedSLAMServiceBase -) +""" + +from ....gen.service.slam.v1.slam_grpc import SLAMServiceBase, SLAMServiceStub, UnimplementedSLAMServiceBase from ....gen.service.slam.v1.slam_pb2 import ( GetInternalStateRequest, GetInternalStateResponse, @@ -18,22 +15,22 @@ GetPropertiesResponse, MappingMode, SensorInfo, - SensorType + SensorType, ) __all__ = [ - 'SLAMServiceBase', - 'SLAMServiceStub', - 'UnimplementedSLAMServiceBase', - 'GetInternalStateRequest', - 'GetInternalStateResponse', - 'GetPointCloudMapRequest', - 'GetPointCloudMapResponse', - 'GetPositionRequest', - 'GetPositionResponse', - 'GetPropertiesRequest', - 'GetPropertiesResponse', - 'MappingMode', - 'SensorInfo', - 'SensorType', + "SLAMServiceBase", + "SLAMServiceStub", + "UnimplementedSLAMServiceBase", + "GetInternalStateRequest", + "GetInternalStateResponse", + "GetPointCloudMapRequest", + "GetPointCloudMapResponse", + "GetPositionRequest", + "GetPositionResponse", + "GetPropertiesRequest", + "GetPropertiesResponse", + "MappingMode", + "SensorInfo", + "SensorType", ] diff --git a/src/viam/proto/service/video/__init__.py b/src/viam/proto/service/video/__init__.py index d3b1668585..bb515b5e78 100644 --- a/src/viam/proto/service/video/__init__.py +++ b/src/viam/proto/service/video/__init__.py @@ -1,21 +1,15 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.service.video.v1.video_grpc import ( - UnimplementedVideoServiceBase, - VideoServiceBase, - VideoServiceStub -) -from ....gen.service.video.v1.video_pb2 import ( - GetVideoRequest, - GetVideoResponse -) +""" + +from ....gen.service.video.v1.video_grpc import UnimplementedVideoServiceBase, VideoServiceBase, VideoServiceStub +from ....gen.service.video.v1.video_pb2 import GetVideoRequest, GetVideoResponse __all__ = [ - 'UnimplementedVideoServiceBase', - 'VideoServiceBase', - 'VideoServiceStub', - 'GetVideoRequest', - 'GetVideoResponse', + "UnimplementedVideoServiceBase", + "VideoServiceBase", + "VideoServiceStub", + "GetVideoRequest", + "GetVideoResponse", ] diff --git a/src/viam/proto/service/vision/__init__.py b/src/viam/proto/service/vision/__init__.py index 580019886f..a31dcafb76 100644 --- a/src/viam/proto/service/vision/__init__.py +++ b/src/viam/proto/service/vision/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ....gen.service.vision.v1.vision_grpc import ( - UnimplementedVisionServiceBase, - VisionServiceBase, - VisionServiceStub -) +""" + +from ....gen.service.vision.v1.vision_grpc import UnimplementedVisionServiceBase, VisionServiceBase, VisionServiceStub from ....gen.service.vision.v1.vision_pb2 import ( CaptureAllFromCameraRequest, CaptureAllFromCameraResponse, @@ -23,27 +20,27 @@ GetObjectPointCloudsRequest, GetObjectPointCloudsResponse, GetPropertiesRequest, - GetPropertiesResponse + GetPropertiesResponse, ) __all__ = [ - 'UnimplementedVisionServiceBase', - 'VisionServiceBase', - 'VisionServiceStub', - 'CaptureAllFromCameraRequest', - 'CaptureAllFromCameraResponse', - 'Classification', - 'Detection', - 'GetClassificationsFromCameraRequest', - 'GetClassificationsFromCameraResponse', - 'GetClassificationsRequest', - 'GetClassificationsResponse', - 'GetDetectionsFromCameraRequest', - 'GetDetectionsFromCameraResponse', - 'GetDetectionsRequest', - 'GetDetectionsResponse', - 'GetObjectPointCloudsRequest', - 'GetObjectPointCloudsResponse', - 'GetPropertiesRequest', - 'GetPropertiesResponse', + "UnimplementedVisionServiceBase", + "VisionServiceBase", + "VisionServiceStub", + "CaptureAllFromCameraRequest", + "CaptureAllFromCameraResponse", + "Classification", + "Detection", + "GetClassificationsFromCameraRequest", + "GetClassificationsFromCameraResponse", + "GetClassificationsRequest", + "GetClassificationsResponse", + "GetDetectionsFromCameraRequest", + "GetDetectionsFromCameraResponse", + "GetDetectionsRequest", + "GetDetectionsResponse", + "GetObjectPointCloudsRequest", + "GetObjectPointCloudsResponse", + "GetPropertiesRequest", + "GetPropertiesResponse", ] diff --git a/src/viam/proto/service/worldstatestore/__init__.py b/src/viam/proto/service/worldstatestore/__init__.py index d728dc694b..b6c2b155ab 100644 --- a/src/viam/proto/service/worldstatestore/__init__.py +++ b/src/viam/proto/service/worldstatestore/__init__.py @@ -1,11 +1,12 @@ -''' +""" @generated by Viam. Do not edit manually! -''' +""" + from ....gen.service.worldstatestore.v1.world_state_store_grpc import ( UnimplementedWorldStateStoreServiceBase, WorldStateStoreServiceBase, - WorldStateStoreServiceStub + WorldStateStoreServiceStub, ) from ....gen.service.worldstatestore.v1.world_state_store_pb2 import ( GetTransformRequest, @@ -14,18 +15,18 @@ ListUUIDsResponse, StreamTransformChangesRequest, StreamTransformChangesResponse, - TransformChangeType + TransformChangeType, ) __all__ = [ - 'UnimplementedWorldStateStoreServiceBase', - 'WorldStateStoreServiceBase', - 'WorldStateStoreServiceStub', - 'GetTransformRequest', - 'GetTransformResponse', - 'ListUUIDsRequest', - 'ListUUIDsResponse', - 'StreamTransformChangesRequest', - 'StreamTransformChangesResponse', - 'TransformChangeType', + "UnimplementedWorldStateStoreServiceBase", + "WorldStateStoreServiceBase", + "WorldStateStoreServiceStub", + "GetTransformRequest", + "GetTransformResponse", + "ListUUIDsRequest", + "ListUUIDsResponse", + "StreamTransformChangesRequest", + "StreamTransformChangesResponse", + "TransformChangeType", ] diff --git a/src/viam/proto/stream/__init__.py b/src/viam/proto/stream/__init__.py index 65e7c5d375..4053789543 100644 --- a/src/viam/proto/stream/__init__.py +++ b/src/viam/proto/stream/__init__.py @@ -1,12 +1,9 @@ -''' +""" @generated by Viam. Do not edit manually! -''' -from ...gen.stream.v1.stream_grpc import ( - StreamServiceBase, - StreamServiceStub, - UnimplementedStreamServiceBase -) +""" + +from ...gen.stream.v1.stream_grpc import StreamServiceBase, StreamServiceStub, UnimplementedStreamServiceBase from ...gen.stream.v1.stream_pb2 import ( AddStreamRequest, AddStreamResponse, @@ -18,22 +15,22 @@ RemoveStreamResponse, Resolution, SetStreamOptionsRequest, - SetStreamOptionsResponse + SetStreamOptionsResponse, ) __all__ = [ - 'StreamServiceBase', - 'StreamServiceStub', - 'UnimplementedStreamServiceBase', - 'AddStreamRequest', - 'AddStreamResponse', - 'GetStreamOptionsRequest', - 'GetStreamOptionsResponse', - 'ListStreamsRequest', - 'ListStreamsResponse', - 'RemoveStreamRequest', - 'RemoveStreamResponse', - 'Resolution', - 'SetStreamOptionsRequest', - 'SetStreamOptionsResponse', + "StreamServiceBase", + "StreamServiceStub", + "UnimplementedStreamServiceBase", + "AddStreamRequest", + "AddStreamResponse", + "GetStreamOptionsRequest", + "GetStreamOptionsResponse", + "ListStreamsRequest", + "ListStreamsResponse", + "RemoveStreamRequest", + "RemoveStreamResponse", + "Resolution", + "SetStreamOptionsRequest", + "SetStreamOptionsResponse", ] diff --git a/src/viam/proto/tagger/__init__.py b/src/viam/proto/tagger/__init__.py index 0e7ab86b40..3484a6ee3c 100644 --- a/src/viam/proto/tagger/__init__.py +++ b/src/viam/proto/tagger/__init__.py @@ -1,7 +1,6 @@ -''' +""" @generated by Viam. Do not edit manually! -''' +""" -__all__ = [ -] +__all__ = [] diff --git a/src/viam/robot/service.py b/src/viam/robot/service.py index 151fe7e9ff..11ac4cc372 100644 --- a/src/viam/robot/service.py +++ b/src/viam/robot/service.py @@ -65,5 +65,5 @@ async def StopAll(self, stream: Stream[StopAllRequest, StopAllResponse]) -> None errors.append(component.name) if errors: - raise ViamGRPCError(f'Failed to stop components named {", ".join(errors)}') + raise ViamGRPCError(f"Failed to stop components named {', '.join(errors)}") await stream.send_message(StopAllResponse()) diff --git a/tests/test_data_client.py b/tests/test_data_client.py index 3e9a83ed2b..c91e02d0d2 100644 --- a/tests/test_data_client.py +++ b/tests/test_data_client.py @@ -342,17 +342,13 @@ async def test_delete_tabular_data_with_filter(self, service: MockData): method=METHOD, ) # Test with filter parameter - deleted_count = await client.delete_tabular_data( - organization_id=ORG_ID, delete_older_than_days=0, filter=delete_filter - ) + deleted_count = await client.delete_tabular_data(organization_id=ORG_ID, delete_older_than_days=0, filter=delete_filter) assert deleted_count == DELETE_REMOVE_RESPONSE assert service.organization_id == ORG_ID assert service.delete_older_than_days == 0 assert service.delete_tabular_filter == delete_filter # Test with None filter (default behavior) - deleted_count = await client.delete_tabular_data( - organization_id=ORG_ID, delete_older_than_days=0, filter=None - ) + deleted_count = await client.delete_tabular_data(organization_id=ORG_ID, delete_older_than_days=0, filter=None) assert deleted_count == DELETE_REMOVE_RESPONSE assert service.delete_tabular_filter is None diff --git a/tests/test_examples.py b/tests/test_examples.py index 1bd26c83d7..933c3179ae 100644 --- a/tests/test_examples.py +++ b/tests/test_examples.py @@ -22,6 +22,7 @@ def _is_local(address: str) -> bool: parsed = urlparse(address if "://" in address else f"http://{address}") return parsed.hostname in LOCAL_HOSTS + # If any new examples are added, add them to this list. EXAMPLES = [ {"dir": "complex_module", "entry": "src/main.py", "client": "client.py"}, @@ -126,9 +127,7 @@ def test_example(example): stdout=server_log_fh, stderr=subprocess.STDOUT, ) - assert _wait_for_server_ready(server_log), ( - f"viam-server did not start.\nlog:\n{open(server_log).read()}" - ) + assert _wait_for_server_ready(server_log), f"viam-server did not start.\nlog:\n{open(server_log).read()}" if client_file: local = str(_is_local(address)) @@ -142,9 +141,7 @@ def test_example(example): capture_output=True, timeout=30, ) - assert result.returncode == 0, ( - f"Client failed.\nstdout:\n{result.stdout.decode()}\nstderr:\n{result.stderr.decode()}" - ) + assert result.returncode == 0, f"Client failed.\nstdout:\n{result.stdout.decode()}\nstderr:\n{result.stderr.decode()}" finally: if server_proc: _terminate(server_proc) @@ -159,6 +156,5 @@ def test_check_example_coverage(): actual = {d.name for d in EXAMPLES_DIR.iterdir() if d.is_dir()} unknown = actual - known assert not unknown, ( - f"New example directories without test coverage: {unknown}. " - f"Add new examples to the EXAMPLES list in tests/test_examples.py." + f"New example directories without test coverage: {unknown}. Add new examples to the EXAMPLES list in tests/test_examples.py." ) From fffaf1efd1b94de12e38a02e81615b7b2e4d8ca8 Mon Sep 17 00:00:00 2001 From: Naveed Jooma Date: Fri, 13 Mar 2026 19:55:17 -0400 Subject: [PATCH 03/12] Fix typechecking --- src/viam/media/utils/pil/viam_rgba_plugin.py | 24 ++++++++++++-------- src/viam/services/worldstatestore/client.py | 5 ++-- src/viam/services/worldstatestore/service.py | 2 +- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/viam/media/utils/pil/viam_rgba_plugin.py b/src/viam/media/utils/pil/viam_rgba_plugin.py index 75d1711d05..445f25c1b1 100644 --- a/src/viam/media/utils/pil/viam_rgba_plugin.py +++ b/src/viam/media/utils/pil/viam_rgba_plugin.py @@ -1,13 +1,13 @@ -from typing import ClassVar, Tuple +from typing import IO, ClassVar from PIL import Image -from PIL.ImageFile import ImageFile, PyDecoder, PyEncoder, _safe_read # type: ignore -- (njooma) this exists, manually checked -from PIL.ImageFile import _save as image_save # type: ignore -- (njooma) this exists, manually checked +from PIL.ImageFile import ImageFile, PyDecoder, PyEncoder, _safe_read, _Tile +from PIL.ImageFile import _save as image_save from ...viam_rgba import RGBA_FORMAT_LABEL, RGBA_HEADER_LENGTH, RGBA_MAGIC_NUMBER -def _accept(prefix: str): +def _accept(prefix: bytes): return prefix[:4] == RGBA_MAGIC_NUMBER @@ -16,8 +16,9 @@ class RGBAEncoder(PyEncoder): _pushes_fd = True - def encode(self, bufsize): # pyright: ignore [reportIncompatibleMethodOverride] + def encode(self, bufsize: int) -> tuple[int, int, bytes]: data_arr = bytearray() + assert self.im is not None width, height = self.im.size for y in range(height): for x in range(width): @@ -27,13 +28,14 @@ def encode(self, bufsize): # pyright: ignore [reportIncompatibleMethodOverride] return len(data), 0, data -def _save_rgba(img, fp, filename): +def _save_rgba(img: Image.Image, fp: IO[bytes], filename: str | bytes): width, height = img.size fp.write(RGBA_MAGIC_NUMBER) fp.write(width.to_bytes(4, byteorder="big")) fp.write(height.to_bytes(4, byteorder="big")) - image_save(img, fp, [(RGBAEncoder.ENCODER_NAME, (0, 0, width, height), 0, ("RGBA", 0, 1))]) + tile = _Tile(codec_name=RGBAEncoder.ENCODER_NAME, extents=(0, 0, width, height), offset=0, args=("RGBA", 0, 1)) + image_save(img, fp, [tile]) class RGBAImage(ImageFile): @@ -41,6 +43,7 @@ class RGBAImage(ImageFile): format_description = "Viam's Raw RGBA Format" def _open(self): + assert self.fp is not None header = self.fp.read(RGBA_HEADER_LENGTH) width = int.from_bytes(header[4:8], "big") @@ -52,13 +55,16 @@ def _open(self): self.mode = "RGBA" # type: ignore -- (njooma) newer versions of PIL hide this behind _mode, which is why we check # data descriptor - self.tile = [(RGBAEncoder.ENCODER_NAME, (0, 0, width, height), RGBA_HEADER_LENGTH, (self.mode, 0, 1))] + tile = _Tile(codec_name=RGBAEncoder.ENCODER_NAME, extents=(0, 0, width, height), offset=RGBA_HEADER_LENGTH, args=(self.mode, 0, 1)) + self.tile = [tile] class RGBADecoder(PyDecoder): _pulls_fd = True - def decode(self, buffer) -> Tuple[int, int]: + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.im is not None + assert self.fd is not None width, height = self.im.size self.set_as_raw(_safe_read(self.fd, width * height * 4)) return -1, 0 diff --git a/src/viam/services/worldstatestore/client.py b/src/viam/services/worldstatestore/client.py index b51fc69788..60df8783c6 100644 --- a/src/viam/services/worldstatestore/client.py +++ b/src/viam/services/worldstatestore/client.py @@ -62,7 +62,7 @@ async def get_transform( response: GetTransformResponse = await self.client.GetTransform(request, timeout=timeout, metadata=md) return response.transform - async def stream_transform_changes( + async def stream_transform_changes( # type: ignore self, *, extra: Optional[Mapping[str, Any]] = None, @@ -74,8 +74,7 @@ async def stream_transform_changes( name=self.name, extra=dict_to_struct(extra), ) - responses = await self.client.StreamTransformChanges(request, timeout=timeout, metadata=md) - for response in responses: + async for response in self.client.StreamTransformChanges(request, timeout=timeout, metadata=md): # pyright: ignore [reportGeneralTypeIssues] yield response async def do_command( diff --git a/src/viam/services/worldstatestore/service.py b/src/viam/services/worldstatestore/service.py index 30457f9962..edd4fa1539 100644 --- a/src/viam/services/worldstatestore/service.py +++ b/src/viam/services/worldstatestore/service.py @@ -43,7 +43,7 @@ async def StreamTransformChanges( assert request is not None service = self.get_resource(request.name) timeout = stream.deadline.time_remaining() if stream.deadline else None - async for change in service.stream_transform_changes(extra=struct_to_dict(request.extra), timeout=timeout): + async for change in service.stream_transform_changes(extra=struct_to_dict(request.extra), timeout=timeout): # pyright: ignore [reportGeneralTypeIssues] await stream.send_message(change) async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -> None: From 1c67fb2cfec32336528ee12bfd1d2edc05656f66 Mon Sep 17 00:00:00 2001 From: Naveed Jooma Date: Fri, 13 Mar 2026 20:02:33 -0400 Subject: [PATCH 04/12] Update some workflows --- .github/workflows/build-wheels.yml | 7 +++---- .github/workflows/test.yml | 10 ++++------ 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 715e562dd7..7d18afb204 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -58,10 +58,9 @@ jobs: if: ${{ !inputs.branch }} - name: Install uv - uses: astral-sh/setup-uv@v3 - - - name: Setup Python - run: uv python install 3.12 + uses: astral-sh/setup-uv@v7 + with: + python-version: "3.12" - name: Install package run: uv sync diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7ce0cd2fff..417a428754 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] requirements-version: ["min", "max"] steps: - name: Checkout Push/Workflow Dispatch @@ -29,12 +29,10 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} - name: Install uv - uses: astral-sh/setup-uv@v3 + uses: astral-sh/setup-uv@v7 with: - enable-cache: true - - - name: Setup Python - run: uv python install ${{ matrix.python-version }} + python-version: "3.12" + enable-cache: trues - name: Install viam-server run: | From 4d28726a33426cdc881122ccda816b05311cf20c Mon Sep 17 00:00:00 2001 From: Naveed Jooma Date: Sun, 15 Mar 2026 18:46:54 -0400 Subject: [PATCH 05/12] Remove version conditionals for <3.10 --- src/viam/app/_logs.py | 8 +---- src/viam/components/audio_in/audio_in.py | 8 +---- src/viam/components/audio_out/audio_out.py | 8 +---- src/viam/components/board/board.py | 8 +---- src/viam/components/camera/camera.py | 8 +---- .../movement_sensor/movement_sensor.py | 8 +---- src/viam/operations.py | 8 +---- src/viam/resource/types.py | 8 +---- src/viam/rpc/dial.py | 2 +- src/viam/services/motion/motion.py | 8 +---- src/viam/services/slam/slam.py | 8 +---- src/viam/services/vision/vision.py | 8 +---- src/viam/streams.py | 8 +---- src/viam/utils.py | 30 ++----------------- 14 files changed, 15 insertions(+), 113 deletions(-) diff --git a/src/viam/app/_logs.py b/src/viam/app/_logs.py index 407186b0fe..20f4c0cd1a 100644 --- a/src/viam/app/_logs.py +++ b/src/viam/app/_logs.py @@ -1,10 +1,4 @@ -import sys - -if sys.version_info >= (3, 9): - from collections.abc import AsyncIterator -else: - from typing import AsyncIterator - +from collections.abc import AsyncIterator from typing import Protocol, TypeVar LogsType = TypeVar("LogsType", covariant=True) diff --git a/src/viam/components/audio_in/audio_in.py b/src/viam/components/audio_in/audio_in.py index 7a19fc2e55..58f6eacdaa 100644 --- a/src/viam/components/audio_in/audio_in.py +++ b/src/viam/components/audio_in/audio_in.py @@ -1,6 +1,5 @@ import abc -import sys -from typing import Final, Optional +from typing import Final, Optional, TypeAlias from viam.proto.common import GetPropertiesResponse from viam.proto.component.audioin import GetAudioResponse @@ -9,11 +8,6 @@ from ..component_base import ComponentBase -if sys.version_info >= (3, 10): - from typing import TypeAlias -else: - from typing_extensions import TypeAlias - class AudioIn(ComponentBase): """AudioIn represents a component that can capture audio. diff --git a/src/viam/components/audio_out/audio_out.py b/src/viam/components/audio_out/audio_out.py index 0c2b75e1de..98ac5ed96b 100644 --- a/src/viam/components/audio_out/audio_out.py +++ b/src/viam/components/audio_out/audio_out.py @@ -1,6 +1,5 @@ import abc -import sys -from typing import Any, Dict, Final, Optional +from typing import Any, Dict, Final, Optional, TypeAlias from viam.proto.common import GetPropertiesResponse from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT @@ -8,11 +7,6 @@ from ..component_base import ComponentBase from . import AudioInfo -if sys.version_info >= (3, 10): - from typing import TypeAlias -else: - from typing_extensions import TypeAlias - class AudioOut(ComponentBase): """AudioOut represents a component that can play audio. diff --git a/src/viam/components/board/board.py b/src/viam/components/board/board.py index e9bcee5885..986304b150 100644 --- a/src/viam/components/board/board.py +++ b/src/viam/components/board/board.py @@ -1,7 +1,6 @@ import abc -import sys from datetime import timedelta -from typing import Any, Dict, Final, List, Optional +from typing import Any, Dict, Final, List, Optional, TypeAlias from viam.proto.component.board import PowerMode, ReadAnalogReaderResponse, StreamTicksResponse from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT @@ -9,11 +8,6 @@ from ..component_base import ComponentBase -if sys.version_info >= (3, 10): - from typing import TypeAlias -else: - from typing_extensions import TypeAlias - Tick = StreamTicksResponse TickStream = Stream[Tick] diff --git a/src/viam/components/camera/camera.py b/src/viam/components/camera/camera.py index 744fd8d53f..b6d7664742 100644 --- a/src/viam/components/camera/camera.py +++ b/src/viam/components/camera/camera.py @@ -1,6 +1,5 @@ import abc -import sys -from typing import Any, Dict, Final, Optional, Sequence, Tuple +from typing import Any, Dict, Final, Optional, Sequence, Tuple, TypeAlias from viam.media.video import NamedImage from viam.proto.common import ResponseMetadata @@ -9,11 +8,6 @@ from ..component_base import ComponentBase -if sys.version_info >= (3, 10): - from typing import TypeAlias -else: - from typing_extensions import TypeAlias - class Camera(ComponentBase): """ diff --git a/src/viam/components/movement_sensor/movement_sensor.py b/src/viam/components/movement_sensor/movement_sensor.py index 2144536344..dbbea0a443 100644 --- a/src/viam/components/movement_sensor/movement_sensor.py +++ b/src/viam/components/movement_sensor/movement_sensor.py @@ -1,7 +1,6 @@ import abc -import sys from dataclasses import dataclass -from typing import Any, Dict, Final, Mapping, Optional, Tuple +from typing import Any, Dict, Final, Mapping, Optional, Tuple, TypeAlias from typing_extensions import Self @@ -12,11 +11,6 @@ from . import GeoPoint, Orientation, Vector3 -if sys.version_info >= (3, 10): - from typing import TypeAlias -else: - from typing_extensions import TypeAlias - class MovementSensor(ComponentBase): """MovementSensor reports information about the robot's direction, position and speed. diff --git a/src/viam/operations.py b/src/viam/operations.py index bb016cf130..927bf48d48 100644 --- a/src/viam/operations.py +++ b/src/viam/operations.py @@ -1,17 +1,11 @@ import asyncio import functools -import sys import time -from typing import Any, Callable, Coroutine, Mapping, Optional, TypeVar, cast +from typing import Any, Callable, Coroutine, Mapping, Optional, ParamSpec, TypeVar, cast from uuid import UUID, uuid4 from typing_extensions import Self -if sys.version_info >= (3, 10): - from typing import ParamSpec -else: - from typing_extensions import ParamSpec - class Operation: """An Operation represents a running operation. diff --git a/src/viam/resource/types.py b/src/viam/resource/types.py index cc1c4618e2..9c91ff5bf9 100644 --- a/src/viam/resource/types.py +++ b/src/viam/resource/types.py @@ -1,11 +1,5 @@ import re -import sys -from typing import TYPE_CHECKING, Callable, ClassVar, Mapping, Optional, Protocol, Sequence, Tuple, runtime_checkable - -if sys.version_info >= (3, 10): - from typing import TypeAlias -else: - from typing_extensions import TypeAlias +from typing import TYPE_CHECKING, Callable, ClassVar, Mapping, Optional, Protocol, Sequence, Tuple, TypeAlias, runtime_checkable from typing_extensions import Self diff --git a/src/viam/rpc/dial.py b/src/viam/rpc/dial.py index a2483d9a9c..80016f617e 100644 --- a/src/viam/rpc/dial.py +++ b/src/viam/rpc/dial.py @@ -6,6 +6,7 @@ import sys import uuid import warnings +from asyncio import to_thread from dataclasses import dataclass from typing import Callable, Literal, Optional, Tuple, Type, Union @@ -21,7 +22,6 @@ from viam.errors import InsecureConnectionError, ViamError from viam.proto.rpc.auth import AuthenticateRequest, AuthServiceStub from viam.proto.rpc.auth import Credentials as PBCredentials -from viam.utils import to_thread from viam.version_metadata import API_VERSION, SDK_VERSION LOGGER = logging.getLogger(__name__) diff --git a/src/viam/services/motion/motion.py b/src/viam/services/motion/motion.py index 4ea5fc4651..8de9d28fce 100644 --- a/src/viam/services/motion/motion.py +++ b/src/viam/services/motion/motion.py @@ -1,11 +1,5 @@ import abc -import sys -from typing import Any, Final, Mapping, Optional, Sequence - -if sys.version_info >= (3, 10): - from typing import TypeAlias -else: - from typing_extensions import TypeAlias +from typing import Any, Final, Mapping, Optional, Sequence, TypeAlias from viam.proto.common import GeoGeometry, Geometry, GeoPoint, Pose, PoseInFrame, Transform, WorldState from viam.proto.service.motion import Constraints, GetPlanResponse, MotionConfiguration, PlanStatusWithID diff --git a/src/viam/services/slam/slam.py b/src/viam/services/slam/slam.py index 759c59f8c9..d51b9ece34 100644 --- a/src/viam/services/slam/slam.py +++ b/src/viam/services/slam/slam.py @@ -1,6 +1,5 @@ import abc -import sys -from typing import Final, List, Optional +from typing import Final, List, Optional, TypeAlias from viam.proto.service.slam import GetPropertiesResponse from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_SERVICE @@ -8,11 +7,6 @@ from ..service_base import ServiceBase from . import Pose -if sys.version_info >= (3, 10): - from typing import TypeAlias -else: - from typing_extensions import TypeAlias - class SLAM(ServiceBase): """ diff --git a/src/viam/services/vision/vision.py b/src/viam/services/vision/vision.py index 01b489fa7e..047a6a206e 100644 --- a/src/viam/services/vision/vision.py +++ b/src/viam/services/vision/vision.py @@ -1,6 +1,5 @@ import abc -import sys -from typing import Final, List, Mapping, Optional +from typing import Final, List, Mapping, Optional, TypeAlias from viam.media.video import ViamImage from viam.proto.common import PointCloudObject @@ -10,11 +9,6 @@ from ..service_base import ServiceBase -if sys.version_info >= (3, 10): - from typing import TypeAlias -else: - from typing_extensions import TypeAlias - class CaptureAllResult: """ diff --git a/src/viam/streams.py b/src/viam/streams.py index 2daae42e12..c52f81779e 100644 --- a/src/viam/streams.py +++ b/src/viam/streams.py @@ -1,10 +1,4 @@ -import sys - -if sys.version_info >= (3, 9): - from collections.abc import AsyncIterator -else: - from typing import AsyncIterator - +from collections.abc import AsyncIterator from typing import Protocol, TypeVar StreamType = TypeVar("StreamType", covariant=True) diff --git a/src/viam/utils.py b/src/viam/utils.py index e8fa4e1b88..8a81ead038 100644 --- a/src/viam/utils.py +++ b/src/viam/utils.py @@ -3,8 +3,9 @@ import functools import sys import threading +from collections.abc import Callable from datetime import datetime -from typing import Any, Callable, Dict, List, Mapping, Optional, SupportsBytes, SupportsFloat, Type, TypeVar, Union +from typing import Any, Dict, List, Mapping, Optional, ParamSpec, SupportsBytes, SupportsFloat, Type, TypeVar, Union from google.protobuf.json_format import MessageToDict, ParseDict from google.protobuf.message import Message @@ -18,17 +19,6 @@ from viam.resource.rpc_client_base import ResourceRPCClientBase from viam.resource.types import API, SupportsGetGeometries -if sys.version_info >= (3, 9): - from collections.abc import Callable -else: - from typing import Callable - -if sys.version_info >= (3, 10): - from typing import ParamSpec -else: - from typing_extensions import ParamSpec - - ValueTypes = Union[bool, SupportsBytes, SupportsFloat, List, Mapping, str, None] """Types that can be encoded into a protobuf `Value`""" @@ -247,22 +237,6 @@ def count(self) -> int: _R = TypeVar("_R") -async def to_thread(func: Callable[_P, _R], *args: _P.args, **kwargs: _P.kwargs) -> _R: - """Asynchronously run a function in a separate thread. - - This is a copy of the function defined in the python source, - which is only available in python >= 3.9. - - See: https://github.com/python/cpython/blob/main/Lib/asyncio/threads.py - """ - if sys.version_info >= (3, 9): - return await asyncio.to_thread(func, *args, **kwargs) - loop = asyncio.events.get_running_loop() - ctx = contextvars.copy_context() - func_call = functools.partial(ctx.run, func, *args, **kwargs) - return await loop.run_in_executor(None, func_call) # type: ignore - - def from_dm_from_extra(extra: Optional[Dict[str, Any]]) -> bool: """Used in modular filter components to get the 'fromDataManagement' value from an extra map.""" if extra is None: From 2d8f4276b1161b301e88cdc677c07fa4bca344d4 Mon Sep 17 00:00:00 2001 From: Naveed Jooma Date: Mon, 16 Mar 2026 10:11:10 -0400 Subject: [PATCH 06/12] Fix test workflow to use matrix --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 417a428754..4b66fde946 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,7 +31,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v7 with: - python-version: "3.12" + python-version: ${{ matrix.python-version }} enable-cache: trues - name: Install viam-server From 5ee4f1759c9aa573aa59b8c9d8165723e20ed9eb Mon Sep 17 00:00:00 2001 From: Naveed Jooma Date: Mon, 16 Mar 2026 10:29:48 -0400 Subject: [PATCH 07/12] remove unused imports --- src/viam/utils.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/viam/utils.py b/src/viam/utils.py index 8a81ead038..8e3da3cfb7 100644 --- a/src/viam/utils.py +++ b/src/viam/utils.py @@ -1,7 +1,5 @@ import asyncio -import contextvars import functools -import sys import threading from collections.abc import Callable from datetime import datetime From b8de5a113d5d1d3bd298ed68367e37625377638d Mon Sep 17 00:00:00 2001 From: Naveed Jooma Date: Mon, 16 Mar 2026 15:36:17 -0400 Subject: [PATCH 08/12] Downgrade protobuf to 6.33 from 7.34 --- .github/workflows/update_protos.yml | 2 +- Makefile | 8 +- etc/generate_proto_import.py | 2 - pyproject.toml | 3 +- requirements-test.txt | 2 +- src/viam/gen/app/agent/v1/agent_pb2.py | 2 +- .../gen/app/cloudslam/v1/cloud_slam_pb2.py | 2 +- src/viam/gen/app/data/v1/data_pb2.py | 2 +- .../datapipelines/v1/data_pipelines_pb2.py | 2 +- src/viam/gen/app/dataset/v1/dataset_pb2.py | 2 +- .../gen/app/datasync/v1/data_sync_grpc.py | 2 +- src/viam/gen/app/datasync/v1/data_sync_pb2.py | 4 +- .../app/mlinference/v1/ml_inference_pb2.py | 2 +- .../gen/app/mltraining/v1/ml_training_grpc.py | 2 +- .../gen/app/mltraining/v1/ml_training_pb2.py | 4 +- src/viam/gen/app/packages/v1/packages_grpc.py | 2 +- src/viam/gen/app/packages/v1/packages_pb2.py | 4 +- src/viam/gen/app/v1/app_pb2.py | 2 +- src/viam/gen/app/v1/billing_pb2.py | 2 +- src/viam/gen/app/v1/end_user_pb2.py | 2 +- src/viam/gen/app/v1/robot_pb2.py | 2 +- src/viam/gen/common/v1/common_pb2.py | 2 +- src/viam/gen/component/arm/v1/arm_grpc.py | 2 +- src/viam/gen/component/arm/v1/arm_pb2.py | 4 +- .../gen/component/audioin/v1/audioin_grpc.py | 2 +- .../gen/component/audioin/v1/audioin_pb2.py | 4 +- .../component/audioout/v1/audioout_grpc.py | 2 +- .../gen/component/audioout/v1/audioout_pb2.py | 4 +- src/viam/gen/component/base/v1/base_grpc.py | 2 +- src/viam/gen/component/base/v1/base_pb2.py | 4 +- src/viam/gen/component/board/v1/board_grpc.py | 2 +- src/viam/gen/component/board/v1/board_pb2.py | 4 +- .../gen/component/button/v1/button_grpc.py | 2 +- .../gen/component/button/v1/button_pb2.py | 4 +- .../gen/component/camera/v1/camera_grpc.py | 3 +- .../gen/component/camera/v1/camera_pb2.py | 6 +- .../gen/component/encoder/v1/encoder_grpc.py | 2 +- .../gen/component/encoder/v1/encoder_pb2.py | 4 +- .../gen/component/gantry/v1/gantry_grpc.py | 2 +- .../gen/component/gantry/v1/gantry_pb2.py | 4 +- .../gen/component/generic/v1/generic_grpc.py | 2 +- .../gen/component/generic/v1/generic_pb2.py | 4 +- .../gen/component/gripper/v1/gripper_grpc.py | 2 +- .../gen/component/gripper/v1/gripper_pb2.py | 4 +- .../v1/input_controller_grpc.py | 2 +- .../v1/input_controller_pb2.py | 4 +- src/viam/gen/component/motor/v1/motor_grpc.py | 2 +- src/viam/gen/component/motor/v1/motor_pb2.py | 4 +- .../movementsensor/v1/movementsensor_grpc.py | 2 +- .../movementsensor/v1/movementsensor_pb2.py | 4 +- .../posetracker/v1/pose_tracker_grpc.py | 2 +- .../posetracker/v1/pose_tracker_pb2.py | 4 +- .../powersensor/v1/powersensor_grpc.py | 2 +- .../powersensor/v1/powersensor_pb2.py | 4 +- .../gen/component/sensor/v1/sensor_grpc.py | 2 +- .../gen/component/sensor/v1/sensor_pb2.py | 4 +- src/viam/gen/component/servo/v1/servo_grpc.py | 2 +- src/viam/gen/component/servo/v1/servo_pb2.py | 4 +- .../gen/component/switch/v1/switch_grpc.py | 2 +- .../gen/component/switch/v1/switch_pb2.py | 4 +- .../gen/component/testecho/v1/testecho_pb2.py | 2 +- src/viam/gen/google/__init__.py | 0 src/viam/gen/google/api/__init__.py | 0 src/viam/gen/google/api/annotations_grpc.py | 0 src/viam/gen/google/api/annotations_pb2.py | 17 - src/viam/gen/google/api/annotations_pb2.pyi | 26 - src/viam/gen/google/api/client_grpc.py | 0 src/viam/gen/google/api/client_pb2.py | 70 -- src/viam/gen/google/api/client_pb2.pyi | 758 ------------------ src/viam/gen/google/api/expr/__init__.py | 0 .../gen/google/api/expr/v1alpha1/__init__.py | 0 .../google/api/expr/v1alpha1/checked_grpc.py | 0 .../google/api/expr/v1alpha1/checked_pb2.py | 52 -- .../google/api/expr/v1alpha1/checked_pb2.pyi | 591 -------------- .../gen/google/api/expr/v1alpha1/eval_grpc.py | 0 .../gen/google/api/expr/v1alpha1/eval_pb2.py | 27 - .../gen/google/api/expr/v1alpha1/eval_pb2.pyi | 198 ----- .../google/api/expr/v1alpha1/explain_grpc.py | 0 .../google/api/expr/v1alpha1/explain_pb2.py | 22 - .../google/api/expr/v1alpha1/explain_pb2.pyi | 87 -- .../google/api/expr/v1alpha1/syntax_grpc.py | 0 .../google/api/expr/v1alpha1/syntax_pb2.py | 60 -- .../google/api/expr/v1alpha1/syntax_pb2.pyi | 720 ----------------- .../google/api/expr/v1alpha1/value_grpc.py | 0 .../gen/google/api/expr/v1alpha1/value_pb2.py | 27 - .../google/api/expr/v1alpha1/value_pb2.pyi | 200 ----- .../gen/google/api/expr/v1beta1/__init__.py | 0 .../gen/google/api/expr/v1beta1/decl_grpc.py | 0 .../gen/google/api/expr/v1beta1/decl_pb2.py | 24 - .../gen/google/api/expr/v1beta1/decl_pb2.pyi | 158 ---- .../gen/google/api/expr/v1beta1/eval_grpc.py | 0 .../gen/google/api/expr/v1beta1/eval_pb2.py | 29 - .../gen/google/api/expr/v1beta1/eval_pb2.pyi | 220 ----- .../gen/google/api/expr/v1beta1/expr_grpc.py | 0 .../gen/google/api/expr/v1beta1/expr_pb2.py | 37 - .../gen/google/api/expr/v1beta1/expr_pb2.pyi | 436 ---------- .../google/api/expr/v1beta1/source_grpc.py | 0 .../gen/google/api/expr/v1beta1/source_pb2.py | 23 - .../google/api/expr/v1beta1/source_pb2.pyi | 102 --- .../gen/google/api/expr/v1beta1/value_grpc.py | 0 .../gen/google/api/expr/v1beta1/value_pb2.py | 27 - .../gen/google/api/expr/v1beta1/value_pb2.pyi | 198 ----- .../gen/google/api/field_behavior_grpc.py | 0 src/viam/gen/google/api/field_behavior_pb2.py | 20 - .../gen/google/api/field_behavior_pb2.pyi | 86 -- src/viam/gen/google/api/field_info_grpc.py | 0 src/viam/gen/google/api/field_info_pb2.py | 22 - src/viam/gen/google/api/field_info_pb2.pyi | 108 --- src/viam/gen/google/api/http_grpc.py | 0 src/viam/gen/google/api/http_pb2.py | 21 - src/viam/gen/google/api/http_pb2.pyi | 402 ---------- src/viam/gen/google/api/httpbody_grpc.py | 0 src/viam/gen/google/api/httpbody_pb2.py | 18 - src/viam/gen/google/api/httpbody_pb2.pyi | 99 --- src/viam/gen/google/api/launch_stage_grpc.py | 0 src/viam/gen/google/api/launch_stage_pb2.py | 17 - src/viam/gen/google/api/launch_stage_pb2.pyi | 72 -- src/viam/gen/google/api/resource_grpc.py | 0 src/viam/gen/google/api/resource_pb2.py | 24 - src/viam/gen/google/api/resource_pb2.pyi | 211 ----- src/viam/gen/google/api/routing_grpc.py | 0 src/viam/gen/google/api/routing_pb2.py | 20 - src/viam/gen/google/api/routing_pb2.pyi | 436 ---------- src/viam/gen/google/api/visibility_grpc.py | 0 src/viam/gen/google/api/visibility_pb2.py | 20 - src/viam/gen/google/api/visibility_pb2.pyi | 114 --- src/viam/gen/google/rpc/__init__.py | 0 src/viam/gen/google/rpc/code_grpc.py | 0 src/viam/gen/google/rpc/code_pb2.py | 17 - src/viam/gen/google/rpc/code_pb2.pyi | 113 --- src/viam/gen/google/rpc/context/__init__.py | 0 .../rpc/context/attribute_context_grpc.py | 0 .../rpc/context/attribute_context_pb2.py | 53 -- .../rpc/context/attribute_context_pb2.pyi | 526 ------------ src/viam/gen/google/rpc/error_details_grpc.py | 0 src/viam/gen/google/rpc/error_details_pb2.py | 52 -- src/viam/gen/google/rpc/error_details_pb2.pyi | 471 ----------- src/viam/gen/google/rpc/status_grpc.py | 0 src/viam/gen/google/rpc/status_pb2.py | 18 - src/viam/gen/google/rpc/status_pb2.pyi | 63 -- src/viam/gen/module/v1/module_pb2.py | 2 +- .../proto/common/v1/common_pb2.py | 2 +- .../proto/resource/v1/resource_pb2.py | 2 +- .../opentelemetry/proto/trace/v1/trace_pb2.py | 2 +- .../proto/rpc/examples/echo/v1/echo_grpc.py | 2 +- .../proto/rpc/examples/echo/v1/echo_pb2.py | 4 +- .../echoresource/v1/echoresource_pb2.py | 2 +- src/viam/gen/proto/rpc/v1/auth_grpc.py | 2 +- src/viam/gen/proto/rpc/v1/auth_pb2.py | 4 +- src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py | 4 +- .../gen/proto/rpc/webrtc/v1/signaling_grpc.py | 3 +- .../gen/proto/rpc/webrtc/v1/signaling_pb2.py | 6 +- .../gen/provisioning/v1/provisioning_pb2.py | 2 +- src/viam/gen/robot/v1/robot_grpc.py | 2 +- src/viam/gen/robot/v1/robot_pb2.py | 4 +- .../datamanager/v1/data_manager_grpc.py | 2 +- .../datamanager/v1/data_manager_pb2.py | 4 +- .../service/discovery/v1/discovery_grpc.py | 2 +- .../gen/service/discovery/v1/discovery_pb2.py | 4 +- .../gen/service/generic/v1/generic_grpc.py | 2 +- .../gen/service/generic/v1/generic_pb2.py | 4 +- .../gen/service/mlmodel/v1/mlmodel_grpc.py | 2 +- .../gen/service/mlmodel/v1/mlmodel_pb2.py | 4 +- src/viam/gen/service/motion/v1/motion_grpc.py | 2 +- src/viam/gen/service/motion/v1/motion_pb2.py | 4 +- .../service/navigation/v1/navigation_grpc.py | 2 +- .../service/navigation/v1/navigation_pb2.py | 4 +- .../gen/service/sensors/v1/sensors_grpc.py | 2 +- .../gen/service/sensors/v1/sensors_pb2.py | 4 +- src/viam/gen/service/shell/v1/shell_grpc.py | 2 +- src/viam/gen/service/shell/v1/shell_pb2.py | 4 +- src/viam/gen/service/slam/v1/slam_grpc.py | 2 +- src/viam/gen/service/slam/v1/slam_pb2.py | 4 +- src/viam/gen/service/video/v1/video_grpc.py | 2 +- src/viam/gen/service/video/v1/video_pb2.py | 4 +- src/viam/gen/service/vision/v1/vision_grpc.py | 2 +- src/viam/gen/service/vision/v1/vision_pb2.py | 4 +- .../v1/world_state_store_grpc.py | 2 +- .../v1/world_state_store_pb2.py | 4 +- src/viam/gen/stream/v1/stream_pb2.py | 2 +- src/viam/gen/tagger/v1/tagger_pb2.py | 2 +- src/viam/proto/app/__init__.py | 617 +++++++------- src/viam/proto/app/agent/__init__.py | 33 +- src/viam/proto/app/billing.py | 83 +- src/viam/proto/app/cloudslam/__init__.py | 53 +- src/viam/proto/app/data/__init__.py | 191 ++--- src/viam/proto/app/datapipelines/__init__.py | 53 +- src/viam/proto/app/dataset/__init__.py | 45 +- src/viam/proto/app/datasync/__init__.py | 49 +- src/viam/proto/app/end_user.py | 39 +- src/viam/proto/app/mlinference/__init__.py | 26 +- src/viam/proto/app/mltraining/__init__.py | 63 +- src/viam/proto/app/packages/__init__.py | 43 +- src/viam/proto/app/robot.py | 95 +-- src/viam/proto/common/__init__.py | 77 +- src/viam/proto/component/arm/__init__.py | 53 +- src/viam/proto/component/audioin/__init__.py | 29 +- src/viam/proto/component/audioout/__init__.py | 26 +- src/viam/proto/component/base/__init__.py | 47 +- src/viam/proto/component/board/__init__.py | 73 +- src/viam/proto/component/button/__init__.py | 26 +- src/viam/proto/component/camera/__init__.py | 53 +- src/viam/proto/component/encoder/__init__.py | 33 +- src/viam/proto/component/gantry/__init__.py | 45 +- src/viam/proto/component/generic/__init__.py | 17 +- src/viam/proto/component/gripper/__init__.py | 39 +- .../component/inputcontroller/__init__.py | 35 +- src/viam/proto/component/motor/__init__.py | 61 +- .../component/movementsensor/__init__.py | 47 +- .../proto/component/posetracker/__init__.py | 22 +- .../proto/component/powersensor/__init__.py | 27 +- src/viam/proto/component/sensor/__init__.py | 17 +- src/viam/proto/component/servo/__init__.py | 37 +- src/viam/proto/component/switch/__init__.py | 31 +- src/viam/proto/component/testecho/__init__.py | 35 +- src/viam/proto/module/__init__.py | 43 +- .../opentelemetry/proto/common/__init__.py | 26 +- .../opentelemetry/proto/resource/__init__.py | 11 +- .../opentelemetry/proto/trace/__init__.py | 26 +- src/viam/proto/provisioning/__init__.py | 47 +- src/viam/proto/robot/__init__.py | 145 ++-- src/viam/proto/rpc/auth.py | 31 +- src/viam/proto/rpc/examples/echo/__init__.py | 31 +- .../rpc/examples/echoresource/__init__.py | 27 +- src/viam/proto/rpc/webrtc/grpc.py | 41 +- src/viam/proto/rpc/webrtc/signaling.py | 63 +- .../proto/service/datamanager/__init__.py | 23 +- src/viam/proto/service/discovery/__init__.py | 26 +- src/viam/proto/service/generic/__init__.py | 17 +- src/viam/proto/service/mlmodel/__init__.py | 63 +- src/viam/proto/service/motion/__init__.py | 75 +- src/viam/proto/service/navigation/__init__.py | 63 +- src/viam/proto/service/sensors/__init__.py | 35 +- src/viam/proto/service/shell/__init__.py | 41 +- src/viam/proto/service/slam/__init__.py | 41 +- src/viam/proto/service/video/__init__.py | 26 +- src/viam/proto/service/vision/__init__.py | 51 +- .../proto/service/worldstatestore/__init__.py | 29 +- src/viam/proto/stream/__init__.py | 41 +- src/viam/proto/tagger/__init__.py | 7 +- src/viam/services/worldstatestore/client.py | 6 +- tests/mocks/services.py | 5 +- uv.lock | 34 +- 243 files changed, 1886 insertions(+), 8815 deletions(-) delete mode 100644 src/viam/gen/google/__init__.py delete mode 100644 src/viam/gen/google/api/__init__.py delete mode 100644 src/viam/gen/google/api/annotations_grpc.py delete mode 100644 src/viam/gen/google/api/annotations_pb2.py delete mode 100644 src/viam/gen/google/api/annotations_pb2.pyi delete mode 100644 src/viam/gen/google/api/client_grpc.py delete mode 100644 src/viam/gen/google/api/client_pb2.py delete mode 100644 src/viam/gen/google/api/client_pb2.pyi delete mode 100644 src/viam/gen/google/api/expr/__init__.py delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/__init__.py delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/checked_grpc.py delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/checked_pb2.py delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/checked_pb2.pyi delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/eval_grpc.py delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/eval_pb2.py delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/eval_pb2.pyi delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/explain_grpc.py delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/explain_pb2.py delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/explain_pb2.pyi delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/syntax_grpc.py delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/syntax_pb2.py delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/syntax_pb2.pyi delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/value_grpc.py delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/value_pb2.py delete mode 100644 src/viam/gen/google/api/expr/v1alpha1/value_pb2.pyi delete mode 100644 src/viam/gen/google/api/expr/v1beta1/__init__.py delete mode 100644 src/viam/gen/google/api/expr/v1beta1/decl_grpc.py delete mode 100644 src/viam/gen/google/api/expr/v1beta1/decl_pb2.py delete mode 100644 src/viam/gen/google/api/expr/v1beta1/decl_pb2.pyi delete mode 100644 src/viam/gen/google/api/expr/v1beta1/eval_grpc.py delete mode 100644 src/viam/gen/google/api/expr/v1beta1/eval_pb2.py delete mode 100644 src/viam/gen/google/api/expr/v1beta1/eval_pb2.pyi delete mode 100644 src/viam/gen/google/api/expr/v1beta1/expr_grpc.py delete mode 100644 src/viam/gen/google/api/expr/v1beta1/expr_pb2.py delete mode 100644 src/viam/gen/google/api/expr/v1beta1/expr_pb2.pyi delete mode 100644 src/viam/gen/google/api/expr/v1beta1/source_grpc.py delete mode 100644 src/viam/gen/google/api/expr/v1beta1/source_pb2.py delete mode 100644 src/viam/gen/google/api/expr/v1beta1/source_pb2.pyi delete mode 100644 src/viam/gen/google/api/expr/v1beta1/value_grpc.py delete mode 100644 src/viam/gen/google/api/expr/v1beta1/value_pb2.py delete mode 100644 src/viam/gen/google/api/expr/v1beta1/value_pb2.pyi delete mode 100644 src/viam/gen/google/api/field_behavior_grpc.py delete mode 100644 src/viam/gen/google/api/field_behavior_pb2.py delete mode 100644 src/viam/gen/google/api/field_behavior_pb2.pyi delete mode 100644 src/viam/gen/google/api/field_info_grpc.py delete mode 100644 src/viam/gen/google/api/field_info_pb2.py delete mode 100644 src/viam/gen/google/api/field_info_pb2.pyi delete mode 100644 src/viam/gen/google/api/http_grpc.py delete mode 100644 src/viam/gen/google/api/http_pb2.py delete mode 100644 src/viam/gen/google/api/http_pb2.pyi delete mode 100644 src/viam/gen/google/api/httpbody_grpc.py delete mode 100644 src/viam/gen/google/api/httpbody_pb2.py delete mode 100644 src/viam/gen/google/api/httpbody_pb2.pyi delete mode 100644 src/viam/gen/google/api/launch_stage_grpc.py delete mode 100644 src/viam/gen/google/api/launch_stage_pb2.py delete mode 100644 src/viam/gen/google/api/launch_stage_pb2.pyi delete mode 100644 src/viam/gen/google/api/resource_grpc.py delete mode 100644 src/viam/gen/google/api/resource_pb2.py delete mode 100644 src/viam/gen/google/api/resource_pb2.pyi delete mode 100644 src/viam/gen/google/api/routing_grpc.py delete mode 100644 src/viam/gen/google/api/routing_pb2.py delete mode 100644 src/viam/gen/google/api/routing_pb2.pyi delete mode 100644 src/viam/gen/google/api/visibility_grpc.py delete mode 100644 src/viam/gen/google/api/visibility_pb2.py delete mode 100644 src/viam/gen/google/api/visibility_pb2.pyi delete mode 100644 src/viam/gen/google/rpc/__init__.py delete mode 100644 src/viam/gen/google/rpc/code_grpc.py delete mode 100644 src/viam/gen/google/rpc/code_pb2.py delete mode 100644 src/viam/gen/google/rpc/code_pb2.pyi delete mode 100644 src/viam/gen/google/rpc/context/__init__.py delete mode 100644 src/viam/gen/google/rpc/context/attribute_context_grpc.py delete mode 100644 src/viam/gen/google/rpc/context/attribute_context_pb2.py delete mode 100644 src/viam/gen/google/rpc/context/attribute_context_pb2.pyi delete mode 100644 src/viam/gen/google/rpc/error_details_grpc.py delete mode 100644 src/viam/gen/google/rpc/error_details_pb2.py delete mode 100644 src/viam/gen/google/rpc/error_details_pb2.pyi delete mode 100644 src/viam/gen/google/rpc/status_grpc.py delete mode 100644 src/viam/gen/google/rpc/status_pb2.py delete mode 100644 src/viam/gen/google/rpc/status_pb2.pyi diff --git a/.github/workflows/update_protos.yml b/.github/workflows/update_protos.yml index 721669c01b..f34c4ed200 100644 --- a/.github/workflows/update_protos.yml +++ b/.github/workflows/update_protos.yml @@ -29,7 +29,7 @@ jobs: - uses: arduino/setup-protoc@v3 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - version: "34.0" + version: "33.5" - name: Install uv uses: astral-sh/setup-uv@v7 with: diff --git a/Makefile b/Makefile index b6397e5a71..1fb2948e25 100644 --- a/Makefile +++ b/Makefile @@ -16,14 +16,12 @@ buf: clean rm -rf src/viam/gen chmod +x plugin/main.py uv pip install protoletariat - uv pip install protobuf==7.34.0 + uv pip install protobuf==6.33.5 $(eval API_VERSION := $(shell grep 'API_VERSION' src/viam/version_metadata.py | awk -F '"' '{print $$2}')) - buf generate buf.build/googleapis/googleapis --path google/rpc,google/api buf generate buf.build/viamrobotics/api:${API_VERSION} buf generate buf.build/viamrobotics/goutils - protol --in-place -s _grpc.py -s _pb2.py -s _pb2.pyi -o src/viam/gen buf buf.build/googleapis/googleapis - protol --in-place -s _grpc.py -s _pb2.py -s _pb2.pyi -o src/viam/gen buf buf.build/viamrobotics/api - protol --in-place -s _grpc.py -s _pb2.py -s _pb2.pyi -o src/viam/gen buf buf.build/viamrobotics/goutils + protol -e googl* --in-place -s _grpc.py -s _pb2.py -s _pb2.pyi -o src/viam/gen buf buf.build/viamrobotics/api + protol -e googl* --in-place -s _grpc.py -s _pb2.py -s _pb2.pyi -o src/viam/gen buf buf.build/viamrobotics/goutils find src/viam/gen -type d -exec touch {}/__init__.py \; uv run python3 -m etc.generate_proto_import -v diff --git a/etc/generate_proto_import.py b/etc/generate_proto_import.py index d0e0dff3e4..e30d5a5b7d 100644 --- a/etc/generate_proto_import.py +++ b/etc/generate_proto_import.py @@ -52,8 +52,6 @@ def get_packages(root: str) -> Dict[str, List[str]]: packages: Dict[str, List[str]] = {} for dirpath, _, filenames in os.walk(root): - if "google" in dirpath: - continue rel_path = Path(dirpath).relative_to(root).__str__() if "__" in rel_path: continue diff --git a/pyproject.toml b/pyproject.toml index 685b022be5..7c1b2d1e53 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,9 +12,10 @@ dynamic = [ ] dependencies = [ "grpclib>=0.4.9", - "protobuf==7.34.0", + "protobuf==6.33.5", "typing-extensions>=4.15.0", "pymongo>=4.10.1", + "googleapis-common-protos>=1.73.0", ] [dependency-groups] dev = [ diff --git a/requirements-test.txt b/requirements-test.txt index b953b36fa6..e833a153c0 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -1,5 +1,5 @@ grpclib~=0.4.9 typing-extensions~=4.15.0 Pillow~=10.4.0 - protobuf==7.34.0 + protobuf==6.33.5 numpy~=1.26.2 diff --git a/src/viam/gen/app/agent/v1/agent_pb2.py b/src/viam/gen/app/agent/v1/agent_pb2.py index 180e74f74d..fcaf8a71ce 100644 --- a/src/viam/gen/app/agent/v1/agent_pb2.py +++ b/src/viam/gen/app/agent/v1/agent_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/agent/v1/agent.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'app/agent/v1/agent.proto') _sym_db = _symbol_database.Default() from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 diff --git a/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.py b/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.py index d053fb605f..a8062d9c10 100644 --- a/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.py +++ b/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/cloudslam/v1/cloud_slam.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'app/cloudslam/v1/cloud_slam.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 diff --git a/src/viam/gen/app/data/v1/data_pb2.py b/src/viam/gen/app/data/v1/data_pb2.py index 5aed9f78c5..c36d5d8d52 100644 --- a/src/viam/gen/app/data/v1/data_pb2.py +++ b/src/viam/gen/app/data/v1/data_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/data/v1/data.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'app/data/v1/data.proto') _sym_db = _symbol_database.Default() from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 diff --git a/src/viam/gen/app/datapipelines/v1/data_pipelines_pb2.py b/src/viam/gen/app/datapipelines/v1/data_pipelines_pb2.py index 5846f027b9..9eeab1e27c 100644 --- a/src/viam/gen/app/datapipelines/v1/data_pipelines_pb2.py +++ b/src/viam/gen/app/datapipelines/v1/data_pipelines_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/datapipelines/v1/data_pipelines.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'app/datapipelines/v1/data_pipelines.proto') _sym_db = _symbol_database.Default() from ....app.data.v1 import data_pb2 as app_dot_data_dot_v1_dot_data__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 diff --git a/src/viam/gen/app/dataset/v1/dataset_pb2.py b/src/viam/gen/app/dataset/v1/dataset_pb2.py index 23a0a3117d..69449e1e1e 100644 --- a/src/viam/gen/app/dataset/v1/dataset_pb2.py +++ b/src/viam/gen/app/dataset/v1/dataset_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/dataset/v1/dataset.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'app/dataset/v1/dataset.proto') _sym_db = _symbol_database.Default() from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1capp/dataset/v1/dataset.proto\x12\x13viam.app.dataset.v1\x1a\x1fgoogle/protobuf/timestamp.proto"\x95\x01\n\x07Dataset\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\'\n\x0forganization_id\x18\x03 \x01(\tR\x0eorganizationId\x12=\n\x0ctime_created\x18\x04 \x01(\x0b2\x1a.google.protobuf.TimestampR\x0btimeCreated"S\n\x14CreateDatasetRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\'\n\x0forganization_id\x18\x02 \x01(\tR\x0eorganizationId"\'\n\x15CreateDatasetResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"&\n\x14DeleteDatasetRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"\x17\n\x15DeleteDatasetResponse":\n\x14RenameDatasetRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name"\x17\n\x15RenameDatasetResponse"N\n#ListDatasetsByOrganizationIDRequest\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId"`\n$ListDatasetsByOrganizationIDResponse\x128\n\x08datasets\x18\x01 \x03(\x0b2\x1c.viam.app.dataset.v1.DatasetR\x08datasets",\n\x18ListDatasetsByIDsRequest\x12\x10\n\x03ids\x18\x01 \x03(\tR\x03ids"U\n\x19ListDatasetsByIDsResponse\x128\n\x08datasets\x18\x01 \x03(\x0b2\x1c.viam.app.dataset.v1.DatasetR\x08datasets"t\n\x14MergeDatasetsRequest\x12\x1f\n\x0bdataset_ids\x18\x01 \x03(\tR\ndatasetIds\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\'\n\x0forganization_id\x18\x03 \x01(\tR\x0eorganizationId"6\n\x15MergeDatasetsResponse\x12\x1d\n\ndataset_id\x18\x01 \x01(\tR\tdatasetId2\xba\x05\n\x0eDatasetService\x12f\n\rCreateDataset\x12).viam.app.dataset.v1.CreateDatasetRequest\x1a*.viam.app.dataset.v1.CreateDatasetResponse\x12f\n\rDeleteDataset\x12).viam.app.dataset.v1.DeleteDatasetRequest\x1a*.viam.app.dataset.v1.DeleteDatasetResponse\x12f\n\rRenameDataset\x12).viam.app.dataset.v1.RenameDatasetRequest\x1a*.viam.app.dataset.v1.RenameDatasetResponse\x12\x93\x01\n\x1cListDatasetsByOrganizationID\x128.viam.app.dataset.v1.ListDatasetsByOrganizationIDRequest\x1a9.viam.app.dataset.v1.ListDatasetsByOrganizationIDResponse\x12r\n\x11ListDatasetsByIDs\x12-.viam.app.dataset.v1.ListDatasetsByIDsRequest\x1a..viam.app.dataset.v1.ListDatasetsByIDsResponse\x12f\n\rMergeDatasets\x12).viam.app.dataset.v1.MergeDatasetsRequest\x1a*.viam.app.dataset.v1.MergeDatasetsResponseB Z\x1ego.viam.com/api/app/dataset/v1b\x06proto3') diff --git a/src/viam/gen/app/datasync/v1/data_sync_grpc.py b/src/viam/gen/app/datasync/v1/data_sync_grpc.py index 6119114f0e..2fbf2ed00d 100644 --- a/src/viam/gen/app/datasync/v1/data_sync_grpc.py +++ b/src/viam/gen/app/datasync/v1/data_sync_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import app -from .... import google +import google.api.annotations_pb2 import google.protobuf.any_pb2 import google.protobuf.struct_pb2 import google.protobuf.timestamp_pb2 diff --git a/src/viam/gen/app/datasync/v1/data_sync_pb2.py b/src/viam/gen/app/datasync/v1/data_sync_pb2.py index 8c764c3bc1..b775973978 100644 --- a/src/viam/gen/app/datasync/v1/data_sync_pb2.py +++ b/src/viam/gen/app/datasync/v1/data_sync_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/datasync/v1/data_sync.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'app/datasync/v1/data_sync.proto') _sym_db = _symbol_database.Default() from ....app.data.v1 import data_pb2 as app_dot_data_dot_v1_dot_data__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 diff --git a/src/viam/gen/app/mlinference/v1/ml_inference_pb2.py b/src/viam/gen/app/mlinference/v1/ml_inference_pb2.py index 1d74afc016..9f8ac30412 100644 --- a/src/viam/gen/app/mlinference/v1/ml_inference_pb2.py +++ b/src/viam/gen/app/mlinference/v1/ml_inference_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/mlinference/v1/ml_inference.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'app/mlinference/v1/ml_inference.proto') _sym_db = _symbol_database.Default() from ....app.data.v1 import data_pb2 as app_dot_data_dot_v1_dot_data__pb2 from ....service.mlmodel.v1 import mlmodel_pb2 as service_dot_mlmodel_dot_v1_dot_mlmodel__pb2 diff --git a/src/viam/gen/app/mltraining/v1/ml_training_grpc.py b/src/viam/gen/app/mltraining/v1/ml_training_grpc.py index 81890b3baa..6360dcc369 100644 --- a/src/viam/gen/app/mltraining/v1/ml_training_grpc.py +++ b/src/viam/gen/app/mltraining/v1/ml_training_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server import google.protobuf.timestamp_pb2 -from .... import google +import google.rpc.status_pb2 from .... import tagger from .... import app diff --git a/src/viam/gen/app/mltraining/v1/ml_training_pb2.py b/src/viam/gen/app/mltraining/v1/ml_training_pb2.py index ba656ca06e..54f0a3c0d7 100644 --- a/src/viam/gen/app/mltraining/v1/ml_training_pb2.py +++ b/src/viam/gen/app/mltraining/v1/ml_training_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/mltraining/v1/ml_training.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'app/mltraining/v1/ml_training.proto') _sym_db = _symbol_database.Default() from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -from ....google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 +from google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 from ....tagger.v1 import tagger_pb2 as tagger_dot_v1_dot_tagger__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#app/mltraining/v1/ml_training.proto\x12\x16viam.app.mltraining.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\x1a\x16tagger/v1/tagger.proto"\x90\x05\n\x18SubmitTrainingJobRequest\x12G\n\ndataset_id\x18\x07 \x01(\tB(\x9a\x84\x9e\x03#bson:"dataset_id" json:"dataset_id"R\tdatasetId\x12[\n\x0forganization_id\x18\x02 \x01(\tB2\x9a\x84\x9e\x03-bson:"organization_id" json:"organization_id"R\x0eorganizationId\x12G\n\nmodel_name\x18\x03 \x01(\tB(\x9a\x84\x9e\x03#bson:"model_name" json:"model_name"R\tmodelName\x12S\n\rmodel_version\x18\x04 \x01(\tB.\x9a\x84\x9e\x03)bson:"model_version" json:"model_version"R\x0cmodelVersion\x12j\n\nmodel_type\x18\x05 \x01(\x0e2!.viam.app.mltraining.v1.ModelTypeB(\x9a\x84\x9e\x03#bson:"model_type" json:"model_type"R\tmodelType\x12\x83\x01\n\x0fmodel_framework\x18\x08 \x01(\x0e2&.viam.app.mltraining.v1.ModelFrameworkB2\x9a\x84\x9e\x03-bson:"model_framework" json:"model_framework"R\x0emodelFramework\x120\n\x04tags\x18\x06 \x03(\tB\x1c\x9a\x84\x9e\x03\x17bson:"tags" json:"tags"R\x04tagsJ\x04\x08\x01\x10\x02R\x06filter"+\n\x19SubmitTrainingJobResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"\x88\x06\n\x1eSubmitCustomTrainingJobRequest\x12G\n\ndataset_id\x18\x01 \x01(\tB(\x9a\x84\x9e\x03#bson:"dataset_id" json:"dataset_id"R\tdatasetId\x12^\n\x10registry_item_id\x18\x02 \x01(\tB4\x9a\x84\x9e\x03/bson:"registry_item_id" json:"registry_item_id"R\x0eregistryItemId\x12r\n\x15registry_item_version\x18\x06 \x01(\tB>\x9a\x84\x9e\x039bson:"registry_item_version" json:"registry_item_version"R\x13registryItemVersion\x12[\n\x0forganization_id\x18\x03 \x01(\tB2\x9a\x84\x9e\x03-bson:"organization_id" json:"organization_id"R\x0eorganizationId\x12G\n\nmodel_name\x18\x04 \x01(\tB(\x9a\x84\x9e\x03#bson:"model_name" json:"model_name"R\tmodelName\x12S\n\rmodel_version\x18\x05 \x01(\tB.\x9a\x84\x9e\x03)bson:"model_version" json:"model_version"R\x0cmodelVersion\x12c\n\targuments\x18\x07 \x03(\x0b2E.viam.app.mltraining.v1.SubmitCustomTrainingJobRequest.ArgumentsEntryR\targuments\x12+\n\x11container_version\x18\x08 \x01(\tR\x10containerVersion\x1a<\n\x0eArgumentsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01"1\n\x1fSubmitCustomTrainingJobResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"\'\n\x15GetTrainingJobRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"a\n\x16GetTrainingJobResponse\x12G\n\x08metadata\x18\x01 \x01(\x0b2+.viam.app.mltraining.v1.TrainingJobMetadataR\x08metadata"\x82\x01\n\x17ListTrainingJobsRequest\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12>\n\x06status\x18\x02 \x01(\x0e2&.viam.app.mltraining.v1.TrainingStatusR\x06status"[\n\x18ListTrainingJobsResponse\x12?\n\x04jobs\x18\x01 \x03(\x0b2+.viam.app.mltraining.v1.TrainingJobMetadataR\x04jobs"\x8c\x10\n\x13TrainingJobMetadata\x123\n\x02id\x18\x07 \x01(\tB#\x9a\x84\x9e\x03\x1ebson:"_id" json:"id,omitempty"R\x02id\x12G\n\ndataset_id\x18\x0b \x01(\tB(\x9a\x84\x9e\x03#bson:"dataset_id" json:"dataset_id"R\tdatasetId\x12[\n\x0forganization_id\x18\x0c \x01(\tB2\x9a\x84\x9e\x03-bson:"organization_id" json:"organization_id"R\x0eorganizationId\x12G\n\nmodel_name\x18\r \x01(\tB(\x9a\x84\x9e\x03#bson:"model_name" json:"model_name"R\tmodelName\x12S\n\rmodel_version\x18\x0e \x01(\tB.\x9a\x84\x9e\x03)bson:"model_version" json:"model_version"R\x0cmodelVersion\x12j\n\nmodel_type\x18\x0f \x01(\x0e2!.viam.app.mltraining.v1.ModelTypeB(\x9a\x84\x9e\x03#bson:"model_type" json:"model_type"R\tmodelType\x12\x83\x01\n\x0fmodel_framework\x18\x11 \x01(\x0e2&.viam.app.mltraining.v1.ModelFrameworkB2\x9a\x84\x9e\x03-bson:"model_framework" json:"model_framework"R\x0emodelFramework\x12R\n\ris_custom_job\x18\x12 \x01(\x08B.\x9a\x84\x9e\x03)bson:"is_custom_job" json:"is_custom_job"R\x0bisCustomJob\x12^\n\x10registry_item_id\x18\x13 \x01(\tB4\x9a\x84\x9e\x03/bson:"registry_item_id" json:"registry_item_id"R\x0eregistryItemId\x12r\n\x15registry_item_version\x18\x14 \x01(\tB>\x9a\x84\x9e\x039bson:"registry_item_version" json:"registry_item_version"R\x13registryItemVersion\x12`\n\x06status\x18\x02 \x01(\x0e2&.viam.app.mltraining.v1.TrainingStatusB \x9a\x84\x9e\x03\x1bbson:"status" json:"status"R\x06status\x12c\n\x0cerror_status\x18\x08 \x01(\x0b2\x12.google.rpc.StatusB,\x9a\x84\x9e\x03\'bson:"error_status" json:"error_status"R\x0berrorStatus\x12c\n\ncreated_on\x18\x03 \x01(\x0b2\x1a.google.protobuf.TimestampB(\x9a\x84\x9e\x03#bson:"created_on" json:"created_on"R\tcreatedOn\x12o\n\rlast_modified\x18\x04 \x01(\x0b2\x1a.google.protobuf.TimestampB.\x9a\x84\x9e\x03)bson:"last_modified" json:"last_modified"R\x0clastModified\x12{\n\x10training_started\x18\t \x01(\x0b2\x1a.google.protobuf.TimestampB4\x9a\x84\x9e\x03/bson:"training_started" json:"training_started"R\x0ftrainingStarted\x12s\n\x0etraining_ended\x18\n \x01(\x0b2\x1a.google.protobuf.TimestampB0\x9a\x84\x9e\x03+bson:"training_ended" json:"training_ended"R\rtrainingEnded\x12Z\n\x0fsynced_model_id\x18\x05 \x01(\tB2\x9a\x84\x9e\x03-bson:"synced_model_id" json:"synced_model_id"R\rsyncedModelId\x120\n\x04tags\x18\x10 \x03(\tB\x1c\x9a\x84\x9e\x03\x17bson:"tags" json:"tags"R\x04tags\x12\x80\x01\n\targuments\x18\x15 \x03(\x0b2:.viam.app.mltraining.v1.TrainingJobMetadata.ArgumentsEntryB&\x9a\x84\x9e\x03!bson:"arguments" json:"arguments"R\targuments\x12c\n\x11container_version\x18\x16 \x01(\tB6\x9a\x84\x9e\x031bson:"container_version" json:"container_version"R\x10containerVersion\x1a<\n\x0eArgumentsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01J\x04\x08\x01\x10\x02J\x04\x08\x06\x10\x07R\x07requestR\nuser_email"*\n\x18CancelTrainingJobRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"\x1b\n\x19CancelTrainingJobResponse"3\n!DeleteCompletedTrainingJobRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"$\n"DeleteCompletedTrainingJobResponse"u\n\x13TrainingJobLogEntry\x12\x14\n\x05level\x18\x01 \x01(\tR\x05level\x12.\n\x04time\x18\x02 \x01(\x0b2\x1a.google.protobuf.TimestampR\x04time\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message"^\n\x19GetTrainingJobLogsRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12"\n\npage_token\x18\x02 \x01(\tH\x00R\tpageToken\x88\x01\x01B\r\n\x0b_page_token"\x85\x01\n\x1aGetTrainingJobLogsResponse\x12?\n\x04logs\x18\x01 \x03(\x0b2+.viam.app.mltraining.v1.TrainingJobLogEntryR\x04logs\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken" \n\x1eListSupportedContainersRequest"\xf5\x01\n\x1fListSupportedContainersResponse\x12n\n\rcontainer_map\x18\x01 \x03(\x0b2I.viam.app.mltraining.v1.ListSupportedContainersResponse.ContainerMapEntryR\x0ccontainerMap\x1ab\n\x11ContainerMapEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x127\n\x05value\x18\x02 \x01(\x0b2!.viam.app.mltraining.v1.ContainerR\x05value:\x028\x01"\x9d\x01\n\tContainer\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x10\n\x03uri\x18\x02 \x01(\tR\x03uri\x12\x1c\n\tframework\x18\x03 \x01(\tR\tframework\x12 \n\x0bdescription\x18\x04 \x01(\tR\x0bdescription\x12,\n\x03eol\x18\x05 \x01(\x0b2\x1a.google.protobuf.TimestampR\x03eol*\x9f\x01\n\tModelType\x12\x1a\n\x16MODEL_TYPE_UNSPECIFIED\x10\x00\x12*\n&MODEL_TYPE_SINGLE_LABEL_CLASSIFICATION\x10\x01\x12)\n%MODEL_TYPE_MULTI_LABEL_CLASSIFICATION\x10\x02\x12\x1f\n\x1bMODEL_TYPE_OBJECT_DETECTION\x10\x03*\xa4\x01\n\x0eModelFramework\x12\x1f\n\x1bMODEL_FRAMEWORK_UNSPECIFIED\x10\x00\x12\x1a\n\x16MODEL_FRAMEWORK_TFLITE\x10\x01\x12\x1e\n\x1aMODEL_FRAMEWORK_TENSORFLOW\x10\x02\x12\x1b\n\x17MODEL_FRAMEWORK_PYTORCH\x10\x03\x12\x18\n\x14MODEL_FRAMEWORK_ONNX\x10\x04*\xe7\x01\n\x0eTrainingStatus\x12\x1f\n\x1bTRAINING_STATUS_UNSPECIFIED\x10\x00\x12\x1b\n\x17TRAINING_STATUS_PENDING\x10\x01\x12\x1f\n\x1bTRAINING_STATUS_IN_PROGRESS\x10\x02\x12\x1d\n\x19TRAINING_STATUS_COMPLETED\x10\x03\x12\x1a\n\x16TRAINING_STATUS_FAILED\x10\x04\x12\x1c\n\x18TRAINING_STATUS_CANCELED\x10\x05\x12\x1d\n\x19TRAINING_STATUS_CANCELING\x10\x062\x9c\x08\n\x11MLTrainingService\x12x\n\x11SubmitTrainingJob\x120.viam.app.mltraining.v1.SubmitTrainingJobRequest\x1a1.viam.app.mltraining.v1.SubmitTrainingJobResponse\x12\x8a\x01\n\x17SubmitCustomTrainingJob\x126.viam.app.mltraining.v1.SubmitCustomTrainingJobRequest\x1a7.viam.app.mltraining.v1.SubmitCustomTrainingJobResponse\x12o\n\x0eGetTrainingJob\x12-.viam.app.mltraining.v1.GetTrainingJobRequest\x1a..viam.app.mltraining.v1.GetTrainingJobResponse\x12u\n\x10ListTrainingJobs\x12/.viam.app.mltraining.v1.ListTrainingJobsRequest\x1a0.viam.app.mltraining.v1.ListTrainingJobsResponse\x12x\n\x11CancelTrainingJob\x120.viam.app.mltraining.v1.CancelTrainingJobRequest\x1a1.viam.app.mltraining.v1.CancelTrainingJobResponse\x12\x93\x01\n\x1aDeleteCompletedTrainingJob\x129.viam.app.mltraining.v1.DeleteCompletedTrainingJobRequest\x1a:.viam.app.mltraining.v1.DeleteCompletedTrainingJobResponse\x12{\n\x12GetTrainingJobLogs\x121.viam.app.mltraining.v1.GetTrainingJobLogsRequest\x1a2.viam.app.mltraining.v1.GetTrainingJobLogsResponse\x12\x8a\x01\n\x17ListSupportedContainers\x126.viam.app.mltraining.v1.ListSupportedContainersRequest\x1a7.viam.app.mltraining.v1.ListSupportedContainersResponseB#Z!go.viam.com/api/app/mltraining/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/app/packages/v1/packages_grpc.py b/src/viam/gen/app/packages/v1/packages_grpc.py index 55b73df0af..0f0009c3cb 100644 --- a/src/viam/gen/app/packages/v1/packages_grpc.py +++ b/src/viam/gen/app/packages/v1/packages_grpc.py @@ -5,7 +5,7 @@ import grpclib.exceptions if typing.TYPE_CHECKING: import grpclib.server -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 import google.protobuf.timestamp_pb2 from .... import app diff --git a/src/viam/gen/app/packages/v1/packages_pb2.py b/src/viam/gen/app/packages/v1/packages_pb2.py index 6be869e327..9d7c43b2d0 100644 --- a/src/viam/gen/app/packages/v1/packages_pb2.py +++ b/src/viam/gen/app/packages/v1/packages_pb2.py @@ -4,9 +4,9 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/packages/v1/packages.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'app/packages/v1/packages.proto') _sym_db = _symbol_database.Default() -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1eapp/packages/v1/packages.proto\x12\x14viam.app.packages.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto"k\n\x08FileInfo\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04size\x18\x02 \x01(\x04R\x04size\x12&\n\x0cis_directory\x18\x03 \x01(\x08H\x00R\x0bisDirectory\x88\x01\x01B\x0f\n\r_is_directory"\xb4\x02\n\x0bPackageInfo\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x18\n\x07version\x18\x03 \x01(\tR\x07version\x125\n\x04type\x18\x04 \x01(\x0e2!.viam.app.packages.v1.PackageTypeR\x04type\x12\x1f\n\x08platform\x18\x07 \x01(\tH\x00R\x08platform\x88\x01\x01\x124\n\x05files\x18\x05 \x03(\x0b2\x1e.viam.app.packages.v1.FileInfoR\x05files\x123\n\x08metadata\x18\x06 \x01(\x0b2\x17.google.protobuf.StructR\x08metadataB\x0b\n\t_platform"x\n\x14CreatePackageRequest\x127\n\x04info\x18\x01 \x01(\x0b2!.viam.app.packages.v1.PackageInfoH\x00R\x04info\x12\x1c\n\x08contents\x18\x02 \x01(\x0cH\x00R\x08contentsB\t\n\x07package"A\n\x15CreatePackageResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version"w\n\x14DeletePackageRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version\x125\n\x04type\x18\x03 \x01(\x0e2!.viam.app.packages.v1.PackageTypeR\x04type"\x17\n\x15DeletePackageResponse"\xb9\x01\n\x07Package\x125\n\x04info\x18\x01 \x01(\x0b2!.viam.app.packages.v1.PackageInfoR\x04info\x12\x10\n\x03url\x18\x02 \x01(\tR\x03url\x129\n\ncreated_on\x18\x03 \x01(\x0b2\x1a.google.protobuf.TimestampR\tcreatedOn\x12\x1a\n\x08checksum\x18\x04 \x01(\tR\x08checksum\x12\x0e\n\x02id\x18\x05 \x01(\tR\x02id"\xe6\x01\n\x11GetPackageRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version\x12$\n\x0binclude_url\x18\x03 \x01(\x08H\x00R\nincludeUrl\x88\x01\x01\x12:\n\x04type\x18\x04 \x01(\x0e2!.viam.app.packages.v1.PackageTypeH\x01R\x04type\x88\x01\x01\x12\x1f\n\x08platform\x18\x05 \x01(\tH\x02R\x08platform\x88\x01\x01B\x0e\n\x0c_include_urlB\x07\n\x05_typeB\x0b\n\t_platform"M\n\x12GetPackageResponse\x127\n\x07package\x18\x01 \x01(\x0b2\x1d.viam.app.packages.v1.PackageR\x07package"\x86\x02\n\x13ListPackagesRequest\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12\x17\n\x04name\x18\x02 \x01(\tH\x00R\x04name\x88\x01\x01\x12\x1d\n\x07version\x18\x03 \x01(\tH\x01R\x07version\x88\x01\x01\x12:\n\x04type\x18\x04 \x01(\x0e2!.viam.app.packages.v1.PackageTypeH\x02R\x04type\x88\x01\x01\x12$\n\x0binclude_url\x18\x05 \x01(\x08H\x03R\nincludeUrl\x88\x01\x01B\x07\n\x05_nameB\n\n\x08_versionB\x07\n\x05_typeB\x0e\n\x0c_include_url"Q\n\x14ListPackagesResponse\x129\n\x08packages\x18\x01 \x03(\x0b2\x1d.viam.app.packages.v1.PackageR\x08packages*\xb2\x01\n\x0bPackageType\x12\x1c\n\x18PACKAGE_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14PACKAGE_TYPE_ARCHIVE\x10\x01\x12\x19\n\x15PACKAGE_TYPE_ML_MODEL\x10\x02\x12\x17\n\x13PACKAGE_TYPE_MODULE\x10\x03\x12\x19\n\x15PACKAGE_TYPE_SLAM_MAP\x10\x04\x12\x1c\n\x18PACKAGE_TYPE_ML_TRAINING\x10\x052\xa0\x04\n\x0ePackageService\x12\x87\x01\n\rCreatePackage\x12*.viam.app.packages.v1.CreatePackageRequest\x1a+.viam.app.packages.v1.CreatePackageResponse"\x1b\x82\xd3\xe4\x93\x02\x15"\x13/packages/v1/create(\x01\x12\x85\x01\n\rDeletePackage\x12*.viam.app.packages.v1.DeletePackageRequest\x1a+.viam.app.packages.v1.DeletePackageResponse"\x1b\x82\xd3\xe4\x93\x02\x15*\x13/packages/v1/delete\x12y\n\nGetPackage\x12\'.viam.app.packages.v1.GetPackageRequest\x1a(.viam.app.packages.v1.GetPackageResponse"\x18\x82\xd3\xe4\x93\x02\x12\x12\x10/packages/v1/get\x12\x80\x01\n\x0cListPackages\x12).viam.app.packages.v1.ListPackagesRequest\x1a*.viam.app.packages.v1.ListPackagesResponse"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/packages/v1/listB!Z\x1fgo.viam.com/api/app/packages/v1b\x06proto3') diff --git a/src/viam/gen/app/v1/app_pb2.py b/src/viam/gen/app/v1/app_pb2.py index df9130446e..d655a2e14a 100644 --- a/src/viam/gen/app/v1/app_pb2.py +++ b/src/viam/gen/app/v1/app_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/v1/app.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'app/v1/app.proto') _sym_db = _symbol_database.Default() from ...app.mltraining.v1 import ml_training_pb2 as app_dot_mltraining_dot_v1_dot_ml__training__pb2 from ...app.packages.v1 import packages_pb2 as app_dot_packages_dot_v1_dot_packages__pb2 diff --git a/src/viam/gen/app/v1/billing_pb2.py b/src/viam/gen/app/v1/billing_pb2.py index 16dfca275f..47c909537f 100644 --- a/src/viam/gen/app/v1/billing_pb2.py +++ b/src/viam/gen/app/v1/billing_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/v1/billing.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'app/v1/billing.proto') _sym_db = _symbol_database.Default() from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14app/v1/billing.proto\x12\x0bviam.app.v1\x1a\x1fgoogle/protobuf/timestamp.proto"\x8e\x02\n\x0eInvoiceSummary\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12=\n\x0cinvoice_date\x18\x02 \x01(\x0b2\x1a.google.protobuf.TimestampR\x0binvoiceDate\x12%\n\x0einvoice_amount\x18\x03 \x01(\x01R\rinvoiceAmount\x12\x16\n\x06status\x18\x04 \x01(\tR\x06status\x125\n\x08due_date\x18\x05 \x01(\x0b2\x1a.google.protobuf.TimestampR\x07dueDate\x127\n\tpaid_date\x18\x06 \x01(\x0b2\x1a.google.protobuf.TimestampR\x08paidDate"S\n\x11PaymentMethodCard\x12\x14\n\x05brand\x18\x01 \x01(\tR\x05brand\x12(\n\x10last_four_digits\x18\x02 \x01(\tR\x0elastFourDigits"v\n\x10VerificationInfo\x12!\n\x0carrival_date\x18\x01 \x01(\x03R\x0barrivalDate\x12?\n\x1chosted_verification_page_url\x18\x02 \x01(\tR\x19hostedVerificationPageUrl"\xb0\x02\n\x1aPaymentMethodUSBankAccount\x12\x1b\n\tbank_name\x18\x01 \x01(\tR\x08bankName\x12D\n\x1flast_four_digits_account_number\x18\x02 \x01(\tR\x1blastFourDigitsAccountNumber\x12%\n\x0erouting_number\x18\x03 \x01(\tR\rroutingNumber\x12!\n\x0caccount_type\x18\x04 \x01(\tR\x0baccountType\x12O\n\x11verification_info\x18\x05 \x01(\x0b2\x1d.viam.app.v1.VerificationInfoH\x00R\x10verificationInfo\x88\x01\x01B\x14\n\x12_verification_info"4\n\x1bGetCurrentMonthUsageRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId"`\n\tUsageCost\x12?\n\rresource_type\x18\x01 \x01(\x0e2\x1a.viam.app.v1.UsageCostTypeR\x0cresourceType\x12\x12\n\x04cost\x18\x02 \x01(\x01R\x04cost"\xc6\x01\n\x1aResourceUsageCostsBySource\x128\n\x0bsource_type\x18\x01 \x01(\x0e2\x17.viam.app.v1.SourceTypeR\nsourceType\x12Q\n\x14resource_usage_costs\x18\x02 \x01(\x0b2\x1f.viam.app.v1.ResourceUsageCostsR\x12resourceUsageCosts\x12\x1b\n\ttier_name\x18\x03 \x01(\tR\x08tierName"\xcf\x01\n\x12ResourceUsageCosts\x127\n\x0busage_costs\x18\x01 \x03(\x0b2\x16.viam.app.v1.UsageCostR\nusageCosts\x12\x1a\n\x08discount\x18\x02 \x01(\x01R\x08discount\x12.\n\x13total_with_discount\x18\x03 \x01(\x01R\x11totalWithDiscount\x124\n\x16total_without_discount\x18\x04 \x01(\x01R\x14totalWithoutDiscount"\xcd\x07\n\x1cGetCurrentMonthUsageResponse\x129\n\nstart_date\x18\x01 \x01(\x0b2\x1a.google.protobuf.TimestampR\tstartDate\x125\n\x08end_date\x18\x02 \x01(\x0b2\x1a.google.protobuf.TimestampR\x07endDate\x12k\n\x1eresource_usage_costs_by_source\x18\x0e \x03(\x0b2\'.viam.app.v1.ResourceUsageCostsBySourceR\x1aresourceUsageCostsBySource\x12\x1a\n\x08subtotal\x18\x0f \x01(\x01R\x08subtotal\x12;\n\x18cloud_storage_usage_cost\x18\x03 \x01(\x01B\x02\x18\x01R\x15cloudStorageUsageCost\x127\n\x16data_upload_usage_cost\x18\x04 \x01(\x01B\x02\x18\x01R\x13dataUploadUsageCost\x125\n\x15data_egres_usage_cost\x18\x05 \x01(\x01B\x02\x18\x01R\x12dataEgresUsageCost\x12=\n\x19remote_control_usage_cost\x18\x06 \x01(\x01B\x02\x18\x01R\x16remoteControlUsageCost\x12A\n\x1bstandard_compute_usage_cost\x18\x07 \x01(\x01B\x02\x18\x01R\x18standardComputeUsageCost\x12+\n\x0fdiscount_amount\x18\x08 \x01(\x01B\x02\x18\x01R\x0ediscountAmount\x12=\n\x19total_usage_with_discount\x18\t \x01(\x01B\x02\x18\x01R\x16totalUsageWithDiscount\x12C\n\x1ctotal_usage_without_discount\x18\n \x01(\x01B\x02\x18\x01R\x19totalUsageWithoutDiscount\x127\n\x16per_machine_usage_cost\x18\x0b \x01(\x01B\x02\x18\x01R\x13perMachineUsageCost\x12Q\n$binary_data_cloud_storage_usage_cost\x18\x0c \x01(\x01B\x02\x18\x01R\x1fbinaryDataCloudStorageUsageCost\x12F\n\x1eother_cloud_storage_usage_cost\x18\r \x01(\x01B\x02\x18\x01R\x1aotherCloudStorageUsageCost"8\n\x1fGetOrgBillingInformationRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId"\xfa\x02\n GetOrgBillingInformationResponse\x122\n\x04type\x18\x01 \x01(\x0e2\x1e.viam.app.v1.PaymentMethodTypeR\x04type\x12#\n\rbilling_email\x18\x02 \x01(\tR\x0cbillingEmail\x12;\n\x06method\x18\x03 \x01(\x0b2\x1e.viam.app.v1.PaymentMethodCardH\x00R\x06method\x88\x01\x01\x12&\n\x0cbilling_tier\x18\x04 \x01(\tH\x01R\x0bbillingTier\x88\x01\x01\x12a\n\x16method_us_bank_account\x18\x05 \x01(\x0b2\'.viam.app.v1.PaymentMethodUSBankAccountH\x02R\x13methodUsBankAccount\x88\x01\x01B\t\n\x07_methodB\x0f\n\r_billing_tierB\x19\n\x17_method_us_bank_account"2\n\x19GetInvoicesSummaryRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId"\x86\x01\n\x1aGetInvoicesSummaryResponse\x12/\n\x13outstanding_balance\x18\x01 \x01(\x01R\x12outstandingBalance\x127\n\x08invoices\x18\x02 \x03(\x0b2\x1b.viam.app.v1.InvoiceSummaryR\x08invoices"=\n\x14GetInvoicePdfRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06org_id\x18\x02 \x01(\tR\x05orgId"-\n\x15GetInvoicePdfResponse\x12\x14\n\x05chunk\x18\x01 \x01(\x0cR\x05chunk"z\n\x1fSendPaymentRequiredEmailRequest\x12&\n\x0fcustomer_org_id\x18\x01 \x01(\tR\rcustomerOrgId\x12/\n\x14billing_owner_org_id\x18\x02 \x01(\tR\x11billingOwnerOrgId""\n SendPaymentRequiredEmailResponse"!\n\x1fGetAvailableBillingTiersRequest"8\n GetAvailableBillingTiersResponse\x12\x14\n\x05tiers\x18\x01 \x03(\tR\x05tiers"r\n$UpdateOrganizationBillingTierRequest\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12!\n\x0cbilling_tier\x18\x02 \x01(\tR\x0bbillingTier"\'\n%UpdateOrganizationBillingTierResponse"H\n%GetLocationBillingOrganizationRequest\x12\x1f\n\x0blocation_id\x18\x01 \x01(\tR\nlocationId"`\n&GetLocationBillingOrganizationResponse\x126\n\x17billing_organization_id\x18\x01 \x01(\tR\x15billingOrganizationId"\x83\x01\n(UpdateLocationBillingOrganizationRequest\x12\x1f\n\x0blocation_id\x18\x01 \x01(\tR\nlocationId\x126\n\x17billing_organization_id\x18\x02 \x01(\tR\x15billingOrganizationId"+\n)UpdateLocationBillingOrganizationResponse"\xb3\x02\n\x19ChargeOrganizationRequest\x12\'\n\x10org_id_to_charge\x18\x01 \x01(\tR\rorgIdToCharge\x12%\n\x0bdescription\x18\x02 \x01(\tH\x00R\x0bdescription\x88\x01\x01\x12\x1a\n\x08subtotal\x18\x03 \x01(\x01R\x08subtotal\x12\x10\n\x03tax\x18\x04 \x01(\x01R\x03tax\x122\n\x13org_id_for_branding\x18\x05 \x01(\tH\x01R\x10orgIdForBranding\x88\x01\x01\x12<\n\x1adisable_confirmation_email\x18\x06 \x01(\x08R\x18disableConfirmationEmailB\x0e\n\x0c_descriptionB\x16\n\x14_org_id_for_branding";\n\x1aChargeOrganizationResponse\x12\x1d\n\ninvoice_id\x18\x01 \x01(\tR\tinvoiceId"\x93\x02\n(CreateInvoiceAndChargeImmediatelyRequest\x12\'\n\x10org_id_to_charge\x18\x01 \x01(\tR\rorgIdToCharge\x12\x16\n\x06amount\x18\x02 \x01(\x01R\x06amount\x12%\n\x0bdescription\x18\x03 \x01(\tH\x00R\x0bdescription\x88\x01\x01\x122\n\x13org_id_for_branding\x18\x04 \x01(\tH\x01R\x10orgIdForBranding\x88\x01\x01\x12#\n\rdisable_email\x18\x05 \x01(\x08R\x0cdisableEmailB\x0e\n\x0c_descriptionB\x16\n\x14_org_id_for_branding"J\n)CreateInvoiceAndChargeImmediatelyResponse\x12\x1d\n\ninvoice_id\x18\x01 \x01(\tR\tinvoiceId*}\n\x11PaymentMethodType\x12#\n\x1fPAYMENT_METHOD_TYPE_UNSPECIFIED\x10\x00\x12\x1c\n\x18PAYMENT_METHOD_TYPE_CARD\x10\x01\x12%\n!PAYMENT_METHOD_TYPE_USBANKACCOUNT\x10\x02*\x84\t\n\rUsageCostType\x12\x1f\n\x1bUSAGE_COST_TYPE_UNSPECIFIED\x10\x00\x12#\n\x1bUSAGE_COST_TYPE_DATA_UPLOAD\x10\x01\x1a\x02\x08\x01\x12#\n\x1bUSAGE_COST_TYPE_DATA_EGRESS\x10\x02\x1a\x02\x08\x01\x12"\n\x1eUSAGE_COST_TYPE_REMOTE_CONTROL\x10\x03\x12$\n USAGE_COST_TYPE_STANDARD_COMPUTE\x10\x04\x12%\n\x1dUSAGE_COST_TYPE_CLOUD_STORAGE\x10\x05\x1a\x02\x08\x01\x12-\n)USAGE_COST_TYPE_BINARY_DATA_CLOUD_STORAGE\x10\x06\x12+\n#USAGE_COST_TYPE_OTHER_CLOUD_STORAGE\x10\x07\x1a\x02\x08\x01\x12\x1f\n\x1bUSAGE_COST_TYPE_PER_MACHINE\x10\x08\x12(\n$USAGE_COST_TYPE_TRIGGER_NOTIFICATION\x10\t\x12.\n*USAGE_COST_TYPE_TABULAR_DATA_CLOUD_STORAGE\x10\n\x120\n,USAGE_COST_TYPE_CONFIG_HISTORY_CLOUD_STORAGE\x10\x0b\x12&\n"USAGE_COST_TYPE_LOGS_CLOUD_STORAGE\x10\x0c\x12/\n+USAGE_COST_TYPE_TRAINING_LOGS_CLOUD_STORAGE\x10\r\x12*\n&USAGE_COST_TYPE_PACKAGES_CLOUD_STORAGE\x10\x0e\x12&\n"USAGE_COST_TYPE_BINARY_DATA_UPLOAD\x10\x0f\x12\'\n#USAGE_COST_TYPE_TABULAR_DATA_UPLOAD\x10\x10\x12\x1f\n\x1bUSAGE_COST_TYPE_LOGS_UPLOAD\x10\x11\x12&\n"USAGE_COST_TYPE_BINARY_DATA_EGRESS\x10\x12\x12\'\n#USAGE_COST_TYPE_TABULAR_DATA_EGRESS\x10\x13\x12\x1f\n\x1bUSAGE_COST_TYPE_LOGS_EGRESS\x10\x14\x12(\n$USAGE_COST_TYPE_TRAINING_LOGS_EGRESS\x10\x15\x127\n3USAGE_COST_TYPE_TABULAR_DATA_DATABASE_CLOUD_STORAGE\x10\x16\x121\n-USAGE_COST_TYPE_TABULAR_DATA_DATABASE_COMPUTE\x10\x17\x123\n/USAGE_COST_TYPE_BINARY_DATA_CROSS_REGION_EGRESS\x10\x18\x12/\n+USAGE_COST_TYPE_PIPELINE_SINK_CLOUD_STORAGE\x10\x19\x12)\n%USAGE_COST_TYPE_PIPELINE_SINK_COMPUTE\x10\x1a*X\n\nSourceType\x12\x1b\n\x17SOURCE_TYPE_UNSPECIFIED\x10\x00\x12\x13\n\x0fSOURCE_TYPE_ORG\x10\x01\x12\x18\n\x14SOURCE_TYPE_FRAGMENT\x10\x022\xcf\n\n\x0eBillingService\x12k\n\x14GetCurrentMonthUsage\x12(.viam.app.v1.GetCurrentMonthUsageRequest\x1a).viam.app.v1.GetCurrentMonthUsageResponse\x12w\n\x18GetOrgBillingInformation\x12,.viam.app.v1.GetOrgBillingInformationRequest\x1a-.viam.app.v1.GetOrgBillingInformationResponse\x12e\n\x12GetInvoicesSummary\x12&.viam.app.v1.GetInvoicesSummaryRequest\x1a\'.viam.app.v1.GetInvoicesSummaryResponse\x12X\n\rGetInvoicePdf\x12!.viam.app.v1.GetInvoicePdfRequest\x1a".viam.app.v1.GetInvoicePdfResponse0\x01\x12w\n\x18SendPaymentRequiredEmail\x12,.viam.app.v1.SendPaymentRequiredEmailRequest\x1a-.viam.app.v1.SendPaymentRequiredEmailResponse\x12w\n\x18GetAvailableBillingTiers\x12,.viam.app.v1.GetAvailableBillingTiersRequest\x1a-.viam.app.v1.GetAvailableBillingTiersResponse\x12\x86\x01\n\x1dUpdateOrganizationBillingTier\x121.viam.app.v1.UpdateOrganizationBillingTierRequest\x1a2.viam.app.v1.UpdateOrganizationBillingTierResponse\x12\x89\x01\n\x1eGetLocationBillingOrganization\x122.viam.app.v1.GetLocationBillingOrganizationRequest\x1a3.viam.app.v1.GetLocationBillingOrganizationResponse\x12\x92\x01\n!UpdateLocationBillingOrganization\x125.viam.app.v1.UpdateLocationBillingOrganizationRequest\x1a6.viam.app.v1.UpdateLocationBillingOrganizationResponse\x12e\n\x12ChargeOrganization\x12&.viam.app.v1.ChargeOrganizationRequest\x1a\'.viam.app.v1.ChargeOrganizationResponse\x12\x92\x01\n!CreateInvoiceAndChargeImmediately\x125.viam.app.v1.CreateInvoiceAndChargeImmediatelyRequest\x1a6.viam.app.v1.CreateInvoiceAndChargeImmediatelyResponseB\x18Z\x16go.viam.com/api/app/v1b\x06proto3') diff --git a/src/viam/gen/app/v1/end_user_pb2.py b/src/viam/gen/app/v1/end_user_pb2.py index 98c7477815..cc072de4da 100644 --- a/src/viam/gen/app/v1/end_user_pb2.py +++ b/src/viam/gen/app/v1/end_user_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/v1/end_user.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'app/v1/end_user.proto') _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15app/v1/end_user.proto\x12\x0bviam.app.v1"\x18\n\x16IsLegalAcceptedRequest"@\n\x17IsLegalAcceptedResponse\x12%\n\x0eaccepted_legal\x18\x01 \x01(\x08R\racceptedLegal"\x14\n\x12AcceptLegalRequest"\x15\n\x13AcceptLegalResponse"\xcb\x01\n\x1eRegisterAuthApplicationRequest\x12)\n\x10application_name\x18\x01 \x01(\tR\x0fapplicationName\x12\x15\n\x06org_id\x18\x02 \x01(\tR\x05orgId\x12\x1f\n\x0borigin_uris\x18\x03 \x03(\tR\noriginUris\x12#\n\rredirect_uris\x18\x04 \x03(\tR\x0credirectUris\x12\x1d\n\nlogout_uri\x18\x05 \x01(\tR\tlogoutUri:\x02\x18\x01"\x9c\x01\n\x1fRegisterAuthApplicationResponse\x12%\n\x0eapplication_id\x18\x01 \x01(\tR\rapplicationId\x12)\n\x10application_name\x18\x02 \x01(\tR\x0fapplicationName\x12#\n\rclient_secret\x18\x03 \x01(\tR\x0cclientSecret:\x02\x18\x01"\xf0\x01\n\x1cUpdateAuthApplicationRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12%\n\x0eapplication_id\x18\x02 \x01(\tR\rapplicationId\x12)\n\x10application_name\x18\x03 \x01(\tR\x0fapplicationName\x12\x1f\n\x0borigin_uris\x18\x04 \x03(\tR\noriginUris\x12#\n\rredirect_uris\x18\x05 \x03(\tR\x0credirectUris\x12\x1d\n\nlogout_uri\x18\x06 \x01(\tR\tlogoutUri:\x02\x18\x01"u\n\x1dUpdateAuthApplicationResponse\x12%\n\x0eapplication_id\x18\x01 \x01(\tR\rapplicationId\x12)\n\x10application_name\x18\x02 \x01(\tR\x0fapplicationName:\x02\x18\x01"]\n\x19GetAuthApplicationRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12%\n\x0eapplication_id\x18\x02 \x01(\tR\rapplicationId:\x02\x18\x01"\xfc\x01\n\x1aGetAuthApplicationResponse\x12%\n\x0eapplication_id\x18\x01 \x01(\tR\rapplicationId\x12)\n\x10application_name\x18\x02 \x01(\tR\x0fapplicationName\x12#\n\rclient_secret\x18\x03 \x01(\tR\x0cclientSecret\x12\x1f\n\x0borigin_uris\x18\x04 \x03(\tR\noriginUris\x12#\n\rredirect_uris\x18\x05 \x03(\tR\x0credirectUris\x12\x1d\n\nlogout_uri\x18\x06 \x01(\tR\tlogoutUri:\x02\x18\x012\x9c\x04\n\x0eEndUserService\x12\\\n\x0fIsLegalAccepted\x12#.viam.app.v1.IsLegalAcceptedRequest\x1a$.viam.app.v1.IsLegalAcceptedResponse\x12P\n\x0bAcceptLegal\x12\x1f.viam.app.v1.AcceptLegalRequest\x1a .viam.app.v1.AcceptLegalResponse\x12y\n\x17RegisterAuthApplication\x12+.viam.app.v1.RegisterAuthApplicationRequest\x1a,.viam.app.v1.RegisterAuthApplicationResponse"\x03\x88\x02\x01\x12s\n\x15UpdateAuthApplication\x12).viam.app.v1.UpdateAuthApplicationRequest\x1a*.viam.app.v1.UpdateAuthApplicationResponse"\x03\x88\x02\x01\x12j\n\x12GetAuthApplication\x12&.viam.app.v1.GetAuthApplicationRequest\x1a\'.viam.app.v1.GetAuthApplicationResponse"\x03\x88\x02\x01B\x18Z\x16go.viam.com/api/app/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/app/v1/robot_pb2.py b/src/viam/gen/app/v1/robot_pb2.py index 0427a948fc..fae4e2959a 100644 --- a/src/viam/gen/app/v1/robot_pb2.py +++ b/src/viam/gen/app/v1/robot_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'app/v1/robot.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'app/v1/robot.proto') _sym_db = _symbol_database.Default() from ...common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 diff --git a/src/viam/gen/common/v1/common_pb2.py b/src/viam/gen/common/v1/common_pb2.py index 8c1e07394e..5a948ae421 100644 --- a/src/viam/gen/common/v1/common_pb2.py +++ b/src/viam/gen/common/v1/common_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'common/v1/common.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'common/v1/common.proto') _sym_db = _symbol_database.Default() from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 diff --git a/src/viam/gen/component/arm/v1/arm_grpc.py b/src/viam/gen/component/arm/v1/arm_grpc.py index cc9c88e66d..45bac9ed78 100644 --- a/src/viam/gen/component/arm/v1/arm_grpc.py +++ b/src/viam/gen/component/arm/v1/arm_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/arm/v1/arm_pb2.py b/src/viam/gen/component/arm/v1/arm_pb2.py index 86eacac2fd..8310bb4af1 100644 --- a/src/viam/gen/component/arm/v1/arm_pb2.py +++ b/src/viam/gen/component/arm/v1/arm_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/arm/v1/arm.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/arm/v1/arm.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1acomponent/arm/v1/arm.proto\x12\x15viam.component.arm.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"Z\n\x15GetEndPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"B\n\x16GetEndPositionResponse\x12(\n\x04pose\x18\x01 \x01(\x0b2\x14.viam.common.v1.PoseR\x04pose"(\n\x0eJointPositions\x12\x16\n\x06values\x18\x01 \x03(\x01R\x06values"]\n\x18GetJointPositionsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"`\n\x19GetJointPositionsResponse\x12C\n\tpositions\x18\x01 \x01(\x0b2%.viam.component.arm.v1.JointPositionsR\tpositions"\x80\x01\n\x15MoveToPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12$\n\x02to\x18\x02 \x01(\x0b2\x14.viam.common.v1.PoseR\x02to\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x18\n\x16MoveToPositionResponse"\xa5\x01\n\x1bMoveToJointPositionsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12C\n\tpositions\x18\x02 \x01(\x0b2%.viam.component.arm.v1.JointPositionsR\tpositions\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x1e\n\x1cMoveToJointPositionsResponse"\xf9\x01\n MoveThroughJointPositionsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12C\n\tpositions\x18\x02 \x03(\x0b2%.viam.component.arm.v1.JointPositionsR\tpositions\x12A\n\x07options\x18\x03 \x01(\x0b2".viam.component.arm.v1.MoveOptionsH\x00R\x07options\x88\x01\x01\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraB\n\n\x08_options"#\n!MoveThroughJointPositionsResponse"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"\xae\x01\n\x06Status\x127\n\x0cend_position\x18\x01 \x01(\x0b2\x14.viam.common.v1.PoseR\x0bendPosition\x12N\n\x0fjoint_positions\x18\x02 \x01(\x0b2%.viam.component.arm.v1.JointPositionsR\x0ejointPositions\x12\x1b\n\tis_moving\x18\x03 \x01(\x08R\x08isMoving"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving"\xa8\x02\n\x0bMoveOptions\x123\n\x14max_vel_degs_per_sec\x18\x01 \x01(\x01H\x00R\x10maxVelDegsPerSec\x88\x01\x01\x125\n\x15max_acc_degs_per_sec2\x18\x02 \x01(\x01H\x01R\x11maxAccDegsPerSec2\x88\x01\x01\x12;\n\x1bmax_vel_degs_per_sec_joints\x18\x03 \x03(\x01R\x16maxVelDegsPerSecJoints\x12=\n\x1cmax_acc_degs_per_sec2_joints\x18\x04 \x03(\x01R\x17maxAccDegsPerSec2JointsB\x17\n\x15_max_vel_degs_per_secB\x18\n\x16_max_acc_degs_per_sec22\xff\r\n\nArmService\x12\xa1\x01\n\x0eGetEndPosition\x12,.viam.component.arm.v1.GetEndPositionRequest\x1a-.viam.component.arm.v1.GetEndPositionResponse"2\x82\xd3\xe4\x93\x02,\x12*/viam/api/v1/component/arm/{name}/position\x12\xa5\x01\n\x0eMoveToPosition\x12,.viam.component.arm.v1.MoveToPositionRequest\x1a-.viam.component.arm.v1.MoveToPositionResponse"6\xa0\x92)\x01\x82\xd3\xe4\x93\x02,\x1a*/viam/api/v1/component/arm/{name}/position\x12\xb1\x01\n\x11GetJointPositions\x12/.viam.component.arm.v1.GetJointPositionsRequest\x1a0.viam.component.arm.v1.GetJointPositionsResponse"9\x82\xd3\xe4\x93\x023\x121/viam/api/v1/component/arm/{name}/joint_positions\x12\xbe\x01\n\x14MoveToJointPositions\x122.viam.component.arm.v1.MoveToJointPositionsRequest\x1a3.viam.component.arm.v1.MoveToJointPositionsResponse"=\xa0\x92)\x01\x82\xd3\xe4\x93\x023\x1a1/viam/api/v1/component/arm/{name}/joint_positions\x12\xda\x01\n\x19MoveThroughJointPositions\x127.viam.component.arm.v1.MoveThroughJointPositionsRequest\x1a8.viam.component.arm.v1.MoveThroughJointPositionsResponse"J\xa0\x92)\x01\x82\xd3\xe4\x93\x02@">/viam/api/v1/component/arm/{name}/move_through_joint_positions\x12\x7f\n\x04Stop\x12".viam.component.arm.v1.StopRequest\x1a#.viam.component.arm.v1.StopResponse".\x82\xd3\xe4\x93\x02("&/viam/api/v1/component/arm/{name}/stop\x12\x90\x01\n\x08IsMoving\x12&.viam.component.arm.v1.IsMovingRequest\x1a\'.viam.component.arm.v1.IsMovingResponse"3\x82\xd3\xe4\x93\x02-\x12+/viam/api/v1/component/arm/{name}/is_moving\x12\x86\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"4\x82\xd3\xe4\x93\x02.",/viam/api/v1/component/arm/{name}/do_command\x12\x92\x01\n\rGetKinematics\x12$.viam.common.v1.GetKinematicsRequest\x1a%.viam.common.v1.GetKinematicsResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/arm/{name}/kinematics\x12\x92\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/arm/{name}/geometries\x12\x8b\x01\n\x0bGet3DModels\x12".viam.common.v1.Get3DModelsRequest\x1a#.viam.common.v1.Get3DModelsResponse"3\x82\xd3\xe4\x93\x02-\x12+/viam/api/v1/component/arm/{name}/3d_modelsB=\n\x19com.viam.component.arm.v1Z go.viam.com/api/component/arm/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/audioin/v1/audioin_grpc.py b/src/viam/gen/component/audioin/v1/audioin_grpc.py index 0c419768e6..0346d7df08 100644 --- a/src/viam/gen/component/audioin/v1/audioin_grpc.py +++ b/src/viam/gen/component/audioin/v1/audioin_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/audioin/v1/audioin_pb2.py b/src/viam/gen/component/audioin/v1/audioin_pb2.py index 9a553dbdb5..0f2bbf8827 100644 --- a/src/viam/gen/component/audioin/v1/audioin_pb2.py +++ b/src/viam/gen/component/audioin/v1/audioin_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/audioin/v1/audioin.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/audioin/v1/audioin.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"component/audioin/v1/audioin.proto\x12\x19viam.component.audioin.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"\xfa\x01\n\x0fGetAudioRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12)\n\x10duration_seconds\x18\x02 \x01(\x02R\x0fdurationSeconds\x12\x14\n\x05codec\x18\x03 \x01(\tR\x05codec\x12\x1d\n\nrequest_id\x18\x04 \x01(\tR\trequestId\x12D\n\x1eprevious_timestamp_nanoseconds\x18\x05 \x01(\x03R\x1cpreviousTimestampNanoseconds\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"n\n\x10GetAudioResponse\x12;\n\x05audio\x18\x01 \x01(\x0b2%.viam.component.audioin.v1.AudioChunkR\x05audio\x12\x1d\n\nrequest_id\x18\x02 \x01(\tR\trequestId"\xfd\x01\n\nAudioChunk\x12\x1d\n\naudio_data\x18\x01 \x01(\x0cR\taudioData\x128\n\naudio_info\x18\x02 \x01(\x0b2\x19.viam.common.v1.AudioInfoR\taudioInfo\x12>\n\x1bstart_timestamp_nanoseconds\x18\x03 \x01(\x03R\x19startTimestampNanoseconds\x12:\n\x19end_timestamp_nanoseconds\x18\x04 \x01(\x03R\x17endTimestampNanoseconds\x12\x1a\n\x08sequence\x18\x05 \x01(\x05R\x08sequence2\xee\x04\n\x0eAudioInService\x12\x9e\x01\n\x08GetAudio\x12*.viam.component.audioin.v1.GetAudioRequest\x1a+.viam.component.audioin.v1.GetAudioResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/audioin/{name}/get_audio0\x01\x12\x96\x01\n\rGetProperties\x12$.viam.common.v1.GetPropertiesRequest\x1a%.viam.common.v1.GetPropertiesResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/audioin/{name}/properties\x12\x88\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/service/audioin/{name}/do_command\x12\x96\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/audioin/{name}/geometriesBE\n\x1dcom.viam.component.audioin.v1Z$go.viam.com/api/component/audioin/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/audioout/v1/audioout_grpc.py b/src/viam/gen/component/audioout/v1/audioout_grpc.py index 8769b3ca1c..d5c1e9ed23 100644 --- a/src/viam/gen/component/audioout/v1/audioout_grpc.py +++ b/src/viam/gen/component/audioout/v1/audioout_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/audioout/v1/audioout_pb2.py b/src/viam/gen/component/audioout/v1/audioout_pb2.py index cf5331d883..bc444852f3 100644 --- a/src/viam/gen/component/audioout/v1/audioout_pb2.py +++ b/src/viam/gen/component/audioout/v1/audioout_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/audioout/v1/audioout.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/audioout/v1/audioout.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$component/audioout/v1/audioout.proto\x12\x1aviam.component.audioout.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"\xa9\x01\n\x0bPlayRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1d\n\naudio_data\x18\x02 \x01(\x0cR\taudioData\x128\n\naudio_info\x18\x03 \x01(\x0b2\x19.viam.common.v1.AudioInfoR\taudioInfo\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cPlayResponse2\xe2\x04\n\x0fAudioOutService\x12\x8e\x01\n\x04Play\x12\'.viam.component.audioout.v1.PlayRequest\x1a(.viam.component.audioout.v1.PlayResponse"3\x82\xd3\xe4\x93\x02-"+/viam/api/v1/component/audioout/{name}/play\x12\x97\x01\n\rGetProperties\x12$.viam.common.v1.GetPropertiesRequest\x1a%.viam.common.v1.GetPropertiesResponse"9\x82\xd3\xe4\x93\x023\x121/viam/api/v1/component/audioout/{name}/properties\x12\x89\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"7\x82\xd3\xe4\x93\x021"//viam/api/v1/service/audioout/{name}/do_command\x12\x97\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"9\x82\xd3\xe4\x93\x023\x121/viam/api/v1/component/audioout/{name}/geometriesBG\n\x1ecom.viam.component.audioout.v1Z%go.viam.com/api/component/audioout/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/base/v1/base_grpc.py b/src/viam/gen/component/base/v1/base_grpc.py index b776394a33..74f8f2e909 100644 --- a/src/viam/gen/component/base/v1/base_grpc.py +++ b/src/viam/gen/component/base/v1/base_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/base/v1/base_pb2.py b/src/viam/gen/component/base/v1/base_pb2.py index 4d891f4f9b..a726a7254d 100644 --- a/src/viam/gen/component/base/v1/base_pb2.py +++ b/src/viam/gen/component/base/v1/base_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/base/v1/base.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/base/v1/base.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ccomponent/base/v1/base.proto\x12\x16viam.component.base.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"\x97\x01\n\x13MoveStraightRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x0bdistance_mm\x18\x02 \x01(\x03R\ndistanceMm\x12\x1c\n\nmm_per_sec\x18\x03 \x01(\x01R\x08mmPerSec\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x16\n\x14MoveStraightResponse"\x8f\x01\n\x0bSpinRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\tangle_deg\x18\x02 \x01(\x01R\x08angleDeg\x12 \n\x0cdegs_per_sec\x18\x03 \x01(\x01R\ndegsPerSec\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cSpinResponse"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"\xb8\x01\n\x0fSetPowerRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12/\n\x06linear\x18\x02 \x01(\x0b2\x17.viam.common.v1.Vector3R\x06linear\x121\n\x07angular\x18\x03 \x01(\x0b2\x17.viam.common.v1.Vector3R\x07angular\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x12\n\x10SetPowerResponse"\xbb\x01\n\x12SetVelocityRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12/\n\x06linear\x18\x02 \x01(\x0b2\x17.viam.common.v1.Vector3R\x06linear\x121\n\x07angular\x18\x03 \x01(\x0b2\x17.viam.common.v1.Vector3R\x07angular\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x15\n\x13SetVelocityResponse"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving"Y\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xac\x01\n\x15GetPropertiesResponse\x12!\n\x0cwidth_meters\x18\x01 \x01(\x01R\x0bwidthMeters\x122\n\x15turning_radius_meters\x18\x02 \x01(\x01R\x13turningRadiusMeters\x12<\n\x1awheel_circumference_meters\x18\x03 \x01(\x01R\x18wheelCircumferenceMeters2\xe1\n\n\x0bBaseService\x12\xa7\x01\n\x0cMoveStraight\x12+.viam.component.base.v1.MoveStraightRequest\x1a,.viam.component.base.v1.MoveStraightResponse"<\xa0\x92)\x01\x82\xd3\xe4\x93\x022"0/viam/api/v1/component/base/{name}/move_straight\x12\x86\x01\n\x04Spin\x12#.viam.component.base.v1.SpinRequest\x1a$.viam.component.base.v1.SpinResponse"3\xa0\x92)\x01\x82\xd3\xe4\x93\x02)"\'/viam/api/v1/component/base/{name}/spin\x12\x97\x01\n\x08SetPower\x12\'.viam.component.base.v1.SetPowerRequest\x1a(.viam.component.base.v1.SetPowerResponse"8\xa0\x92)\x01\x82\xd3\xe4\x93\x02.",/viam/api/v1/component/base/{name}/set_power\x12\xa3\x01\n\x0bSetVelocity\x12*.viam.component.base.v1.SetVelocityRequest\x1a+.viam.component.base.v1.SetVelocityResponse";\xa0\x92)\x01\x82\xd3\xe4\x93\x021"//viam/api/v1/component/base/{name}/set_velocity\x12\x82\x01\n\x04Stop\x12#.viam.component.base.v1.StopRequest\x1a$.viam.component.base.v1.StopResponse"/\x82\xd3\xe4\x93\x02)"\'/viam/api/v1/component/base/{name}/stop\x12\x93\x01\n\x08IsMoving\x12\'.viam.component.base.v1.IsMovingRequest\x1a(.viam.component.base.v1.IsMovingResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/base/{name}/is_moving\x12\x87\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"5\x82\xd3\xe4\x93\x02/"-/viam/api/v1/component/base/{name}/do_command\x12\x93\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"5\x82\xd3\xe4\x93\x02/\x12-/viam/api/v1/component/base/{name}/geometries\x12\xa3\x01\n\rGetProperties\x12,.viam.component.base.v1.GetPropertiesRequest\x1a-.viam.component.base.v1.GetPropertiesResponse"5\x82\xd3\xe4\x93\x02/\x12-/viam/api/v1/component/base/{name}/propertiesB?\n\x1acom.viam.component.base.v1Z!go.viam.com/api/component/base/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/board/v1/board_grpc.py b/src/viam/gen/component/board/v1/board_grpc.py index d74dabe813..8e061fc612 100644 --- a/src/viam/gen/component/board/v1/board_grpc.py +++ b/src/viam/gen/component/board/v1/board_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.duration_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/board/v1/board_pb2.py b/src/viam/gen/component/board/v1/board_pb2.py index f58f117825..fc43d00f94 100644 --- a/src/viam/gen/component/board/v1/board_pb2.py +++ b/src/viam/gen/component/board/v1/board_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/board/v1/board.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/board/v1/board.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ecomponent/board/v1/board.proto\x12\x17viam.component.board.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto"\xb9\x02\n\x06Status\x12F\n\x07analogs\x18\x01 \x03(\x0b2,.viam.component.board.v1.Status.AnalogsEntryR\x07analogs\x12e\n\x12digital_interrupts\x18\x02 \x03(\x0b26.viam.component.board.v1.Status.DigitalInterruptsEntryR\x11digitalInterrupts\x1a:\n\x0cAnalogsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\x1aD\n\x16DigitalInterruptsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05value:\x028\x01"y\n\x0eSetGPIORequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03pin\x18\x02 \x01(\tR\x03pin\x12\x12\n\x04high\x18\x03 \x01(\x08R\x04high\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x11\n\x0fSetGPIOResponse"e\n\x0eGetGPIORequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03pin\x18\x02 \x01(\tR\x03pin\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"%\n\x0fGetGPIOResponse\x12\x12\n\x04high\x18\x01 \x01(\x08R\x04high"a\n\nPWMRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03pin\x18\x02 \x01(\tR\x03pin\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"3\n\x0bPWMResponse\x12$\n\x0eduty_cycle_pct\x18\x01 \x01(\x01R\x0cdutyCyclePct"\x8a\x01\n\rSetPWMRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03pin\x18\x02 \x01(\tR\x03pin\x12$\n\x0eduty_cycle_pct\x18\x03 \x01(\x01R\x0cdutyCyclePct\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x10\n\x0eSetPWMResponse"j\n\x13PWMFrequencyRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03pin\x18\x02 \x01(\tR\x03pin\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"9\n\x14PWMFrequencyResponse\x12!\n\x0cfrequency_hz\x18\x01 \x01(\x04R\x0bfrequencyHz"\x90\x01\n\x16SetPWMFrequencyRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03pin\x18\x02 \x01(\tR\x03pin\x12!\n\x0cfrequency_hz\x18\x03 \x01(\x04R\x0bfrequencyHz\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x19\n\x17SetPWMFrequencyResponse"\x95\x01\n\x17ReadAnalogReaderRequest\x12\x1d\n\nboard_name\x18\x01 \x01(\tR\tboardName\x12,\n\x12analog_reader_name\x18\x02 \x01(\tR\x10analogReaderName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x87\x01\n\x18ReadAnalogReaderResponse\x12\x14\n\x05value\x18\x01 \x01(\x05R\x05value\x12\x1b\n\tmin_range\x18\x02 \x01(\x02R\x08minRange\x12\x1b\n\tmax_range\x18\x03 \x01(\x02R\x08maxRange\x12\x1b\n\tstep_size\x18\x04 \x01(\x02R\x08stepSize"\x7f\n\x12WriteAnalogRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03pin\x18\x02 \x01(\tR\x03pin\x12\x14\n\x05value\x18\x03 \x01(\x05R\x05value\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x15\n\x13WriteAnalogResponse"\xa5\x01\n\x1fGetDigitalInterruptValueRequest\x12\x1d\n\nboard_name\x18\x01 \x01(\tR\tboardName\x124\n\x16digital_interrupt_name\x18\x02 \x01(\tR\x14digitalInterruptName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"8\n GetDigitalInterruptValueResponse\x12\x14\n\x05value\x18\x01 \x01(\x03R\x05value"t\n\x12StreamTicksRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\tpin_names\x18\x02 \x03(\tR\x08pinNames\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"X\n\x13StreamTicksResponse\x12\x19\n\x08pin_name\x18\x01 \x01(\tR\x07pinName\x12\x12\n\x04time\x18\x02 \x01(\x04R\x04time\x12\x12\n\x04high\x18\x03 \x01(\x08R\x04high"\xe4\x01\n\x13SetPowerModeRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12A\n\npower_mode\x18\x02 \x01(\x0e2".viam.component.board.v1.PowerModeR\tpowerMode\x12:\n\x08duration\x18\x03 \x01(\x0b2\x19.google.protobuf.DurationH\x00R\x08duration\x88\x01\x01\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraB\x0b\n\t_duration"\x16\n\x14SetPowerModeResponse*[\n\tPowerMode\x12\x1a\n\x16POWER_MODE_UNSPECIFIED\x10\x00\x12\x15\n\x11POWER_MODE_NORMAL\x10\x01\x12\x1b\n\x17POWER_MODE_OFFLINE_DEEP\x10\x022\xf0\x10\n\x0cBoardService\x12\x8e\x01\n\x07SetGPIO\x12\'.viam.component.board.v1.SetGPIORequest\x1a(.viam.component.board.v1.SetGPIOResponse"0\x82\xd3\xe4\x93\x02*\x1a(/viam/api/v1/component/board/{name}/gpio\x12\x8e\x01\n\x07GetGPIO\x12\'.viam.component.board.v1.GetGPIORequest\x1a(.viam.component.board.v1.GetGPIOResponse"0\x82\xd3\xe4\x93\x02*\x12(/viam/api/v1/component/board/{name}/gpio\x12\x81\x01\n\x03PWM\x12#.viam.component.board.v1.PWMRequest\x1a$.viam.component.board.v1.PWMResponse"/\x82\xd3\xe4\x93\x02)\x12\'/viam/api/v1/component/board/{name}/pwm\x12\x8a\x01\n\x06SetPWM\x12&.viam.component.board.v1.SetPWMRequest\x1a\'.viam.component.board.v1.SetPWMResponse"/\x82\xd3\xe4\x93\x02)\x1a\'/viam/api/v1/component/board/{name}/pwm\x12\xa1\x01\n\x0cPWMFrequency\x12,.viam.component.board.v1.PWMFrequencyRequest\x1a-.viam.component.board.v1.PWMFrequencyResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/board/{name}/pwm_freq\x12\xaa\x01\n\x0fSetPWMFrequency\x12/.viam.component.board.v1.SetPWMFrequencyRequest\x1a0.viam.component.board.v1.SetPWMFrequencyResponse"4\x82\xd3\xe4\x93\x02.\x1a,/viam/api/v1/component/board/{name}/pwm_freq\x12\x88\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/component/board/{name}/do_command\x12\xd2\x01\n\x10ReadAnalogReader\x120.viam.component.board.v1.ReadAnalogReaderRequest\x1a1.viam.component.board.v1.ReadAnalogReaderResponse"Y\x82\xd3\xe4\x93\x02S\x12Q/viam/api/v1/component/board/{board_name}/analog_reader/{analog_reader_name}/read\x12\xa2\x01\n\x0bWriteAnalog\x12+.viam.component.board.v1.WriteAnalogRequest\x1a,.viam.component.board.v1.WriteAnalogResponse"8\x82\xd3\xe4\x93\x022\x1a0/viam/api/v1/component/board/{name}/analog_write\x12\xf3\x01\n\x18GetDigitalInterruptValue\x128.viam.component.board.v1.GetDigitalInterruptValueRequest\x1a9.viam.component.board.v1.GetDigitalInterruptValueResponse"b\x82\xd3\xe4\x93\x02\\\x12Z/viam/api/v1/component/board/{board_name}/digital_interrupt/{digital_interrupt_name}/value\x12\xa3\x01\n\x0bStreamTicks\x12+.viam.component.board.v1.StreamTicksRequest\x1a,.viam.component.board.v1.StreamTicksResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/board/{name}/tick_stream0\x01\x12\xa3\x01\n\x0cSetPowerMode\x12,.viam.component.board.v1.SetPowerModeRequest\x1a-.viam.component.board.v1.SetPowerModeResponse"6\x82\xd3\xe4\x93\x020\x1a./viam/api/v1/component/board/{name}/power_mode\x12\x94\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"6\x82\xd3\xe4\x93\x020\x12./viam/api/v1/component/board/{name}/geometriesBA\n\x1bcom.viam.component.board.v1Z"go.viam.com/api/component/board/v1b\x06proto3') diff --git a/src/viam/gen/component/button/v1/button_grpc.py b/src/viam/gen/component/button/v1/button_grpc.py index cab722153f..f36d03d0bb 100644 --- a/src/viam/gen/component/button/v1/button_grpc.py +++ b/src/viam/gen/component/button/v1/button_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/button/v1/button_pb2.py b/src/viam/gen/component/button/v1/button_pb2.py index 788f352e9a..09d9b7b15a 100644 --- a/src/viam/gen/component/button/v1/button_pb2.py +++ b/src/viam/gen/component/button/v1/button_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/button/v1/button.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/button/v1/button.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n component/button/v1/button.proto\x12\x18viam.component.button.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"P\n\x0bPushRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cPushResponse2\xaa\x02\n\rButtonService\x12\x8c\x01\n\x04Push\x12%.viam.component.button.v1.PushRequest\x1a&.viam.component.button.v1.PushResponse"5\xa0\x92)\x01\x82\xd3\xe4\x93\x02+\x1a)/viam/api/v1/component/button/{name}/push\x12\x89\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"7\x82\xd3\xe4\x93\x021"//viam/api/v1/component/button/{name}/do_commandBC\n\x1ccom.viam.component.button.v1Z#go.viam.com/api/component/button/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/camera/v1/camera_grpc.py b/src/viam/gen/component/camera/v1/camera_grpc.py index 9e26d3bce0..b4856a4f10 100644 --- a/src/viam/gen/component/camera/v1/camera_grpc.py +++ b/src/viam/gen/component/camera/v1/camera_grpc.py @@ -7,7 +7,8 @@ import grpclib.server from .... import app from .... import common -from .... import google +import google.api.annotations_pb2 +import google.api.httpbody_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/camera/v1/camera_pb2.py b/src/viam/gen/component/camera/v1/camera_pb2.py index db682b5efe..e58128db48 100644 --- a/src/viam/gen/component/camera/v1/camera_pb2.py +++ b/src/viam/gen/component/camera/v1/camera_pb2.py @@ -4,12 +4,12 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/camera/v1/camera.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/camera/v1/camera.proto') _sym_db = _symbol_database.Default() from ....app.data.v1 import data_pb2 as app_dot_data_dot_v1_dot_data__pb2 from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 -from ....google.api import httpbody_pb2 as google_dot_api_dot_httpbody__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import httpbody_pb2 as google_dot_api_dot_httpbody__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n component/camera/v1/camera.proto\x12\x18viam.component.camera.v1\x1a\x16app/data/v1/data.proto\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x19google/api/httpbody.proto\x1a\x1cgoogle/protobuf/struct.proto"q\n\x0fGetImageRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\tmime_type\x18\x02 \x01(\tR\x08mimeType\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"E\n\x10GetImageResponse\x12\x1b\n\tmime_type\x18\x01 \x01(\tR\x08mimeType\x12\x14\n\x05image\x18\x02 \x01(\x0cR\x05image"\x85\x01\n\x10GetImagesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12.\n\x13filter_source_names\x18\x02 \x03(\tR\x11filterSourceNames\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x9d\x01\n\x11GetImagesResponse\x127\n\x06images\x18\x01 \x03(\x0b2\x1f.viam.component.camera.v1.ImageR\x06images\x12O\n\x11response_metadata\x18\xa4\x92\x05 \x01(\x0b2 .viam.common.v1.ResponseMetadataR\x10responseMetadata"\xd6\x01\n\x05Image\x12\x1f\n\x0bsource_name\x18\x01 \x01(\tR\nsourceName\x128\n\x06format\x18\x02 \x01(\x0e2 .viam.component.camera.v1.FormatR\x06format\x12\x14\n\x05image\x18\x03 \x01(\x0cR\x05image\x12\x1b\n\tmime_type\x18\x04 \x01(\tR\x08mimeType\x12?\n\x0bannotations\x18\x05 \x01(\x0b2\x1d.viam.app.data.v1.AnnotationsR\x0bannotations"t\n\x12RenderFrameRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\tmime_type\x18\x02 \x01(\tR\x08mimeType\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"v\n\x14GetPointCloudRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\tmime_type\x18\x02 \x01(\tR\x08mimeType\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"U\n\x15GetPointCloudResponse\x12\x1b\n\tmime_type\x18\x01 \x01(\tR\x08mimeType\x12\x1f\n\x0bpoint_cloud\x18\x02 \x01(\x0cR\npointCloud"*\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"\xb5\x03\n\x15GetPropertiesResponse\x12!\n\x0csupports_pcd\x18\x01 \x01(\x08R\x0bsupportsPcd\x12`\n\x14intrinsic_parameters\x18\x02 \x01(\x0b2-.viam.component.camera.v1.IntrinsicParametersR\x13intrinsicParameters\x12c\n\x15distortion_parameters\x18\x03 \x01(\x0b2..viam.component.camera.v1.DistortionParametersR\x14distortionParameters\x12\x1d\n\nmime_types\x18\x04 \x03(\tR\tmimeTypes\x12"\n\nframe_rate\x18\x05 \x01(\x02H\x00R\tframeRate\x88\x01\x01\x12`\n\x14extrinsic_parameters\x18\x06 \x01(\x0b2-.viam.component.camera.v1.ExtrinsicParametersR\x13extrinsicParametersB\r\n\x0b_frame_rate"E\n\x07Webcams\x12:\n\x07webcams\x18\x01 \x03(\x0b2 .viam.component.camera.v1.WebcamR\x07webcams"\x9e\x01\n\x06Webcam\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x12\x16\n\x06status\x18\x02 \x01(\tR\x06status\x12B\n\nproperties\x18\x03 \x03(\x0b2".viam.component.camera.v1.PropertyR\nproperties\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x0e\n\x02id\x18\x05 \x01(\tR\x02id"\x84\x01\n\x08Property\x12\x19\n\x08width_px\x18\x01 \x01(\x05R\x07widthPx\x12\x1b\n\theight_px\x18\x02 \x01(\x05R\x08heightPx\x12!\n\x0cframe_format\x18\x03 \x01(\tR\x0bframeFormat\x12\x1d\n\nframe_rate\x18\x04 \x01(\x02R\tframeRate"\xc9\x01\n\x13IntrinsicParameters\x12\x19\n\x08width_px\x18\x01 \x01(\rR\x07widthPx\x12\x1b\n\theight_px\x18\x02 \x01(\rR\x08heightPx\x12\x1c\n\nfocal_x_px\x18\x03 \x01(\x01R\x08focalXPx\x12\x1c\n\nfocal_y_px\x18\x04 \x01(\x01R\x08focalYPx\x12\x1e\n\x0bcenter_x_px\x18\x05 \x01(\x01R\tcenterXPx\x12\x1e\n\x0bcenter_y_px\x18\x06 \x01(\x01R\tcenterYPx"L\n\x14DistortionParameters\x12\x14\n\x05model\x18\x01 \x01(\tR\x05model\x12\x1e\n\nparameters\x18\x02 \x03(\x01R\nparameters"\x8f\x01\n\x13ExtrinsicParameters\x129\n\x0btranslation\x18\x01 \x01(\x0b2\x17.viam.common.v1.Vector3R\x0btranslation\x12=\n\x0borientation\x18\x02 \x01(\x0b2\x1b.viam.common.v1.OrientationR\x0borientation*l\n\x06Format\x12\x16\n\x12FORMAT_UNSPECIFIED\x10\x00\x12\x13\n\x0fFORMAT_RAW_RGBA\x10\x01\x12\x14\n\x10FORMAT_RAW_DEPTH\x10\x02\x12\x0f\n\x0bFORMAT_JPEG\x10\x03\x12\x0e\n\nFORMAT_PNG\x10\x042\xcf\x08\n\rCameraService\x12\x95\x01\n\x08GetImage\x12).viam.component.camera.v1.GetImageRequest\x1a*.viam.component.camera.v1.GetImageResponse"2\x82\xd3\xe4\x93\x02,\x12*/viam/api/v1/component/camera/{name}/image\x12\x99\x01\n\tGetImages\x12*.viam.component.camera.v1.GetImagesRequest\x1a+.viam.component.camera.v1.GetImagesResponse"3\x82\xd3\xe4\x93\x02-\x12+/viam/api/v1/component/camera/{name}/images\x12\x8c\x01\n\x0bRenderFrame\x12,.viam.component.camera.v1.RenderFrameRequest\x1a\x14.google.api.HttpBody"9\x82\xd3\xe4\x93\x023\x121/viam/api/v1/component/camera/{name}/render_frame\x12\xaa\x01\n\rGetPointCloud\x12..viam.component.camera.v1.GetPointCloudRequest\x1a/.viam.component.camera.v1.GetPointCloudResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/camera/{name}/point_cloud\x12\xa9\x01\n\rGetProperties\x12..viam.component.camera.v1.GetPropertiesRequest\x1a/.viam.component.camera.v1.GetPropertiesResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/camera/{name}/properties\x12\x89\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"7\x82\xd3\xe4\x93\x021"//viam/api/v1/component/camera/{name}/do_command\x12\x95\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/camera/{name}/geometriesBC\n\x1ccom.viam.component.camera.v1Z#go.viam.com/api/component/camera/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/encoder/v1/encoder_grpc.py b/src/viam/gen/component/encoder/v1/encoder_grpc.py index 17754f9976..64c2ee93aa 100644 --- a/src/viam/gen/component/encoder/v1/encoder_grpc.py +++ b/src/viam/gen/component/encoder/v1/encoder_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/encoder/v1/encoder_pb2.py b/src/viam/gen/component/encoder/v1/encoder_pb2.py index 46f1bf63d7..ca724f687f 100644 --- a/src/viam/gen/component/encoder/v1/encoder_pb2.py +++ b/src/viam/gen/component/encoder/v1/encoder_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/encoder/v1/encoder.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/encoder/v1/encoder.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"component/encoder/v1/encoder.proto\x12\x19viam.component.encoder.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"\xbc\x01\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12Q\n\rposition_type\x18\x02 \x01(\x0e2\'.viam.component.encoder.v1.PositionTypeH\x00R\x0cpositionType\x88\x01\x01\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraB\x10\n\x0e_position_type"y\n\x13GetPositionResponse\x12\x14\n\x05value\x18\x01 \x01(\x02R\x05value\x12L\n\rposition_type\x18\x02 \x01(\x0e2\'.viam.component.encoder.v1.PositionTypeR\x0cpositionType"Y\n\x14ResetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x17\n\x15ResetPositionResponse"Y\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x83\x01\n\x15GetPropertiesResponse\x122\n\x15ticks_count_supported\x18\x01 \x01(\x08R\x13ticksCountSupported\x126\n\x17angle_degrees_supported\x18\x02 \x01(\x08R\x15angleDegreesSupported*m\n\x0cPositionType\x12\x1d\n\x19POSITION_TYPE_UNSPECIFIED\x10\x00\x12\x1d\n\x19POSITION_TYPE_TICKS_COUNT\x10\x01\x12\x1f\n\x1bPOSITION_TYPE_ANGLE_DEGREES\x10\x022\xc7\x06\n\x0eEncoderService\x12\xa8\x01\n\x0bGetPosition\x12-.viam.component.encoder.v1.GetPositionRequest\x1a..viam.component.encoder.v1.GetPositionResponse":\x82\xd3\xe4\x93\x024\x122/viam/api/v1/component/encoder/{name}/get_position\x12\xb0\x01\n\rResetPosition\x12/.viam.component.encoder.v1.ResetPositionRequest\x1a0.viam.component.encoder.v1.ResetPositionResponse"<\x82\xd3\xe4\x93\x026\x124/viam/api/v1/component/encoder/{name}/reset_position\x12\xb0\x01\n\rGetProperties\x12/.viam.component.encoder.v1.GetPropertiesRequest\x1a0.viam.component.encoder.v1.GetPropertiesResponse"<\x82\xd3\xe4\x93\x026"4/viam/api/v1/component/encoder/{name}/get_properties\x12\x8a\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/component/encoder/{name}/do_command\x12\x96\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/encoder/{name}/geometriesBE\n\x1dcom.viam.component.encoder.v1Z$go.viam.com/api/component/encoder/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/gantry/v1/gantry_grpc.py b/src/viam/gen/component/gantry/v1/gantry_grpc.py index 02ea898039..1dd41b4163 100644 --- a/src/viam/gen/component/gantry/v1/gantry_grpc.py +++ b/src/viam/gen/component/gantry/v1/gantry_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/gantry/v1/gantry_pb2.py b/src/viam/gen/component/gantry/v1/gantry_pb2.py index 5d6db44a20..2d3aaf76eb 100644 --- a/src/viam/gen/component/gantry/v1/gantry_pb2.py +++ b/src/viam/gen/component/gantry/v1/gantry_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/gantry/v1/gantry.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/gantry/v1/gantry.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n component/gantry/v1/gantry.proto\x12\x18viam.component.gantry.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"W\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"8\n\x13GetPositionResponse\x12!\n\x0cpositions_mm\x18\x01 \x03(\x01R\x0bpositionsMm"\xa8\x01\n\x15MoveToPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12!\n\x0cpositions_mm\x18\x02 \x03(\x01R\x0bpositionsMm\x12)\n\x11speeds_mm_per_sec\x18\x03 \x03(\x01R\x0espeedsMmPerSec\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x18\n\x16MoveToPositionResponse"P\n\x0bHomeRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"$\n\x0cHomeResponse\x12\x14\n\x05homed\x18\x01 \x01(\x08R\x05homed"V\n\x11GetLengthsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"3\n\x12GetLengthsResponse\x12\x1d\n\nlengths_mm\x18\x01 \x03(\x01R\tlengthsMm"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"g\n\x06Status\x12!\n\x0cpositions_mm\x18\x01 \x03(\x01R\x0bpositionsMm\x12\x1d\n\nlengths_mm\x18\x02 \x03(\x01R\tlengthsMm\x12\x1b\n\tis_moving\x18\x03 \x01(\x08R\x08isMoving"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving2\xf2\n\n\rGantryService\x12\xa1\x01\n\x0bGetPosition\x12,.viam.component.gantry.v1.GetPositionRequest\x1a-.viam.component.gantry.v1.GetPositionResponse"5\x82\xd3\xe4\x93\x02/\x12-/viam/api/v1/component/gantry/{name}/position\x12\xae\x01\n\x0eMoveToPosition\x12/.viam.component.gantry.v1.MoveToPositionRequest\x1a0.viam.component.gantry.v1.MoveToPositionResponse"9\xa0\x92)\x01\x82\xd3\xe4\x93\x02/\x1a-/viam/api/v1/component/gantry/{name}/position\x12\x88\x01\n\x04Home\x12%.viam.component.gantry.v1.HomeRequest\x1a&.viam.component.gantry.v1.HomeResponse"1\x82\xd3\xe4\x93\x02+\x1a)/viam/api/v1/component/gantry/{name}/home\x12\x9d\x01\n\nGetLengths\x12+.viam.component.gantry.v1.GetLengthsRequest\x1a,.viam.component.gantry.v1.GetLengthsResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/gantry/{name}/lengths\x12\x88\x01\n\x04Stop\x12%.viam.component.gantry.v1.StopRequest\x1a&.viam.component.gantry.v1.StopResponse"1\x82\xd3\xe4\x93\x02+")/viam/api/v1/component/gantry/{name}/stop\x12\x99\x01\n\x08IsMoving\x12).viam.component.gantry.v1.IsMovingRequest\x1a*.viam.component.gantry.v1.IsMovingResponse"6\x82\xd3\xe4\x93\x020\x12./viam/api/v1/component/gantry/{name}/is_moving\x12\x89\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"7\x82\xd3\xe4\x93\x021"//viam/api/v1/component/gantry/{name}/do_command\x12\x95\x01\n\rGetKinematics\x12$.viam.common.v1.GetKinematicsRequest\x1a%.viam.common.v1.GetKinematicsResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/gantry/{name}/kinematics\x12\x95\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/gantry/{name}/geometriesBC\n\x1ccom.viam.component.gantry.v1Z#go.viam.com/api/component/gantry/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/generic/v1/generic_grpc.py b/src/viam/gen/component/generic/v1/generic_grpc.py index 9656da7bae..006daa3d67 100644 --- a/src/viam/gen/component/generic/v1/generic_grpc.py +++ b/src/viam/gen/component/generic/v1/generic_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 from .... import component class GenericServiceBase(abc.ABC): diff --git a/src/viam/gen/component/generic/v1/generic_pb2.py b/src/viam/gen/component/generic/v1/generic_pb2.py index d531599110..e730bb8380 100644 --- a/src/viam/gen/component/generic/v1/generic_pb2.py +++ b/src/viam/gen/component/generic/v1/generic_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/generic/v1/generic.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/generic/v1/generic.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"component/generic/v1/generic.proto\x12\x19viam.component.generic.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto2\xb6\x02\n\x0eGenericService\x12\x8a\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/component/generic/{name}/do_command\x12\x96\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/generic/{name}/geometriesBE\n\x1dcom.viam.component.generic.v1Z$go.viam.com/api/component/generic/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/component/gripper/v1/gripper_grpc.py b/src/viam/gen/component/gripper/v1/gripper_grpc.py index 72ec3218b7..186a26df22 100644 --- a/src/viam/gen/component/gripper/v1/gripper_grpc.py +++ b/src/viam/gen/component/gripper/v1/gripper_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/gripper/v1/gripper_pb2.py b/src/viam/gen/component/gripper/v1/gripper_pb2.py index 8c32c58f9e..0c2320307c 100644 --- a/src/viam/gen/component/gripper/v1/gripper_pb2.py +++ b/src/viam/gen/component/gripper/v1/gripper_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/gripper/v1/gripper.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/gripper/v1/gripper.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"component/gripper/v1/gripper.proto\x12\x19viam.component.gripper.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"P\n\x0bOpenRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cOpenResponse"P\n\x0bGrabRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"W\n\x0cGrabResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving"^\n\x19IsHoldingSomethingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"{\n\x1aIsHoldingSomethingResponse\x120\n\x14is_holding_something\x18\x01 \x01(\x08R\x12isHoldingSomething\x12+\n\x04meta\x18c \x01(\x0b2\x17.google.protobuf.StructR\x04meta2\xe8\t\n\x0eGripperService\x12\x8f\x01\n\x04Open\x12&.viam.component.gripper.v1.OpenRequest\x1a\'.viam.component.gripper.v1.OpenResponse"6\xa0\x92)\x01\x82\xd3\xe4\x93\x02,\x1a*/viam/api/v1/component/gripper/{name}/open\x12\x8f\x01\n\x04Grab\x12&.viam.component.gripper.v1.GrabRequest\x1a\'.viam.component.gripper.v1.GrabResponse"6\xa0\x92)\x01\x82\xd3\xe4\x93\x02,\x1a*/viam/api/v1/component/gripper/{name}/grab\x12\x8b\x01\n\x04Stop\x12&.viam.component.gripper.v1.StopRequest\x1a\'.viam.component.gripper.v1.StopResponse"2\x82\xd3\xe4\x93\x02,"*/viam/api/v1/component/gripper/{name}/stop\x12\x9c\x01\n\x08IsMoving\x12*.viam.component.gripper.v1.IsMovingRequest\x1a+.viam.component.gripper.v1.IsMovingResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/gripper/{name}/is_moving\x12\xc5\x01\n\x12IsHoldingSomething\x124.viam.component.gripper.v1.IsHoldingSomethingRequest\x1a5.viam.component.gripper.v1.IsHoldingSomethingResponse"B\x82\xd3\xe4\x93\x02<\x12:/viam/api/v1/component/gripper/{name}/is_holding_something\x12\x8a\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/component/gripper/{name}/do_command\x12\x96\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/gripper/{name}/geometries\x12\x96\x01\n\rGetKinematics\x12$.viam.common.v1.GetKinematicsRequest\x1a%.viam.common.v1.GetKinematicsResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/gripper/{name}/kinematicsBE\n\x1dcom.viam.component.gripper.v1Z$go.viam.com/api/component/gripper/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/inputcontroller/v1/input_controller_grpc.py b/src/viam/gen/component/inputcontroller/v1/input_controller_grpc.py index c59ea07b01..e019ed2258 100644 --- a/src/viam/gen/component/inputcontroller/v1/input_controller_grpc.py +++ b/src/viam/gen/component/inputcontroller/v1/input_controller_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 import google.protobuf.timestamp_pb2 from .... import component diff --git a/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.py b/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.py index de71cfcb52..7bf1e16cc0 100644 --- a/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.py +++ b/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/inputcontroller/v1/input_controller.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/inputcontroller/v1/input_controller.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n3component/inputcontroller/v1/input_controller.proto\x12!viam.component.inputcontroller.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto"c\n\x12GetControlsRequest\x12\x1e\n\ncontroller\x18\x01 \x01(\tR\ncontroller\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"1\n\x13GetControlsResponse\x12\x1a\n\x08controls\x18\x01 \x03(\tR\x08controls"a\n\x10GetEventsRequest\x12\x1e\n\ncontroller\x18\x01 \x01(\tR\ncontroller\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"U\n\x11GetEventsResponse\x12@\n\x06events\x18\x01 \x03(\x0b2(.viam.component.inputcontroller.v1.EventR\x06events"\xa4\x01\n\x13TriggerEventRequest\x12\x1e\n\ncontroller\x18\x01 \x01(\tR\ncontroller\x12>\n\x05event\x18\x02 \x01(\x0b2(.viam.component.inputcontroller.v1.EventR\x05event\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x16\n\x14TriggerEventResponse"}\n\x05Event\x12.\n\x04time\x18\x01 \x01(\x0b2\x1a.google.protobuf.TimestampR\x04time\x12\x14\n\x05event\x18\x02 \x01(\tR\x05event\x12\x18\n\x07control\x18\x03 \x01(\tR\x07control\x12\x14\n\x05value\x18\x04 \x01(\x01R\x05value"\xa2\x02\n\x13StreamEventsRequest\x12\x1e\n\ncontroller\x18\x01 \x01(\tR\ncontroller\x12U\n\x06events\x18\x02 \x03(\x0b2=.viam.component.inputcontroller.v1.StreamEventsRequest.EventsR\x06events\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra\x1ae\n\x06Events\x12\x18\n\x07control\x18\x01 \x01(\tR\x07control\x12\x16\n\x06events\x18\x02 \x03(\tR\x06events\x12)\n\x10cancelled_events\x18\x03 \x03(\tR\x0fcancelledEvents"V\n\x14StreamEventsResponse\x12>\n\x05event\x18\x01 \x01(\x0b2(.viam.component.inputcontroller.v1.EventR\x05event"J\n\x06Status\x12@\n\x06events\x18\x01 \x03(\x0b2(.viam.component.inputcontroller.v1.EventR\x06events2\xa7\x08\n\x16InputControllerService\x12\xb8\x01\n\x0bGetControls\x125.viam.component.inputcontroller.v1.GetControlsRequest\x1a6.viam.component.inputcontroller.v1.GetControlsResponse":\x82\xd3\xe4\x93\x024\x122/viam/api/v1/component/input/{controller}/controls\x12\xb0\x01\n\tGetEvents\x123.viam.component.inputcontroller.v1.GetEventsRequest\x1a4.viam.component.inputcontroller.v1.GetEventsResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/input/{controller}/events\x12\xc1\x01\n\x0cStreamEvents\x126.viam.component.inputcontroller.v1.StreamEventsRequest\x1a7.viam.component.inputcontroller.v1.StreamEventsResponse">\x82\xd3\xe4\x93\x028\x126/viam/api/v1/component/input/{controller}/event_stream0\x01\x12\xb8\x01\n\x0cTriggerEvent\x126.viam.component.inputcontroller.v1.TriggerEventRequest\x1a7.viam.component.inputcontroller.v1.TriggerEventResponse"7\x82\xd3\xe4\x93\x021"//viam/api/v1/component/input/{controller}/event\x12\x88\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/component/input/{name}/do_command\x12\x94\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"6\x82\xd3\xe4\x93\x020\x12./viam/api/v1/component/input/{name}/geometriesBU\n%com.viam.component.inputcontroller.v1Z,go.viam.com/api/component/inputcontroller/v1b\x06proto3') diff --git a/src/viam/gen/component/motor/v1/motor_grpc.py b/src/viam/gen/component/motor/v1/motor_grpc.py index 6291642f41..23af3a8f29 100644 --- a/src/viam/gen/component/motor/v1/motor_grpc.py +++ b/src/viam/gen/component/motor/v1/motor_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/motor/v1/motor_pb2.py b/src/viam/gen/component/motor/v1/motor_pb2.py index a6d4a3ff4d..1d6f497062 100644 --- a/src/viam/gen/component/motor/v1/motor_pb2.py +++ b/src/viam/gen/component/motor/v1/motor_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/motor/v1/motor.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/motor/v1/motor.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ecomponent/motor/v1/motor.proto\x12\x17viam.component.motor.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"q\n\x0fSetPowerRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\tpower_pct\x18\x02 \x01(\x01R\x08powerPct\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x12\n\x10SetPowerResponse"\x85\x01\n\x0cGoForRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03rpm\x18\x02 \x01(\x01R\x03rpm\x12 \n\x0brevolutions\x18\x03 \x01(\x01R\x0brevolutions\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0f\n\rGoForResponse"\x95\x01\n\x0bGoToRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03rpm\x18\x02 \x01(\x01R\x03rpm\x121\n\x14position_revolutions\x18\x03 \x01(\x01R\x13positionRevolutions\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cGoToResponse"d\n\rSetRPMRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03rpm\x18\x02 \x01(\x01R\x03rpm\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x10\n\x0eSetRPMResponse"u\n\x18ResetZeroPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n\x06offset\x18\x02 \x01(\x01R\x06offset\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x1b\n\x19ResetZeroPositionResponse"W\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"1\n\x13GetPositionResponse\x12\x1a\n\x08position\x18\x01 \x01(\x01R\x08position"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"U\n\x10IsPoweredRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"E\n\x11IsPoweredResponse\x12\x13\n\x05is_on\x18\x01 \x01(\x08R\x04isOn\x12\x1b\n\tpower_pct\x18\x02 \x01(\x01R\x08powerPct"Y\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"F\n\x15GetPropertiesResponse\x12-\n\x12position_reporting\x18\x01 \x01(\x08R\x11positionReporting"`\n\x06Status\x12\x1d\n\nis_powered\x18\x01 \x01(\x08R\tisPowered\x12\x1a\n\x08position\x18\x03 \x01(\x01R\x08position\x12\x1b\n\tis_moving\x18\x04 \x01(\x08R\x08isMoving"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving2\xae\x0e\n\x0cMotorService\x12\x96\x01\n\x08SetPower\x12(.viam.component.motor.v1.SetPowerRequest\x1a).viam.component.motor.v1.SetPowerResponse"5\xa0\x92)\x01\x82\xd3\xe4\x93\x02+\x1a)/viam/api/v1/component/motor/{name}/power\x12\x8e\x01\n\x05GoFor\x12%.viam.component.motor.v1.GoForRequest\x1a&.viam.component.motor.v1.GoForResponse"6\xa0\x92)\x01\x82\xd3\xe4\x93\x02,\x1a*/viam/api/v1/component/motor/{name}/go_for\x12\x8a\x01\n\x04GoTo\x12$.viam.component.motor.v1.GoToRequest\x1a%.viam.component.motor.v1.GoToResponse"5\xa0\x92)\x01\x82\xd3\xe4\x93\x02+\x1a)/viam/api/v1/component/motor/{name}/go_to\x12\x92\x01\n\x06SetRPM\x12&.viam.component.motor.v1.SetRPMRequest\x1a\'.viam.component.motor.v1.SetRPMResponse"7\xa0\x92)\x01\x82\xd3\xe4\x93\x02-\x1a+/viam/api/v1/component/motor/{name}/set_rpm\x12\xac\x01\n\x11ResetZeroPosition\x121.viam.component.motor.v1.ResetZeroPositionRequest\x1a2.viam.component.motor.v1.ResetZeroPositionResponse"0\x82\xd3\xe4\x93\x02*\x1a(/viam/api/v1/component/motor/{name}/zero\x12\x9e\x01\n\x0bGetPosition\x12+.viam.component.motor.v1.GetPositionRequest\x1a,.viam.component.motor.v1.GetPositionResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/motor/{name}/position\x12\xa4\x01\n\rGetProperties\x12-.viam.component.motor.v1.GetPropertiesRequest\x1a..viam.component.motor.v1.GetPropertiesResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/motor/{name}/features\x12\x85\x01\n\x04Stop\x12$.viam.component.motor.v1.StopRequest\x1a%.viam.component.motor.v1.StopResponse"0\x82\xd3\xe4\x93\x02*\x1a(/viam/api/v1/component/motor/{name}/stop\x12\x97\x01\n\tIsPowered\x12).viam.component.motor.v1.IsPoweredRequest\x1a*.viam.component.motor.v1.IsPoweredResponse"3\x82\xd3\xe4\x93\x02-\x12+/viam/api/v1/component/motor/{name}/powered\x12\x96\x01\n\x08IsMoving\x12(.viam.component.motor.v1.IsMovingRequest\x1a).viam.component.motor.v1.IsMovingResponse"5\x82\xd3\xe4\x93\x02/\x12-/viam/api/v1/component/motor/{name}/is_moving\x12\x88\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/component/motor/{name}/do_command\x12\x94\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"6\x82\xd3\xe4\x93\x020\x12./viam/api/v1/component/motor/{name}/geometriesBA\n\x1bcom.viam.component.motor.v1Z"go.viam.com/api/component/motor/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/movementsensor/v1/movementsensor_grpc.py b/src/viam/gen/component/movementsensor/v1/movementsensor_grpc.py index f404185fbf..b2cd971897 100644 --- a/src/viam/gen/component/movementsensor/v1/movementsensor_grpc.py +++ b/src/viam/gen/component/movementsensor/v1/movementsensor_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.py b/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.py index 746ad59262..784f94937b 100644 --- a/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.py +++ b/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/movementsensor/v1/movementsensor.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/movementsensor/v1/movementsensor.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n0component/movementsensor/v1/movementsensor.proto\x12 viam.component.movementsensor.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"]\n\x18GetLinearVelocityRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"]\n\x19GetLinearVelocityResponse\x12@\n\x0flinear_velocity\x18\x01 \x01(\x0b2\x17.viam.common.v1.Vector3R\x0elinearVelocity"^\n\x19GetAngularVelocityRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"`\n\x1aGetAngularVelocityResponse\x12B\n\x10angular_velocity\x18\x01 \x01(\x0b2\x17.viam.common.v1.Vector3R\x0fangularVelocity"]\n\x18GetCompassHeadingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"1\n\x19GetCompassHeadingResponse\x12\x14\n\x05value\x18\x01 \x01(\x01R\x05value"Z\n\x15GetOrientationRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"W\n\x16GetOrientationResponse\x12=\n\x0borientation\x18\x01 \x01(\x0b2\x1b.viam.common.v1.OrientationR\x0borientation"W\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"n\n\x13GetPositionResponse\x128\n\ncoordinate\x18\x01 \x01(\x0b2\x18.viam.common.v1.GeoPointR\ncoordinate\x12\x1d\n\naltitude_m\x18\x02 \x01(\x02R\taltitudeM"Y\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xf5\x02\n\x15GetPropertiesResponse\x12:\n\x19linear_velocity_supported\x18\x01 \x01(\x08R\x17linearVelocitySupported\x12<\n\x1aangular_velocity_supported\x18\x02 \x01(\x08R\x18angularVelocitySupported\x123\n\x15orientation_supported\x18\x03 \x01(\x08R\x14orientationSupported\x12-\n\x12position_supported\x18\x04 \x01(\x08R\x11positionSupported\x12:\n\x19compass_heading_supported\x18\x05 \x01(\x08R\x17compassHeadingSupported\x12B\n\x1dlinear_acceleration_supported\x18\x06 \x01(\x08R\x1blinearAccelerationSupported"W\n\x12GetAccuracyRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xd0\x03\n\x13GetAccuracyResponse\x12_\n\x08accuracy\x18\x01 \x03(\x0b2C.viam.component.movementsensor.v1.GetAccuracyResponse.AccuracyEntryR\x08accuracy\x12(\n\rposition_hdop\x18\x02 \x01(\x02H\x00R\x0cpositionHdop\x88\x01\x01\x12(\n\rposition_vdop\x18\x03 \x01(\x02H\x01R\x0cpositionVdop\x88\x01\x01\x126\n\x15position_nmea_gga_fix\x18\x04 \x01(\x05H\x02R\x12positionNmeaGgaFix\x88\x01\x01\x127\n\x15compass_degrees_error\x18\x05 \x01(\x02H\x03R\x13compassDegreesError\x88\x01\x01\x1a;\n\rAccuracyEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\x02R\x05value:\x028\x01B\x10\n\x0e_position_hdopB\x10\n\x0e_position_vdopB\x18\n\x16_position_nmea_gga_fixB\x18\n\x16_compass_degrees_error"a\n\x1cGetLinearAccelerationRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"i\n\x1dGetLinearAccelerationResponse\x12H\n\x13linear_acceleration\x18\x01 \x01(\x0b2\x17.viam.common.v1.Vector3R\x12linearAcceleration2\xcf\x10\n\x15MovementSensorService\x12\xd2\x01\n\x11GetLinearVelocity\x12:.viam.component.movementsensor.v1.GetLinearVelocityRequest\x1a;.viam.component.movementsensor.v1.GetLinearVelocityResponse"D\x82\xd3\xe4\x93\x02>\x12\x12.viam.component.movementsensor.v1.GetLinearAccelerationRequest\x1a?.viam.component.movementsensor.v1.GetLinearAccelerationResponse"H\x82\xd3\xe4\x93\x02B\x12@/viam/api/v1/component/movementsensor/{name}/linear_acceleration\x12\x91\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"?\x82\xd3\xe4\x93\x029"7/viam/api/v1/component/movementsensor/{name}/do_command\x12\x9d\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"?\x82\xd3\xe4\x93\x029\x127/viam/api/v1/component/movementsensor/{name}/geometries\x12\x95\x01\n\x0bGetReadings\x12".viam.common.v1.GetReadingsRequest\x1a#.viam.common.v1.GetReadingsResponse"=\x82\xd3\xe4\x93\x027\x125/viam/api/v1/component/movementsensor/{name}/readingsBS\n$com.viam.component.movementsensor.v1Z+go.viam.com/api/component/movementsensor/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/posetracker/v1/pose_tracker_grpc.py b/src/viam/gen/component/posetracker/v1/pose_tracker_grpc.py index adb38d014f..b02015369a 100644 --- a/src/viam/gen/component/posetracker/v1/pose_tracker_grpc.py +++ b/src/viam/gen/component/posetracker/v1/pose_tracker_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.py b/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.py index 003852c665..5eb9c00164 100644 --- a/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.py +++ b/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/posetracker/v1/pose_tracker.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/posetracker/v1/pose_tracker.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+component/posetracker/v1/pose_tracker.proto\x12\x1dviam.component.posetracker.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"s\n\x0fGetPosesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1d\n\nbody_names\x18\x02 \x03(\tR\tbodyNames\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xcc\x01\n\x10GetPosesResponse\x12]\n\nbody_poses\x18\x01 \x03(\x0b2>.viam.component.posetracker.v1.GetPosesResponse.BodyPosesEntryR\tbodyPoses\x1aY\n\x0eBodyPosesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x121\n\x05value\x18\x02 \x01(\x0b2\x1b.viam.common.v1.PoseInFrameR\x05value:\x028\x012\xec\x03\n\x12PoseTrackerService\x12\xa5\x01\n\x08GetPoses\x12..viam.component.posetracker.v1.GetPosesRequest\x1a/.viam.component.posetracker.v1.GetPosesResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/pose_tracker/{name}/poses\x12\x8f\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"=\x82\xd3\xe4\x93\x027"5/viam/api/v1/component/pose_tracker/{name}/do_command\x12\x9b\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"=\x82\xd3\xe4\x93\x027\x125/viam/api/v1/component/pose_tracker/{name}/geometriesB5\n\x15com.viam.component.v1Z\x1cgo.viam.com/api/component/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/powersensor/v1/powersensor_grpc.py b/src/viam/gen/component/powersensor/v1/powersensor_grpc.py index 529ae8027f..147144f8d3 100644 --- a/src/viam/gen/component/powersensor/v1/powersensor_grpc.py +++ b/src/viam/gen/component/powersensor/v1/powersensor_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/powersensor/v1/powersensor_pb2.py b/src/viam/gen/component/powersensor/v1/powersensor_pb2.py index bcdf55c3e1..18107c9bf4 100644 --- a/src/viam/gen/component/powersensor/v1/powersensor_pb2.py +++ b/src/viam/gen/component/powersensor/v1/powersensor_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/powersensor/v1/powersensor.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/powersensor/v1/powersensor.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*component/powersensor/v1/powersensor.proto\x12\x1dviam.component.powersensor.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"V\n\x11GetVoltageRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"?\n\x12GetVoltageResponse\x12\x14\n\x05volts\x18\x01 \x01(\x01R\x05volts\x12\x13\n\x05is_ac\x18\x02 \x01(\x08R\x04isAc"V\n\x11GetCurrentRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"C\n\x12GetCurrentResponse\x12\x18\n\x07amperes\x18\x01 \x01(\x01R\x07amperes\x12\x13\n\x05is_ac\x18\x02 \x01(\x08R\x04isAc"T\n\x0fGetPowerRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"(\n\x10GetPowerResponse\x12\x14\n\x05watts\x18\x01 \x01(\x01R\x05watts2\xc4\x06\n\x12PowerSensorService\x12\xad\x01\n\nGetVoltage\x120.viam.component.powersensor.v1.GetVoltageRequest\x1a1.viam.component.powersensor.v1.GetVoltageResponse":\x82\xd3\xe4\x93\x024\x122/viam/api/v1/component/power_sensor/{name}/voltage\x12\xad\x01\n\nGetCurrent\x120.viam.component.powersensor.v1.GetCurrentRequest\x1a1.viam.component.powersensor.v1.GetCurrentResponse":\x82\xd3\xe4\x93\x024\x122/viam/api/v1/component/power_sensor/{name}/current\x12\xa5\x01\n\x08GetPower\x12..viam.component.powersensor.v1.GetPowerRequest\x1a/.viam.component.powersensor.v1.GetPowerResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/power_sensor/{name}/power\x12\x93\x01\n\x0bGetReadings\x12".viam.common.v1.GetReadingsRequest\x1a#.viam.common.v1.GetReadingsResponse";\x82\xd3\xe4\x93\x025\x123/viam/api/v1/component/power_sensor/{name}/readings\x12\x8f\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"=\x82\xd3\xe4\x93\x027"5/viam/api/v1/component/power_sensor/{name}/do_commandBM\n!com.viam.component.powersensor.v1Z(go.viam.com/api/component/powersensor/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/sensor/v1/sensor_grpc.py b/src/viam/gen/component/sensor/v1/sensor_grpc.py index 50d483f9ca..18980fe41e 100644 --- a/src/viam/gen/component/sensor/v1/sensor_grpc.py +++ b/src/viam/gen/component/sensor/v1/sensor_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 from .... import component class SensorServiceBase(abc.ABC): diff --git a/src/viam/gen/component/sensor/v1/sensor_pb2.py b/src/viam/gen/component/sensor/v1/sensor_pb2.py index 06afcf5a00..c83ce870ca 100644 --- a/src/viam/gen/component/sensor/v1/sensor_pb2.py +++ b/src/viam/gen/component/sensor/v1/sensor_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/sensor/v1/sensor.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/sensor/v1/sensor.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n component/sensor/v1/sensor.proto\x12\x18viam.component.sensor.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto2\xc3\x03\n\rSensorService\x12\x8d\x01\n\x0bGetReadings\x12".viam.common.v1.GetReadingsRequest\x1a#.viam.common.v1.GetReadingsResponse"5\x82\xd3\xe4\x93\x02/\x12-/viam/api/v1/component/sensor/{name}/readings\x12\x89\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"7\x82\xd3\xe4\x93\x021"//viam/api/v1/component/sensor/{name}/do_command\x12\x95\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/sensor/{name}/geometriesBC\n\x1ccom.viam.component.sensor.v1Z#go.viam.com/api/component/sensor/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/component/servo/v1/servo_grpc.py b/src/viam/gen/component/servo/v1/servo_grpc.py index 1d270250b7..f2cd1ad2a4 100644 --- a/src/viam/gen/component/servo/v1/servo_grpc.py +++ b/src/viam/gen/component/servo/v1/servo_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/servo/v1/servo_pb2.py b/src/viam/gen/component/servo/v1/servo_pb2.py index 7b5c8a98e7..de3650784c 100644 --- a/src/viam/gen/component/servo/v1/servo_pb2.py +++ b/src/viam/gen/component/servo/v1/servo_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/servo/v1/servo.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/servo/v1/servo.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ecomponent/servo/v1/servo.proto\x12\x17viam.component.servo.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"m\n\x0bMoveRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\tangle_deg\x18\x02 \x01(\rR\x08angleDeg\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cMoveResponse"W\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"8\n\x13GetPositionResponse\x12!\n\x0cposition_deg\x18\x01 \x01(\rR\x0bpositionDeg"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"H\n\x06Status\x12!\n\x0cposition_deg\x18\x01 \x01(\rR\x0bpositionDeg\x12\x1b\n\tis_moving\x18\x02 \x01(\x08R\x08isMoving"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving2\xfe\x06\n\x0cServoService\x12\x89\x01\n\x04Move\x12$.viam.component.servo.v1.MoveRequest\x1a%.viam.component.servo.v1.MoveResponse"4\xa0\x92)\x01\x82\xd3\xe4\x93\x02*\x1a(/viam/api/v1/component/servo/{name}/move\x12\x9e\x01\n\x0bGetPosition\x12+.viam.component.servo.v1.GetPositionRequest\x1a,.viam.component.servo.v1.GetPositionResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/servo/{name}/position\x12\x85\x01\n\x04Stop\x12$.viam.component.servo.v1.StopRequest\x1a%.viam.component.servo.v1.StopResponse"0\x82\xd3\xe4\x93\x02*"(/viam/api/v1/component/servo/{name}/stop\x12\x96\x01\n\x08IsMoving\x12(.viam.component.servo.v1.IsMovingRequest\x1a).viam.component.servo.v1.IsMovingResponse"5\x82\xd3\xe4\x93\x02/\x12-/viam/api/v1/component/servo/{name}/is_moving\x12\x88\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/component/servo/{name}/do_command\x12\x94\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"6\x82\xd3\xe4\x93\x020\x12./viam/api/v1/component/servo/{name}/geometriesBA\n\x1bcom.viam.component.servo.v1Z"go.viam.com/api/component/servo/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/component/switch/v1/switch_grpc.py b/src/viam/gen/component/switch/v1/switch_grpc.py index a429e8313e..499cd958d9 100644 --- a/src/viam/gen/component/switch/v1/switch_grpc.py +++ b/src/viam/gen/component/switch/v1/switch_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import component diff --git a/src/viam/gen/component/switch/v1/switch_pb2.py b/src/viam/gen/component/switch/v1/switch_pb2.py index e860638ce6..e70975660e 100644 --- a/src/viam/gen/component/switch/v1/switch_pb2.py +++ b/src/viam/gen/component/switch/v1/switch_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'component/switch/v1/switch.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'component/switch/v1/switch.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n component/switch/v1/switch.proto\x12\x18viam.component.switch.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"s\n\x12SetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1a\n\x08position\x18\x02 \x01(\rR\x08position\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x15\n\x13SetPositionResponse"W\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"1\n\x13GetPositionResponse\x12\x1a\n\x08position\x18\x01 \x01(\rR\x08position"`\n\x1bGetNumberOfPositionsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"f\n\x1cGetNumberOfPositionsResponse\x12.\n\x13number_of_positions\x18\x01 \x01(\rR\x11numberOfPositions\x12\x16\n\x06labels\x18\x02 \x03(\tR\x06labels2\xbd\x05\n\rSwitchService\x12\xa9\x01\n\x0bSetPosition\x12,.viam.component.switch.v1.SetPositionRequest\x1a-.viam.component.switch.v1.SetPositionResponse"=\xa0\x92)\x01\x82\xd3\xe4\x93\x023\x1a1/viam/api/v1/component/switch/{name}/set_position\x12\xa5\x01\n\x0bGetPosition\x12,.viam.component.switch.v1.GetPositionRequest\x1a-.viam.component.switch.v1.GetPositionResponse"9\x82\xd3\xe4\x93\x023\x1a1/viam/api/v1/component/switch/{name}/get_position\x12\xcb\x01\n\x14GetNumberOfPositions\x125.viam.component.switch.v1.GetNumberOfPositionsRequest\x1a6.viam.component.switch.v1.GetNumberOfPositionsResponse"D\x82\xd3\xe4\x93\x02>\x1a= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -if sys.version_info >= (3, 13): - from warnings import deprecated as _deprecated -else: - from typing_extensions import deprecated as _deprecated -DESCRIPTOR: _descriptor.FileDescriptor - -class _ClientLibraryOrganization: - ValueType = _typing.NewType('ValueType', _builtins.int) - V: _TypeAlias = ValueType - -class _ClientLibraryOrganizationEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_ClientLibraryOrganization.ValueType], _builtins.type): - DESCRIPTOR: _descriptor.EnumDescriptor - CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED: _ClientLibraryOrganization.ValueType - 'Not useful.' - CLOUD: _ClientLibraryOrganization.ValueType - 'Google Cloud Platform Org.' - ADS: _ClientLibraryOrganization.ValueType - 'Ads (Advertising) Org.' - PHOTOS: _ClientLibraryOrganization.ValueType - 'Photos Org.' - STREET_VIEW: _ClientLibraryOrganization.ValueType - 'Street View Org.' - SHOPPING: _ClientLibraryOrganization.ValueType - 'Shopping Org.' - GEO: _ClientLibraryOrganization.ValueType - 'Geo Org.' - GENERATIVE_AI: _ClientLibraryOrganization.ValueType - 'Generative AI - https://developers.generativeai.google' - -class ClientLibraryOrganization(_ClientLibraryOrganization, metaclass=_ClientLibraryOrganizationEnumTypeWrapper): - """The organization for which the client libraries are being published. - Affects the url where generated docs are published, etc. - """ -CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED: ClientLibraryOrganization.ValueType -'Not useful.' -CLOUD: ClientLibraryOrganization.ValueType -'Google Cloud Platform Org.' -ADS: ClientLibraryOrganization.ValueType -'Ads (Advertising) Org.' -PHOTOS: ClientLibraryOrganization.ValueType -'Photos Org.' -STREET_VIEW: ClientLibraryOrganization.ValueType -'Street View Org.' -SHOPPING: ClientLibraryOrganization.ValueType -'Shopping Org.' -GEO: ClientLibraryOrganization.ValueType -'Geo Org.' -GENERATIVE_AI: ClientLibraryOrganization.ValueType -'Generative AI - https://developers.generativeai.google' -Global___ClientLibraryOrganization: _TypeAlias = ClientLibraryOrganization - -class _ClientLibraryDestination: - ValueType = _typing.NewType('ValueType', _builtins.int) - V: _TypeAlias = ValueType - -class _ClientLibraryDestinationEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_ClientLibraryDestination.ValueType], _builtins.type): - DESCRIPTOR: _descriptor.EnumDescriptor - CLIENT_LIBRARY_DESTINATION_UNSPECIFIED: _ClientLibraryDestination.ValueType - 'Client libraries will neither be generated nor published to package\n managers.\n ' - GITHUB: _ClientLibraryDestination.ValueType - "Generate the client library in a repo under github.com/googleapis,\n but don't publish it to package managers.\n " - PACKAGE_MANAGER: _ClientLibraryDestination.ValueType - 'Publish the library to package managers like nuget.org and npmjs.com.' - -class ClientLibraryDestination(_ClientLibraryDestination, metaclass=_ClientLibraryDestinationEnumTypeWrapper): - """To where should client libraries be published?""" -CLIENT_LIBRARY_DESTINATION_UNSPECIFIED: ClientLibraryDestination.ValueType -'Client libraries will neither be generated nor published to package\nmanagers.\n' -GITHUB: ClientLibraryDestination.ValueType -"Generate the client library in a repo under github.com/googleapis,\nbut don't publish it to package managers.\n" -PACKAGE_MANAGER: ClientLibraryDestination.ValueType -'Publish the library to package managers like nuget.org and npmjs.com.' -Global___ClientLibraryDestination: _TypeAlias = ClientLibraryDestination - -@_typing.final -class CommonLanguageSettings(_message.Message): - """Required information for every language.""" - DESCRIPTOR: _descriptor.Descriptor - REFERENCE_DOCS_URI_FIELD_NUMBER: _builtins.int - DESTINATIONS_FIELD_NUMBER: _builtins.int - SELECTIVE_GAPIC_GENERATION_FIELD_NUMBER: _builtins.int - - @_builtins.property - @_deprecated('This field has been marked as deprecated using proto field options.') - def reference_docs_uri(self) -> _builtins.str: - """Link to automatically generated reference documentation. Example: - https://cloud.google.com/nodejs/docs/reference/asset/latest - """ - - @reference_docs_uri.setter - @_deprecated('This field has been marked as deprecated using proto field options.') - def reference_docs_uri(self, value: _builtins.str) -> None: - """Link to automatically generated reference documentation. Example: - https://cloud.google.com/nodejs/docs/reference/asset/latest - """ - - @_builtins.property - def destinations(self) -> _containers.RepeatedScalarFieldContainer[Global___ClientLibraryDestination.ValueType]: - """The destination where API teams want this client library to be published.""" - - @_builtins.property - def selective_gapic_generation(self) -> Global___SelectiveGapicGeneration: - """Configuration for which RPCs should be generated in the GAPIC client.""" - - def __init__(self, *, reference_docs_uri: _builtins.str=..., destinations: _abc.Iterable[Global___ClientLibraryDestination.ValueType] | None=..., selective_gapic_generation: Global___SelectiveGapicGeneration | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['selective_gapic_generation', b'selective_gapic_generation'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['destinations', b'destinations', 'reference_docs_uri', b'reference_docs_uri', 'selective_gapic_generation', b'selective_gapic_generation'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___CommonLanguageSettings: _TypeAlias = CommonLanguageSettings - -@_typing.final -class ClientLibrarySettings(_message.Message): - """Details about how and where to publish client libraries.""" - DESCRIPTOR: _descriptor.Descriptor - VERSION_FIELD_NUMBER: _builtins.int - LAUNCH_STAGE_FIELD_NUMBER: _builtins.int - REST_NUMERIC_ENUMS_FIELD_NUMBER: _builtins.int - JAVA_SETTINGS_FIELD_NUMBER: _builtins.int - CPP_SETTINGS_FIELD_NUMBER: _builtins.int - PHP_SETTINGS_FIELD_NUMBER: _builtins.int - PYTHON_SETTINGS_FIELD_NUMBER: _builtins.int - NODE_SETTINGS_FIELD_NUMBER: _builtins.int - DOTNET_SETTINGS_FIELD_NUMBER: _builtins.int - RUBY_SETTINGS_FIELD_NUMBER: _builtins.int - GO_SETTINGS_FIELD_NUMBER: _builtins.int - version: _builtins.str - 'Version of the API to apply these settings to. This is the full protobuf\n package for the API, ending in the version element.\n Examples: "google.cloud.speech.v1" and "google.spanner.admin.database.v1".\n ' - launch_stage: _launch_stage_pb2.LaunchStage.ValueType - 'Launch stage of this version of the API.' - rest_numeric_enums: _builtins.bool - 'When using transport=rest, the client request will encode enums as\n numbers rather than strings.\n ' - - @_builtins.property - def java_settings(self) -> Global___JavaSettings: - """Settings for legacy Java features, supported in the Service YAML.""" - - @_builtins.property - def cpp_settings(self) -> Global___CppSettings: - """Settings for C++ client libraries.""" - - @_builtins.property - def php_settings(self) -> Global___PhpSettings: - """Settings for PHP client libraries.""" - - @_builtins.property - def python_settings(self) -> Global___PythonSettings: - """Settings for Python client libraries.""" - - @_builtins.property - def node_settings(self) -> Global___NodeSettings: - """Settings for Node client libraries.""" - - @_builtins.property - def dotnet_settings(self) -> Global___DotnetSettings: - """Settings for .NET client libraries.""" - - @_builtins.property - def ruby_settings(self) -> Global___RubySettings: - """Settings for Ruby client libraries.""" - - @_builtins.property - def go_settings(self) -> Global___GoSettings: - """Settings for Go client libraries.""" - - def __init__(self, *, version: _builtins.str=..., launch_stage: _launch_stage_pb2.LaunchStage.ValueType=..., rest_numeric_enums: _builtins.bool=..., java_settings: Global___JavaSettings | None=..., cpp_settings: Global___CppSettings | None=..., php_settings: Global___PhpSettings | None=..., python_settings: Global___PythonSettings | None=..., node_settings: Global___NodeSettings | None=..., dotnet_settings: Global___DotnetSettings | None=..., ruby_settings: Global___RubySettings | None=..., go_settings: Global___GoSettings | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['cpp_settings', b'cpp_settings', 'dotnet_settings', b'dotnet_settings', 'go_settings', b'go_settings', 'java_settings', b'java_settings', 'node_settings', b'node_settings', 'php_settings', b'php_settings', 'python_settings', b'python_settings', 'ruby_settings', b'ruby_settings'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['cpp_settings', b'cpp_settings', 'dotnet_settings', b'dotnet_settings', 'go_settings', b'go_settings', 'java_settings', b'java_settings', 'launch_stage', b'launch_stage', 'node_settings', b'node_settings', 'php_settings', b'php_settings', 'python_settings', b'python_settings', 'rest_numeric_enums', b'rest_numeric_enums', 'ruby_settings', b'ruby_settings', 'version', b'version'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___ClientLibrarySettings: _TypeAlias = ClientLibrarySettings - -@_typing.final -class Publishing(_message.Message): - """This message configures the settings for publishing [Google Cloud Client - libraries](https://cloud.google.com/apis/docs/cloud-client-libraries) - generated from the service config. - """ - DESCRIPTOR: _descriptor.Descriptor - METHOD_SETTINGS_FIELD_NUMBER: _builtins.int - NEW_ISSUE_URI_FIELD_NUMBER: _builtins.int - DOCUMENTATION_URI_FIELD_NUMBER: _builtins.int - API_SHORT_NAME_FIELD_NUMBER: _builtins.int - GITHUB_LABEL_FIELD_NUMBER: _builtins.int - CODEOWNER_GITHUB_TEAMS_FIELD_NUMBER: _builtins.int - DOC_TAG_PREFIX_FIELD_NUMBER: _builtins.int - ORGANIZATION_FIELD_NUMBER: _builtins.int - LIBRARY_SETTINGS_FIELD_NUMBER: _builtins.int - PROTO_REFERENCE_DOCUMENTATION_URI_FIELD_NUMBER: _builtins.int - REST_REFERENCE_DOCUMENTATION_URI_FIELD_NUMBER: _builtins.int - new_issue_uri: _builtins.str - 'Link to a *public* URI where users can report issues. Example:\n https://issuetracker.google.com/issues/new?component=190865&template=1161103\n ' - documentation_uri: _builtins.str - 'Link to product home page. Example:\n https://cloud.google.com/asset-inventory/docs/overview\n ' - api_short_name: _builtins.str - 'Used as a tracking tag when collecting data about the APIs developer\n relations artifacts like docs, packages delivered to package managers,\n etc. Example: "speech".\n ' - github_label: _builtins.str - 'GitHub label to apply to issues and pull requests opened for this API.' - doc_tag_prefix: _builtins.str - 'A prefix used in sample code when demarking regions to be included in\n documentation.\n ' - organization: Global___ClientLibraryOrganization.ValueType - 'For whom the client library is being published.' - proto_reference_documentation_uri: _builtins.str - 'Optional link to proto reference documentation. Example:\n https://cloud.google.com/pubsub/lite/docs/reference/rpc\n ' - rest_reference_documentation_uri: _builtins.str - 'Optional link to REST reference documentation. Example:\n https://cloud.google.com/pubsub/lite/docs/reference/rest\n ' - - @_builtins.property - def method_settings(self) -> _containers.RepeatedCompositeFieldContainer[Global___MethodSettings]: - """A list of API method settings, e.g. the behavior for methods that use the - long-running operation pattern. - """ - - @_builtins.property - def codeowner_github_teams(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: - """GitHub teams to be added to CODEOWNERS in the directory in GitHub - containing source code for the client libraries for this API. - """ - - @_builtins.property - def library_settings(self) -> _containers.RepeatedCompositeFieldContainer[Global___ClientLibrarySettings]: - """Client library settings. If the same version string appears multiple - times in this list, then the last one wins. Settings from earlier - settings with the same version string are discarded. - """ - - def __init__(self, *, method_settings: _abc.Iterable[Global___MethodSettings] | None=..., new_issue_uri: _builtins.str=..., documentation_uri: _builtins.str=..., api_short_name: _builtins.str=..., github_label: _builtins.str=..., codeowner_github_teams: _abc.Iterable[_builtins.str] | None=..., doc_tag_prefix: _builtins.str=..., organization: Global___ClientLibraryOrganization.ValueType=..., library_settings: _abc.Iterable[Global___ClientLibrarySettings] | None=..., proto_reference_documentation_uri: _builtins.str=..., rest_reference_documentation_uri: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['api_short_name', b'api_short_name', 'codeowner_github_teams', b'codeowner_github_teams', 'doc_tag_prefix', b'doc_tag_prefix', 'documentation_uri', b'documentation_uri', 'github_label', b'github_label', 'library_settings', b'library_settings', 'method_settings', b'method_settings', 'new_issue_uri', b'new_issue_uri', 'organization', b'organization', 'proto_reference_documentation_uri', b'proto_reference_documentation_uri', 'rest_reference_documentation_uri', b'rest_reference_documentation_uri'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___Publishing: _TypeAlias = Publishing - -@_typing.final -class JavaSettings(_message.Message): - """Settings for Java client libraries.""" - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class ServiceClassNamesEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.str - value: _builtins.str - - def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - LIBRARY_PACKAGE_FIELD_NUMBER: _builtins.int - SERVICE_CLASS_NAMES_FIELD_NUMBER: _builtins.int - COMMON_FIELD_NUMBER: _builtins.int - library_package: _builtins.str - 'The package name to use in Java. Clobbers the java_package option\n set in the protobuf. This should be used **only** by APIs\n who have already set the language_settings.java.package_name" field\n in gapic.yaml. API teams should use the protobuf java_package option\n where possible.\n\n Example of a YAML configuration::\n\n publishing:\n java_settings:\n library_package: com.google.cloud.pubsub.v1\n ' - - @_builtins.property - def service_class_names(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: - """Configure the Java class name to use instead of the service's for its - corresponding generated GAPIC client. Keys are fully-qualified - service names as they appear in the protobuf (including the full - the language_settings.java.interface_names" field in gapic.yaml. API - teams should otherwise use the service name as it appears in the - protobuf. - - Example of a YAML configuration:: - - publishing: - java_settings: - service_class_names: - - google.pubsub.v1.Publisher: TopicAdmin - - google.pubsub.v1.Subscriber: SubscriptionAdmin - """ - - @_builtins.property - def common(self) -> Global___CommonLanguageSettings: - """Some settings.""" - - def __init__(self, *, library_package: _builtins.str=..., service_class_names: _abc.Mapping[_builtins.str, _builtins.str] | None=..., common: Global___CommonLanguageSettings | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common', 'library_package', b'library_package', 'service_class_names', b'service_class_names'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___JavaSettings: _TypeAlias = JavaSettings - -@_typing.final -class CppSettings(_message.Message): - """Settings for C++ client libraries.""" - DESCRIPTOR: _descriptor.Descriptor - COMMON_FIELD_NUMBER: _builtins.int - - @_builtins.property - def common(self) -> Global___CommonLanguageSettings: - """Some settings.""" - - def __init__(self, *, common: Global___CommonLanguageSettings | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___CppSettings: _TypeAlias = CppSettings - -@_typing.final -class PhpSettings(_message.Message): - """Settings for Php client libraries.""" - DESCRIPTOR: _descriptor.Descriptor - COMMON_FIELD_NUMBER: _builtins.int - - @_builtins.property - def common(self) -> Global___CommonLanguageSettings: - """Some settings.""" - - def __init__(self, *, common: Global___CommonLanguageSettings | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___PhpSettings: _TypeAlias = PhpSettings - -@_typing.final -class PythonSettings(_message.Message): - """Settings for Python client libraries.""" - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class ExperimentalFeatures(_message.Message): - """Experimental features to be included during client library generation. - These fields will be deprecated once the feature graduates and is enabled - by default. - """ - DESCRIPTOR: _descriptor.Descriptor - REST_ASYNC_IO_ENABLED_FIELD_NUMBER: _builtins.int - PROTOBUF_PYTHONIC_TYPES_ENABLED_FIELD_NUMBER: _builtins.int - UNVERSIONED_PACKAGE_DISABLED_FIELD_NUMBER: _builtins.int - rest_async_io_enabled: _builtins.bool - 'Enables generation of asynchronous REST clients if `rest` transport is\n enabled. By default, asynchronous REST clients will not be generated.\n This feature will be enabled by default 1 month after launching the\n feature in preview packages.\n ' - protobuf_pythonic_types_enabled: _builtins.bool - 'Enables generation of protobuf code using new types that are more\n Pythonic which are included in `protobuf>=5.29.x`. This feature will be\n enabled by default 1 month after launching the feature in preview\n packages.\n ' - unversioned_package_disabled: _builtins.bool - 'Disables generation of an unversioned Python package for this client\n library. This means that the module names will need to be versioned in\n import statements. For example `import google.cloud.library_v2` instead\n of `import google.cloud.library`.\n ' - - def __init__(self, *, rest_async_io_enabled: _builtins.bool=..., protobuf_pythonic_types_enabled: _builtins.bool=..., unversioned_package_disabled: _builtins.bool=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['protobuf_pythonic_types_enabled', b'protobuf_pythonic_types_enabled', 'rest_async_io_enabled', b'rest_async_io_enabled', 'unversioned_package_disabled', b'unversioned_package_disabled'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - COMMON_FIELD_NUMBER: _builtins.int - EXPERIMENTAL_FEATURES_FIELD_NUMBER: _builtins.int - - @_builtins.property - def common(self) -> Global___CommonLanguageSettings: - """Some settings.""" - - @_builtins.property - def experimental_features(self) -> Global___PythonSettings.ExperimentalFeatures: - """Experimental features to be included during client library generation.""" - - def __init__(self, *, common: Global___CommonLanguageSettings | None=..., experimental_features: Global___PythonSettings.ExperimentalFeatures | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common', 'experimental_features', b'experimental_features'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common', 'experimental_features', b'experimental_features'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___PythonSettings: _TypeAlias = PythonSettings - -@_typing.final -class NodeSettings(_message.Message): - """Settings for Node client libraries.""" - DESCRIPTOR: _descriptor.Descriptor - COMMON_FIELD_NUMBER: _builtins.int - - @_builtins.property - def common(self) -> Global___CommonLanguageSettings: - """Some settings.""" - - def __init__(self, *, common: Global___CommonLanguageSettings | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___NodeSettings: _TypeAlias = NodeSettings - -@_typing.final -class DotnetSettings(_message.Message): - """Settings for Dotnet client libraries.""" - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class RenamedServicesEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.str - value: _builtins.str - - def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class RenamedResourcesEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.str - value: _builtins.str - - def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - COMMON_FIELD_NUMBER: _builtins.int - RENAMED_SERVICES_FIELD_NUMBER: _builtins.int - RENAMED_RESOURCES_FIELD_NUMBER: _builtins.int - IGNORED_RESOURCES_FIELD_NUMBER: _builtins.int - FORCED_NAMESPACE_ALIASES_FIELD_NUMBER: _builtins.int - HANDWRITTEN_SIGNATURES_FIELD_NUMBER: _builtins.int - - @_builtins.property - def common(self) -> Global___CommonLanguageSettings: - """Some settings.""" - - @_builtins.property - def renamed_services(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: - """Map from original service names to renamed versions. - This is used when the default generated types - would cause a naming conflict. (Neither name is - fully-qualified.) - Example: Subscriber to SubscriberServiceApi. - """ - - @_builtins.property - def renamed_resources(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: - """Map from full resource types to the effective short name - for the resource. This is used when otherwise resource - named from different services would cause naming collisions. - Example entry: - "datalabeling.googleapis.com/Dataset": "DataLabelingDataset" - """ - - @_builtins.property - def ignored_resources(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: - """List of full resource types to ignore during generation. - This is typically used for API-specific Location resources, - which should be handled by the generator as if they were actually - the common Location resources. - Example entry: "documentai.googleapis.com/Location" - """ - - @_builtins.property - def forced_namespace_aliases(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: - """Namespaces which must be aliased in snippets due to - a known (but non-generator-predictable) naming collision - """ - - @_builtins.property - def handwritten_signatures(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: - """Method signatures (in the form "service.method(signature)") - which are provided separately, so shouldn't be generated. - Snippets *calling* these methods are still generated, however. - """ - - def __init__(self, *, common: Global___CommonLanguageSettings | None=..., renamed_services: _abc.Mapping[_builtins.str, _builtins.str] | None=..., renamed_resources: _abc.Mapping[_builtins.str, _builtins.str] | None=..., ignored_resources: _abc.Iterable[_builtins.str] | None=..., forced_namespace_aliases: _abc.Iterable[_builtins.str] | None=..., handwritten_signatures: _abc.Iterable[_builtins.str] | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common', 'forced_namespace_aliases', b'forced_namespace_aliases', 'handwritten_signatures', b'handwritten_signatures', 'ignored_resources', b'ignored_resources', 'renamed_resources', b'renamed_resources', 'renamed_services', b'renamed_services'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___DotnetSettings: _TypeAlias = DotnetSettings - -@_typing.final -class RubySettings(_message.Message): - """Settings for Ruby client libraries.""" - DESCRIPTOR: _descriptor.Descriptor - COMMON_FIELD_NUMBER: _builtins.int - - @_builtins.property - def common(self) -> Global___CommonLanguageSettings: - """Some settings.""" - - def __init__(self, *, common: Global___CommonLanguageSettings | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___RubySettings: _TypeAlias = RubySettings - -@_typing.final -class GoSettings(_message.Message): - """Settings for Go client libraries.""" - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class RenamedServicesEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.str - value: _builtins.str - - def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - COMMON_FIELD_NUMBER: _builtins.int - RENAMED_SERVICES_FIELD_NUMBER: _builtins.int - - @_builtins.property - def common(self) -> Global___CommonLanguageSettings: - """Some settings.""" - - @_builtins.property - def renamed_services(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: - """Map of service names to renamed services. Keys are the package relative - service names and values are the name to be used for the service client - and call options. - - publishing: - go_settings: - renamed_services: - Publisher: TopicAdmin - """ - - def __init__(self, *, common: Global___CommonLanguageSettings | None=..., renamed_services: _abc.Mapping[_builtins.str, _builtins.str] | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['common', b'common'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['common', b'common', 'renamed_services', b'renamed_services'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___GoSettings: _TypeAlias = GoSettings - -@_typing.final -class MethodSettings(_message.Message): - """Describes the generator configuration for a method.""" - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class LongRunning(_message.Message): - """Describes settings to use when generating API methods that use the - long-running operation pattern. - All default values below are from those used in the client library - generators (e.g. - [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)). - """ - DESCRIPTOR: _descriptor.Descriptor - INITIAL_POLL_DELAY_FIELD_NUMBER: _builtins.int - POLL_DELAY_MULTIPLIER_FIELD_NUMBER: _builtins.int - MAX_POLL_DELAY_FIELD_NUMBER: _builtins.int - TOTAL_POLL_TIMEOUT_FIELD_NUMBER: _builtins.int - poll_delay_multiplier: _builtins.float - 'Multiplier to gradually increase delay between subsequent polls until it\n reaches max_poll_delay.\n Default value: 1.5.\n ' - - @_builtins.property - def initial_poll_delay(self) -> _duration_pb2.Duration: - """Initial delay after which the first poll request will be made. - Default value: 5 seconds. - """ - - @_builtins.property - def max_poll_delay(self) -> _duration_pb2.Duration: - """Maximum time between two subsequent poll requests. - Default value: 45 seconds. - """ - - @_builtins.property - def total_poll_timeout(self) -> _duration_pb2.Duration: - """Total polling timeout. - Default value: 5 minutes. - """ - - def __init__(self, *, initial_poll_delay: _duration_pb2.Duration | None=..., poll_delay_multiplier: _builtins.float=..., max_poll_delay: _duration_pb2.Duration | None=..., total_poll_timeout: _duration_pb2.Duration | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['initial_poll_delay', b'initial_poll_delay', 'max_poll_delay', b'max_poll_delay', 'total_poll_timeout', b'total_poll_timeout'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['initial_poll_delay', b'initial_poll_delay', 'max_poll_delay', b'max_poll_delay', 'poll_delay_multiplier', b'poll_delay_multiplier', 'total_poll_timeout', b'total_poll_timeout'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - SELECTOR_FIELD_NUMBER: _builtins.int - LONG_RUNNING_FIELD_NUMBER: _builtins.int - AUTO_POPULATED_FIELDS_FIELD_NUMBER: _builtins.int - selector: _builtins.str - 'The fully qualified name of the method, for which the options below apply.\n This is used to find the method to apply the options.\n\n Example:\n\n publishing:\n method_settings:\n - selector: google.storage.control.v2.StorageControl.CreateFolder\n # method settings for CreateFolder...\n ' - - @_builtins.property - def long_running(self) -> Global___MethodSettings.LongRunning: - """Describes settings to use for long-running operations when generating - API methods for RPCs. Complements RPCs that use the annotations in - google/longrunning/operations.proto. - - Example of a YAML configuration:: - - publishing: - method_settings: - - selector: google.cloud.speech.v2.Speech.BatchRecognize - long_running: - initial_poll_delay: 60s # 1 minute - poll_delay_multiplier: 1.5 - max_poll_delay: 360s # 6 minutes - total_poll_timeout: 54000s # 90 minutes - """ - - @_builtins.property - def auto_populated_fields(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: - """List of top-level fields of the request message, that should be - automatically populated by the client libraries based on their - (google.api.field_info).format. Currently supported format: UUID4. - - Example of a YAML configuration: - - publishing: - method_settings: - - selector: google.example.v1.ExampleService.CreateExample - auto_populated_fields: - - request_id - """ - - def __init__(self, *, selector: _builtins.str=..., long_running: Global___MethodSettings.LongRunning | None=..., auto_populated_fields: _abc.Iterable[_builtins.str] | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['long_running', b'long_running'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['auto_populated_fields', b'auto_populated_fields', 'long_running', b'long_running', 'selector', b'selector'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___MethodSettings: _TypeAlias = MethodSettings - -@_typing.final -class SelectiveGapicGeneration(_message.Message): - """This message is used to configure the generation of a subset of the RPCs in - a service for client libraries. - """ - DESCRIPTOR: _descriptor.Descriptor - METHODS_FIELD_NUMBER: _builtins.int - GENERATE_OMITTED_AS_INTERNAL_FIELD_NUMBER: _builtins.int - generate_omitted_as_internal: _builtins.bool - 'Setting this to true indicates to the client generators that methods\n that would be excluded from the generation should instead be generated\n in a way that indicates these methods should not be consumed by\n end users. How this is expressed is up to individual language\n implementations to decide. Some examples may be: added annotations,\n obfuscated identifiers, or other language idiomatic patterns.\n ' - - @_builtins.property - def methods(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: - """An allowlist of the fully qualified names of RPCs that should be included - on public client surfaces. - """ - - def __init__(self, *, methods: _abc.Iterable[_builtins.str] | None=..., generate_omitted_as_internal: _builtins.bool=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['generate_omitted_as_internal', b'generate_omitted_as_internal', 'methods', b'methods'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___SelectiveGapicGeneration: _TypeAlias = SelectiveGapicGeneration -METHOD_SIGNATURE_FIELD_NUMBER: _builtins.int -DEFAULT_HOST_FIELD_NUMBER: _builtins.int -OAUTH_SCOPES_FIELD_NUMBER: _builtins.int -API_VERSION_FIELD_NUMBER: _builtins.int -method_signature: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.MethodOptions, _containers.RepeatedScalarFieldContainer[_builtins.str]] -'A definition of a client library method signature.\n\nIn client libraries, each proto RPC corresponds to one or more methods\nwhich the end user is able to call, and calls the underlying RPC.\nNormally, this method receives a single argument (a struct or instance\ncorresponding to the RPC request object). Defining this field will\nadd one or more overloads providing flattened or simpler method signatures\nin some languages.\n\nThe fields on the method signature are provided as a comma-separated\nstring.\n\nFor example, the proto RPC and annotation:\n\n rpc CreateSubscription(CreateSubscriptionRequest)\n returns (Subscription) {\n option (google.api.method_signature) = "name,topic";\n }\n\nWould add the following Java overload (in addition to the method accepting\nthe request object):\n\n public final Subscription createSubscription(String name, String topic)\n\nThe following backwards-compatibility guidelines apply:\n\n * Adding this annotation to an unannotated method is backwards\n compatible.\n * Adding this annotation to a method which already has existing\n method signature annotations is backwards compatible if and only if\n the new method signature annotation is last in the sequence.\n * Modifying or removing an existing method signature annotation is\n a breaking change.\n * Re-ordering existing method signature annotations is a breaking\n change.\n' -default_host: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.ServiceOptions, _builtins.str] -'The hostname for this service.\nThis should be specified with no prefix or protocol.\n\nExample:\n\n service Foo {\n option (google.api.default_host) = "foo.googleapi.com";\n ...\n }\n' -oauth_scopes: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.ServiceOptions, _builtins.str] -'OAuth scopes needed for the client.\n\nExample:\n\n service Foo {\n option (google.api.oauth_scopes) = \\\n "https://www.googleapis.com/auth/cloud-platform";\n ...\n }\n\nIf there is more than one scope, use a comma-separated string:\n\nExample:\n\n service Foo {\n option (google.api.oauth_scopes) = \\\n "https://www.googleapis.com/auth/cloud-platform,"\n "https://www.googleapis.com/auth/monitoring";\n ...\n }\n' -api_version: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.ServiceOptions, _builtins.str] -'The API version of this service, which should be sent by version-aware\nclients to the service. This allows services to abide by the schema and\nbehavior of the service at the time this API version was deployed.\nThe format of the API version must be treated as opaque by clients.\nServices may use a format with an apparent structure, but clients must\nnot rely on this to determine components within an API version, or attempt\nto construct other valid API versions. Note that this is for upcoming\nfunctionality and may not be implemented for all services.\n\nExample:\n\n service Foo {\n option (google.api.api_version) = "v1_20230821_preview";\n }\n' \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/__init__.py b/src/viam/gen/google/api/expr/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/expr/v1alpha1/__init__.py b/src/viam/gen/google/api/expr/v1alpha1/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/expr/v1alpha1/checked_grpc.py b/src/viam/gen/google/api/expr/v1alpha1/checked_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/expr/v1alpha1/checked_pb2.py b/src/viam/gen/google/api/expr/v1alpha1/checked_pb2.py deleted file mode 100644 index b97cc00ced..0000000000 --- a/src/viam/gen/google/api/expr/v1alpha1/checked_pb2.py +++ /dev/null @@ -1,52 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1alpha1/checked.proto') -_sym_db = _symbol_database.Default() -from .....google.api.expr.v1alpha1 import syntax_pb2 as google_dot_api_dot_expr_dot_v1alpha1_dot_syntax__pb2 -from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&google/api/expr/v1alpha1/checked.proto\x12\x18google.api.expr.v1alpha1\x1a%google/api/expr/v1alpha1/syntax.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto"\x9a\x04\n\x0bCheckedExpr\x12\\\n\rreference_map\x18\x02 \x03(\x0b27.google.api.expr.v1alpha1.CheckedExpr.ReferenceMapEntryR\x0creferenceMap\x12M\n\x08type_map\x18\x03 \x03(\x0b22.google.api.expr.v1alpha1.CheckedExpr.TypeMapEntryR\x07typeMap\x12E\n\x0bsource_info\x18\x05 \x01(\x0b2$.google.api.expr.v1alpha1.SourceInfoR\nsourceInfo\x12!\n\x0cexpr_version\x18\x06 \x01(\tR\x0bexprVersion\x122\n\x04expr\x18\x04 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x04expr\x1ad\n\x11ReferenceMapEntry\x12\x10\n\x03key\x18\x01 \x01(\x03R\x03key\x129\n\x05value\x18\x02 \x01(\x0b2#.google.api.expr.v1alpha1.ReferenceR\x05value:\x028\x01\x1aZ\n\x0cTypeMapEntry\x12\x10\n\x03key\x18\x01 \x01(\x03R\x03key\x124\n\x05value\x18\x02 \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\x05value:\x028\x01"\xc8\x0b\n\x04Type\x12*\n\x03dyn\x18\x01 \x01(\x0b2\x16.google.protobuf.EmptyH\x00R\x03dyn\x120\n\x04null\x18\x02 \x01(\x0e2\x1a.google.protobuf.NullValueH\x00R\x04null\x12L\n\tprimitive\x18\x03 \x01(\x0e2,.google.api.expr.v1alpha1.Type.PrimitiveTypeH\x00R\tprimitive\x12H\n\x07wrapper\x18\x04 \x01(\x0e2,.google.api.expr.v1alpha1.Type.PrimitiveTypeH\x00R\x07wrapper\x12M\n\nwell_known\x18\x05 \x01(\x0e2,.google.api.expr.v1alpha1.Type.WellKnownTypeH\x00R\twellKnown\x12F\n\tlist_type\x18\x06 \x01(\x0b2\'.google.api.expr.v1alpha1.Type.ListTypeH\x00R\x08listType\x12C\n\x08map_type\x18\x07 \x01(\x0b2&.google.api.expr.v1alpha1.Type.MapTypeH\x00R\x07mapType\x12I\n\x08function\x18\x08 \x01(\x0b2+.google.api.expr.v1alpha1.Type.FunctionTypeH\x00R\x08function\x12#\n\x0cmessage_type\x18\t \x01(\tH\x00R\x0bmessageType\x12\x1f\n\ntype_param\x18\n \x01(\tH\x00R\ttypeParam\x124\n\x04type\x18\x0b \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeH\x00R\x04type\x12.\n\x05error\x18\x0c \x01(\x0b2\x16.google.protobuf.EmptyH\x00R\x05error\x12R\n\rabstract_type\x18\x0e \x01(\x0b2+.google.api.expr.v1alpha1.Type.AbstractTypeH\x00R\x0cabstractType\x1aG\n\x08ListType\x12;\n\telem_type\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\x08elemType\x1a\x83\x01\n\x07MapType\x129\n\x08key_type\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\x07keyType\x12=\n\nvalue_type\x18\x02 \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\tvalueType\x1a\x8c\x01\n\x0cFunctionType\x12?\n\x0bresult_type\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\nresultType\x12;\n\targ_types\x18\x02 \x03(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\x08argTypes\x1ak\n\x0cAbstractType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12G\n\x0fparameter_types\x18\x02 \x03(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\x0eparameterTypes"s\n\rPrimitiveType\x12\x1e\n\x1aPRIMITIVE_TYPE_UNSPECIFIED\x10\x00\x12\x08\n\x04BOOL\x10\x01\x12\t\n\x05INT64\x10\x02\x12\n\n\x06UINT64\x10\x03\x12\n\n\x06DOUBLE\x10\x04\x12\n\n\x06STRING\x10\x05\x12\t\n\x05BYTES\x10\x06"V\n\rWellKnownType\x12\x1f\n\x1bWELL_KNOWN_TYPE_UNSPECIFIED\x10\x00\x12\x07\n\x03ANY\x10\x01\x12\r\n\tTIMESTAMP\x10\x02\x12\x0c\n\x08DURATION\x10\x03B\x0b\n\ttype_kind"\xb3\x05\n\x04Decl\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12@\n\x05ident\x18\x02 \x01(\x0b2(.google.api.expr.v1alpha1.Decl.IdentDeclH\x00R\x05ident\x12I\n\x08function\x18\x03 \x01(\x0b2+.google.api.expr.v1alpha1.Decl.FunctionDeclH\x00R\x08function\x1a\x8b\x01\n\tIdentDecl\x122\n\x04type\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\x04type\x128\n\x05value\x18\x02 \x01(\x0b2".google.api.expr.v1alpha1.ConstantR\x05value\x12\x10\n\x03doc\x18\x03 \x01(\tR\x03doc\x1a\xee\x02\n\x0cFunctionDecl\x12R\n\toverloads\x18\x01 \x03(\x0b24.google.api.expr.v1alpha1.Decl.FunctionDecl.OverloadR\toverloads\x1a\x89\x02\n\x08Overload\x12\x1f\n\x0boverload_id\x18\x01 \x01(\tR\noverloadId\x126\n\x06params\x18\x02 \x03(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\x06params\x12\x1f\n\x0btype_params\x18\x03 \x03(\tR\ntypeParams\x12?\n\x0bresult_type\x18\x04 \x01(\x0b2\x1e.google.api.expr.v1alpha1.TypeR\nresultType\x120\n\x14is_instance_function\x18\x05 \x01(\x08R\x12isInstanceFunction\x12\x10\n\x03doc\x18\x06 \x01(\tR\x03docB\x0b\n\tdecl_kind"z\n\tReference\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x0boverload_id\x18\x03 \x03(\tR\noverloadId\x128\n\x05value\x18\x04 \x01(\x0b2".google.api.expr.v1alpha1.ConstantR\x05valueBl\n\x1ccom.google.api.expr.v1alpha1B\tDeclProtoP\x01Z= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class CheckedExpr(_message.Message): - """Protos for representing CEL declarations and typed checked expressions. - - A CEL expression which has been successfully type checked. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class ReferenceMapEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.int - - @_builtins.property - def value(self) -> Global___Reference: - ... - - def __init__(self, *, key: _builtins.int=..., value: Global___Reference | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class TypeMapEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.int - - @_builtins.property - def value(self) -> Global___Type: - ... - - def __init__(self, *, key: _builtins.int=..., value: Global___Type | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - REFERENCE_MAP_FIELD_NUMBER: _builtins.int - TYPE_MAP_FIELD_NUMBER: _builtins.int - SOURCE_INFO_FIELD_NUMBER: _builtins.int - EXPR_VERSION_FIELD_NUMBER: _builtins.int - EXPR_FIELD_NUMBER: _builtins.int - expr_version: _builtins.str - 'The expr version indicates the major / minor version number of the `expr`\n representation.\n\n The most common reason for a version change will be to indicate to the CEL\n runtimes that transformations have been performed on the expr during static\n analysis. In some cases, this will save the runtime the work of applying\n the same or similar transformations prior to evaluation.\n ' - - @_builtins.property - def reference_map(self) -> _containers.MessageMap[_builtins.int, Global___Reference]: - """A map from expression ids to resolved references. - - The following entries are in this table: - - - An Ident or Select expression is represented here if it resolves to a - declaration. For instance, if `a.b.c` is represented by - `select(select(id(a), b), c)`, and `a.b` resolves to a declaration, - while `c` is a field selection, then the reference is attached to the - nested select expression (but not to the id or or the outer select). - In turn, if `a` resolves to a declaration and `b.c` are field selections, - the reference is attached to the ident expression. - - Every Call expression has an entry here, identifying the function being - called. - - Every CreateStruct expression for a message has an entry, identifying - the message. - """ - - @_builtins.property - def type_map(self) -> _containers.MessageMap[_builtins.int, Global___Type]: - """A map from expression ids to types. - - Every expression node which has a type different than DYN has a mapping - here. If an expression has type DYN, it is omitted from this map to save - space. - """ - - @_builtins.property - def source_info(self) -> _syntax_pb2.SourceInfo: - """The source info derived from input that generated the parsed `expr` and - any optimizations made during the type-checking pass. - """ - - @_builtins.property - def expr(self) -> _syntax_pb2.Expr: - """The checked expression. Semantically equivalent to the parsed `expr`, but - may have structural differences. - """ - - def __init__(self, *, reference_map: _abc.Mapping[_builtins.int, Global___Reference] | None=..., type_map: _abc.Mapping[_builtins.int, Global___Type] | None=..., source_info: _syntax_pb2.SourceInfo | None=..., expr_version: _builtins.str=..., expr: _syntax_pb2.Expr | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'source_info', b'source_info'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'expr_version', b'expr_version', 'reference_map', b'reference_map', 'source_info', b'source_info', 'type_map', b'type_map'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___CheckedExpr: _TypeAlias = CheckedExpr - -@_typing.final -class Type(_message.Message): - """Represents a CEL type.""" - DESCRIPTOR: _descriptor.Descriptor - - class _PrimitiveType: - ValueType = _typing.NewType('ValueType', _builtins.int) - V: _TypeAlias = ValueType - - class _PrimitiveTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[Type._PrimitiveType.ValueType], _builtins.type): - DESCRIPTOR: _descriptor.EnumDescriptor - PRIMITIVE_TYPE_UNSPECIFIED: Type._PrimitiveType.ValueType - 'Unspecified type.' - BOOL: Type._PrimitiveType.ValueType - 'Boolean type.' - INT64: Type._PrimitiveType.ValueType - 'Int64 type.\n\n Proto-based integer values are widened to int64.\n ' - UINT64: Type._PrimitiveType.ValueType - 'Uint64 type.\n\n Proto-based unsigned integer values are widened to uint64.\n ' - DOUBLE: Type._PrimitiveType.ValueType - 'Double type.\n\n Proto-based float values are widened to double values.\n ' - STRING: Type._PrimitiveType.ValueType - 'String type.' - BYTES: Type._PrimitiveType.ValueType - 'Bytes type.' - - class PrimitiveType(_PrimitiveType, metaclass=_PrimitiveTypeEnumTypeWrapper): - """CEL primitive types.""" - PRIMITIVE_TYPE_UNSPECIFIED: Type.PrimitiveType.ValueType - 'Unspecified type.' - BOOL: Type.PrimitiveType.ValueType - 'Boolean type.' - INT64: Type.PrimitiveType.ValueType - 'Int64 type.\n\n Proto-based integer values are widened to int64.\n ' - UINT64: Type.PrimitiveType.ValueType - 'Uint64 type.\n\n Proto-based unsigned integer values are widened to uint64.\n ' - DOUBLE: Type.PrimitiveType.ValueType - 'Double type.\n\n Proto-based float values are widened to double values.\n ' - STRING: Type.PrimitiveType.ValueType - 'String type.' - BYTES: Type.PrimitiveType.ValueType - 'Bytes type.' - - class _WellKnownType: - ValueType = _typing.NewType('ValueType', _builtins.int) - V: _TypeAlias = ValueType - - class _WellKnownTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[Type._WellKnownType.ValueType], _builtins.type): - DESCRIPTOR: _descriptor.EnumDescriptor - WELL_KNOWN_TYPE_UNSPECIFIED: Type._WellKnownType.ValueType - 'Unspecified type.' - ANY: Type._WellKnownType.ValueType - 'Well-known protobuf.Any type.\n\n Any types are a polymorphic message type. During type-checking they are\n treated like `DYN` types, but at runtime they are resolved to a specific\n message type specified at evaluation time.\n ' - TIMESTAMP: Type._WellKnownType.ValueType - 'Well-known protobuf.Timestamp type, internally referenced as `timestamp`.' - DURATION: Type._WellKnownType.ValueType - 'Well-known protobuf.Duration type, internally referenced as `duration`.' - - class WellKnownType(_WellKnownType, metaclass=_WellKnownTypeEnumTypeWrapper): - """Well-known protobuf types treated with first-class support in CEL.""" - WELL_KNOWN_TYPE_UNSPECIFIED: Type.WellKnownType.ValueType - 'Unspecified type.' - ANY: Type.WellKnownType.ValueType - 'Well-known protobuf.Any type.\n\n Any types are a polymorphic message type. During type-checking they are\n treated like `DYN` types, but at runtime they are resolved to a specific\n message type specified at evaluation time.\n ' - TIMESTAMP: Type.WellKnownType.ValueType - 'Well-known protobuf.Timestamp type, internally referenced as `timestamp`.' - DURATION: Type.WellKnownType.ValueType - 'Well-known protobuf.Duration type, internally referenced as `duration`.' - - @_typing.final - class ListType(_message.Message): - """List type with typed elements, e.g. `list`.""" - DESCRIPTOR: _descriptor.Descriptor - ELEM_TYPE_FIELD_NUMBER: _builtins.int - - @_builtins.property - def elem_type(self) -> Global___Type: - """The element type.""" - - def __init__(self, *, elem_type: Global___Type | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['elem_type', b'elem_type'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['elem_type', b'elem_type'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class MapType(_message.Message): - """Map type with parameterized key and value types, e.g. `map`.""" - DESCRIPTOR: _descriptor.Descriptor - KEY_TYPE_FIELD_NUMBER: _builtins.int - VALUE_TYPE_FIELD_NUMBER: _builtins.int - - @_builtins.property - def key_type(self) -> Global___Type: - """The type of the key.""" - - @_builtins.property - def value_type(self) -> Global___Type: - """The type of the value.""" - - def __init__(self, *, key_type: Global___Type | None=..., value_type: Global___Type | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['key_type', b'key_type', 'value_type', b'value_type'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key_type', b'key_type', 'value_type', b'value_type'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class FunctionType(_message.Message): - """Function type with result and arg types.""" - DESCRIPTOR: _descriptor.Descriptor - RESULT_TYPE_FIELD_NUMBER: _builtins.int - ARG_TYPES_FIELD_NUMBER: _builtins.int - - @_builtins.property - def result_type(self) -> Global___Type: - """Result type of the function.""" - - @_builtins.property - def arg_types(self) -> _containers.RepeatedCompositeFieldContainer[Global___Type]: - """Argument types of the function.""" - - def __init__(self, *, result_type: Global___Type | None=..., arg_types: _abc.Iterable[Global___Type] | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['result_type', b'result_type'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['arg_types', b'arg_types', 'result_type', b'result_type'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class AbstractType(_message.Message): - """Application defined abstract type.""" - DESCRIPTOR: _descriptor.Descriptor - NAME_FIELD_NUMBER: _builtins.int - PARAMETER_TYPES_FIELD_NUMBER: _builtins.int - name: _builtins.str - 'The fully qualified name of this abstract type.' - - @_builtins.property - def parameter_types(self) -> _containers.RepeatedCompositeFieldContainer[Global___Type]: - """Parameter types for this abstract type.""" - - def __init__(self, *, name: _builtins.str=..., parameter_types: _abc.Iterable[Global___Type] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'parameter_types', b'parameter_types'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - DYN_FIELD_NUMBER: _builtins.int - NULL_FIELD_NUMBER: _builtins.int - PRIMITIVE_FIELD_NUMBER: _builtins.int - WRAPPER_FIELD_NUMBER: _builtins.int - WELL_KNOWN_FIELD_NUMBER: _builtins.int - LIST_TYPE_FIELD_NUMBER: _builtins.int - MAP_TYPE_FIELD_NUMBER: _builtins.int - FUNCTION_FIELD_NUMBER: _builtins.int - MESSAGE_TYPE_FIELD_NUMBER: _builtins.int - TYPE_PARAM_FIELD_NUMBER: _builtins.int - TYPE_FIELD_NUMBER: _builtins.int - ERROR_FIELD_NUMBER: _builtins.int - ABSTRACT_TYPE_FIELD_NUMBER: _builtins.int - null: _struct_pb2.NullValue.ValueType - 'Null value.' - primitive: Global___Type.PrimitiveType.ValueType - "Primitive types: `true`, `1u`, `-2.0`, `'string'`, `b'bytes'`." - wrapper: Global___Type.PrimitiveType.ValueType - 'Wrapper of a primitive type, e.g. `google.protobuf.Int64Value`.' - well_known: Global___Type.WellKnownType.ValueType - 'Well-known protobuf type such as `google.protobuf.Timestamp`.' - message_type: _builtins.str - 'Protocol buffer message type.\n\n The `message_type` string specifies the qualified message type name. For\n example, `google.plus.Profile`.\n ' - type_param: _builtins.str - 'Type param type.\n\n The `type_param` string specifies the type parameter name, e.g. `list`\n would be a `list_type` whose element type was a `type_param` type\n named `E`.\n ' - - @_builtins.property - def dyn(self) -> _empty_pb2.Empty: - """Dynamic type.""" - - @_builtins.property - def list_type(self) -> Global___Type.ListType: - """Parameterized list with elements of `list_type`, e.g. `list`.""" - - @_builtins.property - def map_type(self) -> Global___Type.MapType: - """Parameterized map with typed keys and values.""" - - @_builtins.property - def function(self) -> Global___Type.FunctionType: - """Function type.""" - - @_builtins.property - def type(self) -> Global___Type: - """Type type. - - The `type` value specifies the target type. e.g. int is type with a - target type of `Primitive.INT`. - """ - - @_builtins.property - def error(self) -> _empty_pb2.Empty: - """Error type. - - During type-checking if an expression is an error, its type is propagated - as the `ERROR` type. This permits the type-checker to discover other - errors present in the expression. - """ - - @_builtins.property - def abstract_type(self) -> Global___Type.AbstractType: - """Abstract, application defined type.""" - - def __init__(self, *, dyn: _empty_pb2.Empty | None=..., null: _struct_pb2.NullValue.ValueType=..., primitive: Global___Type.PrimitiveType.ValueType=..., wrapper: Global___Type.PrimitiveType.ValueType=..., well_known: Global___Type.WellKnownType.ValueType=..., list_type: Global___Type.ListType | None=..., map_type: Global___Type.MapType | None=..., function: Global___Type.FunctionType | None=..., message_type: _builtins.str=..., type_param: _builtins.str=..., type: Global___Type | None=..., error: _empty_pb2.Empty | None=..., abstract_type: Global___Type.AbstractType | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['abstract_type', b'abstract_type', 'dyn', b'dyn', 'error', b'error', 'function', b'function', 'list_type', b'list_type', 'map_type', b'map_type', 'message_type', b'message_type', 'null', b'null', 'primitive', b'primitive', 'type', b'type', 'type_kind', b'type_kind', 'type_param', b'type_param', 'well_known', b'well_known', 'wrapper', b'wrapper'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['abstract_type', b'abstract_type', 'dyn', b'dyn', 'error', b'error', 'function', b'function', 'list_type', b'list_type', 'map_type', b'map_type', 'message_type', b'message_type', 'null', b'null', 'primitive', b'primitive', 'type', b'type', 'type_kind', b'type_kind', 'type_param', b'type_param', 'well_known', b'well_known', 'wrapper', b'wrapper'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - _WhichOneofReturnType_type_kind: _TypeAlias = _typing.Literal['dyn', 'null', 'primitive', 'wrapper', 'well_known', 'list_type', 'map_type', 'function', 'message_type', 'type_param', 'type', 'error', 'abstract_type'] - _WhichOneofArgType_type_kind: _TypeAlias = _typing.Literal['type_kind', b'type_kind'] - - def WhichOneof(self, oneof_group: _WhichOneofArgType_type_kind) -> _WhichOneofReturnType_type_kind | None: - ... -Global___Type: _TypeAlias = Type - -@_typing.final -class Decl(_message.Message): - """Represents a declaration of a named value or function. - - A declaration is part of the contract between the expression, the agent - evaluating that expression, and the caller requesting evaluation. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class IdentDecl(_message.Message): - """Identifier declaration which specifies its type and optional `Expr` value. - - An identifier without a value is a declaration that must be provided at - evaluation time. An identifier with a value should resolve to a constant, - but may be used in conjunction with other identifiers bound at evaluation - time. - """ - DESCRIPTOR: _descriptor.Descriptor - TYPE_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - DOC_FIELD_NUMBER: _builtins.int - doc: _builtins.str - 'Documentation string for the identifier.' - - @_builtins.property - def type(self) -> Global___Type: - """Required. The type of the identifier.""" - - @_builtins.property - def value(self) -> _syntax_pb2.Constant: - """The constant value of the identifier. If not specified, the identifier - must be supplied at evaluation time. - """ - - def __init__(self, *, type: Global___Type | None=..., value: _syntax_pb2.Constant | None=..., doc: _builtins.str=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['type', b'type', 'value', b'value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['doc', b'doc', 'type', b'type', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class FunctionDecl(_message.Message): - """Function declaration specifies one or more overloads which indicate the - function's parameter types and return type. - - Functions have no observable side-effects (there may be side-effects like - logging which are not observable from CEL). - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class Overload(_message.Message): - """An overload indicates a function's parameter types and return type, and - may optionally include a function body described in terms of - [Expr][google.api.expr.v1alpha1.Expr] values. - - Functions overloads are declared in either a function or method - call-style. For methods, the `params[0]` is the expected type of the - target receiver. - - Overloads must have non-overlapping argument types after erasure of all - parameterized type variables (similar as type erasure in Java). - """ - DESCRIPTOR: _descriptor.Descriptor - OVERLOAD_ID_FIELD_NUMBER: _builtins.int - PARAMS_FIELD_NUMBER: _builtins.int - TYPE_PARAMS_FIELD_NUMBER: _builtins.int - RESULT_TYPE_FIELD_NUMBER: _builtins.int - IS_INSTANCE_FUNCTION_FIELD_NUMBER: _builtins.int - DOC_FIELD_NUMBER: _builtins.int - overload_id: _builtins.str - 'Required. Globally unique overload name of the function which reflects\n the function name and argument types.\n\n This will be used by a [Reference][google.api.expr.v1alpha1.Reference]\n to indicate the `overload_id` that was resolved for the function\n `name`.\n ' - is_instance_function: _builtins.bool - 'Whether the function is to be used in a method call-style `x.f(...)`\n or a function call-style `f(x, ...)`.\n\n For methods, the first parameter declaration, `params[0]` is the\n expected type of the target receiver.\n ' - doc: _builtins.str - 'Documentation string for the overload.' - - @_builtins.property - def params(self) -> _containers.RepeatedCompositeFieldContainer[Global___Type]: - """List of function parameter [Type][google.api.expr.v1alpha1.Type] - values. - - Param types are disjoint after generic type parameters have been - replaced with the type `DYN`. Since the `DYN` type is compatible with - any other type, this means that if `A` is a type parameter, the - function types `int` and `int` are not disjoint. Likewise, - `map` is not disjoint from `map`. - - When the `result_type` of a function is a generic type param, the - type param name also appears as the `type` of on at least one params. - """ - - @_builtins.property - def type_params(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: - """The type param names associated with the function declaration. - - For example, `function ex(K key, map map) : V` would yield - the type params of `K, V`. - """ - - @_builtins.property - def result_type(self) -> Global___Type: - """Required. The result type of the function. For example, the operator - `string.isEmpty()` would have `result_type` of `kind: BOOL`. - """ - - def __init__(self, *, overload_id: _builtins.str=..., params: _abc.Iterable[Global___Type] | None=..., type_params: _abc.Iterable[_builtins.str] | None=..., result_type: Global___Type | None=..., is_instance_function: _builtins.bool=..., doc: _builtins.str=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['result_type', b'result_type'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['doc', b'doc', 'is_instance_function', b'is_instance_function', 'overload_id', b'overload_id', 'params', b'params', 'result_type', b'result_type', 'type_params', b'type_params'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - OVERLOADS_FIELD_NUMBER: _builtins.int - - @_builtins.property - def overloads(self) -> _containers.RepeatedCompositeFieldContainer[Global___Decl.FunctionDecl.Overload]: - """Required. List of function overloads, must contain at least one overload.""" - - def __init__(self, *, overloads: _abc.Iterable[Global___Decl.FunctionDecl.Overload] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['overloads', b'overloads'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - NAME_FIELD_NUMBER: _builtins.int - IDENT_FIELD_NUMBER: _builtins.int - FUNCTION_FIELD_NUMBER: _builtins.int - name: _builtins.str - 'The fully qualified name of the declaration.\n\n Declarations are organized in containers and this represents the full path\n to the declaration in its container, as in `google.api.expr.Decl`.\n\n Declarations used as\n [FunctionDecl.Overload][google.api.expr.v1alpha1.Decl.FunctionDecl.Overload]\n parameters may or may not have a name depending on whether the overload is\n function declaration or a function definition containing a result\n [Expr][google.api.expr.v1alpha1.Expr].\n ' - - @_builtins.property - def ident(self) -> Global___Decl.IdentDecl: - """Identifier declaration.""" - - @_builtins.property - def function(self) -> Global___Decl.FunctionDecl: - """Function declaration.""" - - def __init__(self, *, name: _builtins.str=..., ident: Global___Decl.IdentDecl | None=..., function: Global___Decl.FunctionDecl | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['decl_kind', b'decl_kind', 'function', b'function', 'ident', b'ident'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['decl_kind', b'decl_kind', 'function', b'function', 'ident', b'ident', 'name', b'name'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - _WhichOneofReturnType_decl_kind: _TypeAlias = _typing.Literal['ident', 'function'] - _WhichOneofArgType_decl_kind: _TypeAlias = _typing.Literal['decl_kind', b'decl_kind'] - - def WhichOneof(self, oneof_group: _WhichOneofArgType_decl_kind) -> _WhichOneofReturnType_decl_kind | None: - ... -Global___Decl: _TypeAlias = Decl - -@_typing.final -class Reference(_message.Message): - """Describes a resolved reference to a declaration.""" - DESCRIPTOR: _descriptor.Descriptor - NAME_FIELD_NUMBER: _builtins.int - OVERLOAD_ID_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - name: _builtins.str - 'The fully qualified name of the declaration.' - - @_builtins.property - def overload_id(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: - """For references to functions, this is a list of `Overload.overload_id` - values which match according to typing rules. - - If the list has more than one element, overload resolution among the - presented candidates must happen at runtime because of dynamic types. The - type checker attempts to narrow down this list as much as possible. - - Empty if this is not a reference to a - [Decl.FunctionDecl][google.api.expr.v1alpha1.Decl.FunctionDecl]. - """ - - @_builtins.property - def value(self) -> _syntax_pb2.Constant: - """For references to constants, this may contain the value of the - constant if known at compile time. - """ - - def __init__(self, *, name: _builtins.str=..., overload_id: _abc.Iterable[_builtins.str] | None=..., value: _syntax_pb2.Constant | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name', 'overload_id', b'overload_id', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___Reference: _TypeAlias = Reference \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1alpha1/eval_grpc.py b/src/viam/gen/google/api/expr/v1alpha1/eval_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/expr/v1alpha1/eval_pb2.py b/src/viam/gen/google/api/expr/v1alpha1/eval_pb2.py deleted file mode 100644 index 9a447afde1..0000000000 --- a/src/viam/gen/google/api/expr/v1alpha1/eval_pb2.py +++ /dev/null @@ -1,27 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1alpha1/eval.proto') -_sym_db = _symbol_database.Default() -from .....google.api.expr.v1alpha1 import value_pb2 as google_dot_api_dot_expr_dot_v1alpha1_dot_value__pb2 -from .....google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#google/api/expr/v1alpha1/eval.proto\x12\x18google.api.expr.v1alpha1\x1a$google/api/expr/v1alpha1/value.proto\x1a\x17google/rpc/status.proto"\xc2\x01\n\tEvalState\x12;\n\x06values\x18\x01 \x03(\x0b2#.google.api.expr.v1alpha1.ExprValueR\x06values\x12D\n\x07results\x18\x03 \x03(\x0b2*.google.api.expr.v1alpha1.EvalState.ResultR\x07results\x1a2\n\x06Result\x12\x12\n\x04expr\x18\x01 \x01(\x03R\x04expr\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05value"\xca\x01\n\tExprValue\x127\n\x05value\x18\x01 \x01(\x0b2\x1f.google.api.expr.v1alpha1.ValueH\x00R\x05value\x12:\n\x05error\x18\x02 \x01(\x0b2".google.api.expr.v1alpha1.ErrorSetH\x00R\x05error\x12@\n\x07unknown\x18\x03 \x01(\x0b2$.google.api.expr.v1alpha1.UnknownSetH\x00R\x07unknownB\x06\n\x04kind"6\n\x08ErrorSet\x12*\n\x06errors\x18\x01 \x03(\x0b2\x12.google.rpc.StatusR\x06errors""\n\nUnknownSet\x12\x14\n\x05exprs\x18\x01 \x03(\x03R\x05exprsBl\n\x1ccom.google.api.expr.v1alpha1B\tEvalProtoP\x01Z= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class EvalState(_message.Message): - """The state of an evaluation. - - Can represent an inital, partial, or completed state of evaluation. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class Result(_message.Message): - """A single evalution result.""" - DESCRIPTOR: _descriptor.Descriptor - EXPR_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - expr: _builtins.int - 'The id of the expression this result if for.' - value: _builtins.int - 'The index in `values` of the resulting value.' - - def __init__(self, *, expr: _builtins.int=..., value: _builtins.int=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - VALUES_FIELD_NUMBER: _builtins.int - RESULTS_FIELD_NUMBER: _builtins.int - - @_builtins.property - def values(self) -> _containers.RepeatedCompositeFieldContainer[Global___ExprValue]: - """The unique values referenced in this message.""" - - @_builtins.property - def results(self) -> _containers.RepeatedCompositeFieldContainer[Global___EvalState.Result]: - """An ordered list of results. - - Tracks the flow of evaluation through the expression. - May be sparse. - """ - - def __init__(self, *, values: _abc.Iterable[Global___ExprValue] | None=..., results: _abc.Iterable[Global___EvalState.Result] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['results', b'results', 'values', b'values'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___EvalState: _TypeAlias = EvalState - -@_typing.final -class ExprValue(_message.Message): - """The value of an evaluated expression.""" - DESCRIPTOR: _descriptor.Descriptor - VALUE_FIELD_NUMBER: _builtins.int - ERROR_FIELD_NUMBER: _builtins.int - UNKNOWN_FIELD_NUMBER: _builtins.int - - @_builtins.property - def value(self) -> _value_pb2.Value: - """A concrete value.""" - - @_builtins.property - def error(self) -> Global___ErrorSet: - """The set of errors in the critical path of evalution. - - Only errors in the critical path are included. For example, - `( || true) && ` will only result in ``, - while ` || ` will result in both `` and - ``. - - Errors cause by the presence of other errors are not included in the - set. For example `.foo`, `foo()`, and ` + 1` will - only result in ``. - - Multiple errors *might* be included when evaluation could result - in different errors. For example ` + ` and - `foo(, )` may result in ``, `` or both. - The exact subset of errors included for this case is unspecified and - depends on the implementation details of the evaluator. - """ - - @_builtins.property - def unknown(self) -> Global___UnknownSet: - """The set of unknowns in the critical path of evaluation. - - Unknown behaves identically to Error with regards to propagation. - Specifically, only unknowns in the critical path are included, unknowns - caused by the presence of other unknowns are not included, and multiple - unknowns *might* be included included when evaluation could result in - different unknowns. For example: - - ( || true) && -> - || -> - .foo -> - foo() -> - + -> or - - Unknown takes precidence over Error in cases where a `Value` can short - circuit the result: - - || -> - && -> - - Errors take precidence in all other cases: - - + -> - foo(, ) -> - """ - - def __init__(self, *, value: _value_pb2.Value | None=..., error: Global___ErrorSet | None=..., unknown: Global___UnknownSet | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['error', b'error', 'kind', b'kind', 'unknown', b'unknown', 'value', b'value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['error', b'error', 'kind', b'kind', 'unknown', b'unknown', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - _WhichOneofReturnType_kind: _TypeAlias = _typing.Literal['value', 'error', 'unknown'] - _WhichOneofArgType_kind: _TypeAlias = _typing.Literal['kind', b'kind'] - - def WhichOneof(self, oneof_group: _WhichOneofArgType_kind) -> _WhichOneofReturnType_kind | None: - ... -Global___ExprValue: _TypeAlias = ExprValue - -@_typing.final -class ErrorSet(_message.Message): - """A set of errors. - - The errors included depend on the context. See `ExprValue.error`. - """ - DESCRIPTOR: _descriptor.Descriptor - ERRORS_FIELD_NUMBER: _builtins.int - - @_builtins.property - def errors(self) -> _containers.RepeatedCompositeFieldContainer[_status_pb2.Status]: - """The errors in the set.""" - - def __init__(self, *, errors: _abc.Iterable[_status_pb2.Status] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['errors', b'errors'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___ErrorSet: _TypeAlias = ErrorSet - -@_typing.final -class UnknownSet(_message.Message): - """A set of expressions for which the value is unknown. - - The unknowns included depend on the context. See `ExprValue.unknown`. - """ - DESCRIPTOR: _descriptor.Descriptor - EXPRS_FIELD_NUMBER: _builtins.int - - @_builtins.property - def exprs(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: - """The ids of the expressions with unknown values.""" - - def __init__(self, *, exprs: _abc.Iterable[_builtins.int] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['exprs', b'exprs'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___UnknownSet: _TypeAlias = UnknownSet \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1alpha1/explain_grpc.py b/src/viam/gen/google/api/expr/v1alpha1/explain_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/expr/v1alpha1/explain_pb2.py b/src/viam/gen/google/api/expr/v1alpha1/explain_pb2.py deleted file mode 100644 index 4f80ee6fb5..0000000000 --- a/src/viam/gen/google/api/expr/v1alpha1/explain_pb2.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1alpha1/explain.proto') -_sym_db = _symbol_database.Default() -from .....google.api.expr.v1alpha1 import value_pb2 as google_dot_api_dot_expr_dot_v1alpha1_dot_value__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&google/api/expr/v1alpha1/explain.proto\x12\x18google.api.expr.v1alpha1\x1a$google/api/expr/v1alpha1/value.proto"\xce\x01\n\x07Explain\x127\n\x06values\x18\x01 \x03(\x0b2\x1f.google.api.expr.v1alpha1.ValueR\x06values\x12I\n\nexpr_steps\x18\x02 \x03(\x0b2*.google.api.expr.v1alpha1.Explain.ExprStepR\texprSteps\x1a;\n\x08ExprStep\x12\x0e\n\x02id\x18\x01 \x01(\x03R\x02id\x12\x1f\n\x0bvalue_index\x18\x02 \x01(\x05R\nvalueIndex:\x02\x18\x01Bo\n\x1ccom.google.api.expr.v1alpha1B\x0cExplainProtoP\x01Z= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -if sys.version_info >= (3, 13): - from warnings import deprecated as _deprecated -else: - from typing_extensions import deprecated as _deprecated -DESCRIPTOR: _descriptor.FileDescriptor - -@_deprecated('This message has been marked as deprecated using proto message options.') -@_typing.final -class Explain(_message.Message): - """Values of intermediate expressions produced when evaluating expression. - Deprecated, use `EvalState` instead. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class ExprStep(_message.Message): - """ID and value index of one step.""" - DESCRIPTOR: _descriptor.Descriptor - ID_FIELD_NUMBER: _builtins.int - VALUE_INDEX_FIELD_NUMBER: _builtins.int - id: _builtins.int - 'ID of corresponding Expr node.' - value_index: _builtins.int - 'Index of the value in the values list.' - - def __init__(self, *, id: _builtins.int=..., value_index: _builtins.int=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'value_index', b'value_index'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - VALUES_FIELD_NUMBER: _builtins.int - EXPR_STEPS_FIELD_NUMBER: _builtins.int - - @_builtins.property - def values(self) -> _containers.RepeatedCompositeFieldContainer[_value_pb2.Value]: - """All of the observed values. - - The field value_index is an index in the values list. - Separating values from steps is needed to remove redundant values. - """ - - @_builtins.property - def expr_steps(self) -> _containers.RepeatedCompositeFieldContainer[Global___Explain.ExprStep]: - """List of steps. - - Repeated evaluations of the same expression generate new ExprStep - instances. The order of such ExprStep instances matches the order of - elements returned by Comprehension.iter_range. - """ - - def __init__(self, *, values: _abc.Iterable[_value_pb2.Value] | None=..., expr_steps: _abc.Iterable[Global___Explain.ExprStep] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['expr_steps', b'expr_steps', 'values', b'values'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___Explain: _TypeAlias = Explain \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1alpha1/syntax_grpc.py b/src/viam/gen/google/api/expr/v1alpha1/syntax_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/expr/v1alpha1/syntax_pb2.py b/src/viam/gen/google/api/expr/v1alpha1/syntax_pb2.py deleted file mode 100644 index ad4cd836a0..0000000000 --- a/src/viam/gen/google/api/expr/v1alpha1/syntax_pb2.py +++ /dev/null @@ -1,60 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1alpha1/syntax.proto') -_sym_db = _symbol_database.Default() -from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 -from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%google/api/expr/v1alpha1/syntax.proto\x12\x18google.api.expr.v1alpha1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto"\x87\x01\n\nParsedExpr\x122\n\x04expr\x18\x02 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x04expr\x12E\n\x0bsource_info\x18\x03 \x01(\x0b2$.google.api.expr.v1alpha1.SourceInfoR\nsourceInfo"\xcb\r\n\x04Expr\x12\x0e\n\x02id\x18\x02 \x01(\x03R\x02id\x12C\n\nconst_expr\x18\x03 \x01(\x0b2".google.api.expr.v1alpha1.ConstantH\x00R\tconstExpr\x12E\n\nident_expr\x18\x04 \x01(\x0b2$.google.api.expr.v1alpha1.Expr.IdentH\x00R\tidentExpr\x12H\n\x0bselect_expr\x18\x05 \x01(\x0b2%.google.api.expr.v1alpha1.Expr.SelectH\x00R\nselectExpr\x12B\n\tcall_expr\x18\x06 \x01(\x0b2#.google.api.expr.v1alpha1.Expr.CallH\x00R\x08callExpr\x12H\n\tlist_expr\x18\x07 \x01(\x0b2).google.api.expr.v1alpha1.Expr.CreateListH\x00R\x08listExpr\x12N\n\x0bstruct_expr\x18\x08 \x01(\x0b2+.google.api.expr.v1alpha1.Expr.CreateStructH\x00R\nstructExpr\x12]\n\x12comprehension_expr\x18\t \x01(\x0b2,.google.api.expr.v1alpha1.Expr.ComprehensionH\x00R\x11comprehensionExpr\x1a\x1b\n\x05Ident\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x1au\n\x06Select\x128\n\x07operand\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x07operand\x12\x14\n\x05field\x18\x02 \x01(\tR\x05field\x12\x1b\n\ttest_only\x18\x03 \x01(\x08R\x08testOnly\x1a\x8e\x01\n\x04Call\x126\n\x06target\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x06target\x12\x1a\n\x08function\x18\x02 \x01(\tR\x08function\x122\n\x04args\x18\x03 \x03(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x04args\x1as\n\nCreateList\x12:\n\x08elements\x18\x01 \x03(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x08elements\x12)\n\x10optional_indices\x18\x02 \x03(\x05R\x0foptionalIndices\x1a\xdb\x02\n\x0cCreateStruct\x12!\n\x0cmessage_name\x18\x01 \x01(\tR\x0bmessageName\x12K\n\x07entries\x18\x02 \x03(\x0b21.google.api.expr.v1alpha1.Expr.CreateStruct.EntryR\x07entries\x1a\xda\x01\n\x05Entry\x12\x0e\n\x02id\x18\x01 \x01(\x03R\x02id\x12\x1d\n\tfield_key\x18\x02 \x01(\tH\x00R\x08fieldKey\x129\n\x07map_key\x18\x03 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprH\x00R\x06mapKey\x124\n\x05value\x18\x04 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x05value\x12%\n\x0eoptional_entry\x18\x05 \x01(\x08R\roptionalEntryB\n\n\x08key_kind\x1a\x9a\x03\n\rComprehension\x12\x19\n\x08iter_var\x18\x01 \x01(\tR\x07iterVar\x12\x1b\n\titer_var2\x18\x08 \x01(\tR\x08iterVar2\x12=\n\niter_range\x18\x02 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\titerRange\x12\x19\n\x08accu_var\x18\x03 \x01(\tR\x07accuVar\x12;\n\taccu_init\x18\x04 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x08accuInit\x12E\n\x0eloop_condition\x18\x05 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\rloopCondition\x12;\n\tloop_step\x18\x06 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x08loopStep\x126\n\x06result\x18\x07 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x06resultB\x0b\n\texpr_kind"\xc1\x03\n\x08Constant\x12;\n\nnull_value\x18\x01 \x01(\x0e2\x1a.google.protobuf.NullValueH\x00R\tnullValue\x12\x1f\n\nbool_value\x18\x02 \x01(\x08H\x00R\tboolValue\x12!\n\x0bint64_value\x18\x03 \x01(\x03H\x00R\nint64Value\x12#\n\x0cuint64_value\x18\x04 \x01(\x04H\x00R\x0buint64Value\x12#\n\x0cdouble_value\x18\x05 \x01(\x01H\x00R\x0bdoubleValue\x12#\n\x0cstring_value\x18\x06 \x01(\tH\x00R\x0bstringValue\x12!\n\x0bbytes_value\x18\x07 \x01(\x0cH\x00R\nbytesValue\x12F\n\x0eduration_value\x18\x08 \x01(\x0b2\x19.google.protobuf.DurationB\x02\x18\x01H\x00R\rdurationValue\x12I\n\x0ftimestamp_value\x18\t \x01(\x0b2\x1a.google.protobuf.TimestampB\x02\x18\x01H\x00R\x0etimestampValueB\x0f\n\rconstant_kind"\x8c\x07\n\nSourceInfo\x12%\n\x0esyntax_version\x18\x01 \x01(\tR\rsyntaxVersion\x12\x1a\n\x08location\x18\x02 \x01(\tR\x08location\x12!\n\x0cline_offsets\x18\x03 \x03(\x05R\x0blineOffsets\x12Q\n\tpositions\x18\x04 \x03(\x0b23.google.api.expr.v1alpha1.SourceInfo.PositionsEntryR\tpositions\x12U\n\x0bmacro_calls\x18\x05 \x03(\x0b24.google.api.expr.v1alpha1.SourceInfo.MacroCallsEntryR\nmacroCalls\x12N\n\nextensions\x18\x06 \x03(\x0b2..google.api.expr.v1alpha1.SourceInfo.ExtensionR\nextensions\x1a\x80\x03\n\tExtension\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12i\n\x13affected_components\x18\x02 \x03(\x0e28.google.api.expr.v1alpha1.SourceInfo.Extension.ComponentR\x12affectedComponents\x12P\n\x07version\x18\x03 \x01(\x0b26.google.api.expr.v1alpha1.SourceInfo.Extension.VersionR\x07version\x1a5\n\x07Version\x12\x14\n\x05major\x18\x01 \x01(\x03R\x05major\x12\x14\n\x05minor\x18\x02 \x01(\x03R\x05minor"o\n\tComponent\x12\x19\n\x15COMPONENT_UNSPECIFIED\x10\x00\x12\x14\n\x10COMPONENT_PARSER\x10\x01\x12\x1a\n\x16COMPONENT_TYPE_CHECKER\x10\x02\x12\x15\n\x11COMPONENT_RUNTIME\x10\x03\x1a<\n\x0ePositionsEntry\x12\x10\n\x03key\x18\x01 \x01(\x03R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\x1a]\n\x0fMacroCallsEntry\x12\x10\n\x03key\x18\x01 \x01(\x03R\x03key\x124\n\x05value\x18\x02 \x01(\x0b2\x1e.google.api.expr.v1alpha1.ExprR\x05value:\x028\x01"p\n\x0eSourcePosition\x12\x1a\n\x08location\x18\x01 \x01(\tR\x08location\x12\x16\n\x06offset\x18\x02 \x01(\x05R\x06offset\x12\x12\n\x04line\x18\x03 \x01(\x05R\x04line\x12\x16\n\x06column\x18\x04 \x01(\x05R\x06columnBn\n\x1ccom.google.api.expr.v1alpha1B\x0bSyntaxProtoP\x01Z= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -if sys.version_info >= (3, 13): - from warnings import deprecated as _deprecated -else: - from typing_extensions import deprecated as _deprecated -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class ParsedExpr(_message.Message): - """A representation of the abstract syntax of the Common Expression Language. - - An expression together with source information as returned by the parser. - """ - DESCRIPTOR: _descriptor.Descriptor - EXPR_FIELD_NUMBER: _builtins.int - SOURCE_INFO_FIELD_NUMBER: _builtins.int - - @_builtins.property - def expr(self) -> Global___Expr: - """The parsed expression.""" - - @_builtins.property - def source_info(self) -> Global___SourceInfo: - """The source info derived from input that generated the parsed `expr`.""" - - def __init__(self, *, expr: Global___Expr | None=..., source_info: Global___SourceInfo | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'source_info', b'source_info'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'source_info', b'source_info'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___ParsedExpr: _TypeAlias = ParsedExpr - -@_typing.final -class Expr(_message.Message): - """An abstract representation of a common expression. - - Expressions are abstractly represented as a collection of identifiers, - select statements, function calls, literals, and comprehensions. All - operators with the exception of the '.' operator are modelled as function - calls. This makes it easy to represent new operators into the existing AST. - - All references within expressions must resolve to a - [Decl][google.api.expr.v1alpha1.Decl] provided at type-check for an - expression to be valid. A reference may either be a bare identifier `name` or - a qualified identifier `google.api.name`. References may either refer to a - value or a function declaration. - - For example, the expression `google.api.name.startsWith('expr')` references - the declaration `google.api.name` within a - [Expr.Select][google.api.expr.v1alpha1.Expr.Select] expression, and the - function declaration `startsWith`. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class Ident(_message.Message): - """An identifier expression. e.g. `request`.""" - DESCRIPTOR: _descriptor.Descriptor - NAME_FIELD_NUMBER: _builtins.int - name: _builtins.str - "Required. Holds a single, unqualified identifier, possibly preceded by a\n '.'.\n\n Qualified names are represented by the\n [Expr.Select][google.api.expr.v1alpha1.Expr.Select] expression.\n " - - def __init__(self, *, name: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class Select(_message.Message): - """A field selection expression. e.g. `request.auth`.""" - DESCRIPTOR: _descriptor.Descriptor - OPERAND_FIELD_NUMBER: _builtins.int - FIELD_FIELD_NUMBER: _builtins.int - TEST_ONLY_FIELD_NUMBER: _builtins.int - field: _builtins.str - 'Required. The name of the field to select.\n\n For example, in the select expression `request.auth`, the `auth` portion\n of the expression would be the `field`.\n ' - test_only: _builtins.bool - 'Whether the select is to be interpreted as a field presence test.\n\n This results from the macro `has(request.auth)`.\n ' - - @_builtins.property - def operand(self) -> Global___Expr: - """Required. The target of the selection expression. - - For example, in the select expression `request.auth`, the `request` - portion of the expression is the `operand`. - """ - - def __init__(self, *, operand: Global___Expr | None=..., field: _builtins.str=..., test_only: _builtins.bool=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['operand', b'operand'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['field', b'field', 'operand', b'operand', 'test_only', b'test_only'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class Call(_message.Message): - """A call expression, including calls to predefined functions and operators. - - For example, `value == 10`, `size(map_value)`. - """ - DESCRIPTOR: _descriptor.Descriptor - TARGET_FIELD_NUMBER: _builtins.int - FUNCTION_FIELD_NUMBER: _builtins.int - ARGS_FIELD_NUMBER: _builtins.int - function: _builtins.str - 'Required. The name of the function or method being called.' - - @_builtins.property - def target(self) -> Global___Expr: - """The target of an method call-style expression. For example, `x` in - `x.f()`. - """ - - @_builtins.property - def args(self) -> _containers.RepeatedCompositeFieldContainer[Global___Expr]: - """The arguments.""" - - def __init__(self, *, target: Global___Expr | None=..., function: _builtins.str=..., args: _abc.Iterable[Global___Expr] | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['target', b'target'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['args', b'args', 'function', b'function', 'target', b'target'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class CreateList(_message.Message): - """A list creation expression. - - Lists may either be homogenous, e.g. `[1, 2, 3]`, or heterogeneous, e.g. - `dyn([1, 'hello', 2.0])` - """ - DESCRIPTOR: _descriptor.Descriptor - ELEMENTS_FIELD_NUMBER: _builtins.int - OPTIONAL_INDICES_FIELD_NUMBER: _builtins.int - - @_builtins.property - def elements(self) -> _containers.RepeatedCompositeFieldContainer[Global___Expr]: - """The elements part of the list.""" - - @_builtins.property - def optional_indices(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: - """The indices within the elements list which are marked as optional - elements. - - When an optional-typed value is present, the value it contains - is included in the list. If the optional-typed value is absent, the list - element is omitted from the CreateList result. - """ - - def __init__(self, *, elements: _abc.Iterable[Global___Expr] | None=..., optional_indices: _abc.Iterable[_builtins.int] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['elements', b'elements', 'optional_indices', b'optional_indices'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class CreateStruct(_message.Message): - """A map or message creation expression. - - Maps are constructed as `{'key_name': 'value'}`. Message construction is - similar, but prefixed with a type name and composed of field ids: - `types.MyType{field_id: 'value'}`. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class Entry(_message.Message): - """Represents an entry.""" - DESCRIPTOR: _descriptor.Descriptor - ID_FIELD_NUMBER: _builtins.int - FIELD_KEY_FIELD_NUMBER: _builtins.int - MAP_KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - OPTIONAL_ENTRY_FIELD_NUMBER: _builtins.int - id: _builtins.int - 'Required. An id assigned to this node by the parser which is unique\n in a given expression tree. This is used to associate type\n information and other attributes to the node.\n ' - field_key: _builtins.str - 'The field key for a message creator statement.' - optional_entry: _builtins.bool - 'Whether the key-value pair is optional.' - - @_builtins.property - def map_key(self) -> Global___Expr: - """The key expression for a map creation statement.""" - - @_builtins.property - def value(self) -> Global___Expr: - """Required. The value assigned to the key. - - If the optional_entry field is true, the expression must resolve to an - optional-typed value. If the optional value is present, the key will be - set; however, if the optional value is absent, the key will be unset. - """ - - def __init__(self, *, id: _builtins.int=..., field_key: _builtins.str=..., map_key: Global___Expr | None=..., value: Global___Expr | None=..., optional_entry: _builtins.bool=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['field_key', b'field_key', 'key_kind', b'key_kind', 'map_key', b'map_key', 'value', b'value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['field_key', b'field_key', 'id', b'id', 'key_kind', b'key_kind', 'map_key', b'map_key', 'optional_entry', b'optional_entry', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - _WhichOneofReturnType_key_kind: _TypeAlias = _typing.Literal['field_key', 'map_key'] - _WhichOneofArgType_key_kind: _TypeAlias = _typing.Literal['key_kind', b'key_kind'] - - def WhichOneof(self, oneof_group: _WhichOneofArgType_key_kind) -> _WhichOneofReturnType_key_kind | None: - ... - MESSAGE_NAME_FIELD_NUMBER: _builtins.int - ENTRIES_FIELD_NUMBER: _builtins.int - message_name: _builtins.str - 'The type name of the message to be created, empty when creating map\n literals.\n ' - - @_builtins.property - def entries(self) -> _containers.RepeatedCompositeFieldContainer[Global___Expr.CreateStruct.Entry]: - """The entries in the creation expression.""" - - def __init__(self, *, message_name: _builtins.str=..., entries: _abc.Iterable[Global___Expr.CreateStruct.Entry] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['entries', b'entries', 'message_name', b'message_name'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class Comprehension(_message.Message): - """A comprehension expression applied to a list or map. - - Comprehensions are not part of the core syntax, but enabled with macros. - A macro matches a specific call signature within a parsed AST and replaces - the call with an alternate AST block. Macro expansion happens at parse - time. - - The following macros are supported within CEL: - - Aggregate type macros may be applied to all elements in a list or all keys - in a map: - - * `all`, `exists`, `exists_one` - test a predicate expression against - the inputs and return `true` if the predicate is satisfied for all, - any, or only one value `list.all(x, x < 10)`. - * `filter` - test a predicate expression against the inputs and return - the subset of elements which satisfy the predicate: - `payments.filter(p, p > 1000)`. - * `map` - apply an expression to all elements in the input and return the - output aggregate type: `[1, 2, 3].map(i, i * i)`. - - The `has(m.x)` macro tests whether the property `x` is present in struct - `m`. The semantics of this macro depend on the type of `m`. For proto2 - messages `has(m.x)` is defined as 'defined, but not set`. For proto3, the - macro tests whether the property is set to its default. For map and struct - types, the macro tests whether the property `x` is defined on `m`. - - Comprehensions for the standard environment macros evaluation can be best - visualized as the following pseudocode: - - ``` - let `accu_var` = `accu_init` - for (let `iter_var` in `iter_range`) { - if (!`loop_condition`) { - break - } - `accu_var` = `loop_step` - } - return `result` - ``` - - Comprehensions for the optional V2 macros which support map-to-map - translation differ slightly from the standard environment macros in that - they expose both the key or index in addition to the value for each list - or map entry: - - ``` - let `accu_var` = `accu_init` - for (let `iter_var`, `iter_var2` in `iter_range`) { - if (!`loop_condition`) { - break - } - `accu_var` = `loop_step` - } - return `result` - ``` - """ - DESCRIPTOR: _descriptor.Descriptor - ITER_VAR_FIELD_NUMBER: _builtins.int - ITER_VAR2_FIELD_NUMBER: _builtins.int - ITER_RANGE_FIELD_NUMBER: _builtins.int - ACCU_VAR_FIELD_NUMBER: _builtins.int - ACCU_INIT_FIELD_NUMBER: _builtins.int - LOOP_CONDITION_FIELD_NUMBER: _builtins.int - LOOP_STEP_FIELD_NUMBER: _builtins.int - RESULT_FIELD_NUMBER: _builtins.int - iter_var: _builtins.str - 'The name of the first iteration variable.\n When the iter_range is a list, this variable is the list element.\n When the iter_range is a map, this variable is the map entry key.\n ' - iter_var2: _builtins.str - 'The name of the second iteration variable, empty if not set.\n When the iter_range is a list, this variable is the integer index.\n When the iter_range is a map, this variable is the map entry value.\n This field is only set for comprehension v2 macros.\n ' - accu_var: _builtins.str - 'The name of the variable used for accumulation of the result.' - - @_builtins.property - def iter_range(self) -> Global___Expr: - """The range over which the comprehension iterates.""" - - @_builtins.property - def accu_init(self) -> Global___Expr: - """The initial value of the accumulator.""" - - @_builtins.property - def loop_condition(self) -> Global___Expr: - """An expression which can contain iter_var, iter_var2, and accu_var. - - Returns false when the result has been computed and may be used as - a hint to short-circuit the remainder of the comprehension. - """ - - @_builtins.property - def loop_step(self) -> Global___Expr: - """An expression which can contain iter_var, iter_var2, and accu_var. - - Computes the next value of accu_var. - """ - - @_builtins.property - def result(self) -> Global___Expr: - """An expression which can contain accu_var. - - Computes the result. - """ - - def __init__(self, *, iter_var: _builtins.str=..., iter_var2: _builtins.str=..., iter_range: Global___Expr | None=..., accu_var: _builtins.str=..., accu_init: Global___Expr | None=..., loop_condition: Global___Expr | None=..., loop_step: Global___Expr | None=..., result: Global___Expr | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['accu_init', b'accu_init', 'iter_range', b'iter_range', 'loop_condition', b'loop_condition', 'loop_step', b'loop_step', 'result', b'result'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['accu_init', b'accu_init', 'accu_var', b'accu_var', 'iter_range', b'iter_range', 'iter_var', b'iter_var', 'iter_var2', b'iter_var2', 'loop_condition', b'loop_condition', 'loop_step', b'loop_step', 'result', b'result'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - ID_FIELD_NUMBER: _builtins.int - CONST_EXPR_FIELD_NUMBER: _builtins.int - IDENT_EXPR_FIELD_NUMBER: _builtins.int - SELECT_EXPR_FIELD_NUMBER: _builtins.int - CALL_EXPR_FIELD_NUMBER: _builtins.int - LIST_EXPR_FIELD_NUMBER: _builtins.int - STRUCT_EXPR_FIELD_NUMBER: _builtins.int - COMPREHENSION_EXPR_FIELD_NUMBER: _builtins.int - id: _builtins.int - 'Required. An id assigned to this node by the parser which is unique in a\n given expression tree. This is used to associate type information and other\n attributes to a node in the parse tree.\n ' - - @_builtins.property - def const_expr(self) -> Global___Constant: - """A literal expression.""" - - @_builtins.property - def ident_expr(self) -> Global___Expr.Ident: - """An identifier expression.""" - - @_builtins.property - def select_expr(self) -> Global___Expr.Select: - """A field selection expression, e.g. `request.auth`.""" - - @_builtins.property - def call_expr(self) -> Global___Expr.Call: - """A call expression, including calls to predefined functions and operators.""" - - @_builtins.property - def list_expr(self) -> Global___Expr.CreateList: - """A list creation expression.""" - - @_builtins.property - def struct_expr(self) -> Global___Expr.CreateStruct: - """A map or message creation expression.""" - - @_builtins.property - def comprehension_expr(self) -> Global___Expr.Comprehension: - """A comprehension expression.""" - - def __init__(self, *, id: _builtins.int=..., const_expr: Global___Constant | None=..., ident_expr: Global___Expr.Ident | None=..., select_expr: Global___Expr.Select | None=..., call_expr: Global___Expr.Call | None=..., list_expr: Global___Expr.CreateList | None=..., struct_expr: Global___Expr.CreateStruct | None=..., comprehension_expr: Global___Expr.Comprehension | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['call_expr', b'call_expr', 'comprehension_expr', b'comprehension_expr', 'const_expr', b'const_expr', 'expr_kind', b'expr_kind', 'ident_expr', b'ident_expr', 'list_expr', b'list_expr', 'select_expr', b'select_expr', 'struct_expr', b'struct_expr'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['call_expr', b'call_expr', 'comprehension_expr', b'comprehension_expr', 'const_expr', b'const_expr', 'expr_kind', b'expr_kind', 'id', b'id', 'ident_expr', b'ident_expr', 'list_expr', b'list_expr', 'select_expr', b'select_expr', 'struct_expr', b'struct_expr'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - _WhichOneofReturnType_expr_kind: _TypeAlias = _typing.Literal['const_expr', 'ident_expr', 'select_expr', 'call_expr', 'list_expr', 'struct_expr', 'comprehension_expr'] - _WhichOneofArgType_expr_kind: _TypeAlias = _typing.Literal['expr_kind', b'expr_kind'] - - def WhichOneof(self, oneof_group: _WhichOneofArgType_expr_kind) -> _WhichOneofReturnType_expr_kind | None: - ... -Global___Expr: _TypeAlias = Expr - -@_typing.final -class Constant(_message.Message): - """Represents a primitive literal. - - Named 'Constant' here for backwards compatibility. - - This is similar as the primitives supported in the well-known type - `google.protobuf.Value`, but richer so it can represent CEL's full range of - primitives. - - Lists and structs are not included as constants as these aggregate types may - contain [Expr][google.api.expr.v1alpha1.Expr] elements which require - evaluation and are thus not constant. - - Examples of literals include: `"hello"`, `b'bytes'`, `1u`, `4.2`, `-2`, - `true`, `null`. - """ - DESCRIPTOR: _descriptor.Descriptor - NULL_VALUE_FIELD_NUMBER: _builtins.int - BOOL_VALUE_FIELD_NUMBER: _builtins.int - INT64_VALUE_FIELD_NUMBER: _builtins.int - UINT64_VALUE_FIELD_NUMBER: _builtins.int - DOUBLE_VALUE_FIELD_NUMBER: _builtins.int - STRING_VALUE_FIELD_NUMBER: _builtins.int - BYTES_VALUE_FIELD_NUMBER: _builtins.int - DURATION_VALUE_FIELD_NUMBER: _builtins.int - TIMESTAMP_VALUE_FIELD_NUMBER: _builtins.int - null_value: _struct_pb2.NullValue.ValueType - 'null value.' - bool_value: _builtins.bool - 'boolean value.' - int64_value: _builtins.int - 'int64 value.' - uint64_value: _builtins.int - 'uint64 value.' - double_value: _builtins.float - 'double value.' - string_value: _builtins.str - 'string value.' - bytes_value: _builtins.bytes - 'bytes value.' - - @_builtins.property - @_deprecated('This field has been marked as deprecated using proto field options.') - def duration_value(self) -> _duration_pb2.Duration: - """protobuf.Duration value. - - Deprecated: duration is no longer considered a builtin cel type. - """ - - @_builtins.property - @_deprecated('This field has been marked as deprecated using proto field options.') - def timestamp_value(self) -> _timestamp_pb2.Timestamp: - """protobuf.Timestamp value. - - Deprecated: timestamp is no longer considered a builtin cel type. - """ - - def __init__(self, *, null_value: _struct_pb2.NullValue.ValueType=..., bool_value: _builtins.bool=..., int64_value: _builtins.int=..., uint64_value: _builtins.int=..., double_value: _builtins.float=..., string_value: _builtins.str=..., bytes_value: _builtins.bytes=..., duration_value: _duration_pb2.Duration | None=..., timestamp_value: _timestamp_pb2.Timestamp | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'constant_kind', b'constant_kind', 'double_value', b'double_value', 'duration_value', b'duration_value', 'int64_value', b'int64_value', 'null_value', b'null_value', 'string_value', b'string_value', 'timestamp_value', b'timestamp_value', 'uint64_value', b'uint64_value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'constant_kind', b'constant_kind', 'double_value', b'double_value', 'duration_value', b'duration_value', 'int64_value', b'int64_value', 'null_value', b'null_value', 'string_value', b'string_value', 'timestamp_value', b'timestamp_value', 'uint64_value', b'uint64_value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - _WhichOneofReturnType_constant_kind: _TypeAlias = _typing.Literal['null_value', 'bool_value', 'int64_value', 'uint64_value', 'double_value', 'string_value', 'bytes_value', 'duration_value', 'timestamp_value'] - _WhichOneofArgType_constant_kind: _TypeAlias = _typing.Literal['constant_kind', b'constant_kind'] - - def WhichOneof(self, oneof_group: _WhichOneofArgType_constant_kind) -> _WhichOneofReturnType_constant_kind | None: - ... -Global___Constant: _TypeAlias = Constant - -@_typing.final -class SourceInfo(_message.Message): - """Source information collected at parse time.""" - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class Extension(_message.Message): - """An extension that was requested for the source expression.""" - DESCRIPTOR: _descriptor.Descriptor - - class _Component: - ValueType = _typing.NewType('ValueType', _builtins.int) - V: _TypeAlias = ValueType - - class _ComponentEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[SourceInfo.Extension._Component.ValueType], _builtins.type): - DESCRIPTOR: _descriptor.EnumDescriptor - COMPONENT_UNSPECIFIED: SourceInfo.Extension._Component.ValueType - 'Unspecified, default.' - COMPONENT_PARSER: SourceInfo.Extension._Component.ValueType - 'Parser. Converts a CEL string to an AST.' - COMPONENT_TYPE_CHECKER: SourceInfo.Extension._Component.ValueType - 'Type checker. Checks that references in an AST are defined and types\n agree.\n ' - COMPONENT_RUNTIME: SourceInfo.Extension._Component.ValueType - 'Runtime. Evaluates a parsed and optionally checked CEL AST against a\n context.\n ' - - class Component(_Component, metaclass=_ComponentEnumTypeWrapper): - """CEL component specifier.""" - COMPONENT_UNSPECIFIED: SourceInfo.Extension.Component.ValueType - 'Unspecified, default.' - COMPONENT_PARSER: SourceInfo.Extension.Component.ValueType - 'Parser. Converts a CEL string to an AST.' - COMPONENT_TYPE_CHECKER: SourceInfo.Extension.Component.ValueType - 'Type checker. Checks that references in an AST are defined and types\n agree.\n ' - COMPONENT_RUNTIME: SourceInfo.Extension.Component.ValueType - 'Runtime. Evaluates a parsed and optionally checked CEL AST against a\n context.\n ' - - @_typing.final - class Version(_message.Message): - """Version""" - DESCRIPTOR: _descriptor.Descriptor - MAJOR_FIELD_NUMBER: _builtins.int - MINOR_FIELD_NUMBER: _builtins.int - major: _builtins.int - 'Major version changes indicate different required support level from\n the required components.\n ' - minor: _builtins.int - 'Minor version changes must not change the observed behavior from\n existing implementations, but may be provided informationally.\n ' - - def __init__(self, *, major: _builtins.int=..., minor: _builtins.int=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['major', b'major', 'minor', b'minor'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - ID_FIELD_NUMBER: _builtins.int - AFFECTED_COMPONENTS_FIELD_NUMBER: _builtins.int - VERSION_FIELD_NUMBER: _builtins.int - id: _builtins.str - 'Identifier for the extension. Example: constant_folding' - - @_builtins.property - def affected_components(self) -> _containers.RepeatedScalarFieldContainer[Global___SourceInfo.Extension.Component.ValueType]: - """If set, the listed components must understand the extension for the - expression to evaluate correctly. - - This field has set semantics, repeated values should be deduplicated. - """ - - @_builtins.property - def version(self) -> Global___SourceInfo.Extension.Version: - """Version info. May be skipped if it isn't meaningful for the extension. - (for example constant_folding might always be v0.0). - """ - - def __init__(self, *, id: _builtins.str=..., affected_components: _abc.Iterable[Global___SourceInfo.Extension.Component.ValueType] | None=..., version: Global___SourceInfo.Extension.Version | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['version', b'version'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['affected_components', b'affected_components', 'id', b'id', 'version', b'version'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class PositionsEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.int - value: _builtins.int - - def __init__(self, *, key: _builtins.int=..., value: _builtins.int=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class MacroCallsEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.int - - @_builtins.property - def value(self) -> Global___Expr: - ... - - def __init__(self, *, key: _builtins.int=..., value: Global___Expr | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['value', b'value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - SYNTAX_VERSION_FIELD_NUMBER: _builtins.int - LOCATION_FIELD_NUMBER: _builtins.int - LINE_OFFSETS_FIELD_NUMBER: _builtins.int - POSITIONS_FIELD_NUMBER: _builtins.int - MACRO_CALLS_FIELD_NUMBER: _builtins.int - EXTENSIONS_FIELD_NUMBER: _builtins.int - syntax_version: _builtins.str - 'The syntax version of the source, e.g. `cel1`.' - location: _builtins.str - 'The location name. All position information attached to an expression is\n relative to this location.\n\n The location could be a file, UI element, or similar. For example,\n `acme/app/AnvilPolicy.cel`.\n ' - - @_builtins.property - def line_offsets(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: - """Monotonically increasing list of code point offsets where newlines - `\\n` appear. - - The line number of a given position is the index `i` where for a given - `id` the `line_offsets[i] < id_positions[id] < line_offsets[i+1]`. The - column may be derivd from `id_positions[id] - line_offsets[i]`. - """ - - @_builtins.property - def positions(self) -> _containers.ScalarMap[_builtins.int, _builtins.int]: - """A map from the parse node id (e.g. `Expr.id`) to the code point offset - within the source. - """ - - @_builtins.property - def macro_calls(self) -> _containers.MessageMap[_builtins.int, Global___Expr]: - """A map from the parse node id where a macro replacement was made to the - call `Expr` that resulted in a macro expansion. - - For example, `has(value.field)` is a function call that is replaced by a - `test_only` field selection in the AST. Likewise, the call - `list.exists(e, e > 10)` translates to a comprehension expression. The key - in the map corresponds to the expression id of the expanded macro, and the - value is the call `Expr` that was replaced. - """ - - @_builtins.property - def extensions(self) -> _containers.RepeatedCompositeFieldContainer[Global___SourceInfo.Extension]: - """A list of tags for extensions that were used while parsing or type checking - the source expression. For example, optimizations that require special - runtime support may be specified. - - These are used to check feature support between components in separate - implementations. This can be used to either skip redundant work or - report an error if the extension is unsupported. - """ - - def __init__(self, *, syntax_version: _builtins.str=..., location: _builtins.str=..., line_offsets: _abc.Iterable[_builtins.int] | None=..., positions: _abc.Mapping[_builtins.int, _builtins.int] | None=..., macro_calls: _abc.Mapping[_builtins.int, Global___Expr] | None=..., extensions: _abc.Iterable[Global___SourceInfo.Extension] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['extensions', b'extensions', 'line_offsets', b'line_offsets', 'location', b'location', 'macro_calls', b'macro_calls', 'positions', b'positions', 'syntax_version', b'syntax_version'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___SourceInfo: _TypeAlias = SourceInfo - -@_typing.final -class SourcePosition(_message.Message): - """A specific position in source.""" - DESCRIPTOR: _descriptor.Descriptor - LOCATION_FIELD_NUMBER: _builtins.int - OFFSET_FIELD_NUMBER: _builtins.int - LINE_FIELD_NUMBER: _builtins.int - COLUMN_FIELD_NUMBER: _builtins.int - location: _builtins.str - 'The soucre location name (e.g. file name).' - offset: _builtins.int - 'The UTF-8 code unit offset.' - line: _builtins.int - 'The 1-based index of the starting line in the source text\n where the issue occurs, or 0 if unknown.\n ' - column: _builtins.int - 'The 0-based index of the starting position within the line of source text\n where the issue occurs. Only meaningful if line is nonzero.\n ' - - def __init__(self, *, location: _builtins.str=..., offset: _builtins.int=..., line: _builtins.int=..., column: _builtins.int=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['column', b'column', 'line', b'line', 'location', b'location', 'offset', b'offset'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___SourcePosition: _TypeAlias = SourcePosition \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1alpha1/value_grpc.py b/src/viam/gen/google/api/expr/v1alpha1/value_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/expr/v1alpha1/value_pb2.py b/src/viam/gen/google/api/expr/v1alpha1/value_pb2.py deleted file mode 100644 index 47b224acf0..0000000000 --- a/src/viam/gen/google/api/expr/v1alpha1/value_pb2.py +++ /dev/null @@ -1,27 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1alpha1/value.proto') -_sym_db = _symbol_database.Default() -from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 -from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$google/api/expr/v1alpha1/value.proto\x12\x18google.api.expr.v1alpha1\x1a\x19google/protobuf/any.proto\x1a\x1cgoogle/protobuf/struct.proto"\xcd\x04\n\x05Value\x12;\n\nnull_value\x18\x01 \x01(\x0e2\x1a.google.protobuf.NullValueH\x00R\tnullValue\x12\x1f\n\nbool_value\x18\x02 \x01(\x08H\x00R\tboolValue\x12!\n\x0bint64_value\x18\x03 \x01(\x03H\x00R\nint64Value\x12#\n\x0cuint64_value\x18\x04 \x01(\x04H\x00R\x0buint64Value\x12#\n\x0cdouble_value\x18\x05 \x01(\x01H\x00R\x0bdoubleValue\x12#\n\x0cstring_value\x18\x06 \x01(\tH\x00R\x0bstringValue\x12!\n\x0bbytes_value\x18\x07 \x01(\x0cH\x00R\nbytesValue\x12D\n\nenum_value\x18\t \x01(\x0b2#.google.api.expr.v1alpha1.EnumValueH\x00R\tenumValue\x129\n\x0cobject_value\x18\n \x01(\x0b2\x14.google.protobuf.AnyH\x00R\x0bobjectValue\x12A\n\tmap_value\x18\x0b \x01(\x0b2".google.api.expr.v1alpha1.MapValueH\x00R\x08mapValue\x12D\n\nlist_value\x18\x0c \x01(\x0b2#.google.api.expr.v1alpha1.ListValueH\x00R\tlistValue\x12\x1f\n\ntype_value\x18\x0f \x01(\tH\x00R\ttypeValueB\x06\n\x04kind"5\n\tEnumValue\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value"D\n\tListValue\x127\n\x06values\x18\x01 \x03(\x0b2\x1f.google.api.expr.v1alpha1.ValueR\x06values"\xc1\x01\n\x08MapValue\x12B\n\x07entries\x18\x01 \x03(\x0b2(.google.api.expr.v1alpha1.MapValue.EntryR\x07entries\x1aq\n\x05Entry\x121\n\x03key\x18\x01 \x01(\x0b2\x1f.google.api.expr.v1alpha1.ValueR\x03key\x125\n\x05value\x18\x02 \x01(\x0b2\x1f.google.api.expr.v1alpha1.ValueR\x05valueBm\n\x1ccom.google.api.expr.v1alpha1B\nValueProtoP\x01Z= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class Value(_message.Message): - """Contains representations for CEL runtime values. - - Represents a CEL value. - - This is similar to `google.protobuf.Value`, but can represent CEL's full - range of values. - """ - DESCRIPTOR: _descriptor.Descriptor - NULL_VALUE_FIELD_NUMBER: _builtins.int - BOOL_VALUE_FIELD_NUMBER: _builtins.int - INT64_VALUE_FIELD_NUMBER: _builtins.int - UINT64_VALUE_FIELD_NUMBER: _builtins.int - DOUBLE_VALUE_FIELD_NUMBER: _builtins.int - STRING_VALUE_FIELD_NUMBER: _builtins.int - BYTES_VALUE_FIELD_NUMBER: _builtins.int - ENUM_VALUE_FIELD_NUMBER: _builtins.int - OBJECT_VALUE_FIELD_NUMBER: _builtins.int - MAP_VALUE_FIELD_NUMBER: _builtins.int - LIST_VALUE_FIELD_NUMBER: _builtins.int - TYPE_VALUE_FIELD_NUMBER: _builtins.int - null_value: _struct_pb2.NullValue.ValueType - 'Null value.' - bool_value: _builtins.bool - 'Boolean value.' - int64_value: _builtins.int - 'Signed integer value.' - uint64_value: _builtins.int - 'Unsigned integer value.' - double_value: _builtins.float - 'Floating point value.' - string_value: _builtins.str - 'UTF-8 string value.' - bytes_value: _builtins.bytes - 'Byte string value.' - type_value: _builtins.str - 'Type value.' - - @_builtins.property - def enum_value(self) -> Global___EnumValue: - """An enum value.""" - - @_builtins.property - def object_value(self) -> _any_pb2.Any: - """The proto message backing an object value.""" - - @_builtins.property - def map_value(self) -> Global___MapValue: - """Map value.""" - - @_builtins.property - def list_value(self) -> Global___ListValue: - """List value.""" - - def __init__(self, *, null_value: _struct_pb2.NullValue.ValueType=..., bool_value: _builtins.bool=..., int64_value: _builtins.int=..., uint64_value: _builtins.int=..., double_value: _builtins.float=..., string_value: _builtins.str=..., bytes_value: _builtins.bytes=..., enum_value: Global___EnumValue | None=..., object_value: _any_pb2.Any | None=..., map_value: Global___MapValue | None=..., list_value: Global___ListValue | None=..., type_value: _builtins.str=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'double_value', b'double_value', 'enum_value', b'enum_value', 'int64_value', b'int64_value', 'kind', b'kind', 'list_value', b'list_value', 'map_value', b'map_value', 'null_value', b'null_value', 'object_value', b'object_value', 'string_value', b'string_value', 'type_value', b'type_value', 'uint64_value', b'uint64_value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'double_value', b'double_value', 'enum_value', b'enum_value', 'int64_value', b'int64_value', 'kind', b'kind', 'list_value', b'list_value', 'map_value', b'map_value', 'null_value', b'null_value', 'object_value', b'object_value', 'string_value', b'string_value', 'type_value', b'type_value', 'uint64_value', b'uint64_value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - _WhichOneofReturnType_kind: _TypeAlias = _typing.Literal['null_value', 'bool_value', 'int64_value', 'uint64_value', 'double_value', 'string_value', 'bytes_value', 'enum_value', 'object_value', 'map_value', 'list_value', 'type_value'] - _WhichOneofArgType_kind: _TypeAlias = _typing.Literal['kind', b'kind'] - - def WhichOneof(self, oneof_group: _WhichOneofArgType_kind) -> _WhichOneofReturnType_kind | None: - ... -Global___Value: _TypeAlias = Value - -@_typing.final -class EnumValue(_message.Message): - """An enum value.""" - DESCRIPTOR: _descriptor.Descriptor - TYPE_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - type: _builtins.str - 'The fully qualified name of the enum type.' - value: _builtins.int - 'The value of the enum.' - - def __init__(self, *, type: _builtins.str=..., value: _builtins.int=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['type', b'type', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___EnumValue: _TypeAlias = EnumValue - -@_typing.final -class ListValue(_message.Message): - """A list. - - Wrapped in a message so 'not set' and empty can be differentiated, which is - required for use in a 'oneof'. - """ - DESCRIPTOR: _descriptor.Descriptor - VALUES_FIELD_NUMBER: _builtins.int - - @_builtins.property - def values(self) -> _containers.RepeatedCompositeFieldContainer[Global___Value]: - """The ordered values in the list.""" - - def __init__(self, *, values: _abc.Iterable[Global___Value] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['values', b'values'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___ListValue: _TypeAlias = ListValue - -@_typing.final -class MapValue(_message.Message): - """A map. - - Wrapped in a message so 'not set' and empty can be differentiated, which is - required for use in a 'oneof'. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class Entry(_message.Message): - """An entry in the map.""" - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - - @_builtins.property - def key(self) -> Global___Value: - """The key. - - Must be unique with in the map. - Currently only boolean, int, uint, and string values can be keys. - """ - - @_builtins.property - def value(self) -> Global___Value: - """The value.""" - - def __init__(self, *, key: Global___Value | None=..., value: Global___Value | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - ENTRIES_FIELD_NUMBER: _builtins.int - - @_builtins.property - def entries(self) -> _containers.RepeatedCompositeFieldContainer[Global___MapValue.Entry]: - """The set of map entries. - - CEL has fewer restrictions on keys, so a protobuf map represenation - cannot be used. - """ - - def __init__(self, *, entries: _abc.Iterable[Global___MapValue.Entry] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['entries', b'entries'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___MapValue: _TypeAlias = MapValue \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/__init__.py b/src/viam/gen/google/api/expr/v1beta1/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/expr/v1beta1/decl_grpc.py b/src/viam/gen/google/api/expr/v1beta1/decl_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/expr/v1beta1/decl_pb2.py b/src/viam/gen/google/api/expr/v1beta1/decl_pb2.py deleted file mode 100644 index db5dab5c96..0000000000 --- a/src/viam/gen/google/api/expr/v1beta1/decl_pb2.py +++ /dev/null @@ -1,24 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1beta1/decl.proto') -_sym_db = _symbol_database.Default() -from .....google.api.expr.v1beta1 import expr_pb2 as google_dot_api_dot_expr_dot_v1beta1_dot_expr__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"google/api/expr/v1beta1/decl.proto\x12\x17google.api.expr.v1beta1\x1a"google/api/expr/v1beta1/expr.proto"\xc5\x01\n\x04Decl\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n\x03doc\x18\x03 \x01(\tR\x03doc\x12:\n\x05ident\x18\x04 \x01(\x0b2".google.api.expr.v1beta1.IdentDeclH\x00R\x05ident\x12C\n\x08function\x18\x05 \x01(\x0b2%.google.api.expr.v1beta1.FunctionDeclH\x00R\x08functionB\x06\n\x04kind"r\n\x08DeclType\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02id\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12B\n\x0btype_params\x18\x04 \x03(\x0b2!.google.api.expr.v1beta1.DeclTypeR\ntypeParams"w\n\tIdentDecl\x125\n\x04type\x18\x03 \x01(\x0b2!.google.api.expr.v1beta1.DeclTypeR\x04type\x123\n\x05value\x18\x04 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x05value"\xb7\x01\n\x0cFunctionDecl\x126\n\x04args\x18\x01 \x03(\x0b2".google.api.expr.v1beta1.IdentDeclR\x04args\x12B\n\x0breturn_type\x18\x02 \x01(\x0b2!.google.api.expr.v1beta1.DeclTypeR\nreturnType\x12+\n\x11receiver_function\x18\x03 \x01(\x08R\x10receiverFunctionBj\n\x1bcom.google.api.expr.v1beta1B\tDeclProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01b\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.expr.v1beta1.decl_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x1bcom.google.api.expr.v1beta1B\tDeclProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01' - _globals['_DECL']._serialized_start = 100 - _globals['_DECL']._serialized_end = 297 - _globals['_DECLTYPE']._serialized_start = 299 - _globals['_DECLTYPE']._serialized_end = 413 - _globals['_IDENTDECL']._serialized_start = 415 - _globals['_IDENTDECL']._serialized_end = 534 - _globals['_FUNCTIONDECL']._serialized_start = 537 - _globals['_FUNCTIONDECL']._serialized_end = 720 \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/decl_pb2.pyi b/src/viam/gen/google/api/expr/v1beta1/decl_pb2.pyi deleted file mode 100644 index 5a67984965..0000000000 --- a/src/viam/gen/google/api/expr/v1beta1/decl_pb2.pyi +++ /dev/null @@ -1,158 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from collections import abc as _abc -from google.api.expr.v1beta1 import expr_pb2 as _expr_pb2 -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf.internal import containers as _containers -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class Decl(_message.Message): - """A declaration.""" - DESCRIPTOR: _descriptor.Descriptor - ID_FIELD_NUMBER: _builtins.int - NAME_FIELD_NUMBER: _builtins.int - DOC_FIELD_NUMBER: _builtins.int - IDENT_FIELD_NUMBER: _builtins.int - FUNCTION_FIELD_NUMBER: _builtins.int - id: _builtins.int - 'The id of the declaration.' - name: _builtins.str - 'The name of the declaration.' - doc: _builtins.str - 'The documentation string for the declaration.' - - @_builtins.property - def ident(self) -> Global___IdentDecl: - """An identifier declaration.""" - - @_builtins.property - def function(self) -> Global___FunctionDecl: - """A function declaration.""" - - def __init__(self, *, id: _builtins.int=..., name: _builtins.str=..., doc: _builtins.str=..., ident: Global___IdentDecl | None=..., function: Global___FunctionDecl | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['function', b'function', 'ident', b'ident', 'kind', b'kind'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['doc', b'doc', 'function', b'function', 'id', b'id', 'ident', b'ident', 'kind', b'kind', 'name', b'name'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - _WhichOneofReturnType_kind: _TypeAlias = _typing.Literal['ident', 'function'] - _WhichOneofArgType_kind: _TypeAlias = _typing.Literal['kind', b'kind'] - - def WhichOneof(self, oneof_group: _WhichOneofArgType_kind) -> _WhichOneofReturnType_kind | None: - ... -Global___Decl: _TypeAlias = Decl - -@_typing.final -class DeclType(_message.Message): - """The declared type of a variable. - - Extends runtime type values with extra information used for type checking - and dispatching. - """ - DESCRIPTOR: _descriptor.Descriptor - ID_FIELD_NUMBER: _builtins.int - TYPE_FIELD_NUMBER: _builtins.int - TYPE_PARAMS_FIELD_NUMBER: _builtins.int - id: _builtins.int - 'The expression id of the declared type, if applicable.' - type: _builtins.str - "The type name, e.g. 'int', 'my.type.Type' or 'T'" - - @_builtins.property - def type_params(self) -> _containers.RepeatedCompositeFieldContainer[Global___DeclType]: - """An ordered list of type parameters, e.g. ``. - Only applies to a subset of types, e.g. `map`, `list`. - """ - - def __init__(self, *, id: _builtins.int=..., type: _builtins.str=..., type_params: _abc.Iterable[Global___DeclType] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id', 'type', b'type', 'type_params', b'type_params'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___DeclType: _TypeAlias = DeclType - -@_typing.final -class IdentDecl(_message.Message): - """An identifier declaration.""" - DESCRIPTOR: _descriptor.Descriptor - TYPE_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - - @_builtins.property - def type(self) -> Global___DeclType: - """Optional type of the identifier.""" - - @_builtins.property - def value(self) -> _expr_pb2.Expr: - """Optional value of the identifier.""" - - def __init__(self, *, type: Global___DeclType | None=..., value: _expr_pb2.Expr | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['type', b'type', 'value', b'value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['type', b'type', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___IdentDecl: _TypeAlias = IdentDecl - -@_typing.final -class FunctionDecl(_message.Message): - """A function declaration.""" - DESCRIPTOR: _descriptor.Descriptor - ARGS_FIELD_NUMBER: _builtins.int - RETURN_TYPE_FIELD_NUMBER: _builtins.int - RECEIVER_FUNCTION_FIELD_NUMBER: _builtins.int - receiver_function: _builtins.bool - 'If the first argument of the function is the receiver.' - - @_builtins.property - def args(self) -> _containers.RepeatedCompositeFieldContainer[Global___IdentDecl]: - """The function arguments.""" - - @_builtins.property - def return_type(self) -> Global___DeclType: - """Optional declared return type.""" - - def __init__(self, *, args: _abc.Iterable[Global___IdentDecl] | None=..., return_type: Global___DeclType | None=..., receiver_function: _builtins.bool=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['return_type', b'return_type'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['args', b'args', 'receiver_function', b'receiver_function', 'return_type', b'return_type'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___FunctionDecl: _TypeAlias = FunctionDecl \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/eval_grpc.py b/src/viam/gen/google/api/expr/v1beta1/eval_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/expr/v1beta1/eval_pb2.py b/src/viam/gen/google/api/expr/v1beta1/eval_pb2.py deleted file mode 100644 index 6ce24594c7..0000000000 --- a/src/viam/gen/google/api/expr/v1beta1/eval_pb2.py +++ /dev/null @@ -1,29 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1beta1/eval.proto') -_sym_db = _symbol_database.Default() -from .....google.api.expr.v1beta1 import value_pb2 as google_dot_api_dot_expr_dot_v1beta1_dot_value__pb2 -from .....google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"google/api/expr/v1beta1/eval.proto\x12\x17google.api.expr.v1beta1\x1a#google/api/expr/v1beta1/value.proto\x1a\x17google/rpc/status.proto"\xe0\x01\n\tEvalState\x12:\n\x06values\x18\x01 \x03(\x0b2".google.api.expr.v1beta1.ExprValueR\x06values\x12C\n\x07results\x18\x03 \x03(\x0b2).google.api.expr.v1beta1.EvalState.ResultR\x07results\x1aR\n\x06Result\x122\n\x04expr\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1beta1.IdRefR\x04expr\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value"\xc7\x01\n\tExprValue\x126\n\x05value\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1beta1.ValueH\x00R\x05value\x129\n\x05error\x18\x02 \x01(\x0b2!.google.api.expr.v1beta1.ErrorSetH\x00R\x05error\x12?\n\x07unknown\x18\x03 \x01(\x0b2#.google.api.expr.v1beta1.UnknownSetH\x00R\x07unknownB\x06\n\x04kind"6\n\x08ErrorSet\x12*\n\x06errors\x18\x01 \x03(\x0b2\x12.google.rpc.StatusR\x06errors"B\n\nUnknownSet\x124\n\x05exprs\x18\x01 \x03(\x0b2\x1e.google.api.expr.v1beta1.IdRefR\x05exprs"\x17\n\x05IdRef\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02idBj\n\x1bcom.google.api.expr.v1beta1B\tEvalProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01b\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.expr.v1beta1.eval_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x1bcom.google.api.expr.v1beta1B\tEvalProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01' - _globals['_EVALSTATE']._serialized_start = 126 - _globals['_EVALSTATE']._serialized_end = 350 - _globals['_EVALSTATE_RESULT']._serialized_start = 268 - _globals['_EVALSTATE_RESULT']._serialized_end = 350 - _globals['_EXPRVALUE']._serialized_start = 353 - _globals['_EXPRVALUE']._serialized_end = 552 - _globals['_ERRORSET']._serialized_start = 554 - _globals['_ERRORSET']._serialized_end = 608 - _globals['_UNKNOWNSET']._serialized_start = 610 - _globals['_UNKNOWNSET']._serialized_end = 676 - _globals['_IDREF']._serialized_start = 678 - _globals['_IDREF']._serialized_end = 701 \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/eval_pb2.pyi b/src/viam/gen/google/api/expr/v1beta1/eval_pb2.pyi deleted file mode 100644 index 0b28e4e609..0000000000 --- a/src/viam/gen/google/api/expr/v1beta1/eval_pb2.pyi +++ /dev/null @@ -1,220 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from collections import abc as _abc -from google.api.expr.v1beta1 import value_pb2 as _value_pb2 -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf.internal import containers as _containers -from google.rpc import status_pb2 as _status_pb2 -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class EvalState(_message.Message): - """The state of an evaluation. - - Can represent an initial, partial, or completed state of evaluation. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class Result(_message.Message): - """A single evaluation result.""" - DESCRIPTOR: _descriptor.Descriptor - EXPR_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - value: _builtins.int - 'The index in `values` of the resulting value.' - - @_builtins.property - def expr(self) -> Global___IdRef: - """The expression this result is for.""" - - def __init__(self, *, expr: Global___IdRef | None=..., value: _builtins.int=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - VALUES_FIELD_NUMBER: _builtins.int - RESULTS_FIELD_NUMBER: _builtins.int - - @_builtins.property - def values(self) -> _containers.RepeatedCompositeFieldContainer[Global___ExprValue]: - """The unique values referenced in this message.""" - - @_builtins.property - def results(self) -> _containers.RepeatedCompositeFieldContainer[Global___EvalState.Result]: - """An ordered list of results. - - Tracks the flow of evaluation through the expression. - May be sparse. - """ - - def __init__(self, *, values: _abc.Iterable[Global___ExprValue] | None=..., results: _abc.Iterable[Global___EvalState.Result] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['results', b'results', 'values', b'values'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___EvalState: _TypeAlias = EvalState - -@_typing.final -class ExprValue(_message.Message): - """The value of an evaluated expression.""" - DESCRIPTOR: _descriptor.Descriptor - VALUE_FIELD_NUMBER: _builtins.int - ERROR_FIELD_NUMBER: _builtins.int - UNKNOWN_FIELD_NUMBER: _builtins.int - - @_builtins.property - def value(self) -> _value_pb2.Value: - """A concrete value.""" - - @_builtins.property - def error(self) -> Global___ErrorSet: - """The set of errors in the critical path of evalution. - - Only errors in the critical path are included. For example, - `( || true) && ` will only result in ``, - while ` || ` will result in both `` and - ``. - - Errors cause by the presence of other errors are not included in the - set. For example `.foo`, `foo()`, and ` + 1` will - only result in ``. - - Multiple errors *might* be included when evaluation could result - in different errors. For example ` + ` and - `foo(, )` may result in ``, `` or both. - The exact subset of errors included for this case is unspecified and - depends on the implementation details of the evaluator. - """ - - @_builtins.property - def unknown(self) -> Global___UnknownSet: - """The set of unknowns in the critical path of evaluation. - - Unknown behaves identically to Error with regards to propagation. - Specifically, only unknowns in the critical path are included, unknowns - caused by the presence of other unknowns are not included, and multiple - unknowns *might* be included included when evaluation could result in - different unknowns. For example: - - ( || true) && -> - || -> - .foo -> - foo() -> - + -> or - - Unknown takes precidence over Error in cases where a `Value` can short - circuit the result: - - || -> - && -> - - Errors take precidence in all other cases: - - + -> - foo(, ) -> - """ - - def __init__(self, *, value: _value_pb2.Value | None=..., error: Global___ErrorSet | None=..., unknown: Global___UnknownSet | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['error', b'error', 'kind', b'kind', 'unknown', b'unknown', 'value', b'value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['error', b'error', 'kind', b'kind', 'unknown', b'unknown', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - _WhichOneofReturnType_kind: _TypeAlias = _typing.Literal['value', 'error', 'unknown'] - _WhichOneofArgType_kind: _TypeAlias = _typing.Literal['kind', b'kind'] - - def WhichOneof(self, oneof_group: _WhichOneofArgType_kind) -> _WhichOneofReturnType_kind | None: - ... -Global___ExprValue: _TypeAlias = ExprValue - -@_typing.final -class ErrorSet(_message.Message): - """A set of errors. - - The errors included depend on the context. See `ExprValue.error`. - """ - DESCRIPTOR: _descriptor.Descriptor - ERRORS_FIELD_NUMBER: _builtins.int - - @_builtins.property - def errors(self) -> _containers.RepeatedCompositeFieldContainer[_status_pb2.Status]: - """The errors in the set.""" - - def __init__(self, *, errors: _abc.Iterable[_status_pb2.Status] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['errors', b'errors'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___ErrorSet: _TypeAlias = ErrorSet - -@_typing.final -class UnknownSet(_message.Message): - """A set of expressions for which the value is unknown. - - The unknowns included depend on the context. See `ExprValue.unknown`. - """ - DESCRIPTOR: _descriptor.Descriptor - EXPRS_FIELD_NUMBER: _builtins.int - - @_builtins.property - def exprs(self) -> _containers.RepeatedCompositeFieldContainer[Global___IdRef]: - """The ids of the expressions with unknown values.""" - - def __init__(self, *, exprs: _abc.Iterable[Global___IdRef] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['exprs', b'exprs'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___UnknownSet: _TypeAlias = UnknownSet - -@_typing.final -class IdRef(_message.Message): - """A reference to an expression id.""" - DESCRIPTOR: _descriptor.Descriptor - ID_FIELD_NUMBER: _builtins.int - id: _builtins.int - 'The expression id.' - - def __init__(self, *, id: _builtins.int=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['id', b'id'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___IdRef: _TypeAlias = IdRef \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/expr_grpc.py b/src/viam/gen/google/api/expr/v1beta1/expr_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/expr/v1beta1/expr_pb2.py b/src/viam/gen/google/api/expr/v1beta1/expr_pb2.py deleted file mode 100644 index ca9bda8f16..0000000000 --- a/src/viam/gen/google/api/expr/v1beta1/expr_pb2.py +++ /dev/null @@ -1,37 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1beta1/expr.proto') -_sym_db = _symbol_database.Default() -from .....google.api.expr.v1beta1 import source_pb2 as google_dot_api_dot_expr_dot_v1beta1_dot_source__pb2 -from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"google/api/expr/v1beta1/expr.proto\x12\x17google.api.expr.v1beta1\x1a$google/api/expr/v1beta1/source.proto\x1a\x1cgoogle/protobuf/struct.proto"\xac\x01\n\nParsedExpr\x121\n\x04expr\x18\x02 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x04expr\x12D\n\x0bsource_info\x18\x03 \x01(\x0b2#.google.api.expr.v1beta1.SourceInfoR\nsourceInfo\x12%\n\x0esyntax_version\x18\x04 \x01(\tR\rsyntaxVersion"\xbd\x0c\n\x04Expr\x12\x0e\n\x02id\x18\x02 \x01(\x05R\x02id\x12E\n\x0cliteral_expr\x18\x03 \x01(\x0b2 .google.api.expr.v1beta1.LiteralH\x00R\x0bliteralExpr\x12D\n\nident_expr\x18\x04 \x01(\x0b2#.google.api.expr.v1beta1.Expr.IdentH\x00R\tidentExpr\x12G\n\x0bselect_expr\x18\x05 \x01(\x0b2$.google.api.expr.v1beta1.Expr.SelectH\x00R\nselectExpr\x12A\n\tcall_expr\x18\x06 \x01(\x0b2".google.api.expr.v1beta1.Expr.CallH\x00R\x08callExpr\x12G\n\tlist_expr\x18\x07 \x01(\x0b2(.google.api.expr.v1beta1.Expr.CreateListH\x00R\x08listExpr\x12M\n\x0bstruct_expr\x18\x08 \x01(\x0b2*.google.api.expr.v1beta1.Expr.CreateStructH\x00R\nstructExpr\x12\\\n\x12comprehension_expr\x18\t \x01(\x0b2+.google.api.expr.v1beta1.Expr.ComprehensionH\x00R\x11comprehensionExpr\x1a\x1b\n\x05Ident\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x1at\n\x06Select\x127\n\x07operand\x18\x01 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x07operand\x12\x14\n\x05field\x18\x02 \x01(\tR\x05field\x12\x1b\n\ttest_only\x18\x03 \x01(\x08R\x08testOnly\x1a\x8c\x01\n\x04Call\x125\n\x06target\x18\x01 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x06target\x12\x1a\n\x08function\x18\x02 \x01(\tR\x08function\x121\n\x04args\x18\x03 \x03(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x04args\x1aG\n\nCreateList\x129\n\x08elements\x18\x01 \x03(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x08elements\x1a\xa2\x02\n\x0cCreateStruct\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12J\n\x07entries\x18\x02 \x03(\x0b20.google.api.expr.v1beta1.Expr.CreateStruct.EntryR\x07entries\x1a\xb1\x01\n\x05Entry\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02id\x12\x1d\n\tfield_key\x18\x02 \x01(\tH\x00R\x08fieldKey\x128\n\x07map_key\x18\x03 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprH\x00R\x06mapKey\x123\n\x05value\x18\x04 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x05valueB\n\n\x08key_kind\x1a\xf8\x02\n\rComprehension\x12\x19\n\x08iter_var\x18\x01 \x01(\tR\x07iterVar\x12<\n\niter_range\x18\x02 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\titerRange\x12\x19\n\x08accu_var\x18\x03 \x01(\tR\x07accuVar\x12:\n\taccu_init\x18\x04 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x08accuInit\x12D\n\x0eloop_condition\x18\x05 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\rloopCondition\x12:\n\tloop_step\x18\x06 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x08loopStep\x125\n\x06result\x18\x07 \x01(\x0b2\x1d.google.api.expr.v1beta1.ExprR\x06resultB\x0b\n\texpr_kind"\xad\x02\n\x07Literal\x12;\n\nnull_value\x18\x01 \x01(\x0e2\x1a.google.protobuf.NullValueH\x00R\tnullValue\x12\x1f\n\nbool_value\x18\x02 \x01(\x08H\x00R\tboolValue\x12!\n\x0bint64_value\x18\x03 \x01(\x03H\x00R\nint64Value\x12#\n\x0cuint64_value\x18\x04 \x01(\x04H\x00R\x0buint64Value\x12#\n\x0cdouble_value\x18\x05 \x01(\x01H\x00R\x0bdoubleValue\x12#\n\x0cstring_value\x18\x06 \x01(\tH\x00R\x0bstringValue\x12!\n\x0bbytes_value\x18\x07 \x01(\x0cH\x00R\nbytesValueB\x0f\n\rconstant_kindBj\n\x1bcom.google.api.expr.v1beta1B\tExprProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01b\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.expr.v1beta1.expr_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x1bcom.google.api.expr.v1beta1B\tExprProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01' - _globals['_PARSEDEXPR']._serialized_start = 132 - _globals['_PARSEDEXPR']._serialized_end = 304 - _globals['_EXPR']._serialized_start = 307 - _globals['_EXPR']._serialized_end = 1904 - _globals['_EXPR_IDENT']._serialized_start = 858 - _globals['_EXPR_IDENT']._serialized_end = 885 - _globals['_EXPR_SELECT']._serialized_start = 887 - _globals['_EXPR_SELECT']._serialized_end = 1003 - _globals['_EXPR_CALL']._serialized_start = 1006 - _globals['_EXPR_CALL']._serialized_end = 1146 - _globals['_EXPR_CREATELIST']._serialized_start = 1148 - _globals['_EXPR_CREATELIST']._serialized_end = 1219 - _globals['_EXPR_CREATESTRUCT']._serialized_start = 1222 - _globals['_EXPR_CREATESTRUCT']._serialized_end = 1512 - _globals['_EXPR_CREATESTRUCT_ENTRY']._serialized_start = 1335 - _globals['_EXPR_CREATESTRUCT_ENTRY']._serialized_end = 1512 - _globals['_EXPR_COMPREHENSION']._serialized_start = 1515 - _globals['_EXPR_COMPREHENSION']._serialized_end = 1891 - _globals['_LITERAL']._serialized_start = 1907 - _globals['_LITERAL']._serialized_end = 2208 \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/expr_pb2.pyi b/src/viam/gen/google/api/expr/v1beta1/expr_pb2.pyi deleted file mode 100644 index a7a5547c62..0000000000 --- a/src/viam/gen/google/api/expr/v1beta1/expr_pb2.pyi +++ /dev/null @@ -1,436 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from collections import abc as _abc -from google.api.expr.v1beta1 import source_pb2 as _source_pb2 -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import struct_pb2 as _struct_pb2 -from google.protobuf.internal import containers as _containers -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class ParsedExpr(_message.Message): - """An expression together with source information as returned by the parser.""" - DESCRIPTOR: _descriptor.Descriptor - EXPR_FIELD_NUMBER: _builtins.int - SOURCE_INFO_FIELD_NUMBER: _builtins.int - SYNTAX_VERSION_FIELD_NUMBER: _builtins.int - syntax_version: _builtins.str - 'The syntax version of the source, e.g. `cel1`.' - - @_builtins.property - def expr(self) -> Global___Expr: - """The parsed expression.""" - - @_builtins.property - def source_info(self) -> _source_pb2.SourceInfo: - """The source info derived from input that generated the parsed `expr`.""" - - def __init__(self, *, expr: Global___Expr | None=..., source_info: _source_pb2.SourceInfo | None=..., syntax_version: _builtins.str=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'source_info', b'source_info'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['expr', b'expr', 'source_info', b'source_info', 'syntax_version', b'syntax_version'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___ParsedExpr: _TypeAlias = ParsedExpr - -@_typing.final -class Expr(_message.Message): - """An abstract representation of a common expression. - - Expressions are abstractly represented as a collection of identifiers, - select statements, function calls, literals, and comprehensions. All - operators with the exception of the '.' operator are modelled as function - calls. This makes it easy to represent new operators into the existing AST. - - All references within expressions must resolve to a [Decl][google.api.expr.v1beta1.Decl] provided at - type-check for an expression to be valid. A reference may either be a bare - identifier `name` or a qualified identifier `google.api.name`. References - may either refer to a value or a function declaration. - - For example, the expression `google.api.name.startsWith('expr')` references - the declaration `google.api.name` within a [Expr.Select][google.api.expr.v1beta1.Expr.Select] expression, and - the function declaration `startsWith`. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class Ident(_message.Message): - """An identifier expression. e.g. `request`.""" - DESCRIPTOR: _descriptor.Descriptor - NAME_FIELD_NUMBER: _builtins.int - name: _builtins.str - "Required. Holds a single, unqualified identifier, possibly preceded by a\n '.'.\n\n Qualified names are represented by the [Expr.Select][google.api.expr.v1beta1.Expr.Select] expression.\n " - - def __init__(self, *, name: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['name', b'name'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class Select(_message.Message): - """A field selection expression. e.g. `request.auth`.""" - DESCRIPTOR: _descriptor.Descriptor - OPERAND_FIELD_NUMBER: _builtins.int - FIELD_FIELD_NUMBER: _builtins.int - TEST_ONLY_FIELD_NUMBER: _builtins.int - field: _builtins.str - 'Required. The name of the field to select.\n\n For example, in the select expression `request.auth`, the `auth` portion\n of the expression would be the `field`.\n ' - test_only: _builtins.bool - 'Whether the select is to be interpreted as a field presence test.\n\n This results from the macro `has(request.auth)`.\n ' - - @_builtins.property - def operand(self) -> Global___Expr: - """Required. The target of the selection expression. - - For example, in the select expression `request.auth`, the `request` - portion of the expression is the `operand`. - """ - - def __init__(self, *, operand: Global___Expr | None=..., field: _builtins.str=..., test_only: _builtins.bool=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['operand', b'operand'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['field', b'field', 'operand', b'operand', 'test_only', b'test_only'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class Call(_message.Message): - """A call expression, including calls to predefined functions and operators. - - For example, `value == 10`, `size(map_value)`. - """ - DESCRIPTOR: _descriptor.Descriptor - TARGET_FIELD_NUMBER: _builtins.int - FUNCTION_FIELD_NUMBER: _builtins.int - ARGS_FIELD_NUMBER: _builtins.int - function: _builtins.str - 'Required. The name of the function or method being called.' - - @_builtins.property - def target(self) -> Global___Expr: - """The target of an method call-style expression. For example, `x` in - `x.f()`. - """ - - @_builtins.property - def args(self) -> _containers.RepeatedCompositeFieldContainer[Global___Expr]: - """The arguments.""" - - def __init__(self, *, target: Global___Expr | None=..., function: _builtins.str=..., args: _abc.Iterable[Global___Expr] | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['target', b'target'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['args', b'args', 'function', b'function', 'target', b'target'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class CreateList(_message.Message): - """A list creation expression. - - Lists may either be homogenous, e.g. `[1, 2, 3]`, or heterogenous, e.g. - `dyn([1, 'hello', 2.0])` - """ - DESCRIPTOR: _descriptor.Descriptor - ELEMENTS_FIELD_NUMBER: _builtins.int - - @_builtins.property - def elements(self) -> _containers.RepeatedCompositeFieldContainer[Global___Expr]: - """The elements part of the list.""" - - def __init__(self, *, elements: _abc.Iterable[Global___Expr] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['elements', b'elements'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class CreateStruct(_message.Message): - """A map or message creation expression. - - Maps are constructed as `{'key_name': 'value'}`. Message construction is - similar, but prefixed with a type name and composed of field ids: - `types.MyType{field_id: 'value'}`. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class Entry(_message.Message): - """Represents an entry.""" - DESCRIPTOR: _descriptor.Descriptor - ID_FIELD_NUMBER: _builtins.int - FIELD_KEY_FIELD_NUMBER: _builtins.int - MAP_KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - id: _builtins.int - 'Required. An id assigned to this node by the parser which is unique\n in a given expression tree. This is used to associate type\n information and other attributes to the node.\n ' - field_key: _builtins.str - 'The field key for a message creator statement.' - - @_builtins.property - def map_key(self) -> Global___Expr: - """The key expression for a map creation statement.""" - - @_builtins.property - def value(self) -> Global___Expr: - """Required. The value assigned to the key.""" - - def __init__(self, *, id: _builtins.int=..., field_key: _builtins.str=..., map_key: Global___Expr | None=..., value: Global___Expr | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['field_key', b'field_key', 'key_kind', b'key_kind', 'map_key', b'map_key', 'value', b'value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['field_key', b'field_key', 'id', b'id', 'key_kind', b'key_kind', 'map_key', b'map_key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - _WhichOneofReturnType_key_kind: _TypeAlias = _typing.Literal['field_key', 'map_key'] - _WhichOneofArgType_key_kind: _TypeAlias = _typing.Literal['key_kind', b'key_kind'] - - def WhichOneof(self, oneof_group: _WhichOneofArgType_key_kind) -> _WhichOneofReturnType_key_kind | None: - ... - TYPE_FIELD_NUMBER: _builtins.int - ENTRIES_FIELD_NUMBER: _builtins.int - type: _builtins.str - 'The type name of the message to be created, empty when creating map\n literals.\n ' - - @_builtins.property - def entries(self) -> _containers.RepeatedCompositeFieldContainer[Global___Expr.CreateStruct.Entry]: - """The entries in the creation expression.""" - - def __init__(self, *, type: _builtins.str=..., entries: _abc.Iterable[Global___Expr.CreateStruct.Entry] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['entries', b'entries', 'type', b'type'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class Comprehension(_message.Message): - """A comprehension expression applied to a list or map. - - Comprehensions are not part of the core syntax, but enabled with macros. - A macro matches a specific call signature within a parsed AST and replaces - the call with an alternate AST block. Macro expansion happens at parse - time. - - The following macros are supported within CEL: - - Aggregate type macros may be applied to all elements in a list or all keys - in a map: - - * `all`, `exists`, `exists_one` - test a predicate expression against - the inputs and return `true` if the predicate is satisfied for all, - any, or only one value `list.all(x, x < 10)`. - * `filter` - test a predicate expression against the inputs and return - the subset of elements which satisfy the predicate: - `payments.filter(p, p > 1000)`. - * `map` - apply an expression to all elements in the input and return the - output aggregate type: `[1, 2, 3].map(i, i * i)`. - - The `has(m.x)` macro tests whether the property `x` is present in struct - `m`. The semantics of this macro depend on the type of `m`. For proto2 - messages `has(m.x)` is defined as 'defined, but not set`. For proto3, the - macro tests whether the property is set to its default. For map and struct - types, the macro tests whether the property `x` is defined on `m`. - """ - DESCRIPTOR: _descriptor.Descriptor - ITER_VAR_FIELD_NUMBER: _builtins.int - ITER_RANGE_FIELD_NUMBER: _builtins.int - ACCU_VAR_FIELD_NUMBER: _builtins.int - ACCU_INIT_FIELD_NUMBER: _builtins.int - LOOP_CONDITION_FIELD_NUMBER: _builtins.int - LOOP_STEP_FIELD_NUMBER: _builtins.int - RESULT_FIELD_NUMBER: _builtins.int - iter_var: _builtins.str - 'The name of the iteration variable.' - accu_var: _builtins.str - 'The name of the variable used for accumulation of the result.' - - @_builtins.property - def iter_range(self) -> Global___Expr: - """The range over which var iterates.""" - - @_builtins.property - def accu_init(self) -> Global___Expr: - """The initial value of the accumulator.""" - - @_builtins.property - def loop_condition(self) -> Global___Expr: - """An expression which can contain iter_var and accu_var. - - Returns false when the result has been computed and may be used as - a hint to short-circuit the remainder of the comprehension. - """ - - @_builtins.property - def loop_step(self) -> Global___Expr: - """An expression which can contain iter_var and accu_var. - - Computes the next value of accu_var. - """ - - @_builtins.property - def result(self) -> Global___Expr: - """An expression which can contain accu_var. - - Computes the result. - """ - - def __init__(self, *, iter_var: _builtins.str=..., iter_range: Global___Expr | None=..., accu_var: _builtins.str=..., accu_init: Global___Expr | None=..., loop_condition: Global___Expr | None=..., loop_step: Global___Expr | None=..., result: Global___Expr | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['accu_init', b'accu_init', 'iter_range', b'iter_range', 'loop_condition', b'loop_condition', 'loop_step', b'loop_step', 'result', b'result'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['accu_init', b'accu_init', 'accu_var', b'accu_var', 'iter_range', b'iter_range', 'iter_var', b'iter_var', 'loop_condition', b'loop_condition', 'loop_step', b'loop_step', 'result', b'result'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - ID_FIELD_NUMBER: _builtins.int - LITERAL_EXPR_FIELD_NUMBER: _builtins.int - IDENT_EXPR_FIELD_NUMBER: _builtins.int - SELECT_EXPR_FIELD_NUMBER: _builtins.int - CALL_EXPR_FIELD_NUMBER: _builtins.int - LIST_EXPR_FIELD_NUMBER: _builtins.int - STRUCT_EXPR_FIELD_NUMBER: _builtins.int - COMPREHENSION_EXPR_FIELD_NUMBER: _builtins.int - id: _builtins.int - 'Required. An id assigned to this node by the parser which is unique in a\n given expression tree. This is used to associate type information and other\n attributes to a node in the parse tree.\n ' - - @_builtins.property - def literal_expr(self) -> Global___Literal: - """A literal expression.""" - - @_builtins.property - def ident_expr(self) -> Global___Expr.Ident: - """An identifier expression.""" - - @_builtins.property - def select_expr(self) -> Global___Expr.Select: - """A field selection expression, e.g. `request.auth`.""" - - @_builtins.property - def call_expr(self) -> Global___Expr.Call: - """A call expression, including calls to predefined functions and operators.""" - - @_builtins.property - def list_expr(self) -> Global___Expr.CreateList: - """A list creation expression.""" - - @_builtins.property - def struct_expr(self) -> Global___Expr.CreateStruct: - """A map or object creation expression.""" - - @_builtins.property - def comprehension_expr(self) -> Global___Expr.Comprehension: - """A comprehension expression.""" - - def __init__(self, *, id: _builtins.int=..., literal_expr: Global___Literal | None=..., ident_expr: Global___Expr.Ident | None=..., select_expr: Global___Expr.Select | None=..., call_expr: Global___Expr.Call | None=..., list_expr: Global___Expr.CreateList | None=..., struct_expr: Global___Expr.CreateStruct | None=..., comprehension_expr: Global___Expr.Comprehension | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['call_expr', b'call_expr', 'comprehension_expr', b'comprehension_expr', 'expr_kind', b'expr_kind', 'ident_expr', b'ident_expr', 'list_expr', b'list_expr', 'literal_expr', b'literal_expr', 'select_expr', b'select_expr', 'struct_expr', b'struct_expr'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['call_expr', b'call_expr', 'comprehension_expr', b'comprehension_expr', 'expr_kind', b'expr_kind', 'id', b'id', 'ident_expr', b'ident_expr', 'list_expr', b'list_expr', 'literal_expr', b'literal_expr', 'select_expr', b'select_expr', 'struct_expr', b'struct_expr'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - _WhichOneofReturnType_expr_kind: _TypeAlias = _typing.Literal['literal_expr', 'ident_expr', 'select_expr', 'call_expr', 'list_expr', 'struct_expr', 'comprehension_expr'] - _WhichOneofArgType_expr_kind: _TypeAlias = _typing.Literal['expr_kind', b'expr_kind'] - - def WhichOneof(self, oneof_group: _WhichOneofArgType_expr_kind) -> _WhichOneofReturnType_expr_kind | None: - ... -Global___Expr: _TypeAlias = Expr - -@_typing.final -class Literal(_message.Message): - """Represents a primitive literal. - - This is similar to the primitives supported in the well-known type - `google.protobuf.Value`, but richer so it can represent CEL's full range of - primitives. - - Lists and structs are not included as constants as these aggregate types may - contain [Expr][google.api.expr.v1beta1.Expr] elements which require evaluation and are thus not constant. - - Examples of literals include: `"hello"`, `b'bytes'`, `1u`, `4.2`, `-2`, - `true`, `null`. - """ - DESCRIPTOR: _descriptor.Descriptor - NULL_VALUE_FIELD_NUMBER: _builtins.int - BOOL_VALUE_FIELD_NUMBER: _builtins.int - INT64_VALUE_FIELD_NUMBER: _builtins.int - UINT64_VALUE_FIELD_NUMBER: _builtins.int - DOUBLE_VALUE_FIELD_NUMBER: _builtins.int - STRING_VALUE_FIELD_NUMBER: _builtins.int - BYTES_VALUE_FIELD_NUMBER: _builtins.int - null_value: _struct_pb2.NullValue.ValueType - 'null value.' - bool_value: _builtins.bool - 'boolean value.' - int64_value: _builtins.int - 'int64 value.' - uint64_value: _builtins.int - 'uint64 value.' - double_value: _builtins.float - 'double value.' - string_value: _builtins.str - 'string value.' - bytes_value: _builtins.bytes - 'bytes value.' - - def __init__(self, *, null_value: _struct_pb2.NullValue.ValueType=..., bool_value: _builtins.bool=..., int64_value: _builtins.int=..., uint64_value: _builtins.int=..., double_value: _builtins.float=..., string_value: _builtins.str=..., bytes_value: _builtins.bytes=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'constant_kind', b'constant_kind', 'double_value', b'double_value', 'int64_value', b'int64_value', 'null_value', b'null_value', 'string_value', b'string_value', 'uint64_value', b'uint64_value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'constant_kind', b'constant_kind', 'double_value', b'double_value', 'int64_value', b'int64_value', 'null_value', b'null_value', 'string_value', b'string_value', 'uint64_value', b'uint64_value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - _WhichOneofReturnType_constant_kind: _TypeAlias = _typing.Literal['null_value', 'bool_value', 'int64_value', 'uint64_value', 'double_value', 'string_value', 'bytes_value'] - _WhichOneofArgType_constant_kind: _TypeAlias = _typing.Literal['constant_kind', b'constant_kind'] - - def WhichOneof(self, oneof_group: _WhichOneofArgType_constant_kind) -> _WhichOneofReturnType_constant_kind | None: - ... -Global___Literal: _TypeAlias = Literal \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/source_grpc.py b/src/viam/gen/google/api/expr/v1beta1/source_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/expr/v1beta1/source_pb2.py b/src/viam/gen/google/api/expr/v1beta1/source_pb2.py deleted file mode 100644 index 7e0c0ad82a..0000000000 --- a/src/viam/gen/google/api/expr/v1beta1/source_pb2.py +++ /dev/null @@ -1,23 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1beta1/source.proto') -_sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$google/api/expr/v1beta1/source.proto\x12\x17google.api.expr.v1beta1"\xdb\x01\n\nSourceInfo\x12\x1a\n\x08location\x18\x02 \x01(\tR\x08location\x12!\n\x0cline_offsets\x18\x03 \x03(\x05R\x0blineOffsets\x12P\n\tpositions\x18\x04 \x03(\x0b22.google.api.expr.v1beta1.SourceInfo.PositionsEntryR\tpositions\x1a<\n\x0ePositionsEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01"p\n\x0eSourcePosition\x12\x1a\n\x08location\x18\x01 \x01(\tR\x08location\x12\x16\n\x06offset\x18\x02 \x01(\x05R\x06offset\x12\x12\n\x04line\x18\x03 \x01(\x05R\x04line\x12\x16\n\x06column\x18\x04 \x01(\x05R\x06columnBl\n\x1bcom.google.api.expr.v1beta1B\x0bSourceProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01b\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.expr.v1beta1.source_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x1bcom.google.api.expr.v1beta1B\x0bSourceProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01' - _globals['_SOURCEINFO_POSITIONSENTRY']._loaded_options = None - _globals['_SOURCEINFO_POSITIONSENTRY']._serialized_options = b'8\x01' - _globals['_SOURCEINFO']._serialized_start = 66 - _globals['_SOURCEINFO']._serialized_end = 285 - _globals['_SOURCEINFO_POSITIONSENTRY']._serialized_start = 225 - _globals['_SOURCEINFO_POSITIONSENTRY']._serialized_end = 285 - _globals['_SOURCEPOSITION']._serialized_start = 287 - _globals['_SOURCEPOSITION']._serialized_end = 399 \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/source_pb2.pyi b/src/viam/gen/google/api/expr/v1beta1/source_pb2.pyi deleted file mode 100644 index dc5fe0a78c..0000000000 --- a/src/viam/gen/google/api/expr/v1beta1/source_pb2.pyi +++ /dev/null @@ -1,102 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from collections import abc as _abc -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf.internal import containers as _containers -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class SourceInfo(_message.Message): - """Source information collected at parse time.""" - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class PositionsEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.int - value: _builtins.int - - def __init__(self, *, key: _builtins.int=..., value: _builtins.int=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - LOCATION_FIELD_NUMBER: _builtins.int - LINE_OFFSETS_FIELD_NUMBER: _builtins.int - POSITIONS_FIELD_NUMBER: _builtins.int - location: _builtins.str - 'The location name. All position information attached to an expression is\n relative to this location.\n\n The location could be a file, UI element, or similar. For example,\n `acme/app/AnvilPolicy.cel`.\n ' - - @_builtins.property - def line_offsets(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: - """Monotonically increasing list of character offsets where newlines appear. - - The line number of a given position is the index `i` where for a given - `id` the `line_offsets[i] < id_positions[id] < line_offsets[i+1]`. The - column may be derivd from `id_positions[id] - line_offsets[i]`. - """ - - @_builtins.property - def positions(self) -> _containers.ScalarMap[_builtins.int, _builtins.int]: - """A map from the parse node id (e.g. `Expr.id`) to the character offset - within source. - """ - - def __init__(self, *, location: _builtins.str=..., line_offsets: _abc.Iterable[_builtins.int] | None=..., positions: _abc.Mapping[_builtins.int, _builtins.int] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['line_offsets', b'line_offsets', 'location', b'location', 'positions', b'positions'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___SourceInfo: _TypeAlias = SourceInfo - -@_typing.final -class SourcePosition(_message.Message): - """A specific position in source.""" - DESCRIPTOR: _descriptor.Descriptor - LOCATION_FIELD_NUMBER: _builtins.int - OFFSET_FIELD_NUMBER: _builtins.int - LINE_FIELD_NUMBER: _builtins.int - COLUMN_FIELD_NUMBER: _builtins.int - location: _builtins.str - 'The soucre location name (e.g. file name).' - offset: _builtins.int - 'The character offset.' - line: _builtins.int - 'The 1-based index of the starting line in the source text\n where the issue occurs, or 0 if unknown.\n ' - column: _builtins.int - 'The 0-based index of the starting position within the line of source text\n where the issue occurs. Only meaningful if line is nonzer..\n ' - - def __init__(self, *, location: _builtins.str=..., offset: _builtins.int=..., line: _builtins.int=..., column: _builtins.int=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['column', b'column', 'line', b'line', 'location', b'location', 'offset', b'offset'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___SourcePosition: _TypeAlias = SourcePosition \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/value_grpc.py b/src/viam/gen/google/api/expr/v1beta1/value_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/expr/v1beta1/value_pb2.py b/src/viam/gen/google/api/expr/v1beta1/value_pb2.py deleted file mode 100644 index 86a9d5f042..0000000000 --- a/src/viam/gen/google/api/expr/v1beta1/value_pb2.py +++ /dev/null @@ -1,27 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/expr/v1beta1/value.proto') -_sym_db = _symbol_database.Default() -from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 -from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#google/api/expr/v1beta1/value.proto\x12\x17google.api.expr.v1beta1\x1a\x19google/protobuf/any.proto\x1a\x1cgoogle/protobuf/struct.proto"\xca\x04\n\x05Value\x12;\n\nnull_value\x18\x01 \x01(\x0e2\x1a.google.protobuf.NullValueH\x00R\tnullValue\x12\x1f\n\nbool_value\x18\x02 \x01(\x08H\x00R\tboolValue\x12!\n\x0bint64_value\x18\x03 \x01(\x03H\x00R\nint64Value\x12#\n\x0cuint64_value\x18\x04 \x01(\x04H\x00R\x0buint64Value\x12#\n\x0cdouble_value\x18\x05 \x01(\x01H\x00R\x0bdoubleValue\x12#\n\x0cstring_value\x18\x06 \x01(\tH\x00R\x0bstringValue\x12!\n\x0bbytes_value\x18\x07 \x01(\x0cH\x00R\nbytesValue\x12C\n\nenum_value\x18\t \x01(\x0b2".google.api.expr.v1beta1.EnumValueH\x00R\tenumValue\x129\n\x0cobject_value\x18\n \x01(\x0b2\x14.google.protobuf.AnyH\x00R\x0bobjectValue\x12@\n\tmap_value\x18\x0b \x01(\x0b2!.google.api.expr.v1beta1.MapValueH\x00R\x08mapValue\x12C\n\nlist_value\x18\x0c \x01(\x0b2".google.api.expr.v1beta1.ListValueH\x00R\tlistValue\x12\x1f\n\ntype_value\x18\x0f \x01(\tH\x00R\ttypeValueB\x06\n\x04kind"5\n\tEnumValue\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value"C\n\tListValue\x126\n\x06values\x18\x01 \x03(\x0b2\x1e.google.api.expr.v1beta1.ValueR\x06values"\xbe\x01\n\x08MapValue\x12A\n\x07entries\x18\x01 \x03(\x0b2\'.google.api.expr.v1beta1.MapValue.EntryR\x07entries\x1ao\n\x05Entry\x120\n\x03key\x18\x01 \x01(\x0b2\x1e.google.api.expr.v1beta1.ValueR\x03key\x124\n\x05value\x18\x02 \x01(\x0b2\x1e.google.api.expr.v1beta1.ValueR\x05valueBk\n\x1bcom.google.api.expr.v1beta1B\nValueProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01b\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.expr.v1beta1.value_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x1bcom.google.api.expr.v1beta1B\nValueProtoP\x01Z;google.golang.org/genproto/googleapis/api/expr/v1beta1;expr\xf8\x01\x01' - _globals['_VALUE']._serialized_start = 122 - _globals['_VALUE']._serialized_end = 708 - _globals['_ENUMVALUE']._serialized_start = 710 - _globals['_ENUMVALUE']._serialized_end = 763 - _globals['_LISTVALUE']._serialized_start = 765 - _globals['_LISTVALUE']._serialized_end = 832 - _globals['_MAPVALUE']._serialized_start = 835 - _globals['_MAPVALUE']._serialized_end = 1025 - _globals['_MAPVALUE_ENTRY']._serialized_start = 914 - _globals['_MAPVALUE_ENTRY']._serialized_end = 1025 \ No newline at end of file diff --git a/src/viam/gen/google/api/expr/v1beta1/value_pb2.pyi b/src/viam/gen/google/api/expr/v1beta1/value_pb2.pyi deleted file mode 100644 index 26b5c9b8a9..0000000000 --- a/src/viam/gen/google/api/expr/v1beta1/value_pb2.pyi +++ /dev/null @@ -1,198 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from collections import abc as _abc -from google.protobuf import any_pb2 as _any_pb2 -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import struct_pb2 as _struct_pb2 -from google.protobuf.internal import containers as _containers -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class Value(_message.Message): - """Represents a CEL value. - - This is similar to `google.protobuf.Value`, but can represent CEL's full - range of values. - """ - DESCRIPTOR: _descriptor.Descriptor - NULL_VALUE_FIELD_NUMBER: _builtins.int - BOOL_VALUE_FIELD_NUMBER: _builtins.int - INT64_VALUE_FIELD_NUMBER: _builtins.int - UINT64_VALUE_FIELD_NUMBER: _builtins.int - DOUBLE_VALUE_FIELD_NUMBER: _builtins.int - STRING_VALUE_FIELD_NUMBER: _builtins.int - BYTES_VALUE_FIELD_NUMBER: _builtins.int - ENUM_VALUE_FIELD_NUMBER: _builtins.int - OBJECT_VALUE_FIELD_NUMBER: _builtins.int - MAP_VALUE_FIELD_NUMBER: _builtins.int - LIST_VALUE_FIELD_NUMBER: _builtins.int - TYPE_VALUE_FIELD_NUMBER: _builtins.int - null_value: _struct_pb2.NullValue.ValueType - 'Null value.' - bool_value: _builtins.bool - 'Boolean value.' - int64_value: _builtins.int - 'Signed integer value.' - uint64_value: _builtins.int - 'Unsigned integer value.' - double_value: _builtins.float - 'Floating point value.' - string_value: _builtins.str - 'UTF-8 string value.' - bytes_value: _builtins.bytes - 'Byte string value.' - type_value: _builtins.str - 'A Type value represented by the fully qualified name of the type.' - - @_builtins.property - def enum_value(self) -> Global___EnumValue: - """An enum value.""" - - @_builtins.property - def object_value(self) -> _any_pb2.Any: - """The proto message backing an object value.""" - - @_builtins.property - def map_value(self) -> Global___MapValue: - """Map value.""" - - @_builtins.property - def list_value(self) -> Global___ListValue: - """List value.""" - - def __init__(self, *, null_value: _struct_pb2.NullValue.ValueType=..., bool_value: _builtins.bool=..., int64_value: _builtins.int=..., uint64_value: _builtins.int=..., double_value: _builtins.float=..., string_value: _builtins.str=..., bytes_value: _builtins.bytes=..., enum_value: Global___EnumValue | None=..., object_value: _any_pb2.Any | None=..., map_value: Global___MapValue | None=..., list_value: Global___ListValue | None=..., type_value: _builtins.str=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'double_value', b'double_value', 'enum_value', b'enum_value', 'int64_value', b'int64_value', 'kind', b'kind', 'list_value', b'list_value', 'map_value', b'map_value', 'null_value', b'null_value', 'object_value', b'object_value', 'string_value', b'string_value', 'type_value', b'type_value', 'uint64_value', b'uint64_value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['bool_value', b'bool_value', 'bytes_value', b'bytes_value', 'double_value', b'double_value', 'enum_value', b'enum_value', 'int64_value', b'int64_value', 'kind', b'kind', 'list_value', b'list_value', 'map_value', b'map_value', 'null_value', b'null_value', 'object_value', b'object_value', 'string_value', b'string_value', 'type_value', b'type_value', 'uint64_value', b'uint64_value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - _WhichOneofReturnType_kind: _TypeAlias = _typing.Literal['null_value', 'bool_value', 'int64_value', 'uint64_value', 'double_value', 'string_value', 'bytes_value', 'enum_value', 'object_value', 'map_value', 'list_value', 'type_value'] - _WhichOneofArgType_kind: _TypeAlias = _typing.Literal['kind', b'kind'] - - def WhichOneof(self, oneof_group: _WhichOneofArgType_kind) -> _WhichOneofReturnType_kind | None: - ... -Global___Value: _TypeAlias = Value - -@_typing.final -class EnumValue(_message.Message): - """An enum value.""" - DESCRIPTOR: _descriptor.Descriptor - TYPE_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - type: _builtins.str - 'The fully qualified name of the enum type.' - value: _builtins.int - 'The value of the enum.' - - def __init__(self, *, type: _builtins.str=..., value: _builtins.int=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['type', b'type', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___EnumValue: _TypeAlias = EnumValue - -@_typing.final -class ListValue(_message.Message): - """A list. - - Wrapped in a message so 'not set' and empty can be differentiated, which is - required for use in a 'oneof'. - """ - DESCRIPTOR: _descriptor.Descriptor - VALUES_FIELD_NUMBER: _builtins.int - - @_builtins.property - def values(self) -> _containers.RepeatedCompositeFieldContainer[Global___Value]: - """The ordered values in the list.""" - - def __init__(self, *, values: _abc.Iterable[Global___Value] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['values', b'values'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___ListValue: _TypeAlias = ListValue - -@_typing.final -class MapValue(_message.Message): - """A map. - - Wrapped in a message so 'not set' and empty can be differentiated, which is - required for use in a 'oneof'. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class Entry(_message.Message): - """An entry in the map.""" - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - - @_builtins.property - def key(self) -> Global___Value: - """The key. - - Must be unique with in the map. - Currently only boolean, int, uint, and string values can be keys. - """ - - @_builtins.property - def value(self) -> Global___Value: - """The value.""" - - def __init__(self, *, key: Global___Value | None=..., value: Global___Value | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - ENTRIES_FIELD_NUMBER: _builtins.int - - @_builtins.property - def entries(self) -> _containers.RepeatedCompositeFieldContainer[Global___MapValue.Entry]: - """The set of map entries. - - CEL has fewer restrictions on keys, so a protobuf map represenation - cannot be used. - """ - - def __init__(self, *, entries: _abc.Iterable[Global___MapValue.Entry] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['entries', b'entries'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___MapValue: _TypeAlias = MapValue \ No newline at end of file diff --git a/src/viam/gen/google/api/field_behavior_grpc.py b/src/viam/gen/google/api/field_behavior_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/field_behavior_pb2.py b/src/viam/gen/google/api/field_behavior_pb2.py deleted file mode 100644 index d6003efe43..0000000000 --- a/src/viam/gen/google/api/field_behavior_pb2.py +++ /dev/null @@ -1,20 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/field_behavior.proto') -_sym_db = _symbol_database.Default() -from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fgoogle/api/field_behavior.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto*\xb6\x01\n\rFieldBehavior\x12\x1e\n\x1aFIELD_BEHAVIOR_UNSPECIFIED\x10\x00\x12\x0c\n\x08OPTIONAL\x10\x01\x12\x0c\n\x08REQUIRED\x10\x02\x12\x0f\n\x0bOUTPUT_ONLY\x10\x03\x12\x0e\n\nINPUT_ONLY\x10\x04\x12\r\n\tIMMUTABLE\x10\x05\x12\x12\n\x0eUNORDERED_LIST\x10\x06\x12\x15\n\x11NON_EMPTY_DEFAULT\x10\x07\x12\x0e\n\nIDENTIFIER\x10\x08:d\n\x0efield_behavior\x12\x1d.google.protobuf.FieldOptions\x18\x9c\x08 \x03(\x0e2\x19.google.api.FieldBehaviorB\x02\x10\x00R\rfieldBehaviorBp\n\x0ecom.google.apiB\x12FieldBehaviorProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.field_behavior_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\x12FieldBehaviorProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPI' - _globals['field_behavior']._loaded_options = None - _globals['field_behavior']._serialized_options = b'\x10\x00' - _globals['_FIELDBEHAVIOR']._serialized_start = 82 - _globals['_FIELDBEHAVIOR']._serialized_end = 264 \ No newline at end of file diff --git a/src/viam/gen/google/api/field_behavior_pb2.pyi b/src/viam/gen/google/api/field_behavior_pb2.pyi deleted file mode 100644 index 4f75ecd0b0..0000000000 --- a/src/viam/gen/google/api/field_behavior_pb2.pyi +++ /dev/null @@ -1,86 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pb2 as _descriptor_pb2 -from google.protobuf.internal import containers as _containers -from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper -from google.protobuf.internal import extension_dict as _extension_dict -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -class _FieldBehavior: - ValueType = _typing.NewType('ValueType', _builtins.int) - V: _TypeAlias = ValueType - -class _FieldBehaviorEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_FieldBehavior.ValueType], _builtins.type): - DESCRIPTOR: _descriptor.EnumDescriptor - FIELD_BEHAVIOR_UNSPECIFIED: _FieldBehavior.ValueType - 'Conventional default for enums. Do not use this.' - OPTIONAL: _FieldBehavior.ValueType - 'Specifically denotes a field as optional.\n While all fields in protocol buffers are optional, this may be specified\n for emphasis if appropriate.\n ' - REQUIRED: _FieldBehavior.ValueType - 'Denotes a field as required.\n This indicates that the field **must** be provided as part of the request,\n and failure to do so will cause an error (usually `INVALID_ARGUMENT`).\n ' - OUTPUT_ONLY: _FieldBehavior.ValueType - "Denotes a field as output only.\n This indicates that the field is provided in responses, but including the\n field in a request does nothing (the server *must* ignore it and\n *must not* throw an error as a result of the field's presence).\n " - INPUT_ONLY: _FieldBehavior.ValueType - 'Denotes a field as input only.\n This indicates that the field is provided in requests, and the\n corresponding field is not included in output.\n ' - IMMUTABLE: _FieldBehavior.ValueType - 'Denotes a field as immutable.\n This indicates that the field may be set once in a request to create a\n resource, but may not be changed thereafter.\n ' - UNORDERED_LIST: _FieldBehavior.ValueType - "Denotes that a (repeated) field is an unordered list.\n This indicates that the service may provide the elements of the list\n in any arbitrary order, rather than the order the user originally\n provided. Additionally, the list's order may or may not be stable.\n " - NON_EMPTY_DEFAULT: _FieldBehavior.ValueType - 'Denotes that this field returns a non-empty default value if not set.\n This indicates that if the user provides the empty value in a request,\n a non-empty value will be returned. The user will not be aware of what\n non-empty value to expect.\n ' - IDENTIFIER: _FieldBehavior.ValueType - 'Denotes that the field in a resource (a message annotated with\n google.api.resource) is used in the resource name to uniquely identify the\n resource. For AIP-compliant APIs, this should only be applied to the\n `name` field on the resource.\n\n This behavior should not be applied to references to other resources within\n the message.\n\n The identifier field of resources often have different field behavior\n depending on the request it is embedded in (e.g. for Create methods name\n is optional and unused, while for Update methods it is required). Instead\n of method-specific annotations, only `IDENTIFIER` is required.\n ' - -class FieldBehavior(_FieldBehavior, metaclass=_FieldBehaviorEnumTypeWrapper): - """An indicator of the behavior of a given field (for example, that a field - is required in requests, or given as output but ignored as input). - This **does not** change the behavior in protocol buffers itself; it only - denotes the behavior and may affect how API tooling handles the field. - - Note: This enum **may** receive new values in the future. - """ -FIELD_BEHAVIOR_UNSPECIFIED: FieldBehavior.ValueType -'Conventional default for enums. Do not use this.' -OPTIONAL: FieldBehavior.ValueType -'Specifically denotes a field as optional.\nWhile all fields in protocol buffers are optional, this may be specified\nfor emphasis if appropriate.\n' -REQUIRED: FieldBehavior.ValueType -'Denotes a field as required.\nThis indicates that the field **must** be provided as part of the request,\nand failure to do so will cause an error (usually `INVALID_ARGUMENT`).\n' -OUTPUT_ONLY: FieldBehavior.ValueType -"Denotes a field as output only.\nThis indicates that the field is provided in responses, but including the\nfield in a request does nothing (the server *must* ignore it and\n*must not* throw an error as a result of the field's presence).\n" -INPUT_ONLY: FieldBehavior.ValueType -'Denotes a field as input only.\nThis indicates that the field is provided in requests, and the\ncorresponding field is not included in output.\n' -IMMUTABLE: FieldBehavior.ValueType -'Denotes a field as immutable.\nThis indicates that the field may be set once in a request to create a\nresource, but may not be changed thereafter.\n' -UNORDERED_LIST: FieldBehavior.ValueType -"Denotes that a (repeated) field is an unordered list.\nThis indicates that the service may provide the elements of the list\nin any arbitrary order, rather than the order the user originally\nprovided. Additionally, the list's order may or may not be stable.\n" -NON_EMPTY_DEFAULT: FieldBehavior.ValueType -'Denotes that this field returns a non-empty default value if not set.\nThis indicates that if the user provides the empty value in a request,\na non-empty value will be returned. The user will not be aware of what\nnon-empty value to expect.\n' -IDENTIFIER: FieldBehavior.ValueType -'Denotes that the field in a resource (a message annotated with\ngoogle.api.resource) is used in the resource name to uniquely identify the\nresource. For AIP-compliant APIs, this should only be applied to the\n`name` field on the resource.\n\nThis behavior should not be applied to references to other resources within\nthe message.\n\nThe identifier field of resources often have different field behavior\ndepending on the request it is embedded in (e.g. for Create methods name\nis optional and unused, while for Update methods it is required). Instead\nof method-specific annotations, only `IDENTIFIER` is required.\n' -Global___FieldBehavior: _TypeAlias = FieldBehavior -FIELD_BEHAVIOR_FIELD_NUMBER: _builtins.int -field_behavior: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.FieldOptions, _containers.RepeatedScalarFieldContainer[Global___FieldBehavior.ValueType]] -'A designation of a specific field behavior (required, output only, etc.)\nin protobuf messages.\n\nExamples:\n\n string name = 1 [(google.api.field_behavior) = REQUIRED];\n State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];\n google.protobuf.Duration ttl = 1\n [(google.api.field_behavior) = INPUT_ONLY];\n google.protobuf.Timestamp expire_time = 1\n [(google.api.field_behavior) = OUTPUT_ONLY,\n (google.api.field_behavior) = IMMUTABLE];\n' \ No newline at end of file diff --git a/src/viam/gen/google/api/field_info_grpc.py b/src/viam/gen/google/api/field_info_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/field_info_pb2.py b/src/viam/gen/google/api/field_info_pb2.py deleted file mode 100644 index d33435587f..0000000000 --- a/src/viam/gen/google/api/field_info_pb2.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/field_info.proto') -_sym_db = _symbol_database.Default() -from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bgoogle/api/field_info.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto"\xda\x01\n\tFieldInfo\x124\n\x06format\x18\x01 \x01(\x0e2\x1c.google.api.FieldInfo.FormatR\x06format\x12D\n\x10referenced_types\x18\x02 \x03(\x0b2\x19.google.api.TypeReferenceR\x0freferencedTypes"Q\n\x06Format\x12\x16\n\x12FORMAT_UNSPECIFIED\x10\x00\x12\t\n\x05UUID4\x10\x01\x12\x08\n\x04IPV4\x10\x02\x12\x08\n\x04IPV6\x10\x03\x12\x10\n\x0cIPV4_OR_IPV6\x10\x04",\n\rTypeReference\x12\x1b\n\ttype_name\x18\x01 \x01(\tR\x08typeName:W\n\nfield_info\x12\x1d.google.protobuf.FieldOptions\x18\xcc\xf1\xf9\x8a\x01 \x01(\x0b2\x15.google.api.FieldInfoR\tfieldInfoBl\n\x0ecom.google.apiB\x0eFieldInfoProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.field_info_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\x0eFieldInfoProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPI' - _globals['_FIELDINFO']._serialized_start = 78 - _globals['_FIELDINFO']._serialized_end = 296 - _globals['_FIELDINFO_FORMAT']._serialized_start = 215 - _globals['_FIELDINFO_FORMAT']._serialized_end = 296 - _globals['_TYPEREFERENCE']._serialized_start = 298 - _globals['_TYPEREFERENCE']._serialized_end = 342 \ No newline at end of file diff --git a/src/viam/gen/google/api/field_info_pb2.pyi b/src/viam/gen/google/api/field_info_pb2.pyi deleted file mode 100644 index 1a427fc3a3..0000000000 --- a/src/viam/gen/google/api/field_info_pb2.pyi +++ /dev/null @@ -1,108 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from collections import abc as _abc -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pb2 as _descriptor_pb2 -from google.protobuf import message as _message -from google.protobuf.internal import containers as _containers -from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper -from google.protobuf.internal import extension_dict as _extension_dict -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class FieldInfo(_message.Message): - """Rich semantic information of an API field beyond basic typing.""" - DESCRIPTOR: _descriptor.Descriptor - - class _Format: - ValueType = _typing.NewType('ValueType', _builtins.int) - V: _TypeAlias = ValueType - - class _FormatEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[FieldInfo._Format.ValueType], _builtins.type): - DESCRIPTOR: _descriptor.EnumDescriptor - FORMAT_UNSPECIFIED: FieldInfo._Format.ValueType - 'Default, unspecified value.' - UUID4: FieldInfo._Format.ValueType - 'Universally Unique Identifier, version 4, value as defined by\n https://datatracker.ietf.org/doc/html/rfc4122. The value may be\n normalized to entirely lowercase letters. For example, the value\n `F47AC10B-58CC-0372-8567-0E02B2C3D479` would be normalized to\n `f47ac10b-58cc-0372-8567-0e02b2c3d479`.\n ' - IPV4: FieldInfo._Format.ValueType - 'Internet Protocol v4 value as defined by [RFC\n 791](https://datatracker.ietf.org/doc/html/rfc791). The value may be\n condensed, with leading zeros in each octet stripped. For example,\n `001.022.233.040` would be condensed to `1.22.233.40`.\n ' - IPV6: FieldInfo._Format.ValueType - 'Internet Protocol v6 value as defined by [RFC\n 2460](https://datatracker.ietf.org/doc/html/rfc2460). The value may be\n normalized to entirely lowercase letters with zeros compressed, following\n [RFC 5952](https://datatracker.ietf.org/doc/html/rfc5952). For example,\n the value `2001:0DB8:0::0` would be normalized to `2001:db8::`.\n ' - IPV4_OR_IPV6: FieldInfo._Format.ValueType - 'An IP address in either v4 or v6 format as described by the individual\n values defined herein. See the comments on the IPV4 and IPV6 types for\n allowed normalizations of each.\n ' - - class Format(_Format, metaclass=_FormatEnumTypeWrapper): - """The standard format of a field value. The supported formats are all backed - by either an RFC defined by the IETF or a Google-defined AIP. - """ - FORMAT_UNSPECIFIED: FieldInfo.Format.ValueType - 'Default, unspecified value.' - UUID4: FieldInfo.Format.ValueType - 'Universally Unique Identifier, version 4, value as defined by\n https://datatracker.ietf.org/doc/html/rfc4122. The value may be\n normalized to entirely lowercase letters. For example, the value\n `F47AC10B-58CC-0372-8567-0E02B2C3D479` would be normalized to\n `f47ac10b-58cc-0372-8567-0e02b2c3d479`.\n ' - IPV4: FieldInfo.Format.ValueType - 'Internet Protocol v4 value as defined by [RFC\n 791](https://datatracker.ietf.org/doc/html/rfc791). The value may be\n condensed, with leading zeros in each octet stripped. For example,\n `001.022.233.040` would be condensed to `1.22.233.40`.\n ' - IPV6: FieldInfo.Format.ValueType - 'Internet Protocol v6 value as defined by [RFC\n 2460](https://datatracker.ietf.org/doc/html/rfc2460). The value may be\n normalized to entirely lowercase letters with zeros compressed, following\n [RFC 5952](https://datatracker.ietf.org/doc/html/rfc5952). For example,\n the value `2001:0DB8:0::0` would be normalized to `2001:db8::`.\n ' - IPV4_OR_IPV6: FieldInfo.Format.ValueType - 'An IP address in either v4 or v6 format as described by the individual\n values defined herein. See the comments on the IPV4 and IPV6 types for\n allowed normalizations of each.\n ' - FORMAT_FIELD_NUMBER: _builtins.int - REFERENCED_TYPES_FIELD_NUMBER: _builtins.int - format: Global___FieldInfo.Format.ValueType - "The standard format of a field value. This does not explicitly configure\n any API consumer, just documents the API's format for the field it is\n applied to.\n " - - @_builtins.property - def referenced_types(self) -> _containers.RepeatedCompositeFieldContainer[Global___TypeReference]: - """The type(s) that the annotated, generic field may represent. - - Currently, this must only be used on fields of type `google.protobuf.Any`. - Supporting other generic types may be considered in the future. - """ - - def __init__(self, *, format: Global___FieldInfo.Format.ValueType=..., referenced_types: _abc.Iterable[Global___TypeReference] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['format', b'format', 'referenced_types', b'referenced_types'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___FieldInfo: _TypeAlias = FieldInfo - -@_typing.final -class TypeReference(_message.Message): - """A reference to a message type, for use in [FieldInfo][google.api.FieldInfo].""" - DESCRIPTOR: _descriptor.Descriptor - TYPE_NAME_FIELD_NUMBER: _builtins.int - type_name: _builtins.str - 'The name of the type that the annotated, generic field may represent.\n If the type is in the same protobuf package, the value can be the simple\n message name e.g., `"MyMessage"`. Otherwise, the value must be the\n fully-qualified message name e.g., `"google.library.v1.Book"`.\n\n If the type(s) are unknown to the service (e.g. the field accepts generic\n user input), use the wildcard `"*"` to denote this behavior.\n\n See [AIP-202](https://google.aip.dev/202#type-references) for more details.\n ' - - def __init__(self, *, type_name: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['type_name', b'type_name'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___TypeReference: _TypeAlias = TypeReference -FIELD_INFO_FIELD_NUMBER: _builtins.int -field_info: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.FieldOptions, Global___FieldInfo] -'Rich semantic descriptor of an API field beyond the basic typing.\n\nExamples:\n\n string request_id = 1 [(google.api.field_info).format = UUID4];\n string old_ip_address = 2 [(google.api.field_info).format = IPV4];\n string new_ip_address = 3 [(google.api.field_info).format = IPV6];\n string actual_ip_address = 4 [\n (google.api.field_info).format = IPV4_OR_IPV6\n ];\n google.protobuf.Any generic_field = 5 [\n (google.api.field_info).referenced_types = {type_name: "ActualType"},\n (google.api.field_info).referenced_types = {type_name: "OtherType"},\n ];\n google.protobuf.Any generic_user_input = 5 [\n (google.api.field_info).referenced_types = {type_name: "*"},\n ];\n' \ No newline at end of file diff --git a/src/viam/gen/google/api/http_grpc.py b/src/viam/gen/google/api/http_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/http_pb2.py b/src/viam/gen/google/api/http_pb2.py deleted file mode 100644 index b52a56b198..0000000000 --- a/src/viam/gen/google/api/http_pb2.py +++ /dev/null @@ -1,21 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/http.proto') -_sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15google/api/http.proto\x12\ngoogle.api"y\n\x04Http\x12*\n\x05rules\x18\x01 \x03(\x0b2\x14.google.api.HttpRuleR\x05rules\x12E\n\x1ffully_decode_reserved_expansion\x18\x02 \x01(\x08R\x1cfullyDecodeReservedExpansion"\xda\x02\n\x08HttpRule\x12\x1a\n\x08selector\x18\x01 \x01(\tR\x08selector\x12\x12\n\x03get\x18\x02 \x01(\tH\x00R\x03get\x12\x12\n\x03put\x18\x03 \x01(\tH\x00R\x03put\x12\x14\n\x04post\x18\x04 \x01(\tH\x00R\x04post\x12\x18\n\x06delete\x18\x05 \x01(\tH\x00R\x06delete\x12\x16\n\x05patch\x18\x06 \x01(\tH\x00R\x05patch\x127\n\x06custom\x18\x08 \x01(\x0b2\x1d.google.api.CustomHttpPatternH\x00R\x06custom\x12\x12\n\x04body\x18\x07 \x01(\tR\x04body\x12#\n\rresponse_body\x18\x0c \x01(\tR\x0cresponseBody\x12E\n\x13additional_bindings\x18\x0b \x03(\x0b2\x14.google.api.HttpRuleR\x12additionalBindingsB\t\n\x07pattern";\n\x11CustomHttpPattern\x12\x12\n\x04kind\x18\x01 \x01(\tR\x04kind\x12\x12\n\x04path\x18\x02 \x01(\tR\x04pathBg\n\x0ecom.google.apiB\tHttpProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.http_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\tHttpProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPI' - _globals['_HTTP']._serialized_start = 37 - _globals['_HTTP']._serialized_end = 158 - _globals['_HTTPRULE']._serialized_start = 161 - _globals['_HTTPRULE']._serialized_end = 507 - _globals['_CUSTOMHTTPPATTERN']._serialized_start = 509 - _globals['_CUSTOMHTTPPATTERN']._serialized_end = 568 \ No newline at end of file diff --git a/src/viam/gen/google/api/http_pb2.pyi b/src/viam/gen/google/api/http_pb2.pyi deleted file mode 100644 index 74916b610e..0000000000 --- a/src/viam/gen/google/api/http_pb2.pyi +++ /dev/null @@ -1,402 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from collections import abc as _abc -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf.internal import containers as _containers -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class Http(_message.Message): - """Defines the HTTP configuration for an API service. It contains a list of - [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method - to one or more HTTP REST API methods. - """ - DESCRIPTOR: _descriptor.Descriptor - RULES_FIELD_NUMBER: _builtins.int - FULLY_DECODE_RESERVED_EXPANSION_FIELD_NUMBER: _builtins.int - fully_decode_reserved_expansion: _builtins.bool - 'When set to true, URL path parameters will be fully URI-decoded except in\n cases of single segment matches in reserved expansion, where "%2F" will be\n left encoded.\n\n The default behavior is to not decode RFC 6570 reserved characters in multi\n segment matches.\n ' - - @_builtins.property - def rules(self) -> _containers.RepeatedCompositeFieldContainer[Global___HttpRule]: - """A list of HTTP configuration rules that apply to individual API methods. - - **NOTE:** All service configuration rules follow "last one wins" order. - """ - - def __init__(self, *, rules: _abc.Iterable[Global___HttpRule] | None=..., fully_decode_reserved_expansion: _builtins.bool=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['fully_decode_reserved_expansion', b'fully_decode_reserved_expansion', 'rules', b'rules'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___Http: _TypeAlias = Http - -@_typing.final -class HttpRule(_message.Message): - """gRPC Transcoding - - gRPC Transcoding is a feature for mapping between a gRPC method and one or - more HTTP REST endpoints. It allows developers to build a single API service - that supports both gRPC APIs and REST APIs. Many systems, including [Google - APIs](https://github.com/googleapis/googleapis), - [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC - Gateway](https://github.com/grpc-ecosystem/grpc-gateway), - and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature - and use it for large scale production services. - - `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies - how different portions of the gRPC request message are mapped to the URL - path, URL query parameters, and HTTP request body. It also controls how the - gRPC response message is mapped to the HTTP response body. `HttpRule` is - typically specified as an `google.api.http` annotation on the gRPC method. - - Each mapping specifies a URL path template and an HTTP method. The path - template may refer to one or more fields in the gRPC request message, as long - as each field is a non-repeated field with a primitive (non-message) type. - The path template controls how fields of the request message are mapped to - the URL path. - - Example: - - service Messaging { - rpc GetMessage(GetMessageRequest) returns (Message) { - option (google.api.http) = { - get: "/v1/{name=messages/*}" - }; - } - } - message GetMessageRequest { - string name = 1; // Mapped to URL path. - } - message Message { - string text = 1; // The resource content. - } - - This enables an HTTP REST to gRPC mapping as below: - - - HTTP: `GET /v1/messages/123456` - - gRPC: `GetMessage(name: "messages/123456")` - - Any fields in the request message which are not bound by the path template - automatically become HTTP query parameters if there is no HTTP request body. - For example: - - service Messaging { - rpc GetMessage(GetMessageRequest) returns (Message) { - option (google.api.http) = { - get:"/v1/messages/{message_id}" - }; - } - } - message GetMessageRequest { - message SubMessage { - string subfield = 1; - } - string message_id = 1; // Mapped to URL path. - int64 revision = 2; // Mapped to URL query parameter `revision`. - SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. - } - - This enables a HTTP JSON to RPC mapping as below: - - - HTTP: `GET /v1/messages/123456?revision=2&sub.subfield=foo` - - gRPC: `GetMessage(message_id: "123456" revision: 2 sub: - SubMessage(subfield: "foo"))` - - Note that fields which are mapped to URL query parameters must have a - primitive type or a repeated primitive type or a non-repeated message type. - In the case of a repeated type, the parameter can be repeated in the URL - as `...?param=A¶m=B`. In the case of a message type, each field of the - message is mapped to a separate parameter, such as - `...?foo.a=A&foo.b=B&foo.c=C`. - - For HTTP methods that allow a request body, the `body` field - specifies the mapping. Consider a REST update method on the - message resource collection: - - service Messaging { - rpc UpdateMessage(UpdateMessageRequest) returns (Message) { - option (google.api.http) = { - patch: "/v1/messages/{message_id}" - body: "message" - }; - } - } - message UpdateMessageRequest { - string message_id = 1; // mapped to the URL - Message message = 2; // mapped to the body - } - - The following HTTP JSON to RPC mapping is enabled, where the - representation of the JSON in the request body is determined by - protos JSON encoding: - - - HTTP: `PATCH /v1/messages/123456 { "text": "Hi!" }` - - gRPC: `UpdateMessage(message_id: "123456" message { text: "Hi!" })` - - The special name `*` can be used in the body mapping to define that - every field not bound by the path template should be mapped to the - request body. This enables the following alternative definition of - the update method: - - service Messaging { - rpc UpdateMessage(Message) returns (Message) { - option (google.api.http) = { - patch: "/v1/messages/{message_id}" - body: "*" - }; - } - } - message Message { - string message_id = 1; - string text = 2; - } - - - The following HTTP JSON to RPC mapping is enabled: - - - HTTP: `PATCH /v1/messages/123456 { "text": "Hi!" }` - - gRPC: `UpdateMessage(message_id: "123456" text: "Hi!")` - - Note that when using `*` in the body mapping, it is not possible to - have HTTP parameters, as all fields not bound by the path end in - the body. This makes this option more rarely used in practice when - defining REST APIs. The common usage of `*` is in custom methods - which don't use the URL at all for transferring data. - - It is possible to define multiple HTTP methods for one RPC by using - the `additional_bindings` option. Example: - - service Messaging { - rpc GetMessage(GetMessageRequest) returns (Message) { - option (google.api.http) = { - get: "/v1/messages/{message_id}" - additional_bindings { - get: "/v1/users/{user_id}/messages/{message_id}" - } - }; - } - } - message GetMessageRequest { - string message_id = 1; - string user_id = 2; - } - - This enables the following two alternative HTTP JSON to RPC mappings: - - - HTTP: `GET /v1/messages/123456` - - gRPC: `GetMessage(message_id: "123456")` - - - HTTP: `GET /v1/users/me/messages/123456` - - gRPC: `GetMessage(user_id: "me" message_id: "123456")` - - Rules for HTTP mapping - - 1. Leaf request fields (recursive expansion nested messages in the request - message) are classified into three categories: - - Fields referred by the path template. They are passed via the URL path. - - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They - are passed via the HTTP - request body. - - All other fields are passed via the URL query parameters, and the - parameter name is the field path in the request message. A repeated - field can be represented as multiple query parameters under the same - name. - 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL - query parameter, all fields - are passed via URL path and HTTP request body. - 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP - request body, all - fields are passed via URL path and URL query parameters. - - Path template syntax - - Template = "/" Segments [ Verb ] ; - Segments = Segment { "/" Segment } ; - Segment = "*" | "**" | LITERAL | Variable ; - Variable = "{" FieldPath [ "=" Segments ] "}" ; - FieldPath = IDENT { "." IDENT } ; - Verb = ":" LITERAL ; - - The syntax `*` matches a single URL path segment. The syntax `**` matches - zero or more URL path segments, which must be the last part of the URL path - except the `Verb`. - - The syntax `Variable` matches part of the URL path as specified by its - template. A variable template must not contain other variables. If a variable - matches a single path segment, its template may be omitted, e.g. `{var}` - is equivalent to `{var=*}`. - - The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` - contains any reserved character, such characters should be percent-encoded - before the matching. - - If a variable contains exactly one path segment, such as `"{var}"` or - `"{var=*}"`, when such a variable is expanded into a URL path on the client - side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The - server side does the reverse decoding. Such variables show up in the - [Discovery - Document](https://developers.google.com/discovery/v1/reference/apis) as - `{var}`. - - If a variable contains multiple path segments, such as `"{var=foo/*}"` - or `"{var=**}"`, when such a variable is expanded into a URL path on the - client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. - The server side does the reverse decoding, except "%2F" and "%2f" are left - unchanged. Such variables show up in the - [Discovery - Document](https://developers.google.com/discovery/v1/reference/apis) as - `{+var}`. - - Using gRPC API Service Configuration - - gRPC API Service Configuration (service config) is a configuration language - for configuring a gRPC service to become a user-facing product. The - service config is simply the YAML representation of the `google.api.Service` - proto message. - - As an alternative to annotating your proto file, you can configure gRPC - transcoding in your service config YAML files. You do this by specifying a - `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same - effect as the proto annotation. This can be particularly useful if you - have a proto that is reused in multiple services. Note that any transcoding - specified in the service config will override any matching transcoding - configuration in the proto. - - The following example selects a gRPC method and applies an `HttpRule` to it: - - http: - rules: - - selector: example.v1.Messaging.GetMessage - get: /v1/messages/{message_id}/{sub.subfield} - - Special notes - - When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the - proto to JSON conversion must follow the [proto3 - specification](https://developers.google.com/protocol-buffers/docs/proto3#json). - - While the single segment variable follows the semantics of - [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String - Expansion, the multi segment variable **does not** follow RFC 6570 Section - 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion - does not expand special characters like `?` and `#`, which would lead - to invalid URLs. As the result, gRPC Transcoding uses a custom encoding - for multi segment variables. - - The path variables **must not** refer to any repeated or mapped field, - because client libraries are not capable of handling such variable expansion. - - The path variables **must not** capture the leading "/" character. The reason - is that the most common use case "{var}" does not capture the leading "/" - character. For consistency, all path variables must share the same behavior. - - Repeated message fields must not be mapped to URL query parameters, because - no client library can support such complicated mapping. - - If an API needs to use a JSON array for request or response body, it can map - the request or response body to a repeated field. However, some gRPC - Transcoding implementations may not support this feature. - """ - DESCRIPTOR: _descriptor.Descriptor - SELECTOR_FIELD_NUMBER: _builtins.int - GET_FIELD_NUMBER: _builtins.int - PUT_FIELD_NUMBER: _builtins.int - POST_FIELD_NUMBER: _builtins.int - DELETE_FIELD_NUMBER: _builtins.int - PATCH_FIELD_NUMBER: _builtins.int - CUSTOM_FIELD_NUMBER: _builtins.int - BODY_FIELD_NUMBER: _builtins.int - RESPONSE_BODY_FIELD_NUMBER: _builtins.int - ADDITIONAL_BINDINGS_FIELD_NUMBER: _builtins.int - selector: _builtins.str - 'Selects a method to which this rule applies.\n\n Refer to [selector][google.api.DocumentationRule.selector] for syntax\n details.\n ' - get: _builtins.str - 'Maps to HTTP GET. Used for listing and getting information about\n resources.\n ' - put: _builtins.str - 'Maps to HTTP PUT. Used for replacing a resource.' - post: _builtins.str - 'Maps to HTTP POST. Used for creating a resource or performing an action.' - delete: _builtins.str - 'Maps to HTTP DELETE. Used for deleting a resource.' - patch: _builtins.str - 'Maps to HTTP PATCH. Used for updating a resource.' - body: _builtins.str - 'The name of the request field whose value is mapped to the HTTP request\n body, or `*` for mapping all request fields not captured by the path\n pattern to the HTTP body, or omitted for not having any HTTP request body.\n\n NOTE: the referred field must be present at the top-level of the request\n message type.\n ' - response_body: _builtins.str - 'Optional. The name of the response field whose value is mapped to the HTTP\n response body. When omitted, the entire response message will be used\n as the HTTP response body.\n\n NOTE: The referred field must be present at the top-level of the response\n message type.\n ' - - @_builtins.property - def custom(self) -> Global___CustomHttpPattern: - """The custom pattern is used for specifying an HTTP method that is not - included in the `pattern` field, such as HEAD, or "*" to leave the - HTTP method unspecified for this rule. The wild-card rule is useful - for services that provide content to Web (HTML) clients. - """ - - @_builtins.property - def additional_bindings(self) -> _containers.RepeatedCompositeFieldContainer[Global___HttpRule]: - """Additional HTTP bindings for the selector. Nested bindings must - not contain an `additional_bindings` field themselves (that is, - the nesting may only be one level deep). - """ - - def __init__(self, *, selector: _builtins.str=..., get: _builtins.str=..., put: _builtins.str=..., post: _builtins.str=..., delete: _builtins.str=..., patch: _builtins.str=..., custom: Global___CustomHttpPattern | None=..., body: _builtins.str=..., response_body: _builtins.str=..., additional_bindings: _abc.Iterable[Global___HttpRule] | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['custom', b'custom', 'delete', b'delete', 'get', b'get', 'patch', b'patch', 'pattern', b'pattern', 'post', b'post', 'put', b'put'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['additional_bindings', b'additional_bindings', 'body', b'body', 'custom', b'custom', 'delete', b'delete', 'get', b'get', 'patch', b'patch', 'pattern', b'pattern', 'post', b'post', 'put', b'put', 'response_body', b'response_body', 'selector', b'selector'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - _WhichOneofReturnType_pattern: _TypeAlias = _typing.Literal['get', 'put', 'post', 'delete', 'patch', 'custom'] - _WhichOneofArgType_pattern: _TypeAlias = _typing.Literal['pattern', b'pattern'] - - def WhichOneof(self, oneof_group: _WhichOneofArgType_pattern) -> _WhichOneofReturnType_pattern | None: - ... -Global___HttpRule: _TypeAlias = HttpRule - -@_typing.final -class CustomHttpPattern(_message.Message): - """A custom pattern is used for defining custom HTTP verb.""" - DESCRIPTOR: _descriptor.Descriptor - KIND_FIELD_NUMBER: _builtins.int - PATH_FIELD_NUMBER: _builtins.int - kind: _builtins.str - 'The name of this custom HTTP verb.' - path: _builtins.str - 'The path matched by this custom verb.' - - def __init__(self, *, kind: _builtins.str=..., path: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['kind', b'kind', 'path', b'path'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___CustomHttpPattern: _TypeAlias = CustomHttpPattern \ No newline at end of file diff --git a/src/viam/gen/google/api/httpbody_grpc.py b/src/viam/gen/google/api/httpbody_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/httpbody_pb2.py b/src/viam/gen/google/api/httpbody_pb2.py deleted file mode 100644 index f623edd796..0000000000 --- a/src/viam/gen/google/api/httpbody_pb2.py +++ /dev/null @@ -1,18 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/httpbody.proto') -_sym_db = _symbol_database.Default() -from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19google/api/httpbody.proto\x12\ngoogle.api\x1a\x19google/protobuf/any.proto"w\n\x08HttpBody\x12!\n\x0ccontent_type\x18\x01 \x01(\tR\x0bcontentType\x12\x12\n\x04data\x18\x02 \x01(\x0cR\x04data\x124\n\nextensions\x18\x03 \x03(\x0b2\x14.google.protobuf.AnyR\nextensionsBe\n\x0ecom.google.apiB\rHttpBodyProtoP\x01Z;google.golang.org/genproto/googleapis/api/httpbody;httpbody\xa2\x02\x04GAPIb\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.httpbody_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\rHttpBodyProtoP\x01Z;google.golang.org/genproto/googleapis/api/httpbody;httpbody\xa2\x02\x04GAPI' - _globals['_HTTPBODY']._serialized_start = 68 - _globals['_HTTPBODY']._serialized_end = 187 \ No newline at end of file diff --git a/src/viam/gen/google/api/httpbody_pb2.pyi b/src/viam/gen/google/api/httpbody_pb2.pyi deleted file mode 100644 index 0a1d564482..0000000000 --- a/src/viam/gen/google/api/httpbody_pb2.pyi +++ /dev/null @@ -1,99 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from collections import abc as _abc -from google.protobuf import any_pb2 as _any_pb2 -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf.internal import containers as _containers -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class HttpBody(_message.Message): - """Message that represents an arbitrary HTTP body. It should only be used for - payload formats that can't be represented as JSON, such as raw binary or - an HTML page. - - - This message can be used both in streaming and non-streaming API methods in - the request as well as the response. - - It can be used as a top-level request field, which is convenient if one - wants to extract parameters from either the URL or HTTP template into the - request fields and also want access to the raw HTTP body. - - Example: - - message GetResourceRequest { - // A unique request id. - string request_id = 1; - - // The raw HTTP body is bound to this field. - google.api.HttpBody http_body = 2; - - } - - service ResourceService { - rpc GetResource(GetResourceRequest) - returns (google.api.HttpBody); - rpc UpdateResource(google.api.HttpBody) - returns (google.protobuf.Empty); - - } - - Example with streaming methods: - - service CaldavService { - rpc GetCalendar(stream google.api.HttpBody) - returns (stream google.api.HttpBody); - rpc UpdateCalendar(stream google.api.HttpBody) - returns (stream google.api.HttpBody); - - } - - Use of this type only changes how the request and response bodies are - handled, all other features will continue to work unchanged. - """ - DESCRIPTOR: _descriptor.Descriptor - CONTENT_TYPE_FIELD_NUMBER: _builtins.int - DATA_FIELD_NUMBER: _builtins.int - EXTENSIONS_FIELD_NUMBER: _builtins.int - content_type: _builtins.str - 'The HTTP Content-Type header value specifying the content type of the body.' - data: _builtins.bytes - 'The HTTP request/response body as raw binary.' - - @_builtins.property - def extensions(self) -> _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]: - """Application specific response metadata. Must be set in the first response - for streaming APIs. - """ - - def __init__(self, *, content_type: _builtins.str=..., data: _builtins.bytes=..., extensions: _abc.Iterable[_any_pb2.Any] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['content_type', b'content_type', 'data', b'data', 'extensions', b'extensions'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___HttpBody: _TypeAlias = HttpBody \ No newline at end of file diff --git a/src/viam/gen/google/api/launch_stage_grpc.py b/src/viam/gen/google/api/launch_stage_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/launch_stage_pb2.py b/src/viam/gen/google/api/launch_stage_pb2.py deleted file mode 100644 index 2d6669f3e2..0000000000 --- a/src/viam/gen/google/api/launch_stage_pb2.py +++ /dev/null @@ -1,17 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/launch_stage.proto') -_sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dgoogle/api/launch_stage.proto\x12\ngoogle.api*\x8c\x01\n\x0bLaunchStage\x12\x1c\n\x18LAUNCH_STAGE_UNSPECIFIED\x10\x00\x12\x11\n\rUNIMPLEMENTED\x10\x06\x12\r\n\tPRELAUNCH\x10\x07\x12\x10\n\x0cEARLY_ACCESS\x10\x01\x12\t\n\x05ALPHA\x10\x02\x12\x08\n\x04BETA\x10\x03\x12\x06\n\x02GA\x10\x04\x12\x0e\n\nDEPRECATED\x10\x05BZ\n\x0ecom.google.apiB\x10LaunchStageProtoP\x01Z-google.golang.org/genproto/googleapis/api;api\xa2\x02\x04GAPIb\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.launch_stage_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\x10LaunchStageProtoP\x01Z-google.golang.org/genproto/googleapis/api;api\xa2\x02\x04GAPI' - _globals['_LAUNCHSTAGE']._serialized_start = 46 - _globals['_LAUNCHSTAGE']._serialized_end = 186 \ No newline at end of file diff --git a/src/viam/gen/google/api/launch_stage_pb2.pyi b/src/viam/gen/google/api/launch_stage_pb2.pyi deleted file mode 100644 index 7141c66634..0000000000 --- a/src/viam/gen/google/api/launch_stage_pb2.pyi +++ /dev/null @@ -1,72 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from google.protobuf import descriptor as _descriptor -from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -class _LaunchStage: - ValueType = _typing.NewType('ValueType', _builtins.int) - V: _TypeAlias = ValueType - -class _LaunchStageEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_LaunchStage.ValueType], _builtins.type): - DESCRIPTOR: _descriptor.EnumDescriptor - LAUNCH_STAGE_UNSPECIFIED: _LaunchStage.ValueType - 'Do not use this default value.' - UNIMPLEMENTED: _LaunchStage.ValueType - 'The feature is not yet implemented. Users can not use it.' - PRELAUNCH: _LaunchStage.ValueType - 'Prelaunch features are hidden from users and are only visible internally.' - EARLY_ACCESS: _LaunchStage.ValueType - 'Early Access features are limited to a closed group of testers. To use\n these features, you must sign up in advance and sign a Trusted Tester\n agreement (which includes confidentiality provisions). These features may\n be unstable, changed in backward-incompatible ways, and are not\n guaranteed to be released.\n ' - ALPHA: _LaunchStage.ValueType - "Alpha is a limited availability test for releases before they are cleared\n for widespread use. By Alpha, all significant design issues are resolved\n and we are in the process of verifying functionality. Alpha customers\n need to apply for access, agree to applicable terms, and have their\n projects allowlisted. Alpha releases don't have to be feature complete,\n no SLAs are provided, and there are no technical support obligations, but\n they will be far enough along that customers can actually use them in\n test environments or for limited-use tests -- just like they would in\n normal production cases.\n " - BETA: _LaunchStage.ValueType - 'Beta is the point at which we are ready to open a release for any\n customer to use. There are no SLA or technical support obligations in a\n Beta release. Products will be complete from a feature perspective, but\n may have some open outstanding issues. Beta releases are suitable for\n limited production use cases.\n ' - GA: _LaunchStage.ValueType - 'GA features are open to all developers and are considered stable and\n fully qualified for production use.\n ' - DEPRECATED: _LaunchStage.ValueType - 'Deprecated features are scheduled to be shut down and removed. For more\n information, see the "Deprecation Policy" section of our [Terms of\n Service](https://cloud.google.com/terms/)\n and the [Google Cloud Platform Subject to the Deprecation\n Policy](https://cloud.google.com/terms/deprecation) documentation.\n ' - -class LaunchStage(_LaunchStage, metaclass=_LaunchStageEnumTypeWrapper): - """The launch stage as defined by [Google Cloud Platform - Launch Stages](https://cloud.google.com/terms/launch-stages). - """ -LAUNCH_STAGE_UNSPECIFIED: LaunchStage.ValueType -'Do not use this default value.' -UNIMPLEMENTED: LaunchStage.ValueType -'The feature is not yet implemented. Users can not use it.' -PRELAUNCH: LaunchStage.ValueType -'Prelaunch features are hidden from users and are only visible internally.' -EARLY_ACCESS: LaunchStage.ValueType -'Early Access features are limited to a closed group of testers. To use\nthese features, you must sign up in advance and sign a Trusted Tester\nagreement (which includes confidentiality provisions). These features may\nbe unstable, changed in backward-incompatible ways, and are not\nguaranteed to be released.\n' -ALPHA: LaunchStage.ValueType -"Alpha is a limited availability test for releases before they are cleared\nfor widespread use. By Alpha, all significant design issues are resolved\nand we are in the process of verifying functionality. Alpha customers\nneed to apply for access, agree to applicable terms, and have their\nprojects allowlisted. Alpha releases don't have to be feature complete,\nno SLAs are provided, and there are no technical support obligations, but\nthey will be far enough along that customers can actually use them in\ntest environments or for limited-use tests -- just like they would in\nnormal production cases.\n" -BETA: LaunchStage.ValueType -'Beta is the point at which we are ready to open a release for any\ncustomer to use. There are no SLA or technical support obligations in a\nBeta release. Products will be complete from a feature perspective, but\nmay have some open outstanding issues. Beta releases are suitable for\nlimited production use cases.\n' -GA: LaunchStage.ValueType -'GA features are open to all developers and are considered stable and\nfully qualified for production use.\n' -DEPRECATED: LaunchStage.ValueType -'Deprecated features are scheduled to be shut down and removed. For more\ninformation, see the "Deprecation Policy" section of our [Terms of\nService](https://cloud.google.com/terms/)\nand the [Google Cloud Platform Subject to the Deprecation\nPolicy](https://cloud.google.com/terms/deprecation) documentation.\n' -Global___LaunchStage: _TypeAlias = LaunchStage \ No newline at end of file diff --git a/src/viam/gen/google/api/resource_grpc.py b/src/viam/gen/google/api/resource_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/resource_pb2.py b/src/viam/gen/google/api/resource_pb2.py deleted file mode 100644 index 8ac8b7c1c5..0000000000 --- a/src/viam/gen/google/api/resource_pb2.py +++ /dev/null @@ -1,24 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/resource.proto') -_sym_db = _symbol_database.Default() -from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19google/api/resource.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto"\xaa\x03\n\x12ResourceDescriptor\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x18\n\x07pattern\x18\x02 \x03(\tR\x07pattern\x12\x1d\n\nname_field\x18\x03 \x01(\tR\tnameField\x12@\n\x07history\x18\x04 \x01(\x0e2&.google.api.ResourceDescriptor.HistoryR\x07history\x12\x16\n\x06plural\x18\x05 \x01(\tR\x06plural\x12\x1a\n\x08singular\x18\x06 \x01(\tR\x08singular\x12:\n\x05style\x18\n \x03(\x0e2$.google.api.ResourceDescriptor.StyleR\x05style"[\n\x07History\x12\x17\n\x13HISTORY_UNSPECIFIED\x10\x00\x12\x1d\n\x19ORIGINALLY_SINGLE_PATTERN\x10\x01\x12\x18\n\x14FUTURE_MULTI_PATTERN\x10\x02"8\n\x05Style\x12\x15\n\x11STYLE_UNSPECIFIED\x10\x00\x12\x18\n\x14DECLARATIVE_FRIENDLY\x10\x01"F\n\x11ResourceReference\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x1d\n\nchild_type\x18\x02 \x01(\tR\tchildType:l\n\x12resource_reference\x12\x1d.google.protobuf.FieldOptions\x18\x9f\x08 \x01(\x0b2\x1d.google.api.ResourceReferenceR\x11resourceReference:n\n\x13resource_definition\x12\x1c.google.protobuf.FileOptions\x18\x9d\x08 \x03(\x0b2\x1e.google.api.ResourceDescriptorR\x12resourceDefinition:\\\n\x08resource\x12\x1f.google.protobuf.MessageOptions\x18\x9d\x08 \x01(\x0b2\x1e.google.api.ResourceDescriptorR\x08resourceBk\n\x0ecom.google.apiB\rResourceProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.resource_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\rResourceProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPI' - _globals['_RESOURCEDESCRIPTOR']._serialized_start = 76 - _globals['_RESOURCEDESCRIPTOR']._serialized_end = 502 - _globals['_RESOURCEDESCRIPTOR_HISTORY']._serialized_start = 353 - _globals['_RESOURCEDESCRIPTOR_HISTORY']._serialized_end = 444 - _globals['_RESOURCEDESCRIPTOR_STYLE']._serialized_start = 446 - _globals['_RESOURCEDESCRIPTOR_STYLE']._serialized_end = 502 - _globals['_RESOURCEREFERENCE']._serialized_start = 504 - _globals['_RESOURCEREFERENCE']._serialized_end = 574 \ No newline at end of file diff --git a/src/viam/gen/google/api/resource_pb2.pyi b/src/viam/gen/google/api/resource_pb2.pyi deleted file mode 100644 index 8e6b8ce2c4..0000000000 --- a/src/viam/gen/google/api/resource_pb2.pyi +++ /dev/null @@ -1,211 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from collections import abc as _abc -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pb2 as _descriptor_pb2 -from google.protobuf import message as _message -from google.protobuf.internal import containers as _containers -from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper -from google.protobuf.internal import extension_dict as _extension_dict -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class ResourceDescriptor(_message.Message): - """A simple descriptor of a resource type. - - ResourceDescriptor annotates a resource message (either by means of a - protobuf annotation or use in the service config), and associates the - resource's schema, the resource type, and the pattern of the resource name. - - Example: - - message Topic { - // Indicates this message defines a resource schema. - // Declares the resource type in the format of {service}/{kind}. - // For Kubernetes resources, the format is {api group}/{kind}. - option (google.api.resource) = { - type: "pubsub.googleapis.com/Topic" - pattern: "projects/{project}/topics/{topic}" - }; - } - - The ResourceDescriptor Yaml config will look like: - - resources: - - type: "pubsub.googleapis.com/Topic" - pattern: "projects/{project}/topics/{topic}" - - Sometimes, resources have multiple patterns, typically because they can - live under multiple parents. - - Example: - - message LogEntry { - option (google.api.resource) = { - type: "logging.googleapis.com/LogEntry" - pattern: "projects/{project}/logs/{log}" - pattern: "folders/{folder}/logs/{log}" - pattern: "organizations/{organization}/logs/{log}" - pattern: "billingAccounts/{billing_account}/logs/{log}" - }; - } - - The ResourceDescriptor Yaml config will look like: - - resources: - - type: 'logging.googleapis.com/LogEntry' - pattern: "projects/{project}/logs/{log}" - pattern: "folders/{folder}/logs/{log}" - pattern: "organizations/{organization}/logs/{log}" - pattern: "billingAccounts/{billing_account}/logs/{log}" - """ - DESCRIPTOR: _descriptor.Descriptor - - class _History: - ValueType = _typing.NewType('ValueType', _builtins.int) - V: _TypeAlias = ValueType - - class _HistoryEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[ResourceDescriptor._History.ValueType], _builtins.type): - DESCRIPTOR: _descriptor.EnumDescriptor - HISTORY_UNSPECIFIED: ResourceDescriptor._History.ValueType - 'The "unset" value.' - ORIGINALLY_SINGLE_PATTERN: ResourceDescriptor._History.ValueType - 'The resource originally had one pattern and launched as such, and\n additional patterns were added later.\n ' - FUTURE_MULTI_PATTERN: ResourceDescriptor._History.ValueType - 'The resource has one pattern, but the API owner expects to add more\n later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents\n that from being necessary once there are multiple patterns.)\n ' - - class History(_History, metaclass=_HistoryEnumTypeWrapper): - """A description of the historical or future-looking state of the - resource pattern. - """ - HISTORY_UNSPECIFIED: ResourceDescriptor.History.ValueType - 'The "unset" value.' - ORIGINALLY_SINGLE_PATTERN: ResourceDescriptor.History.ValueType - 'The resource originally had one pattern and launched as such, and\n additional patterns were added later.\n ' - FUTURE_MULTI_PATTERN: ResourceDescriptor.History.ValueType - 'The resource has one pattern, but the API owner expects to add more\n later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents\n that from being necessary once there are multiple patterns.)\n ' - - class _Style: - ValueType = _typing.NewType('ValueType', _builtins.int) - V: _TypeAlias = ValueType - - class _StyleEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[ResourceDescriptor._Style.ValueType], _builtins.type): - DESCRIPTOR: _descriptor.EnumDescriptor - STYLE_UNSPECIFIED: ResourceDescriptor._Style.ValueType - 'The unspecified value. Do not use.' - DECLARATIVE_FRIENDLY: ResourceDescriptor._Style.ValueType - 'This resource is intended to be "declarative-friendly".\n\n Declarative-friendly resources must be more strictly consistent, and\n setting this to true communicates to tools that this resource should\n adhere to declarative-friendly expectations.\n\n Note: This is used by the API linter (linter.aip.dev) to enable\n additional checks.\n ' - - class Style(_Style, metaclass=_StyleEnumTypeWrapper): - """A flag representing a specific style that a resource claims to conform to.""" - STYLE_UNSPECIFIED: ResourceDescriptor.Style.ValueType - 'The unspecified value. Do not use.' - DECLARATIVE_FRIENDLY: ResourceDescriptor.Style.ValueType - 'This resource is intended to be "declarative-friendly".\n\n Declarative-friendly resources must be more strictly consistent, and\n setting this to true communicates to tools that this resource should\n adhere to declarative-friendly expectations.\n\n Note: This is used by the API linter (linter.aip.dev) to enable\n additional checks.\n ' - TYPE_FIELD_NUMBER: _builtins.int - PATTERN_FIELD_NUMBER: _builtins.int - NAME_FIELD_FIELD_NUMBER: _builtins.int - HISTORY_FIELD_NUMBER: _builtins.int - PLURAL_FIELD_NUMBER: _builtins.int - SINGULAR_FIELD_NUMBER: _builtins.int - STYLE_FIELD_NUMBER: _builtins.int - type: _builtins.str - 'The resource type. It must be in the format of\n {service_name}/{resource_type_kind}. The `resource_type_kind` must be\n singular and must not include version numbers.\n\n Example: `storage.googleapis.com/Bucket`\n\n The value of the resource_type_kind must follow the regular expression\n /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and\n should use PascalCase (UpperCamelCase). The maximum number of\n characters allowed for the `resource_type_kind` is 100.\n ' - name_field: _builtins.str - 'Optional. The field on the resource that designates the resource name\n field. If omitted, this is assumed to be "name".\n ' - history: Global___ResourceDescriptor.History.ValueType - 'Optional. The historical or future-looking state of the resource pattern.\n\n Example:\n\n // The InspectTemplate message originally only supported resource\n // names with organization, and project was added later.\n message InspectTemplate {\n option (google.api.resource) = {\n type: "dlp.googleapis.com/InspectTemplate"\n pattern:\n "organizations/{organization}/inspectTemplates/{inspect_template}"\n pattern: "projects/{project}/inspectTemplates/{inspect_template}"\n history: ORIGINALLY_SINGLE_PATTERN\n };\n }\n ' - plural: _builtins.str - "The plural name used in the resource name and permission names, such as\n 'projects' for the resource name of 'projects/{project}' and the permission\n name of 'cloudresourcemanager.googleapis.com/projects.get'. One exception\n to this is for Nested Collections that have stuttering names, as defined\n in [AIP-122](https://google.aip.dev/122#nested-collections), where the\n collection ID in the resource name pattern does not necessarily directly\n match the `plural` value.\n\n It is the same concept of the `plural` field in k8s CRD spec\n https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/\n\n Note: The plural form is required even for singleton resources. See\n https://aip.dev/156\n " - singular: _builtins.str - 'The same concept of the `singular` field in k8s CRD spec\n https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/\n Such as "project" for the `resourcemanager.googleapis.com/Project` type.\n ' - - @_builtins.property - def pattern(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: - """Optional. The relative resource name pattern associated with this resource - type. The DNS prefix of the full resource name shouldn't be specified here. - - The path pattern must follow the syntax, which aligns with HTTP binding - syntax: - - Template = Segment { "/" Segment } ; - Segment = LITERAL | Variable ; - Variable = "{" LITERAL "}" ; - - Examples: - - - "projects/{project}/topics/{topic}" - - "projects/{project}/knowledgeBases/{knowledge_base}" - - The components in braces correspond to the IDs for each resource in the - hierarchy. It is expected that, if multiple patterns are provided, - the same component name (e.g. "project") refers to IDs of the same - type of resource. - """ - - @_builtins.property - def style(self) -> _containers.RepeatedScalarFieldContainer[Global___ResourceDescriptor.Style.ValueType]: - """Style flag(s) for this resource. - These indicate that a resource is expected to conform to a given - style. See the specific style flags for additional information. - """ - - def __init__(self, *, type: _builtins.str=..., pattern: _abc.Iterable[_builtins.str] | None=..., name_field: _builtins.str=..., history: Global___ResourceDescriptor.History.ValueType=..., plural: _builtins.str=..., singular: _builtins.str=..., style: _abc.Iterable[Global___ResourceDescriptor.Style.ValueType] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['history', b'history', 'name_field', b'name_field', 'pattern', b'pattern', 'plural', b'plural', 'singular', b'singular', 'style', b'style', 'type', b'type'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___ResourceDescriptor: _TypeAlias = ResourceDescriptor - -@_typing.final -class ResourceReference(_message.Message): - """Defines a proto annotation that describes a string field that refers to - an API resource. - """ - DESCRIPTOR: _descriptor.Descriptor - TYPE_FIELD_NUMBER: _builtins.int - CHILD_TYPE_FIELD_NUMBER: _builtins.int - type: _builtins.str - 'The resource type that the annotated field references.\n\n Example:\n\n message Subscription {\n string topic = 2 [(google.api.resource_reference) = {\n type: "pubsub.googleapis.com/Topic"\n }];\n }\n\n Occasionally, a field may reference an arbitrary resource. In this case,\n APIs use the special value * in their resource reference.\n\n Example:\n\n message GetIamPolicyRequest {\n string resource = 2 [(google.api.resource_reference) = {\n type: "*"\n }];\n }\n ' - child_type: _builtins.str - 'The resource type of a child collection that the annotated field\n references. This is useful for annotating the `parent` field that\n doesn\'t have a fixed resource type.\n\n Example:\n\n message ListLogEntriesRequest {\n string parent = 1 [(google.api.resource_reference) = {\n child_type: "logging.googleapis.com/LogEntry"\n };\n }\n ' - - def __init__(self, *, type: _builtins.str=..., child_type: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['child_type', b'child_type', 'type', b'type'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___ResourceReference: _TypeAlias = ResourceReference -RESOURCE_REFERENCE_FIELD_NUMBER: _builtins.int -RESOURCE_DEFINITION_FIELD_NUMBER: _builtins.int -RESOURCE_FIELD_NUMBER: _builtins.int -resource_reference: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.FieldOptions, Global___ResourceReference] -'An annotation that describes a resource reference, see\n[ResourceReference][].\n' -resource_definition: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.FileOptions, _containers.RepeatedCompositeFieldContainer[Global___ResourceDescriptor]] -'An annotation that describes a resource definition without a corresponding\nmessage; see [ResourceDescriptor][].\n' -resource: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.MessageOptions, Global___ResourceDescriptor] -'An annotation that describes a resource definition, see\n[ResourceDescriptor][].\n' \ No newline at end of file diff --git a/src/viam/gen/google/api/routing_grpc.py b/src/viam/gen/google/api/routing_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/routing_pb2.py b/src/viam/gen/google/api/routing_pb2.py deleted file mode 100644 index 497d6e0579..0000000000 --- a/src/viam/gen/google/api/routing_pb2.py +++ /dev/null @@ -1,20 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/routing.proto') -_sym_db = _symbol_database.Default() -from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18google/api/routing.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto"Z\n\x0bRoutingRule\x12K\n\x12routing_parameters\x18\x02 \x03(\x0b2\x1c.google.api.RoutingParameterR\x11routingParameters"M\n\x10RoutingParameter\x12\x14\n\x05field\x18\x01 \x01(\tR\x05field\x12#\n\rpath_template\x18\x02 \x01(\tR\x0cpathTemplate:T\n\x07routing\x12\x1e.google.protobuf.MethodOptions\x18\xb1\xca\xbc" \x01(\x0b2\x17.google.api.RoutingRuleR\x07routingBj\n\x0ecom.google.apiB\x0cRoutingProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.routing_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\x0cRoutingProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPI' - _globals['_ROUTINGRULE']._serialized_start = 74 - _globals['_ROUTINGRULE']._serialized_end = 164 - _globals['_ROUTINGPARAMETER']._serialized_start = 166 - _globals['_ROUTINGPARAMETER']._serialized_end = 243 \ No newline at end of file diff --git a/src/viam/gen/google/api/routing_pb2.pyi b/src/viam/gen/google/api/routing_pb2.pyi deleted file mode 100644 index 7bdde1af80..0000000000 --- a/src/viam/gen/google/api/routing_pb2.pyi +++ /dev/null @@ -1,436 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from collections import abc as _abc -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pb2 as _descriptor_pb2 -from google.protobuf import message as _message -from google.protobuf.internal import containers as _containers -from google.protobuf.internal import extension_dict as _extension_dict -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class RoutingRule(_message.Message): - """Specifies the routing information that should be sent along with the request - in the form of routing header. - **NOTE:** All service configuration rules follow the "last one wins" order. - - The examples below will apply to an RPC which has the following request type: - - Message Definition: - - message Request { - // The name of the Table - // Values can be of the following formats: - // - `projects//tables/
` - // - `projects//instances//tables/
` - // - `region//zones//tables/
` - string table_name = 1; - - // This value specifies routing for replication. - // It can be in the following formats: - // - `profiles/` - // - a legacy `profile_id` that can be any string - string app_profile_id = 2; - } - - Example message: - - { - table_name: projects/proj_foo/instances/instance_bar/table/table_baz, - app_profile_id: profiles/prof_qux - } - - The routing header consists of one or multiple key-value pairs. Every key - and value must be percent-encoded, and joined together in the format of - `key1=value1&key2=value2`. - The examples below skip the percent-encoding for readability. - - Example 1 - - Extracting a field from the request to put into the routing header - unchanged, with the key equal to the field name. - - annotation: - - option (google.api.routing) = { - // Take the `app_profile_id`. - routing_parameters { - field: "app_profile_id" - } - }; - - result: - - x-goog-request-params: app_profile_id=profiles/prof_qux - - Example 2 - - Extracting a field from the request to put into the routing header - unchanged, with the key different from the field name. - - annotation: - - option (google.api.routing) = { - // Take the `app_profile_id`, but name it `routing_id` in the header. - routing_parameters { - field: "app_profile_id" - path_template: "{routing_id=**}" - } - }; - - result: - - x-goog-request-params: routing_id=profiles/prof_qux - - Example 3 - - Extracting a field from the request to put into the routing - header, while matching a path template syntax on the field's value. - - NB: it is more useful to send nothing than to send garbage for the purpose - of dynamic routing, since garbage pollutes cache. Thus the matching. - - Sub-example 3a - - The field matches the template. - - annotation: - - option (google.api.routing) = { - // Take the `table_name`, if it's well-formed (with project-based - // syntax). - routing_parameters { - field: "table_name" - path_template: "{table_name=projects/*/instances/*/**}" - } - }; - - result: - - x-goog-request-params: - table_name=projects/proj_foo/instances/instance_bar/table/table_baz - - Sub-example 3b - - The field does not match the template. - - annotation: - - option (google.api.routing) = { - // Take the `table_name`, if it's well-formed (with region-based - // syntax). - routing_parameters { - field: "table_name" - path_template: "{table_name=regions/*/zones/*/**}" - } - }; - - result: - - - - Sub-example 3c - - Multiple alternative conflictingly named path templates are - specified. The one that matches is used to construct the header. - - annotation: - - option (google.api.routing) = { - // Take the `table_name`, if it's well-formed, whether - // using the region- or projects-based syntax. - - routing_parameters { - field: "table_name" - path_template: "{table_name=regions/*/zones/*/**}" - } - routing_parameters { - field: "table_name" - path_template: "{table_name=projects/*/instances/*/**}" - } - }; - - result: - - x-goog-request-params: - table_name=projects/proj_foo/instances/instance_bar/table/table_baz - - Example 4 - - Extracting a single routing header key-value pair by matching a - template syntax on (a part of) a single request field. - - annotation: - - option (google.api.routing) = { - // Take just the project id from the `table_name` field. - routing_parameters { - field: "table_name" - path_template: "{routing_id=projects/*}/**" - } - }; - - result: - - x-goog-request-params: routing_id=projects/proj_foo - - Example 5 - - Extracting a single routing header key-value pair by matching - several conflictingly named path templates on (parts of) a single request - field. The last template to match "wins" the conflict. - - annotation: - - option (google.api.routing) = { - // If the `table_name` does not have instances information, - // take just the project id for routing. - // Otherwise take project + instance. - - routing_parameters { - field: "table_name" - path_template: "{routing_id=projects/*}/**" - } - routing_parameters { - field: "table_name" - path_template: "{routing_id=projects/*/instances/*}/**" - } - }; - - result: - - x-goog-request-params: - routing_id=projects/proj_foo/instances/instance_bar - - Example 6 - - Extracting multiple routing header key-value pairs by matching - several non-conflicting path templates on (parts of) a single request field. - - Sub-example 6a - - Make the templates strict, so that if the `table_name` does not - have an instance information, nothing is sent. - - annotation: - - option (google.api.routing) = { - // The routing code needs two keys instead of one composite - // but works only for the tables with the "project-instance" name - // syntax. - - routing_parameters { - field: "table_name" - path_template: "{project_id=projects/*}/instances/*/**" - } - routing_parameters { - field: "table_name" - path_template: "projects/*/{instance_id=instances/*}/**" - } - }; - - result: - - x-goog-request-params: - project_id=projects/proj_foo&instance_id=instances/instance_bar - - Sub-example 6b - - Make the templates loose, so that if the `table_name` does not - have an instance information, just the project id part is sent. - - annotation: - - option (google.api.routing) = { - // The routing code wants two keys instead of one composite - // but will work with just the `project_id` for tables without - // an instance in the `table_name`. - - routing_parameters { - field: "table_name" - path_template: "{project_id=projects/*}/**" - } - routing_parameters { - field: "table_name" - path_template: "projects/*/{instance_id=instances/*}/**" - } - }; - - result (is the same as 6a for our example message because it has the instance - information): - - x-goog-request-params: - project_id=projects/proj_foo&instance_id=instances/instance_bar - - Example 7 - - Extracting multiple routing header key-value pairs by matching - several path templates on multiple request fields. - - NB: note that here there is no way to specify sending nothing if one of the - fields does not match its template. E.g. if the `table_name` is in the wrong - format, the `project_id` will not be sent, but the `routing_id` will be. - The backend routing code has to be aware of that and be prepared to not - receive a full complement of keys if it expects multiple. - - annotation: - - option (google.api.routing) = { - // The routing needs both `project_id` and `routing_id` - // (from the `app_profile_id` field) for routing. - - routing_parameters { - field: "table_name" - path_template: "{project_id=projects/*}/**" - } - routing_parameters { - field: "app_profile_id" - path_template: "{routing_id=**}" - } - }; - - result: - - x-goog-request-params: - project_id=projects/proj_foo&routing_id=profiles/prof_qux - - Example 8 - - Extracting a single routing header key-value pair by matching - several conflictingly named path templates on several request fields. The - last template to match "wins" the conflict. - - annotation: - - option (google.api.routing) = { - // The `routing_id` can be a project id or a region id depending on - // the table name format, but only if the `app_profile_id` is not set. - // If `app_profile_id` is set it should be used instead. - - routing_parameters { - field: "table_name" - path_template: "{routing_id=projects/*}/**" - } - routing_parameters { - field: "table_name" - path_template: "{routing_id=regions/*}/**" - } - routing_parameters { - field: "app_profile_id" - path_template: "{routing_id=**}" - } - }; - - result: - - x-goog-request-params: routing_id=profiles/prof_qux - - Example 9 - - Bringing it all together. - - annotation: - - option (google.api.routing) = { - // For routing both `table_location` and a `routing_id` are needed. - // - // table_location can be either an instance id or a region+zone id. - // - // For `routing_id`, take the value of `app_profile_id` - // - If it's in the format `profiles/`, send - // just the `` part. - // - If it's any other literal, send it as is. - // If the `app_profile_id` is empty, and the `table_name` starts with - // the project_id, send that instead. - - routing_parameters { - field: "table_name" - path_template: "projects/*/{table_location=instances/*}/tables/*" - } - routing_parameters { - field: "table_name" - path_template: "{table_location=regions/*/zones/*}/tables/*" - } - routing_parameters { - field: "table_name" - path_template: "{routing_id=projects/*}/**" - } - routing_parameters { - field: "app_profile_id" - path_template: "{routing_id=**}" - } - routing_parameters { - field: "app_profile_id" - path_template: "profiles/{routing_id=*}" - } - }; - - result: - - x-goog-request-params: - table_location=instances/instance_bar&routing_id=prof_qux - """ - DESCRIPTOR: _descriptor.Descriptor - ROUTING_PARAMETERS_FIELD_NUMBER: _builtins.int - - @_builtins.property - def routing_parameters(self) -> _containers.RepeatedCompositeFieldContainer[Global___RoutingParameter]: - """A collection of Routing Parameter specifications. - **NOTE:** If multiple Routing Parameters describe the same key - (via the `path_template` field or via the `field` field when - `path_template` is not provided), "last one wins" rule - determines which Parameter gets used. - See the examples for more details. - """ - - def __init__(self, *, routing_parameters: _abc.Iterable[Global___RoutingParameter] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['routing_parameters', b'routing_parameters'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___RoutingRule: _TypeAlias = RoutingRule - -@_typing.final -class RoutingParameter(_message.Message): - """A projection from an input message to the GRPC or REST header.""" - DESCRIPTOR: _descriptor.Descriptor - FIELD_FIELD_NUMBER: _builtins.int - PATH_TEMPLATE_FIELD_NUMBER: _builtins.int - field: _builtins.str - 'A request field to extract the header key-value pair from.' - path_template: _builtins.str - 'A pattern matching the key-value field. Optional.\n If not specified, the whole field specified in the `field` field will be\n taken as value, and its name used as key. If specified, it MUST contain\n exactly one named segment (along with any number of unnamed segments) The\n pattern will be matched over the field specified in the `field` field, then\n if the match is successful:\n - the name of the single named segment will be used as a header name,\n - the match value of the segment will be used as a header value;\n if the match is NOT successful, nothing will be sent.\n\n Example:\n\n -- This is a field in the request message\n | that the header value will be extracted from.\n |\n | -- This is the key name in the\n | | routing header.\n V |\n field: "table_name" v\n path_template: "projects/*/{table_location=instances/*}/tables/*"\n ^ ^\n | |\n In the {} brackets is the pattern that -- |\n specifies what to extract from the |\n field as a value to be sent. |\n |\n The string in the field must match the whole pattern --\n before brackets, inside brackets, after brackets.\n\n When looking at this specific example, we can see that:\n - A key-value pair with the key `table_location`\n and the value matching `instances/*` should be added\n to the x-goog-request-params routing header.\n - The value is extracted from the request message\'s `table_name` field\n if it matches the full pattern specified:\n `projects/*/instances/*/tables/*`.\n\n **NB:** If the `path_template` field is not provided, the key name is\n equal to the field name, and the whole field should be sent as a value.\n This makes the pattern for the field and the value functionally equivalent\n to `**`, and the configuration\n\n {\n field: "table_name"\n }\n\n is a functionally equivalent shorthand to:\n\n {\n field: "table_name"\n path_template: "{table_name=**}"\n }\n\n See Example 1 for more details.\n ' - - def __init__(self, *, field: _builtins.str=..., path_template: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['field', b'field', 'path_template', b'path_template'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___RoutingParameter: _TypeAlias = RoutingParameter -ROUTING_FIELD_NUMBER: _builtins.int -routing: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.MethodOptions, Global___RoutingRule] -'See RoutingRule.' \ No newline at end of file diff --git a/src/viam/gen/google/api/visibility_grpc.py b/src/viam/gen/google/api/visibility_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/api/visibility_pb2.py b/src/viam/gen/google/api/visibility_pb2.py deleted file mode 100644 index 2ea92e6382..0000000000 --- a/src/viam/gen/google/api/visibility_pb2.py +++ /dev/null @@ -1,20 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/api/visibility.proto') -_sym_db = _symbol_database.Default() -from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bgoogle/api/visibility.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto">\n\nVisibility\x120\n\x05rules\x18\x01 \x03(\x0b2\x1a.google.api.VisibilityRuleR\x05rules"N\n\x0eVisibilityRule\x12\x1a\n\x08selector\x18\x01 \x01(\tR\x08selector\x12 \n\x0brestriction\x18\x02 \x01(\tR\x0brestriction:d\n\x0fenum_visibility\x12\x1c.google.protobuf.EnumOptions\x18\xaf\xca\xbc" \x01(\x0b2\x1a.google.api.VisibilityRuleR\x0eenumVisibility:k\n\x10value_visibility\x12!.google.protobuf.EnumValueOptions\x18\xaf\xca\xbc" \x01(\x0b2\x1a.google.api.VisibilityRuleR\x0fvalueVisibility:g\n\x10field_visibility\x12\x1d.google.protobuf.FieldOptions\x18\xaf\xca\xbc" \x01(\x0b2\x1a.google.api.VisibilityRuleR\x0ffieldVisibility:m\n\x12message_visibility\x12\x1f.google.protobuf.MessageOptions\x18\xaf\xca\xbc" \x01(\x0b2\x1a.google.api.VisibilityRuleR\x11messageVisibility:j\n\x11method_visibility\x12\x1e.google.protobuf.MethodOptions\x18\xaf\xca\xbc" \x01(\x0b2\x1a.google.api.VisibilityRuleR\x10methodVisibility:e\n\x0eapi_visibility\x12\x1f.google.protobuf.ServiceOptions\x18\xaf\xca\xbc" \x01(\x0b2\x1a.google.api.VisibilityRuleR\rapiVisibilityBk\n\x0ecom.google.apiB\x0fVisibilityProtoP\x01Z?google.golang.org/genproto/googleapis/api/visibility;visibility\xa2\x02\x04GAPIb\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.visibility_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.apiB\x0fVisibilityProtoP\x01Z?google.golang.org/genproto/googleapis/api/visibility;visibility\xa2\x02\x04GAPI' - _globals['_VISIBILITY']._serialized_start = 77 - _globals['_VISIBILITY']._serialized_end = 139 - _globals['_VISIBILITYRULE']._serialized_start = 141 - _globals['_VISIBILITYRULE']._serialized_end = 219 \ No newline at end of file diff --git a/src/viam/gen/google/api/visibility_pb2.pyi b/src/viam/gen/google/api/visibility_pb2.pyi deleted file mode 100644 index 03c6e22d6f..0000000000 --- a/src/viam/gen/google/api/visibility_pb2.pyi +++ /dev/null @@ -1,114 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from collections import abc as _abc -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pb2 as _descriptor_pb2 -from google.protobuf import message as _message -from google.protobuf.internal import containers as _containers -from google.protobuf.internal import extension_dict as _extension_dict -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class Visibility(_message.Message): - """`Visibility` restricts service consumer's access to service elements, - such as whether an application can call a visibility-restricted method. - The restriction is expressed by applying visibility labels on service - elements. The visibility labels are elsewhere linked to service consumers. - - A service can define multiple visibility labels, but a service consumer - should be granted at most one visibility label. Multiple visibility - labels for a single service consumer are not supported. - - If an element and all its parents have no visibility label, its visibility - is unconditionally granted. - - Example: - - visibility: - rules: - - selector: google.calendar.Calendar.EnhancedSearch - restriction: PREVIEW - - selector: google.calendar.Calendar.Delegate - restriction: INTERNAL - - Here, all methods are publicly visible except for the restricted methods - EnhancedSearch and Delegate. - """ - DESCRIPTOR: _descriptor.Descriptor - RULES_FIELD_NUMBER: _builtins.int - - @_builtins.property - def rules(self) -> _containers.RepeatedCompositeFieldContainer[Global___VisibilityRule]: - """A list of visibility rules that apply to individual API elements. - - **NOTE:** All service configuration rules follow "last one wins" order. - """ - - def __init__(self, *, rules: _abc.Iterable[Global___VisibilityRule] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['rules', b'rules'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___Visibility: _TypeAlias = Visibility - -@_typing.final -class VisibilityRule(_message.Message): - """A visibility rule provides visibility configuration for an individual API - element. - """ - DESCRIPTOR: _descriptor.Descriptor - SELECTOR_FIELD_NUMBER: _builtins.int - RESTRICTION_FIELD_NUMBER: _builtins.int - selector: _builtins.str - 'Selects methods, messages, fields, enums, etc. to which this rule applies.\n\n Refer to [selector][google.api.DocumentationRule.selector] for syntax\n details.\n ' - restriction: _builtins.str - 'A comma-separated list of visibility labels that apply to the `selector`.\n Any of the listed labels can be used to grant the visibility.\n\n If a rule has multiple labels, removing one of the labels but not all of\n them can break clients.\n\n Example:\n\n visibility:\n rules:\n - selector: google.calendar.Calendar.EnhancedSearch\n restriction: INTERNAL, PREVIEW\n\n Removing INTERNAL from this restriction will break clients that rely on\n this method and only had access to it through INTERNAL.\n ' - - def __init__(self, *, selector: _builtins.str=..., restriction: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['restriction', b'restriction', 'selector', b'selector'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___VisibilityRule: _TypeAlias = VisibilityRule -ENUM_VISIBILITY_FIELD_NUMBER: _builtins.int -VALUE_VISIBILITY_FIELD_NUMBER: _builtins.int -FIELD_VISIBILITY_FIELD_NUMBER: _builtins.int -MESSAGE_VISIBILITY_FIELD_NUMBER: _builtins.int -METHOD_VISIBILITY_FIELD_NUMBER: _builtins.int -API_VISIBILITY_FIELD_NUMBER: _builtins.int -enum_visibility: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.EnumOptions, Global___VisibilityRule] -'See `VisibilityRule`.' -value_visibility: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.EnumValueOptions, Global___VisibilityRule] -'See `VisibilityRule`.' -field_visibility: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.FieldOptions, Global___VisibilityRule] -'See `VisibilityRule`.' -message_visibility: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.MessageOptions, Global___VisibilityRule] -'See `VisibilityRule`.' -method_visibility: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.MethodOptions, Global___VisibilityRule] -'See `VisibilityRule`.' -api_visibility: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.ServiceOptions, Global___VisibilityRule] -'See `VisibilityRule`.' \ No newline at end of file diff --git a/src/viam/gen/google/rpc/__init__.py b/src/viam/gen/google/rpc/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/rpc/code_grpc.py b/src/viam/gen/google/rpc/code_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/rpc/code_pb2.py b/src/viam/gen/google/rpc/code_pb2.py deleted file mode 100644 index cbb7de059d..0000000000 --- a/src/viam/gen/google/rpc/code_pb2.py +++ /dev/null @@ -1,17 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/rpc/code.proto') -_sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15google/rpc/code.proto\x12\ngoogle.rpc*\xb7\x02\n\x04Code\x12\x06\n\x02OK\x10\x00\x12\r\n\tCANCELLED\x10\x01\x12\x0b\n\x07UNKNOWN\x10\x02\x12\x14\n\x10INVALID_ARGUMENT\x10\x03\x12\x15\n\x11DEADLINE_EXCEEDED\x10\x04\x12\r\n\tNOT_FOUND\x10\x05\x12\x12\n\x0eALREADY_EXISTS\x10\x06\x12\x15\n\x11PERMISSION_DENIED\x10\x07\x12\x13\n\x0fUNAUTHENTICATED\x10\x10\x12\x16\n\x12RESOURCE_EXHAUSTED\x10\x08\x12\x17\n\x13FAILED_PRECONDITION\x10\t\x12\x0b\n\x07ABORTED\x10\n\x12\x10\n\x0cOUT_OF_RANGE\x10\x0b\x12\x11\n\rUNIMPLEMENTED\x10\x0c\x12\x0c\n\x08INTERNAL\x10\r\x12\x0f\n\x0bUNAVAILABLE\x10\x0e\x12\r\n\tDATA_LOSS\x10\x0fBX\n\x0ecom.google.rpcB\tCodeProtoP\x01Z3google.golang.org/genproto/googleapis/rpc/code;code\xa2\x02\x03RPCb\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.rpc.code_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.rpcB\tCodeProtoP\x01Z3google.golang.org/genproto/googleapis/rpc/code;code\xa2\x02\x03RPC' - _globals['_CODE']._serialized_start = 38 - _globals['_CODE']._serialized_end = 349 \ No newline at end of file diff --git a/src/viam/gen/google/rpc/code_pb2.pyi b/src/viam/gen/google/rpc/code_pb2.pyi deleted file mode 100644 index 24ac2c406d..0000000000 --- a/src/viam/gen/google/rpc/code_pb2.pyi +++ /dev/null @@ -1,113 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from google.protobuf import descriptor as _descriptor -from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -class _Code: - ValueType = _typing.NewType('ValueType', _builtins.int) - V: _TypeAlias = ValueType - -class _CodeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_Code.ValueType], _builtins.type): - DESCRIPTOR: _descriptor.EnumDescriptor - OK: _Code.ValueType - 'Not an error; returned on success.\n\n HTTP Mapping: 200 OK\n ' - CANCELLED: _Code.ValueType - 'The operation was cancelled, typically by the caller.\n\n HTTP Mapping: 499 Client Closed Request\n ' - UNKNOWN: _Code.ValueType - 'Unknown error. For example, this error may be returned when\n a `Status` value received from another address space belongs to\n an error space that is not known in this address space. Also\n errors raised by APIs that do not return enough error information\n may be converted to this error.\n\n HTTP Mapping: 500 Internal Server Error\n ' - INVALID_ARGUMENT: _Code.ValueType - 'The client specified an invalid argument. Note that this differs\n from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments\n that are problematic regardless of the state of the system\n (e.g., a malformed file name).\n\n HTTP Mapping: 400 Bad Request\n ' - DEADLINE_EXCEEDED: _Code.ValueType - 'The deadline expired before the operation could complete. For operations\n that change the state of the system, this error may be returned\n even if the operation has completed successfully. For example, a\n successful response from a server could have been delayed long\n enough for the deadline to expire.\n\n HTTP Mapping: 504 Gateway Timeout\n ' - NOT_FOUND: _Code.ValueType - 'Some requested entity (e.g., file or directory) was not found.\n\n Note to server developers: if a request is denied for an entire class\n of users, such as gradual feature rollout or undocumented allowlist,\n `NOT_FOUND` may be used. If a request is denied for some users within\n a class of users, such as user-based access control, `PERMISSION_DENIED`\n must be used.\n\n HTTP Mapping: 404 Not Found\n ' - ALREADY_EXISTS: _Code.ValueType - 'The entity that a client attempted to create (e.g., file or directory)\n already exists.\n\n HTTP Mapping: 409 Conflict\n ' - PERMISSION_DENIED: _Code.ValueType - 'The caller does not have permission to execute the specified\n operation. `PERMISSION_DENIED` must not be used for rejections\n caused by exhausting some resource (use `RESOURCE_EXHAUSTED`\n instead for those errors). `PERMISSION_DENIED` must not be\n used if the caller can not be identified (use `UNAUTHENTICATED`\n instead for those errors). This error code does not imply the\n request is valid or the requested entity exists or satisfies\n other pre-conditions.\n\n HTTP Mapping: 403 Forbidden\n ' - UNAUTHENTICATED: _Code.ValueType - 'The request does not have valid authentication credentials for the\n operation.\n\n HTTP Mapping: 401 Unauthorized\n ' - RESOURCE_EXHAUSTED: _Code.ValueType - 'Some resource has been exhausted, perhaps a per-user quota, or\n perhaps the entire file system is out of space.\n\n HTTP Mapping: 429 Too Many Requests\n ' - FAILED_PRECONDITION: _Code.ValueType - 'The operation was rejected because the system is not in a state\n required for the operation\'s execution. For example, the directory\n to be deleted is non-empty, an rmdir operation is applied to\n a non-directory, etc.\n\n Service implementors can use the following guidelines to decide\n between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`:\n (a) Use `UNAVAILABLE` if the client can retry just the failing call.\n (b) Use `ABORTED` if the client should retry at a higher level. For\n example, when a client-specified test-and-set fails, indicating the\n client should restart a read-modify-write sequence.\n (c) Use `FAILED_PRECONDITION` if the client should not retry until\n the system state has been explicitly fixed. For example, if an "rmdir"\n fails because the directory is non-empty, `FAILED_PRECONDITION`\n should be returned since the client should not retry unless\n the files are deleted from the directory.\n\n HTTP Mapping: 400 Bad Request\n ' - ABORTED: _Code.ValueType - 'The operation was aborted, typically due to a concurrency issue such as\n a sequencer check failure or transaction abort.\n\n See the guidelines above for deciding between `FAILED_PRECONDITION`,\n `ABORTED`, and `UNAVAILABLE`.\n\n HTTP Mapping: 409 Conflict\n ' - OUT_OF_RANGE: _Code.ValueType - 'The operation was attempted past the valid range. E.g., seeking or\n reading past end-of-file.\n\n Unlike `INVALID_ARGUMENT`, this error indicates a problem that may\n be fixed if the system state changes. For example, a 32-bit file\n system will generate `INVALID_ARGUMENT` if asked to read at an\n offset that is not in the range [0,2^32-1], but it will generate\n `OUT_OF_RANGE` if asked to read from an offset past the current\n file size.\n\n There is a fair bit of overlap between `FAILED_PRECONDITION` and\n `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific\n error) when it applies so that callers who are iterating through\n a space can easily look for an `OUT_OF_RANGE` error to detect when\n they are done.\n\n HTTP Mapping: 400 Bad Request\n ' - UNIMPLEMENTED: _Code.ValueType - 'The operation is not implemented or is not supported/enabled in this\n service.\n\n HTTP Mapping: 501 Not Implemented\n ' - INTERNAL: _Code.ValueType - 'Internal errors. This means that some invariants expected by the\n underlying system have been broken. This error code is reserved\n for serious errors.\n\n HTTP Mapping: 500 Internal Server Error\n ' - UNAVAILABLE: _Code.ValueType - 'The service is currently unavailable. This is most likely a\n transient condition, which can be corrected by retrying with\n a backoff. Note that it is not always safe to retry\n non-idempotent operations.\n\n See the guidelines above for deciding between `FAILED_PRECONDITION`,\n `ABORTED`, and `UNAVAILABLE`.\n\n HTTP Mapping: 503 Service Unavailable\n ' - DATA_LOSS: _Code.ValueType - 'Unrecoverable data loss or corruption.\n\n HTTP Mapping: 500 Internal Server Error\n ' - -class Code(_Code, metaclass=_CodeEnumTypeWrapper): - """The canonical error codes for gRPC APIs. - - - Sometimes multiple error codes may apply. Services should return - the most specific error code that applies. For example, prefer - `OUT_OF_RANGE` over `FAILED_PRECONDITION` if both codes apply. - Similarly prefer `NOT_FOUND` or `ALREADY_EXISTS` over `FAILED_PRECONDITION`. - """ -OK: Code.ValueType -'Not an error; returned on success.\n\nHTTP Mapping: 200 OK\n' -CANCELLED: Code.ValueType -'The operation was cancelled, typically by the caller.\n\nHTTP Mapping: 499 Client Closed Request\n' -UNKNOWN: Code.ValueType -'Unknown error. For example, this error may be returned when\na `Status` value received from another address space belongs to\nan error space that is not known in this address space. Also\nerrors raised by APIs that do not return enough error information\nmay be converted to this error.\n\nHTTP Mapping: 500 Internal Server Error\n' -INVALID_ARGUMENT: Code.ValueType -'The client specified an invalid argument. Note that this differs\nfrom `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments\nthat are problematic regardless of the state of the system\n(e.g., a malformed file name).\n\nHTTP Mapping: 400 Bad Request\n' -DEADLINE_EXCEEDED: Code.ValueType -'The deadline expired before the operation could complete. For operations\nthat change the state of the system, this error may be returned\neven if the operation has completed successfully. For example, a\nsuccessful response from a server could have been delayed long\nenough for the deadline to expire.\n\nHTTP Mapping: 504 Gateway Timeout\n' -NOT_FOUND: Code.ValueType -'Some requested entity (e.g., file or directory) was not found.\n\nNote to server developers: if a request is denied for an entire class\nof users, such as gradual feature rollout or undocumented allowlist,\n`NOT_FOUND` may be used. If a request is denied for some users within\na class of users, such as user-based access control, `PERMISSION_DENIED`\nmust be used.\n\nHTTP Mapping: 404 Not Found\n' -ALREADY_EXISTS: Code.ValueType -'The entity that a client attempted to create (e.g., file or directory)\nalready exists.\n\nHTTP Mapping: 409 Conflict\n' -PERMISSION_DENIED: Code.ValueType -'The caller does not have permission to execute the specified\noperation. `PERMISSION_DENIED` must not be used for rejections\ncaused by exhausting some resource (use `RESOURCE_EXHAUSTED`\ninstead for those errors). `PERMISSION_DENIED` must not be\nused if the caller can not be identified (use `UNAUTHENTICATED`\ninstead for those errors). This error code does not imply the\nrequest is valid or the requested entity exists or satisfies\nother pre-conditions.\n\nHTTP Mapping: 403 Forbidden\n' -UNAUTHENTICATED: Code.ValueType -'The request does not have valid authentication credentials for the\noperation.\n\nHTTP Mapping: 401 Unauthorized\n' -RESOURCE_EXHAUSTED: Code.ValueType -'Some resource has been exhausted, perhaps a per-user quota, or\nperhaps the entire file system is out of space.\n\nHTTP Mapping: 429 Too Many Requests\n' -FAILED_PRECONDITION: Code.ValueType -'The operation was rejected because the system is not in a state\nrequired for the operation\'s execution. For example, the directory\nto be deleted is non-empty, an rmdir operation is applied to\na non-directory, etc.\n\nService implementors can use the following guidelines to decide\nbetween `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`:\n (a) Use `UNAVAILABLE` if the client can retry just the failing call.\n (b) Use `ABORTED` if the client should retry at a higher level. For\n example, when a client-specified test-and-set fails, indicating the\n client should restart a read-modify-write sequence.\n (c) Use `FAILED_PRECONDITION` if the client should not retry until\n the system state has been explicitly fixed. For example, if an "rmdir"\n fails because the directory is non-empty, `FAILED_PRECONDITION`\n should be returned since the client should not retry unless\n the files are deleted from the directory.\n\nHTTP Mapping: 400 Bad Request\n' -ABORTED: Code.ValueType -'The operation was aborted, typically due to a concurrency issue such as\na sequencer check failure or transaction abort.\n\nSee the guidelines above for deciding between `FAILED_PRECONDITION`,\n`ABORTED`, and `UNAVAILABLE`.\n\nHTTP Mapping: 409 Conflict\n' -OUT_OF_RANGE: Code.ValueType -'The operation was attempted past the valid range. E.g., seeking or\nreading past end-of-file.\n\nUnlike `INVALID_ARGUMENT`, this error indicates a problem that may\nbe fixed if the system state changes. For example, a 32-bit file\nsystem will generate `INVALID_ARGUMENT` if asked to read at an\noffset that is not in the range [0,2^32-1], but it will generate\n`OUT_OF_RANGE` if asked to read from an offset past the current\nfile size.\n\nThere is a fair bit of overlap between `FAILED_PRECONDITION` and\n`OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific\nerror) when it applies so that callers who are iterating through\na space can easily look for an `OUT_OF_RANGE` error to detect when\nthey are done.\n\nHTTP Mapping: 400 Bad Request\n' -UNIMPLEMENTED: Code.ValueType -'The operation is not implemented or is not supported/enabled in this\nservice.\n\nHTTP Mapping: 501 Not Implemented\n' -INTERNAL: Code.ValueType -'Internal errors. This means that some invariants expected by the\nunderlying system have been broken. This error code is reserved\nfor serious errors.\n\nHTTP Mapping: 500 Internal Server Error\n' -UNAVAILABLE: Code.ValueType -'The service is currently unavailable. This is most likely a\ntransient condition, which can be corrected by retrying with\na backoff. Note that it is not always safe to retry\nnon-idempotent operations.\n\nSee the guidelines above for deciding between `FAILED_PRECONDITION`,\n`ABORTED`, and `UNAVAILABLE`.\n\nHTTP Mapping: 503 Service Unavailable\n' -DATA_LOSS: Code.ValueType -'Unrecoverable data loss or corruption.\n\nHTTP Mapping: 500 Internal Server Error\n' -Global___Code: _TypeAlias = Code \ No newline at end of file diff --git a/src/viam/gen/google/rpc/context/__init__.py b/src/viam/gen/google/rpc/context/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/rpc/context/attribute_context_grpc.py b/src/viam/gen/google/rpc/context/attribute_context_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/rpc/context/attribute_context_pb2.py b/src/viam/gen/google/rpc/context/attribute_context_pb2.py deleted file mode 100644 index 3bd2492f2c..0000000000 --- a/src/viam/gen/google/rpc/context/attribute_context_pb2.py +++ /dev/null @@ -1,53 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/rpc/context/attribute_context.proto') -_sym_db = _symbol_database.Default() -from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 -from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 -from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*google/rpc/context/attribute_context.proto\x12\x12google.rpc.context\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto"\x81\x14\n\x10AttributeContext\x12A\n\x06origin\x18\x07 \x01(\x0b2).google.rpc.context.AttributeContext.PeerR\x06origin\x12A\n\x06source\x18\x01 \x01(\x0b2).google.rpc.context.AttributeContext.PeerR\x06source\x12K\n\x0bdestination\x18\x02 \x01(\x0b2).google.rpc.context.AttributeContext.PeerR\x0bdestination\x12F\n\x07request\x18\x03 \x01(\x0b2,.google.rpc.context.AttributeContext.RequestR\x07request\x12I\n\x08response\x18\x04 \x01(\x0b2-.google.rpc.context.AttributeContext.ResponseR\x08response\x12I\n\x08resource\x18\x05 \x01(\x0b2-.google.rpc.context.AttributeContext.ResourceR\x08resource\x12:\n\x03api\x18\x06 \x01(\x0b2(.google.rpc.context.AttributeContext.ApiR\x03api\x124\n\nextensions\x18\x08 \x03(\x0b2\x14.google.protobuf.AnyR\nextensions\x1a\xf3\x01\n\x04Peer\x12\x0e\n\x02ip\x18\x01 \x01(\tR\x02ip\x12\x12\n\x04port\x18\x02 \x01(\x03R\x04port\x12M\n\x06labels\x18\x06 \x03(\x0b25.google.rpc.context.AttributeContext.Peer.LabelsEntryR\x06labels\x12\x1c\n\tprincipal\x18\x07 \x01(\tR\tprincipal\x12\x1f\n\x0bregion_code\x18\x08 \x01(\tR\nregionCode\x1a9\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1as\n\x03Api\x12\x18\n\x07service\x18\x01 \x01(\tR\x07service\x12\x1c\n\toperation\x18\x02 \x01(\tR\toperation\x12\x1a\n\x08protocol\x18\x03 \x01(\tR\x08protocol\x12\x18\n\x07version\x18\x04 \x01(\tR\x07version\x1a\xb6\x01\n\x04Auth\x12\x1c\n\tprincipal\x18\x01 \x01(\tR\tprincipal\x12\x1c\n\taudiences\x18\x02 \x03(\tR\taudiences\x12\x1c\n\tpresenter\x18\x03 \x01(\tR\tpresenter\x12/\n\x06claims\x18\x04 \x01(\x0b2\x17.google.protobuf.StructR\x06claims\x12#\n\raccess_levels\x18\x05 \x03(\tR\x0caccessLevels\x1a\xcf\x03\n\x07Request\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n\x06method\x18\x02 \x01(\tR\x06method\x12S\n\x07headers\x18\x03 \x03(\x0b29.google.rpc.context.AttributeContext.Request.HeadersEntryR\x07headers\x12\x12\n\x04path\x18\x04 \x01(\tR\x04path\x12\x12\n\x04host\x18\x05 \x01(\tR\x04host\x12\x16\n\x06scheme\x18\x06 \x01(\tR\x06scheme\x12\x14\n\x05query\x18\x07 \x01(\tR\x05query\x12.\n\x04time\x18\t \x01(\x0b2\x1a.google.protobuf.TimestampR\x04time\x12\x12\n\x04size\x18\n \x01(\x03R\x04size\x12\x1a\n\x08protocol\x18\x0b \x01(\tR\x08protocol\x12\x16\n\x06reason\x18\x0c \x01(\tR\x06reason\x12=\n\x04auth\x18\r \x01(\x0b2).google.rpc.context.AttributeContext.AuthR\x04auth\x1a:\n\x0cHeadersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a\xb8\x02\n\x08Response\x12\x12\n\x04code\x18\x01 \x01(\x03R\x04code\x12\x12\n\x04size\x18\x02 \x01(\x03R\x04size\x12T\n\x07headers\x18\x03 \x03(\x0b2:.google.rpc.context.AttributeContext.Response.HeadersEntryR\x07headers\x12.\n\x04time\x18\x04 \x01(\x0b2\x1a.google.protobuf.TimestampR\x04time\x12B\n\x0fbackend_latency\x18\x05 \x01(\x0b2\x19.google.protobuf.DurationR\x0ebackendLatency\x1a:\n\x0cHeadersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a\x98\x05\n\x08Resource\x12\x18\n\x07service\x18\x01 \x01(\tR\x07service\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n\x04type\x18\x03 \x01(\tR\x04type\x12Q\n\x06labels\x18\x04 \x03(\x0b29.google.rpc.context.AttributeContext.Resource.LabelsEntryR\x06labels\x12\x10\n\x03uid\x18\x05 \x01(\tR\x03uid\x12`\n\x0bannotations\x18\x06 \x03(\x0b2>.google.rpc.context.AttributeContext.Resource.AnnotationsEntryR\x0bannotations\x12!\n\x0cdisplay_name\x18\x07 \x01(\tR\x0bdisplayName\x12;\n\x0bcreate_time\x18\x08 \x01(\x0b2\x1a.google.protobuf.TimestampR\ncreateTime\x12;\n\x0bupdate_time\x18\t \x01(\x0b2\x1a.google.protobuf.TimestampR\nupdateTime\x12;\n\x0bdelete_time\x18\n \x01(\x0b2\x1a.google.protobuf.TimestampR\ndeleteTime\x12\x12\n\x04etag\x18\x0b \x01(\tR\x04etag\x12\x1a\n\x08location\x18\x0c \x01(\tR\x08location\x1a9\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a>\n\x10AnnotationsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x8b\x01\n\x16com.google.rpc.contextB\x15AttributeContextProtoP\x01ZUgoogle.golang.org/genproto/googleapis/rpc/context/attribute_context;attribute_context\xf8\x01\x01b\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.rpc.context.attribute_context_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x16com.google.rpc.contextB\x15AttributeContextProtoP\x01ZUgoogle.golang.org/genproto/googleapis/rpc/context/attribute_context;attribute_context\xf8\x01\x01' - _globals['_ATTRIBUTECONTEXT_PEER_LABELSENTRY']._loaded_options = None - _globals['_ATTRIBUTECONTEXT_PEER_LABELSENTRY']._serialized_options = b'8\x01' - _globals['_ATTRIBUTECONTEXT_REQUEST_HEADERSENTRY']._loaded_options = None - _globals['_ATTRIBUTECONTEXT_REQUEST_HEADERSENTRY']._serialized_options = b'8\x01' - _globals['_ATTRIBUTECONTEXT_RESPONSE_HEADERSENTRY']._loaded_options = None - _globals['_ATTRIBUTECONTEXT_RESPONSE_HEADERSENTRY']._serialized_options = b'8\x01' - _globals['_ATTRIBUTECONTEXT_RESOURCE_LABELSENTRY']._loaded_options = None - _globals['_ATTRIBUTECONTEXT_RESOURCE_LABELSENTRY']._serialized_options = b'8\x01' - _globals['_ATTRIBUTECONTEXT_RESOURCE_ANNOTATIONSENTRY']._loaded_options = None - _globals['_ATTRIBUTECONTEXT_RESOURCE_ANNOTATIONSENTRY']._serialized_options = b'8\x01' - _globals['_ATTRIBUTECONTEXT']._serialized_start = 189 - _globals['_ATTRIBUTECONTEXT']._serialized_end = 2750 - _globals['_ATTRIBUTECONTEXT_PEER']._serialized_start = 757 - _globals['_ATTRIBUTECONTEXT_PEER']._serialized_end = 1000 - _globals['_ATTRIBUTECONTEXT_PEER_LABELSENTRY']._serialized_start = 943 - _globals['_ATTRIBUTECONTEXT_PEER_LABELSENTRY']._serialized_end = 1000 - _globals['_ATTRIBUTECONTEXT_API']._serialized_start = 1002 - _globals['_ATTRIBUTECONTEXT_API']._serialized_end = 1117 - _globals['_ATTRIBUTECONTEXT_AUTH']._serialized_start = 1120 - _globals['_ATTRIBUTECONTEXT_AUTH']._serialized_end = 1302 - _globals['_ATTRIBUTECONTEXT_REQUEST']._serialized_start = 1305 - _globals['_ATTRIBUTECONTEXT_REQUEST']._serialized_end = 1768 - _globals['_ATTRIBUTECONTEXT_REQUEST_HEADERSENTRY']._serialized_start = 1710 - _globals['_ATTRIBUTECONTEXT_REQUEST_HEADERSENTRY']._serialized_end = 1768 - _globals['_ATTRIBUTECONTEXT_RESPONSE']._serialized_start = 1771 - _globals['_ATTRIBUTECONTEXT_RESPONSE']._serialized_end = 2083 - _globals['_ATTRIBUTECONTEXT_RESPONSE_HEADERSENTRY']._serialized_start = 1710 - _globals['_ATTRIBUTECONTEXT_RESPONSE_HEADERSENTRY']._serialized_end = 1768 - _globals['_ATTRIBUTECONTEXT_RESOURCE']._serialized_start = 2086 - _globals['_ATTRIBUTECONTEXT_RESOURCE']._serialized_end = 2750 - _globals['_ATTRIBUTECONTEXT_RESOURCE_LABELSENTRY']._serialized_start = 943 - _globals['_ATTRIBUTECONTEXT_RESOURCE_LABELSENTRY']._serialized_end = 1000 - _globals['_ATTRIBUTECONTEXT_RESOURCE_ANNOTATIONSENTRY']._serialized_start = 2688 - _globals['_ATTRIBUTECONTEXT_RESOURCE_ANNOTATIONSENTRY']._serialized_end = 2750 \ No newline at end of file diff --git a/src/viam/gen/google/rpc/context/attribute_context_pb2.pyi b/src/viam/gen/google/rpc/context/attribute_context_pb2.pyi deleted file mode 100644 index db2a32576e..0000000000 --- a/src/viam/gen/google/rpc/context/attribute_context_pb2.pyi +++ /dev/null @@ -1,526 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from collections import abc as _abc -from google.protobuf import any_pb2 as _any_pb2 -from google.protobuf import descriptor as _descriptor -from google.protobuf import duration_pb2 as _duration_pb2 -from google.protobuf import message as _message -from google.protobuf import struct_pb2 as _struct_pb2 -from google.protobuf import timestamp_pb2 as _timestamp_pb2 -from google.protobuf.internal import containers as _containers -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class AttributeContext(_message.Message): - """This message defines the standard attribute vocabulary for Google APIs. - - An attribute is a piece of metadata that describes an activity on a network - service. For example, the size of an HTTP request, or the status code of - an HTTP response. - - Each attribute has a type and a name, which is logically defined as - a proto message field in `AttributeContext`. The field type becomes the - attribute type, and the field path becomes the attribute name. For example, - the attribute `source.ip` maps to field `AttributeContext.source.ip`. - - This message definition is guaranteed not to have any wire breaking change. - So you can use it directly for passing attributes across different systems. - - NOTE: Different system may generate different subset of attributes. Please - verify the system specification before relying on an attribute generated - a system. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class Peer(_message.Message): - """This message defines attributes for a node that handles a network request. - The node can be either a service or an application that sends, forwards, - or receives the request. Service peers should fill in - `principal` and `labels` as appropriate. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class LabelsEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.str - value: _builtins.str - - def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - IP_FIELD_NUMBER: _builtins.int - PORT_FIELD_NUMBER: _builtins.int - LABELS_FIELD_NUMBER: _builtins.int - PRINCIPAL_FIELD_NUMBER: _builtins.int - REGION_CODE_FIELD_NUMBER: _builtins.int - ip: _builtins.str - 'The IP address of the peer.' - port: _builtins.int - 'The network port of the peer.' - principal: _builtins.str - 'The identity of this peer. Similar to `Request.auth.principal`, but\n relative to the peer instead of the request. For example, the\n identity associated with a load balancer that forwarded the request.\n ' - region_code: _builtins.str - 'The CLDR country/region code associated with the above IP address.\n If the IP address is private, the `region_code` should reflect the\n physical location where this peer is running.\n ' - - @_builtins.property - def labels(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: - """The labels associated with the peer.""" - - def __init__(self, *, ip: _builtins.str=..., port: _builtins.int=..., labels: _abc.Mapping[_builtins.str, _builtins.str] | None=..., principal: _builtins.str=..., region_code: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['ip', b'ip', 'labels', b'labels', 'port', b'port', 'principal', b'principal', 'region_code', b'region_code'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class Api(_message.Message): - """This message defines attributes associated with API operations, such as - a network API request. The terminology is based on the conventions used - by Google APIs, Istio, and OpenAPI. - """ - DESCRIPTOR: _descriptor.Descriptor - SERVICE_FIELD_NUMBER: _builtins.int - OPERATION_FIELD_NUMBER: _builtins.int - PROTOCOL_FIELD_NUMBER: _builtins.int - VERSION_FIELD_NUMBER: _builtins.int - service: _builtins.str - 'The API service name. It is a logical identifier for a networked API,\n such as "pubsub.googleapis.com". The naming syntax depends on the\n API management system being used for handling the request.\n ' - operation: _builtins.str - 'The API operation name. For gRPC requests, it is the fully qualified API\n method name, such as "google.pubsub.v1.Publisher.Publish". For OpenAPI\n requests, it is the `operationId`, such as "getPet".\n ' - protocol: _builtins.str - 'The API protocol used for sending the request, such as "http", "https",\n "grpc", or "internal".\n ' - version: _builtins.str - 'The API version associated with the API operation above, such as "v1" or\n "v1alpha1".\n ' - - def __init__(self, *, service: _builtins.str=..., operation: _builtins.str=..., protocol: _builtins.str=..., version: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['operation', b'operation', 'protocol', b'protocol', 'service', b'service', 'version', b'version'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class Auth(_message.Message): - """This message defines request authentication attributes. Terminology is - based on the JSON Web Token (JWT) standard, but the terms also - correlate to concepts in other standards. - """ - DESCRIPTOR: _descriptor.Descriptor - PRINCIPAL_FIELD_NUMBER: _builtins.int - AUDIENCES_FIELD_NUMBER: _builtins.int - PRESENTER_FIELD_NUMBER: _builtins.int - CLAIMS_FIELD_NUMBER: _builtins.int - ACCESS_LEVELS_FIELD_NUMBER: _builtins.int - principal: _builtins.str - 'The authenticated principal. Reflects the issuer (`iss`) and subject\n (`sub`) claims within a JWT. The issuer and subject should be `/`\n delimited, with `/` percent-encoded within the subject fragment. For\n Google accounts, the principal format is:\n "https://accounts.google.com/{id}"\n ' - presenter: _builtins.str - 'The authorized presenter of the credential. Reflects the optional\n Authorized Presenter (`azp`) claim within a JWT or the\n OAuth client id. For example, a Google Cloud Platform client id looks\n as follows: "123456789012.apps.googleusercontent.com".\n ' - - @_builtins.property - def audiences(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: - """The intended audience(s) for this authentication information. Reflects - the audience (`aud`) claim within a JWT. The audience - value(s) depends on the `issuer`, but typically include one or more of - the following pieces of information: - - * The services intended to receive the credential. For example, - ["https://pubsub.googleapis.com/", "https://storage.googleapis.com/"]. - * A set of service-based scopes. For example, - ["https://www.googleapis.com/auth/cloud-platform"]. - * The client id of an app, such as the Firebase project id for JWTs - from Firebase Auth. - - Consult the documentation for the credential issuer to determine the - information provided. - """ - - @_builtins.property - def claims(self) -> _struct_pb2.Struct: - """Structured claims presented with the credential. JWTs include - `{key: value}` pairs for standard and private claims. The following - is a subset of the standard required and optional claims that would - typically be presented for a Google-based JWT: - - {'iss': 'accounts.google.com', - 'sub': '113289723416554971153', - 'aud': ['123456789012', 'pubsub.googleapis.com'], - 'azp': '123456789012.apps.googleusercontent.com', - 'email': 'jsmith@example.com', - 'iat': 1353601026, - 'exp': 1353604926} - - SAML assertions are similarly specified, but with an identity provider - dependent structure. - """ - - @_builtins.property - def access_levels(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: - """A list of access level resource names that allow resources to be - accessed by authenticated requester. It is part of Secure GCP processing - for the incoming request. An access level string has the format: - "//{api_service_name}/accessPolicies/{policy_id}/accessLevels/{short_name}" - - Example: - "//accesscontextmanager.googleapis.com/accessPolicies/MY_POLICY_ID/accessLevels/MY_LEVEL" - """ - - def __init__(self, *, principal: _builtins.str=..., audiences: _abc.Iterable[_builtins.str] | None=..., presenter: _builtins.str=..., claims: _struct_pb2.Struct | None=..., access_levels: _abc.Iterable[_builtins.str] | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['claims', b'claims'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['access_levels', b'access_levels', 'audiences', b'audiences', 'claims', b'claims', 'presenter', b'presenter', 'principal', b'principal'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class Request(_message.Message): - """This message defines attributes for an HTTP request. If the actual - request is not an HTTP request, the runtime system should try to map - the actual request to an equivalent HTTP request. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class HeadersEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.str - value: _builtins.str - - def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - ID_FIELD_NUMBER: _builtins.int - METHOD_FIELD_NUMBER: _builtins.int - HEADERS_FIELD_NUMBER: _builtins.int - PATH_FIELD_NUMBER: _builtins.int - HOST_FIELD_NUMBER: _builtins.int - SCHEME_FIELD_NUMBER: _builtins.int - QUERY_FIELD_NUMBER: _builtins.int - TIME_FIELD_NUMBER: _builtins.int - SIZE_FIELD_NUMBER: _builtins.int - PROTOCOL_FIELD_NUMBER: _builtins.int - REASON_FIELD_NUMBER: _builtins.int - AUTH_FIELD_NUMBER: _builtins.int - id: _builtins.str - 'The unique ID for a request, which can be propagated to downstream\n systems. The ID should have low probability of collision\n within a single day for a specific service.\n ' - method: _builtins.str - 'The HTTP request method, such as `GET`, `POST`.' - path: _builtins.str - 'The HTTP URL path, excluding the query parameters.' - host: _builtins.str - 'The HTTP request `Host` header value.' - scheme: _builtins.str - 'The HTTP URL scheme, such as `http` and `https`.' - query: _builtins.str - 'The HTTP URL query in the format of `name1=value1&name2=value2`, as it\n appears in the first line of the HTTP request. No decoding is performed.\n ' - size: _builtins.int - 'The HTTP request size in bytes. If unknown, it must be -1.' - protocol: _builtins.str - 'The network protocol used with the request, such as "http/1.1",\n "spdy/3", "h2", "h2c", "webrtc", "tcp", "udp", "quic". See\n https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids\n for details.\n ' - reason: _builtins.str - 'A special parameter for request reason. It is used by security systems\n to associate auditing information with a request.\n ' - - @_builtins.property - def headers(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: - """The HTTP request headers. If multiple headers share the same key, they - must be merged according to the HTTP spec. All header keys must be - lowercased, because HTTP header keys are case-insensitive. - """ - - @_builtins.property - def time(self) -> _timestamp_pb2.Timestamp: - """The timestamp when the `destination` service receives the last byte of - the request. - """ - - @_builtins.property - def auth(self) -> Global___AttributeContext.Auth: - """The request authentication. May be absent for unauthenticated requests. - Derived from the HTTP request `Authorization` header or equivalent. - """ - - def __init__(self, *, id: _builtins.str=..., method: _builtins.str=..., headers: _abc.Mapping[_builtins.str, _builtins.str] | None=..., path: _builtins.str=..., host: _builtins.str=..., scheme: _builtins.str=..., query: _builtins.str=..., time: _timestamp_pb2.Timestamp | None=..., size: _builtins.int=..., protocol: _builtins.str=..., reason: _builtins.str=..., auth: Global___AttributeContext.Auth | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['auth', b'auth', 'time', b'time'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['auth', b'auth', 'headers', b'headers', 'host', b'host', 'id', b'id', 'method', b'method', 'path', b'path', 'protocol', b'protocol', 'query', b'query', 'reason', b'reason', 'scheme', b'scheme', 'size', b'size', 'time', b'time'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class Response(_message.Message): - """This message defines attributes for a typical network response. It - generally models semantics of an HTTP response. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class HeadersEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.str - value: _builtins.str - - def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - CODE_FIELD_NUMBER: _builtins.int - SIZE_FIELD_NUMBER: _builtins.int - HEADERS_FIELD_NUMBER: _builtins.int - TIME_FIELD_NUMBER: _builtins.int - BACKEND_LATENCY_FIELD_NUMBER: _builtins.int - code: _builtins.int - 'The HTTP response status code, such as `200` and `404`.' - size: _builtins.int - 'The HTTP response size in bytes. If unknown, it must be -1.' - - @_builtins.property - def headers(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: - """The HTTP response headers. If multiple headers share the same key, they - must be merged according to HTTP spec. All header keys must be - lowercased, because HTTP header keys are case-insensitive. - """ - - @_builtins.property - def time(self) -> _timestamp_pb2.Timestamp: - """The timestamp when the `destination` service sends the last byte of - the response. - """ - - @_builtins.property - def backend_latency(self) -> _duration_pb2.Duration: - """The amount of time it takes the backend service to fully respond to a - request. Measured from when the destination service starts to send the - request to the backend until when the destination service receives the - complete response from the backend. - """ - - def __init__(self, *, code: _builtins.int=..., size: _builtins.int=..., headers: _abc.Mapping[_builtins.str, _builtins.str] | None=..., time: _timestamp_pb2.Timestamp | None=..., backend_latency: _duration_pb2.Duration | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['backend_latency', b'backend_latency', 'time', b'time'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['backend_latency', b'backend_latency', 'code', b'code', 'headers', b'headers', 'size', b'size', 'time', b'time'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class Resource(_message.Message): - """This message defines core attributes for a resource. A resource is an - addressable (named) entity provided by the destination service. For - example, a file stored on a network storage service. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class LabelsEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.str - value: _builtins.str - - def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - - @_typing.final - class AnnotationsEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.str - value: _builtins.str - - def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - SERVICE_FIELD_NUMBER: _builtins.int - NAME_FIELD_NUMBER: _builtins.int - TYPE_FIELD_NUMBER: _builtins.int - LABELS_FIELD_NUMBER: _builtins.int - UID_FIELD_NUMBER: _builtins.int - ANNOTATIONS_FIELD_NUMBER: _builtins.int - DISPLAY_NAME_FIELD_NUMBER: _builtins.int - CREATE_TIME_FIELD_NUMBER: _builtins.int - UPDATE_TIME_FIELD_NUMBER: _builtins.int - DELETE_TIME_FIELD_NUMBER: _builtins.int - ETAG_FIELD_NUMBER: _builtins.int - LOCATION_FIELD_NUMBER: _builtins.int - service: _builtins.str - 'The name of the service that this resource belongs to, such as\n `pubsub.googleapis.com`. The service may be different from the DNS\n hostname that actually serves the request.\n ' - name: _builtins.str - 'The stable identifier (name) of a resource on the `service`. A resource\n can be logically identified as "//{resource.service}/{resource.name}".\n The differences between a resource name and a URI are:\n\n * Resource name is a logical identifier, independent of network\n protocol and API version. For example,\n `//pubsub.googleapis.com/projects/123/topics/news-feed`.\n * URI often includes protocol and version information, so it can\n be used directly by applications. For example,\n `https://pubsub.googleapis.com/v1/projects/123/topics/news-feed`.\n\n See https://cloud.google.com/apis/design/resource_names for details.\n ' - type: _builtins.str - 'The type of the resource. The syntax is platform-specific because\n different platforms define their resources differently.\n\n For Google APIs, the type format must be "{service}/{kind}", such as\n "pubsub.googleapis.com/Topic".\n ' - uid: _builtins.str - 'The unique identifier of the resource. UID is unique in the time\n and space for this resource within the scope of the service. It is\n typically generated by the server on successful creation of a resource\n and must not be changed. UID is used to uniquely identify resources\n with resource name reuses. This should be a UUID4.\n ' - display_name: _builtins.str - 'Mutable. The display name set by clients. Must be <= 63 characters.' - etag: _builtins.str - 'Output only. An opaque value that uniquely identifies a version or\n generation of a resource. It can be used to confirm that the client\n and server agree on the ordering of a resource being written.\n ' - location: _builtins.str - 'Immutable. The location of the resource. The location encoding is\n specific to the service provider, and new encoding may be introduced\n as the service evolves.\n\n For Google Cloud products, the encoding is what is used by Google Cloud\n APIs, such as `us-east1`, `aws-us-east-1`, and `azure-eastus2`. The\n semantics of `location` is identical to the\n `cloud.googleapis.com/location` label used by some Google Cloud APIs.\n ' - - @_builtins.property - def labels(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: - """The labels or tags on the resource, such as AWS resource tags and - Kubernetes resource labels. - """ - - @_builtins.property - def annotations(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: - """Annotations is an unstructured key-value map stored with a resource that - may be set by external tools to store and retrieve arbitrary metadata. - They are not queryable and should be preserved when modifying objects. - - More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ - """ - - @_builtins.property - def create_time(self) -> _timestamp_pb2.Timestamp: - """Output only. The timestamp when the resource was created. This may - be either the time creation was initiated or when it was completed. - """ - - @_builtins.property - def update_time(self) -> _timestamp_pb2.Timestamp: - """Output only. The timestamp when the resource was last updated. Any - change to the resource made by users must refresh this value. - Changes to a resource made by the service should refresh this value. - """ - - @_builtins.property - def delete_time(self) -> _timestamp_pb2.Timestamp: - """Output only. The timestamp when the resource was deleted. - If the resource is not deleted, this must be empty. - """ - - def __init__(self, *, service: _builtins.str=..., name: _builtins.str=..., type: _builtins.str=..., labels: _abc.Mapping[_builtins.str, _builtins.str] | None=..., uid: _builtins.str=..., annotations: _abc.Mapping[_builtins.str, _builtins.str] | None=..., display_name: _builtins.str=..., create_time: _timestamp_pb2.Timestamp | None=..., update_time: _timestamp_pb2.Timestamp | None=..., delete_time: _timestamp_pb2.Timestamp | None=..., etag: _builtins.str=..., location: _builtins.str=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['create_time', b'create_time', 'delete_time', b'delete_time', 'update_time', b'update_time'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['annotations', b'annotations', 'create_time', b'create_time', 'delete_time', b'delete_time', 'display_name', b'display_name', 'etag', b'etag', 'labels', b'labels', 'location', b'location', 'name', b'name', 'service', b'service', 'type', b'type', 'uid', b'uid', 'update_time', b'update_time'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - ORIGIN_FIELD_NUMBER: _builtins.int - SOURCE_FIELD_NUMBER: _builtins.int - DESTINATION_FIELD_NUMBER: _builtins.int - REQUEST_FIELD_NUMBER: _builtins.int - RESPONSE_FIELD_NUMBER: _builtins.int - RESOURCE_FIELD_NUMBER: _builtins.int - API_FIELD_NUMBER: _builtins.int - EXTENSIONS_FIELD_NUMBER: _builtins.int - - @_builtins.property - def origin(self) -> Global___AttributeContext.Peer: - """The origin of a network activity. In a multi hop network activity, - the origin represents the sender of the first hop. For the first hop, - the `source` and the `origin` must have the same content. - """ - - @_builtins.property - def source(self) -> Global___AttributeContext.Peer: - """The source of a network activity, such as starting a TCP connection. - In a multi hop network activity, the source represents the sender of the - last hop. - """ - - @_builtins.property - def destination(self) -> Global___AttributeContext.Peer: - """The destination of a network activity, such as accepting a TCP connection. - In a multi hop network activity, the destination represents the receiver of - the last hop. - """ - - @_builtins.property - def request(self) -> Global___AttributeContext.Request: - """Represents a network request, such as an HTTP request.""" - - @_builtins.property - def response(self) -> Global___AttributeContext.Response: - """Represents a network response, such as an HTTP response.""" - - @_builtins.property - def resource(self) -> Global___AttributeContext.Resource: - """Represents a target resource that is involved with a network activity. - If multiple resources are involved with an activity, this must be the - primary one. - """ - - @_builtins.property - def api(self) -> Global___AttributeContext.Api: - """Represents an API operation that is involved to a network activity.""" - - @_builtins.property - def extensions(self) -> _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]: - """Supports extensions for advanced use cases, such as logs and metrics.""" - - def __init__(self, *, origin: Global___AttributeContext.Peer | None=..., source: Global___AttributeContext.Peer | None=..., destination: Global___AttributeContext.Peer | None=..., request: Global___AttributeContext.Request | None=..., response: Global___AttributeContext.Response | None=..., resource: Global___AttributeContext.Resource | None=..., api: Global___AttributeContext.Api | None=..., extensions: _abc.Iterable[_any_pb2.Any] | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['api', b'api', 'destination', b'destination', 'origin', b'origin', 'request', b'request', 'resource', b'resource', 'response', b'response', 'source', b'source'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['api', b'api', 'destination', b'destination', 'extensions', b'extensions', 'origin', b'origin', 'request', b'request', 'resource', b'resource', 'response', b'response', 'source', b'source'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___AttributeContext: _TypeAlias = AttributeContext \ No newline at end of file diff --git a/src/viam/gen/google/rpc/error_details_grpc.py b/src/viam/gen/google/rpc/error_details_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/rpc/error_details_pb2.py b/src/viam/gen/google/rpc/error_details_pb2.py deleted file mode 100644 index 5bce0cbd7b..0000000000 --- a/src/viam/gen/google/rpc/error_details_pb2.py +++ /dev/null @@ -1,52 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/rpc/error_details.proto') -_sym_db = _symbol_database.Default() -from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1egoogle/rpc/error_details.proto\x12\ngoogle.rpc\x1a\x1egoogle/protobuf/duration.proto"\xb9\x01\n\tErrorInfo\x12\x16\n\x06reason\x18\x01 \x01(\tR\x06reason\x12\x16\n\x06domain\x18\x02 \x01(\tR\x06domain\x12?\n\x08metadata\x18\x03 \x03(\x0b2#.google.rpc.ErrorInfo.MetadataEntryR\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01"G\n\tRetryInfo\x12:\n\x0bretry_delay\x18\x01 \x01(\x0b2\x19.google.protobuf.DurationR\nretryDelay"H\n\tDebugInfo\x12#\n\rstack_entries\x18\x01 \x03(\tR\x0cstackEntries\x12\x16\n\x06detail\x18\x02 \x01(\tR\x06detail"\x8e\x04\n\x0cQuotaFailure\x12B\n\nviolations\x18\x01 \x03(\x0b2".google.rpc.QuotaFailure.ViolationR\nviolations\x1a\xb9\x03\n\tViolation\x12\x18\n\x07subject\x18\x01 \x01(\tR\x07subject\x12 \n\x0bdescription\x18\x02 \x01(\tR\x0bdescription\x12\x1f\n\x0bapi_service\x18\x03 \x01(\tR\napiService\x12!\n\x0cquota_metric\x18\x04 \x01(\tR\x0bquotaMetric\x12\x19\n\x08quota_id\x18\x05 \x01(\tR\x07quotaId\x12b\n\x10quota_dimensions\x18\x06 \x03(\x0b27.google.rpc.QuotaFailure.Violation.QuotaDimensionsEntryR\x0fquotaDimensions\x12\x1f\n\x0bquota_value\x18\x07 \x01(\x03R\nquotaValue\x121\n\x12future_quota_value\x18\x08 \x01(\x03H\x00R\x10futureQuotaValue\x88\x01\x01\x1aB\n\x14QuotaDimensionsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x15\n\x13_future_quota_value"\xbd\x01\n\x13PreconditionFailure\x12I\n\nviolations\x18\x01 \x03(\x0b2).google.rpc.PreconditionFailure.ViolationR\nviolations\x1a[\n\tViolation\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x18\n\x07subject\x18\x02 \x01(\tR\x07subject\x12 \n\x0bdescription\x18\x03 \x01(\tR\x0bdescription"\x8c\x02\n\nBadRequest\x12P\n\x10field_violations\x18\x01 \x03(\x0b2%.google.rpc.BadRequest.FieldViolationR\x0ffieldViolations\x1a\xab\x01\n\x0eFieldViolation\x12\x14\n\x05field\x18\x01 \x01(\tR\x05field\x12 \n\x0bdescription\x18\x02 \x01(\tR\x0bdescription\x12\x16\n\x06reason\x18\x03 \x01(\tR\x06reason\x12I\n\x11localized_message\x18\x04 \x01(\x0b2\x1c.google.rpc.LocalizedMessageR\x10localizedMessage"O\n\x0bRequestInfo\x12\x1d\n\nrequest_id\x18\x01 \x01(\tR\trequestId\x12!\n\x0cserving_data\x18\x02 \x01(\tR\x0bservingData"\x90\x01\n\x0cResourceInfo\x12#\n\rresource_type\x18\x01 \x01(\tR\x0cresourceType\x12#\n\rresource_name\x18\x02 \x01(\tR\x0cresourceName\x12\x14\n\x05owner\x18\x03 \x01(\tR\x05owner\x12 \n\x0bdescription\x18\x04 \x01(\tR\x0bdescription"o\n\x04Help\x12+\n\x05links\x18\x01 \x03(\x0b2\x15.google.rpc.Help.LinkR\x05links\x1a:\n\x04Link\x12 \n\x0bdescription\x18\x01 \x01(\tR\x0bdescription\x12\x10\n\x03url\x18\x02 \x01(\tR\x03url"D\n\x10LocalizedMessage\x12\x16\n\x06locale\x18\x01 \x01(\tR\x06locale\x12\x18\n\x07message\x18\x02 \x01(\tR\x07messageBl\n\x0ecom.google.rpcB\x11ErrorDetailsProtoP\x01Z?google.golang.org/genproto/googleapis/rpc/errdetails;errdetails\xa2\x02\x03RPCb\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.rpc.error_details_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.rpcB\x11ErrorDetailsProtoP\x01Z?google.golang.org/genproto/googleapis/rpc/errdetails;errdetails\xa2\x02\x03RPC' - _globals['_ERRORINFO_METADATAENTRY']._loaded_options = None - _globals['_ERRORINFO_METADATAENTRY']._serialized_options = b'8\x01' - _globals['_QUOTAFAILURE_VIOLATION_QUOTADIMENSIONSENTRY']._loaded_options = None - _globals['_QUOTAFAILURE_VIOLATION_QUOTADIMENSIONSENTRY']._serialized_options = b'8\x01' - _globals['_ERRORINFO']._serialized_start = 79 - _globals['_ERRORINFO']._serialized_end = 264 - _globals['_ERRORINFO_METADATAENTRY']._serialized_start = 205 - _globals['_ERRORINFO_METADATAENTRY']._serialized_end = 264 - _globals['_RETRYINFO']._serialized_start = 266 - _globals['_RETRYINFO']._serialized_end = 337 - _globals['_DEBUGINFO']._serialized_start = 339 - _globals['_DEBUGINFO']._serialized_end = 411 - _globals['_QUOTAFAILURE']._serialized_start = 414 - _globals['_QUOTAFAILURE']._serialized_end = 940 - _globals['_QUOTAFAILURE_VIOLATION']._serialized_start = 499 - _globals['_QUOTAFAILURE_VIOLATION']._serialized_end = 940 - _globals['_QUOTAFAILURE_VIOLATION_QUOTADIMENSIONSENTRY']._serialized_start = 851 - _globals['_QUOTAFAILURE_VIOLATION_QUOTADIMENSIONSENTRY']._serialized_end = 917 - _globals['_PRECONDITIONFAILURE']._serialized_start = 943 - _globals['_PRECONDITIONFAILURE']._serialized_end = 1132 - _globals['_PRECONDITIONFAILURE_VIOLATION']._serialized_start = 1041 - _globals['_PRECONDITIONFAILURE_VIOLATION']._serialized_end = 1132 - _globals['_BADREQUEST']._serialized_start = 1135 - _globals['_BADREQUEST']._serialized_end = 1403 - _globals['_BADREQUEST_FIELDVIOLATION']._serialized_start = 1232 - _globals['_BADREQUEST_FIELDVIOLATION']._serialized_end = 1403 - _globals['_REQUESTINFO']._serialized_start = 1405 - _globals['_REQUESTINFO']._serialized_end = 1484 - _globals['_RESOURCEINFO']._serialized_start = 1487 - _globals['_RESOURCEINFO']._serialized_end = 1631 - _globals['_HELP']._serialized_start = 1633 - _globals['_HELP']._serialized_end = 1744 - _globals['_HELP_LINK']._serialized_start = 1686 - _globals['_HELP_LINK']._serialized_end = 1744 - _globals['_LOCALIZEDMESSAGE']._serialized_start = 1746 - _globals['_LOCALIZEDMESSAGE']._serialized_end = 1814 \ No newline at end of file diff --git a/src/viam/gen/google/rpc/error_details_pb2.pyi b/src/viam/gen/google/rpc/error_details_pb2.pyi deleted file mode 100644 index 4e0862af4e..0000000000 --- a/src/viam/gen/google/rpc/error_details_pb2.pyi +++ /dev/null @@ -1,471 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from collections import abc as _abc -from google.protobuf import descriptor as _descriptor -from google.protobuf import duration_pb2 as _duration_pb2 -from google.protobuf import message as _message -from google.protobuf.internal import containers as _containers -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class ErrorInfo(_message.Message): - """Describes the cause of the error with structured details. - - Example of an error when contacting the "pubsub.googleapis.com" API when it - is not enabled: - - { "reason": "API_DISABLED" - "domain": "googleapis.com" - "metadata": { - "resource": "projects/123", - "service": "pubsub.googleapis.com" - } - } - - This response indicates that the pubsub.googleapis.com API is not enabled. - - Example of an error that is returned when attempting to create a Spanner - instance in a region that is out of stock: - - { "reason": "STOCKOUT" - "domain": "spanner.googleapis.com", - "metadata": { - "availableRegions": "us-central1,us-east2" - } - } - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class MetadataEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.str - value: _builtins.str - - def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - REASON_FIELD_NUMBER: _builtins.int - DOMAIN_FIELD_NUMBER: _builtins.int - METADATA_FIELD_NUMBER: _builtins.int - reason: _builtins.str - 'The reason of the error. This is a constant value that identifies the\n proximate cause of the error. Error reasons are unique within a particular\n domain of errors. This should be at most 63 characters and match a\n regular expression of `[A-Z][A-Z0-9_]+[A-Z0-9]`, which represents\n UPPER_SNAKE_CASE.\n ' - domain: _builtins.str - 'The logical grouping to which the "reason" belongs. The error domain\n is typically the registered service name of the tool or product that\n generates the error. Example: "pubsub.googleapis.com". If the error is\n generated by some common infrastructure, the error domain must be a\n globally unique value that identifies the infrastructure. For Google API\n infrastructure, the error domain is "googleapis.com".\n ' - - @_builtins.property - def metadata(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: - """Additional structured details about this error. - - Keys must match a regular expression of `[a-z][a-zA-Z0-9-_]+` but should - ideally be lowerCamelCase. Also, they must be limited to 64 characters in - length. When identifying the current value of an exceeded limit, the units - should be contained in the key, not the value. For example, rather than - `{"instanceLimit": "100/request"}`, should be returned as, - `{"instanceLimitPerRequest": "100"}`, if the client exceeds the number of - instances that can be created in a single (batch) request. - """ - - def __init__(self, *, reason: _builtins.str=..., domain: _builtins.str=..., metadata: _abc.Mapping[_builtins.str, _builtins.str] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['domain', b'domain', 'metadata', b'metadata', 'reason', b'reason'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___ErrorInfo: _TypeAlias = ErrorInfo - -@_typing.final -class RetryInfo(_message.Message): - """Describes when the clients can retry a failed request. Clients could ignore - the recommendation here or retry when this information is missing from error - responses. - - It's always recommended that clients should use exponential backoff when - retrying. - - Clients should wait until `retry_delay` amount of time has passed since - receiving the error response before retrying. If retrying requests also - fail, clients should use an exponential backoff scheme to gradually increase - the delay between retries based on `retry_delay`, until either a maximum - number of retries have been reached or a maximum retry delay cap has been - reached. - """ - DESCRIPTOR: _descriptor.Descriptor - RETRY_DELAY_FIELD_NUMBER: _builtins.int - - @_builtins.property - def retry_delay(self) -> _duration_pb2.Duration: - """Clients should wait at least this long between retrying the same request.""" - - def __init__(self, *, retry_delay: _duration_pb2.Duration | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['retry_delay', b'retry_delay'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['retry_delay', b'retry_delay'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___RetryInfo: _TypeAlias = RetryInfo - -@_typing.final -class DebugInfo(_message.Message): - """Describes additional debugging info.""" - DESCRIPTOR: _descriptor.Descriptor - STACK_ENTRIES_FIELD_NUMBER: _builtins.int - DETAIL_FIELD_NUMBER: _builtins.int - detail: _builtins.str - 'Additional debugging information provided by the server.' - - @_builtins.property - def stack_entries(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: - """The stack trace entries indicating where the error occurred.""" - - def __init__(self, *, stack_entries: _abc.Iterable[_builtins.str] | None=..., detail: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['detail', b'detail', 'stack_entries', b'stack_entries'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___DebugInfo: _TypeAlias = DebugInfo - -@_typing.final -class QuotaFailure(_message.Message): - """Describes how a quota check failed. - - For example if a daily limit was exceeded for the calling project, - a service could respond with a QuotaFailure detail containing the project - id and the description of the quota limit that was exceeded. If the - calling project hasn't enabled the service in the developer console, then - a service could respond with the project id and set `service_disabled` - to true. - - Also see RetryInfo and Help types for other details about handling a - quota failure. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class Violation(_message.Message): - """A message type used to describe a single quota violation. For example, a - daily quota or a custom quota that was exceeded. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class QuotaDimensionsEntry(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - KEY_FIELD_NUMBER: _builtins.int - VALUE_FIELD_NUMBER: _builtins.int - key: _builtins.str - value: _builtins.str - - def __init__(self, *, key: _builtins.str=..., value: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['key', b'key', 'value', b'value'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - SUBJECT_FIELD_NUMBER: _builtins.int - DESCRIPTION_FIELD_NUMBER: _builtins.int - API_SERVICE_FIELD_NUMBER: _builtins.int - QUOTA_METRIC_FIELD_NUMBER: _builtins.int - QUOTA_ID_FIELD_NUMBER: _builtins.int - QUOTA_DIMENSIONS_FIELD_NUMBER: _builtins.int - QUOTA_VALUE_FIELD_NUMBER: _builtins.int - FUTURE_QUOTA_VALUE_FIELD_NUMBER: _builtins.int - subject: _builtins.str - 'The subject on which the quota check failed.\n For example, "clientip:" or "project:".\n ' - description: _builtins.str - 'A description of how the quota check failed. Clients can use this\n description to find more about the quota configuration in the service\'s\n public documentation, or find the relevant quota limit to adjust through\n developer console.\n\n For example: "Service disabled" or "Daily Limit for read operations\n exceeded".\n ' - api_service: _builtins.str - 'The API Service from which the `QuotaFailure.Violation` orginates. In\n some cases, Quota issues originate from an API Service other than the one\n that was called. In other words, a dependency of the called API Service\n could be the cause of the `QuotaFailure`, and this field would have the\n dependency API service name.\n\n For example, if the called API is Kubernetes Engine API\n (container.googleapis.com), and a quota violation occurs in the\n Kubernetes Engine API itself, this field would be\n "container.googleapis.com". On the other hand, if the quota violation\n occurs when the Kubernetes Engine API creates VMs in the Compute Engine\n API (compute.googleapis.com), this field would be\n "compute.googleapis.com".\n ' - quota_metric: _builtins.str - 'The metric of the violated quota. A quota metric is a named counter to\n measure usage, such as API requests or CPUs. When an activity occurs in a\n service, such as Virtual Machine allocation, one or more quota metrics\n may be affected.\n\n For example, "compute.googleapis.com/cpus_per_vm_family",\n "storage.googleapis.com/internet_egress_bandwidth".\n ' - quota_id: _builtins.str - 'The id of the violated quota. Also know as "limit name", this is the\n unique identifier of a quota in the context of an API service.\n\n For example, "CPUS-PER-VM-FAMILY-per-project-region".\n ' - quota_value: _builtins.int - 'The enforced quota value at the time of the `QuotaFailure`.\n\n For example, if the enforced quota value at the time of the\n `QuotaFailure` on the number of CPUs is "10", then the value of this\n field would reflect this quantity.\n ' - future_quota_value: _builtins.int - 'The new quota value being rolled out at the time of the violation. At the\n completion of the rollout, this value will be enforced in place of\n quota_value. If no rollout is in progress at the time of the violation,\n this field is not set.\n\n For example, if at the time of the violation a rollout is in progress\n changing the number of CPUs quota from 10 to 20, 20 would be the value of\n this field.\n ' - - @_builtins.property - def quota_dimensions(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: - """The dimensions of the violated quota. Every non-global quota is enforced - on a set of dimensions. While quota metric defines what to count, the - dimensions specify for what aspects the counter should be increased. - - For example, the quota "CPUs per region per VM family" enforces a limit - on the metric "compute.googleapis.com/cpus_per_vm_family" on dimensions - "region" and "vm_family". And if the violation occurred in region - "us-central1" and for VM family "n1", the quota_dimensions would be, - - { - "region": "us-central1", - "vm_family": "n1", - } - - When a quota is enforced globally, the quota_dimensions would always be - empty. - """ - - def __init__(self, *, subject: _builtins.str=..., description: _builtins.str=..., api_service: _builtins.str=..., quota_metric: _builtins.str=..., quota_id: _builtins.str=..., quota_dimensions: _abc.Mapping[_builtins.str, _builtins.str] | None=..., quota_value: _builtins.int=..., future_quota_value: _builtins.int | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['_future_quota_value', b'_future_quota_value', 'future_quota_value', b'future_quota_value'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['_future_quota_value', b'_future_quota_value', 'api_service', b'api_service', 'description', b'description', 'future_quota_value', b'future_quota_value', 'quota_dimensions', b'quota_dimensions', 'quota_id', b'quota_id', 'quota_metric', b'quota_metric', 'quota_value', b'quota_value', 'subject', b'subject'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - _WhichOneofReturnType__future_quota_value: _TypeAlias = _typing.Literal['future_quota_value'] - _WhichOneofArgType__future_quota_value: _TypeAlias = _typing.Literal['_future_quota_value', b'_future_quota_value'] - - def WhichOneof(self, oneof_group: _WhichOneofArgType__future_quota_value) -> _WhichOneofReturnType__future_quota_value | None: - ... - VIOLATIONS_FIELD_NUMBER: _builtins.int - - @_builtins.property - def violations(self) -> _containers.RepeatedCompositeFieldContainer[Global___QuotaFailure.Violation]: - """Describes all quota violations.""" - - def __init__(self, *, violations: _abc.Iterable[Global___QuotaFailure.Violation] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['violations', b'violations'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___QuotaFailure: _TypeAlias = QuotaFailure - -@_typing.final -class PreconditionFailure(_message.Message): - """Describes what preconditions have failed. - - For example, if an RPC failed because it required the Terms of Service to be - acknowledged, it could list the terms of service violation in the - PreconditionFailure message. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class Violation(_message.Message): - """A message type used to describe a single precondition failure.""" - DESCRIPTOR: _descriptor.Descriptor - TYPE_FIELD_NUMBER: _builtins.int - SUBJECT_FIELD_NUMBER: _builtins.int - DESCRIPTION_FIELD_NUMBER: _builtins.int - type: _builtins.str - 'The type of PreconditionFailure. We recommend using a service-specific\n enum type to define the supported precondition violation subjects. For\n example, "TOS" for "Terms of Service violation".\n ' - subject: _builtins.str - 'The subject, relative to the type, that failed.\n For example, "google.com/cloud" relative to the "TOS" type would indicate\n which terms of service is being referenced.\n ' - description: _builtins.str - 'A description of how the precondition failed. Developers can use this\n description to understand how to fix the failure.\n\n For example: "Terms of service not accepted".\n ' - - def __init__(self, *, type: _builtins.str=..., subject: _builtins.str=..., description: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['description', b'description', 'subject', b'subject', 'type', b'type'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - VIOLATIONS_FIELD_NUMBER: _builtins.int - - @_builtins.property - def violations(self) -> _containers.RepeatedCompositeFieldContainer[Global___PreconditionFailure.Violation]: - """Describes all precondition violations.""" - - def __init__(self, *, violations: _abc.Iterable[Global___PreconditionFailure.Violation] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['violations', b'violations'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___PreconditionFailure: _TypeAlias = PreconditionFailure - -@_typing.final -class BadRequest(_message.Message): - """Describes violations in a client request. This error type focuses on the - syntactic aspects of the request. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class FieldViolation(_message.Message): - """A message type used to describe a single bad request field.""" - DESCRIPTOR: _descriptor.Descriptor - FIELD_FIELD_NUMBER: _builtins.int - DESCRIPTION_FIELD_NUMBER: _builtins.int - REASON_FIELD_NUMBER: _builtins.int - LOCALIZED_MESSAGE_FIELD_NUMBER: _builtins.int - field: _builtins.str - 'A path that leads to a field in the request body. The value will be a\n sequence of dot-separated identifiers that identify a protocol buffer\n field.\n\n Consider the following:\n\n message CreateContactRequest {\n message EmailAddress {\n enum Type {\n TYPE_UNSPECIFIED = 0;\n HOME = 1;\n WORK = 2;\n }\n\n optional string email = 1;\n repeated EmailType type = 2;\n }\n\n string full_name = 1;\n repeated EmailAddress email_addresses = 2;\n }\n\n In this example, in proto `field` could take one of the following values:\n\n * `full_name` for a violation in the `full_name` value\n * `email_addresses[1].email` for a violation in the `email` field of the\n first `email_addresses` message\n * `email_addresses[3].type[2]` for a violation in the second `type`\n value in the third `email_addresses` message.\n\n In JSON, the same values are represented as:\n\n * `fullName` for a violation in the `fullName` value\n * `emailAddresses[1].email` for a violation in the `email` field of the\n first `emailAddresses` message\n * `emailAddresses[3].type[2]` for a violation in the second `type`\n value in the third `emailAddresses` message.\n ' - description: _builtins.str - 'A description of why the request element is bad.' - reason: _builtins.str - 'The reason of the field-level error. This is a constant value that\n identifies the proximate cause of the field-level error. It should\n uniquely identify the type of the FieldViolation within the scope of the\n google.rpc.ErrorInfo.domain. This should be at most 63\n characters and match a regular expression of `[A-Z][A-Z0-9_]+[A-Z0-9]`,\n which represents UPPER_SNAKE_CASE.\n ' - - @_builtins.property - def localized_message(self) -> Global___LocalizedMessage: - """Provides a localized error message for field-level errors that is safe to - return to the API consumer. - """ - - def __init__(self, *, field: _builtins.str=..., description: _builtins.str=..., reason: _builtins.str=..., localized_message: Global___LocalizedMessage | None=...) -> None: - ... - _HasFieldArgType: _TypeAlias = _typing.Literal['localized_message', b'localized_message'] - - def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['description', b'description', 'field', b'field', 'localized_message', b'localized_message', 'reason', b'reason'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - FIELD_VIOLATIONS_FIELD_NUMBER: _builtins.int - - @_builtins.property - def field_violations(self) -> _containers.RepeatedCompositeFieldContainer[Global___BadRequest.FieldViolation]: - """Describes all violations in a client request.""" - - def __init__(self, *, field_violations: _abc.Iterable[Global___BadRequest.FieldViolation] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['field_violations', b'field_violations'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___BadRequest: _TypeAlias = BadRequest - -@_typing.final -class RequestInfo(_message.Message): - """Contains metadata about the request that clients can attach when filing a bug - or providing other forms of feedback. - """ - DESCRIPTOR: _descriptor.Descriptor - REQUEST_ID_FIELD_NUMBER: _builtins.int - SERVING_DATA_FIELD_NUMBER: _builtins.int - request_id: _builtins.str - "An opaque string that should only be interpreted by the service generating\n it. For example, it can be used to identify requests in the service's logs.\n " - serving_data: _builtins.str - 'Any data that was used to serve this request. For example, an encrypted\n stack trace that can be sent back to the service provider for debugging.\n ' - - def __init__(self, *, request_id: _builtins.str=..., serving_data: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['request_id', b'request_id', 'serving_data', b'serving_data'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___RequestInfo: _TypeAlias = RequestInfo - -@_typing.final -class ResourceInfo(_message.Message): - """Describes the resource that is being accessed.""" - DESCRIPTOR: _descriptor.Descriptor - RESOURCE_TYPE_FIELD_NUMBER: _builtins.int - RESOURCE_NAME_FIELD_NUMBER: _builtins.int - OWNER_FIELD_NUMBER: _builtins.int - DESCRIPTION_FIELD_NUMBER: _builtins.int - resource_type: _builtins.str - 'A name for the type of resource being accessed, e.g. "sql table",\n "cloud storage bucket", "file", "Google calendar"; or the type URL\n of the resource: e.g. "type.googleapis.com/google.pubsub.v1.Topic".\n ' - resource_name: _builtins.str - 'The name of the resource being accessed. For example, a shared calendar\n name: "example.com_4fghdhgsrgh@group.calendar.google.com", if the current\n error is\n [google.rpc.Code.PERMISSION_DENIED][google.rpc.Code.PERMISSION_DENIED].\n ' - owner: _builtins.str - 'The owner of the resource (optional).\n For example, "user:" or "project:".\n ' - description: _builtins.str - 'Describes what error is encountered when accessing this resource.\n For example, updating a cloud project may require the `writer` permission\n on the developer console project.\n ' - - def __init__(self, *, resource_type: _builtins.str=..., resource_name: _builtins.str=..., owner: _builtins.str=..., description: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['description', b'description', 'owner', b'owner', 'resource_name', b'resource_name', 'resource_type', b'resource_type'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___ResourceInfo: _TypeAlias = ResourceInfo - -@_typing.final -class Help(_message.Message): - """Provides links to documentation or for performing an out of band action. - - For example, if a quota check failed with an error indicating the calling - project hasn't enabled the accessed service, this can contain a URL pointing - directly to the right place in the developer console to flip the bit. - """ - DESCRIPTOR: _descriptor.Descriptor - - @_typing.final - class Link(_message.Message): - """Describes a URL link.""" - DESCRIPTOR: _descriptor.Descriptor - DESCRIPTION_FIELD_NUMBER: _builtins.int - URL_FIELD_NUMBER: _builtins.int - description: _builtins.str - 'Describes what the link offers.' - url: _builtins.str - 'The URL of the link.' - - def __init__(self, *, description: _builtins.str=..., url: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['description', b'description', 'url', b'url'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... - LINKS_FIELD_NUMBER: _builtins.int - - @_builtins.property - def links(self) -> _containers.RepeatedCompositeFieldContainer[Global___Help.Link]: - """URL(s) pointing to additional information on handling the current error.""" - - def __init__(self, *, links: _abc.Iterable[Global___Help.Link] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['links', b'links'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___Help: _TypeAlias = Help - -@_typing.final -class LocalizedMessage(_message.Message): - """Provides a localized error message that is safe to return to the user - which can be attached to an RPC error. - """ - DESCRIPTOR: _descriptor.Descriptor - LOCALE_FIELD_NUMBER: _builtins.int - MESSAGE_FIELD_NUMBER: _builtins.int - locale: _builtins.str - 'The locale used following the specification defined at\n https://www.rfc-editor.org/rfc/bcp/bcp47.txt.\n Examples are: "en-US", "fr-CH", "es-MX"\n ' - message: _builtins.str - 'The localized error message in the above locale.' - - def __init__(self, *, locale: _builtins.str=..., message: _builtins.str=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['locale', b'locale', 'message', b'message'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___LocalizedMessage: _TypeAlias = LocalizedMessage \ No newline at end of file diff --git a/src/viam/gen/google/rpc/status_grpc.py b/src/viam/gen/google/rpc/status_grpc.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/viam/gen/google/rpc/status_pb2.py b/src/viam/gen/google/rpc/status_pb2.py deleted file mode 100644 index 77058b6791..0000000000 --- a/src/viam/gen/google/rpc/status_pb2.py +++ /dev/null @@ -1,18 +0,0 @@ -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'google/rpc/status.proto') -_sym_db = _symbol_database.Default() -from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17google/rpc/status.proto\x12\ngoogle.rpc\x1a\x19google/protobuf/any.proto"f\n\x06Status\x12\x12\n\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12.\n\x07details\x18\x03 \x03(\x0b2\x14.google.protobuf.AnyR\x07detailsBa\n\x0ecom.google.rpcB\x0bStatusProtoP\x01Z7google.golang.org/genproto/googleapis/rpc/status;status\xf8\x01\x01\xa2\x02\x03RPCb\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.rpc.status_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\x0ecom.google.rpcB\x0bStatusProtoP\x01Z7google.golang.org/genproto/googleapis/rpc/status;status\xf8\x01\x01\xa2\x02\x03RPC' - _globals['_STATUS']._serialized_start = 66 - _globals['_STATUS']._serialized_end = 168 \ No newline at end of file diff --git a/src/viam/gen/google/rpc/status_pb2.pyi b/src/viam/gen/google/rpc/status_pb2.pyi deleted file mode 100644 index b970cf4676..0000000000 --- a/src/viam/gen/google/rpc/status_pb2.pyi +++ /dev/null @@ -1,63 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2025 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -from collections import abc as _abc -from google.protobuf import any_pb2 as _any_pb2 -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf.internal import containers as _containers -import builtins as _builtins -import sys -import typing as _typing -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class Status(_message.Message): - """The `Status` type defines a logical error model that is suitable for - different programming environments, including REST APIs and RPC APIs. It is - used by [gRPC](https://github.com/grpc). Each `Status` message contains - three pieces of data: error code, error message, and error details. - - You can find out more about this error model and how to work with it in the - [API Design Guide](https://cloud.google.com/apis/design/errors). - """ - DESCRIPTOR: _descriptor.Descriptor - CODE_FIELD_NUMBER: _builtins.int - MESSAGE_FIELD_NUMBER: _builtins.int - DETAILS_FIELD_NUMBER: _builtins.int - code: _builtins.int - 'The status code, which should be an enum value of\n [google.rpc.Code][google.rpc.Code].\n ' - message: _builtins.str - 'A developer-facing error message, which should be in English. Any\n user-facing error message should be localized and sent in the\n [google.rpc.Status.details][google.rpc.Status.details] field, or localized\n by the client.\n ' - - @_builtins.property - def details(self) -> _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]: - """A list of messages that carry the error details. There is a common set of - message types for APIs to use. - """ - - def __init__(self, *, code: _builtins.int=..., message: _builtins.str=..., details: _abc.Iterable[_any_pb2.Any] | None=...) -> None: - ... - _ClearFieldArgType: _TypeAlias = _typing.Literal['code', b'code', 'details', b'details', 'message', b'message'] - - def ClearField(self, field_name: _ClearFieldArgType) -> None: - ... -Global___Status: _TypeAlias = Status \ No newline at end of file diff --git a/src/viam/gen/module/v1/module_pb2.py b/src/viam/gen/module/v1/module_pb2.py index c35fb5045d..034b8ecaf0 100644 --- a/src/viam/gen/module/v1/module_pb2.py +++ b/src/viam/gen/module/v1/module_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'module/v1/module.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'module/v1/module.proto') _sym_db = _symbol_database.Default() from ...app.v1 import robot_pb2 as app_dot_v1_dot_robot__pb2 from ...robot.v1 import robot_pb2 as robot_dot_v1_dot_robot__pb2 diff --git a/src/viam/gen/opentelemetry/proto/common/v1/common_pb2.py b/src/viam/gen/opentelemetry/proto/common/v1/common_pb2.py index 5a1a3683e5..68a49a1ebc 100644 --- a/src/viam/gen/opentelemetry/proto/common/v1/common_pb2.py +++ b/src/viam/gen/opentelemetry/proto/common/v1/common_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'opentelemetry/proto/common/v1/common.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'opentelemetry/proto/common/v1/common.proto') _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*opentelemetry/proto/common/v1/common.proto\x12\x1dopentelemetry.proto.common.v1"\xe0\x02\n\x08AnyValue\x12#\n\x0cstring_value\x18\x01 \x01(\tH\x00R\x0bstringValue\x12\x1f\n\nbool_value\x18\x02 \x01(\x08H\x00R\tboolValue\x12\x1d\n\tint_value\x18\x03 \x01(\x03H\x00R\x08intValue\x12#\n\x0cdouble_value\x18\x04 \x01(\x01H\x00R\x0bdoubleValue\x12L\n\x0barray_value\x18\x05 \x01(\x0b2).opentelemetry.proto.common.v1.ArrayValueH\x00R\narrayValue\x12P\n\x0ckvlist_value\x18\x06 \x01(\x0b2+.opentelemetry.proto.common.v1.KeyValueListH\x00R\x0bkvlistValue\x12!\n\x0bbytes_value\x18\x07 \x01(\x0cH\x00R\nbytesValueB\x07\n\x05value"M\n\nArrayValue\x12?\n\x06values\x18\x01 \x03(\x0b2\'.opentelemetry.proto.common.v1.AnyValueR\x06values"O\n\x0cKeyValueList\x12?\n\x06values\x18\x01 \x03(\x0b2\'.opentelemetry.proto.common.v1.KeyValueR\x06values"[\n\x08KeyValue\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12=\n\x05value\x18\x02 \x01(\x0b2\'.opentelemetry.proto.common.v1.AnyValueR\x05value"\xc7\x01\n\x14InstrumentationScope\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version\x12G\n\nattributes\x18\x03 \x03(\x0b2\'.opentelemetry.proto.common.v1.KeyValueR\nattributes\x128\n\x18dropped_attributes_count\x18\x04 \x01(\rR\x16droppedAttributesCount"\x82\x01\n\tEntityRef\x12\x1d\n\nschema_url\x18\x01 \x01(\tR\tschemaUrl\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12\x17\n\x07id_keys\x18\x03 \x03(\tR\x06idKeys\x12)\n\x10description_keys\x18\x04 \x03(\tR\x0fdescriptionKeysB{\n io.opentelemetry.proto.common.v1B\x0bCommonProtoP\x01Z(go.opentelemetry.io/proto/otlp/common/v1\xaa\x02\x1dOpenTelemetry.Proto.Common.V1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/opentelemetry/proto/resource/v1/resource_pb2.py b/src/viam/gen/opentelemetry/proto/resource/v1/resource_pb2.py index af956527e4..0b7923c826 100644 --- a/src/viam/gen/opentelemetry/proto/resource/v1/resource_pb2.py +++ b/src/viam/gen/opentelemetry/proto/resource/v1/resource_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'opentelemetry/proto/resource/v1/resource.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'opentelemetry/proto/resource/v1/resource.proto') _sym_db = _symbol_database.Default() from .....opentelemetry.proto.common.v1 import common_pb2 as opentelemetry_dot_proto_dot_common_dot_v1_dot_common__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.opentelemetry/proto/resource/v1/resource.proto\x12\x1fopentelemetry.proto.resource.v1\x1a*opentelemetry/proto/common/v1/common.proto"\xd8\x01\n\x08Resource\x12G\n\nattributes\x18\x01 \x03(\x0b2\'.opentelemetry.proto.common.v1.KeyValueR\nattributes\x128\n\x18dropped_attributes_count\x18\x02 \x01(\rR\x16droppedAttributesCount\x12I\n\x0bentity_refs\x18\x03 \x03(\x0b2(.opentelemetry.proto.common.v1.EntityRefR\nentityRefsB\x83\x01\n"io.opentelemetry.proto.resource.v1B\rResourceProtoP\x01Z*go.opentelemetry.io/proto/otlp/resource/v1\xaa\x02\x1fOpenTelemetry.Proto.Resource.V1b\x06proto3') diff --git a/src/viam/gen/opentelemetry/proto/trace/v1/trace_pb2.py b/src/viam/gen/opentelemetry/proto/trace/v1/trace_pb2.py index 2dfe1a289e..fcdef2ac4f 100644 --- a/src/viam/gen/opentelemetry/proto/trace/v1/trace_pb2.py +++ b/src/viam/gen/opentelemetry/proto/trace/v1/trace_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'opentelemetry/proto/trace/v1/trace.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'opentelemetry/proto/trace/v1/trace.proto') _sym_db = _symbol_database.Default() from .....opentelemetry.proto.common.v1 import common_pb2 as opentelemetry_dot_proto_dot_common_dot_v1_dot_common__pb2 from .....opentelemetry.proto.resource.v1 import resource_pb2 as opentelemetry_dot_proto_dot_resource_dot_v1_dot_resource__pb2 diff --git a/src/viam/gen/proto/rpc/examples/echo/v1/echo_grpc.py b/src/viam/gen/proto/rpc/examples/echo/v1/echo_grpc.py index 1a57ae16ff..0b6c22512b 100644 --- a/src/viam/gen/proto/rpc/examples/echo/v1/echo_grpc.py +++ b/src/viam/gen/proto/rpc/examples/echo/v1/echo_grpc.py @@ -5,7 +5,7 @@ import grpclib.exceptions if typing.TYPE_CHECKING: import grpclib.server -from ...... import google +import google.api.annotations_pb2 from ...... import proto class EchoServiceBase(abc.ABC): diff --git a/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py b/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py index b0fb119c8c..a7a30b6a40 100644 --- a/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py +++ b/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py @@ -4,9 +4,9 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'proto/rpc/examples/echo/v1/echo.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'proto/rpc/examples/echo/v1/echo.proto') _sym_db = _symbol_database.Default() -from ......google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%proto/rpc/examples/echo/v1/echo.proto\x12\x1aproto.rpc.examples.echo.v1\x1a\x1cgoogle/api/annotations.proto"\'\n\x0bEchoRequest\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"(\n\x0cEchoResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"/\n\x13EchoMultipleRequest\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"0\n\x14EchoMultipleResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"+\n\x0fEchoBiDiRequest\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message",\n\x10EchoBiDiResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message2\xf4\x02\n\x0bEchoService\x12\x80\x01\n\x04Echo\x12\'.proto.rpc.examples.echo.v1.EchoRequest\x1a(.proto.rpc.examples.echo.v1.EchoResponse"%\x82\xd3\xe4\x93\x02\x1f"\x1a/rpc/examples/echo/v1/echo:\x01*\x12u\n\x0cEchoMultiple\x12/.proto.rpc.examples.echo.v1.EchoMultipleRequest\x1a0.proto.rpc.examples.echo.v1.EchoMultipleResponse"\x000\x01\x12k\n\x08EchoBiDi\x12+.proto.rpc.examples.echo.v1.EchoBiDiRequest\x1a,.proto.rpc.examples.echo.v1.EchoBiDiResponse"\x00(\x010\x01B.Z,go.viam.com/utils/proto/rpc/examples/echo/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py b/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py index 30f73fc337..38fdf927db 100644 --- a/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py +++ b/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'proto/rpc/examples/echoresource/v1/echoresource.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'proto/rpc/examples/echoresource/v1/echoresource.proto') _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n5proto/rpc/examples/echoresource/v1/echoresource.proto\x12"proto.rpc.examples.echoresource.v1"C\n\x13EchoResourceRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message"0\n\x14EchoResourceResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"K\n\x1bEchoResourceMultipleRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message"8\n\x1cEchoResourceMultipleResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"G\n\x17EchoResourceBiDiRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message"4\n\x18EchoResourceBiDiResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message2\xd1\x03\n\x13EchoResourceService\x12\x83\x01\n\x0cEchoResource\x127.proto.rpc.examples.echoresource.v1.EchoResourceRequest\x1a8.proto.rpc.examples.echoresource.v1.EchoResourceResponse"\x00\x12\x9d\x01\n\x14EchoResourceMultiple\x12?.proto.rpc.examples.echoresource.v1.EchoResourceMultipleRequest\x1a@.proto.rpc.examples.echoresource.v1.EchoResourceMultipleResponse"\x000\x01\x12\x93\x01\n\x10EchoResourceBiDi\x12;.proto.rpc.examples.echoresource.v1.EchoResourceBiDiRequest\x1a<.proto.rpc.examples.echoresource.v1.EchoResourceBiDiResponse"\x00(\x010\x01B6Z4go.viam.com/utils/proto/rpc/examples/echoresource/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/proto/rpc/v1/auth_grpc.py b/src/viam/gen/proto/rpc/v1/auth_grpc.py index d336c8ed9a..53f78317d2 100644 --- a/src/viam/gen/proto/rpc/v1/auth_grpc.py +++ b/src/viam/gen/proto/rpc/v1/auth_grpc.py @@ -5,7 +5,7 @@ import grpclib.exceptions if typing.TYPE_CHECKING: import grpclib.server -from .... import google +import google.api.annotations_pb2 from .... import proto class AuthServiceBase(abc.ABC): diff --git a/src/viam/gen/proto/rpc/v1/auth_pb2.py b/src/viam/gen/proto/rpc/v1/auth_pb2.py index 9a8a14234f..54c4295a10 100644 --- a/src/viam/gen/proto/rpc/v1/auth_pb2.py +++ b/src/viam/gen/proto/rpc/v1/auth_pb2.py @@ -4,9 +4,9 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'proto/rpc/v1/auth.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'proto/rpc/v1/auth.proto') _sym_db = _symbol_database.Default() -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17proto/rpc/v1/auth.proto\x12\x0cproto.rpc.v1\x1a\x1cgoogle/api/annotations.proto";\n\x0bCredentials\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x18\n\x07payload\x18\x02 \x01(\tR\x07payload"j\n\x13AuthenticateRequest\x12\x16\n\x06entity\x18\x01 \x01(\tR\x06entity\x12;\n\x0bcredentials\x18\x02 \x01(\x0b2\x19.proto.rpc.v1.CredentialsR\x0bcredentials"9\n\x14AuthenticateResponse\x12!\n\x0caccess_token\x18\x01 \x01(\tR\x0baccessToken"/\n\x15AuthenticateToRequest\x12\x16\n\x06entity\x18\x01 \x01(\tR\x06entity";\n\x16AuthenticateToResponse\x12!\n\x0caccess_token\x18\x01 \x01(\tR\x0baccessToken2\x82\x01\n\x0bAuthService\x12s\n\x0cAuthenticate\x12!.proto.rpc.v1.AuthenticateRequest\x1a".proto.rpc.v1.AuthenticateResponse"\x1c\x82\xd3\xe4\x93\x02\x16"\x14/rpc/v1/authenticate2\x93\x01\n\x13ExternalAuthService\x12|\n\x0eAuthenticateTo\x12#.proto.rpc.v1.AuthenticateToRequest\x1a$.proto.rpc.v1.AuthenticateToResponse"\x1f\x82\xd3\xe4\x93\x02\x19"\x17/rpc/v1/authenticate_toB Z\x1ego.viam.com/utils/proto/rpc/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py b/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py index ab313a4fad..5d58e95d40 100644 --- a/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py +++ b/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'proto/rpc/webrtc/v1/grpc.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'proto/rpc/webrtc/v1/grpc.proto') _sym_db = _symbol_database.Default() from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 -from .....google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 +from google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1eproto/rpc/webrtc/v1/grpc.proto\x12\x13proto.rpc.webrtc.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x17google/rpc/status.proto"5\n\rPacketMessage\x12\x12\n\x04data\x18\x01 \x01(\x0cR\x04data\x12\x10\n\x03eom\x18\x02 \x01(\x08R\x03eom"\x18\n\x06Stream\x12\x0e\n\x02id\x18\x01 \x01(\x04R\x02id"\xe9\x01\n\x07Request\x123\n\x06stream\x18\x01 \x01(\x0b2\x1b.proto.rpc.webrtc.v1.StreamR\x06stream\x12?\n\x07headers\x18\x02 \x01(\x0b2#.proto.rpc.webrtc.v1.RequestHeadersH\x00R\x07headers\x12?\n\x07message\x18\x03 \x01(\x0b2#.proto.rpc.webrtc.v1.RequestMessageH\x00R\x07message\x12\x1f\n\nrst_stream\x18\x04 \x01(\x08H\x00R\trstStreamB\x06\n\x04type"\x98\x01\n\x0eRequestHeaders\x12\x16\n\x06method\x18\x01 \x01(\tR\x06method\x129\n\x08metadata\x18\x02 \x01(\x0b2\x1d.proto.rpc.webrtc.v1.MetadataR\x08metadata\x123\n\x07timeout\x18\x03 \x01(\x0b2\x19.google.protobuf.DurationR\x07timeout"\x8e\x01\n\x0eRequestMessage\x12\x1f\n\x0bhas_message\x18\x01 \x01(\x08R\nhasMessage\x12I\n\x0epacket_message\x18\x02 \x01(\x0b2".proto.rpc.webrtc.v1.PacketMessageR\rpacketMessage\x12\x10\n\x03eos\x18\x03 \x01(\x08R\x03eos"\x90\x02\n\x08Response\x123\n\x06stream\x18\x01 \x01(\x0b2\x1b.proto.rpc.webrtc.v1.StreamR\x06stream\x12@\n\x07headers\x18\x02 \x01(\x0b2$.proto.rpc.webrtc.v1.ResponseHeadersH\x00R\x07headers\x12@\n\x07message\x18\x03 \x01(\x0b2$.proto.rpc.webrtc.v1.ResponseMessageH\x00R\x07message\x12C\n\x08trailers\x18\x04 \x01(\x0b2%.proto.rpc.webrtc.v1.ResponseTrailersH\x00R\x08trailersB\x06\n\x04type"L\n\x0fResponseHeaders\x129\n\x08metadata\x18\x01 \x01(\x0b2\x1d.proto.rpc.webrtc.v1.MetadataR\x08metadata"\\\n\x0fResponseMessage\x12I\n\x0epacket_message\x18\x01 \x01(\x0b2".proto.rpc.webrtc.v1.PacketMessageR\rpacketMessage"y\n\x10ResponseTrailers\x12*\n\x06status\x18\x01 \x01(\x0b2\x12.google.rpc.StatusR\x06status\x129\n\x08metadata\x18\x02 \x01(\x0b2\x1d.proto.rpc.webrtc.v1.MetadataR\x08metadata"!\n\x07Strings\x12\x16\n\x06values\x18\x01 \x03(\tR\x06values"\x96\x01\n\x08Metadata\x125\n\x02md\x18\x01 \x03(\x0b2%.proto.rpc.webrtc.v1.Metadata.MdEntryR\x02md\x1aS\n\x07MdEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x122\n\x05value\x18\x02 \x01(\x0b2\x1c.proto.rpc.webrtc.v1.StringsR\x05value:\x028\x01B\'Z%go.viam.com/utils/proto/rpc/webrtc/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/proto/rpc/webrtc/v1/signaling_grpc.py b/src/viam/gen/proto/rpc/webrtc/v1/signaling_grpc.py index 5fd9a24d39..4cf7ec4413 100644 --- a/src/viam/gen/proto/rpc/webrtc/v1/signaling_grpc.py +++ b/src/viam/gen/proto/rpc/webrtc/v1/signaling_grpc.py @@ -5,8 +5,9 @@ import grpclib.exceptions if typing.TYPE_CHECKING: import grpclib.server -from ..... import google +import google.api.annotations_pb2 import google.protobuf.timestamp_pb2 +import google.rpc.status_pb2 from ..... import proto class SignalingServiceBase(abc.ABC): diff --git a/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py b/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py index 8dd1fc933b..cdb171e169 100644 --- a/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py +++ b/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py @@ -4,11 +4,11 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'proto/rpc/webrtc/v1/signaling.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'proto/rpc/webrtc/v1/signaling.proto') _sym_db = _symbol_database.Default() -from .....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -from .....google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 +from google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#proto/rpc/webrtc/v1/signaling.proto\x12\x13proto.rpc.webrtc.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto"\xdf\x01\n\x0cICECandidate\x12\x1c\n\tcandidate\x18\x01 \x01(\tR\tcandidate\x12\x1c\n\x07sdp_mid\x18\x02 \x01(\tH\x00R\x06sdpMid\x88\x01\x01\x12+\n\x0fsdpm_line_index\x18\x03 \x01(\rH\x01R\rsdpmLineIndex\x88\x01\x01\x120\n\x11username_fragment\x18\x04 \x01(\tH\x02R\x10usernameFragment\x88\x01\x01B\n\n\x08_sdp_midB\x12\n\x10_sdpm_line_indexB\x14\n\x12_username_fragment"H\n\x0bCallRequest\x12\x10\n\x03sdp\x18\x01 \x01(\tR\x03sdp\x12\'\n\x0fdisable_trickle\x18\x02 \x01(\x08R\x0edisableTrickle")\n\x15CallResponseInitStage\x12\x10\n\x03sdp\x18\x01 \x01(\tR\x03sdp"Z\n\x17CallResponseUpdateStage\x12?\n\tcandidate\x18\x01 \x01(\x0b2!.proto.rpc.webrtc.v1.ICECandidateR\tcandidate"\xb5\x01\n\x0cCallResponse\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12@\n\x04init\x18\x02 \x01(\x0b2*.proto.rpc.webrtc.v1.CallResponseInitStageH\x00R\x04init\x12F\n\x06update\x18\x03 \x01(\x0b2,.proto.rpc.webrtc.v1.CallResponseUpdateStageH\x00R\x06updateB\x07\n\x05stage"\xb6\x01\n\x11CallUpdateRequest\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12A\n\tcandidate\x18\x02 \x01(\x0b2!.proto.rpc.webrtc.v1.ICECandidateH\x00R\tcandidate\x12\x14\n\x04done\x18\x03 \x01(\x08H\x00R\x04done\x12*\n\x05error\x18\x04 \x01(\x0b2\x12.google.rpc.StatusH\x00R\x05errorB\x08\n\x06update"\x14\n\x12CallUpdateResponse"[\n\tICEServer\x12\x12\n\x04urls\x18\x01 \x03(\tR\x04urls\x12\x1a\n\x08username\x18\x02 \x01(\tR\x08username\x12\x1e\n\ncredential\x18\x03 \x01(\tR\ncredential"\x8d\x01\n\x0cWebRTCConfig\x12T\n\x16additional_ice_servers\x18\x01 \x03(\x0b2\x1e.proto.rpc.webrtc.v1.ICEServerR\x14additionalIceServers\x12\'\n\x0fdisable_trickle\x18\x02 \x01(\x08R\x0edisableTrickle"\xc0\x01\n\x16AnswerRequestInitStage\x12\x10\n\x03sdp\x18\x01 \x01(\tR\x03sdp\x12J\n\x0foptional_config\x18\x02 \x01(\x0b2!.proto.rpc.webrtc.v1.WebRTCConfigR\x0eoptionalConfig\x12;\n\x08deadline\x18\x03 \x01(\x0b2\x1a.google.protobuf.TimestampH\x00R\x08deadline\x88\x01\x01B\x0b\n\t_deadline"[\n\x18AnswerRequestUpdateStage\x12?\n\tcandidate\x18\x01 \x01(\x0b2!.proto.rpc.webrtc.v1.ICECandidateR\tcandidate"\x18\n\x16AnswerRequestDoneStage"E\n\x17AnswerRequestErrorStage\x12*\n\x06status\x18\x01 \x01(\x0b2\x12.google.rpc.StatusR\x06status"\x1d\n\x1bAnswerRequestHeartbeatStage"\x93\x03\n\rAnswerRequest\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12A\n\x04init\x18\x02 \x01(\x0b2+.proto.rpc.webrtc.v1.AnswerRequestInitStageH\x00R\x04init\x12G\n\x06update\x18\x03 \x01(\x0b2-.proto.rpc.webrtc.v1.AnswerRequestUpdateStageH\x00R\x06update\x12A\n\x04done\x18\x04 \x01(\x0b2+.proto.rpc.webrtc.v1.AnswerRequestDoneStageH\x00R\x04done\x12D\n\x05error\x18\x05 \x01(\x0b2,.proto.rpc.webrtc.v1.AnswerRequestErrorStageH\x00R\x05error\x12P\n\theartbeat\x18\x06 \x01(\x0b20.proto.rpc.webrtc.v1.AnswerRequestHeartbeatStageH\x00R\theartbeatB\x07\n\x05stage"+\n\x17AnswerResponseInitStage\x12\x10\n\x03sdp\x18\x01 \x01(\tR\x03sdp"\\\n\x19AnswerResponseUpdateStage\x12?\n\tcandidate\x18\x01 \x01(\x0b2!.proto.rpc.webrtc.v1.ICECandidateR\tcandidate"\x19\n\x17AnswerResponseDoneStage"F\n\x18AnswerResponseErrorStage\x12*\n\x06status\x18\x01 \x01(\x0b2\x12.google.rpc.StatusR\x06status"\xc6\x02\n\x0eAnswerResponse\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12B\n\x04init\x18\x02 \x01(\x0b2,.proto.rpc.webrtc.v1.AnswerResponseInitStageH\x00R\x04init\x12H\n\x06update\x18\x03 \x01(\x0b2..proto.rpc.webrtc.v1.AnswerResponseUpdateStageH\x00R\x06update\x12B\n\x04done\x18\x04 \x01(\x0b2,.proto.rpc.webrtc.v1.AnswerResponseDoneStageH\x00R\x04done\x12E\n\x05error\x18\x05 \x01(\x0b2-.proto.rpc.webrtc.v1.AnswerResponseErrorStageH\x00R\x05errorB\x07\n\x05stage"\x1d\n\x1bOptionalWebRTCConfigRequest"Y\n\x1cOptionalWebRTCConfigResponse\x129\n\x06config\x18\x01 \x01(\x0b2!.proto.rpc.webrtc.v1.WebRTCConfigR\x06config2\x86\x04\n\x10SignalingService\x12j\n\x04Call\x12 .proto.rpc.webrtc.v1.CallRequest\x1a!.proto.rpc.webrtc.v1.CallResponse"\x1b\x82\xd3\xe4\x93\x02\x15"\x13/rpc/webrtc/v1/call0\x01\x12\x81\x01\n\nCallUpdate\x12&.proto.rpc.webrtc.v1.CallUpdateRequest\x1a\'.proto.rpc.webrtc.v1.CallUpdateResponse""\x82\xd3\xe4\x93\x02\x1c\x1a\x1a/rpc/webrtc/v1/call_update\x12U\n\x06Answer\x12#.proto.rpc.webrtc.v1.AnswerResponse\x1a".proto.rpc.webrtc.v1.AnswerRequest(\x010\x01\x12\xaa\x01\n\x14OptionalWebRTCConfig\x120.proto.rpc.webrtc.v1.OptionalWebRTCConfigRequest\x1a1.proto.rpc.webrtc.v1.OptionalWebRTCConfigResponse"-\x82\xd3\xe4\x93\x02\'\x12%/rpc/webrtc/v1/optional_webrtc_configB\'Z%go.viam.com/utils/proto/rpc/webrtc/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/provisioning/v1/provisioning_pb2.py b/src/viam/gen/provisioning/v1/provisioning_pb2.py index 1cd58bfd99..5b4fe6893b 100644 --- a/src/viam/gen/provisioning/v1/provisioning_pb2.py +++ b/src/viam/gen/provisioning/v1/provisioning_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'provisioning/v1/provisioning.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'provisioning/v1/provisioning.proto') _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"provisioning/v1/provisioning.proto\x12\x14viam.provisioning.v1"\x19\n\x17ExitProvisioningRequest"\x1a\n\x18ExitProvisioningResponse"\x1e\n\x1cGetSmartMachineStatusRequest"\xf0\x02\n\x1dGetSmartMachineStatusResponse\x12S\n\x11provisioning_info\x18\x01 \x01(\x0b2&.viam.provisioning.v1.ProvisioningInfoR\x10provisioningInfo\x12A\n\x1dhas_smart_machine_credentials\x18\x02 \x01(\x08R\x1ahasSmartMachineCredentials\x12\x1b\n\tis_online\x18\x03 \x01(\x08R\x08isOnline\x12]\n\x19latest_connection_attempt\x18\x04 \x01(\x0b2!.viam.provisioning.v1.NetworkInfoR\x17latestConnectionAttempt\x12\x16\n\x06errors\x18\x05 \x03(\tR\x06errors\x12#\n\ragent_version\x18\x06 \x01(\tR\x0cagentVersion"X\n\x1cSetNetworkCredentialsRequest\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x12\n\x04ssid\x18\x02 \x01(\tR\x04ssid\x12\x10\n\x03psk\x18\x03 \x01(\tR\x03psk"\x1f\n\x1dSetNetworkCredentialsResponse"\\\n!SetSmartMachineCredentialsRequest\x127\n\x05cloud\x18\x01 \x01(\x0b2!.viam.provisioning.v1.CloudConfigR\x05cloud"$\n"SetSmartMachineCredentialsResponse"\x17\n\x15GetNetworkListRequest"W\n\x16GetNetworkListResponse\x12=\n\x08networks\x18\x01 \x03(\x0b2!.viam.provisioning.v1.NetworkInfoR\x08networks"m\n\x10ProvisioningInfo\x12\x1f\n\x0bfragment_id\x18\x01 \x01(\tR\nfragmentId\x12\x14\n\x05model\x18\x02 \x01(\tR\x05model\x12"\n\x0cmanufacturer\x18\x03 \x01(\tR\x0cmanufacturer"\xa6\x01\n\x0bNetworkInfo\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x12\n\x04ssid\x18\x02 \x01(\tR\x04ssid\x12\x1a\n\x08security\x18\x03 \x01(\tR\x08security\x12\x16\n\x06signal\x18\x04 \x01(\x05R\x06signal\x12\x1c\n\tconnected\x18\x05 \x01(\x08R\tconnected\x12\x1d\n\nlast_error\x18\x06 \x01(\tR\tlastError"\x8d\x01\n\x0bCloudConfig\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\x12\x1f\n\x0bapp_address\x18\x03 \x01(\tR\nappAddress\x125\n\x07api_key\x18\x04 \x01(\x0b2\x1c.viam.provisioning.v1.APIKeyR\x06apiKey"*\n\x06APIKey\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03key\x18\x02 \x01(\tR\x03key2\x8d\x05\n\x13ProvisioningService\x12\x80\x01\n\x15GetSmartMachineStatus\x122.viam.provisioning.v1.GetSmartMachineStatusRequest\x1a3.viam.provisioning.v1.GetSmartMachineStatusResponse\x12\x80\x01\n\x15SetNetworkCredentials\x122.viam.provisioning.v1.SetNetworkCredentialsRequest\x1a3.viam.provisioning.v1.SetNetworkCredentialsResponse\x12\x8f\x01\n\x1aSetSmartMachineCredentials\x127.viam.provisioning.v1.SetSmartMachineCredentialsRequest\x1a8.viam.provisioning.v1.SetSmartMachineCredentialsResponse\x12k\n\x0eGetNetworkList\x12+.viam.provisioning.v1.GetNetworkListRequest\x1a,.viam.provisioning.v1.GetNetworkListResponse\x12q\n\x10ExitProvisioning\x12-.viam.provisioning.v1.ExitProvisioningRequest\x1a..viam.provisioning.v1.ExitProvisioningResponseB!Z\x1fgo.viam.com/api/provisioning/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/robot/v1/robot_grpc.py b/src/viam/gen/robot/v1/robot_grpc.py index 0a7241a7d0..d0139ea324 100644 --- a/src/viam/gen/robot/v1/robot_grpc.py +++ b/src/viam/gen/robot/v1/robot_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from ... import common -from ... import google +import google.api.annotations_pb2 import google.protobuf.duration_pb2 import google.protobuf.struct_pb2 import google.protobuf.timestamp_pb2 diff --git a/src/viam/gen/robot/v1/robot_pb2.py b/src/viam/gen/robot/v1/robot_pb2.py index 0b3d05da29..00dd9dd03e 100644 --- a/src/viam/gen/robot/v1/robot_pb2.py +++ b/src/viam/gen/robot/v1/robot_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'robot/v1/robot.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'robot/v1/robot.proto') _sym_db = _symbol_database.Default() from ...common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ...google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 diff --git a/src/viam/gen/service/datamanager/v1/data_manager_grpc.py b/src/viam/gen/service/datamanager/v1/data_manager_grpc.py index 0a335d46eb..2319e39cf7 100644 --- a/src/viam/gen/service/datamanager/v1/data_manager_grpc.py +++ b/src/viam/gen/service/datamanager/v1/data_manager_grpc.py @@ -7,7 +7,7 @@ import grpclib.server from .... import app from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import service diff --git a/src/viam/gen/service/datamanager/v1/data_manager_pb2.py b/src/viam/gen/service/datamanager/v1/data_manager_pb2.py index 04b88cb7a4..55403e73e0 100644 --- a/src/viam/gen/service/datamanager/v1/data_manager_pb2.py +++ b/src/viam/gen/service/datamanager/v1/data_manager_pb2.py @@ -4,11 +4,11 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/datamanager/v1/data_manager.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'service/datamanager/v1/data_manager.proto') _sym_db = _symbol_database.Default() from ....app.datasync.v1 import data_sync_pb2 as app_dot_datasync_dot_v1_dot_data__sync__pb2 from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)service/datamanager/v1/data_manager.proto\x12\x1bviam.service.datamanager.v1\x1a\x1fapp/datasync/v1/data_sync.proto\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"P\n\x0bSyncRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cSyncResponse"\xf9\x01\n!UploadBinaryDataToDatasetsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x0bbinary_data\x18\x02 \x01(\x0cR\nbinaryData\x12\x12\n\x04tags\x18\x03 \x03(\tR\x04tags\x12\x1f\n\x0bdataset_ids\x18\x04 \x03(\tR\ndatasetIds\x12;\n\tmime_type\x18\x05 \x01(\x0e2\x1e.viam.app.datasync.v1.MimeTypeR\x08mimeType\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"$\n"UploadBinaryDataToDatasetsResponse2\xab\x04\n\x12DataManagerService\x12\x95\x01\n\x04Sync\x12(.viam.service.datamanager.v1.SyncRequest\x1a).viam.service.datamanager.v1.SyncResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/service/datamanager/{name}/datasync\x12\x8c\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse":\x82\xd3\xe4\x93\x024"2/viam/api/v1/service/datamanager/{name}/do_command\x12\xed\x01\n\x1aUploadBinaryDataToDatasets\x12>.viam.service.datamanager.v1.UploadBinaryDataToDatasetsRequest\x1a?.viam.service.datamanager.v1.UploadBinaryDataToDatasetsResponse"N\x82\xd3\xe4\x93\x02H"F/viam/api/v1/service/datamanager/{name}/upload_binary_data_to_datasetsBI\n\x1fcom.viam.service.datamanager.v1Z&go.viam.com/api/service/datamanager/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/service/discovery/v1/discovery_grpc.py b/src/viam/gen/service/discovery/v1/discovery_grpc.py index f279c90cb2..18437dfb46 100644 --- a/src/viam/gen/service/discovery/v1/discovery_grpc.py +++ b/src/viam/gen/service/discovery/v1/discovery_grpc.py @@ -7,7 +7,7 @@ import grpclib.server from .... import app from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import service diff --git a/src/viam/gen/service/discovery/v1/discovery_pb2.py b/src/viam/gen/service/discovery/v1/discovery_pb2.py index b28a9c4bc4..4307e32939 100644 --- a/src/viam/gen/service/discovery/v1/discovery_pb2.py +++ b/src/viam/gen/service/discovery/v1/discovery_pb2.py @@ -4,11 +4,11 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/discovery/v1/discovery.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'service/discovery/v1/discovery.proto') _sym_db = _symbol_database.Default() from ....app.v1 import robot_pb2 as app_dot_v1_dot_robot__pb2 from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$service/discovery/v1/discovery.proto\x12\x19viam.service.discovery.v1\x1a\x12app/v1/robot.proto\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"]\n\x18DiscoverResourcesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"[\n\x19DiscoverResourcesResponse\x12>\n\x0bdiscoveries\x18\x01 \x03(\x0b2\x1c.viam.app.v1.ComponentConfigR\x0bdiscoveries2\xcf\x02\n\x10DiscoveryService\x12\xad\x01\n\x11DiscoverResources\x123.viam.service.discovery.v1.DiscoverResourcesRequest\x1a4.viam.service.discovery.v1.DiscoverResourcesResponse"-\x82\xd3\xe4\x93\x02\'\x12%/viam/api/v1/service/{name}/discovery\x12\x8a\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/service/discovery/{name}/do_commandBD\n\x1dcom.viam.service.discovery.v1Z#go.viam.com/api/service/discovey/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/service/generic/v1/generic_grpc.py b/src/viam/gen/service/generic/v1/generic_grpc.py index 9ae6385210..114a51746d 100644 --- a/src/viam/gen/service/generic/v1/generic_grpc.py +++ b/src/viam/gen/service/generic/v1/generic_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 from .... import service class GenericServiceBase(abc.ABC): diff --git a/src/viam/gen/service/generic/v1/generic_pb2.py b/src/viam/gen/service/generic/v1/generic_pb2.py index 193ae329d1..bb6fb30c73 100644 --- a/src/viam/gen/service/generic/v1/generic_pb2.py +++ b/src/viam/gen/service/generic/v1/generic_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/generic/v1/generic.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'service/generic/v1/generic.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n service/generic/v1/generic.proto\x12\x17viam.service.generic.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto2\x9b\x01\n\x0eGenericService\x12\x88\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/service/generic/{name}/do_commandBA\n\x1bcom.viam.service.generic.v1Z"go.viam.com/api/service/generic/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/service/mlmodel/v1/mlmodel_grpc.py b/src/viam/gen/service/mlmodel/v1/mlmodel_grpc.py index 21af52a03c..65e94f9dfd 100644 --- a/src/viam/gen/service/mlmodel/v1/mlmodel_grpc.py +++ b/src/viam/gen/service/mlmodel/v1/mlmodel_grpc.py @@ -5,7 +5,7 @@ import grpclib.exceptions if typing.TYPE_CHECKING: import grpclib.server -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import service diff --git a/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.py b/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.py index 6e68e927a3..85f5f44313 100644 --- a/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.py +++ b/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.py @@ -4,9 +4,9 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/mlmodel/v1/mlmodel.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'service/mlmodel/v1/mlmodel.proto') _sym_db = _symbol_database.Default() -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n service/mlmodel/v1/mlmodel.proto\x12\x17viam.service.mlmodel.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"\xae\x01\n\x0cInferRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12I\n\rinput_tensors\x18\x03 \x01(\x0b2$.viam.service.mlmodel.v1.FlatTensorsR\x0cinputTensors\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraJ\x04\x08\x02\x10\x03R\ninput_data"{\n\rInferResponse\x12K\n\x0eoutput_tensors\x18\x03 \x01(\x0b2$.viam.service.mlmodel.v1.FlatTensorsR\routputTensorsJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x04nameR\x0boutput_data"T\n\x0fMetadataRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"Q\n\x10MetadataResponse\x12=\n\x08metadata\x18\x01 \x01(\x0b2!.viam.service.mlmodel.v1.MetadataR\x08metadata"\xde\x01\n\x08Metadata\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12 \n\x0bdescription\x18\x03 \x01(\tR\x0bdescription\x12B\n\ninput_info\x18\x04 \x03(\x0b2#.viam.service.mlmodel.v1.TensorInfoR\tinputInfo\x12D\n\x0boutput_info\x18\x05 \x03(\x0b2#.viam.service.mlmodel.v1.TensorInfoR\noutputInfo"\xee\x01\n\nTensorInfo\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12 \n\x0bdescription\x18\x02 \x01(\tR\x0bdescription\x12\x1b\n\tdata_type\x18\x03 \x01(\tR\x08dataType\x12\x14\n\x05shape\x18\x04 \x03(\x05R\x05shape\x12H\n\x10associated_files\x18\x05 \x03(\x0b2\x1d.viam.service.mlmodel.v1.FileR\x0fassociatedFiles\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x7f\n\x04File\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12 \n\x0bdescription\x18\x02 \x01(\tR\x0bdescription\x12A\n\nlabel_type\x18\x03 \x01(\x0e2".viam.service.mlmodel.v1.LabelTypeR\tlabelType"(\n\x12FlatTensorDataInt8\x12\x12\n\x04data\x18\x01 \x01(\x0cR\x04data")\n\x13FlatTensorDataUInt8\x12\x12\n\x04data\x18\x01 \x01(\x0cR\x04data"-\n\x13FlatTensorDataInt16\x12\x16\n\x04data\x18\x01 \x03(\x07B\x02\x10\x01R\x04data".\n\x14FlatTensorDataUInt16\x12\x16\n\x04data\x18\x01 \x03(\x07B\x02\x10\x01R\x04data"-\n\x13FlatTensorDataInt32\x12\x16\n\x04data\x18\x01 \x03(\x0fB\x02\x10\x01R\x04data".\n\x14FlatTensorDataUInt32\x12\x16\n\x04data\x18\x01 \x03(\x07B\x02\x10\x01R\x04data"-\n\x13FlatTensorDataInt64\x12\x16\n\x04data\x18\x01 \x03(\x10B\x02\x10\x01R\x04data".\n\x14FlatTensorDataUInt64\x12\x16\n\x04data\x18\x01 \x03(\x06B\x02\x10\x01R\x04data"-\n\x13FlatTensorDataFloat\x12\x16\n\x04data\x18\x01 \x03(\x02B\x02\x10\x01R\x04data".\n\x14FlatTensorDataDouble\x12\x16\n\x04data\x18\x01 \x03(\x01B\x02\x10\x01R\x04data"\xf3\x06\n\nFlatTensor\x12\x14\n\x05shape\x18\x01 \x03(\x06R\x05shape\x12N\n\x0bint8_tensor\x18\x02 \x01(\x0b2+.viam.service.mlmodel.v1.FlatTensorDataInt8H\x00R\nint8Tensor\x12Q\n\x0cuint8_tensor\x18\x03 \x01(\x0b2,.viam.service.mlmodel.v1.FlatTensorDataUInt8H\x00R\x0buint8Tensor\x12Q\n\x0cint16_tensor\x18\x04 \x01(\x0b2,.viam.service.mlmodel.v1.FlatTensorDataInt16H\x00R\x0bint16Tensor\x12T\n\ruint16_tensor\x18\x05 \x01(\x0b2-.viam.service.mlmodel.v1.FlatTensorDataUInt16H\x00R\x0cuint16Tensor\x12Q\n\x0cint32_tensor\x18\x06 \x01(\x0b2,.viam.service.mlmodel.v1.FlatTensorDataInt32H\x00R\x0bint32Tensor\x12T\n\ruint32_tensor\x18\x07 \x01(\x0b2-.viam.service.mlmodel.v1.FlatTensorDataUInt32H\x00R\x0cuint32Tensor\x12Q\n\x0cint64_tensor\x18\x08 \x01(\x0b2,.viam.service.mlmodel.v1.FlatTensorDataInt64H\x00R\x0bint64Tensor\x12T\n\ruint64_tensor\x18\t \x01(\x0b2-.viam.service.mlmodel.v1.FlatTensorDataUInt64H\x00R\x0cuint64Tensor\x12Q\n\x0cfloat_tensor\x18\n \x01(\x0b2,.viam.service.mlmodel.v1.FlatTensorDataFloatH\x00R\x0bfloatTensor\x12T\n\rdouble_tensor\x18\x0b \x01(\x0b2-.viam.service.mlmodel.v1.FlatTensorDataDoubleH\x00R\x0cdoubleTensorB\x08\n\x06tensor"\xbb\x01\n\x0bFlatTensors\x12K\n\x07tensors\x18\x01 \x03(\x0b21.viam.service.mlmodel.v1.FlatTensors.TensorsEntryR\x07tensors\x1a_\n\x0cTensorsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x129\n\x05value\x18\x02 \x01(\x0b2#.viam.service.mlmodel.v1.FlatTensorR\x05value:\x028\x01*`\n\tLabelType\x12\x1a\n\x16LABEL_TYPE_UNSPECIFIED\x10\x00\x12\x1b\n\x17LABEL_TYPE_TENSOR_VALUE\x10\x01\x12\x1a\n\x16LABEL_TYPE_TENSOR_AXIS\x10\x022\xb4\x02\n\x0eMLModelService\x12\x89\x01\n\x05Infer\x12%.viam.service.mlmodel.v1.InferRequest\x1a&.viam.service.mlmodel.v1.InferResponse"1\x82\xd3\xe4\x93\x02+")/viam/api/v1/service/mlmodel/{name}/infer\x12\x95\x01\n\x08Metadata\x12(.viam.service.mlmodel.v1.MetadataRequest\x1a).viam.service.mlmodel.v1.MetadataResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/service/mlmodel/{name}/metadataBA\n\x1bcom.viam.service.mlmodel.v1Z"go.viam.com/api/service/mlmodel/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/service/motion/v1/motion_grpc.py b/src/viam/gen/service/motion/v1/motion_grpc.py index 333d5a77e4..4a268282ba 100644 --- a/src/viam/gen/service/motion/v1/motion_grpc.py +++ b/src/viam/gen/service/motion/v1/motion_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 import google.protobuf.timestamp_pb2 from .... import service diff --git a/src/viam/gen/service/motion/v1/motion_pb2.py b/src/viam/gen/service/motion/v1/motion_pb2.py index 4794f460b4..3884bfc559 100644 --- a/src/viam/gen/service/motion/v1/motion_pb2.py +++ b/src/viam/gen/service/motion/v1/motion_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/motion/v1/motion.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'service/motion/v1/motion.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1eservice/motion/v1/motion.proto\x12\x16viam.service.motion.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto"\xc2\x03\n\x0bMoveRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12=\n\x0bdestination\x18\x02 \x01(\x0b2\x1b.viam.common.v1.PoseInFrameR\x0bdestination\x12\\\n\x19component_name_deprecated\x18\x03 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12@\n\x0bworld_state\x18\x04 \x01(\x0b2\x1a.viam.common.v1.WorldStateH\x00R\nworldState\x88\x01\x01\x12J\n\x0bconstraints\x18\x05 \x01(\x0b2#.viam.service.motion.v1.ConstraintsH\x01R\x0bconstraints\x88\x01\x01\x12%\n\x0ecomponent_name\x18\x06 \x01(\tR\rcomponentName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraB\x0e\n\x0c_world_stateB\x0e\n\x0c_constraints"(\n\x0cMoveResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success"\xd7\x04\n\x10MoveOnMapRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x126\n\x0bdestination\x18\x02 \x01(\x0b2\x14.viam.common.v1.PoseR\x0bdestination\x12\\\n\x19component_name_deprecated\x18\x03 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12a\n\x1cslam_service_name_deprecated\x18\x04 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x19slamServiceNameDeprecated\x12c\n\x14motion_configuration\x18\x05 \x01(\x0b2+.viam.service.motion.v1.MotionConfigurationH\x00R\x13motionConfiguration\x88\x01\x01\x126\n\tobstacles\x18\x06 \x03(\x0b2\x18.viam.common.v1.GeometryR\tobstacles\x12%\n\x0ecomponent_name\x18\x07 \x01(\tR\rcomponentName\x12*\n\x11slam_service_name\x18\x08 \x01(\tR\x0fslamServiceName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraB\x17\n\x15_motion_configuration"6\n\x11MoveOnMapResponse\x12!\n\x0cexecution_id\x18\x01 \x01(\tR\x0bexecutionId"\xfe\x01\n\x10ObstacleDetector\x12\\\n\x19vision_service_deprecated\x18\x01 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17visionServiceDeprecated\x12M\n\x11camera_deprecated\x18\x02 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x10cameraDeprecated\x12%\n\x0evision_service\x18\x03 \x01(\tR\rvisionService\x12\x16\n\x06camera\x18\x04 \x01(\tR\x06camera"\x98\x04\n\x13MotionConfiguration\x12W\n\x12obstacle_detectors\x18\x01 \x03(\x0b2(.viam.service.motion.v1.ObstacleDetectorR\x11obstacleDetectors\x12F\n\x1dposition_polling_frequency_hz\x18\x02 \x01(\x01H\x00R\x1apositionPollingFrequencyHz\x88\x01\x01\x12F\n\x1dobstacle_polling_frequency_hz\x18\x03 \x01(\x01H\x01R\x1aobstaclePollingFrequencyHz\x88\x01\x01\x12-\n\x10plan_deviation_m\x18\x04 \x01(\x01H\x02R\x0eplanDeviationM\x88\x01\x01\x12,\n\x10linear_m_per_sec\x18\x05 \x01(\x01H\x03R\rlinearMPerSec\x88\x01\x01\x124\n\x14angular_degs_per_sec\x18\x06 \x01(\x01H\x04R\x11angularDegsPerSec\x88\x01\x01B \n\x1e_position_polling_frequency_hzB \n\x1e_obstacle_polling_frequency_hzB\x13\n\x11_plan_deviation_mB\x13\n\x11_linear_m_per_secB\x17\n\x15_angular_degs_per_sec"\xdf\x05\n\x12MoveOnGlobeRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12:\n\x0bdestination\x18\x02 \x01(\x0b2\x18.viam.common.v1.GeoPointR\x0bdestination\x12\x1d\n\x07heading\x18\x03 \x01(\x01H\x00R\x07heading\x88\x01\x01\x12\\\n\x19component_name_deprecated\x18\x04 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12g\n\x1fmovement_sensor_name_deprecated\x18\x05 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x1cmovementSensorNameDeprecated\x129\n\tobstacles\x18\x06 \x03(\x0b2\x1b.viam.common.v1.GeoGeometryR\tobstacles\x12c\n\x14motion_configuration\x18\x07 \x01(\x0b2+.viam.service.motion.v1.MotionConfigurationH\x01R\x13motionConfiguration\x88\x01\x01\x12F\n\x10bounding_regions\x18\x08 \x03(\x0b2\x1b.viam.common.v1.GeoGeometryR\x0fboundingRegions\x12%\n\x0ecomponent_name\x18\t \x01(\tR\rcomponentName\x120\n\x14movement_sensor_name\x18\n \x01(\tR\x12movementSensorName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraB\n\n\x08_headingB\x17\n\x15_motion_configuration"8\n\x13MoveOnGlobeResponse\x12!\n\x0cexecution_id\x18\x01 \x01(\tR\x0bexecutionId"\xdd\x02\n\x0eGetPoseRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\\\n\x19component_name_deprecated\x18\x02 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12+\n\x11destination_frame\x18\x03 \x01(\tR\x10destinationFrame\x12R\n\x17supplemental_transforms\x18\x04 \x03(\x0b2\x19.viam.common.v1.TransformR\x16supplementalTransforms\x12%\n\x0ecomponent_name\x18\x05 \x01(\tR\rcomponentName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra:\x02\x18\x01"F\n\x0fGetPoseResponse\x12/\n\x04pose\x18\x01 \x01(\x0b2\x1b.viam.common.v1.PoseInFrameR\x04pose:\x02\x18\x01"\xd9\x01\n\x0fStopPlanRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\\\n\x19component_name_deprecated\x18\x02 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12%\n\x0ecomponent_name\x18\x03 \x01(\tR\rcomponentName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x12\n\x10StopPlanResponse"\x88\x01\n\x17ListPlanStatusesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12*\n\x11only_active_plans\x18\x02 \x01(\x08R\x0fonlyActivePlans\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"y\n\x18ListPlanStatusesResponse\x12]\n\x16plan_statuses_with_ids\x18\x01 \x03(\x0b2(.viam.service.motion.v1.PlanStatusWithIDR\x13planStatusesWithIds"\xb7\x02\n\x0eGetPlanRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\\\n\x19component_name_deprecated\x18\x02 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12$\n\x0elast_plan_only\x18\x03 \x01(\x08R\x0clastPlanOnly\x12&\n\x0cexecution_id\x18\x04 \x01(\tH\x00R\x0bexecutionId\x88\x01\x01\x12%\n\x0ecomponent_name\x18\x05 \x01(\tR\rcomponentName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extraB\x0f\n\r_execution_id"\xc1\x01\n\x0fGetPlanResponse\x12_\n\x18current_plan_with_status\x18\x01 \x01(\x0b2&.viam.service.motion.v1.PlanWithStatusR\x15currentPlanWithStatus\x12M\n\x0ereplan_history\x18\x02 \x03(\x0b2&.viam.service.motion.v1.PlanWithStatusR\rreplanHistory"\x9c\x03\n\x0bConstraints\x12U\n\x11linear_constraint\x18\x01 \x03(\x0b2(.viam.service.motion.v1.LinearConstraintR\x10linearConstraint\x12d\n\x16orientation_constraint\x18\x02 \x03(\x0b2-.viam.service.motion.v1.OrientationConstraintR\x15orientationConstraint\x12g\n\x17collision_specification\x18\x03 \x03(\x0b2..viam.service.motion.v1.CollisionSpecificationR\x16collisionSpecification\x12g\n\x17pseudolinear_constraint\x18\x04 \x03(\x0b2..viam.service.motion.v1.PseudolinearConstraintR\x16pseudolinearConstraint"\xbb\x01\n\x10LinearConstraint\x12/\n\x11line_tolerance_mm\x18\x01 \x01(\x02H\x00R\x0flineToleranceMm\x88\x01\x01\x12A\n\x1aorientation_tolerance_degs\x18\x02 \x01(\x02H\x01R\x18orientationToleranceDegs\x88\x01\x01B\x14\n\x12_line_tolerance_mmB\x1d\n\x1b_orientation_tolerance_degs"\xd3\x01\n\x16PseudolinearConstraint\x127\n\x15line_tolerance_factor\x18\x01 \x01(\x02H\x00R\x13lineToleranceFactor\x88\x01\x01\x12E\n\x1corientation_tolerance_factor\x18\x02 \x01(\x02H\x01R\x1aorientationToleranceFactor\x88\x01\x01B\x18\n\x16_line_tolerance_factorB\x1f\n\x1d_orientation_tolerance_factor"y\n\x15OrientationConstraint\x12A\n\x1aorientation_tolerance_degs\x18\x01 \x01(\x02H\x00R\x18orientationToleranceDegs\x88\x01\x01B\x1d\n\x1b_orientation_tolerance_degs"\xc1\x01\n\x16CollisionSpecification\x12]\n\x06allows\x18\x01 \x03(\x0b2E.viam.service.motion.v1.CollisionSpecification.AllowedFrameCollisionsR\x06allows\x1aH\n\x16AllowedFrameCollisions\x12\x16\n\x06frame1\x18\x01 \x01(\tR\x06frame1\x12\x16\n\x06frame2\x18\x02 \x01(\tR\x06frame2"\xc9\x01\n\x0ePlanWithStatus\x120\n\x04plan\x18\x01 \x01(\x0b2\x1c.viam.service.motion.v1.PlanR\x04plan\x12:\n\x06status\x18\x02 \x01(\x0b2".viam.service.motion.v1.PlanStatusR\x06status\x12I\n\x0estatus_history\x18\x03 \x03(\x0b2".viam.service.motion.v1.PlanStatusR\rstatusHistory"\x8f\x02\n\x10PlanStatusWithID\x12\x17\n\x07plan_id\x18\x01 \x01(\tR\x06planId\x12\\\n\x19component_name_deprecated\x18\x02 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12!\n\x0cexecution_id\x18\x03 \x01(\tR\x0bexecutionId\x12:\n\x06status\x18\x04 \x01(\x0b2".viam.service.motion.v1.PlanStatusR\x06status\x12%\n\x0ecomponent_name\x18\x05 \x01(\tR\rcomponentName"\xa7\x01\n\nPlanStatus\x127\n\x05state\x18\x01 \x01(\x0e2!.viam.service.motion.v1.PlanStateR\x05state\x128\n\ttimestamp\x18\x02 \x01(\x0b2\x1a.google.protobuf.TimestampR\ttimestamp\x12\x1b\n\x06reason\x18\x03 \x01(\tH\x00R\x06reason\x88\x01\x01B\t\n\x07_reason"\xf6\x01\n\x04Plan\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\\\n\x19component_name_deprecated\x18\x02 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x17componentNameDeprecated\x12!\n\x0cexecution_id\x18\x03 \x01(\tR\x0bexecutionId\x126\n\x05steps\x18\x04 \x03(\x0b2 .viam.service.motion.v1.PlanStepR\x05steps\x12%\n\x0ecomponent_name\x18\x05 \x01(\tR\rcomponentName"\xab\x01\n\x08PlanStep\x12>\n\x04step\x18\x01 \x03(\x0b2*.viam.service.motion.v1.PlanStep.StepEntryR\x04step\x1a_\n\tStepEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12<\n\x05value\x18\x02 \x01(\x0b2&.viam.service.motion.v1.ComponentStateR\x05value:\x028\x01":\n\x0eComponentState\x12(\n\x04pose\x18\x01 \x01(\x0b2\x14.viam.common.v1.PoseR\x04pose*\x8c\x01\n\tPlanState\x12\x1a\n\x16PLAN_STATE_UNSPECIFIED\x10\x00\x12\x1a\n\x16PLAN_STATE_IN_PROGRESS\x10\x01\x12\x16\n\x12PLAN_STATE_STOPPED\x10\x02\x12\x18\n\x14PLAN_STATE_SUCCEEDED\x10\x03\x12\x15\n\x11PLAN_STATE_FAILED\x10\x042\xcc\t\n\rMotionService\x12\x82\x01\n\x04Move\x12#.viam.service.motion.v1.MoveRequest\x1a$.viam.service.motion.v1.MoveResponse"/\x82\xd3\xe4\x93\x02)"\'/viam/api/v1/service/motion/{name}/move\x12\x98\x01\n\tMoveOnMap\x12(.viam.service.motion.v1.MoveOnMapRequest\x1a).viam.service.motion.v1.MoveOnMapResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/service/motion/{name}/move_on_map\x12\xa0\x01\n\x0bMoveOnGlobe\x12*.viam.service.motion.v1.MoveOnGlobeRequest\x1a+.viam.service.motion.v1.MoveOnGlobeResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/service/motion/{name}/move_on_globe\x12\x8e\x01\n\x07GetPose\x12&.viam.service.motion.v1.GetPoseRequest\x1a\'.viam.service.motion.v1.GetPoseResponse"2\x88\x02\x01\x82\xd3\xe4\x93\x02)\x12\'/viam/api/v1/service/motion/{name}/pose\x12\x93\x01\n\x08StopPlan\x12\'.viam.service.motion.v1.StopPlanRequest\x1a(.viam.service.motion.v1.StopPlanResponse"4\x82\xd3\xe4\x93\x02.\x1a,/viam/api/v1/service/motion/{name}/stop_plan\x12\xb4\x01\n\x10ListPlanStatuses\x12/.viam.service.motion.v1.ListPlanStatusesRequest\x1a0.viam.service.motion.v1.ListPlanStatusesResponse"=\x82\xd3\xe4\x93\x027\x125/viam/api/v1/service/motion/{name}/list_plan_statuses\x12\x8f\x01\n\x07GetPlan\x12&.viam.service.motion.v1.GetPlanRequest\x1a\'.viam.service.motion.v1.GetPlanResponse"3\x82\xd3\xe4\x93\x02-\x12+/viam/api/v1/service/motion/{name}/get_plan\x12\x87\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"5\x82\xd3\xe4\x93\x02/"-/viam/api/v1/service/motion/{name}/do_commandB?\n\x1acom.viam.service.motion.v1Z!go.viam.com/api/service/motion/v1b\x06proto3') diff --git a/src/viam/gen/service/navigation/v1/navigation_grpc.py b/src/viam/gen/service/navigation/v1/navigation_grpc.py index 8abc5c1aa8..04cf85164d 100644 --- a/src/viam/gen/service/navigation/v1/navigation_grpc.py +++ b/src/viam/gen/service/navigation/v1/navigation_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import service diff --git a/src/viam/gen/service/navigation/v1/navigation_pb2.py b/src/viam/gen/service/navigation/v1/navigation_pb2.py index ea284c17d0..a7694776ac 100644 --- a/src/viam/gen/service/navigation/v1/navigation_pb2.py +++ b/src/viam/gen/service/navigation/v1/navigation_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/navigation/v1/navigation.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'service/navigation/v1/navigation.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&service/navigation/v1/navigation.proto\x12\x1aviam.service.navigation.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"S\n\x0eGetModeRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"G\n\x0fGetModeResponse\x124\n\x04mode\x18\x01 \x01(\x0e2 .viam.service.navigation.v1.ModeR\x04mode"\x89\x01\n\x0eSetModeRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x124\n\x04mode\x18\x02 \x01(\x0e2 .viam.service.navigation.v1.ModeR\x04mode\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x11\n\x0fSetModeResponse"P\n\x08Waypoint\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x124\n\x08location\x18\x02 \x01(\x0b2\x18.viam.common.v1.GeoPointR\x08location"W\n\x12GetLocationRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"t\n\x13GetLocationResponse\x124\n\x08location\x18\x01 \x01(\x0b2\x18.viam.common.v1.GeoPointR\x08location\x12\'\n\x0fcompass_heading\x18\x02 \x01(\x01R\x0ecompassHeading"X\n\x13GetWaypointsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"Z\n\x14GetWaypointsResponse\x12B\n\twaypoints\x18\x01 \x03(\x0b2$.viam.service.navigation.v1.WaypointR\twaypoints"\x8d\x01\n\x12AddWaypointRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x124\n\x08location\x18\x02 \x01(\x0b2\x18.viam.common.v1.GeoPointR\x08location\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x15\n\x13AddWaypointResponse"j\n\x15RemoveWaypointRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x0e\n\x02id\x18\x02 \x01(\tR\x02id\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x18\n\x16RemoveWaypointResponse"X\n\x13GetObstaclesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"Q\n\x14GetObstaclesResponse\x129\n\tobstacles\x18\x01 \x03(\x0b2\x1b.viam.common.v1.GeoGeometryR\tobstacles"v\n\x04Path\x126\n\x17destination_waypoint_id\x18\x01 \x01(\tR\x15destinationWaypointId\x126\n\tgeopoints\x18\x02 \x03(\x0b2\x18.viam.common.v1.GeoPointR\tgeopoints"T\n\x0fGetPathsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"J\n\x10GetPathsResponse\x126\n\x05paths\x18\x01 \x03(\x0b2 .viam.service.navigation.v1.PathR\x05paths"*\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"W\n\x15GetPropertiesResponse\x12>\n\x08map_type\x18\x01 \x01(\x0e2#.viam.service.navigation.v1.MapTypeR\x07mapType*H\n\x07MapType\x12\x18\n\x14MAP_TYPE_UNSPECIFIED\x10\x00\x12\x11\n\rMAP_TYPE_NONE\x10\x01\x12\x10\n\x0cMAP_TYPE_GPS\x10\x02*R\n\x04Mode\x12\x14\n\x10MODE_UNSPECIFIED\x10\x00\x12\x0f\n\x0bMODE_MANUAL\x10\x01\x12\x11\n\rMODE_WAYPOINT\x10\x02\x12\x10\n\x0cMODE_EXPLORE\x10\x032\x97\r\n\x11NavigationService\x12\x97\x01\n\x07GetMode\x12*.viam.service.navigation.v1.GetModeRequest\x1a+.viam.service.navigation.v1.GetModeResponse"3\x82\xd3\xe4\x93\x02-\x12+/viam/api/v1/service/navigation/{name}/mode\x12\x97\x01\n\x07SetMode\x12*.viam.service.navigation.v1.SetModeRequest\x1a+.viam.service.navigation.v1.SetModeResponse"3\x82\xd3\xe4\x93\x02-\x1a+/viam/api/v1/service/navigation/{name}/mode\x12\xa7\x01\n\x0bGetLocation\x12..viam.service.navigation.v1.GetLocationRequest\x1a/.viam.service.navigation.v1.GetLocationResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/service/navigation/{name}/location\x12\xab\x01\n\x0cGetWaypoints\x12/.viam.service.navigation.v1.GetWaypointsRequest\x1a0.viam.service.navigation.v1.GetWaypointsResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/service/navigation/{name}/waypoints\x12\xa8\x01\n\x0bAddWaypoint\x12..viam.service.navigation.v1.AddWaypointRequest\x1a/.viam.service.navigation.v1.AddWaypointResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/service/navigation/{name}/waypoints\x12\xb6\x01\n\x0eRemoveWaypoint\x121.viam.service.navigation.v1.RemoveWaypointRequest\x1a2.viam.service.navigation.v1.RemoveWaypointResponse"=\x82\xd3\xe4\x93\x027*5/viam/api/v1/service/navigation/{name}/waypoints/{id}\x12\xaf\x01\n\x0cGetObstacles\x12/.viam.service.navigation.v1.GetObstaclesRequest\x1a0.viam.service.navigation.v1.GetObstaclesResponse"<\x82\xd3\xe4\x93\x026\x124/viam/api/v1/service/navigation/{name}/get_obstacles\x12\x9f\x01\n\x08GetPaths\x12+.viam.service.navigation.v1.GetPathsRequest\x1a,.viam.service.navigation.v1.GetPathsResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/service/navigation/{name}/get_paths\x12\xaf\x01\n\rGetProperties\x120.viam.service.navigation.v1.GetPropertiesRequest\x1a1.viam.service.navigation.v1.GetPropertiesResponse"9\x82\xd3\xe4\x93\x023\x121/viam/api/v1/service/navigation/{name}/properties\x12\x8b\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"9\x82\xd3\xe4\x93\x023"1/viam/api/v1/service/navigation/{name}/do_commandBG\n\x1ecom.viam.service.navigation.v1Z%go.viam.com/api/service/navigation/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/service/sensors/v1/sensors_grpc.py b/src/viam/gen/service/sensors/v1/sensors_grpc.py index 0cf67a4dbe..cd60cbe1c7 100644 --- a/src/viam/gen/service/sensors/v1/sensors_grpc.py +++ b/src/viam/gen/service/sensors/v1/sensors_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import service diff --git a/src/viam/gen/service/sensors/v1/sensors_pb2.py b/src/viam/gen/service/sensors/v1/sensors_pb2.py index 3c1bd25a27..41bd1af07c 100644 --- a/src/viam/gen/service/sensors/v1/sensors_pb2.py +++ b/src/viam/gen/service/sensors/v1/sensors_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/sensors/v1/sensors.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'service/sensors/v1/sensors.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n service/sensors/v1/sensors.proto\x12\x17viam.service.sensors.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"b\n\x11GetSensorsRequest\x12\x16\n\x04name\x18\x01 \x01(\tB\x02\x18\x01R\x04name\x121\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructB\x02\x18\x01R\x05extra:\x02\x18\x01"]\n\x12GetSensorsResponse\x12C\n\x0csensor_names\x18\x01 \x03(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x0bsensorNames:\x02\x18\x01"\xa8\x01\n\x12GetReadingsRequest\x12\x16\n\x04name\x18\x01 \x01(\tB\x02\x18\x01R\x04name\x12C\n\x0csensor_names\x18\x02 \x03(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x0bsensorNames\x121\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructB\x02\x18\x01R\x05extra:\x02\x18\x01"\xea\x01\n\x08Readings\x124\n\x04name\x18\x01 \x01(\x0b2\x1c.viam.common.v1.ResourceNameB\x02\x18\x01R\x04name\x12O\n\x08readings\x18\x02 \x03(\x0b2/.viam.service.sensors.v1.Readings.ReadingsEntryB\x02\x18\x01R\x08readings\x1aS\n\rReadingsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b2\x16.google.protobuf.ValueR\x05value:\x028\x01:\x02\x18\x01"\\\n\x13GetReadingsResponse\x12A\n\x08readings\x18\x01 \x03(\x0b2!.viam.service.sensors.v1.ReadingsB\x02\x18\x01R\x08readings:\x02\x18\x012\xda\x03\n\x0eSensorsService\x12\x95\x01\n\nGetSensors\x12*.viam.service.sensors.v1.GetSensorsRequest\x1a+.viam.service.sensors.v1.GetSensorsResponse".\x88\x02\x01\x82\xd3\xe4\x93\x02%\x12#/viam/api/v1/service/{name}/sensors\x12\xa1\x01\n\x0bGetReadings\x12+.viam.service.sensors.v1.GetReadingsRequest\x1a,.viam.service.sensors.v1.GetReadingsResponse"7\x88\x02\x01\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/service/sensors/{name}/readings\x12\x8b\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"9\x88\x02\x01\x82\xd3\xe4\x93\x020"./viam/api/v1/service/sensors/{name}/do_commandBD\n\x1bcom.viam.service.sensors.v1Z"go.viam.com/api/service/sensors/v1\xb8\x01\x01b\x06proto3') _globals = globals() diff --git a/src/viam/gen/service/shell/v1/shell_grpc.py b/src/viam/gen/service/shell/v1/shell_grpc.py index 94a5557b3b..96b1f5fdb8 100644 --- a/src/viam/gen/service/shell/v1/shell_grpc.py +++ b/src/viam/gen/service/shell/v1/shell_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 import google.protobuf.timestamp_pb2 from .... import service diff --git a/src/viam/gen/service/shell/v1/shell_pb2.py b/src/viam/gen/service/shell/v1/shell_pb2.py index 1e44da682c..fc0e2e3e05 100644 --- a/src/viam/gen/service/shell/v1/shell_pb2.py +++ b/src/viam/gen/service/shell/v1/shell_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/shell/v1/shell.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'service/shell/v1/shell.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cservice/shell/v1/shell.proto\x12\x15viam.service.shell.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto"j\n\x0cShellRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x17\n\x07data_in\x18\x02 \x01(\tR\x06dataIn\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"W\n\rShellResponse\x12\x19\n\x08data_out\x18\x01 \x01(\tR\x07dataOut\x12\x19\n\x08data_err\x18\x02 \x01(\tR\x07dataErr\x12\x10\n\x03eof\x18\x03 \x01(\x08R\x03eof"\xda\x01\n\x08FileData\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04size\x18\x02 \x01(\x03R\x04size\x12\x15\n\x06is_dir\x18\x03 \x01(\x08R\x05isDir\x12\x12\n\x04data\x18\x04 \x01(\x0cR\x04data\x12\x10\n\x03eof\x18\x05 \x01(\x08R\x03eof\x12:\n\x08mod_time\x18\x06 \x01(\x0b2\x1a.google.protobuf.TimestampH\x00R\x07modTime\x88\x01\x01\x12\x17\n\x04mode\x18\x07 \x01(\rH\x01R\x04mode\x88\x01\x01B\x0b\n\t_mod_timeB\x07\n\x05_mode"\xf1\x01\n!CopyFilesToMachineRequestMetadata\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12K\n\x0bsource_type\x18\x02 \x01(\x0e2*.viam.service.shell.v1.CopyFilesSourceTypeR\nsourceType\x12 \n\x0bdestination\x18\x03 \x01(\tR\x0bdestination\x12\x1a\n\x08preserve\x18\x04 \x01(\x08R\x08preserve\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xbe\x01\n\x19CopyFilesToMachineRequest\x12V\n\x08metadata\x18\x01 \x01(\x0b28.viam.service.shell.v1.CopyFilesToMachineRequestMetadataH\x00R\x08metadata\x12>\n\tfile_data\x18\x02 \x01(\x0b2\x1f.viam.service.shell.v1.FileDataH\x00R\x08fileDataB\t\n\x07request"@\n\x1aCopyFilesToMachineResponse\x12"\n\rack_last_file\x18\x01 \x01(\x08R\x0backLastFile"\xc3\x01\n#CopyFilesFromMachineRequestMetadata\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n\x05paths\x18\x02 \x03(\tR\x05paths\x12\'\n\x0fallow_recursion\x18\x03 \x01(\x08R\x0eallowRecursion\x12\x1a\n\x08preserve\x18\x04 \x01(\x08R\x08preserve\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xa8\x01\n\x1bCopyFilesFromMachineRequest\x12X\n\x08metadata\x18\x01 \x01(\x0b2:.viam.service.shell.v1.CopyFilesFromMachineRequestMetadataH\x00R\x08metadata\x12$\n\rack_last_file\x18\x02 \x01(\x08H\x00R\x0backLastFileB\t\n\x07request"s\n$CopyFilesFromMachineResponseMetadata\x12K\n\x0bsource_type\x18\x01 \x01(\x0e2*.viam.service.shell.v1.CopyFilesSourceTypeR\nsourceType"\xc5\x01\n\x1cCopyFilesFromMachineResponse\x12Y\n\x08metadata\x18\x01 \x01(\x0b2;.viam.service.shell.v1.CopyFilesFromMachineResponseMetadataH\x00R\x08metadata\x12>\n\tfile_data\x18\x02 \x01(\x0b2\x1f.viam.service.shell.v1.FileDataH\x00R\x08fileDataB\n\n\x08response*\xbd\x01\n\x13CopyFilesSourceType\x12&\n"COPY_FILES_SOURCE_TYPE_UNSPECIFIED\x10\x00\x12&\n"COPY_FILES_SOURCE_TYPE_SINGLE_FILE\x10\x01\x12+\n\'COPY_FILES_SOURCE_TYPE_SINGLE_DIRECTORY\x10\x02\x12)\n%COPY_FILES_SOURCE_TYPE_MULTIPLE_FILES\x10\x032\xf4\x03\n\x0cShellService\x12V\n\x05Shell\x12#.viam.service.shell.v1.ShellRequest\x1a$.viam.service.shell.v1.ShellResponse(\x010\x01\x12}\n\x12CopyFilesToMachine\x120.viam.service.shell.v1.CopyFilesToMachineRequest\x1a1.viam.service.shell.v1.CopyFilesToMachineResponse(\x010\x01\x12\x83\x01\n\x14CopyFilesFromMachine\x122.viam.service.shell.v1.CopyFilesFromMachineRequest\x1a3.viam.service.shell.v1.CopyFilesFromMachineResponse(\x010\x01\x12\x86\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"4\x82\xd3\xe4\x93\x02.",/viam/api/v1/service/shell/{name}/do_commandB=\n\x19com.viam.service.shell.v1Z go.viam.com/api/service/shell/v1b\x06proto3') diff --git a/src/viam/gen/service/slam/v1/slam_grpc.py b/src/viam/gen/service/slam/v1/slam_grpc.py index e13b518f28..ee0378c051 100644 --- a/src/viam/gen/service/slam/v1/slam_grpc.py +++ b/src/viam/gen/service/slam/v1/slam_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 from .... import service class SLAMServiceBase(abc.ABC): diff --git a/src/viam/gen/service/slam/v1/slam_pb2.py b/src/viam/gen/service/slam/v1/slam_pb2.py index 236e196407..a71d978bb0 100644 --- a/src/viam/gen/service/slam/v1/slam_pb2.py +++ b/src/viam/gen/service/slam/v1/slam_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/slam/v1/slam.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'service/slam/v1/slam.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1aservice/slam/v1/slam.proto\x12\x14viam.service.slam.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto"(\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"?\n\x13GetPositionResponse\x12(\n\x04pose\x18\x01 \x01(\x0b2\x14.viam.common.v1.PoseR\x04pose"t\n\x17GetPointCloudMapRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12/\n\x11return_edited_map\x18\x02 \x01(\x08H\x00R\x0freturnEditedMap\x88\x01\x01B\x14\n\x12_return_edited_map"M\n\x18GetPointCloudMapResponse\x121\n\x15point_cloud_pcd_chunk\x18\x01 \x01(\x0cR\x12pointCloudPcdChunk"-\n\x17GetInternalStateRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"L\n\x18GetInternalStateResponse\x120\n\x14internal_state_chunk\x18\x01 \x01(\x0cR\x12internalStateChunk"*\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"\x9a\x02\n\x15GetPropertiesResponse\x12\x1d\n\ncloud_slam\x18\x01 \x01(\x08R\tcloudSlam\x12D\n\x0cmapping_mode\x18\x02 \x01(\x0e2!.viam.service.slam.v1.MappingModeR\x0bmappingMode\x12<\n\x18internal_state_file_type\x18\x03 \x01(\tH\x00R\x15internalStateFileType\x88\x01\x01\x12A\n\x0bsensor_info\x18\x04 \x03(\x0b2 .viam.service.slam.v1.SensorInfoR\nsensorInfoB\x1b\n\x19_internal_state_file_type"V\n\nSensorInfo\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x124\n\x04type\x18\x02 \x01(\x0e2 .viam.service.slam.v1.SensorTypeR\x04type*\x92\x01\n\x0bMappingMode\x12\x1c\n\x18MAPPING_MODE_UNSPECIFIED\x10\x00\x12\x1f\n\x1bMAPPING_MODE_CREATE_NEW_MAP\x10\x01\x12\x1e\n\x1aMAPPING_MODE_LOCALIZE_ONLY\x10\x02\x12$\n MAPPING_MODE_UPDATE_EXISTING_MAP\x10\x03*b\n\nSensorType\x12\x1b\n\x17SENSOR_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12SENSOR_TYPE_CAMERA\x10\x01\x12\x1f\n\x1bSENSOR_TYPE_MOVEMENT_SENSOR\x10\x022\xac\x06\n\x0bSLAMService\x12\x95\x01\n\x0bGetPosition\x12(.viam.service.slam.v1.GetPositionRequest\x1a).viam.service.slam.v1.GetPositionResponse"1\x82\xd3\xe4\x93\x02+\x12)/viam/api/v1/service/slam/{name}/position\x12\xad\x01\n\x10GetPointCloudMap\x12-.viam.service.slam.v1.GetPointCloudMapRequest\x1a..viam.service.slam.v1.GetPointCloudMapResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/service/slam/{name}/point_cloud_map0\x01\x12\xac\x01\n\x10GetInternalState\x12-.viam.service.slam.v1.GetInternalStateRequest\x1a..viam.service.slam.v1.GetInternalStateResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/service/slam/{name}/internal_state0\x01\x12\x9d\x01\n\rGetProperties\x12*.viam.service.slam.v1.GetPropertiesRequest\x1a+.viam.service.slam.v1.GetPropertiesResponse"3\x82\xd3\xe4\x93\x02-\x12+/viam/api/v1/service/slam/{name}/properties\x12\x85\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"3\x82\xd3\xe4\x93\x02-"+/viam/api/v1/service/slam/{name}/do_commandB;\n\x18com.viam.service.slam.v1Z\x1fgo.viam.com/api/service/slam/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/src/viam/gen/service/video/v1/video_grpc.py b/src/viam/gen/service/video/v1/video_grpc.py index 2f8a26a36b..fadd8c262e 100644 --- a/src/viam/gen/service/video/v1/video_grpc.py +++ b/src/viam/gen/service/video/v1/video_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 import google.protobuf.timestamp_pb2 from .... import service diff --git a/src/viam/gen/service/video/v1/video_pb2.py b/src/viam/gen/service/video/v1/video_pb2.py index 14cdab81e8..1b18833d42 100644 --- a/src/viam/gen/service/video/v1/video_pb2.py +++ b/src/viam/gen/service/video/v1/video_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/video/v1/video.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'service/video/v1/video.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cservice/video/v1/video.proto\x12\x15viam.service.video.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto"\xc3\x02\n\x0fGetVideoRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12C\n\x0fstart_timestamp\x18\x02 \x01(\x0b2\x1a.google.protobuf.TimestampR\x0estartTimestamp\x12?\n\rend_timestamp\x18\x03 \x01(\x0b2\x1a.google.protobuf.TimestampR\x0cendTimestamp\x12\x1f\n\x0bvideo_codec\x18\x04 \x01(\tR\nvideoCodec\x12\'\n\x0fvideo_container\x18\x05 \x01(\tR\x0evideoContainer\x12\x1d\n\nrequest_id\x18\x06 \x01(\tR\trequestId\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"y\n\x10GetVideoResponse\x12\x1d\n\nvideo_data\x18\x01 \x01(\x0cR\tvideoData\x12\'\n\x0fvideo_container\x18\x02 \x01(\tR\x0evideoContainer\x12\x1d\n\nrequest_id\x18\x03 \x01(\tR\trequestId2\xb3\x02\n\x0cVideoService\x12\x99\x01\n\x08GetVideo\x12&.viam.service.video.v1.GetVideoRequest\x1a\'.viam.service.video.v1.GetVideoResponse":\x82\xd3\xe4\x93\x024"2/viam/api/v1/service/video/{name}/get_video_stream0\x01\x12\x86\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"4\x82\xd3\xe4\x93\x02.",/viam/api/v1/service/video/{name}/do_commandB=\n\x19com.viam.service.video.v1Z go.viam.com/api/service/video/v1b\x06proto3') diff --git a/src/viam/gen/service/vision/v1/vision_grpc.py b/src/viam/gen/service/vision/v1/vision_grpc.py index d9de71244c..474d1ae2ec 100644 --- a/src/viam/gen/service/vision/v1/vision_grpc.py +++ b/src/viam/gen/service/vision/v1/vision_grpc.py @@ -7,7 +7,7 @@ import grpclib.server from .... import common from .... import component -from .... import google +import google.api.annotations_pb2 import google.protobuf.struct_pb2 from .... import service diff --git a/src/viam/gen/service/vision/v1/vision_pb2.py b/src/viam/gen/service/vision/v1/vision_pb2.py index 93015f0125..b63b5a8e12 100644 --- a/src/viam/gen/service/vision/v1/vision_pb2.py +++ b/src/viam/gen/service/vision/v1/vision_pb2.py @@ -4,11 +4,11 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/vision/v1/vision.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'service/vision/v1/vision.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from ....component.camera.v1 import camera_pb2 as component_dot_camera_dot_v1_dot_camera__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1eservice/vision/v1/vision.proto\x12\x16viam.service.vision.v1\x1a\x16common/v1/common.proto\x1a component/camera/v1/camera.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"\xba\x01\n\x14GetDetectionsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n\x05image\x18\x02 \x01(\x0cR\x05image\x12\x14\n\x05width\x18\x03 \x01(\x03R\x05width\x12\x16\n\x06height\x18\x04 \x01(\x03R\x06height\x12\x1b\n\tmime_type\x18\x05 \x01(\tR\x08mimeType\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"Z\n\x15GetDetectionsResponse\x12A\n\ndetections\x18\x01 \x03(\x0b2!.viam.service.vision.v1.DetectionR\ndetections"\x84\x01\n\x1eGetDetectionsFromCameraRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x0bcamera_name\x18\x02 \x01(\tR\ncameraName\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"d\n\x1fGetDetectionsFromCameraResponse\x12A\n\ndetections\x18\x01 \x03(\x0b2!.viam.service.vision.v1.DetectionR\ndetections"\xea\x03\n\tDetection\x12\x18\n\x05x_min\x18\x01 \x01(\x03H\x00R\x04xMin\x88\x01\x01\x12\x18\n\x05y_min\x18\x02 \x01(\x03H\x01R\x04yMin\x88\x01\x01\x12\x18\n\x05x_max\x18\x03 \x01(\x03H\x02R\x04xMax\x88\x01\x01\x12\x18\n\x05y_max\x18\x04 \x01(\x03H\x03R\x04yMax\x88\x01\x01\x12\x1e\n\nconfidence\x18\x05 \x01(\x01R\nconfidence\x12\x1d\n\nclass_name\x18\x06 \x01(\tR\tclassName\x12-\n\x10x_min_normalized\x18\x07 \x01(\x01H\x04R\x0exMinNormalized\x88\x01\x01\x12-\n\x10y_min_normalized\x18\x08 \x01(\x01H\x05R\x0eyMinNormalized\x88\x01\x01\x12-\n\x10x_max_normalized\x18\t \x01(\x01H\x06R\x0exMaxNormalized\x88\x01\x01\x12-\n\x10y_max_normalized\x18\n \x01(\x01H\x07R\x0eyMaxNormalized\x88\x01\x01B\x08\n\x06_x_minB\x08\n\x06_y_minB\x08\n\x06_x_maxB\x08\n\x06_y_maxB\x13\n\x11_x_min_normalizedB\x13\n\x11_y_min_normalizedB\x13\n\x11_x_max_normalizedB\x13\n\x11_y_max_normalized"\xcd\x01\n\x19GetClassificationsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n\x05image\x18\x02 \x01(\x0cR\x05image\x12\x14\n\x05width\x18\x03 \x01(\x05R\x05width\x12\x16\n\x06height\x18\x04 \x01(\x05R\x06height\x12\x1b\n\tmime_type\x18\x05 \x01(\tR\x08mimeType\x12\x0c\n\x01n\x18\x06 \x01(\x05R\x01n\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"n\n\x1aGetClassificationsResponse\x12P\n\x0fclassifications\x18\x01 \x03(\x0b2&.viam.service.vision.v1.ClassificationR\x0fclassifications"\x97\x01\n#GetClassificationsFromCameraRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x0bcamera_name\x18\x02 \x01(\tR\ncameraName\x12\x0c\n\x01n\x18\x03 \x01(\x05R\x01n\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"x\n$GetClassificationsFromCameraResponse\x12P\n\x0fclassifications\x18\x01 \x03(\x0b2&.viam.service.vision.v1.ClassificationR\x0fclassifications"O\n\x0eClassification\x12\x1d\n\nclass_name\x18\x01 \x01(\tR\tclassName\x12\x1e\n\nconfidence\x18\x02 \x01(\x01R\nconfidence"\x9e\x01\n\x1bGetObjectPointCloudsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x0bcamera_name\x18\x02 \x01(\tR\ncameraName\x12\x1b\n\tmime_type\x18\x03 \x01(\tR\x08mimeType\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"w\n\x1cGetObjectPointCloudsResponse\x12\x1b\n\tmime_type\x18\x01 \x01(\tR\x08mimeType\x12:\n\x07objects\x18\x02 \x03(\x0b2 .viam.common.v1.PointCloudObjectR\x07objects"Y\n\x14GetPropertiesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xc5\x02\n\x1bCaptureAllFromCameraRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x0bcamera_name\x18\x02 \x01(\tR\ncameraName\x12!\n\x0creturn_image\x18\x03 \x01(\x08R\x0breturnImage\x125\n\x16return_classifications\x18\x04 \x01(\x08R\x15returnClassifications\x12+\n\x11return_detections\x18\x05 \x01(\x08R\x10returnDetections\x12;\n\x1areturn_object_point_clouds\x18\x06 \x01(\x08R\x17returnObjectPointClouds\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xd5\x02\n\x1cCaptureAllFromCameraResponse\x125\n\x05image\x18\x01 \x01(\x0b2\x1f.viam.component.camera.v1.ImageR\x05image\x12A\n\ndetections\x18\x02 \x03(\x0b2!.viam.service.vision.v1.DetectionR\ndetections\x12P\n\x0fclassifications\x18\x03 \x03(\x0b2&.viam.service.vision.v1.ClassificationR\x0fclassifications\x12:\n\x07objects\x18\x04 \x03(\x0b2 .viam.common.v1.PointCloudObjectR\x07objects\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xca\x01\n\x15GetPropertiesResponse\x12;\n\x19classifications_supported\x18\x01 \x01(\x08R\x18classificationsSupported\x121\n\x14detections_supported\x18\x02 \x01(\x08R\x13detectionsSupported\x12A\n\x1dobject_point_clouds_supported\x18\x03 \x01(\x08R\x1aobjectPointCloudsSupported2\xcd\x0b\n\rVisionService\x12\xc8\x01\n\x17GetDetectionsFromCamera\x126.viam.service.vision.v1.GetDetectionsFromCameraRequest\x1a7.viam.service.vision.v1.GetDetectionsFromCameraResponse"<\x82\xd3\xe4\x93\x026"4/viam/api/v1/service/vision/{name}/camera_detections\x12\xa3\x01\n\rGetDetections\x12,.viam.service.vision.v1.GetDetectionsRequest\x1a-.viam.service.vision.v1.GetDetectionsResponse"5\x82\xd3\xe4\x93\x02/"-/viam/api/v1/service/vision/{name}/detections\x12\xdc\x01\n\x1cGetClassificationsFromCamera\x12;.viam.service.vision.v1.GetClassificationsFromCameraRequest\x1a<.viam.service.vision.v1.GetClassificationsFromCameraResponse"A\x82\xd3\xe4\x93\x02;"9/viam/api/v1/service/vision/{name}/camera_classifications\x12\xb7\x01\n\x12GetClassifications\x121.viam.service.vision.v1.GetClassificationsRequest\x1a2.viam.service.vision.v1.GetClassificationsResponse":\x82\xd3\xe4\x93\x024"2/viam/api/v1/service/vision/{name}/classifications\x12\xc1\x01\n\x14GetObjectPointClouds\x123.viam.service.vision.v1.GetObjectPointCloudsRequest\x1a4.viam.service.vision.v1.GetObjectPointCloudsResponse">\x82\xd3\xe4\x93\x028"6/viam/api/v1/service/vision/{name}/object_point_clouds\x12\xa7\x01\n\rGetProperties\x12,.viam.service.vision.v1.GetPropertiesRequest\x1a-.viam.service.vision.v1.GetPropertiesResponse"9\x82\xd3\xe4\x93\x023"1/viam/api/v1/service/vision/{name}/get_properties\x12\xb9\x01\n\x14CaptureAllFromCamera\x123.viam.service.vision.v1.CaptureAllFromCameraRequest\x1a4.viam.service.vision.v1.CaptureAllFromCameraResponse"6\x82\xd3\xe4\x93\x020"./viam/api/v1/service/vision/{name}/capture_all\x12\x87\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"5\x82\xd3\xe4\x93\x02/"-/viam/api/v1/service/vision/{name}/do_commandB?\n\x1acom.viam.service.vision.v1Z!go.viam.com/api/service/vision/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/service/worldstatestore/v1/world_state_store_grpc.py b/src/viam/gen/service/worldstatestore/v1/world_state_store_grpc.py index ec0da5c3e9..0552f97266 100644 --- a/src/viam/gen/service/worldstatestore/v1/world_state_store_grpc.py +++ b/src/viam/gen/service/worldstatestore/v1/world_state_store_grpc.py @@ -6,7 +6,7 @@ if typing.TYPE_CHECKING: import grpclib.server from .... import common -from .... import google +import google.api.annotations_pb2 import google.protobuf.field_mask_pb2 import google.protobuf.struct_pb2 from .... import service diff --git a/src/viam/gen/service/worldstatestore/v1/world_state_store_pb2.py b/src/viam/gen/service/worldstatestore/v1/world_state_store_pb2.py index d8c3c373fb..c409c4b40c 100644 --- a/src/viam/gen/service/worldstatestore/v1/world_state_store_pb2.py +++ b/src/viam/gen/service/worldstatestore/v1/world_state_store_pb2.py @@ -4,10 +4,10 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'service/worldstatestore/v1/world_state_store.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'service/worldstatestore/v1/world_state_store.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 -from ....google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import field_mask_pb2 as google_dot_protobuf_dot_field__mask__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n2service/worldstatestore/v1/world_state_store.proto\x12\x1fviam.service.worldstatestore.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a google/protobuf/field_mask.proto\x1a\x1cgoogle/protobuf/struct.proto"U\n\x10ListUUIDsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra")\n\x11ListUUIDsResponse\x12\x14\n\x05uuids\x18\x01 \x03(\x0cR\x05uuids"l\n\x13GetTransformRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04uuid\x18\x02 \x01(\x0cR\x04uuid\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"O\n\x14GetTransformResponse\x127\n\ttransform\x18\x02 \x01(\x0b2\x19.viam.common.v1.TransformR\ttransform"b\n\x1dStreamTransformChangesRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\xf3\x01\n\x1eStreamTransformChangesResponse\x12U\n\x0bchange_type\x18\x01 \x01(\x0e24.viam.service.worldstatestore.v1.TransformChangeTypeR\nchangeType\x127\n\ttransform\x18\x02 \x01(\x0b2\x19.viam.common.v1.TransformR\ttransform\x12A\n\x0eupdated_fields\x18\x03 \x01(\x0b2\x1a.google.protobuf.FieldMaskR\rupdatedFields*\xa3\x01\n\x13TransformChangeType\x12%\n!TRANSFORM_CHANGE_TYPE_UNSPECIFIED\x10\x00\x12\x1f\n\x1bTRANSFORM_CHANGE_TYPE_ADDED\x10\x01\x12!\n\x1dTRANSFORM_CHANGE_TYPE_REMOVED\x10\x02\x12!\n\x1dTRANSFORM_CHANGE_TYPE_UPDATED\x10\x032\x8c\x05\n\x16WorldStateStoreService\x12t\n\tListUUIDs\x121.viam.service.worldstatestore.v1.ListUUIDsRequest\x1a2.viam.service.worldstatestore.v1.ListUUIDsResponse"\x00\x12}\n\x0cGetTransform\x124.viam.service.worldstatestore.v1.GetTransformRequest\x1a5.viam.service.worldstatestore.v1.GetTransformResponse"\x00\x12\xe9\x01\n\x16StreamTransformChanges\x12>.viam.service.worldstatestore.v1.StreamTransformChangesRequest\x1a?.viam.service.worldstatestore.v1.StreamTransformChangesResponse"L\x82\xd3\xe4\x93\x02F\x12D/viam/api/v1/service/worldstatestore/{name}/stream_transform_changes0\x01\x12\x90\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse">\x82\xd3\xe4\x93\x028"6/viam/api/v1/service/worldstatestore/{name}/do_commandBQ\n#com.viam.service.worldstatestore.v1Z*go.viam.com/api/service/worldstatestore/v1b\x06proto3') diff --git a/src/viam/gen/stream/v1/stream_pb2.py b/src/viam/gen/stream/v1/stream_pb2.py index 0880f1f7ce..e23734ff35 100644 --- a/src/viam/gen/stream/v1/stream_pb2.py +++ b/src/viam/gen/stream/v1/stream_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'stream/v1/stream.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'stream/v1/stream.proto') _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16stream/v1/stream.proto\x12\x0fproto.stream.v1"\x14\n\x12ListStreamsRequest"+\n\x13ListStreamsResponse\x12\x14\n\x05names\x18\x01 \x03(\tR\x05names"&\n\x10AddStreamRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"\x13\n\x11AddStreamResponse")\n\x13RemoveStreamRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"\x16\n\x14RemoveStreamResponse":\n\nResolution\x12\x14\n\x05width\x18\x01 \x01(\x05R\x05width\x12\x16\n\x06height\x18\x02 \x01(\x05R\x06height"-\n\x17GetStreamOptionsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"Y\n\x18GetStreamOptionsResponse\x12=\n\x0bresolutions\x18\x01 \x03(\x0b2\x1b.proto.stream.v1.ResolutionR\x0bresolutions"j\n\x17SetStreamOptionsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12;\n\nresolution\x18\x02 \x01(\x0b2\x1b.proto.stream.v1.ResolutionR\nresolution"\x1a\n\x18SetStreamOptionsResponse2\xec\x03\n\rStreamService\x12X\n\x0bListStreams\x12#.proto.stream.v1.ListStreamsRequest\x1a$.proto.stream.v1.ListStreamsResponse\x12R\n\tAddStream\x12!.proto.stream.v1.AddStreamRequest\x1a".proto.stream.v1.AddStreamResponse\x12g\n\x10GetStreamOptions\x12(.proto.stream.v1.GetStreamOptionsRequest\x1a).proto.stream.v1.GetStreamOptionsResponse\x12g\n\x10SetStreamOptions\x12(.proto.stream.v1.SetStreamOptionsRequest\x1a).proto.stream.v1.SetStreamOptionsResponse\x12[\n\x0cRemoveStream\x12$.proto.stream.v1.RemoveStreamRequest\x1a%.proto.stream.v1.RemoveStreamResponseB.Z,github.com/edaniels/gostream/proto/stream/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/tagger/v1/tagger_pb2.py b/src/viam/gen/tagger/v1/tagger_pb2.py index d8d2e0adea..e911a56f79 100644 --- a/src/viam/gen/tagger/v1/tagger_pb2.py +++ b/src/viam/gen/tagger/v1/tagger_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 7, 34, 0, '', 'tagger/v1/tagger.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 6, 33, 5, '', 'tagger/v1/tagger.proto') _sym_db = _symbol_database.Default() from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16tagger/v1/tagger.proto\x12\ttagger.v1\x1a google/protobuf/descriptor.proto:3\n\x04tags\x12\x1d.google.protobuf.FieldOptions\x18\xc3\xe03 \x01(\tR\x04tags:>\n\noneof_tags\x12\x1d.google.protobuf.OneofOptions\x18\xc3\xe03 \x01(\tR\toneofTagsB4Z2github.com/srikrsna/protoc-gen-gotag/tagger;taggerb\x06proto3') diff --git a/src/viam/proto/app/__init__.py b/src/viam/proto/app/__init__.py index bf8ec975f7..073253d723 100644 --- a/src/viam/proto/app/__init__.py +++ b/src/viam/proto/app/__init__.py @@ -1,16 +1,18 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.app.v1.app_grpc import AppServiceBase, AppServiceStub, UnimplementedAppServiceBase +''' +from ...gen.app.v1.app_grpc import ( + AppServiceBase, + AppServiceStub, + UnimplementedAppServiceBase +) from ...gen.app.v1.app_pb2 import ( - PKCE, - AdditionalFragment, - AddRoleRequest, - AddRoleResponse, APIKey, APIKeyWithAuthorizations, + AddRoleRequest, + AddRoleResponse, + AdditionalFragment, App, AppCustomizations, AppType, @@ -181,16 +183,16 @@ LocationAuthResponse, LocationOrganization, LocationSummary, + MLModelMetadata, + MLModelVersion, + MLTrainingMetadata, + MLTrainingVersion, MachinePickerCustomizations, MachineSummary, MarkPartAsMainRequest, MarkPartAsMainResponse, MarkPartForRestartRequest, MarkPartForRestartResponse, - MLModelMetadata, - MLModelVersion, - MLTrainingMetadata, - MLTrainingVersion, Model, Module, ModuleFileInfo, @@ -204,6 +206,7 @@ NewRobotResponse, OAuthConfig, OnlineState, + OrgDetails, Organization, OrganizationGetLogoRequest, OrganizationGetLogoResponse, @@ -216,7 +219,7 @@ OrganizationSetLogoResponse, OrganizationSetSupportEmailRequest, OrganizationSetSupportEmailResponse, - OrgDetails, + PKCE, PartSummary, ReadOAuthAppRequest, ReadOAuthAppResponse, @@ -241,15 +244,16 @@ SearchOrganizationsResponse, SetFragmentTagRequest, SetFragmentTagResponse, - SharedSecret, ShareLocationRequest, ShareLocationResponse, + SharedSecret, StorageConfig, TailRobotPartLogsRequest, TailRobotPartLogsResponse, TextOverrides, TransferRegistryItemRequest, TransferRegistryItemResponse, + URLValidation, UnshareLocationRequest, UnshareLocationResponse, UpdateBillingServiceRequest, @@ -288,303 +292,302 @@ UploadModuleFileRequest, UploadModuleFileResponse, Uploads, - URLValidation, VersionHistory, ViamAgentVersion, ViamServerVersion, - Visibility, + Visibility ) __all__ = [ - "AppServiceBase", - "AppServiceStub", - "UnimplementedAppServiceBase", - "APIKey", - "APIKeyWithAuthorizations", - "AddRoleRequest", - "AddRoleResponse", - "AdditionalFragment", - "App", - "AppCustomizations", - "AppType", - "AuthenticationType", - "AuthenticatorInfo", - "Authorization", - "AuthorizationDetails", - "AuthorizedPermissions", - "BillingAddress", - "ChangeRoleRequest", - "ChangeRoleResponse", - "CheckPermissionsRequest", - "CheckPermissionsResponse", - "ClientAuthentication", - "CreateFragmentRequest", - "CreateFragmentResponse", - "CreateKeyFromExistingKeyAuthorizationsRequest", - "CreateKeyFromExistingKeyAuthorizationsResponse", - "CreateKeyRequest", - "CreateKeyResponse", - "CreateLocationRequest", - "CreateLocationResponse", - "CreateLocationSecretRequest", - "CreateLocationSecretResponse", - "CreateModuleRequest", - "CreateModuleResponse", - "CreateOAuthAppRequest", - "CreateOAuthAppResponse", - "CreateOrganizationInviteRequest", - "CreateOrganizationInviteResponse", - "CreateOrganizationRequest", - "CreateOrganizationResponse", - "CreateRegistryItemRequest", - "CreateRegistryItemResponse", - "CreateRobotPartSecretRequest", - "CreateRobotPartSecretResponse", - "DeleteFragmentRequest", - "DeleteFragmentResponse", - "DeleteFragmentTagRequest", - "DeleteFragmentTagResponse", - "DeleteKeyRequest", - "DeleteKeyResponse", - "DeleteLocationRequest", - "DeleteLocationResponse", - "DeleteLocationSecretRequest", - "DeleteLocationSecretResponse", - "DeleteOAuthAppRequest", - "DeleteOAuthAppResponse", - "DeleteOrganizationInviteRequest", - "DeleteOrganizationInviteResponse", - "DeleteOrganizationMemberRequest", - "DeleteOrganizationMemberResponse", - "DeleteOrganizationRequest", - "DeleteOrganizationResponse", - "DeleteRegistryItemRequest", - "DeleteRegistryItemResponse", - "DeleteRobotPartRequest", - "DeleteRobotPartResponse", - "DeleteRobotPartSecretRequest", - "DeleteRobotPartSecretResponse", - "DeleteRobotRequest", - "DeleteRobotResponse", - "DisableAuthServiceRequest", - "DisableAuthServiceResponse", - "DisableBillingServiceRequest", - "DisableBillingServiceResponse", - "EnableAuthServiceRequest", - "EnableAuthServiceResponse", - "EnableBillingServiceRequest", - "EnableBillingServiceResponse", - "EnabledGrant", - "Fragment", - "FragmentError", - "FragmentErrorType", - "FragmentHistoryEntry", - "FragmentImport", - "FragmentImportList", - "FragmentRevision", - "FragmentSummary", - "FragmentTag", - "FragmentUsage", - "FragmentVisibility", - "GetAppBrandingRequest", - "GetAppBrandingResponse", - "GetAppContentRequest", - "GetAppContentResponse", - "GetBillingServiceConfigRequest", - "GetBillingServiceConfigResponse", - "GetFragmentHistoryRequest", - "GetFragmentHistoryResponse", - "GetFragmentRequest", - "GetFragmentResponse", - "GetFragmentUsageRequest", - "GetFragmentUsageResponse", - "GetLocationMetadataRequest", - "GetLocationMetadataResponse", - "GetLocationRequest", - "GetLocationResponse", - "GetModuleRequest", - "GetModuleResponse", - "GetOrganizationMetadataRequest", - "GetOrganizationMetadataResponse", - "GetOrganizationNamespaceAvailabilityRequest", - "GetOrganizationNamespaceAvailabilityResponse", - "GetOrganizationRequest", - "GetOrganizationResponse", - "GetOrganizationsWithAccessToLocationRequest", - "GetOrganizationsWithAccessToLocationResponse", - "GetRegistryItemRequest", - "GetRegistryItemResponse", - "GetRobotAPIKeysRequest", - "GetRobotAPIKeysResponse", - "GetRobotMetadataRequest", - "GetRobotMetadataResponse", - "GetRobotPartByNameAndLocationRequest", - "GetRobotPartByNameAndLocationResponse", - "GetRobotPartHistoryRequest", - "GetRobotPartHistoryResponse", - "GetRobotPartLogsRequest", - "GetRobotPartLogsResponse", - "GetRobotPartMetadataRequest", - "GetRobotPartMetadataResponse", - "GetRobotPartRequest", - "GetRobotPartResponse", - "GetRobotPartsRequest", - "GetRobotPartsResponse", - "GetRobotRequest", - "GetRobotResponse", - "GetRoverRentalRobotsRequest", - "GetRoverRentalRobotsResponse", - "GetUserIDByEmailRequest", - "GetUserIDByEmailResponse", - "ListAuthorizationsRequest", - "ListAuthorizationsResponse", - "ListFragmentsRequest", - "ListFragmentsResponse", - "ListKeysRequest", - "ListKeysResponse", - "ListLocationsRequest", - "ListLocationsResponse", - "ListMachineFragmentsRequest", - "ListMachineFragmentsResponse", - "ListMachineSummariesRequest", - "ListMachineSummariesResponse", - "ListModulesRequest", - "ListModulesResponse", - "ListNestedFragmentsRequest", - "ListNestedFragmentsResponse", - "ListOAuthAppsRequest", - "ListOAuthAppsResponse", - "ListOrganizationMembersRequest", - "ListOrganizationMembersResponse", - "ListOrganizationsByUserRequest", - "ListOrganizationsByUserResponse", - "ListOrganizationsRequest", - "ListOrganizationsResponse", - "ListRegistryItemsRequest", - "ListRegistryItemsResponse", - "ListRobotsForLocationsRequest", - "ListRobotsForLocationsResponse", - "ListRobotsForOrgRequest", - "ListRobotsForOrgResponse", - "ListRobotsRequest", - "ListRobotsResponse", - "Location", - "LocationAuth", - "LocationAuthRequest", - "LocationAuthResponse", - "LocationOrganization", - "LocationSummary", - "MLModelMetadata", - "MLModelVersion", - "MLTrainingMetadata", - "MLTrainingVersion", - "MachinePickerCustomizations", - "MachineSummary", - "MarkPartAsMainRequest", - "MarkPartAsMainResponse", - "MarkPartForRestartRequest", - "MarkPartForRestartResponse", - "Model", - "Module", - "ModuleFileInfo", - "ModuleLanguage", - "ModuleMetadata", - "ModuleSourceType", - "ModuleVersion", - "NewRobotPartRequest", - "NewRobotPartResponse", - "NewRobotRequest", - "NewRobotResponse", - "OAuthConfig", - "OnlineState", - "OrgDetails", - "Organization", - "OrganizationGetLogoRequest", - "OrganizationGetLogoResponse", - "OrganizationGetSupportEmailRequest", - "OrganizationGetSupportEmailResponse", - "OrganizationIdentity", - "OrganizationInvite", - "OrganizationMember", - "OrganizationSetLogoRequest", - "OrganizationSetLogoResponse", - "OrganizationSetSupportEmailRequest", - "OrganizationSetSupportEmailResponse", - "PKCE", - "PartSummary", - "ReadOAuthAppRequest", - "ReadOAuthAppResponse", - "RegistryItem", - "RegistryItemStatus", - "RemoveRoleRequest", - "RemoveRoleResponse", - "RenameKeyRequest", - "RenameKeyResponse", - "RenameRegistryItemRequest", - "RenameRegistryItemResponse", - "ResendOrganizationInviteRequest", - "ResendOrganizationInviteResponse", - "ResolvedFragment", - "Robot", - "RobotPart", - "RobotPartHistoryEntry", - "RotateKeyRequest", - "RotateKeyResponse", - "RoverRentalRobot", - "SearchOrganizationsRequest", - "SearchOrganizationsResponse", - "SetFragmentTagRequest", - "SetFragmentTagResponse", - "ShareLocationRequest", - "ShareLocationResponse", - "SharedSecret", - "StorageConfig", - "TailRobotPartLogsRequest", - "TailRobotPartLogsResponse", - "TextOverrides", - "TransferRegistryItemRequest", - "TransferRegistryItemResponse", - "URLValidation", - "UnshareLocationRequest", - "UnshareLocationResponse", - "UpdateBillingServiceRequest", - "UpdateBillingServiceResponse", - "UpdateFragmentRequest", - "UpdateFragmentResponse", - "UpdateLocationMetadataRequest", - "UpdateLocationMetadataResponse", - "UpdateLocationRequest", - "UpdateLocationResponse", - "UpdateMLModelMetadata", - "UpdateMLTrainingMetadata", - "UpdateModuleMetadata", - "UpdateModuleRequest", - "UpdateModuleResponse", - "UpdateOAuthAppRequest", - "UpdateOAuthAppResponse", - "UpdateOrganizationInviteAuthorizationsRequest", - "UpdateOrganizationInviteAuthorizationsResponse", - "UpdateOrganizationMetadataRequest", - "UpdateOrganizationMetadataResponse", - "UpdateOrganizationNamespaceRequest", - "UpdateOrganizationNamespaceResponse", - "UpdateOrganizationRequest", - "UpdateOrganizationResponse", - "UpdateRegistryItemRequest", - "UpdateRegistryItemResponse", - "UpdateRobotMetadataRequest", - "UpdateRobotMetadataResponse", - "UpdateRobotPartMetadataRequest", - "UpdateRobotPartMetadataResponse", - "UpdateRobotPartRequest", - "UpdateRobotPartResponse", - "UpdateRobotRequest", - "UpdateRobotResponse", - "UploadModuleFileRequest", - "UploadModuleFileResponse", - "Uploads", - "VersionHistory", - "ViamAgentVersion", - "ViamServerVersion", - "Visibility", + 'AppServiceBase', + 'AppServiceStub', + 'UnimplementedAppServiceBase', + 'APIKey', + 'APIKeyWithAuthorizations', + 'AddRoleRequest', + 'AddRoleResponse', + 'AdditionalFragment', + 'App', + 'AppCustomizations', + 'AppType', + 'AuthenticationType', + 'AuthenticatorInfo', + 'Authorization', + 'AuthorizationDetails', + 'AuthorizedPermissions', + 'BillingAddress', + 'ChangeRoleRequest', + 'ChangeRoleResponse', + 'CheckPermissionsRequest', + 'CheckPermissionsResponse', + 'ClientAuthentication', + 'CreateFragmentRequest', + 'CreateFragmentResponse', + 'CreateKeyFromExistingKeyAuthorizationsRequest', + 'CreateKeyFromExistingKeyAuthorizationsResponse', + 'CreateKeyRequest', + 'CreateKeyResponse', + 'CreateLocationRequest', + 'CreateLocationResponse', + 'CreateLocationSecretRequest', + 'CreateLocationSecretResponse', + 'CreateModuleRequest', + 'CreateModuleResponse', + 'CreateOAuthAppRequest', + 'CreateOAuthAppResponse', + 'CreateOrganizationInviteRequest', + 'CreateOrganizationInviteResponse', + 'CreateOrganizationRequest', + 'CreateOrganizationResponse', + 'CreateRegistryItemRequest', + 'CreateRegistryItemResponse', + 'CreateRobotPartSecretRequest', + 'CreateRobotPartSecretResponse', + 'DeleteFragmentRequest', + 'DeleteFragmentResponse', + 'DeleteFragmentTagRequest', + 'DeleteFragmentTagResponse', + 'DeleteKeyRequest', + 'DeleteKeyResponse', + 'DeleteLocationRequest', + 'DeleteLocationResponse', + 'DeleteLocationSecretRequest', + 'DeleteLocationSecretResponse', + 'DeleteOAuthAppRequest', + 'DeleteOAuthAppResponse', + 'DeleteOrganizationInviteRequest', + 'DeleteOrganizationInviteResponse', + 'DeleteOrganizationMemberRequest', + 'DeleteOrganizationMemberResponse', + 'DeleteOrganizationRequest', + 'DeleteOrganizationResponse', + 'DeleteRegistryItemRequest', + 'DeleteRegistryItemResponse', + 'DeleteRobotPartRequest', + 'DeleteRobotPartResponse', + 'DeleteRobotPartSecretRequest', + 'DeleteRobotPartSecretResponse', + 'DeleteRobotRequest', + 'DeleteRobotResponse', + 'DisableAuthServiceRequest', + 'DisableAuthServiceResponse', + 'DisableBillingServiceRequest', + 'DisableBillingServiceResponse', + 'EnableAuthServiceRequest', + 'EnableAuthServiceResponse', + 'EnableBillingServiceRequest', + 'EnableBillingServiceResponse', + 'EnabledGrant', + 'Fragment', + 'FragmentError', + 'FragmentErrorType', + 'FragmentHistoryEntry', + 'FragmentImport', + 'FragmentImportList', + 'FragmentRevision', + 'FragmentSummary', + 'FragmentTag', + 'FragmentUsage', + 'FragmentVisibility', + 'GetAppBrandingRequest', + 'GetAppBrandingResponse', + 'GetAppContentRequest', + 'GetAppContentResponse', + 'GetBillingServiceConfigRequest', + 'GetBillingServiceConfigResponse', + 'GetFragmentHistoryRequest', + 'GetFragmentHistoryResponse', + 'GetFragmentRequest', + 'GetFragmentResponse', + 'GetFragmentUsageRequest', + 'GetFragmentUsageResponse', + 'GetLocationMetadataRequest', + 'GetLocationMetadataResponse', + 'GetLocationRequest', + 'GetLocationResponse', + 'GetModuleRequest', + 'GetModuleResponse', + 'GetOrganizationMetadataRequest', + 'GetOrganizationMetadataResponse', + 'GetOrganizationNamespaceAvailabilityRequest', + 'GetOrganizationNamespaceAvailabilityResponse', + 'GetOrganizationRequest', + 'GetOrganizationResponse', + 'GetOrganizationsWithAccessToLocationRequest', + 'GetOrganizationsWithAccessToLocationResponse', + 'GetRegistryItemRequest', + 'GetRegistryItemResponse', + 'GetRobotAPIKeysRequest', + 'GetRobotAPIKeysResponse', + 'GetRobotMetadataRequest', + 'GetRobotMetadataResponse', + 'GetRobotPartByNameAndLocationRequest', + 'GetRobotPartByNameAndLocationResponse', + 'GetRobotPartHistoryRequest', + 'GetRobotPartHistoryResponse', + 'GetRobotPartLogsRequest', + 'GetRobotPartLogsResponse', + 'GetRobotPartMetadataRequest', + 'GetRobotPartMetadataResponse', + 'GetRobotPartRequest', + 'GetRobotPartResponse', + 'GetRobotPartsRequest', + 'GetRobotPartsResponse', + 'GetRobotRequest', + 'GetRobotResponse', + 'GetRoverRentalRobotsRequest', + 'GetRoverRentalRobotsResponse', + 'GetUserIDByEmailRequest', + 'GetUserIDByEmailResponse', + 'ListAuthorizationsRequest', + 'ListAuthorizationsResponse', + 'ListFragmentsRequest', + 'ListFragmentsResponse', + 'ListKeysRequest', + 'ListKeysResponse', + 'ListLocationsRequest', + 'ListLocationsResponse', + 'ListMachineFragmentsRequest', + 'ListMachineFragmentsResponse', + 'ListMachineSummariesRequest', + 'ListMachineSummariesResponse', + 'ListModulesRequest', + 'ListModulesResponse', + 'ListNestedFragmentsRequest', + 'ListNestedFragmentsResponse', + 'ListOAuthAppsRequest', + 'ListOAuthAppsResponse', + 'ListOrganizationMembersRequest', + 'ListOrganizationMembersResponse', + 'ListOrganizationsByUserRequest', + 'ListOrganizationsByUserResponse', + 'ListOrganizationsRequest', + 'ListOrganizationsResponse', + 'ListRegistryItemsRequest', + 'ListRegistryItemsResponse', + 'ListRobotsForLocationsRequest', + 'ListRobotsForLocationsResponse', + 'ListRobotsForOrgRequest', + 'ListRobotsForOrgResponse', + 'ListRobotsRequest', + 'ListRobotsResponse', + 'Location', + 'LocationAuth', + 'LocationAuthRequest', + 'LocationAuthResponse', + 'LocationOrganization', + 'LocationSummary', + 'MLModelMetadata', + 'MLModelVersion', + 'MLTrainingMetadata', + 'MLTrainingVersion', + 'MachinePickerCustomizations', + 'MachineSummary', + 'MarkPartAsMainRequest', + 'MarkPartAsMainResponse', + 'MarkPartForRestartRequest', + 'MarkPartForRestartResponse', + 'Model', + 'Module', + 'ModuleFileInfo', + 'ModuleLanguage', + 'ModuleMetadata', + 'ModuleSourceType', + 'ModuleVersion', + 'NewRobotPartRequest', + 'NewRobotPartResponse', + 'NewRobotRequest', + 'NewRobotResponse', + 'OAuthConfig', + 'OnlineState', + 'OrgDetails', + 'Organization', + 'OrganizationGetLogoRequest', + 'OrganizationGetLogoResponse', + 'OrganizationGetSupportEmailRequest', + 'OrganizationGetSupportEmailResponse', + 'OrganizationIdentity', + 'OrganizationInvite', + 'OrganizationMember', + 'OrganizationSetLogoRequest', + 'OrganizationSetLogoResponse', + 'OrganizationSetSupportEmailRequest', + 'OrganizationSetSupportEmailResponse', + 'PKCE', + 'PartSummary', + 'ReadOAuthAppRequest', + 'ReadOAuthAppResponse', + 'RegistryItem', + 'RegistryItemStatus', + 'RemoveRoleRequest', + 'RemoveRoleResponse', + 'RenameKeyRequest', + 'RenameKeyResponse', + 'RenameRegistryItemRequest', + 'RenameRegistryItemResponse', + 'ResendOrganizationInviteRequest', + 'ResendOrganizationInviteResponse', + 'ResolvedFragment', + 'Robot', + 'RobotPart', + 'RobotPartHistoryEntry', + 'RotateKeyRequest', + 'RotateKeyResponse', + 'RoverRentalRobot', + 'SearchOrganizationsRequest', + 'SearchOrganizationsResponse', + 'SetFragmentTagRequest', + 'SetFragmentTagResponse', + 'ShareLocationRequest', + 'ShareLocationResponse', + 'SharedSecret', + 'StorageConfig', + 'TailRobotPartLogsRequest', + 'TailRobotPartLogsResponse', + 'TextOverrides', + 'TransferRegistryItemRequest', + 'TransferRegistryItemResponse', + 'URLValidation', + 'UnshareLocationRequest', + 'UnshareLocationResponse', + 'UpdateBillingServiceRequest', + 'UpdateBillingServiceResponse', + 'UpdateFragmentRequest', + 'UpdateFragmentResponse', + 'UpdateLocationMetadataRequest', + 'UpdateLocationMetadataResponse', + 'UpdateLocationRequest', + 'UpdateLocationResponse', + 'UpdateMLModelMetadata', + 'UpdateMLTrainingMetadata', + 'UpdateModuleMetadata', + 'UpdateModuleRequest', + 'UpdateModuleResponse', + 'UpdateOAuthAppRequest', + 'UpdateOAuthAppResponse', + 'UpdateOrganizationInviteAuthorizationsRequest', + 'UpdateOrganizationInviteAuthorizationsResponse', + 'UpdateOrganizationMetadataRequest', + 'UpdateOrganizationMetadataResponse', + 'UpdateOrganizationNamespaceRequest', + 'UpdateOrganizationNamespaceResponse', + 'UpdateOrganizationRequest', + 'UpdateOrganizationResponse', + 'UpdateRegistryItemRequest', + 'UpdateRegistryItemResponse', + 'UpdateRobotMetadataRequest', + 'UpdateRobotMetadataResponse', + 'UpdateRobotPartMetadataRequest', + 'UpdateRobotPartMetadataResponse', + 'UpdateRobotPartRequest', + 'UpdateRobotPartResponse', + 'UpdateRobotRequest', + 'UpdateRobotResponse', + 'UploadModuleFileRequest', + 'UploadModuleFileResponse', + 'Uploads', + 'VersionHistory', + 'ViamAgentVersion', + 'ViamServerVersion', + 'Visibility', ] diff --git a/src/viam/proto/app/agent/__init__.py b/src/viam/proto/app/agent/__init__.py index d65e26305c..2e0e2b9fc4 100644 --- a/src/viam/proto/app/agent/__init__.py +++ b/src/viam/proto/app/agent/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.agent.v1.agent_grpc import AgentDeviceServiceBase, AgentDeviceServiceStub, UnimplementedAgentDeviceServiceBase +''' +from ....gen.app.agent.v1.agent_grpc import ( + AgentDeviceServiceBase, + AgentDeviceServiceStub, + UnimplementedAgentDeviceServiceBase +) from ....gen.app.agent.v1.agent_pb2 import ( DeviceAgentConfigRequest, DeviceAgentConfigResponse, @@ -11,18 +14,18 @@ HostInfo, PackageFormat, UpdateInfo, - VersionInfo, + VersionInfo ) __all__ = [ - "AgentDeviceServiceBase", - "AgentDeviceServiceStub", - "UnimplementedAgentDeviceServiceBase", - "DeviceAgentConfigRequest", - "DeviceAgentConfigResponse", - "DeviceSubsystemConfig", - "HostInfo", - "PackageFormat", - "UpdateInfo", - "VersionInfo", + 'AgentDeviceServiceBase', + 'AgentDeviceServiceStub', + 'UnimplementedAgentDeviceServiceBase', + 'DeviceAgentConfigRequest', + 'DeviceAgentConfigResponse', + 'DeviceSubsystemConfig', + 'HostInfo', + 'PackageFormat', + 'UpdateInfo', + 'VersionInfo', ] diff --git a/src/viam/proto/app/billing.py b/src/viam/proto/app/billing.py index 0fdec984e6..9da3d8ed02 100644 --- a/src/viam/proto/app/billing.py +++ b/src/viam/proto/app/billing.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.app.v1.billing_grpc import BillingServiceBase, BillingServiceStub, UnimplementedBillingServiceBase +''' +from ...gen.app.v1.billing_grpc import ( + BillingServiceBase, + BillingServiceStub, + UnimplementedBillingServiceBase +) from ...gen.app.v1.billing_pb2 import ( ChargeOrganizationRequest, ChargeOrganizationResponse, @@ -36,43 +39,43 @@ UpdateOrganizationBillingTierResponse, UsageCost, UsageCostType, - VerificationInfo, + VerificationInfo ) __all__ = [ - "BillingServiceBase", - "BillingServiceStub", - "UnimplementedBillingServiceBase", - "ChargeOrganizationRequest", - "ChargeOrganizationResponse", - "CreateInvoiceAndChargeImmediatelyRequest", - "CreateInvoiceAndChargeImmediatelyResponse", - "GetAvailableBillingTiersRequest", - "GetAvailableBillingTiersResponse", - "GetCurrentMonthUsageRequest", - "GetCurrentMonthUsageResponse", - "GetInvoicePdfRequest", - "GetInvoicePdfResponse", - "GetInvoicesSummaryRequest", - "GetInvoicesSummaryResponse", - "GetLocationBillingOrganizationRequest", - "GetLocationBillingOrganizationResponse", - "GetOrgBillingInformationRequest", - "GetOrgBillingInformationResponse", - "InvoiceSummary", - "PaymentMethodCard", - "PaymentMethodType", - "PaymentMethodUSBankAccount", - "ResourceUsageCosts", - "ResourceUsageCostsBySource", - "SendPaymentRequiredEmailRequest", - "SendPaymentRequiredEmailResponse", - "SourceType", - "UpdateLocationBillingOrganizationRequest", - "UpdateLocationBillingOrganizationResponse", - "UpdateOrganizationBillingTierRequest", - "UpdateOrganizationBillingTierResponse", - "UsageCost", - "UsageCostType", - "VerificationInfo", + 'BillingServiceBase', + 'BillingServiceStub', + 'UnimplementedBillingServiceBase', + 'ChargeOrganizationRequest', + 'ChargeOrganizationResponse', + 'CreateInvoiceAndChargeImmediatelyRequest', + 'CreateInvoiceAndChargeImmediatelyResponse', + 'GetAvailableBillingTiersRequest', + 'GetAvailableBillingTiersResponse', + 'GetCurrentMonthUsageRequest', + 'GetCurrentMonthUsageResponse', + 'GetInvoicePdfRequest', + 'GetInvoicePdfResponse', + 'GetInvoicesSummaryRequest', + 'GetInvoicesSummaryResponse', + 'GetLocationBillingOrganizationRequest', + 'GetLocationBillingOrganizationResponse', + 'GetOrgBillingInformationRequest', + 'GetOrgBillingInformationResponse', + 'InvoiceSummary', + 'PaymentMethodCard', + 'PaymentMethodType', + 'PaymentMethodUSBankAccount', + 'ResourceUsageCosts', + 'ResourceUsageCostsBySource', + 'SendPaymentRequiredEmailRequest', + 'SendPaymentRequiredEmailResponse', + 'SourceType', + 'UpdateLocationBillingOrganizationRequest', + 'UpdateLocationBillingOrganizationResponse', + 'UpdateOrganizationBillingTierRequest', + 'UpdateOrganizationBillingTierResponse', + 'UsageCost', + 'UsageCostType', + 'VerificationInfo', ] diff --git a/src/viam/proto/app/cloudslam/__init__.py b/src/viam/proto/app/cloudslam/__init__.py index 1f01b79f50..2fad1b5cef 100644 --- a/src/viam/proto/app/cloudslam/__init__.py +++ b/src/viam/proto/app/cloudslam/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.cloudslam.v1.cloud_slam_grpc import CloudSLAMServiceBase, CloudSLAMServiceStub, UnimplementedCloudSLAMServiceBase +''' +from ....gen.app.cloudslam.v1.cloud_slam_grpc import ( + CloudSLAMServiceBase, + CloudSLAMServiceStub, + UnimplementedCloudSLAMServiceBase +) from ....gen.app.cloudslam.v1.cloud_slam_pb2 import ( CaptureInterval, EndStatus, @@ -21,28 +24,28 @@ StartMappingSessionRequest, StartMappingSessionResponse, StopMappingSessionRequest, - StopMappingSessionResponse, + StopMappingSessionResponse ) __all__ = [ - "CloudSLAMServiceBase", - "CloudSLAMServiceStub", - "UnimplementedCloudSLAMServiceBase", - "CaptureInterval", - "EndStatus", - "GetActiveMappingSessionsForRobotRequest", - "GetActiveMappingSessionsForRobotResponse", - "GetMappingSessionMetadataByIDRequest", - "GetMappingSessionMetadataByIDResponse", - "GetMappingSessionPointCloudRequest", - "GetMappingSessionPointCloudResponse", - "ListMappingSessionsRequest", - "ListMappingSessionsResponse", - "MappingMetadata", - "Module", - "SensorInfo", - "StartMappingSessionRequest", - "StartMappingSessionResponse", - "StopMappingSessionRequest", - "StopMappingSessionResponse", + 'CloudSLAMServiceBase', + 'CloudSLAMServiceStub', + 'UnimplementedCloudSLAMServiceBase', + 'CaptureInterval', + 'EndStatus', + 'GetActiveMappingSessionsForRobotRequest', + 'GetActiveMappingSessionsForRobotResponse', + 'GetMappingSessionMetadataByIDRequest', + 'GetMappingSessionMetadataByIDResponse', + 'GetMappingSessionPointCloudRequest', + 'GetMappingSessionPointCloudResponse', + 'ListMappingSessionsRequest', + 'ListMappingSessionsResponse', + 'MappingMetadata', + 'Module', + 'SensorInfo', + 'StartMappingSessionRequest', + 'StartMappingSessionResponse', + 'StopMappingSessionRequest', + 'StopMappingSessionResponse', ] diff --git a/src/viam/proto/app/data/__init__.py b/src/viam/proto/app/data/__init__.py index b6d237f51f..708349fb7d 100644 --- a/src/viam/proto/app/data/__init__.py +++ b/src/viam/proto/app/data/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.data.v1.data_grpc import DataServiceBase, DataServiceStub, UnimplementedDataServiceBase +''' +from ....gen.app.data.v1.data_grpc import ( + DataServiceBase, + DataServiceStub, + UnimplementedDataServiceBase +) from ....gen.app.data.v1.data_pb2 import ( AddBinaryDataToDatasetByIDsRequest, AddBinaryDataToDatasetByIDsResponse, @@ -57,8 +60,8 @@ GetSavedQueryRequest, GetSavedQueryResponse, Index, - IndexableCollection, IndexCreator, + IndexableCollection, ListIndexesRequest, ListIndexesResponse, ListSavedQueriesRequest, @@ -89,96 +92,96 @@ UpdateBoundingBoxRequest, UpdateBoundingBoxResponse, UpdateSavedQueryRequest, - UpdateSavedQueryResponse, + UpdateSavedQueryResponse ) __all__ = [ - "DataServiceBase", - "DataServiceStub", - "UnimplementedDataServiceBase", - "AddBinaryDataToDatasetByIDsRequest", - "AddBinaryDataToDatasetByIDsResponse", - "AddBoundingBoxToImageByIDRequest", - "AddBoundingBoxToImageByIDResponse", - "AddTagsToBinaryDataByFilterRequest", - "AddTagsToBinaryDataByFilterResponse", - "AddTagsToBinaryDataByIDsRequest", - "AddTagsToBinaryDataByIDsResponse", - "Annotations", - "BinaryData", - "BinaryDataByFilterRequest", - "BinaryDataByFilterResponse", - "BinaryDataByIDsRequest", - "BinaryDataByIDsResponse", - "BinaryID", - "BinaryMetadata", - "BoundingBox", - "BoundingBoxLabelsByFilterRequest", - "BoundingBoxLabelsByFilterResponse", - "CaptureInterval", - "CaptureMetadata", - "Classification", - "ConfigureDatabaseUserRequest", - "ConfigureDatabaseUserResponse", - "CreateBinaryDataSignedURLRequest", - "CreateBinaryDataSignedURLResponse", - "CreateIndexRequest", - "CreateIndexResponse", - "CreateSavedQueryRequest", - "CreateSavedQueryResponse", - "DataRequest", - "DeleteBinaryDataByFilterRequest", - "DeleteBinaryDataByFilterResponse", - "DeleteBinaryDataByIDsRequest", - "DeleteBinaryDataByIDsResponse", - "DeleteIndexRequest", - "DeleteIndexResponse", - "DeleteSavedQueryRequest", - "DeleteSavedQueryResponse", - "DeleteTabularDataRequest", - "DeleteTabularDataResponse", - "DeleteTabularFilter", - "ExportTabularDataRequest", - "ExportTabularDataResponse", - "Filter", - "GetDatabaseConnectionRequest", - "GetDatabaseConnectionResponse", - "GetLatestTabularDataRequest", - "GetLatestTabularDataResponse", - "GetSavedQueryRequest", - "GetSavedQueryResponse", - "Index", - "IndexCreator", - "IndexableCollection", - "ListIndexesRequest", - "ListIndexesResponse", - "ListSavedQueriesRequest", - "ListSavedQueriesResponse", - "Order", - "Query", - "RemoveBinaryDataFromDatasetByIDsRequest", - "RemoveBinaryDataFromDatasetByIDsResponse", - "RemoveBoundingBoxFromImageByIDRequest", - "RemoveBoundingBoxFromImageByIDResponse", - "RemoveTagsFromBinaryDataByFilterRequest", - "RemoveTagsFromBinaryDataByFilterResponse", - "RemoveTagsFromBinaryDataByIDsRequest", - "RemoveTagsFromBinaryDataByIDsResponse", - "TabularData", - "TabularDataByFilterRequest", - "TabularDataByFilterResponse", - "TabularDataByMQLRequest", - "TabularDataByMQLResponse", - "TabularDataBySQLRequest", - "TabularDataBySQLResponse", - "TabularDataSource", - "TabularDataSourceType", - "TagsByFilterRequest", - "TagsByFilterResponse", - "TagsFilter", - "TagsFilterType", - "UpdateBoundingBoxRequest", - "UpdateBoundingBoxResponse", - "UpdateSavedQueryRequest", - "UpdateSavedQueryResponse", + 'DataServiceBase', + 'DataServiceStub', + 'UnimplementedDataServiceBase', + 'AddBinaryDataToDatasetByIDsRequest', + 'AddBinaryDataToDatasetByIDsResponse', + 'AddBoundingBoxToImageByIDRequest', + 'AddBoundingBoxToImageByIDResponse', + 'AddTagsToBinaryDataByFilterRequest', + 'AddTagsToBinaryDataByFilterResponse', + 'AddTagsToBinaryDataByIDsRequest', + 'AddTagsToBinaryDataByIDsResponse', + 'Annotations', + 'BinaryData', + 'BinaryDataByFilterRequest', + 'BinaryDataByFilterResponse', + 'BinaryDataByIDsRequest', + 'BinaryDataByIDsResponse', + 'BinaryID', + 'BinaryMetadata', + 'BoundingBox', + 'BoundingBoxLabelsByFilterRequest', + 'BoundingBoxLabelsByFilterResponse', + 'CaptureInterval', + 'CaptureMetadata', + 'Classification', + 'ConfigureDatabaseUserRequest', + 'ConfigureDatabaseUserResponse', + 'CreateBinaryDataSignedURLRequest', + 'CreateBinaryDataSignedURLResponse', + 'CreateIndexRequest', + 'CreateIndexResponse', + 'CreateSavedQueryRequest', + 'CreateSavedQueryResponse', + 'DataRequest', + 'DeleteBinaryDataByFilterRequest', + 'DeleteBinaryDataByFilterResponse', + 'DeleteBinaryDataByIDsRequest', + 'DeleteBinaryDataByIDsResponse', + 'DeleteIndexRequest', + 'DeleteIndexResponse', + 'DeleteSavedQueryRequest', + 'DeleteSavedQueryResponse', + 'DeleteTabularDataRequest', + 'DeleteTabularDataResponse', + 'DeleteTabularFilter', + 'ExportTabularDataRequest', + 'ExportTabularDataResponse', + 'Filter', + 'GetDatabaseConnectionRequest', + 'GetDatabaseConnectionResponse', + 'GetLatestTabularDataRequest', + 'GetLatestTabularDataResponse', + 'GetSavedQueryRequest', + 'GetSavedQueryResponse', + 'Index', + 'IndexCreator', + 'IndexableCollection', + 'ListIndexesRequest', + 'ListIndexesResponse', + 'ListSavedQueriesRequest', + 'ListSavedQueriesResponse', + 'Order', + 'Query', + 'RemoveBinaryDataFromDatasetByIDsRequest', + 'RemoveBinaryDataFromDatasetByIDsResponse', + 'RemoveBoundingBoxFromImageByIDRequest', + 'RemoveBoundingBoxFromImageByIDResponse', + 'RemoveTagsFromBinaryDataByFilterRequest', + 'RemoveTagsFromBinaryDataByFilterResponse', + 'RemoveTagsFromBinaryDataByIDsRequest', + 'RemoveTagsFromBinaryDataByIDsResponse', + 'TabularData', + 'TabularDataByFilterRequest', + 'TabularDataByFilterResponse', + 'TabularDataByMQLRequest', + 'TabularDataByMQLResponse', + 'TabularDataBySQLRequest', + 'TabularDataBySQLResponse', + 'TabularDataSource', + 'TabularDataSourceType', + 'TagsByFilterRequest', + 'TagsByFilterResponse', + 'TagsFilter', + 'TagsFilterType', + 'UpdateBoundingBoxRequest', + 'UpdateBoundingBoxResponse', + 'UpdateSavedQueryRequest', + 'UpdateSavedQueryResponse', ] diff --git a/src/viam/proto/app/datapipelines/__init__.py b/src/viam/proto/app/datapipelines/__init__.py index b81d834f12..060344965d 100644 --- a/src/viam/proto/app/datapipelines/__init__.py +++ b/src/viam/proto/app/datapipelines/__init__.py @@ -1,12 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.app.datapipelines.v1.data_pipelines_grpc import ( DataPipelinesServiceBase, DataPipelinesServiceStub, - UnimplementedDataPipelinesServiceBase, + UnimplementedDataPipelinesServiceBase ) from ....gen.app.datapipelines.v1.data_pipelines_pb2 import ( CreateDataPipelineRequest, @@ -27,30 +26,30 @@ ListDataPipelinesRequest, ListDataPipelinesResponse, RenameDataPipelineRequest, - RenameDataPipelineResponse, + RenameDataPipelineResponse ) __all__ = [ - "DataPipelinesServiceBase", - "DataPipelinesServiceStub", - "UnimplementedDataPipelinesServiceBase", - "CreateDataPipelineRequest", - "CreateDataPipelineResponse", - "DataPipeline", - "DataPipelineRun", - "DataPipelineRunStatus", - "DeleteDataPipelineRequest", - "DeleteDataPipelineResponse", - "DisableDataPipelineRequest", - "DisableDataPipelineResponse", - "EnableDataPipelineRequest", - "EnableDataPipelineResponse", - "GetDataPipelineRequest", - "GetDataPipelineResponse", - "ListDataPipelineRunsRequest", - "ListDataPipelineRunsResponse", - "ListDataPipelinesRequest", - "ListDataPipelinesResponse", - "RenameDataPipelineRequest", - "RenameDataPipelineResponse", + 'DataPipelinesServiceBase', + 'DataPipelinesServiceStub', + 'UnimplementedDataPipelinesServiceBase', + 'CreateDataPipelineRequest', + 'CreateDataPipelineResponse', + 'DataPipeline', + 'DataPipelineRun', + 'DataPipelineRunStatus', + 'DeleteDataPipelineRequest', + 'DeleteDataPipelineResponse', + 'DisableDataPipelineRequest', + 'DisableDataPipelineResponse', + 'EnableDataPipelineRequest', + 'EnableDataPipelineResponse', + 'GetDataPipelineRequest', + 'GetDataPipelineResponse', + 'ListDataPipelineRunsRequest', + 'ListDataPipelineRunsResponse', + 'ListDataPipelinesRequest', + 'ListDataPipelinesResponse', + 'RenameDataPipelineRequest', + 'RenameDataPipelineResponse', ] diff --git a/src/viam/proto/app/dataset/__init__.py b/src/viam/proto/app/dataset/__init__.py index 602f219342..36c0715d98 100644 --- a/src/viam/proto/app/dataset/__init__.py +++ b/src/viam/proto/app/dataset/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.dataset.v1.dataset_grpc import DatasetServiceBase, DatasetServiceStub, UnimplementedDatasetServiceBase +''' +from ....gen.app.dataset.v1.dataset_grpc import ( + DatasetServiceBase, + DatasetServiceStub, + UnimplementedDatasetServiceBase +) from ....gen.app.dataset.v1.dataset_pb2 import ( CreateDatasetRequest, CreateDatasetResponse, @@ -17,24 +20,24 @@ MergeDatasetsRequest, MergeDatasetsResponse, RenameDatasetRequest, - RenameDatasetResponse, + RenameDatasetResponse ) __all__ = [ - "DatasetServiceBase", - "DatasetServiceStub", - "UnimplementedDatasetServiceBase", - "CreateDatasetRequest", - "CreateDatasetResponse", - "Dataset", - "DeleteDatasetRequest", - "DeleteDatasetResponse", - "ListDatasetsByIDsRequest", - "ListDatasetsByIDsResponse", - "ListDatasetsByOrganizationIDRequest", - "ListDatasetsByOrganizationIDResponse", - "MergeDatasetsRequest", - "MergeDatasetsResponse", - "RenameDatasetRequest", - "RenameDatasetResponse", + 'DatasetServiceBase', + 'DatasetServiceStub', + 'UnimplementedDatasetServiceBase', + 'CreateDatasetRequest', + 'CreateDatasetResponse', + 'Dataset', + 'DeleteDatasetRequest', + 'DeleteDatasetResponse', + 'ListDatasetsByIDsRequest', + 'ListDatasetsByIDsResponse', + 'ListDatasetsByOrganizationIDRequest', + 'ListDatasetsByOrganizationIDResponse', + 'MergeDatasetsRequest', + 'MergeDatasetsResponse', + 'RenameDatasetRequest', + 'RenameDatasetResponse', ] diff --git a/src/viam/proto/app/datasync/__init__.py b/src/viam/proto/app/datasync/__init__.py index a9f8451b5c..62e46c8abd 100644 --- a/src/viam/proto/app/datasync/__init__.py +++ b/src/viam/proto/app/datasync/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.datasync.v1.data_sync_grpc import DataSyncServiceBase, DataSyncServiceStub, UnimplementedDataSyncServiceBase +''' +from ....gen.app.datasync.v1.data_sync_grpc import ( + DataSyncServiceBase, + DataSyncServiceStub, + UnimplementedDataSyncServiceBase +) from ....gen.app.datasync.v1.data_sync_pb2 import ( CaptureInterval, DataCaptureMetadata, @@ -19,26 +22,26 @@ SensorMetadata, StreamingDataCaptureUploadRequest, StreamingDataCaptureUploadResponse, - UploadMetadata, + UploadMetadata ) __all__ = [ - "DataSyncServiceBase", - "DataSyncServiceStub", - "UnimplementedDataSyncServiceBase", - "CaptureInterval", - "DataCaptureMetadata", - "DataCaptureUploadMetadata", - "DataCaptureUploadRequest", - "DataCaptureUploadResponse", - "DataType", - "FileData", - "FileUploadRequest", - "FileUploadResponse", - "MimeType", - "SensorData", - "SensorMetadata", - "StreamingDataCaptureUploadRequest", - "StreamingDataCaptureUploadResponse", - "UploadMetadata", + 'DataSyncServiceBase', + 'DataSyncServiceStub', + 'UnimplementedDataSyncServiceBase', + 'CaptureInterval', + 'DataCaptureMetadata', + 'DataCaptureUploadMetadata', + 'DataCaptureUploadRequest', + 'DataCaptureUploadResponse', + 'DataType', + 'FileData', + 'FileUploadRequest', + 'FileUploadResponse', + 'MimeType', + 'SensorData', + 'SensorMetadata', + 'StreamingDataCaptureUploadRequest', + 'StreamingDataCaptureUploadResponse', + 'UploadMetadata', ] diff --git a/src/viam/proto/app/end_user.py b/src/viam/proto/app/end_user.py index f0290e5f07..4eaa744ca1 100644 --- a/src/viam/proto/app/end_user.py +++ b/src/viam/proto/app/end_user.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.app.v1.end_user_grpc import EndUserServiceBase, EndUserServiceStub, UnimplementedEndUserServiceBase +''' +from ...gen.app.v1.end_user_grpc import ( + EndUserServiceBase, + EndUserServiceStub, + UnimplementedEndUserServiceBase +) from ...gen.app.v1.end_user_pb2 import ( AcceptLegalRequest, AcceptLegalResponse, @@ -14,21 +17,21 @@ RegisterAuthApplicationRequest, RegisterAuthApplicationResponse, UpdateAuthApplicationRequest, - UpdateAuthApplicationResponse, + UpdateAuthApplicationResponse ) __all__ = [ - "EndUserServiceBase", - "EndUserServiceStub", - "UnimplementedEndUserServiceBase", - "AcceptLegalRequest", - "AcceptLegalResponse", - "GetAuthApplicationRequest", - "GetAuthApplicationResponse", - "IsLegalAcceptedRequest", - "IsLegalAcceptedResponse", - "RegisterAuthApplicationRequest", - "RegisterAuthApplicationResponse", - "UpdateAuthApplicationRequest", - "UpdateAuthApplicationResponse", + 'EndUserServiceBase', + 'EndUserServiceStub', + 'UnimplementedEndUserServiceBase', + 'AcceptLegalRequest', + 'AcceptLegalResponse', + 'GetAuthApplicationRequest', + 'GetAuthApplicationResponse', + 'IsLegalAcceptedRequest', + 'IsLegalAcceptedResponse', + 'RegisterAuthApplicationRequest', + 'RegisterAuthApplicationResponse', + 'UpdateAuthApplicationRequest', + 'UpdateAuthApplicationResponse', ] diff --git a/src/viam/proto/app/mlinference/__init__.py b/src/viam/proto/app/mlinference/__init__.py index 4bd1fe1824..d3b3de1230 100644 --- a/src/viam/proto/app/mlinference/__init__.py +++ b/src/viam/proto/app/mlinference/__init__.py @@ -1,15 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.mlinference.v1.ml_inference_grpc import MLInferenceServiceBase, MLInferenceServiceStub, UnimplementedMLInferenceServiceBase -from ....gen.app.mlinference.v1.ml_inference_pb2 import GetInferenceRequest, GetInferenceResponse +''' +from ....gen.app.mlinference.v1.ml_inference_grpc import ( + MLInferenceServiceBase, + MLInferenceServiceStub, + UnimplementedMLInferenceServiceBase +) +from ....gen.app.mlinference.v1.ml_inference_pb2 import ( + GetInferenceRequest, + GetInferenceResponse +) __all__ = [ - "MLInferenceServiceBase", - "MLInferenceServiceStub", - "UnimplementedMLInferenceServiceBase", - "GetInferenceRequest", - "GetInferenceResponse", + 'MLInferenceServiceBase', + 'MLInferenceServiceStub', + 'UnimplementedMLInferenceServiceBase', + 'GetInferenceRequest', + 'GetInferenceResponse', ] diff --git a/src/viam/proto/app/mltraining/__init__.py b/src/viam/proto/app/mltraining/__init__.py index 650b266553..ccf8f80a7f 100644 --- a/src/viam/proto/app/mltraining/__init__.py +++ b/src/viam/proto/app/mltraining/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.mltraining.v1.ml_training_grpc import MLTrainingServiceBase, MLTrainingServiceStub, UnimplementedMLTrainingServiceBase +''' +from ....gen.app.mltraining.v1.ml_training_grpc import ( + MLTrainingServiceBase, + MLTrainingServiceStub, + UnimplementedMLTrainingServiceBase +) from ....gen.app.mltraining.v1.ml_training_pb2 import ( CancelTrainingJobRequest, CancelTrainingJobResponse, @@ -26,33 +29,33 @@ SubmitTrainingJobResponse, TrainingJobLogEntry, TrainingJobMetadata, - TrainingStatus, + TrainingStatus ) __all__ = [ - "MLTrainingServiceBase", - "MLTrainingServiceStub", - "UnimplementedMLTrainingServiceBase", - "CancelTrainingJobRequest", - "CancelTrainingJobResponse", - "Container", - "DeleteCompletedTrainingJobRequest", - "DeleteCompletedTrainingJobResponse", - "GetTrainingJobLogsRequest", - "GetTrainingJobLogsResponse", - "GetTrainingJobRequest", - "GetTrainingJobResponse", - "ListSupportedContainersRequest", - "ListSupportedContainersResponse", - "ListTrainingJobsRequest", - "ListTrainingJobsResponse", - "ModelFramework", - "ModelType", - "SubmitCustomTrainingJobRequest", - "SubmitCustomTrainingJobResponse", - "SubmitTrainingJobRequest", - "SubmitTrainingJobResponse", - "TrainingJobLogEntry", - "TrainingJobMetadata", - "TrainingStatus", + 'MLTrainingServiceBase', + 'MLTrainingServiceStub', + 'UnimplementedMLTrainingServiceBase', + 'CancelTrainingJobRequest', + 'CancelTrainingJobResponse', + 'Container', + 'DeleteCompletedTrainingJobRequest', + 'DeleteCompletedTrainingJobResponse', + 'GetTrainingJobLogsRequest', + 'GetTrainingJobLogsResponse', + 'GetTrainingJobRequest', + 'GetTrainingJobResponse', + 'ListSupportedContainersRequest', + 'ListSupportedContainersResponse', + 'ListTrainingJobsRequest', + 'ListTrainingJobsResponse', + 'ModelFramework', + 'ModelType', + 'SubmitCustomTrainingJobRequest', + 'SubmitCustomTrainingJobResponse', + 'SubmitTrainingJobRequest', + 'SubmitTrainingJobResponse', + 'TrainingJobLogEntry', + 'TrainingJobMetadata', + 'TrainingStatus', ] diff --git a/src/viam/proto/app/packages/__init__.py b/src/viam/proto/app/packages/__init__.py index b09b26537f..263674cc7a 100644 --- a/src/viam/proto/app/packages/__init__.py +++ b/src/viam/proto/app/packages/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.app.packages.v1.packages_grpc import PackageServiceBase, PackageServiceStub, UnimplementedPackageServiceBase +''' +from ....gen.app.packages.v1.packages_grpc import ( + PackageServiceBase, + PackageServiceStub, + UnimplementedPackageServiceBase +) from ....gen.app.packages.v1.packages_pb2 import ( CreatePackageRequest, CreatePackageResponse, @@ -16,23 +19,23 @@ ListPackagesResponse, Package, PackageInfo, - PackageType, + PackageType ) __all__ = [ - "PackageServiceBase", - "PackageServiceStub", - "UnimplementedPackageServiceBase", - "CreatePackageRequest", - "CreatePackageResponse", - "DeletePackageRequest", - "DeletePackageResponse", - "FileInfo", - "GetPackageRequest", - "GetPackageResponse", - "ListPackagesRequest", - "ListPackagesResponse", - "Package", - "PackageInfo", - "PackageType", + 'PackageServiceBase', + 'PackageServiceStub', + 'UnimplementedPackageServiceBase', + 'CreatePackageRequest', + 'CreatePackageResponse', + 'DeletePackageRequest', + 'DeletePackageResponse', + 'FileInfo', + 'GetPackageRequest', + 'GetPackageResponse', + 'ListPackagesRequest', + 'ListPackagesResponse', + 'Package', + 'PackageInfo', + 'PackageType', ] diff --git a/src/viam/proto/app/robot.py b/src/viam/proto/app/robot.py index 87494020ce..c092bf778f 100644 --- a/src/viam/proto/app/robot.py +++ b/src/viam/proto/app/robot.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.app.v1.robot_grpc import RobotServiceBase, RobotServiceStub, UnimplementedRobotServiceBase +''' +from ...gen.app.v1.robot_grpc import ( + RobotServiceBase, + RobotServiceStub, + UnimplementedRobotServiceBase +) from ...gen.app.v1.robot_pb2 import ( AgentInfo, AppValidationStatus, @@ -18,8 +21,8 @@ CredentialsType, ExternalAuthConfig, Frame, - JobConfig, JWKSFile, + JobConfig, LocationSecret, LogConfiguration, LogPatternConfig, @@ -41,48 +44,48 @@ SessionsConfig, TracingConfig, TrafficTunnelEndpoint, - Translation, + Translation ) __all__ = [ - "RobotServiceBase", - "RobotServiceStub", - "UnimplementedRobotServiceBase", - "AgentInfo", - "AppValidationStatus", - "AuthConfig", - "AuthHandlerConfig", - "CertificateRequest", - "CertificateResponse", - "CloudConfig", - "ComponentConfig", - "ConfigRequest", - "ConfigResponse", - "CredentialsType", - "ExternalAuthConfig", - "Frame", - "JWKSFile", - "JobConfig", - "LocationSecret", - "LogConfiguration", - "LogPatternConfig", - "LogRequest", - "LogResponse", - "MaintenanceConfig", - "ModuleConfig", - "NeedsRestartRequest", - "NeedsRestartResponse", - "NetworkConfig", - "Orientation", - "PackageConfig", - "ProcessConfig", - "RemoteAuth", - "RemoteConfig", - "ResourceLevelServiceConfig", - "RobotConfig", - "ServiceConfig", - "SessionsConfig", - "TracingConfig", - "TrafficTunnelEndpoint", - "Translation", + 'RobotServiceBase', + 'RobotServiceStub', + 'UnimplementedRobotServiceBase', + 'AgentInfo', + 'AppValidationStatus', + 'AuthConfig', + 'AuthHandlerConfig', + 'CertificateRequest', + 'CertificateResponse', + 'CloudConfig', + 'ComponentConfig', + 'ConfigRequest', + 'ConfigResponse', + 'CredentialsType', + 'ExternalAuthConfig', + 'Frame', + 'JWKSFile', + 'JobConfig', + 'LocationSecret', + 'LogConfiguration', + 'LogPatternConfig', + 'LogRequest', + 'LogResponse', + 'MaintenanceConfig', + 'ModuleConfig', + 'NeedsRestartRequest', + 'NeedsRestartResponse', + 'NetworkConfig', + 'Orientation', + 'PackageConfig', + 'ProcessConfig', + 'RemoteAuth', + 'RemoteConfig', + 'ResourceLevelServiceConfig', + 'RobotConfig', + 'ServiceConfig', + 'SessionsConfig', + 'TracingConfig', + 'TrafficTunnelEndpoint', + 'Translation', ] diff --git a/src/viam/proto/common/__init__.py b/src/viam/proto/common/__init__.py index f6f72fc580..6ce7d8a204 100644 --- a/src/viam/proto/common/__init__.py +++ b/src/viam/proto/common/__init__.py @@ -1,8 +1,7 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ...gen.common.v1.common_pb2 import ( ActuatorStatus, AudioInfo, @@ -10,9 +9,9 @@ DoCommandRequest, DoCommandResponse, GeoGeometry, + GeoPoint, GeometriesInFrame, Geometry, - GeoPoint, Get3DModelsRequest, Get3DModelsResponse, GetGeometriesRequest, @@ -37,42 +36,42 @@ Sphere, Transform, Vector3, - WorldState, + WorldState ) __all__ = [ - "ActuatorStatus", - "AudioInfo", - "Capsule", - "DoCommandRequest", - "DoCommandResponse", - "GeoGeometry", - "GeoPoint", - "GeometriesInFrame", - "Geometry", - "Get3DModelsRequest", - "Get3DModelsResponse", - "GetGeometriesRequest", - "GetGeometriesResponse", - "GetKinematicsRequest", - "GetKinematicsResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "GetReadingsRequest", - "GetReadingsResponse", - "KinematicsFileFormat", - "LogEntry", - "Mesh", - "Orientation", - "PointCloud", - "PointCloudObject", - "Pose", - "PoseInFrame", - "RectangularPrism", - "ResourceName", - "ResponseMetadata", - "Sphere", - "Transform", - "Vector3", - "WorldState", + 'ActuatorStatus', + 'AudioInfo', + 'Capsule', + 'DoCommandRequest', + 'DoCommandResponse', + 'GeoGeometry', + 'GeoPoint', + 'GeometriesInFrame', + 'Geometry', + 'Get3DModelsRequest', + 'Get3DModelsResponse', + 'GetGeometriesRequest', + 'GetGeometriesResponse', + 'GetKinematicsRequest', + 'GetKinematicsResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'GetReadingsRequest', + 'GetReadingsResponse', + 'KinematicsFileFormat', + 'LogEntry', + 'Mesh', + 'Orientation', + 'PointCloud', + 'PointCloudObject', + 'Pose', + 'PoseInFrame', + 'RectangularPrism', + 'ResourceName', + 'ResponseMetadata', + 'Sphere', + 'Transform', + 'Vector3', + 'WorldState', ] diff --git a/src/viam/proto/component/arm/__init__.py b/src/viam/proto/component/arm/__init__.py index 65297b3187..1365355c43 100644 --- a/src/viam/proto/component/arm/__init__.py +++ b/src/viam/proto/component/arm/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.arm.v1.arm_grpc import ArmServiceBase, ArmServiceStub, UnimplementedArmServiceBase +''' +from ....gen.component.arm.v1.arm_grpc import ( + ArmServiceBase, + ArmServiceStub, + UnimplementedArmServiceBase +) from ....gen.component.arm.v1.arm_pb2 import ( GetEndPositionRequest, GetEndPositionResponse, @@ -21,28 +24,28 @@ MoveToPositionResponse, Status, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "ArmServiceBase", - "ArmServiceStub", - "UnimplementedArmServiceBase", - "GetEndPositionRequest", - "GetEndPositionResponse", - "GetJointPositionsRequest", - "GetJointPositionsResponse", - "IsMovingRequest", - "IsMovingResponse", - "JointPositions", - "MoveOptions", - "MoveThroughJointPositionsRequest", - "MoveThroughJointPositionsResponse", - "MoveToJointPositionsRequest", - "MoveToJointPositionsResponse", - "MoveToPositionRequest", - "MoveToPositionResponse", - "Status", - "StopRequest", - "StopResponse", + 'ArmServiceBase', + 'ArmServiceStub', + 'UnimplementedArmServiceBase', + 'GetEndPositionRequest', + 'GetEndPositionResponse', + 'GetJointPositionsRequest', + 'GetJointPositionsResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'JointPositions', + 'MoveOptions', + 'MoveThroughJointPositionsRequest', + 'MoveThroughJointPositionsResponse', + 'MoveToJointPositionsRequest', + 'MoveToJointPositionsResponse', + 'MoveToPositionRequest', + 'MoveToPositionResponse', + 'Status', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/audioin/__init__.py b/src/viam/proto/component/audioin/__init__.py index 106e87e08f..6fefd629b4 100644 --- a/src/viam/proto/component/audioin/__init__.py +++ b/src/viam/proto/component/audioin/__init__.py @@ -1,16 +1,23 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.audioin.v1.audioin_grpc import AudioInServiceBase, AudioInServiceStub, UnimplementedAudioInServiceBase -from ....gen.component.audioin.v1.audioin_pb2 import AudioChunk, GetAudioRequest, GetAudioResponse +''' +from ....gen.component.audioin.v1.audioin_grpc import ( + AudioInServiceBase, + AudioInServiceStub, + UnimplementedAudioInServiceBase +) +from ....gen.component.audioin.v1.audioin_pb2 import ( + AudioChunk, + GetAudioRequest, + GetAudioResponse +) __all__ = [ - "AudioInServiceBase", - "AudioInServiceStub", - "UnimplementedAudioInServiceBase", - "AudioChunk", - "GetAudioRequest", - "GetAudioResponse", + 'AudioInServiceBase', + 'AudioInServiceStub', + 'UnimplementedAudioInServiceBase', + 'AudioChunk', + 'GetAudioRequest', + 'GetAudioResponse', ] diff --git a/src/viam/proto/component/audioout/__init__.py b/src/viam/proto/component/audioout/__init__.py index 4f52daa91b..c2f5d2e78b 100644 --- a/src/viam/proto/component/audioout/__init__.py +++ b/src/viam/proto/component/audioout/__init__.py @@ -1,15 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.audioout.v1.audioout_grpc import AudioOutServiceBase, AudioOutServiceStub, UnimplementedAudioOutServiceBase -from ....gen.component.audioout.v1.audioout_pb2 import PlayRequest, PlayResponse +''' +from ....gen.component.audioout.v1.audioout_grpc import ( + AudioOutServiceBase, + AudioOutServiceStub, + UnimplementedAudioOutServiceBase +) +from ....gen.component.audioout.v1.audioout_pb2 import ( + PlayRequest, + PlayResponse +) __all__ = [ - "AudioOutServiceBase", - "AudioOutServiceStub", - "UnimplementedAudioOutServiceBase", - "PlayRequest", - "PlayResponse", + 'AudioOutServiceBase', + 'AudioOutServiceStub', + 'UnimplementedAudioOutServiceBase', + 'PlayRequest', + 'PlayResponse', ] diff --git a/src/viam/proto/component/base/__init__.py b/src/viam/proto/component/base/__init__.py index 74b5f27043..d92a15a21e 100644 --- a/src/viam/proto/component/base/__init__.py +++ b/src/viam/proto/component/base/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.base.v1.base_grpc import BaseServiceBase, BaseServiceStub, UnimplementedBaseServiceBase +''' +from ....gen.component.base.v1.base_grpc import ( + BaseServiceBase, + BaseServiceStub, + UnimplementedBaseServiceBase +) from ....gen.component.base.v1.base_pb2 import ( GetPropertiesRequest, GetPropertiesResponse, @@ -18,25 +21,25 @@ SpinRequest, SpinResponse, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "BaseServiceBase", - "BaseServiceStub", - "UnimplementedBaseServiceBase", - "GetPropertiesRequest", - "GetPropertiesResponse", - "IsMovingRequest", - "IsMovingResponse", - "MoveStraightRequest", - "MoveStraightResponse", - "SetPowerRequest", - "SetPowerResponse", - "SetVelocityRequest", - "SetVelocityResponse", - "SpinRequest", - "SpinResponse", - "StopRequest", - "StopResponse", + 'BaseServiceBase', + 'BaseServiceStub', + 'UnimplementedBaseServiceBase', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'MoveStraightRequest', + 'MoveStraightResponse', + 'SetPowerRequest', + 'SetPowerResponse', + 'SetVelocityRequest', + 'SetVelocityResponse', + 'SpinRequest', + 'SpinResponse', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/board/__init__.py b/src/viam/proto/component/board/__init__.py index 2f5bc98749..21dfbb18ed 100644 --- a/src/viam/proto/component/board/__init__.py +++ b/src/viam/proto/component/board/__init__.py @@ -1,62 +1,65 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.board.v1.board_grpc import BoardServiceBase, BoardServiceStub, UnimplementedBoardServiceBase +''' +from ....gen.component.board.v1.board_grpc import ( + BoardServiceBase, + BoardServiceStub, + UnimplementedBoardServiceBase +) from ....gen.component.board.v1.board_pb2 import ( GetDigitalInterruptValueRequest, GetDigitalInterruptValueResponse, GetGPIORequest, GetGPIOResponse, - PowerMode, PWMFrequencyRequest, PWMFrequencyResponse, PWMRequest, PWMResponse, + PowerMode, ReadAnalogReaderRequest, ReadAnalogReaderResponse, SetGPIORequest, SetGPIOResponse, - SetPowerModeRequest, - SetPowerModeResponse, SetPWMFrequencyRequest, SetPWMFrequencyResponse, SetPWMRequest, SetPWMResponse, + SetPowerModeRequest, + SetPowerModeResponse, Status, StreamTicksRequest, StreamTicksResponse, WriteAnalogRequest, - WriteAnalogResponse, + WriteAnalogResponse ) __all__ = [ - "BoardServiceBase", - "BoardServiceStub", - "UnimplementedBoardServiceBase", - "GetDigitalInterruptValueRequest", - "GetDigitalInterruptValueResponse", - "GetGPIORequest", - "GetGPIOResponse", - "PWMFrequencyRequest", - "PWMFrequencyResponse", - "PWMRequest", - "PWMResponse", - "PowerMode", - "ReadAnalogReaderRequest", - "ReadAnalogReaderResponse", - "SetGPIORequest", - "SetGPIOResponse", - "SetPWMFrequencyRequest", - "SetPWMFrequencyResponse", - "SetPWMRequest", - "SetPWMResponse", - "SetPowerModeRequest", - "SetPowerModeResponse", - "Status", - "StreamTicksRequest", - "StreamTicksResponse", - "WriteAnalogRequest", - "WriteAnalogResponse", + 'BoardServiceBase', + 'BoardServiceStub', + 'UnimplementedBoardServiceBase', + 'GetDigitalInterruptValueRequest', + 'GetDigitalInterruptValueResponse', + 'GetGPIORequest', + 'GetGPIOResponse', + 'PWMFrequencyRequest', + 'PWMFrequencyResponse', + 'PWMRequest', + 'PWMResponse', + 'PowerMode', + 'ReadAnalogReaderRequest', + 'ReadAnalogReaderResponse', + 'SetGPIORequest', + 'SetGPIOResponse', + 'SetPWMFrequencyRequest', + 'SetPWMFrequencyResponse', + 'SetPWMRequest', + 'SetPWMResponse', + 'SetPowerModeRequest', + 'SetPowerModeResponse', + 'Status', + 'StreamTicksRequest', + 'StreamTicksResponse', + 'WriteAnalogRequest', + 'WriteAnalogResponse', ] diff --git a/src/viam/proto/component/button/__init__.py b/src/viam/proto/component/button/__init__.py index 45dd96e591..79eb582154 100644 --- a/src/viam/proto/component/button/__init__.py +++ b/src/viam/proto/component/button/__init__.py @@ -1,15 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.button.v1.button_grpc import ButtonServiceBase, ButtonServiceStub, UnimplementedButtonServiceBase -from ....gen.component.button.v1.button_pb2 import PushRequest, PushResponse +''' +from ....gen.component.button.v1.button_grpc import ( + ButtonServiceBase, + ButtonServiceStub, + UnimplementedButtonServiceBase +) +from ....gen.component.button.v1.button_pb2 import ( + PushRequest, + PushResponse +) __all__ = [ - "ButtonServiceBase", - "ButtonServiceStub", - "UnimplementedButtonServiceBase", - "PushRequest", - "PushResponse", + 'ButtonServiceBase', + 'ButtonServiceStub', + 'UnimplementedButtonServiceBase', + 'PushRequest', + 'PushResponse', ] diff --git a/src/viam/proto/component/camera/__init__.py b/src/viam/proto/component/camera/__init__.py index b59a331745..0166cf6876 100644 --- a/src/viam/proto/component/camera/__init__.py +++ b/src/viam/proto/component/camera/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.camera.v1.camera_grpc import CameraServiceBase, CameraServiceStub, UnimplementedCameraServiceBase +''' +from ....gen.component.camera.v1.camera_grpc import ( + CameraServiceBase, + CameraServiceStub, + UnimplementedCameraServiceBase +) from ....gen.component.camera.v1.camera_pb2 import ( DistortionParameters, ExtrinsicParameters, @@ -21,28 +24,28 @@ Property, RenderFrameRequest, Webcam, - Webcams, + Webcams ) __all__ = [ - "CameraServiceBase", - "CameraServiceStub", - "UnimplementedCameraServiceBase", - "DistortionParameters", - "ExtrinsicParameters", - "Format", - "GetImageRequest", - "GetImageResponse", - "GetImagesRequest", - "GetImagesResponse", - "GetPointCloudRequest", - "GetPointCloudResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "Image", - "IntrinsicParameters", - "Property", - "RenderFrameRequest", - "Webcam", - "Webcams", + 'CameraServiceBase', + 'CameraServiceStub', + 'UnimplementedCameraServiceBase', + 'DistortionParameters', + 'ExtrinsicParameters', + 'Format', + 'GetImageRequest', + 'GetImageResponse', + 'GetImagesRequest', + 'GetImagesResponse', + 'GetPointCloudRequest', + 'GetPointCloudResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'Image', + 'IntrinsicParameters', + 'Property', + 'RenderFrameRequest', + 'Webcam', + 'Webcams', ] diff --git a/src/viam/proto/component/encoder/__init__.py b/src/viam/proto/component/encoder/__init__.py index ff442c7a16..0f26320668 100644 --- a/src/viam/proto/component/encoder/__init__.py +++ b/src/viam/proto/component/encoder/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.encoder.v1.encoder_grpc import EncoderServiceBase, EncoderServiceStub, UnimplementedEncoderServiceBase +''' +from ....gen.component.encoder.v1.encoder_grpc import ( + EncoderServiceBase, + EncoderServiceStub, + UnimplementedEncoderServiceBase +) from ....gen.component.encoder.v1.encoder_pb2 import ( GetPositionRequest, GetPositionResponse, @@ -11,18 +14,18 @@ GetPropertiesResponse, PositionType, ResetPositionRequest, - ResetPositionResponse, + ResetPositionResponse ) __all__ = [ - "EncoderServiceBase", - "EncoderServiceStub", - "UnimplementedEncoderServiceBase", - "GetPositionRequest", - "GetPositionResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "PositionType", - "ResetPositionRequest", - "ResetPositionResponse", + 'EncoderServiceBase', + 'EncoderServiceStub', + 'UnimplementedEncoderServiceBase', + 'GetPositionRequest', + 'GetPositionResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'PositionType', + 'ResetPositionRequest', + 'ResetPositionResponse', ] diff --git a/src/viam/proto/component/gantry/__init__.py b/src/viam/proto/component/gantry/__init__.py index 6c2649e9a8..9ec08ed1fd 100644 --- a/src/viam/proto/component/gantry/__init__.py +++ b/src/viam/proto/component/gantry/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.gantry.v1.gantry_grpc import GantryServiceBase, GantryServiceStub, UnimplementedGantryServiceBase +''' +from ....gen.component.gantry.v1.gantry_grpc import ( + GantryServiceBase, + GantryServiceStub, + UnimplementedGantryServiceBase +) from ....gen.component.gantry.v1.gantry_pb2 import ( GetLengthsRequest, GetLengthsResponse, @@ -17,24 +20,24 @@ MoveToPositionResponse, Status, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "GantryServiceBase", - "GantryServiceStub", - "UnimplementedGantryServiceBase", - "GetLengthsRequest", - "GetLengthsResponse", - "GetPositionRequest", - "GetPositionResponse", - "HomeRequest", - "HomeResponse", - "IsMovingRequest", - "IsMovingResponse", - "MoveToPositionRequest", - "MoveToPositionResponse", - "Status", - "StopRequest", - "StopResponse", + 'GantryServiceBase', + 'GantryServiceStub', + 'UnimplementedGantryServiceBase', + 'GetLengthsRequest', + 'GetLengthsResponse', + 'GetPositionRequest', + 'GetPositionResponse', + 'HomeRequest', + 'HomeResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'MoveToPositionRequest', + 'MoveToPositionResponse', + 'Status', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/generic/__init__.py b/src/viam/proto/component/generic/__init__.py index 9b7a1533e8..c3c169edcd 100644 --- a/src/viam/proto/component/generic/__init__.py +++ b/src/viam/proto/component/generic/__init__.py @@ -1,12 +1,15 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.generic.v1.generic_grpc import GenericServiceBase, GenericServiceStub, UnimplementedGenericServiceBase +''' +from ....gen.component.generic.v1.generic_grpc import ( + GenericServiceBase, + GenericServiceStub, + UnimplementedGenericServiceBase +) __all__ = [ - "GenericServiceBase", - "GenericServiceStub", - "UnimplementedGenericServiceBase", + 'GenericServiceBase', + 'GenericServiceStub', + 'UnimplementedGenericServiceBase', ] diff --git a/src/viam/proto/component/gripper/__init__.py b/src/viam/proto/component/gripper/__init__.py index a132693024..551807a1bd 100644 --- a/src/viam/proto/component/gripper/__init__.py +++ b/src/viam/proto/component/gripper/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.gripper.v1.gripper_grpc import GripperServiceBase, GripperServiceStub, UnimplementedGripperServiceBase +''' +from ....gen.component.gripper.v1.gripper_grpc import ( + GripperServiceBase, + GripperServiceStub, + UnimplementedGripperServiceBase +) from ....gen.component.gripper.v1.gripper_pb2 import ( GrabRequest, GrabResponse, @@ -14,21 +17,21 @@ OpenRequest, OpenResponse, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "GripperServiceBase", - "GripperServiceStub", - "UnimplementedGripperServiceBase", - "GrabRequest", - "GrabResponse", - "IsHoldingSomethingRequest", - "IsHoldingSomethingResponse", - "IsMovingRequest", - "IsMovingResponse", - "OpenRequest", - "OpenResponse", - "StopRequest", - "StopResponse", + 'GripperServiceBase', + 'GripperServiceStub', + 'UnimplementedGripperServiceBase', + 'GrabRequest', + 'GrabResponse', + 'IsHoldingSomethingRequest', + 'IsHoldingSomethingResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'OpenRequest', + 'OpenResponse', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/inputcontroller/__init__.py b/src/viam/proto/component/inputcontroller/__init__.py index ba3f345684..6cc11c1655 100644 --- a/src/viam/proto/component/inputcontroller/__init__.py +++ b/src/viam/proto/component/inputcontroller/__init__.py @@ -1,12 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.component.inputcontroller.v1.input_controller_grpc import ( InputControllerServiceBase, InputControllerServiceStub, - UnimplementedInputControllerServiceBase, + UnimplementedInputControllerServiceBase ) from ....gen.component.inputcontroller.v1.input_controller_pb2 import ( Event, @@ -18,21 +17,21 @@ StreamEventsRequest, StreamEventsResponse, TriggerEventRequest, - TriggerEventResponse, + TriggerEventResponse ) __all__ = [ - "InputControllerServiceBase", - "InputControllerServiceStub", - "UnimplementedInputControllerServiceBase", - "Event", - "GetControlsRequest", - "GetControlsResponse", - "GetEventsRequest", - "GetEventsResponse", - "Status", - "StreamEventsRequest", - "StreamEventsResponse", - "TriggerEventRequest", - "TriggerEventResponse", + 'InputControllerServiceBase', + 'InputControllerServiceStub', + 'UnimplementedInputControllerServiceBase', + 'Event', + 'GetControlsRequest', + 'GetControlsResponse', + 'GetEventsRequest', + 'GetEventsResponse', + 'Status', + 'StreamEventsRequest', + 'StreamEventsResponse', + 'TriggerEventRequest', + 'TriggerEventResponse', ] diff --git a/src/viam/proto/component/motor/__init__.py b/src/viam/proto/component/motor/__init__.py index b27fd89819..d5dd4c1c5e 100644 --- a/src/viam/proto/component/motor/__init__.py +++ b/src/viam/proto/component/motor/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.motor.v1.motor_grpc import MotorServiceBase, MotorServiceStub, UnimplementedMotorServiceBase +''' +from ....gen.component.motor.v1.motor_grpc import ( + MotorServiceBase, + MotorServiceStub, + UnimplementedMotorServiceBase +) from ....gen.component.motor.v1.motor_pb2 import ( GetPositionRequest, GetPositionResponse, @@ -25,32 +28,32 @@ SetRPMResponse, Status, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "MotorServiceBase", - "MotorServiceStub", - "UnimplementedMotorServiceBase", - "GetPositionRequest", - "GetPositionResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "GoForRequest", - "GoForResponse", - "GoToRequest", - "GoToResponse", - "IsMovingRequest", - "IsMovingResponse", - "IsPoweredRequest", - "IsPoweredResponse", - "ResetZeroPositionRequest", - "ResetZeroPositionResponse", - "SetPowerRequest", - "SetPowerResponse", - "SetRPMRequest", - "SetRPMResponse", - "Status", - "StopRequest", - "StopResponse", + 'MotorServiceBase', + 'MotorServiceStub', + 'UnimplementedMotorServiceBase', + 'GetPositionRequest', + 'GetPositionResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'GoForRequest', + 'GoForResponse', + 'GoToRequest', + 'GoToResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'IsPoweredRequest', + 'IsPoweredResponse', + 'ResetZeroPositionRequest', + 'ResetZeroPositionResponse', + 'SetPowerRequest', + 'SetPowerResponse', + 'SetRPMRequest', + 'SetRPMResponse', + 'Status', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/movementsensor/__init__.py b/src/viam/proto/component/movementsensor/__init__.py index 770de4997f..cef69fa106 100644 --- a/src/viam/proto/component/movementsensor/__init__.py +++ b/src/viam/proto/component/movementsensor/__init__.py @@ -1,12 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.component.movementsensor.v1.movementsensor_grpc import ( MovementSensorServiceBase, MovementSensorServiceStub, - UnimplementedMovementSensorServiceBase, + UnimplementedMovementSensorServiceBase ) from ....gen.component.movementsensor.v1.movementsensor_pb2 import ( GetAccuracyRequest, @@ -24,27 +23,27 @@ GetPositionRequest, GetPositionResponse, GetPropertiesRequest, - GetPropertiesResponse, + GetPropertiesResponse ) __all__ = [ - "MovementSensorServiceBase", - "MovementSensorServiceStub", - "UnimplementedMovementSensorServiceBase", - "GetAccuracyRequest", - "GetAccuracyResponse", - "GetAngularVelocityRequest", - "GetAngularVelocityResponse", - "GetCompassHeadingRequest", - "GetCompassHeadingResponse", - "GetLinearAccelerationRequest", - "GetLinearAccelerationResponse", - "GetLinearVelocityRequest", - "GetLinearVelocityResponse", - "GetOrientationRequest", - "GetOrientationResponse", - "GetPositionRequest", - "GetPositionResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", + 'MovementSensorServiceBase', + 'MovementSensorServiceStub', + 'UnimplementedMovementSensorServiceBase', + 'GetAccuracyRequest', + 'GetAccuracyResponse', + 'GetAngularVelocityRequest', + 'GetAngularVelocityResponse', + 'GetCompassHeadingRequest', + 'GetCompassHeadingResponse', + 'GetLinearAccelerationRequest', + 'GetLinearAccelerationResponse', + 'GetLinearVelocityRequest', + 'GetLinearVelocityResponse', + 'GetOrientationRequest', + 'GetOrientationResponse', + 'GetPositionRequest', + 'GetPositionResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', ] diff --git a/src/viam/proto/component/posetracker/__init__.py b/src/viam/proto/component/posetracker/__init__.py index 7073f07f1b..2644a7d67b 100644 --- a/src/viam/proto/component/posetracker/__init__.py +++ b/src/viam/proto/component/posetracker/__init__.py @@ -1,19 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.component.posetracker.v1.pose_tracker_grpc import ( PoseTrackerServiceBase, PoseTrackerServiceStub, - UnimplementedPoseTrackerServiceBase, + UnimplementedPoseTrackerServiceBase +) +from ....gen.component.posetracker.v1.pose_tracker_pb2 import ( + GetPosesRequest, + GetPosesResponse ) -from ....gen.component.posetracker.v1.pose_tracker_pb2 import GetPosesRequest, GetPosesResponse __all__ = [ - "PoseTrackerServiceBase", - "PoseTrackerServiceStub", - "UnimplementedPoseTrackerServiceBase", - "GetPosesRequest", - "GetPosesResponse", + 'PoseTrackerServiceBase', + 'PoseTrackerServiceStub', + 'UnimplementedPoseTrackerServiceBase', + 'GetPosesRequest', + 'GetPosesResponse', ] diff --git a/src/viam/proto/component/powersensor/__init__.py b/src/viam/proto/component/powersensor/__init__.py index dbd1b7076a..c170f347e4 100644 --- a/src/viam/proto/component/powersensor/__init__.py +++ b/src/viam/proto/component/powersensor/__init__.py @@ -1,12 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.component.powersensor.v1.powersensor_grpc import ( PowerSensorServiceBase, PowerSensorServiceStub, - UnimplementedPowerSensorServiceBase, + UnimplementedPowerSensorServiceBase ) from ....gen.component.powersensor.v1.powersensor_pb2 import ( GetCurrentRequest, @@ -14,17 +13,17 @@ GetPowerRequest, GetPowerResponse, GetVoltageRequest, - GetVoltageResponse, + GetVoltageResponse ) __all__ = [ - "PowerSensorServiceBase", - "PowerSensorServiceStub", - "UnimplementedPowerSensorServiceBase", - "GetCurrentRequest", - "GetCurrentResponse", - "GetPowerRequest", - "GetPowerResponse", - "GetVoltageRequest", - "GetVoltageResponse", + 'PowerSensorServiceBase', + 'PowerSensorServiceStub', + 'UnimplementedPowerSensorServiceBase', + 'GetCurrentRequest', + 'GetCurrentResponse', + 'GetPowerRequest', + 'GetPowerResponse', + 'GetVoltageRequest', + 'GetVoltageResponse', ] diff --git a/src/viam/proto/component/sensor/__init__.py b/src/viam/proto/component/sensor/__init__.py index 86939e9943..034b03b894 100644 --- a/src/viam/proto/component/sensor/__init__.py +++ b/src/viam/proto/component/sensor/__init__.py @@ -1,12 +1,15 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.sensor.v1.sensor_grpc import SensorServiceBase, SensorServiceStub, UnimplementedSensorServiceBase +''' +from ....gen.component.sensor.v1.sensor_grpc import ( + SensorServiceBase, + SensorServiceStub, + UnimplementedSensorServiceBase +) __all__ = [ - "SensorServiceBase", - "SensorServiceStub", - "UnimplementedSensorServiceBase", + 'SensorServiceBase', + 'SensorServiceStub', + 'UnimplementedSensorServiceBase', ] diff --git a/src/viam/proto/component/servo/__init__.py b/src/viam/proto/component/servo/__init__.py index 2e4626130e..5312e00896 100644 --- a/src/viam/proto/component/servo/__init__.py +++ b/src/viam/proto/component/servo/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.servo.v1.servo_grpc import ServoServiceBase, ServoServiceStub, UnimplementedServoServiceBase +''' +from ....gen.component.servo.v1.servo_grpc import ( + ServoServiceBase, + ServoServiceStub, + UnimplementedServoServiceBase +) from ....gen.component.servo.v1.servo_pb2 import ( GetPositionRequest, GetPositionResponse, @@ -13,20 +16,20 @@ MoveResponse, Status, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "ServoServiceBase", - "ServoServiceStub", - "UnimplementedServoServiceBase", - "GetPositionRequest", - "GetPositionResponse", - "IsMovingRequest", - "IsMovingResponse", - "MoveRequest", - "MoveResponse", - "Status", - "StopRequest", - "StopResponse", + 'ServoServiceBase', + 'ServoServiceStub', + 'UnimplementedServoServiceBase', + 'GetPositionRequest', + 'GetPositionResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'MoveRequest', + 'MoveResponse', + 'Status', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/switch/__init__.py b/src/viam/proto/component/switch/__init__.py index 1fb43ec49f..9572873ac7 100644 --- a/src/viam/proto/component/switch/__init__.py +++ b/src/viam/proto/component/switch/__init__.py @@ -1,26 +1,29 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.switch.v1.switch_grpc import SwitchServiceBase, SwitchServiceStub, UnimplementedSwitchServiceBase +''' +from ....gen.component.switch.v1.switch_grpc import ( + SwitchServiceBase, + SwitchServiceStub, + UnimplementedSwitchServiceBase +) from ....gen.component.switch.v1.switch_pb2 import ( GetNumberOfPositionsRequest, GetNumberOfPositionsResponse, GetPositionRequest, GetPositionResponse, SetPositionRequest, - SetPositionResponse, + SetPositionResponse ) __all__ = [ - "SwitchServiceBase", - "SwitchServiceStub", - "UnimplementedSwitchServiceBase", - "GetNumberOfPositionsRequest", - "GetNumberOfPositionsResponse", - "GetPositionRequest", - "GetPositionResponse", - "SetPositionRequest", - "SetPositionResponse", + 'SwitchServiceBase', + 'SwitchServiceStub', + 'UnimplementedSwitchServiceBase', + 'GetNumberOfPositionsRequest', + 'GetNumberOfPositionsResponse', + 'GetPositionRequest', + 'GetPositionResponse', + 'SetPositionRequest', + 'SetPositionResponse', ] diff --git a/src/viam/proto/component/testecho/__init__.py b/src/viam/proto/component/testecho/__init__.py index a60f271f9b..9590dbc733 100644 --- a/src/viam/proto/component/testecho/__init__.py +++ b/src/viam/proto/component/testecho/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.component.testecho.v1.testecho_grpc import TestEchoServiceBase, TestEchoServiceStub, UnimplementedTestEchoServiceBase +''' +from ....gen.component.testecho.v1.testecho_grpc import ( + TestEchoServiceBase, + TestEchoServiceStub, + UnimplementedTestEchoServiceBase +) from ....gen.component.testecho.v1.testecho_pb2 import ( EchoBiDiRequest, EchoBiDiResponse, @@ -12,19 +15,19 @@ EchoRequest, EchoResponse, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "TestEchoServiceBase", - "TestEchoServiceStub", - "UnimplementedTestEchoServiceBase", - "EchoBiDiRequest", - "EchoBiDiResponse", - "EchoMultipleRequest", - "EchoMultipleResponse", - "EchoRequest", - "EchoResponse", - "StopRequest", - "StopResponse", + 'TestEchoServiceBase', + 'TestEchoServiceStub', + 'UnimplementedTestEchoServiceBase', + 'EchoBiDiRequest', + 'EchoBiDiResponse', + 'EchoMultipleRequest', + 'EchoMultipleResponse', + 'EchoRequest', + 'EchoResponse', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/module/__init__.py b/src/viam/proto/module/__init__.py index fdc3ea5942..6a160a540f 100644 --- a/src/viam/proto/module/__init__.py +++ b/src/viam/proto/module/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.module.v1.module_grpc import ModuleServiceBase, ModuleServiceStub, UnimplementedModuleServiceBase +''' +from ...gen.module.v1.module_grpc import ( + ModuleServiceBase, + ModuleServiceStub, + UnimplementedModuleServiceBase +) from ...gen.module.v1.module_pb2 import ( AddResourceRequest, AddResourceResponse, @@ -16,23 +19,23 @@ RemoveResourceRequest, RemoveResourceResponse, ValidateConfigRequest, - ValidateConfigResponse, + ValidateConfigResponse ) __all__ = [ - "ModuleServiceBase", - "ModuleServiceStub", - "UnimplementedModuleServiceBase", - "AddResourceRequest", - "AddResourceResponse", - "HandlerDefinition", - "HandlerMap", - "ReadyRequest", - "ReadyResponse", - "ReconfigureResourceRequest", - "ReconfigureResourceResponse", - "RemoveResourceRequest", - "RemoveResourceResponse", - "ValidateConfigRequest", - "ValidateConfigResponse", + 'ModuleServiceBase', + 'ModuleServiceStub', + 'UnimplementedModuleServiceBase', + 'AddResourceRequest', + 'AddResourceResponse', + 'HandlerDefinition', + 'HandlerMap', + 'ReadyRequest', + 'ReadyResponse', + 'ReconfigureResourceRequest', + 'ReconfigureResourceResponse', + 'RemoveResourceRequest', + 'RemoveResourceResponse', + 'ValidateConfigRequest', + 'ValidateConfigResponse', ] diff --git a/src/viam/proto/opentelemetry/proto/common/__init__.py b/src/viam/proto/opentelemetry/proto/common/__init__.py index e3ecdd62fa..7857066e99 100644 --- a/src/viam/proto/opentelemetry/proto/common/__init__.py +++ b/src/viam/proto/opentelemetry/proto/common/__init__.py @@ -1,15 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from .....gen.opentelemetry.proto.common.v1.common_pb2 import AnyValue, ArrayValue, EntityRef, InstrumentationScope, KeyValue, KeyValueList +''' +from .....gen.opentelemetry.proto.common.v1.common_pb2 import ( + AnyValue, + ArrayValue, + EntityRef, + InstrumentationScope, + KeyValue, + KeyValueList +) __all__ = [ - "AnyValue", - "ArrayValue", - "EntityRef", - "InstrumentationScope", - "KeyValue", - "KeyValueList", + 'AnyValue', + 'ArrayValue', + 'EntityRef', + 'InstrumentationScope', + 'KeyValue', + 'KeyValueList', ] diff --git a/src/viam/proto/opentelemetry/proto/resource/__init__.py b/src/viam/proto/opentelemetry/proto/resource/__init__.py index c9a1962cc6..63dd3b991f 100644 --- a/src/viam/proto/opentelemetry/proto/resource/__init__.py +++ b/src/viam/proto/opentelemetry/proto/resource/__init__.py @@ -1,10 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from .....gen.opentelemetry.proto.resource.v1.resource_pb2 import Resource +''' +from .....gen.opentelemetry.proto.resource.v1.resource_pb2 import ( + Resource +) __all__ = [ - "Resource", + 'Resource', ] diff --git a/src/viam/proto/opentelemetry/proto/trace/__init__.py b/src/viam/proto/opentelemetry/proto/trace/__init__.py index 84c730ed16..fdb0b48913 100644 --- a/src/viam/proto/opentelemetry/proto/trace/__init__.py +++ b/src/viam/proto/opentelemetry/proto/trace/__init__.py @@ -1,15 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from .....gen.opentelemetry.proto.trace.v1.trace_pb2 import ResourceSpans, ScopeSpans, Span, SpanFlags, Status, TracesData +''' +from .....gen.opentelemetry.proto.trace.v1.trace_pb2 import ( + ResourceSpans, + ScopeSpans, + Span, + SpanFlags, + Status, + TracesData +) __all__ = [ - "ResourceSpans", - "ScopeSpans", - "Span", - "SpanFlags", - "Status", - "TracesData", + 'ResourceSpans', + 'ScopeSpans', + 'Span', + 'SpanFlags', + 'Status', + 'TracesData', ] diff --git a/src/viam/proto/provisioning/__init__.py b/src/viam/proto/provisioning/__init__.py index 1e70aeca42..49f71aa0d4 100644 --- a/src/viam/proto/provisioning/__init__.py +++ b/src/viam/proto/provisioning/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.provisioning.v1.provisioning_grpc import ProvisioningServiceBase, ProvisioningServiceStub, UnimplementedProvisioningServiceBase +''' +from ...gen.provisioning.v1.provisioning_grpc import ( + ProvisioningServiceBase, + ProvisioningServiceStub, + UnimplementedProvisioningServiceBase +) from ...gen.provisioning.v1.provisioning_pb2 import ( APIKey, CloudConfig, @@ -18,25 +21,25 @@ SetNetworkCredentialsRequest, SetNetworkCredentialsResponse, SetSmartMachineCredentialsRequest, - SetSmartMachineCredentialsResponse, + SetSmartMachineCredentialsResponse ) __all__ = [ - "ProvisioningServiceBase", - "ProvisioningServiceStub", - "UnimplementedProvisioningServiceBase", - "APIKey", - "CloudConfig", - "ExitProvisioningRequest", - "ExitProvisioningResponse", - "GetNetworkListRequest", - "GetNetworkListResponse", - "GetSmartMachineStatusRequest", - "GetSmartMachineStatusResponse", - "NetworkInfo", - "ProvisioningInfo", - "SetNetworkCredentialsRequest", - "SetNetworkCredentialsResponse", - "SetSmartMachineCredentialsRequest", - "SetSmartMachineCredentialsResponse", + 'ProvisioningServiceBase', + 'ProvisioningServiceStub', + 'UnimplementedProvisioningServiceBase', + 'APIKey', + 'CloudConfig', + 'ExitProvisioningRequest', + 'ExitProvisioningResponse', + 'GetNetworkListRequest', + 'GetNetworkListResponse', + 'GetSmartMachineStatusRequest', + 'GetSmartMachineStatusResponse', + 'NetworkInfo', + 'ProvisioningInfo', + 'SetNetworkCredentialsRequest', + 'SetNetworkCredentialsResponse', + 'SetSmartMachineCredentialsRequest', + 'SetSmartMachineCredentialsResponse', ] diff --git a/src/viam/proto/robot/__init__.py b/src/viam/proto/robot/__init__.py index f28c2ea418..69ef8ad1ef 100644 --- a/src/viam/proto/robot/__init__.py +++ b/src/viam/proto/robot/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.robot.v1.robot_grpc import RobotServiceBase, RobotServiceStub, UnimplementedRobotServiceBase +''' +from ...gen.robot.v1.robot_grpc import ( + RobotServiceBase, + RobotServiceStub, + UnimplementedRobotServiceBase +) from ...gen.robot.v1.robot_pb2 import ( BlockForOperationRequest, BlockForOperationResponse, @@ -67,74 +70,74 @@ TransformPoseResponse, Tunnel, TunnelRequest, - TunnelResponse, + TunnelResponse ) __all__ = [ - "RobotServiceBase", - "RobotServiceStub", - "UnimplementedRobotServiceBase", - "BlockForOperationRequest", - "BlockForOperationResponse", - "CancelOperationRequest", - "CancelOperationResponse", - "ConfigStatus", - "FrameSystemConfig", - "FrameSystemConfigRequest", - "FrameSystemConfigResponse", - "GetCloudMetadataRequest", - "GetCloudMetadataResponse", - "GetMachineStatusRequest", - "GetMachineStatusResponse", - "GetModelsFromModulesRequest", - "GetModelsFromModulesResponse", - "GetOperationsRequest", - "GetOperationsResponse", - "GetPoseRequest", - "GetPoseResponse", - "GetSessionsRequest", - "GetSessionsResponse", - "GetStatusRequest", - "GetStatusResponse", - "GetVersionRequest", - "GetVersionResponse", - "JobStatus", - "ListTunnelsRequest", - "ListTunnelsResponse", - "LogRequest", - "LogResponse", - "ModuleModel", - "Operation", - "PeerConnectionInfo", - "PeerConnectionType", - "ResourceNamesRequest", - "ResourceNamesResponse", - "ResourceRPCSubtype", - "ResourceRPCSubtypesRequest", - "ResourceRPCSubtypesResponse", - "ResourceStatus", - "RestartModuleRequest", - "RestartModuleResponse", - "SendSessionHeartbeatRequest", - "SendSessionHeartbeatResponse", - "SendTracesRequest", - "SendTracesResponse", - "Session", - "ShutdownRequest", - "ShutdownResponse", - "StartSessionRequest", - "StartSessionResponse", - "Status", - "StopAllRequest", - "StopAllResponse", - "StopExtraParameters", - "StreamStatusRequest", - "StreamStatusResponse", - "TransformPCDRequest", - "TransformPCDResponse", - "TransformPoseRequest", - "TransformPoseResponse", - "Tunnel", - "TunnelRequest", - "TunnelResponse", + 'RobotServiceBase', + 'RobotServiceStub', + 'UnimplementedRobotServiceBase', + 'BlockForOperationRequest', + 'BlockForOperationResponse', + 'CancelOperationRequest', + 'CancelOperationResponse', + 'ConfigStatus', + 'FrameSystemConfig', + 'FrameSystemConfigRequest', + 'FrameSystemConfigResponse', + 'GetCloudMetadataRequest', + 'GetCloudMetadataResponse', + 'GetMachineStatusRequest', + 'GetMachineStatusResponse', + 'GetModelsFromModulesRequest', + 'GetModelsFromModulesResponse', + 'GetOperationsRequest', + 'GetOperationsResponse', + 'GetPoseRequest', + 'GetPoseResponse', + 'GetSessionsRequest', + 'GetSessionsResponse', + 'GetStatusRequest', + 'GetStatusResponse', + 'GetVersionRequest', + 'GetVersionResponse', + 'JobStatus', + 'ListTunnelsRequest', + 'ListTunnelsResponse', + 'LogRequest', + 'LogResponse', + 'ModuleModel', + 'Operation', + 'PeerConnectionInfo', + 'PeerConnectionType', + 'ResourceNamesRequest', + 'ResourceNamesResponse', + 'ResourceRPCSubtype', + 'ResourceRPCSubtypesRequest', + 'ResourceRPCSubtypesResponse', + 'ResourceStatus', + 'RestartModuleRequest', + 'RestartModuleResponse', + 'SendSessionHeartbeatRequest', + 'SendSessionHeartbeatResponse', + 'SendTracesRequest', + 'SendTracesResponse', + 'Session', + 'ShutdownRequest', + 'ShutdownResponse', + 'StartSessionRequest', + 'StartSessionResponse', + 'Status', + 'StopAllRequest', + 'StopAllResponse', + 'StopExtraParameters', + 'StreamStatusRequest', + 'StreamStatusResponse', + 'TransformPCDRequest', + 'TransformPCDResponse', + 'TransformPoseRequest', + 'TransformPoseResponse', + 'Tunnel', + 'TunnelRequest', + 'TunnelResponse', ] diff --git a/src/viam/proto/rpc/auth.py b/src/viam/proto/rpc/auth.py index 1704c74cd4..462f075a39 100644 --- a/src/viam/proto/rpc/auth.py +++ b/src/viam/proto/rpc/auth.py @@ -1,34 +1,33 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ...gen.proto.rpc.v1.auth_grpc import ( AuthServiceBase, AuthServiceStub, ExternalAuthServiceBase, ExternalAuthServiceStub, UnimplementedAuthServiceBase, - UnimplementedExternalAuthServiceBase, + UnimplementedExternalAuthServiceBase ) from ...gen.proto.rpc.v1.auth_pb2 import ( AuthenticateRequest, AuthenticateResponse, AuthenticateToRequest, AuthenticateToResponse, - Credentials, + Credentials ) __all__ = [ - "AuthServiceBase", - "AuthServiceStub", - "ExternalAuthServiceBase", - "ExternalAuthServiceStub", - "UnimplementedAuthServiceBase", - "UnimplementedExternalAuthServiceBase", - "AuthenticateRequest", - "AuthenticateResponse", - "AuthenticateToRequest", - "AuthenticateToResponse", - "Credentials", + 'AuthServiceBase', + 'AuthServiceStub', + 'ExternalAuthServiceBase', + 'ExternalAuthServiceStub', + 'UnimplementedAuthServiceBase', + 'UnimplementedExternalAuthServiceBase', + 'AuthenticateRequest', + 'AuthenticateResponse', + 'AuthenticateToRequest', + 'AuthenticateToResponse', + 'Credentials', ] diff --git a/src/viam/proto/rpc/examples/echo/__init__.py b/src/viam/proto/rpc/examples/echo/__init__.py index 60cefe6d90..5ec2ea10a1 100644 --- a/src/viam/proto/rpc/examples/echo/__init__.py +++ b/src/viam/proto/rpc/examples/echo/__init__.py @@ -1,26 +1,29 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from .....gen.proto.rpc.examples.echo.v1.echo_grpc import EchoServiceBase, EchoServiceStub, UnimplementedEchoServiceBase +''' +from .....gen.proto.rpc.examples.echo.v1.echo_grpc import ( + EchoServiceBase, + EchoServiceStub, + UnimplementedEchoServiceBase +) from .....gen.proto.rpc.examples.echo.v1.echo_pb2 import ( EchoBiDiRequest, EchoBiDiResponse, EchoMultipleRequest, EchoMultipleResponse, EchoRequest, - EchoResponse, + EchoResponse ) __all__ = [ - "EchoServiceBase", - "EchoServiceStub", - "UnimplementedEchoServiceBase", - "EchoBiDiRequest", - "EchoBiDiResponse", - "EchoMultipleRequest", - "EchoMultipleResponse", - "EchoRequest", - "EchoResponse", + 'EchoServiceBase', + 'EchoServiceStub', + 'UnimplementedEchoServiceBase', + 'EchoBiDiRequest', + 'EchoBiDiResponse', + 'EchoMultipleRequest', + 'EchoMultipleResponse', + 'EchoRequest', + 'EchoResponse', ] diff --git a/src/viam/proto/rpc/examples/echoresource/__init__.py b/src/viam/proto/rpc/examples/echoresource/__init__.py index 18e72d0443..e85abde49f 100644 --- a/src/viam/proto/rpc/examples/echoresource/__init__.py +++ b/src/viam/proto/rpc/examples/echoresource/__init__.py @@ -1,12 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from .....gen.proto.rpc.examples.echoresource.v1.echoresource_grpc import ( EchoResourceServiceBase, EchoResourceServiceStub, - UnimplementedEchoResourceServiceBase, + UnimplementedEchoResourceServiceBase ) from .....gen.proto.rpc.examples.echoresource.v1.echoresource_pb2 import ( EchoResourceBiDiRequest, @@ -14,17 +13,17 @@ EchoResourceMultipleRequest, EchoResourceMultipleResponse, EchoResourceRequest, - EchoResourceResponse, + EchoResourceResponse ) __all__ = [ - "EchoResourceServiceBase", - "EchoResourceServiceStub", - "UnimplementedEchoResourceServiceBase", - "EchoResourceBiDiRequest", - "EchoResourceBiDiResponse", - "EchoResourceMultipleRequest", - "EchoResourceMultipleResponse", - "EchoResourceRequest", - "EchoResourceResponse", + 'EchoResourceServiceBase', + 'EchoResourceServiceStub', + 'UnimplementedEchoResourceServiceBase', + 'EchoResourceBiDiRequest', + 'EchoResourceBiDiResponse', + 'EchoResourceMultipleRequest', + 'EchoResourceMultipleResponse', + 'EchoResourceRequest', + 'EchoResourceResponse', ] diff --git a/src/viam/proto/rpc/webrtc/grpc.py b/src/viam/proto/rpc/webrtc/grpc.py index bdb49fa2f8..17813a7bc1 100644 --- a/src/viam/proto/rpc/webrtc/grpc.py +++ b/src/viam/proto/rpc/webrtc/grpc.py @@ -1,8 +1,7 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.proto.rpc.webrtc.v1.grpc_pb2 import ( Metadata, PacketMessage, @@ -14,23 +13,27 @@ ResponseMessage, ResponseTrailers, Stream, - Strings, + Strings +) +from ....gen.proto.rpc.webrtc.v1.signaling_grpc import ( + SignalingServiceBase, + SignalingServiceStub, + UnimplementedSignalingServiceBase ) -from ....gen.proto.rpc.webrtc.v1.signaling_grpc import SignalingServiceBase, SignalingServiceStub, UnimplementedSignalingServiceBase __all__ = [ - "Metadata", - "PacketMessage", - "Request", - "RequestHeaders", - "RequestMessage", - "Response", - "ResponseHeaders", - "ResponseMessage", - "ResponseTrailers", - "Stream", - "Strings", - "SignalingServiceBase", - "SignalingServiceStub", - "UnimplementedSignalingServiceBase", + 'Metadata', + 'PacketMessage', + 'Request', + 'RequestHeaders', + 'RequestMessage', + 'Response', + 'ResponseHeaders', + 'ResponseMessage', + 'ResponseTrailers', + 'Stream', + 'Strings', + 'SignalingServiceBase', + 'SignalingServiceStub', + 'UnimplementedSignalingServiceBase', ] diff --git a/src/viam/proto/rpc/webrtc/signaling.py b/src/viam/proto/rpc/webrtc/signaling.py index a47b891752..a64090df20 100644 --- a/src/viam/proto/rpc/webrtc/signaling.py +++ b/src/viam/proto/rpc/webrtc/signaling.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.proto.rpc.webrtc.v1.signaling_grpc import SignalingServiceBase, SignalingServiceStub, UnimplementedSignalingServiceBase +''' +from ....gen.proto.rpc.webrtc.v1.signaling_grpc import ( + SignalingServiceBase, + SignalingServiceStub, + UnimplementedSignalingServiceBase +) from ....gen.proto.rpc.webrtc.v1.signaling_pb2 import ( AnswerRequest, AnswerRequestDoneStage, @@ -26,33 +29,33 @@ ICEServer, OptionalWebRTCConfigRequest, OptionalWebRTCConfigResponse, - WebRTCConfig, + WebRTCConfig ) __all__ = [ - "SignalingServiceBase", - "SignalingServiceStub", - "UnimplementedSignalingServiceBase", - "AnswerRequest", - "AnswerRequestDoneStage", - "AnswerRequestErrorStage", - "AnswerRequestHeartbeatStage", - "AnswerRequestInitStage", - "AnswerRequestUpdateStage", - "AnswerResponse", - "AnswerResponseDoneStage", - "AnswerResponseErrorStage", - "AnswerResponseInitStage", - "AnswerResponseUpdateStage", - "CallRequest", - "CallResponse", - "CallResponseInitStage", - "CallResponseUpdateStage", - "CallUpdateRequest", - "CallUpdateResponse", - "ICECandidate", - "ICEServer", - "OptionalWebRTCConfigRequest", - "OptionalWebRTCConfigResponse", - "WebRTCConfig", + 'SignalingServiceBase', + 'SignalingServiceStub', + 'UnimplementedSignalingServiceBase', + 'AnswerRequest', + 'AnswerRequestDoneStage', + 'AnswerRequestErrorStage', + 'AnswerRequestHeartbeatStage', + 'AnswerRequestInitStage', + 'AnswerRequestUpdateStage', + 'AnswerResponse', + 'AnswerResponseDoneStage', + 'AnswerResponseErrorStage', + 'AnswerResponseInitStage', + 'AnswerResponseUpdateStage', + 'CallRequest', + 'CallResponse', + 'CallResponseInitStage', + 'CallResponseUpdateStage', + 'CallUpdateRequest', + 'CallUpdateResponse', + 'ICECandidate', + 'ICEServer', + 'OptionalWebRTCConfigRequest', + 'OptionalWebRTCConfigResponse', + 'WebRTCConfig', ] diff --git a/src/viam/proto/service/datamanager/__init__.py b/src/viam/proto/service/datamanager/__init__.py index 4b3766eacc..cbf556f15e 100644 --- a/src/viam/proto/service/datamanager/__init__.py +++ b/src/viam/proto/service/datamanager/__init__.py @@ -1,26 +1,25 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.service.datamanager.v1.data_manager_grpc import ( DataManagerServiceBase, DataManagerServiceStub, - UnimplementedDataManagerServiceBase, + UnimplementedDataManagerServiceBase ) from ....gen.service.datamanager.v1.data_manager_pb2 import ( SyncRequest, SyncResponse, UploadBinaryDataToDatasetsRequest, - UploadBinaryDataToDatasetsResponse, + UploadBinaryDataToDatasetsResponse ) __all__ = [ - "DataManagerServiceBase", - "DataManagerServiceStub", - "UnimplementedDataManagerServiceBase", - "SyncRequest", - "SyncResponse", - "UploadBinaryDataToDatasetsRequest", - "UploadBinaryDataToDatasetsResponse", + 'DataManagerServiceBase', + 'DataManagerServiceStub', + 'UnimplementedDataManagerServiceBase', + 'SyncRequest', + 'SyncResponse', + 'UploadBinaryDataToDatasetsRequest', + 'UploadBinaryDataToDatasetsResponse', ] diff --git a/src/viam/proto/service/discovery/__init__.py b/src/viam/proto/service/discovery/__init__.py index 3593fd1fe7..1b4ea7ee96 100644 --- a/src/viam/proto/service/discovery/__init__.py +++ b/src/viam/proto/service/discovery/__init__.py @@ -1,15 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.discovery.v1.discovery_grpc import DiscoveryServiceBase, DiscoveryServiceStub, UnimplementedDiscoveryServiceBase -from ....gen.service.discovery.v1.discovery_pb2 import DiscoverResourcesRequest, DiscoverResourcesResponse +''' +from ....gen.service.discovery.v1.discovery_grpc import ( + DiscoveryServiceBase, + DiscoveryServiceStub, + UnimplementedDiscoveryServiceBase +) +from ....gen.service.discovery.v1.discovery_pb2 import ( + DiscoverResourcesRequest, + DiscoverResourcesResponse +) __all__ = [ - "DiscoveryServiceBase", - "DiscoveryServiceStub", - "UnimplementedDiscoveryServiceBase", - "DiscoverResourcesRequest", - "DiscoverResourcesResponse", + 'DiscoveryServiceBase', + 'DiscoveryServiceStub', + 'UnimplementedDiscoveryServiceBase', + 'DiscoverResourcesRequest', + 'DiscoverResourcesResponse', ] diff --git a/src/viam/proto/service/generic/__init__.py b/src/viam/proto/service/generic/__init__.py index bdfbb40f9e..8158bb0d69 100644 --- a/src/viam/proto/service/generic/__init__.py +++ b/src/viam/proto/service/generic/__init__.py @@ -1,12 +1,15 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.generic.v1.generic_grpc import GenericServiceBase, GenericServiceStub, UnimplementedGenericServiceBase +''' +from ....gen.service.generic.v1.generic_grpc import ( + GenericServiceBase, + GenericServiceStub, + UnimplementedGenericServiceBase +) __all__ = [ - "GenericServiceBase", - "GenericServiceStub", - "UnimplementedGenericServiceBase", + 'GenericServiceBase', + 'GenericServiceStub', + 'UnimplementedGenericServiceBase', ] diff --git a/src/viam/proto/service/mlmodel/__init__.py b/src/viam/proto/service/mlmodel/__init__.py index b6687bdefe..486d2c7ad1 100644 --- a/src/viam/proto/service/mlmodel/__init__.py +++ b/src/viam/proto/service/mlmodel/__init__.py @@ -1,22 +1,25 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.mlmodel.v1.mlmodel_grpc import MLModelServiceBase, MLModelServiceStub, UnimplementedMLModelServiceBase +''' +from ....gen.service.mlmodel.v1.mlmodel_grpc import ( + MLModelServiceBase, + MLModelServiceStub, + UnimplementedMLModelServiceBase +) from ....gen.service.mlmodel.v1.mlmodel_pb2 import ( File, FlatTensor, FlatTensorDataDouble, FlatTensorDataFloat, - FlatTensorDataInt8, FlatTensorDataInt16, FlatTensorDataInt32, FlatTensorDataInt64, - FlatTensorDataUInt8, + FlatTensorDataInt8, FlatTensorDataUInt16, FlatTensorDataUInt32, FlatTensorDataUInt64, + FlatTensorDataUInt8, FlatTensors, InferRequest, InferResponse, @@ -24,31 +27,31 @@ Metadata, MetadataRequest, MetadataResponse, - TensorInfo, + TensorInfo ) __all__ = [ - "MLModelServiceBase", - "MLModelServiceStub", - "UnimplementedMLModelServiceBase", - "File", - "FlatTensor", - "FlatTensorDataDouble", - "FlatTensorDataFloat", - "FlatTensorDataInt16", - "FlatTensorDataInt32", - "FlatTensorDataInt64", - "FlatTensorDataInt8", - "FlatTensorDataUInt16", - "FlatTensorDataUInt32", - "FlatTensorDataUInt64", - "FlatTensorDataUInt8", - "FlatTensors", - "InferRequest", - "InferResponse", - "LabelType", - "Metadata", - "MetadataRequest", - "MetadataResponse", - "TensorInfo", + 'MLModelServiceBase', + 'MLModelServiceStub', + 'UnimplementedMLModelServiceBase', + 'File', + 'FlatTensor', + 'FlatTensorDataDouble', + 'FlatTensorDataFloat', + 'FlatTensorDataInt16', + 'FlatTensorDataInt32', + 'FlatTensorDataInt64', + 'FlatTensorDataInt8', + 'FlatTensorDataUInt16', + 'FlatTensorDataUInt32', + 'FlatTensorDataUInt64', + 'FlatTensorDataUInt8', + 'FlatTensors', + 'InferRequest', + 'InferResponse', + 'LabelType', + 'Metadata', + 'MetadataRequest', + 'MetadataResponse', + 'TensorInfo', ] diff --git a/src/viam/proto/service/motion/__init__.py b/src/viam/proto/service/motion/__init__.py index b4306e0608..1f890c4a48 100644 --- a/src/viam/proto/service/motion/__init__.py +++ b/src/viam/proto/service/motion/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.motion.v1.motion_grpc import MotionServiceBase, MotionServiceStub, UnimplementedMotionServiceBase +''' +from ....gen.service.motion.v1.motion_grpc import ( + MotionServiceBase, + MotionServiceStub, + UnimplementedMotionServiceBase +) from ....gen.service.motion.v1.motion_pb2 import ( CollisionSpecification, ComponentState, @@ -32,39 +35,39 @@ PlanWithStatus, PseudolinearConstraint, StopPlanRequest, - StopPlanResponse, + StopPlanResponse ) __all__ = [ - "MotionServiceBase", - "MotionServiceStub", - "UnimplementedMotionServiceBase", - "CollisionSpecification", - "ComponentState", - "Constraints", - "GetPlanRequest", - "GetPlanResponse", - "GetPoseRequest", - "GetPoseResponse", - "LinearConstraint", - "ListPlanStatusesRequest", - "ListPlanStatusesResponse", - "MotionConfiguration", - "MoveOnGlobeRequest", - "MoveOnGlobeResponse", - "MoveOnMapRequest", - "MoveOnMapResponse", - "MoveRequest", - "MoveResponse", - "ObstacleDetector", - "OrientationConstraint", - "Plan", - "PlanState", - "PlanStatus", - "PlanStatusWithID", - "PlanStep", - "PlanWithStatus", - "PseudolinearConstraint", - "StopPlanRequest", - "StopPlanResponse", + 'MotionServiceBase', + 'MotionServiceStub', + 'UnimplementedMotionServiceBase', + 'CollisionSpecification', + 'ComponentState', + 'Constraints', + 'GetPlanRequest', + 'GetPlanResponse', + 'GetPoseRequest', + 'GetPoseResponse', + 'LinearConstraint', + 'ListPlanStatusesRequest', + 'ListPlanStatusesResponse', + 'MotionConfiguration', + 'MoveOnGlobeRequest', + 'MoveOnGlobeResponse', + 'MoveOnMapRequest', + 'MoveOnMapResponse', + 'MoveRequest', + 'MoveResponse', + 'ObstacleDetector', + 'OrientationConstraint', + 'Plan', + 'PlanState', + 'PlanStatus', + 'PlanStatusWithID', + 'PlanStep', + 'PlanWithStatus', + 'PseudolinearConstraint', + 'StopPlanRequest', + 'StopPlanResponse', ] diff --git a/src/viam/proto/service/navigation/__init__.py b/src/viam/proto/service/navigation/__init__.py index c0c7f058c0..4cde4b7bbd 100644 --- a/src/viam/proto/service/navigation/__init__.py +++ b/src/viam/proto/service/navigation/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.navigation.v1.navigation_grpc import NavigationServiceBase, NavigationServiceStub, UnimplementedNavigationServiceBase +''' +from ....gen.service.navigation.v1.navigation_grpc import ( + NavigationServiceBase, + NavigationServiceStub, + UnimplementedNavigationServiceBase +) from ....gen.service.navigation.v1.navigation_pb2 import ( AddWaypointRequest, AddWaypointResponse, @@ -26,33 +29,33 @@ RemoveWaypointResponse, SetModeRequest, SetModeResponse, - Waypoint, + Waypoint ) __all__ = [ - "NavigationServiceBase", - "NavigationServiceStub", - "UnimplementedNavigationServiceBase", - "AddWaypointRequest", - "AddWaypointResponse", - "GetLocationRequest", - "GetLocationResponse", - "GetModeRequest", - "GetModeResponse", - "GetObstaclesRequest", - "GetObstaclesResponse", - "GetPathsRequest", - "GetPathsResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "GetWaypointsRequest", - "GetWaypointsResponse", - "MapType", - "Mode", - "Path", - "RemoveWaypointRequest", - "RemoveWaypointResponse", - "SetModeRequest", - "SetModeResponse", - "Waypoint", + 'NavigationServiceBase', + 'NavigationServiceStub', + 'UnimplementedNavigationServiceBase', + 'AddWaypointRequest', + 'AddWaypointResponse', + 'GetLocationRequest', + 'GetLocationResponse', + 'GetModeRequest', + 'GetModeResponse', + 'GetObstaclesRequest', + 'GetObstaclesResponse', + 'GetPathsRequest', + 'GetPathsResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'GetWaypointsRequest', + 'GetWaypointsResponse', + 'MapType', + 'Mode', + 'Path', + 'RemoveWaypointRequest', + 'RemoveWaypointResponse', + 'SetModeRequest', + 'SetModeResponse', + 'Waypoint', ] diff --git a/src/viam/proto/service/sensors/__init__.py b/src/viam/proto/service/sensors/__init__.py index 0f7a042779..f2a0905e5e 100644 --- a/src/viam/proto/service/sensors/__init__.py +++ b/src/viam/proto/service/sensors/__init__.py @@ -1,18 +1,27 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.sensors.v1.sensors_grpc import SensorsServiceBase, SensorsServiceStub, UnimplementedSensorsServiceBase -from ....gen.service.sensors.v1.sensors_pb2 import GetReadingsRequest, GetReadingsResponse, GetSensorsRequest, GetSensorsResponse, Readings +''' +from ....gen.service.sensors.v1.sensors_grpc import ( + SensorsServiceBase, + SensorsServiceStub, + UnimplementedSensorsServiceBase +) +from ....gen.service.sensors.v1.sensors_pb2 import ( + GetReadingsRequest, + GetReadingsResponse, + GetSensorsRequest, + GetSensorsResponse, + Readings +) __all__ = [ - "SensorsServiceBase", - "SensorsServiceStub", - "UnimplementedSensorsServiceBase", - "GetReadingsRequest", - "GetReadingsResponse", - "GetSensorsRequest", - "GetSensorsResponse", - "Readings", + 'SensorsServiceBase', + 'SensorsServiceStub', + 'UnimplementedSensorsServiceBase', + 'GetReadingsRequest', + 'GetReadingsResponse', + 'GetSensorsRequest', + 'GetSensorsResponse', + 'Readings', ] diff --git a/src/viam/proto/service/shell/__init__.py b/src/viam/proto/service/shell/__init__.py index 47a2a44f69..07fc72562e 100644 --- a/src/viam/proto/service/shell/__init__.py +++ b/src/viam/proto/service/shell/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.shell.v1.shell_grpc import ShellServiceBase, ShellServiceStub, UnimplementedShellServiceBase +''' +from ....gen.service.shell.v1.shell_grpc import ( + ShellServiceBase, + ShellServiceStub, + UnimplementedShellServiceBase +) from ....gen.service.shell.v1.shell_pb2 import ( CopyFilesFromMachineRequest, CopyFilesFromMachineRequestMetadata, @@ -15,22 +18,22 @@ CopyFilesToMachineResponse, FileData, ShellRequest, - ShellResponse, + ShellResponse ) __all__ = [ - "ShellServiceBase", - "ShellServiceStub", - "UnimplementedShellServiceBase", - "CopyFilesFromMachineRequest", - "CopyFilesFromMachineRequestMetadata", - "CopyFilesFromMachineResponse", - "CopyFilesFromMachineResponseMetadata", - "CopyFilesSourceType", - "CopyFilesToMachineRequest", - "CopyFilesToMachineRequestMetadata", - "CopyFilesToMachineResponse", - "FileData", - "ShellRequest", - "ShellResponse", + 'ShellServiceBase', + 'ShellServiceStub', + 'UnimplementedShellServiceBase', + 'CopyFilesFromMachineRequest', + 'CopyFilesFromMachineRequestMetadata', + 'CopyFilesFromMachineResponse', + 'CopyFilesFromMachineResponseMetadata', + 'CopyFilesSourceType', + 'CopyFilesToMachineRequest', + 'CopyFilesToMachineRequestMetadata', + 'CopyFilesToMachineResponse', + 'FileData', + 'ShellRequest', + 'ShellResponse', ] diff --git a/src/viam/proto/service/slam/__init__.py b/src/viam/proto/service/slam/__init__.py index 0703e95d24..bba528710a 100644 --- a/src/viam/proto/service/slam/__init__.py +++ b/src/viam/proto/service/slam/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.slam.v1.slam_grpc import SLAMServiceBase, SLAMServiceStub, UnimplementedSLAMServiceBase +''' +from ....gen.service.slam.v1.slam_grpc import ( + SLAMServiceBase, + SLAMServiceStub, + UnimplementedSLAMServiceBase +) from ....gen.service.slam.v1.slam_pb2 import ( GetInternalStateRequest, GetInternalStateResponse, @@ -15,22 +18,22 @@ GetPropertiesResponse, MappingMode, SensorInfo, - SensorType, + SensorType ) __all__ = [ - "SLAMServiceBase", - "SLAMServiceStub", - "UnimplementedSLAMServiceBase", - "GetInternalStateRequest", - "GetInternalStateResponse", - "GetPointCloudMapRequest", - "GetPointCloudMapResponse", - "GetPositionRequest", - "GetPositionResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "MappingMode", - "SensorInfo", - "SensorType", + 'SLAMServiceBase', + 'SLAMServiceStub', + 'UnimplementedSLAMServiceBase', + 'GetInternalStateRequest', + 'GetInternalStateResponse', + 'GetPointCloudMapRequest', + 'GetPointCloudMapResponse', + 'GetPositionRequest', + 'GetPositionResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'MappingMode', + 'SensorInfo', + 'SensorType', ] diff --git a/src/viam/proto/service/video/__init__.py b/src/viam/proto/service/video/__init__.py index bb515b5e78..d3b1668585 100644 --- a/src/viam/proto/service/video/__init__.py +++ b/src/viam/proto/service/video/__init__.py @@ -1,15 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.video.v1.video_grpc import UnimplementedVideoServiceBase, VideoServiceBase, VideoServiceStub -from ....gen.service.video.v1.video_pb2 import GetVideoRequest, GetVideoResponse +''' +from ....gen.service.video.v1.video_grpc import ( + UnimplementedVideoServiceBase, + VideoServiceBase, + VideoServiceStub +) +from ....gen.service.video.v1.video_pb2 import ( + GetVideoRequest, + GetVideoResponse +) __all__ = [ - "UnimplementedVideoServiceBase", - "VideoServiceBase", - "VideoServiceStub", - "GetVideoRequest", - "GetVideoResponse", + 'UnimplementedVideoServiceBase', + 'VideoServiceBase', + 'VideoServiceStub', + 'GetVideoRequest', + 'GetVideoResponse', ] diff --git a/src/viam/proto/service/vision/__init__.py b/src/viam/proto/service/vision/__init__.py index a31dcafb76..580019886f 100644 --- a/src/viam/proto/service/vision/__init__.py +++ b/src/viam/proto/service/vision/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ....gen.service.vision.v1.vision_grpc import UnimplementedVisionServiceBase, VisionServiceBase, VisionServiceStub +''' +from ....gen.service.vision.v1.vision_grpc import ( + UnimplementedVisionServiceBase, + VisionServiceBase, + VisionServiceStub +) from ....gen.service.vision.v1.vision_pb2 import ( CaptureAllFromCameraRequest, CaptureAllFromCameraResponse, @@ -20,27 +23,27 @@ GetObjectPointCloudsRequest, GetObjectPointCloudsResponse, GetPropertiesRequest, - GetPropertiesResponse, + GetPropertiesResponse ) __all__ = [ - "UnimplementedVisionServiceBase", - "VisionServiceBase", - "VisionServiceStub", - "CaptureAllFromCameraRequest", - "CaptureAllFromCameraResponse", - "Classification", - "Detection", - "GetClassificationsFromCameraRequest", - "GetClassificationsFromCameraResponse", - "GetClassificationsRequest", - "GetClassificationsResponse", - "GetDetectionsFromCameraRequest", - "GetDetectionsFromCameraResponse", - "GetDetectionsRequest", - "GetDetectionsResponse", - "GetObjectPointCloudsRequest", - "GetObjectPointCloudsResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", + 'UnimplementedVisionServiceBase', + 'VisionServiceBase', + 'VisionServiceStub', + 'CaptureAllFromCameraRequest', + 'CaptureAllFromCameraResponse', + 'Classification', + 'Detection', + 'GetClassificationsFromCameraRequest', + 'GetClassificationsFromCameraResponse', + 'GetClassificationsRequest', + 'GetClassificationsResponse', + 'GetDetectionsFromCameraRequest', + 'GetDetectionsFromCameraResponse', + 'GetDetectionsRequest', + 'GetDetectionsResponse', + 'GetObjectPointCloudsRequest', + 'GetObjectPointCloudsResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', ] diff --git a/src/viam/proto/service/worldstatestore/__init__.py b/src/viam/proto/service/worldstatestore/__init__.py index b6c2b155ab..d728dc694b 100644 --- a/src/viam/proto/service/worldstatestore/__init__.py +++ b/src/viam/proto/service/worldstatestore/__init__.py @@ -1,12 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - +''' from ....gen.service.worldstatestore.v1.world_state_store_grpc import ( UnimplementedWorldStateStoreServiceBase, WorldStateStoreServiceBase, - WorldStateStoreServiceStub, + WorldStateStoreServiceStub ) from ....gen.service.worldstatestore.v1.world_state_store_pb2 import ( GetTransformRequest, @@ -15,18 +14,18 @@ ListUUIDsResponse, StreamTransformChangesRequest, StreamTransformChangesResponse, - TransformChangeType, + TransformChangeType ) __all__ = [ - "UnimplementedWorldStateStoreServiceBase", - "WorldStateStoreServiceBase", - "WorldStateStoreServiceStub", - "GetTransformRequest", - "GetTransformResponse", - "ListUUIDsRequest", - "ListUUIDsResponse", - "StreamTransformChangesRequest", - "StreamTransformChangesResponse", - "TransformChangeType", + 'UnimplementedWorldStateStoreServiceBase', + 'WorldStateStoreServiceBase', + 'WorldStateStoreServiceStub', + 'GetTransformRequest', + 'GetTransformResponse', + 'ListUUIDsRequest', + 'ListUUIDsResponse', + 'StreamTransformChangesRequest', + 'StreamTransformChangesResponse', + 'TransformChangeType', ] diff --git a/src/viam/proto/stream/__init__.py b/src/viam/proto/stream/__init__.py index 4053789543..65e7c5d375 100644 --- a/src/viam/proto/stream/__init__.py +++ b/src/viam/proto/stream/__init__.py @@ -1,9 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" - -from ...gen.stream.v1.stream_grpc import StreamServiceBase, StreamServiceStub, UnimplementedStreamServiceBase +''' +from ...gen.stream.v1.stream_grpc import ( + StreamServiceBase, + StreamServiceStub, + UnimplementedStreamServiceBase +) from ...gen.stream.v1.stream_pb2 import ( AddStreamRequest, AddStreamResponse, @@ -15,22 +18,22 @@ RemoveStreamResponse, Resolution, SetStreamOptionsRequest, - SetStreamOptionsResponse, + SetStreamOptionsResponse ) __all__ = [ - "StreamServiceBase", - "StreamServiceStub", - "UnimplementedStreamServiceBase", - "AddStreamRequest", - "AddStreamResponse", - "GetStreamOptionsRequest", - "GetStreamOptionsResponse", - "ListStreamsRequest", - "ListStreamsResponse", - "RemoveStreamRequest", - "RemoveStreamResponse", - "Resolution", - "SetStreamOptionsRequest", - "SetStreamOptionsResponse", + 'StreamServiceBase', + 'StreamServiceStub', + 'UnimplementedStreamServiceBase', + 'AddStreamRequest', + 'AddStreamResponse', + 'GetStreamOptionsRequest', + 'GetStreamOptionsResponse', + 'ListStreamsRequest', + 'ListStreamsResponse', + 'RemoveStreamRequest', + 'RemoveStreamResponse', + 'Resolution', + 'SetStreamOptionsRequest', + 'SetStreamOptionsResponse', ] diff --git a/src/viam/proto/tagger/__init__.py b/src/viam/proto/tagger/__init__.py index 3484a6ee3c..0e7ab86b40 100644 --- a/src/viam/proto/tagger/__init__.py +++ b/src/viam/proto/tagger/__init__.py @@ -1,6 +1,7 @@ -""" +''' @generated by Viam. Do not edit manually! -""" +''' -__all__ = [] +__all__ = [ +] diff --git a/src/viam/services/worldstatestore/client.py b/src/viam/services/worldstatestore/client.py index 60df8783c6..24af91e9b2 100644 --- a/src/viam/services/worldstatestore/client.py +++ b/src/viam/services/worldstatestore/client.py @@ -74,8 +74,10 @@ async def stream_transform_changes( # type: ignore name=self.name, extra=dict_to_struct(extra), ) - async for response in self.client.StreamTransformChanges(request, timeout=timeout, metadata=md): # pyright: ignore [reportGeneralTypeIssues] - yield response + async with self.client.StreamTransformChanges.open(timeout=timeout, metadata=md) as stream: + await stream.send_message(request, end=True) + async for response in stream: + yield response async def do_command( self, diff --git a/tests/mocks/services.py b/tests/mocks/services.py index 50dd5afcfe..1a1f7bebfe 100644 --- a/tests/mocks/services.py +++ b/tests/mocks/services.py @@ -1,3 +1,4 @@ +import asyncio from datetime import datetime from typing import Any, AsyncGenerator, Dict, List, Mapping, Optional, Sequence, Union @@ -560,7 +561,7 @@ class MockMLModel(MLModel): SQUARE_INT_UINT_NDARRAYS = {"0": SQUARE_INT16_NDARRAY, "1": UINT64_NDARRAY} SQUARE_INT_UINT_TENSORS = { - "0": FlatTensor(shape=(3, 3), int16_tensor=FlatTensorDataInt16(data=SQUARE_INT16_NDARRAY)), + "0": FlatTensor(shape=(3, 3), int16_tensor=FlatTensorDataInt16(data=SQUARE_INT16_NDARRAY.flatten().astype(np.uint32))), "1": FlatTensor(shape=(3,), int64_tensor=FlatTensorDataInt64(data=INT64_NDARRAY)), } @@ -1978,7 +1979,7 @@ async def get_transform( uuid=uuid, ) - async def stream_transform_changes( + async def stream_transform_changes( # type: ignore self, *, extra: Optional[Mapping[str, Any]] = None, timeout: Optional[float] = None ) -> AsyncGenerator[StreamTransformChangesResponse, None]: self.extra = extra diff --git a/uv.lock b/uv.lock index 5950ad084a..48f5179c13 100644 --- a/uv.lock +++ b/uv.lock @@ -498,6 +498,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024, upload-time = "2025-08-14T18:49:34.776Z" }, ] +[[package]] +name = "googleapis-common-protos" +version = "1.73.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/96/a0205167fa0154f4a542fd6925bdc63d039d88dab3588b875078107e6f06/googleapis_common_protos-1.73.0.tar.gz", hash = "sha256:778d07cd4fbeff84c6f7c72102f0daf98fa2bfd3fa8bea426edc545588da0b5a", size = 147323, upload-time = "2026-03-06T21:53:09.727Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/28/23eea8acd65972bbfe295ce3666b28ac510dfcb115fac089d3edb0feb00a/googleapis_common_protos-1.73.0-py3-none-any.whl", hash = "sha256:dfdaaa2e860f242046be561e6d6cb5c5f1541ae02cfbcb034371aadb2942b4e8", size = 297578, upload-time = "2026-03-06T21:52:33.933Z" }, +] + [[package]] name = "greenlet" version = "3.3.2" @@ -1587,17 +1599,17 @@ wheels = [ [[package]] name = "protobuf" -version = "7.34.0" +version = "6.33.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/00/04a2ab36b70a52d0356852979e08b44edde0435f2115dc66e25f2100f3ab/protobuf-7.34.0.tar.gz", hash = "sha256:3871a3df67c710aaf7bb8d214cc997342e63ceebd940c8c7fc65c9b3d697591a", size = 454726, upload-time = "2026-02-27T00:30:25.421Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/25/7c72c307aafc96fa87062aa6291d9f7c94836e43214d43722e86037aac02/protobuf-6.33.5.tar.gz", hash = "sha256:6ddcac2a081f8b7b9642c09406bc6a4290128fce5f471cddd165960bb9119e5c", size = 444465, upload-time = "2026-01-29T21:51:33.494Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/c4/6322ab5c8f279c4c358bc14eb8aefc0550b97222a39f04eb3c1af7a830fa/protobuf-7.34.0-cp310-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e329966799f2c271d5e05e236459fe1cbfdb8755aaa3b0914fa60947ddea408", size = 429248, upload-time = "2026-02-27T00:30:14.924Z" }, - { url = "https://files.pythonhosted.org/packages/45/99/b029bbbc61e8937545da5b79aa405ab2d9cf307a728f8c9459ad60d7a481/protobuf-7.34.0-cp310-abi3-manylinux2014_aarch64.whl", hash = "sha256:9d7a5005fb96f3c1e64f397f91500b0eb371b28da81296ae73a6b08a5b76cdd6", size = 325753, upload-time = "2026-02-27T00:30:17.247Z" }, - { url = "https://files.pythonhosted.org/packages/cc/79/09f02671eb75b251c5550a1c48e7b3d4b0623efd7c95a15a50f6f9fc1e2e/protobuf-7.34.0-cp310-abi3-manylinux2014_s390x.whl", hash = "sha256:4a72a8ec94e7a9f7ef7fe818ed26d073305f347f8b3b5ba31e22f81fd85fca02", size = 340200, upload-time = "2026-02-27T00:30:18.672Z" }, - { url = "https://files.pythonhosted.org/packages/b5/57/89727baef7578897af5ed166735ceb315819f1c184da8c3441271dbcfde7/protobuf-7.34.0-cp310-abi3-manylinux2014_x86_64.whl", hash = "sha256:964cf977e07f479c0697964e83deda72bcbc75c3badab506fb061b352d991b01", size = 324268, upload-time = "2026-02-27T00:30:20.088Z" }, - { url = "https://files.pythonhosted.org/packages/1f/3e/38ff2ddee5cc946f575c9d8cc822e34bde205cf61acf8099ad88ef19d7d2/protobuf-7.34.0-cp310-abi3-win32.whl", hash = "sha256:f791ec509707a1d91bd02e07df157e75e4fb9fbdad12a81b7396201ec244e2e3", size = 426628, upload-time = "2026-02-27T00:30:21.555Z" }, - { url = "https://files.pythonhosted.org/packages/cb/71/7c32eaf34a61a1bae1b62a2ac4ffe09b8d1bb0cf93ad505f42040023db89/protobuf-7.34.0-cp310-abi3-win_amd64.whl", hash = "sha256:9f9079f1dde4e32342ecbd1c118d76367090d4aaa19da78230c38101c5b3dd40", size = 437901, upload-time = "2026-02-27T00:30:22.836Z" }, - { url = "https://files.pythonhosted.org/packages/a4/e7/14dc9366696dcb53a413449881743426ed289d687bcf3d5aee4726c32ebb/protobuf-7.34.0-py3-none-any.whl", hash = "sha256:e3b914dd77fa33fa06ab2baa97937746ab25695f389869afdf03e81f34e45dc7", size = 170716, upload-time = "2026-02-27T00:30:23.994Z" }, + { url = "https://files.pythonhosted.org/packages/b1/79/af92d0a8369732b027e6d6084251dd8e782c685c72da161bd4a2e00fbabb/protobuf-6.33.5-cp310-abi3-win32.whl", hash = "sha256:d71b040839446bac0f4d162e758bea99c8251161dae9d0983a3b88dee345153b", size = 425769, upload-time = "2026-01-29T21:51:21.751Z" }, + { url = "https://files.pythonhosted.org/packages/55/75/bb9bc917d10e9ee13dee8607eb9ab963b7cf8be607c46e7862c748aa2af7/protobuf-6.33.5-cp310-abi3-win_amd64.whl", hash = "sha256:3093804752167bcab3998bec9f1048baae6e29505adaf1afd14a37bddede533c", size = 437118, upload-time = "2026-01-29T21:51:24.022Z" }, + { url = "https://files.pythonhosted.org/packages/a2/6b/e48dfc1191bc5b52950246275bf4089773e91cb5ba3592621723cdddca62/protobuf-6.33.5-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:a5cb85982d95d906df1e2210e58f8e4f1e3cdc088e52c921a041f9c9a0386de5", size = 427766, upload-time = "2026-01-29T21:51:25.413Z" }, + { url = "https://files.pythonhosted.org/packages/4e/b1/c79468184310de09d75095ed1314b839eb2f72df71097db9d1404a1b2717/protobuf-6.33.5-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:9b71e0281f36f179d00cbcb119cb19dec4d14a81393e5ea220f64b286173e190", size = 324638, upload-time = "2026-01-29T21:51:26.423Z" }, + { url = "https://files.pythonhosted.org/packages/c5/f5/65d838092fd01c44d16037953fd4c2cc851e783de9b8f02b27ec4ffd906f/protobuf-6.33.5-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:8afa18e1d6d20af15b417e728e9f60f3aa108ee76f23c3b2c07a2c3b546d3afd", size = 339411, upload-time = "2026-01-29T21:51:27.446Z" }, + { url = "https://files.pythonhosted.org/packages/9b/53/a9443aa3ca9ba8724fdfa02dd1887c1bcd8e89556b715cfbacca6b63dbec/protobuf-6.33.5-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:cbf16ba3350fb7b889fca858fb215967792dc125b35c7976ca4818bee3521cf0", size = 323465, upload-time = "2026-01-29T21:51:28.925Z" }, + { url = "https://files.pythonhosted.org/packages/57/bf/2086963c69bdac3d7cff1cc7ff79b8ce5ea0bec6797a017e1be338a46248/protobuf-6.33.5-py3-none-any.whl", hash = "sha256:69915a973dd0f60f31a08b8318b73eab2bd6a392c79184b3612226b0a3f8ec02", size = 170687, upload-time = "2026-01-29T21:51:32.557Z" }, ] [[package]] @@ -2523,6 +2535,7 @@ wheels = [ name = "viam-sdk" source = { editable = "." } dependencies = [ + { name = "googleapis-common-protos" }, { name = "grpclib" }, { name = "protobuf" }, { name = "pymongo" }, @@ -2555,10 +2568,11 @@ dev = [ [package.metadata] requires-dist = [ + { name = "googleapis-common-protos", specifier = ">=1.73.0" }, { name = "grpclib", specifier = ">=0.4.9" }, { name = "numpy", marker = "extra == 'mlmodel'" }, { name = "packaging", marker = "extra == 'mlmodel'" }, - { name = "protobuf", specifier = "==7.34.0" }, + { name = "protobuf", specifier = "==6.33.5" }, { name = "pymongo", specifier = ">=4.10.1" }, { name = "typing-extensions", specifier = ">=4.15.0" }, ] From 6949980986758f669127e0ac0f30017e497a92fb Mon Sep 17 00:00:00 2001 From: Naveed Jooma Date: Mon, 16 Mar 2026 16:00:15 -0400 Subject: [PATCH 09/12] Update mlmodel utils test --- tests/test_mlmodel_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_mlmodel_utils.py b/tests/test_mlmodel_utils.py index b24d8d37b3..5456d7292a 100644 --- a/tests/test_mlmodel_utils.py +++ b/tests/test_mlmodel_utils.py @@ -53,6 +53,6 @@ def test_ndarrays_to_flat_tensors(): assert type(output.tensors["0"].int8_tensor.data) is builtins.bytes bytes_buffer = output.tensors["0"].int8_tensor.data assert np.array_equal(np.frombuffer(bytes_buffer, dtype=np.int8).reshape(output.tensors["0"].shape), MockMLModel.INT8_NDARRAY) - assert np.array_equal(np.array(output.tensors["1"].int16_tensor.data, dtype=np.int16), MockMLModel.INT16_NDARRAY) + assert np.array_equal(np.array(output.tensors["1"].int16_tensor.data, dtype=np.uint32).astype(np.int16), MockMLModel.INT16_NDARRAY) assert np.array_equal(np.array(output.tensors["2"].int32_tensor.data, dtype=np.int32), MockMLModel.INT32_NDARRAY) assert np.array_equal(np.array(output.tensors["3"].int64_tensor.data, dtype=np.int64), MockMLModel.INT64_NDARRAY) From bdfff8b1a1547e6b7ee01ee52e67b5b4c43b04a6 Mon Sep 17 00:00:00 2001 From: Naveed Jooma Date: Mon, 16 Mar 2026 17:13:42 -0400 Subject: [PATCH 10/12] Update docs test --- docs/examples/example.ipynb | 286 ++++++++++++++++++++++++++---------- docs/examples/foo.png | Bin 221129 -> 202304 bytes 2 files changed, 210 insertions(+), 76 deletions(-) diff --git a/docs/examples/example.ipynb b/docs/examples/example.ipynb index 94c38e2efe..a00d2ef07e 100644 --- a/docs/examples/example.ipynb +++ b/docs/examples/example.ipynb @@ -74,55 +74,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[namespace: \"rdk\"\n", - "type: \"component\"\n", - "subtype: \"arm\"\n", - "name: \"arm0\"\n", - ", namespace: \"rdk\"\n", - "type: \"component\"\n", - "subtype: \"audio_input\"\n", - "name: \"audio_input0\"\n", - ", namespace: \"rdk\"\n", - "type: \"component\"\n", - "subtype: \"base\"\n", - "name: \"base0\"\n", - ", namespace: \"rdk\"\n", - "type: \"component\"\n", - "subtype: \"board\"\n", - "name: \"board\"\n", - ", namespace: \"rdk\"\n", - "type: \"component\"\n", - "subtype: \"camera\"\n", - "name: \"camera0\"\n", - ", namespace: \"rdk\"\n", - "type: \"component\"\n", - "subtype: \"gantry\"\n", - "name: \"gantry0\"\n", - ", namespace: \"rdk\"\n", - "type: \"component\"\n", - "subtype: \"gripper\"\n", - "name: \"gripper0\"\n", - ", namespace: \"rdk\"\n", - "type: \"component\"\n", - "subtype: \"motor\"\n", - "name: \"motor0\"\n", - ", namespace: \"rdk\"\n", - "type: \"component\"\n", - "subtype: \"movement_sensor\"\n", - "name: \"movement_sensor0\"\n", - ", namespace: \"rdk\"\n", - "type: \"component\"\n", - "subtype: \"pose_tracker\"\n", - "name: \"pose_tracker0\"\n", - ", namespace: \"rdk\"\n", - "type: \"component\"\n", - "subtype: \"sensor\"\n", - "name: \"sensor0\"\n", - ", namespace: \"rdk\"\n", - "type: \"component\"\n", - "subtype: \"servo\"\n", - "name: \"servo0\"\n", - "]\n" + "[, , , , , , , , , , , , , , ]\n" ] } ], @@ -150,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "tags": [ "hide-output" @@ -170,14 +122,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "tags": [ "hide-output", "remove-input" ] }, - "outputs": [], + "outputs": [ + { + "data": { + "image/jpeg": "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", + "image/png": "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BZWVlSED15BRYmFh4Tdv3kCaRWxsbJycnL/AgIGB4dy5c8+fP5eSklJSUuLi4oKMhEBmQX7//g2poSHnhkIOkdmyZYuEhMTt27f5+PicnZ0h926+f/8ezZsDy4UELKYbIIGPKQ5p7UKOsmNkZIQslIDsvf7w4YOmpubz588lJSUh56J8/foVUjFjmgOxF24LnAERx1QPV4AmhUscTRmcS6p6uMYhyoDMe127do2FhYWfn//nz5/MzMw/fvwQExP79esXpEUrISHx7t07SMwO4LwSSSGMKx7h6QeiAEJCCgqI+RARCAkp9yHiRJJo1TDcBEwD4SIQk+FcCANejUGqBIggnIRUPJA6FVJFQbrF8FoZbibEvxCNEDZEF0QEoowSEpc5cPfDLYXYgks9RBaThByoBznHEBJNkNW+kK3VENMgbfovX75ASpjDhw8/efLkxYsXDg4OGhoakKYkpskQEcjBmRCTkSOLjY3t4cOHb9++/fv3r4iIiIaGxsePH3fv3i0iImJgYDDoBqUhrRVIxQbZswVPiBB/0pn8+/fvz58/IQNokF4sZKeak5MTJycnNzc3pGMKmR74////hw8ftLS07t27x87O/vv3bwUFhZUrV4qIiKirqysqKkIiiZmZGTKpwMzM/OHDByYmJjk5uT9//rx79+7Dhw9cXFyQDVp79uy5d++etbU15MJENja2P3/+fP36FbIEDLJ+DzJTDtk6xczMfOnSpfv378fExEhISLx+/Zrso8bpHMh4rIPs4+Lj4/vy5QtksOHPnz9Pnz598eLFmzdv2NnZHz16xAMG8KY6LtMgeQyeN3ApGxWnJATev3//7du3e/fuiYiIsLOzP3/+HLKH/vHjxx8/fuTh4eHj49PU1ITsPPz8+TMldo0ovfDkDWdAvA/nwhlYxSG1F6SrAFGAzIbLQvpz////h9z/BmkkQZYjQepvSHcIoh5e2UAMpAMJtxfZ8STZC2lwQLo0kAVWkGbH379/v3//zsHB8efPHxEREU5OzpMnT7569YqdnR3S1/r27ZuiouKbN29+/folISEBX7tDpO3//v0TERFhYWF59uzZixcvODk5f/78+f37d0FBQdBWKyJNoZsySPhCljhBSkxI1UU3B6BZBNkTBTl84/Hjx69evfr//z8XF5eiouKfP38gu6ogLSnI8XJKSkpXrlwREhLi5+d/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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "from PIL import Image\n", "pil_image = Image.open(\"foo.png\")\n", @@ -662,7 +626,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 9, "metadata": { "tags": [ "remove-input" @@ -672,13 +636,198 @@ { "data": { "text/html": [ - "
# my-python-robot/my_cool_arm.py\n\nimport asyncio\nimport json\nfrom typing import Any, Dict, Optional, Tuple\n\nfrom viam.components.arm import Arm, JointPositions, KinematicsFileFormat, Pose\nfrom viam.operations import run_with_operation\n\n\nclass MyCoolArm(Arm):\n    # Subclass the Viam Arm component and implement the required functions\n\n    def __init__(self, name: str):\n        # Starting position\n        self.position = Pose(\n            x=0,\n            y=0,\n            z=0,\n            o_x=0,\n            o_y=0,\n            o_z=0,\n            theta=0,\n        )\n\n        # Starting joint positions\n        self.joint_positions = JointPositions(values=[0, 0, 0, 0, 0, 0])\n        self.is_stopped = True\n\n        # Minimal working kinematics model\n        self.kinematics = json.dumps(\n            {\n                "name": "MyArm",\n                "links": [{"id": "base", "parent": "world", "translation": {"x": 0, "y": 0, "z": 0}}],\n                "joints": [\n                    {"id": "waist", "type": "revolute", "parent": "base", "axis": {"x": 0, "y": 0, "z": 1}, "max": 359, "min": -359}\n                ],\n            }\n        ).encode("utf-8")\n        super().__init__(name)\n\n    async def get_end_position(self, extra: Optional[Dict[str, Any]] = None, **kwargs) -> Pose:\n        return self.position\n\n    @run_with_operation\n    async def move_to_position(\n        self,\n        pose: Pose,\n        extra: Optional[Dict[str, Any]] = None,\n        **kwargs,\n    ):\n        operation = self.get_operation(kwargs)\n\n        self.is_stopped = False\n        self.position = pose\n\n        # Simulate the length of time it takes for the arm to move to its new position\n        for x in range(10):\n            await asyncio.sleep(1)\n\n            # Check if the operation is cancelled and, if it is, stop the arm's motion\n            if await operation.is_cancelled():\n                await self.stop()\n                break\n\n        self.is_stopped = True\n\n    async def get_joint_positions(self, extra: Optional[Dict[str, Any]] = None, **kwargs) -> JointPositions:\n        return self.joint_positions\n\n    @run_with_operation\n    async def move_to_joint_positions(self, positions: JointPositions, extra: Optional[Dict[str, Any]] = None, **kwargs):\n        operation = self.get_operation(kwargs)\n\n        self.is_stopped = False\n        self.joint_positions = positions\n\n        # Simulate the length of time it takes for the arm to move to its new joint position\n        for x in range(10):\n            await asyncio.sleep(1)\n\n            # Check if the operation is cancelled and, if it is, stop the arm's motion\n            if await operation.is_cancelled():\n                await self.stop()\n                break\n\n        self.is_stopped = True\n\n    async def stop(self, extra: Optional[Dict[str, Any]] = None, **kwargs):\n        self.is_stopped = True\n\n    async def is_moving(self) -> bool:\n        return not self.is_stopped\n\n    async def get_kinematics(self, extra: Optional[Dict[str, Any]] = None, **kwargs) -> Union[Tuple[KinematicsFileFormat.ValueType, bytes], Tuple[KinematicsFileFormat.ValueType, bytes, Mapping[str, Mesh]]]:\n        return KinematicsFileFormat.KINEMATICS_FILE_FORMAT_SVA, self.kinematics\n
\n" + "
# my-python-robot/my_cool_arm.py\n",
+       "\n",
+       "import asyncio\n",
+       "import json\n",
+       "from typing import Any, Dict, List, Mapping, Optional, Tuple, Union\n",
+       "\n",
+       "from viam.components.arm import Arm, JointPositions, KinematicsFileFormat, Pose\n",
+       "from viam.operations import run_with_operation\n",
+       "from viam.proto.common import Capsule, Geometry, Mesh, Sphere\n",
+       "\n",
+       "\n",
+       "class MyCoolArm(Arm):\n",
+       "    # Subclass the Viam Arm component and implement the required functions\n",
+       "\n",
+       "    def __init__(self, name: str):\n",
+       "        # Starting position\n",
+       "        self.position = Pose(\n",
+       "            x=0,\n",
+       "            y=0,\n",
+       "            z=0,\n",
+       "            o_x=0,\n",
+       "            o_y=0,\n",
+       "            o_z=0,\n",
+       "            theta=0,\n",
+       "        )\n",
+       "\n",
+       "        # Starting joint positions\n",
+       "        self.joint_positions = JointPositions(values=[0, 0, 0, 0, 0, 0])\n",
+       "        self.is_stopped = True\n",
+       "        self.geometries = [\n",
+       "            Geometry(center=Pose(x=1, y=2, z=3, o_x=2, o_y=3, o_z=4, theta=20), sphere=Sphere(radius_mm=2)),\n",
+       "            Geometry(center=Pose(x=1, y=2, z=3, o_x=2, o_y=3, o_z=4, theta=20), capsule=Capsule(radius_mm=3, length_mm=8)),\n",
+       "        ]\n",
+       "\n",
+       "        # Minimal working kinematics model\n",
+       "        self.kinematics = json.dumps(\n",
+       "            {\n",
+       "                "name": "MyArm",\n",
+       "                "links": [{"id": "base", "parent": "world", "translation": {"x": 0, "y": 0, "z": 0}}],\n",
+       "                "joints": [\n",
+       "                    {"id": "waist", "type": "revolute", "parent": "base", "axis": {"x": 0, "y": 0, "z": 1}, "max": 359, "min": -359}\n",
+       "                ],\n",
+       "            }\n",
+       "        ).encode("utf-8")\n",
+       "        super().__init__(name)\n",
+       "\n",
+       "    async def get_end_position(self, extra: Optional[Dict[str, Any]] = None, **kwargs) -> Pose:\n",
+       "        return self.position\n",
+       "\n",
+       "    @run_with_operation\n",
+       "    async def move_to_position(\n",
+       "        self,\n",
+       "        pose: Pose,\n",
+       "        extra: Optional[Dict[str, Any]] = None,\n",
+       "        **kwargs,\n",
+       "    ):\n",
+       "        operation = self.get_operation(kwargs)\n",
+       "\n",
+       "        self.is_stopped = False\n",
+       "        self.position = pose\n",
+       "\n",
+       "        # Simulate the length of time it takes for the arm to move to its new position\n",
+       "        for x in range(10):\n",
+       "            await asyncio.sleep(1)\n",
+       "\n",
+       "            # Check if the operation is cancelled and, if it is, stop the arm's motion\n",
+       "            if await operation.is_cancelled():\n",
+       "                await self.stop()\n",
+       "                break\n",
+       "\n",
+       "        self.is_stopped = True\n",
+       "\n",
+       "    async def get_joint_positions(self, extra: Optional[Dict[str, Any]] = None, **kwargs) -> JointPositions:\n",
+       "        return self.joint_positions\n",
+       "\n",
+       "    @run_with_operation\n",
+       "    async def move_to_joint_positions(self, positions: JointPositions, extra: Optional[Dict[str, Any]] = None, **kwargs):\n",
+       "        operation = self.get_operation(kwargs)\n",
+       "\n",
+       "        self.is_stopped = False\n",
+       "        self.joint_positions = positions\n",
+       "\n",
+       "        # Simulate the length of time it takes for the arm to move to its new joint position\n",
+       "        for x in range(10):\n",
+       "            await asyncio.sleep(1)\n",
+       "\n",
+       "            # Check if the operation is cancelled and, if it is, stop the arm's motion\n",
+       "            if await operation.is_cancelled():\n",
+       "                await self.stop()\n",
+       "                break\n",
+       "\n",
+       "        self.is_stopped = True\n",
+       "\n",
+       "    async def stop(self, extra: Optional[Dict[str, Any]] = None, **kwargs):\n",
+       "        self.is_stopped = True\n",
+       "\n",
+       "    async def is_moving(self) -> bool:\n",
+       "        return not self.is_stopped\n",
+       "\n",
+       "    async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:\n",
+       "        return self.geometries\n",
+       "\n",
+       "    async def get_kinematics(\n",
+       "        self, extra: Optional[Dict[str, Any]] = None, **kwargs\n",
+       "    ) -> Union[Tuple[KinematicsFileFormat.ValueType, bytes], Tuple[KinematicsFileFormat.ValueType, bytes, Mapping[str, Mesh]]]:\n",
+       "        return KinematicsFileFormat.KINEMATICS_FILE_FORMAT_SVA, self.kinematics\n",
+       "\n",
+       "    async def close(self):\n",
+       "        # This is a completely optional function to include. This will be called when the resource is removed from the config or the module\n",
+       "        # is shutting down.\n",
+       "        self.logger.info(f"{self.name} is closed.")\n",
+       "
\n" ], "text/plain": [ "" ] }, - "execution_count": 1, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -722,19 +871,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 10, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/vh/04mycgp163125hlq8k9bkl8w0000gn/T/ipykernel_50114/2037726754.py:15: RuntimeWarning: coroutine 'main' was never awaited\n", - " pass\n", - "RuntimeWarning: Enable tracemalloc to get the object allocation traceback\n" - ] - } - ], + "outputs": [], "source": [ "# my-python-robot/main.py\n", "\n", @@ -911,7 +1050,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": { "tags": [ "hide-input" @@ -930,7 +1069,7 @@ } ], "source": [ - "from IPython.core.display import display, Image\n", + "from IPython.display import display, Image\n", "\n", "display(Image(filename=\"./codediff.png\"))" ] @@ -1275,7 +1414,7 @@ "metadata": { "celltoolbar": "Tags", "kernelspec": { - "display_name": "viam-sdk-1ZkIuRmo-py3.11", + "display_name": "viam-sdk (3.13.11)", "language": "python", "name": "python3" }, @@ -1289,12 +1428,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9 (main, Apr 2 2024, 08:25:04) [Clang 15.0.0 (clang-1500.1.0.2.5)]" - }, - "vscode": { - "interpreter": { - "hash": "3dcf3a0dc186f3f37ed02c43aacb5aba79c21834e2f1b6d3d1f9d9c84c46ec17" - } + "version": "3.13.11" } }, "nbformat": 4, diff --git a/docs/examples/foo.png b/docs/examples/foo.png index d20a101e9e2b4f45e4851aa95a5e53ecb723a9ab..9f6d4e28704816521714733fe199c43ffae8de32 100644 GIT binary patch literal 202304 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 z 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 euXJQ{b4$h-pBrS#U-LBhqpM|b?74 literal 221129 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 z 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

7HV%3?^+xvpzZRlMvls{P#IHSkej z!$*>3C^9`1@(A7BZt=os04hmJHJHOe#D)lpNzjeQBoRyE#7>N2tbn|KwsV7AmehFa z4c8Z^ewr+a)c5Jo3wMO{II$6A2k6ya8m35*B4x@yKR!vZH}laPBF7 zYJ5`9AMV88=x=2xw0ag_bozuo7Q(qIb}pqL3Uz;!qi1FHubMfA?A9mxxbYHsPM


^QKp0D{zGMJJOv;c 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≥%zx)xC2)>Xc#Bi;sgEmYX}cOWMta>dMCZ9;MA4w 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 A1poj5 From 5998dfef2b55a7f71ba707e644a4c9bfe5e70213 Mon Sep 17 00:00:00 2001 From: Naveed Jooma Date: Tue, 17 Mar 2026 13:08:04 -0400 Subject: [PATCH 11/12] Revert image to save blob space --- docs/examples/foo.png | Bin 202304 -> 221129 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/examples/foo.png b/docs/examples/foo.png index 9f6d4e28704816521714733fe199c43ffae8de32..d20a101e9e2b4f45e4851aa95a5e53ecb723a9ab 100644 GIT binary patch literal 221129 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 z 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

    7HV%3?^+xvpzZRlMvls{P#IHSkej z!$*>3C^9`1@(A7BZt=os04hmJHJHOe#D)lpNzjeQBoRyE#7>N2tbn|KwsV7AmehFa z4c8Z^ewr+a)c5Jo3wMO{II$6A2k6ya8m35*B4x@yKR!vZH}laPBF7 zYJ5`9AMV88=x=2xw0ag_bozuo7Q(qIb}pqL3Uz;!qi1FHubMfA?A9mxxbYHsPM


    ^QKp0D{zGMJJOv;c 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≥%zx)xC2)>Xc#Bi;sgEmYX}cOWMta>dMCZ9;MA4w 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 A1poj5 literal 202304 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 z zgX(*E8EkHQ6=TSKMMIyHM@bcYqVuwjlJ25dg~YaoS->8kI{!Mp38QVOZ2_B1Q#=@m z5B#Fa^HyTk>Z72c1FFDp3(N@Tp1UIVa)eMYJ6o1w^<#O<`0aQ}NhXDPN7^-rg7|qK zs!zU=G?g-*+qjNbkg{4p%6bXX0WZp{tV z&RrWCD=Wd!bo;WUeNsFSHYdRi98&)X9$Cve_2A(Qn^eI`@VaS!w+>p;3?)fq{rNeq$g>91b zVyCj9M<4C0b=xKdApt~&WITBtf?rWviMXL5Qfv5dc5Zybw5HKTXM0nbo6qRix={+L z?RbkyP5>%>jO+n(7t_+tN$=rJT{rSe$-niUSLk7ETN|o)Z#ceqXONm?yw~e>-RzQ_ zN{sC{O${+xSm~OJSAVD*AZ5*R{n)X(Sx7AzbN_t~>e8VPclKv0<-?-Z_O|$#{Y|=E zQre1myWiJU%d(d;EvMxCOWEg~kWd>z&_tRy@i1S8CKm8#NP_sCCg7XN z#lx8-&9k2a8I0X}{z36#=2j2dKjxF#ySbro;TxEO@tOvVE{bBV;e{EsJ_6oBI#*R) ze<=~^yHm;xvJguJ4uc{NFLQ}%0p7>%G}KOB(ey_G>7m6?)xwJou^H?NP`ihENSrgY zMnTg8c+nN8o|4kjzu@jc0y9UF2UL+D!!W!$xw-Q8zPa}NTmpaDgp{lTZC+v;QexG+ zGX2w7c^#@F2;iKa2Ejf2!OQodTH+=~=ZL>GmELLCEg!-9YUTNfuenzV?H8@K4j*3j z;NR0xpZD?VOn1ELij><9E0z7oUOchFJXoF&tFFPtCI3}~*>Jy6M6{hXr@Pe-H|s57 zL8TobA;!G`bBvG?f`si+<5dlANgb*zVpnT=Gt$A!W{1=v9_Qej0kShqF54P?!}o8; zo8OX*a(g)j<+718R#GnYY>2(*sU%$FsHAl9&Y>=JDf=Ln$bFHF$6WC8jDTB*{wLC( zO7k!sUTyZVRLnlyaeDf*-hYW0LE-7o z1$*gUgu4h+ijT$WI@>W`WP`E+8{@%(7WF09bD0HU&|TVH~kWF6vQVXpg_&8C{Bw#t8gTrQTPsWvcJ|jLw~!VHb)m|EaR?02^;p1aG^Q>xGLnqEW!kPvM@z+0HZ+CZUD^o=X@2s97$f1Y zA06tZ>tIrDT?H{Q!D&v~opfHf?AA4nT%#p-9KV*eS!{nWF&&5+bj8CYRbHD_w0C{; z*>8zS@Z$IK`?n^&GIX|bXeWHXNf_5#Gk=ULs5A}+J8zLJ3mkDhj!s`m`8ib@5%NWU z;h)YH^1@5>M3=vn<+D@^NsZm~fC?on(zDcvGb4@QtUr6y&NuQsQ~usyf;`QF0M+Y2 zmzFyZG*;^WT~;QS+s9M=ROjX9cI!bU6Ywu=5J>EKQ63w20V5kz2z{ia%gr8LS3YtJVKpmf>P;K+k44)}7ywZb$oCvLCMHQczLV)xb-}QR|{@8IQSjwzE@NXZyo`71lJts zpPp0fU(~4!W!xm*{4+4q zN`QGgqb9|owaeeH>TUG`h^l??jJ&tV2D4hBxyEhDL>F8gk&>Q9NNt>x^bn`n$;of; z*%m1uHEow08FOy-PBqtm^6hoTFE=kjnd#(|DKOYX^%L1cSimA!te8rcIFUAg%5yz1 ze}Eo@PIoQyE3DS55qG5ULd{ZQY7@DrfjhrE{;{K#&z!$3gJ|b*;m1lHo7E3oiOhxp z$03_-B}uw90|i4}yp5k6#P2;7(<^RU`?es>_`?wkgj~RrVslRhRM(tL>3^PN#FwMI zyT26f{;Df8_Vmu5hyHPue_(z!zeZ={OkM+0c&EBl-UOHVmz*6D*&6uSV0NlgS$`rWL1pJ%jIj&^@B zSvK6h(D2Z8F^_#1f~Oqd;^2Vbee_=-l7&#l+5mXv=#(4-4=U*P&wpw^K-2HlhchwG zbC7{iLDa$|4esfQuPdJ17{(go-pfh(`tj9Xe-r6-7lylUGcc7(Nj2z@T~+&)-xJJm zQ99I(ySHH&ppDwk=nK$s>}*EIH4{Jvh3|GFWyzbin{&xcB`592+~@r7V-4HtJXa`x zMSO}ZC$^0&VN=PYq$u6JUdB+VEhR~dOUq;V%Wc2BD@8z3??l>kC;Y?%&A zVu?m)a$E+fq1N=hX_8pdVyQQ)-`n~PiFug5yC2hb-i22LVwbl8%^4Bj$gtC5QW&vilVtd_x8U)Z} zaVq1OSRNMlPY-C;=4^4=;FVMO7x3B=|5R?nGR;TUk7HB~sTZEyY@kwobcEUbI!J>C zCpaOot-C|rMSev7zPL8(=_czq&a$ym|eaK!RA_ zq0JU449@{u@<^h`m?#jAU|2sCxRO8y@uXL?w}(f#d0P{hu|YFk8Ty&@Xk=uhyIY1o zO{#+1Fan-8#XP^n)c&=jyXI;6{xb6RpFLVspmQusL3ra&M6s|vjsEM0Y=wEi)Ek14 zDrR=ePZOziW!*7u$R4q1O)Q(}7

      e9_GUxN)$+#wa%3Jhc0x=vY>riRk{MU|)Pm+gg%^(Ve++panmoPK}e$;`*GM_w{K z=BoTDUO$;xT~KQsk*ZI?|GU_XFioh+6d$v%E~4x6j9#d4>VPG0VjOQuq49IXubiwb z7{fT~fk<2N z7k>+Z*)qg|f{kQc%Nr;EVCG;=RG)O{@O;v_6w%IvsH{1Yrc|=W=wE z$Obl!Qbw^2bH*(rg-WgjJ6d^zRgp#Bp2YB*K;aAT ztmksF99NU`Gn{=kcnnl(7ZJYkPj9CHJZfVdzV~57awc z&%2#m%waca@eN^cTy)D9i++|2&t&~*l9v1>D9Vo@5AUR4a;0;{s6R|KRhMRr6l@-_#m7WPc#mUR z@0~bbZ{L`HR+XipMs~d+uS{X+;k{&hP9}%9a`es#`B&EoU9)%(($?vkvYYnh@>&+Zq*!h^?6rlQ&K zZh&Wcy5`}?$^pzCU9Z!IunBluBImY5b#BO4>2fu;v;?euD**wxMhc2LF5L6O1Dz6m zu8qP`0yeg$xvqyP*to-#gg14c1wXdsRb9Qa;U&3BtN0f`+Ah2l5sLQcMLbWwgIfuZ zj>{ejafIFk2IX}dXyZ+68kDhEid_qv#d84`LX8-i=q8>P^dyy!xh~>l^6xbktxyC| zxjf~pHbL+|dPyq%w!eLM^~^~nnP3ck-&5Z1?*W9_%eY}O8}BcG zL*t{2Wn+yM$2S%&-iAm|z{<9_tA7EK5}&ND{5UXS3Av+C$e4RGdq{Db824sk|81UO zJ)stQKbB%eI}_EPSesh1c{@>S>7{e3>)!X0vXxnqA<$*W-mGe>NGeKxT92d!AiZ#YFC8S+1<8|w>Rc$3bCH)Mg^?k&ks z+#g&IUzbj)=kw=G^RsOC<73fH9Qm^Bk)^N75S@{rG)(|Vo4=?|;#rSg1#;FMPU zCz^rN>yV=GgAzS^gs_1aCkLz9y^1#q#RePzw=GBhcAVm)#gsS0%6#Oc9Ah9ZXy ze{&q14;<`|6`sBxS&?BRY1~H-L5v*e7Bg(|DEI2J8RZKhGDvQq!TuWFuk_6qC8tz1 zZ< z50yXwU5Mw;yF_*``boP8WrBaNQ;Rc-HH-cN+4#HS{QW1(Vjh>GoDnSn5w%?^m9 zs4@h}B3ut3ZgF)bNg*|DvOSe37Ondgqguo@@-I-psVUAz%SENZ&r+KwS z&OF^vH(JrUHe#f26td~pmpgo$68|L1a8m8JtEO_@>?6LZo+33Nsr5d)-etnZ63Zg? ziQ4s}0BJ@w*{P+yuOlO@4zUr*)nRc?jOaMs*lfl+cL}0%v^eHn#6C0QrePp%iia@} ztFe(Pq*dliSQD+&>b`=8q|v+5iK_oq^(HLk^GeIe@N0Yn9)7=XhC4VABkex8n7)Xyh6>|k~Q)hkX^PSZ5o5o+%-7xqE0fLxT;^ia7P2&#jbC722 z-)5#JL@y=sCB~e+x@sSDtTfMGxS}5s{Pwo zKhmqnOMH{M&1W(#zutwzv>fC^bU(7aWSzRP|I{2$XkcbjSoCuJ(Jbp))oJO^og4d4 z!o@?%Fxcihka2AEJ)g&>3Z-;d!vza;@7hyzIcecpS*OTr=IfUuMlnhMLUvni?Sh*) zYPV9ZgQTG5{^P*6hho{@g0yBydYuIn52l(^ala`1KqF_o8uUpb zae8RetcR?c-Z%?n+@$f{{t+^_;vWQ9?UJ~#w?>MvoZR!3;heg@EA>9((rI(dU% z#&Ed;1Pf15qDF~+9c=Kg%4TcTTrl?vHiehT6X%Qt92-eO^sV9W#Zwn92+n1uCuYs5 zxMr}k+KHD^D6%twD-ky{X&sd1L7(!3-jt~)yko@(q1nq(Af8z{0J!h4l0`-GFi|!q z4ObYRSV+)Y_JGfN%SY)i7ilzRSZ6?6F0Ae!UZ5X91hq6{qB2X_iyrG+jm!h}ggM-T zJVkBXPJAaQ%UGf6nC2ZST1GccJF7>E3}lwEmUofkp{cAx_ArzS{zG2p=>cV|g9hE9i1A>(fiE1=jME{yI)OF__P!tAY7pevA3VZdX+ zfcHWXddxEhMY6Snv2WOt73OHphW+GN=fOD6QBiLAXJUB2+?WqCVeZPF+1lAHUtRu_ z&8r!6e9-DcWc=8X?Vc2Epme|c%ml~_%CyY*C^b?fa}xTO6mC=8N<$Zk{L5Q99^EyP z|IE*eDcAFKJD+M;|7~4Wi~~PS&{Ws<&u4Xix+jJ!@1kxE`UoR;jom-~CgIP&D(G+U zLOTC8O};iTGM)*;yYde_c|JNqfm0h9GM1=_Rj5Vna&Z;!eb%@G&t^Se>w{|e94Cz) z-mkcy`(OM?A%o+1)AN;vr&^?#I#Nj3FzR|Ti zxo7?zQ2w}rjEOKCMMp=6^p(Dk{#>+BjP%bk7O*?z6eeC|WPbLLk1|B(?eqqO#paJB zD6`b_!NtFNqh$P%xM1#zN&Q=(r_|Zdf4>T7BmOjOeReKf`yxplBUxXsly*$Hp>YR( zkYsgRz+ZnDLx<$>vIp+(JZb+Fol*sAbY-Tf`nuF1TcJX(LY!Z=LJAvr>{g1;gLTP> zLJcYyR|^H49q;x39@!%P%QuHxV1^Oj-Pc+<_Eq5oQ%~{)`~K^uHiPT3!toa@a9ixE zY#g0ymY{P7C?H{adBk5kwIn^bEOgpJgsp@^3T6+L8>~YStx@%ZvG}f;CtOlyqmTZ& zi6_mfus-G@r?n2W{+kcZA+y}{hmV`S1D9H5i17mJ6?dD(%`dOZ!ohkWKhY6y_kIqI z;^+K4*3-1{wXgOK@~o_;INeVFgXA3tuwK8irqWbCc_fe#ds-OHkcMk+QbS0pnb_X| zAxJUSC?quiPUw$`z40 zHB|oyO{f0_E=K3Iec8kHPMD3N*~2zu)-3UPL7CfXM3Ip{+9F=}(BZw*YL>z^X@1QW zhEhy!RFTxzWAzOeRzD1jez0`TyTEwsp(!g#w*N()go=c47q}S4cvT#ROcj^$CXC6W z38E#VF_G}^rQ>ViH7sWYf__l1{ppt+04=HT<yd&sfO3jth#4=Wu)&tTPa%S+}5riyWT6d{SqPG z=oMU$wft`L3%fsdEQ3tkODoyM`10Rtkd~l;94*EdC8;dz=+MV*9`6@YH_>n_K=`rY zqA%!OW=|1W(fw5SESz-e6hXv**MyIf;G!%4d=!zujE1p?6}8G|9F1Qgbm^+|)1L@wkzZ;$SC zeNY~7)Ab550%){&d<}Lx#YE6K@qDm(Xd{|^a3)Rt5Xw10eA#9Jy!S$9NFZ6~+u2O* zbqzL~+3R8>l(K-cffoyv5BWWelo4+(EvEYZg_0sZ+JzxwC0wU`-Do*AGZ`%NV-1f9 zFO~NyEI0JXnKf{3Fj!V5$r>PE9|;P|V1_9q-9=PPV#MBlJ+@CAO6<(A(2KBAou=W< zm@ajvk7NiNu;s}ZtTQGQ>tEWF?mgB_`Q!0Hkh>g%Hu_hf>`e{Qes|E#AUit@3GlW- zu|kMFMiPnX3lafY&>Y9$M#V z-}|BAP48)?^kXDhxtn#3lhKR5YKcOan4FBPo>qZGko`{wSEtYRPs1jjJ`ESv8Ky1? zgfyWuk(U>8o_o9Ms#XJCJ7ARKTd4GpkL%|WyfUF857U>Ong9bhfA(63leTXEO!}kM z^-{wtwNPPjTsVuuf~pN%V@|!B4ZI-Gt^PQ)iUo-quE;FRYA2Kl3p3y||GB-mGX{$t z(cZoTk}X_x)R-|5N5o&gDEZTUM~&l0&Lpy}fAvp^=SjVU0fl}}^3_wE9(1jD;0{n` zA;&ME0f5I>lHpID4C7sa3^J8E!-~b%V}uF0Hik7x0m;czoaUdIrz&Fwx4EV$d_CI( z%5v{Z-2+Uk7gdi^`H|QWc6=_A^<%iX;3#bP;t!1(g-kr`H1yh*=gRRN_6^K4<2*kr zh=L+#LQP&Lxsbm}DtZycq?x+<6g%3h$rMZ2X>?Cv=fxmMtO|5-+n(Sy=egkN4ZR>y zr4c8MhIc$LD%)5fgPF_y`sxxoqFvsDm|X8%BvY%93pOG02O(U?0d0$Juu8-<*N(Ac zzab7)Idnzb)%%C$FB@F75FwGE^r?Pu*-4mIHqX`D+uOrq|6oLp3eySFwxQ8&k=ps-&G-#qfcRGt5pg8={E4}-9W>gjtVb)R*+>Nnmd>YrZgb^VB(IW><$43j- z5`CIQnXV<~HmjnsDDr;LOhHs1c%ctZl zS$h`pu9eEa6cyo@-Y(*)18|->i%N-!IW(Dqav2I7ZV+^h$nc|>MvXO7*ar8(?>^xV zq_w4Ml8Y+Z%%U5@E53&0#>W#uN@^@QQ!erc0!ETK?~M6Ss{qwPl&!KQm{a0amtIg= zfa=)X!a`MzQh!^arLa5xoiG+C>-@} zZ47@pYK~bvlxRGUosEbrAtBno|(;qgHaM>s@JB%IwaG+~q?qL8Xlwn`|j;u$TRI&Np%t zq=w&CsbKW#O19s<(^4>RL=NNy&LgwVQ!59_)mRjoYX3I%e!S78@Vh0f4d6C1NTo<` z^Pc=un%G`lG*eSk^gna9LKMV=0lG81nCKx8sG9PJjSHNI&=s#*XpwGb*_B+Q+7;>D zr$og)>$_I?Q)2a5(HEv?ryu8^i|}Y~!~{Idu;|t~xf&hO8!Oo0lo8t6ywn>nXsDG{ zp~!TbP|szy(b%{COSyJ+7z(aC6)VmO~J(O;U>XV5y&62Lg-NVDf;bEOBLo-uT76C_-bns2r&u&5< zCp@F4r+#e~kRT6yd;TUsQ#Z9Z#-VVl$uwTID8HPg7~|pxE(Uq{+j>6ua9#277D3vI zXht}#h!bBLL*)g`QI5$R0r6TK_n<{3B)ESGHWKxFMQjLc5=Y6!PPSAH`Od|-y}R;{ z%)f4qi1aeDtiN_fL8eBA|~!b2b-cx-_@UiF4PD=H$4Gsj_`E3St~MNf+(6}F2- zH!UqK@D{=qIp|St5DG9iEiAK6O_0_QQ%D`He0*{Ot3PS9GAL%IJp?iuU?BLt)~2{h zSjL9`HK48Cm~US?F_`X!mABIdSJW3za=#pIo9taj(Zt=Wyo{qeGLS2;7pW=oI;PxH zXVasPvB=K!vggoT#V}LU$Jw7k3~ldLGM3)Cd%lXL!9k2bWOJEujsn(?P3vTdiF^(O z)u^K|7`;XgK-zKUkd&1AS1~cNY`1>1Q7`S=u2@X*8whRz1%P$ks!ywm-d9_p6t=3$ zO4Job^~}!6dk8+Ri>h=6-k25Vfc-q8;P#7s9&X-_XX~m~%_8c=VTKbc2UzH6wp$9m zD&I*g8Gy?Ikt19k%N`(7@t4k3WVGOdtOD z^@`eQYV@v%lFR-J7zxX2@wqd^wz)E4E$qcrxjR%TS2Q8Ek!Ye}-h?4LFrQsWmL*$y zec#nYKx+^Z_E6fOH^~aIH17$NPv!BbzC5@^My3w2$TTGZA?LKpFLg?Rie%=b$A6)$ z_g`C0zdNu-u$x5j*qOjCw(Mb&4v{Z*TwL%@!UzncQ?h!KsYqt7z71`>>ZosRYjBYn zc)!W=VPusOI0Njk#fqACU{nB`wz5LY=}D4MBA}i8 zv)8UCICKywNDbXixb=G6YI+|mYVKK>?vYx2Jxx{9ObymZ>`Nh#dibWy<=f+uKD5Jo zo?EGLrrIY3)OjgZ_`jaVd~U8*ckPuk=hKX&ty4e}4>$@ds#v5HTi4<4M7(uNoY4=d z!-*Fy>oKNO&$4$s9s~Vy`hUs_sGR7qpuxqIJzWR`Q#)Kw_6_jAu=avl^#|F;6 zZnZobMW$D}Kb53o269GLZtcKD%tVL{!I7H>XBJPlnt)Dy$>}J0W2JP+zQVAgIT}R* zIWUhzvtinCa(X+yhH`Qh&0Z~~RJoC&JA)H)20dwEtu~{w6AD#ot>^MfuYHqh4Lx2` zpo&zILM?slNwl+~@(>K%l2aY7_*rxvHw4MfjYes|lk0ttKI*bs)4Omn+WB@wNFsBW z{~fD}*V9$;9v|gQ87$HJdR5|Sb{c!F;uZwnC08upRab{=zauKuIO$q`wcM3*G5@pl z?s(6&=oW9sEd&!9Vn;ofU`QiHT0R`=77~9{by}WgNo*j-udda)K>(ON1a@L~`uFYa zxg#sA$)BM?z%ID%9HjRk!!BaSV?Hi}#>0wXcltszzNkX3^`pBd_%pAXA5^;yo#YC{1kfn^;{A zBNH2_Y#xI@q>1~l;7s0);SxinDbx|$%UV!>yj{dHBK0^n|F_Ea_sQ{>oce=Iypi4p!tTFI+&&o1MYHGO1~xSXbvuY6 z;buUc>)S>~Sm0AU+dB%7p(X^3$(RqwCa|*Fnt(#5o==VC2C@gVOvt z?<=x*+;jO*@0$(e=*f7{}3TQniLFykaCrkZ_zx?#2-)@UZ1_k8gM6(P0~7de2UPKikNglV{Ycrz>porT$pqAFaRC4VL`o4TIweWCL(x!J`Ih5PD*WGXT%U|B&LO zsJ^*Lx?{PwzeCfXO1a##$sq65dxsol#hDtp*jx{8O~{wkXCUG|cG&EU!4~cHootO^ zEaUZNf3?pZzQ}Ug_}!nRO@~;rMpcC5?%-kAzvPgFNUZ`k4Zyb5E%HV{@rFG~G9@J9 z6OzIX-8Yj?1(upm8Xqzp3`_0&_~7YaXV>fU9)2KDZNuS^cYUz}lo+tsv(Dh`>R)n) zR7d<5^40TAT0$v~#--yRlxv;e_V^HVx$zM4(2qb!(PP-LbJE=lWQs{T>~>U6p6%v@O>Q)~HRRg57&5wr+@Ob2~woba-Te_&vsogF(8H$R(xDO-z! zO|NnI;gjy1$pM_67&bX`Vo@eGGewuXTkoFQkhf6glE}3C4jC_onfyS|y!|Kh?e8V# zIiL6)8I`qI)TvSpN9QYwS2=oC;t^#g3APtY?}l&XIn){d5hu1*DPATc#Ad!RaeXQi zl##KcI z{%zrulS>v_#_da|CQ|?+Hhbk|ftxnqS@x3jE)qQ2Ea@TqoU4$;r$MTj_t143HRrW4 z#h;^-p~Z2%BzFbx5@byPHPB`Oq1}o0<-oK+Y85V4OM84+uE17PG%vvXYhEpi1;}_+ zECq;=1)A8Je9g<0yw?Zbpi;25oOI}3@@EV(COSX@zkNgRk~@elZ{32}6=}x19I1N& zZTW|VZ&u*Z8(jXrCCYQ$k&~PsbDnE46P?MDRWK8(8>MdKcor5y$TF^b&?ic>ZtqCc zBbr`Cw4w7wM;vANezo?}(mdO7c3+x~-B;u-pO^O^)4HZ9e;*k$m5YMfYNhh$X+)m0 zcLNf;T_`(MNcQhwp*j4zyVR91m>-RbvF4+Mg8RE{q%Sq?!k=)&JP_6TK>pNhJ^xmLIc7{nsJY=J!YQSyYi%Qf3pb9d~#gYt* z?{jlccNaSQ`XabuR&^N$PFJfeeark-cdb!vg4Bew&W0&$4YP5-CglPSam8)DTu^B+ z5eA`As1P3bEu&mhi1>%+-bJlSM8OqbdTu>uO0y z`w~$KI`qP}VobU*nzsbI>r}^FdPC}e6D3z_q~@mds-DiM77eRoJ?+pIPe^4ehYW51 z{T`S1iHV6y78;Ldmj2Nnr&Z9-tASX@x^7pR#3$i_z>1r=aW%`=VugPk$$^~9?1*n# z9AwDHxXSSQmX0U0mCw6yrfMvt7c2qptOzo7P%i`6%#w`T$ewifKQTNC;spTU*a6lP z9=FgYrc6SFo!WlD}zE4ReqL+cq`|&vo>V2Pe(m%c_d7`N*%F*7ug*Q*`Mim ztnNN%Y{#FxIcg0EVbW7(cJ-1R=Ad9MevNWu`6n+)I6LaT={*ymCj6g8V<^Tb%%;-A za+R$;;K-@Y7<#XOGXT-y(%yqlK{E8j{{q`}xh7oRgTMVywr_DlvW%g3MO+eBd&_0;3qiTSOjAc+51AAtSp z5DW2(mxI!I^bdBrv`>4XO@OE8xU(qu(E(KFung-Il$9k8;%&3Y)8bI@fNj}77s8N% zV$2&Ux`j9DxyqD1WH0y_n4VRA1$K-&f-CG)$;-4aGl*WuhOC~{*1rT`QWc*Sy462Yn$&orhC*}f@Bv5|g zMK3d&>HqOan4?L2yJ*YCIoeHj=(xFdtCDtA**{3sY|e(>iK&#~c$%My7Imz&V>W%F z^6XLNba4%r4@S&KFQZ}4QDsM~{)w_Wy`wSW^E3aunsg-O5%S3)<)Ly(RsfiTJT_@V zW$tY{ooqp|Fi#U8r%8`&e;Q{QI%%!**Hqbk_EtK=om_?jH=R<61Ylb0`HGgQT$5*= zRc)PxGUY#-aFHW&J;dp`ii@1-6Z`E<00{#j#YGkXZ`ff4x?Fz_{0j@&?o&$RB`m=) zT+0tMl;Y1^Dw|&ynz2?lXvK2a#eVW={D?*ir%=&Sk}>*~ z!I!VT+B~nD5DS6eCs9(5_yi9_akR1?bRse)_B)F<6b6<)eRr3E^wmX&xRQZ_d8S>& zEBaUdX^EkS=zby%v(E56)I`l~MaiO>R5x?TSQeDh^E7CY1Q^k49@gZuXq$O1DAH73!#_M>D zh|>T$)`sgrS}Br9>b$ht#Rp@u5O%r;s!M1DGH(m;c5nce4+}j6=63_$RZ3=SjE@`5 z5+!$iRaURh-mX~W$(r4`>7*gW)n0NWX2*w}b1gG`uMOd&{mK_ho#)E_n&O{C)YbyR z&$?=^%&$Muv8Y9Er8f?zMxvTF*!DAi{x`tI*fjP7+K_7EM+}L03W5ZtoiSnC45C}N zf4mOnL#5Y3)n#9Sn|NF?(?uhMjIVoC88#U6ap~FAhX#$?3KfW6jHxj}c-0eU=hHx0 zjgB#@V5iT5r$` z-e0SQ%^?h6butddL{NT#_D^&mx=`rvVj0)MNPD~}&;8NITt7-_^RxyWR9K2Peo${2 zOoVc9C0KR)Hi_MLzNyYl!^?ja`#F-`sSWpqnw?`5ET*sSApWc$ojVExRK~6W@;u^5 zjDvoc_o-jH%4f#ya5o6d60QD)QK+ve{|u*V9>xBtuZFs;f*La5T%FAXeer@T_JOqPP` z$(#f0((E)@4zD;v;mW9xbB*-lJ_lw#Rc{+-=goQFUy~b0nOc8cul~B~<|1wrT39+y zCuK#j4W7MyNPlv0|7j(o2|bpv=`*%LqHq5Q*QO~-Z}E(?d|N-SF`q0$xb%|tOhr6W zd4a~#WAVLQ&3+_elGxP4ai~9*q?xkc-O_*%6CG9vmLN{l?6>YiIJ{Xktb?5)jn>AR zS^CINx{&L;^E+jhTQV}wK-HsKRM*=2^k^MKLNU5cz@3eS-evlB;}lu-waO68dH>I+ zz%ve!!|p$Ndcxpb2okgA{a9Ikf@ZDTwk4i6coH>TVVu#*Vq>yFG$7Gpb&rr{ z2&AUa;Eex5|G%pfz8Rg;+qCiMNhCTXzh7;6ULmowt22-kUg&DG&5k)8?i+&%PPr$H zpRQeAC`gpy$S|E7^_mssZyLE`&4{uc$wpks6Xw5S!wyqWU{YvExKC{pNqcz7a41WN zBO=+dhVwuy;Py3Q=D)^x!^d!@t{fDPMH-YTp1gmqBtW^J7p#j}P(> z6gc0s$Ft6%M-@g1-B$knS_jAg5HRS*5@4cVA3eN2f_IV}|HXfNg*;F03h0}^hcd|q zii?O~O-dlF-cABwr2G@xYX;(7rcA~@LFR~kN+%>xcQ6y^Nn z$=1$}(l}Bt3Y<+hsT#{V+N;LbK3eQR8cp|NurMD_XHiSI!#9DS#?)*#B@zg*!;tjz zb8}(UqD|B+pQ#15w0JpqlLsh$1#(sLe0mP=%e|aez}dVNG`;RkvH+=rozFFRDq^17 zjr?J8pHEb1r_@9PT9zE%GENST(TTU}JcOMI4x-s(G9goHX)WRjkA-RTo?rPxx7R9+ zuXPKKF@Nni@qGf=SE*pRP)*5m%VwgNM7YGPX)V}$A<@{AP)o#?jj;bXDfL( z`T0LQ5NLGLzI*ri#a=(iyeo$Rr67UF6Yvy}Z)mz(~3CKeLB=Bjyz& z{p%Ill|c04*DHksLYagUZ|1gqcwU}E9Z5SR!~GsoFvr;;ed{i>`XHhqHn{m@NKg2T z@LAqnaq?|!g!NvO27!AcFgb!N|mP zw?zNf*|0D2!>{&dPwnmh9&gP-wDz9g4@Y4bPb(&Y^8rMqXbh?1?(I#1x312n&+{@) zm9_az-H{+|JXoVdeBfJcpd@-M5xl}r3*HZoRG|Gcwcg011SKT=m%mVyj%&o>f38fD zKgnO>9sOiJ!0^w#Z$*Zd5pQE0nOYDTwClD~R88c|@Gu@vm!vEqdUi4|f8z9^3KP!1 zm$EzENTbV5lMU1e7&P;@ZGhJ-tc##*w5r{k`%DK;nRD`%g3c zh)|y|KkjLwsF0YmAT@|`lfDAT0j!ITjsPDYEEE21KLOZ=@Rm=Xc6|OLaKPE%5%z0` z2{c9)lC<%LB!u6(z_?R9zFJF(8S;ud{=&0C@82cOl^Mrr1`N^)_qb| zd2a}C`JQ_J%;5FR3vUr?WjL~skKHA6EI;QnZnKJ3*7LoEn^2c4m=x0srkx4^TEY}6 zCIcL|{B2#RlfdQIdvF0M3y?!PWbesEo|TtJg^A`A(P@d)f;n=0(GB$oI2?!^1$8%E zEJb6rb6Zh*9SaKk9jGGgQ0xl2)%U92S5(K&X8*%0#9V%;bEMYuMJh5QduN$bw?V3zsI~qAykXHyPR?F4hkfxBpc}G%na=A71eVp?#^&tYm-rbZv^cPO{ zeF@?Y4x7>bn#oUP>TehVu1uE*ox=XQsvWhOMsQfRS&+!+x%Cw)wQcN$4M!@>fBpO~ z0M;;>pRqslP9(1UXYUd|yD~jEh|1#)e@R}|S80nSi}vAWzF_57DmpE)`@6_iWYw8l z8N>L$3cHwk$$6I8UbvJ&lgc-kFR$9y2qz;9H$Q3ORd@M`-P>SOI(0y_cf7#!M{k&g z0bkGK#qF!3n&+2GOxNO|eO8Vqwzwd(d(wKf{khO;6H7N1)I#8%NMXYZ9d&sRQa#OO zz}}ZVKyxAOzi$g4DIY$df|*+O&!7LY6a;K`St61830P)e+$V-=ar5zHrg1N?7B&KfB~i8SLI06NMF`0`F-+FjD+wj z9Y}2fIa=C-c^yb~*?>bpz1d0eYNnrVeHTII1ka=hT#f!@^NAtD*IBH_rl4jTwl(SV zEWBMHhLamis})I!w`y)jAC+nN>{oE-ZCalKw?t zzw~oTiLfh3`YALX6Jj^Ir2#|IyF zv3{wS#`F~~KVWWFly?-Sg_eOa#~-t^z)TO=e%mcqu9g{&B3W0?X%2%Mi=f}FD$N4wzyWtuN9vMJ~8-= z4vuC)vV!;8o#cMx8-$KU=ktrh4c9ADs~7%1D|w|g6>iU7udHK`t3K=YqMlMpTbH*8 zU)I};8~!dW?E+t#y7rv2XnvIZ59S!?{+yYcWA$LH90*HDd_qLp_~)oD7idH9ioKuX z*U)E4hFbwpX~>lRkD7nT%3M0V!F=LN>hdb(?}8Etic#Or7s5zldVl{{zwQn-6QCc- zP|Xn-$^eoCz#)5HuZ_hn-;1FQ!uzZXJ`o~;)XdA=Pvs*sO2jtI}E`cXN!zP-$ z_0d#Gtkj7=jq_75@p&$jZ=TrklNn*lX+jgBp=C~#?$czDPfgcLSlp|kA;z}$j;g8F{aC86fQ`1!5lL0LJ(@% zFl${0s1sy^9tN}lNSgV-L`P83!m*Xs%^XV1rApYcu@fUN5%MVJJ-Y8N>$+fV?V4%O zfG#ZKmiEWoId(PGyR$>`G!cXDT*O|+UCzj>QpyYQYavcg7#<0z+%s5`>mI8;PjnEE zp`B2rz<=D^V>A=8n8n|1P>`U!u@euLblUO6CaU=p0BhMJp$j zR~zu0mNK6rxRytqn&ca&okigq{kQY!m$T>-9PGm*h?N2h5rMQwPiKC6@Vd*+LmCt2 zkk7(`D!ZG2Ld-gcqCVHt$M%kXxX(v9?{Wh3F2uaISpen>$^9@%fRAg@pV8vA-M{do zc2bdsiWbt!YD%U^2q6n-+Wi}B$j6unRzv*I;0z)v@3hpl7MJ6P6o!Fzt3>$xWMR2J zMuqKqlM#z?aLw7&y+Yx_2->pp4LhKn>i(il75;c+jA*KCMXz9bU~<&xY-gTWdzEGh z%b?I`CnUyW4&$P;Yk&rO^%X+i0XGg;^sqy^Nc5MZuu$e#_%*Ln^Dh2?NFC(WqM2I1 zF8+%B3fKT?J-7qtiE&~lRjiv&YT`CC^_+2VQ^waYpW&&C3YfRB;li&tV&4FRF=gyo zU^_gIAX&{Dp^8=p5A5NgumCJ}pX=j_gL`{UE)Zcg>m!84?xO5 ziilv5E-g}uY)tvaY45=A*YyY`c5u44bn^45D->3>;ZseG%(ph*k*m;{B4+fyI;u6%py66 zdEc>Vz!z;owsldaUr}s)@Na5Xg1;JO)^@suK63CMf+TllArZtepSyl zSNA3S@XoZ8xz*e1jQn~PQj3$bH~QI1?Vj7`+QF=@R^K*$Q_dRM_LE-5XU{w(bD|#a z#f@fweNiEtkfPm9{9|1m+Gjl!5{cQl<2WWTG>aZ947t2l`brvwcL7QxNF9OB=m8L1fh+3Q z4umG24*Rw*!O&QUh$j%DaHN%W`2?bSxK4CPQd-J>$W^fAk3MOdbp|2sIKp$2WjL&k z_q2Q`Gna|3WyE+dE+7&I@t$-NH8)s{+v>eCq>0lK0_?r55E_4)IvX%VHRi4MLYW{- z0^t&6Y=(e&ik&}*R-8G59jpf!szu|d6NN?LXGd!{t(y9eMN%z-4m+R`q4Ww%fm*o! zyk$sBj0I4?g%d@kmnhukn?avoK#>kO9@4l9SL??kU&`e;6R`JnWp7L zNm1B~;vxKghgdsy?9+`|A`Tf5Nx+42SC;mg$JfBH3@h2zW61Y|RP8E%PkLXWZ{(D* zz3_?=M)*m$x3oY)74R(AnA1^#DqgXDlA|0#7k)rp50131CAk= zn?6rrUU={Tl74+YKoc3LO5oE~OJs~sOoU%wvA_-7CxVU4LPaUq`d?&pjPxSd5_pbV zISmUi&1q)ZfklbIaqA9|2P^0E{Q=ITq6L4(DCUGEkYE4Byff%gX(*7vKpe?82vnCV zv;a*_rGvb}!eS~XrF^d?Y$1U}EeODM+v18zo}(Hv``T;w;npL6jLF{5tXWg%qeq4$ zdx0adM~FKl=Mt1+N7k_;vyHdMD1h~Ayv^KYb@0MD>MNr)8I(O^YB>E!ge)iGQEVs0RRFxgy7F9XHginAb{uTa{gVt zx+lfw5)mvlf#@~27CgB=VR&P0LGs<}0o&~#A0Shj6SoTzpgeXUg9D4u$*HUTsCfhg z0#Dn1g74+gXF$T&yd>YxT~@yPW<763C6vz-@t5yupH|MgbX`)^<(fnHbS|Pfix$7^ zx2ntiJ+sr-p`t8I$`er~5#BSA9H^1BNfP|$T%*6gb@1zfI%9I3GcRy|y`ly_UO&5V zpXNu(jxQL_^7(95!@49B$J|IjVh9}i@iD*w=*7`1{_^EGv`i<@EyXI2zOk^!ZuGRX zzSM*Oe7LEJBY!>Jk%7Wi`1@R(o%3IkUHpqdS0%v@QsK`L4fD#FHKzII-LfPsP3<*a zw2Rn$X;E{%+f8CqH#3wi#v~H}#9{|3zM-Vmw#oEyQ`X#;>YMXZXD25f#>7vT#{fzE zgG=!FMgMc>Cex>fR!r~9@8x&%_nRIdjR_N$l49SS%AdS8xklEGwR9`ok{Wq?d%NKI zkD~*nqZEqBx-^FHcQyl5i!rr=q(n_DUfanTjE4tHK?&z!T(P6A#vb4Y0oV8Ut#>CK z9qZB(5*m%2n8RHtrEnSCP;l(FS(LWV0tVFB=mkfhF`o}$240IGnA1qnk)Xv^!~0&M zcLXZ9v%sLBAla9imz_)(3h?5Jn}E?Ytf?%Ks8K zRzolObPG<*uQ){9;pyPvkRAcAJLIen*!~B@=#hsItMWzuUrE;;Pxb!BWuCZ3l4Msd zCrJninGuC3A<5-j7ez)^Br_wj+x93_LP8nYDGDJYj;)hqMP&cpr(gf}iqrReKhNiR z-p_kHWz?iwKbl0lLzd1cg#Mg}OCxsgCQm)k-#e93=9h=#A|+Z&>CpE&De5q+ljQZ(&0QpZSDv_GEC(=QhSr0e0SS z^^i^965}WOEY{a}DL;So8Qr*FHl4uL@@lf_eMTwqLfGGt8wwACrU`j&E(cqcvthv3-dgjyB|C% z>kAz)x(9~99jW!>WPn84qVHn*i2=Wc$146 z&I5?z*rq*fPRaGC=vv;+@RVd09GZSyP?zxXB%I?73x;h+*xlpyIo;;YrCoI+J~5ID zoML)(<|y0DqhEee%)Ez)B6fxj4m_M*lJ`#LcmI2_?izVic`l6PIiYIn9pi;>bVa^Rsp`6}Fuk1HO{zI6S?O*lchDc3D%DbkBxZ)BSUe|5`a7pXnV#G*V)RU z32$&5=aH@lTVW`;j=7UawUfW_dY-u}cn4v#6Z6Y3#r@&A>g>PTrzbj}zqyh>xVf=p zWXROIRoD2JQ?^MfKsEsay`lT@on*`uAV*(U8C067KxOut|EjNZ9Rd=JeMKcZZM_WE zli-z$uFj>9CM1KWpW=~x>-RzkwxRM;QZ7`hCp0uZYONCo6j#=a=!>sM5BmF^H)0XC zRQ-}piqs7=I)28qeXz(v1q?;DFikEk*}MP=YvbO7)loH9FvC__ZZ343LLEd$@4!Iz zWo9Uk4*nKyOeET`DJp(Wmd4ZToO|oJrPv&u7`*O8ZWT1DEBlC3E*AB|>*EiFox?z$ zHwro>!5DbB&MO1`7@jJ4N+b0hd^9{pNBO~5uA@M~w4-X^vXX4Dkd;tEY*t8bu&8^( zgInl>j1?y`h%<;I^~a3(g@md+r@nmsY71J7%Sxw1T|{@HN8P%F%P${+89@>K*q!Rr zV{NH|ikcqQnu!w4F#aewo!Z)MFAJLpg)T zRu)vI!w%9=(2Z~3-{cv;d$CKvgVJsy^k?khxR-VxOUR+=FBUl+ z6UewBM!+L9;D{Rw z7qrMElee7d;XC7<(I#gk+`U3?>g5s3tX4eYTyj6iP%n;2G=n`)h!FUz=G=3?GktL)~)b8$Q2674nH zLbImv7awgkJ$a4xitlpYX)vxVz{b>5gE;H~>IgP)^rga#u`7 zrxvgSOWsbon{13~G-={ox#^m8q{NS+x}5dT@Dm$Hy~ppEj?5{D*Tjn;cXvb(lx?ZB z?=3|zAl`(43Wh2*RxaQI0?uzqR>BWVH?+TzuGd}sqc#-EW8AS0MZLAdQt`5OQZE$` zrn_{{kjgwiMxIuD_((zfpwLCFf`W5F-AQwXW?n;m0X?L|7uw&rM07P|Lo7y}{pJ&~ zo<;Pye4>#Pgc)P>CQo-r>N*gsOSV*os)FBJ>OAPj+dR>7U!9fq=$C+Mxbw+8uwR1k z5nM5>w{CxSJ)B`*>8RWa#cckY6w`;tpC6ZaR;T?XxAS|jK#=k2W>7Mw$>nxMy^t{}@Iw?h`1|c)Sb+S^ zNyuPW5zTWYTwq!AEHp#wESfL@{@1B{PUKyOQYe9MHSS_OA_NW1FB`IJ-w!WWuKiHQ z!Km#FENZ;z4m%k7cB-qr5Z3I8qX|@?#bO4JTy`KW=*ThpCa29$KY&KfujX-3qnNBO5R(o+FY$dAD#S>W>SO_!+TQB zkk~J0KDBb#TAv`Lch;I%zx@c~$z1ohn$~3X0WMMyeS~P00w+j{o1gRjb})yC=)$cf z=fP<^4kO2mX|@1^Zdc;Rt;!wHlZ)Ts)Y|qk6Ez9Pt}#Z)e`A^QLc)z7;v(!1EhKmL z+&{n_*)icL%WKc{qHikun*oR6Mu+Np$H+)V-&Bijk!ZrrQHAyww5P0}>~S%uV>ImD1uzbDAMef9iKw%;#rjlS}!l#CdG;3>v$A@k2HqaALfuuExr z*^O(rs22S*!sB7(9yaqu8VMys&&DfoiTI#s#S;;LTS1V`lA}R|One3dw7TK$fBe_6 zkSjEE^z$2VDy7R|U^}VE+OL@B8g9!Rxi&B`@b&9s5nXh4`)tIxBU#Ryz2 zU~>+{zb8@ebc$}+L<|btcFzkd++_dFV`C00f{`CXXIKG~0*BK zC91f`C47~(ReN+A+drVz=uk$ejTs_KHpzqQ7cxI7IOquki{@etju#ymY+28>JqaKU z&4qok*URnzNikW>ysD3~Hlccs+?P@sA;Zl}W0&U1oOJBb>A9=Qcs%bl)j143_<}BP z8vkg!UeHx>+E?Y9Z(6khY+pUh=DbbGBrTyM`&}U)_^u`=BJaNfCc2U{3SA!_H>_?#=YkU#pW z9FHkGB*vQjjrTArhuc@Ut7Foo*%e2gL?_)%;Yi;B(d!}ubVel++WZ@y4gTNUyVU- zeFHU`RQP+b&l#rnSiUE{_M$1@p&-wxsoXFhc${KNz+KTlHw5+69be2nGP2-`c78! znTq)qltYL7O2(RF?$WyP^aP&SYdM;k9!>VLm;k+C_jzz* ztNkLq*YWM>91<|}MC)Ap7Z*$BtJyBFK-+TgnLmj4pjQ9;Z{5t28$YP!pERqAiq1%I zg9*?&j|Z+nNhe0^Tw1i@d2;Pu?77rHk6Z7AcYM4N@pfdp!MVxu_UiQPE?>$7sQ%ArGa%ghS4BL}IW0RRy|locl6 z+H)%PALSdoilqiJ(FzI*gb5n2EwoE^sSCa#yk>wKV@_$u1h(a`$e;B<4aY$0Pz8}Odv|z7mzR*x(G#q@&jrXZkwTs`_1FDzx$^=>CQS8 znXHZ} zqUNq~`cD0pVpgUM6aN9eV|hc9!Wn)F2TVAEq83Bhbi>}TKVx0W%sIa;n5X2|D@zgQ z@4w1~34bg!dZs*M8o{_mlpcvDwlz)PJ8kfCX#? z$eRBW-m2sTvirMMop{)S!J4_VvlF$UV?y@7yqj0DdL18kOh7r1`H2`Y0>`1E-Vc;{ z;FjPp8K zOc))5?Sk<7n3yVt3dUgAxWP1A?U+{zh(Rv=OlG~frqwJV#Gvv-2>w6(SHGopIpMRqs#0+FClHYxracKFwby@B&pFsto|$y2!; zJ{(Hnf5G*@jyZ#<5qcJ;07}N_SZF5CDP0KI-@>FMDk}@(vBs%jTdBaL3C*mB_|k!J zKpk5%z{ECY@|5A3z*pJjtI?yt4&>$Kzf3Jc1}RRUo&E5~eFtQR$cFe<3SSgs|7n#} zz@cnmdy@@ReSf#v$Uw#ep{yc*G!zP{t;ZilyIl^^02YsS(L!>G$~`FTxKwQEJEvvD zg)gqZ-vY1oa9Ws{t+SSD%kMVxAy6*bs)ApIDnc@HL5fG>&IzzpDf6({4tQe9)i7_c z*R9Jv@|y2}9G7jcP47eL^@IDP0>VN}^|o{!nWp5JdMxjM{(RHbEQ;yJ0jmrmNpllY zuhdo$hCI+vF-!96;6mB__w+{Ll}F}xgeGUkT%t7^+hT8IC#)2`*s z<|_}-$-=ct&%)iNC#vaxrae?7*F%vEJ`3(1Xl-nZRDaj7`>F`7JPV*fpx#xQt1k(5 zMs*-dgMGC!g~5AeG9M_`MJFeiwgDXhxszbHH-|LI!ayU|}B@GqGOn z9X-1di>r@y=H~-l8Le6V{|OXn+zL;Uj`x=pWsz5TFm-$5o#Hq~Gplx&h%800S7-yP znS^|2r^{#H?+Ok_#me`mpa8%f*;pKAjT_a~J#yb>Xj3r>s*wm^559b#)bPgoAqO#i z|H6#Hz%iqjW)l33>0-ql6TjE}?B#`xH2Y*n#NepoM@jbDSOL;NjnSnBi)WAt3zEb` z9719oTmHz*E;~7Gd_|fvRntVxz(l!&YQK>qkLSdSRTzeM`9!p^U`Ax#r>sUm{&XeIy)Sro=Trcx4ToJK6LK)#JaKl4F8u)845xN0uvebkf~Ct(MNNEJD?XLDc$c z2KB9tezsqjyYYRS13Zs$RyXiW5%hz-t%07NFb8@w5MU)bj(+L6So-wUz-Wm&WoxYc zFCX%RyB|eqa2d&{szBl(BL*7FljfiGciW=~;b*DV?3DwWd}Go1*3Pe%`?D`r&ICti zdZ?%!X9>bO+NuAQb)gwGDQIdHa1!{I!UQm#92_RQ^3J1Pk`9!ec_BDCpf*aJPV90! z;{Jwpj-N@YTJMbDCh;X7;2J&bLKAaJ24*GxWf+9HBjAmRF=JYLd8R4zuLhqBdmBT0NlauSsqw=!!!T`0>&e3c{{|stc0#Fd_r)n z2EU4E3I0eG9*IR6WiCCvOBN{g-Kf4T9y})?G_T;!-?sa zX+>(h4+g3p3jL4e6#bej=ssz+V$zNT*VDG&YFl)+8OB|HOgGC^+()}#leesM<&#~? zPj~%IrESTc<*YfkYplR0!tV2x?=oofk=mJX9q(z~9l%nrjVS}>Zsv(>tO-~om?#%$ z#y$OR+`3O*X17w{4L3|YHZqXA?Q3)elM_ogOACCYNafaY3)pX$N8__r78irqK;3#4 z^#bE8s5!=MetF0mTxaKsxzGmEgQTR}|LtOJDzp29%|BX95Fn`4NMj+RV*=du;7FcX zX7l6WRU5Si%|ASqVz*NP$p#EotJLNDo&Ba}W_#rG$DSM%?ArIxWbby@iqY*2(qm7I zw6nzfdhZ3=U6QLvthU&IW94L(Uag@UKr euXJQ{b4$h-pBrS#U-LBhqpM|b?74 From 2a2cf88e25c51dca91d39dd39f3d88838f4a1ea1 Mon Sep 17 00:00:00 2001 From: Naveed Jooma Date: Tue, 17 Mar 2026 15:15:18 -0400 Subject: [PATCH 12/12] [flyby] update protos workflow to commit in different steps --- .github/workflows/update_protos.yml | 49 +++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/.github/workflows/update_protos.yml b/.github/workflows/update_protos.yml index f34c4ed200..e8ea682076 100644 --- a/.github/workflows/update_protos.yml +++ b/.github/workflows/update_protos.yml @@ -49,6 +49,12 @@ jobs: - name: prune origin run: git remote prune origin + - name: Create branch + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git checkout -b workflow/update-proto + - name: Setup Python run: uv python install @@ -62,6 +68,11 @@ jobs: env: BUF_TOKEN: ${{ secrets.BUF_TOKEN }} + - name: Commit generated buf files + run: | + git add -A + git diff --cached --quiet || git commit -m "[WORKFLOW] Generate buf from ${{ github.event.client_payload.repo_name }}, commit: ${{ github.event.client_payload.sha }}" + - name: Install OpenCode CLI run: | curl -fsSL https://opencode.ai/install | bash @@ -338,22 +349,34 @@ jobs: opencode run --model anthropic/claude-sonnet-4-5-20250929 --agent build "$(cat /tmp/opencode_prompt.txt)" + - name: Commit Python wrapper updates + run: | + git add -A + git diff --cached --quiet || git commit -m "[WORKFLOW] Update Python wrappers from ${{ github.event.client_payload.repo_name }}, commit: ${{ github.event.client_payload.sha }}" + - name: Format run: uv run make format - - name: Add + Commit + Open PR - id: cpr - uses: peter-evans/create-pull-request@v7 - with: - commit-message: "[WORKFLOW] Updating protos from ${{ github.event.client_payload.repo_name }}, commit: ${{ github.event.client_payload.sha }}" - branch: "workflow/update-proto" - delete-branch: true - base: main - title: Automated Protos Update - body: This is an auto-generated PR to update proto definitions. Check the commits to see which repos and commits are responsible for the changes - assignees: njooma - reviewers: njooma - token: ${{ secrets.GIT_ACCESS_TOKEN }} + - name: Commit formatting changes + run: | + git add -A + git diff --cached --quiet || git commit -m "[WORKFLOW] Apply formatting" + + - name: Push branch and open PR + env: + GH_TOKEN: ${{ secrets.GIT_ACCESS_TOKEN }} + run: | + git push --force origin workflow/update-proto + gh pr create \ + --base main \ + --head workflow/update-proto \ + --title "Automated Protos Update" \ + --body "This is an auto-generated PR to update proto definitions. Check the commits to see which repos and commits are responsible for the changes" \ + --assignee njooma \ + --reviewer njooma \ + || gh pr edit workflow/update-proto \ + --title "Automated Protos Update" \ + --body "This is an auto-generated PR to update proto definitions. Check the commits to see which repos and commits are responsible for the changes" - name: Notify slack of failure uses: slackapi/slack-github-action@v1.24.0

      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ö{T*9qGQ;woqiJA1R4iz%7xL@~fX^xt# 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ö{T*9qGQ;woqiJA1R4iz%7xL@~fX^xt# z6(y7#IaU2m5<53t+eXk#_1zTzHo^Y&3gh?EWGjnTO<6X(l=>1jdZggsB80hnb5-c_ zEKEHdbR^$zVRgc;NJ1q4PSNfA1@U}1Q-;!}u9X2bE1gO@Hp>dd<7KjT&kN2?OL;B- zNXQE2d8ptkj^=f4rg@$s5~!o1`Q7UU~@ z%P^);SAx9A7%}0LHmEmkT@g{4Byq)A{xOI-KFo(TLGkmF3XNP{KVFC`#Qe^CfnF11 zFbU6s)oin*m57t9Re_1vFgm;c!Qvki>b&?7?prQC$gC_L)vj;WJR+sw|E{W6MXj5ch6?4rZgZ_44LhTAi6v&wZIxe z4F^UlMgoK2$?9-4&#fFxa-SRYJLE7MNPE?WLG5u4G2G;QWkpJZI614fnn2uK2Yezj za>T+)sU1cWTHhW)i)o5u;|!x6FUqXt3ezC|$Ox`{Ub^@~D=h}%aJiB96HM298a~b? z5Q;d=E>l#ca4V`b$;ln@o2eXjk>d|?=2xRvQG#@DI}b@|o=@k5SlS23@^%Xtr*!&Vb|ETig6~3C|dm=BPtlPVhjiDT|&&6((yDSK+ z$E=~J=0&qbc7Uj4Q2UiZmPG=GpfL@(KNqI;8@$}55cfqKg144w#jnFZuD1%wG=CXC zr^)@rRgTXe{FnWOYF#-B+QEtt?rnWEc}D&7Pun?UGl&g`6t>jICpD^+>Ro@F=@*RowgPnb~&EY27u=e1Q#^+f%5Wxx|#kOomG zIDCE0exF?oS-vdWQ2H*?1=4B>XOMKj$dm3Pt8JA$0-K=hkaF}V`W^+mPp+XH;~4j8re`UNfA z%&tEATFhf3?5vC}v1_9nr-}6=#A_yoAk`sas-iy-eoEM&xQ}}LjA18RJuo@2|DaPU zB8A=idqj3z&SKw#DJRxS*ecexZ6=<=r|J5$^~w-FW%E0K2xP?{-xB*gk`xGae`3?u zZDrd&-WX;VZDEQRFuhz<#fjKU$-gd#E6zgAYFv`!O#|QrLn`9UD1|qXVWSCW7qdR9 zV#(&?jxFl zDZ73I+YW=Vb#rqw8ke=9Bjt3tll9mN8*Zlu!N4lK)(7MJNVa^=!yx{6&!9ur)_1BR zF_m14hR368Pg+z9rE7_}frM&`yp%QR_@5e#iW3=hZ1FbD2sO26QOd|`&S6R6R>F;a zdafEIKjE9Ga;>)bF%)XYZH;JyQj#eJWgHBcHi~o1E^sI#Hz+4)x?ncRZN-1x|5%BD z<$FrQv-hzbG{(f0bW5h}e0H^1L7I+_H7Z`pC^^DVR5DG&tET>-?uX_la*R8>5P^Dn zPSN}Rv(ejAP!7cVYa!A~$%0yWi_ogU(Hsd9+ywEyr~c(0$j5(5f`+E040)^!vKEcX0wsW(mQiWhx}3X#)coS%(bC%s zfNkv3MB_1FW;)cP5V=*dj^4?d6XfO&?Le#wf42q1ek`0LJkH?vjl@vg{;C9qo=QDj z8tZ#hBfRkL*+>AB2gEB-P6T4hr&a(dc;@r#Wt|BZ4XV6(VzN~Fj`X9CK%BSqvP!(e zWXAD*#zX{n=sH5FGWtg|NUF}G-(Nuahr}oc>hS7+*pf|T0p1GjF-3gT@F|<*HzKS0 zPJAKk@eyv7w4-4?+Dy3DU|Ydt$I!o}t6g z^UKY7sGFud4pDi&B?2QtX?K=ADRL}H7|A8h$f-h)F3L5JIk~ygN>NO#HW|b!Fkd>2 zhJ_f}u;jBzI>r+vQ;AT+{W7e`ceJb=LF*F{5s_MIM#*Wzu8|cR9*D4Q`QG(l+T(@_ z73c9-vHzB6irs}oNBJPcP2nH0&E^QaozI}~>$_+3Lo%LQCoSHw+?Z?W%EPK;4wUJA z27m9e8?Da>dvL;Fx;$FukCK%lNfQ?9xif-JgNVwh$;pBZacE?Rd(bOg#9Jd@oSuSWf#2TO1&8?LR zfk2Vpg5_fl$C4cCd^#?rjj#3KdTICMf_j90jB_9Tf9or zxpQ0VeQFZLov`v8VKW02*{zWl({q^Eop@?T`E5nFGaTZk(z!&@|Ha^2^vTbO4zi1d zF4!%=W9!2vM2=m8a_8WO-hv;2qm11Iv$g?L&U;h{(B4>djlsH~A#|8_H#u{`b36_37 zS*qbv_E%DDm87~FpyNBZ^h-xP*&HQ!5tp&)HBuhve*gZCP*u;Fa)r}myb5j%ZYA{z zSC|Dlha>>gTEvkDlRGylv4%Qxp@X$Cci5MEfPYd(bzqdUznPPR?W%U^6d)6T@)Rp0 ziN{kEfPlz6FsB)Ksm;WTXb9C~?Jg9VosYL|Ye_MmW4wjYhasWUzkE|E944jENF7mr zJ5gFneI--Nl$QN7?Tw*I-RFJYl1Bp8G!!JP_(7t+QiMPFjhhivIZu+Dfb;7&I>MVX72jaQ*VxBkGxW!emZnRi6&O zz%tIU6g(M?{Np_~E#qb#P)|r)T#-oZy$co5JGq+8+xWIB_KS?FjkiM zm%^tS=PzWc{sNBbMmK77Ij!sz;iuPko|XkJfuq$>5c(d2`3nu0%m&Y$ZvWr--;C{(WURKi2HtSYubID48@ z+F=ZK(qbGtM8hjHc{=jMDO+(%@-zt16TgmDHkNTdX~0d+A`jCIW@()Q`Bh?dH#sNx z+^bus+Pnn-SQ5X3E+)Wm1``>;F@dFH?egWr!X25t8XXq63;=2G-|tyU>8#00*;moq zzAh#^^tI9q!IAG|M+)jFfBTfMSET;ojE2-H2$@Z8>7`(Bx{S4qw9~^d9TV@4+2=Fz zo92Y6KeJaJUH9q{_s=;9k(=SkDlLw?+o)u)=Xn4=_AW?(o{o9-HMk0mcw zBpD|k9c6qIk23LeOa>~^>5ISrG}G9}PoJqi3pmHS2amhODlGCUm&kc%Z`1K@=?M7E z3_HlF4VO}oYlQ|UX2!us@l8sAm4Os~K9z@`s?x_E)?M}emUng(`T8^|St1zXr+=Ph zNxy{Pi09NxDbr7UQ5G;A&gA$RX(#U5En{G|?&j7+amrx0inl-^oLHV>L+vIpoEFM(W{;>Py&hnp#2zgjl_ zRO}>@6YAXaba-0d>krcEBcuUF45=NlCBGF3i5hK{ac6`7Nwp(z^#TtZJ3mo6d#NnM z_^pM{^&&G;oML~fnMcLXj7y5B0koVU5r!8M69H66s042|1T+js7mZT0$cEz>J?X5e z45|P{{G>;eL9Rsz7`gSGogH#d%_s{Q6vQow0FmE*glBSd}Ga)>U&GB=%YKRr)G(#Ta50Pkvuq@h-Jn(ViUS1eEr1o_d z#?C?*%>^D_zjntkvD*$JGK2{9Lmd4fadn(24+SxDC%j>A6v=deQC^!emHXeX;+=^G zslB0<>@lqmr0cq7cHAaE1wvi*g9T?$2z{bbN1pksgZ1bPV5Y7AUESQ=yuJPfdMFTW zBmTOhV^b%i$-1^?Pyvq%g)Pe;n$4@xC@a$>j2ia2%%KCJ55@8-t8G&Bx~3RjFzB$c z!uedt)J~YxZ6OHb)yh`v#(sD$ArLBhMQU`w0t8NBpi02)6fY_^P?9KL=XF|vg^Fl(J8|m<_w0}M#G}4VB zxjD0YAE;cxf(8S4lYOVaDQ_%`H^337)QWluv~|ERmYnF?ZVEyHB5P_}PDM@cq`1;q z#A;-g?RssB8;M#c28`i1)a2k~TBY+@w56SnWQrnX_VpPXUQ7>TxQO@3MDi!w;zqQd z{W6zZYYp!FJ;d$rqLQsGV^fl24BTeF+xSq5bL90VP9zBr%1(dA;J<=I=YxKzL5M^T zP3XpoT2}BZxoZ8uZR73agsS?fr0LMq$LDc(WlP=e|AHzw(OR5-0yd&dd>?vD7 zqUt1aw~tj^qZs5=hh?ba`3v=19d2(!gBnY^yw7o}6-q-kxm`|EMiEX02QJRbAok?U zdYeUBPhjG=-%Lj<*^N~*?xw}nX>OAOF2otQAsp%({+~Z*o)79u+JfZD9Rv;6zVpsm zs{ylfMx_p8Fc&bHd9)gQdA!u}MR9dMEE{ZYzKjTHKoU^>x5tVJ1R zU}wj?ehD}#07pAY^Xmu!{_hSchGd4p9D1St=jX0LinY2zS9D8s=gGA9k!wiOCd-BMPJhjfIFTzR@^%l+PYOTC^Y@&NG-rH7M~Q;*Po&S?Skkxi(BREyo7iP-RRW0Z z22?OEgR9w>MCC41QKyb+`Vz$uL2S!sIsUlp4R;!Gd&~KZM+$i^{NSKbMx_fj`y|Q% zekjFjZtDZ*B<*{#Z zMPW&PchO$Sym@MH=15x(3x_S_t7nJZ66}ZPgfN@(xsY!s+CYa4vcpA`=^_)`fR6(} zmApOW|La_^dj-b8;ha&^onzWC@7y6_qfNiz#Si29LAtbg*8?j=dq)dUm>JY`YG zP16f09To#WytOP>Z1V5Ag0Q9AbL?8}Tqc=`Nk}m8n3Q*VI04cdKqjF5F=}Y{L;jbx zrX~p#Jk|~Fz%YJ2YDUcgP9jwOAE4;t-sVapsW}6eN~^$@?VlDM79e*3Q)oR{cW}%s z_gA2zGy2VcFJj2T%PNJ!7V7g}hH((abN}BKMl@+>3X7^{wPTwySzY*+YBc&HE}F`m zK=!oglS&uB+Hks+`JrFhet9kWz15He%n;ohzA}!PBfE`dDo+h^{@QtdGymCT@xzM6evYW-XuLQhii^SA{#91W`vZuCM08jPoVlKZ)7IpfX!k;z-X@Z@zBtPH3X6gwgEGdq3=WmZ})a_?4Ni_ zC>LOhU2*<~M76ThNBZl2Fa>DN%b;%0&`^+{|7n2q?W)@J_2j>^>us&hr_|=sMqBM` zg6ILIXmt(!-Uyq)YT^T<6Tdix3o{bySImCfuPh~v=0&-Ac}cvX7K@h;iHkm0+d=+f zNfpVS)}=wzfl9>+#5OnVNq2-)E-8h?A3Wzd5obR8FYfN`2PBDYfP;4@&`BH z(L_CWDP#Gw?+qi!tC%xvt|k*S3HFvLV;kl25W zqVf=nr8^4Ln|{2-LXnk9x zYZU_iV-lL0vZgA4qXWV$j`gEC{c_vLD~~(Cxb*U3G<8%Vm->wW3@P*hGxR3TpxGi|;ZWG^&ZV9bh0z3_ig zO1FsDPj6uXj5k2b%IW-Sh8`Vp$YySzojrL!C3n+3i%h%io)(oVJlisuW$wN+-lX>u zj*{jE6N9W7xwk1Pl`frVB_LjeomBNBwB7EBMMGjD5dvnz4ZiQcs_dFk(dN zy)zpgxNfzqoi8jbL}mri%=>UjR3{s}?@nx8%WpiH3Gc+m6aZ9Cn+;Z|c~s5} z7jy*QLpf}M*QUt6WNhq9l>3b`qJ}4sP0U(U8q9s+#P$m!nv6Nd9^$bm~O9-i?k%{I=Y= zQ2`yJ3no%YOvud9=lUg-PaS= zD?X6J$dPa3dm8ZOzLd&@Vs}SV*(J9i3$#V^Mpx{v)SHtCQyoKX5=n!WdHphOcff1j zzJJqVQ2XDh007Kb8Ox6!!N*2A)y&;D@k4e4{}n<)=V9_azEZ(z#R|p%{PbX=CN4Ji z3tQUp{(i~YIk?xD)Pp1=sEw>&qSSXvwk##@P{kbsPO#!xFg*T8DUQNx(8@4BvHz&0 zO@{?+`o9kxHfLWH-HswniE=r!J;#e4^sGLibwkVD@Rj@n$&{3{0{g;N;YjM?E}#^t zC5KgiFk$1@c2~)%@cICsks#gj(=|X^O{+1^Hr^6F$WeFGm|C5dg9nn!Av6!lThfM{ z5fbZr?7M^M#qA+@kzcJ=Dn`vEv};8&)d*q-;^ddCZ=WTIn(<-%;2UZy7%38 z2+5)hIE_2-4|s+dcneaP;^l5taxy@iE8IHEC4vzHpI&ZkD~{8_^%GxvSVn&y0v)a( zjv;#=bEc$ z^dAeSmnCP-yEYX_nlwvx{${-Z^+1YMn{PaG-&dLdTi76|ViSlF4XO$Su62Yio`LwXwvWf(hGPwth2q?V3PZF&N*O|9C$80oL zNkmJBU^f8lY|Y_?7s&GYxgwc{}VJJ!f&*sQT%*+C6O zaHKnA-<12e{Cj7xA5j{iFk$)xY2u$u;rBUWD|bGF#0jw9E!fF(Q$66{!Wf8LFx&8A z1gt=_*soFG;W5i1Lsl9=Rf>p+TzCio*D@Fj9UWsU)qbVj1nnE{($_mQZ6p_|xl4$T zi!x#GWgQgyIv(Ml?(M;p;tVIOdfM-8$~h9#Q+pjm*zm2!=yex9eX_BT2#Ikh0VZ#z zg?V?4{%gGn30c?v<|ga0;O(Xgfe-B3$hpZQGrN$FgC0VPI^IeHu|(I@{_h!rZ^Jz^ z42t}aP7ugUSNoUFwl)RI{j=BEKGFO!J;H^SJU}S_#wgZ;h!?wGF{t~NVBALz73ytg z2MmT^Uam*}I)~LeMF9wWUdM@l3$X{z}Gy68}uWi%KL5JNH}<+xV7hH7+}A=m-7*Ay=tz)09^l8S#|WBE*M(y!OFUs$-P5QZQ~; z%P~k~our-l;G>x6lXj;wllkknM~ve8~LLB(%#KO1tJP&6^Grvos6fGU_bz|3!(JAQe4 z=p{vl)lyAD0#?)zGCTSF5%#TvMD+Cxu|b>$ z5-U9b^d7Vt#0u_<^CdQ}EN{DYA|p;AqwTBf%$$CpIVbu+&-^zN78%_4Kqc;fogP4n z1M(W!V(chhUS9fYx!&H)03|g2z$qwKA2wGd{D}$!pm@dBL8GX-xi}A#s)vgUL}FBu z)M5G7W%hYnBTAQN__$u?l2 zWQY9QwbSC3x;p6mn^glLyF9k1kYm%I4t7^UTF$&P26z2qm22|#$BGR?#%>I?ta}nQ zF0%A1Ti3kez6hM5wFnNH&3~UV2z$Qm=*An0o*+`m!H%SVeOY9uF$*Ic9L_aDb7Gnh z3@WyqiO&|fw69?POAtXr&FZp6#FfV1Jm^?Dax(bRfQ4oDD>4rICyzz6f9cyYZ+{e|JDSl*_fi)n!a2N)^zM_YF(hQ6WqSS5n3cUu7wfCYSx`Xs1FT z%L?g5g^Pzqz}H%l$N3X$Wiu_}AIY6M2RZu*5Q%^Pt}v;$Y;5rB*aXYCTou_XWnYIr zit^q+cxAVgtx32jllB{JL^cLe5WVjEzRX|l;yGH32Y3c5g?(UY75Tv_HT0j9M zH?ZlFMx{f#Wz#L)-Jx{Dncsi7&?~)Qu@`f`@AHiDLeTbCZi#jEeCwye@SJW z34aha;YKy=CtuQ#sL8|-go@Qe0_MVp*; zf+5y4=u)=N{63!ty;)~*Vn3xmZ81rL84SpF0I2m|a`;g1Ci!lV7!PfDpJMbS%+QD5 z5t{gx5?7cqN)|(Ou=G73^uddMA^IAkWDU57R7Whme(E?*4t>VBEA9k{)x62lgq|)| zoq-m&5ePtG1l*M!nIzs=@-Ax!Tkxg&l_pA8R#UYnURuRN*!wu`~1KO+Fs z-vORw(0`Nq0+2@+hjSQ+ud4s3=QOZ8Q6`X8{+iEemb)8$@IX>tFlluY|D3)0XmD>_ zlV?3#ZiZe2G{x}UxQy#LiJDH79rIakv!6o*`uUu zSyUD#q22I=+N`sd_#!o?^ZFkP>s2^k=ykYc&tVmt{vT-NG1GyAW)-8-VVG0 zw2>Dv^r&3NGVFiK>4Z}VIU59M2Q~!)V=6X4bm0V7&(g_=WT3aqiYaGF2ij(ncgAYj z$nMJa9H#O>shs*wv(>wvGWQp=j1xO?!V2-v!(R;V(v-!22+65s#r-;+7jt>|#8QX- zO*4%HXCjr|la+F`Ebwyf^hl8>=uz995!+cH;q>}CNGsrGsDGK@}Y(w3(BRc$;5-iCBj4*Wnae_FJFDPw-2<^!+$Z{2FM~2H2rC3h+TmuD; zEBQ&Qp;aM)b(n_J90xVJRSh`#g3%(7kFh3$U)M=CZ_z;k1Bba~$?vu1F6^N$P-{l& zc`7N!J;rgMkyisdeGR-#!AhpK7GIfdV#@r_R6+od+&n&;&lB&4%#eHh*fs zO#Qm|m4l+%LO2D6pRg3>@CU4fCZHeJn%-v8E3B==Pbj>Zk(1{>*dits{)n5cf&J6q z`zOgE@$M806kXpdv~y;7UDSziv(F9E3yaJ;g7Pz7&}7}l3QcCS>MbKsLvwL*;wlAa zi8hllJ;^J_xdnRo;JiElIp$(r=1Nf2&JF(!WKv&n7oNw#iZR762 znYVd}DI5b$s(Le==kMkX*gE$o@qg91k@6VTJlJ3OwOkM^7E1LiC4j||3w;HWS8ttq z5FaONHxiKu-8u*FRkqZjWR>v!n#yuN5=N402pB_w2iFI(fbBkiDZg_;H-R!5eRi#f zRO|$nFSMOPTl74*#zTgxc${HyYnfy3qI?5ssv#IT2s9k0bL^64As~L!EVsMr5c48m zvpyWMBx$33M;uIcSd6!ml-nF+@`pp{rzWW(Bjsz+(G$iFq}MU{WU21jpSKTUuhrNI zGW)Fd$I-L8e}^gzvfWV9{m~(*Nv@o3eoiRc+QJw%`aYQ#{9d;|?hc-=Er%>tk{f;G zGU}ZHj1fVM9DCWG)XdT3g_`_8V=)=ypA6`om~s`GpSy|Gv}rfXJV%c{_Q`WPF=}3zj8vcGyLz5vG3Y(n@QYG zW_9AHCWRK!#E8g#Z|w>j>~DV;=H_s?qY{3I!5!p*lk9pm_=x#hT6RlVy10&QH}V@$ z*2mXi(wjG6@~=BX7SFjEvV7A|5d+^J;hBrSA!sF-?&VfU`G?RE&QRK|@$F%VRZ z;*XXKex8h%a*7@7QUl9tQ|>K4;k{f6&bD!?$-#SRi7XP|o=&D2Aupe7XGebGIJC;fBv5 z1?{3X%j!r{fT^K;(mlc*GN)HgYt(E@L-SX>$vD?9PM){MXYyb}Y7~Mn6x^YOEFJ~6 zO8yzR3hPIK;SQ^rScx?Sic>OciDD%w(-LDYi_t0)a^stcevPnte{0w4H}`?WeB-#C z;1$lI8VjK(s$5&~zjXLRmluV!XXaXpTW$%Cof$lKR$*_!FmTyrwm(^{ddfmK*Keh+ zj{hXbgWXAZifbUt;rNWKBV0Dh%ClUL?0+FGRKbi>`fxU;sW>H8Zg|HuPh%zp32(U@ z{7KBOOT)~;8l`N*-{BP4&ruh8P{u|^oSmGe9QZ9259OS_HeG31GW5qzBK(z=1D4q^ zHK0G(jNW9WQB9X`y4#>B`QthBxUlpZ;HnAGyvmH&C0ARxw+r2T!4#{vFP8G-xcQ9X z?)EeNd!`a;WmExI>V>~fd+DL7wvwI8{-19(BVWY3>})P>#}I@(xnEt?tU?lY(t5It z=aH@hxHu6fS&LucKlzR3;0xtlX!sDZ{6f#T=S;czfX?We5g*PA0_E;fXv_(;pW{jF zNs0a$a%1@`ugOf{a>Ku-+(v!d|6W|h+n~+%se2>6|4mnvrYt*)+SxIvtHCqy7ndzC z&l2|hYplVD_??%q!};Tf27>xu>CI~VH11M$wEa1_`j<8A@QP{o)%|It)|9XVI`aqS zlCSJ2C)kwYjmQL8*@XC8AuoOfL%2~LzgqP@3qFM_06$b=ldkc$?a^Z zDd(QK0|w)k^zFD%QW<0+Dqtkb6T&Cr>0g@cVrjy_)imZ>;-UdC7GvAM+sIV50f;dxw@fqyz&A2*IWMg-@ zIgTcxKMMiBG)DMukQ3e6-Nn5Ctaev{Owc?d!4H&XuTHkq+EMG}`NmlpkhMR(8r#Ip zN%*P>7Y~!r4rU?AG9trRQeKUzR=207sBI+oEk7I*aoBiKSdF$qwjN=YI}?!^mmcub zt@GuM=`!xhH#_6uatG66%szcvmO2~Gjqa#m1Pen~*7VMgwnp`Zh90f55IJLm=uBH1 z8`k6~7V~TwH^%W)v;}lww^kUr9IX4p=0(6wYh*AXokDwM0?{Kyr0Q%_5;BEWCc}U) z546?wY>1x4Qb;jJ1dWQ@C`qW&L;$0-XK{4bp;h2ljc1p99qI&Ty`nkZ3p6edBE|O# z1?2lJr^0kyeNEjFQH#tY#ExSmo2Hfhg*`BSy% zBtR2zeg6nlCN7siIlb(H|IvS(Y&-2mvV$Ug+(SrMwqggy(I+J}F)L}FFmALCaM_rd zA40q(xc^s$MO#F z{aAcYjcrJq1jkV0?#uezviE3MDpi;V6WWIVzVAgMPLMpJWP(hc_w$f%xDuX#&o@>2# zf^cL`*%*b}Sr=^S(c16tquca9`ZCXPO{^y_#0r^@DC?%2nXo3))8n7c6~gnAv%~A5 z>gfK|jbY_Fo?{Zl?y*s1{UC(yPR4btlH4@V)~!^&m25pG@t*2x(Tq!~+t1Y%5Yj)0 zWCJFP9be-#sL+LmB0?Lro}pY6{u%jfHu!QXQgmHPIRAdL_Wc36IF=6#+DRXHd^vS7 zq1hqpa=jilHpM2D;GI|wVziZ&pw1W-ksBjFEbM|3*E+{Hybo0l3Jf$Zora6Gqfw)k z94v9u~jN#EcQiiC;$VY`5LorZ0QrMe59 z`X~V!9Ao1uYAE^duidOUvYhs}q!Bb&=lkHb_1B zr=Mb?CBG;1p%1g1jY9TTdaR<p5d>4@#vA9FQnP2AHchPqfs|#n1F4`CAURzXdU~0ie2?gZK7ot z1ud|}RROF~78eh_L@G_%5FAjh!B&xtD7yN~V0S8|rij|asVzJXZvCROh2qJ<+8Q;~ zo+D`UA}+SBK(dg`2e^I?FPRZgxR?ZiVEPn{#xE~F49ormCe8QTwp!a;O9Llr81emn zi?l0qkXLc-Vs1TR;B6@P`beq0L5reeqMhVrO8dnsM!<&acw$K!bl^7 zVql$;ETad@j-IdD&QNtnI{ycUV9X@RC9Sb858~X!yhbXwe~U&MG;It`6jQhAOxa}b z4X+mKghOO`OKfVCMx-*^h}+SyfXla97HJO@9)EXHTS$0(*{Ij1?N$;&L&V739Cm;)avVE6#hEdR?nD|VE4lQ+SMR=7KO zYyc+M>QdSdrpk-Q0!<3ub%VwUj&uXecSpFl<1dqw;1F9)Dic$e=jP_-=K!)<*}eOI1_vJ*Z}uJRw_OT+n|KJr z9D>6fJeM!;T`{fT?Y)@&SSoBDB|}eS4{4~yCMXRjCH=Sq`i*&~N?EB#SM_uCdr#P% z1|?Ed2<~V63Snss#w)7mTVd|1w3iUR1}Ek$$?nahHxDM!HYGmfFEEMXKq^M9J*<4#VK$_j~lL0a>~~>YVUk;(|3h)ogoq0XWSFW zUN(r4X_$h^8o%)>mDs{@qmpo1Q9mm+KehRu<^zreIk^+#+Ku%+ z_X4?=H1O+ch4l1CFQP&mhy1N9rVMNHAb`ykX-}XSdC?1J5rX;j#lLk~<1u2r4M_hf zjX630l+~B>On|zWG5GV3X%`mx@$)4=M_1HtO|L|60$HqYv100el1HR`}X|Q zDH)czog>mSiVWwTq2USRzU?@K_(+Tj(INUI0-S4b{KL$AwFR>oV+;}~gb>?@b-9wh z--j-6XkGax2@ceA)<=hu(XV6*-|VHz6)T06dFJ*X)w&_C6byS}$VyFRt%v=T z+me9lq$IH`>e^=&#he8Xu&L@rbERFAAZEVgVr<94mMdeAgWM#4Orn!W+C%7>v6}dh z+3%Z~S)lX6JPQY>94$^B{|5R`}ApzwRE13zcQE zsdiWlGw+HD?Mj5X`Mc5S7E1k`Ncp+DD7XeSzHU$)Vu%t{PY*R;Z_6BNB+OtSJ}%zmhBVNc?r3E*P1c6 zIE^1a8X}-p$HpZfRFZ!`Sja=dCTFX39`k~Z|83%Q;JIMfSD?j3iD>Pi1l9_0#Fz&!k!_uEzTGJZAZZPqw(xMHbvATFpp; zssncN+fak!!3#IYJ3TM&a+ZjZ%+s8*XdO{;&NMq!0`(Xy&uX8vn8+9H*prLhNmP4= z7G8%RbRSj!kUXp~@!t~e!b~tvaU!NpkXkAHzAB$Bx-b*{l{fFAPe@OqQ}horEl+XY z3Q!~?M}OXQ;jf;Ld_@>aMa}u6Sb+Q(EeU)GJ+?8*o zH%AL*$|7_l3g#^fSPpK6?XCM=W;iXlliz3fXAdt8yyL^N3D`-B8B&HbEvw+*;oy|z zq;)4runcu~qmuUQ%pI2`J;-bN61AL$`{?JieqFRH@#Na9p%Ew@k4vIfE5rD2JGZy3 zs|}FY8Q?O$eJgJF26!-9$@2#-dr-^|o0MGO;KiRIM{KMnSU9eK5c*@L^7Dty_~B)L z+S6jkJ3CRonj8yN-M{L5qaI;SSe51GeP zv~VXhgf(B>KYF*k5Jlm|x?_d3H8l-fnzzlLzm=}g_>M@G56aMW!%WEbhQGY0%x0+r zKWThszqU*9z(yWd4WO43O)B~g5yiF`h#wE`;%cX^P)@d&74Q+$YgH{)r4CZ&@?fBn2IP@<+##vHo_$FUY8QCe*wOJcgZ+e?qF3tdAQ+G@P# zYA(jRSJi9$?|6LLHykWXi8c%TEmaYT1xvD+$f!q^pm?e{^*3MHS%z%Vx_lpR{A8?} z_Q_?dcj1Q#ZmU(O=7!=H2!+_Cx&ZQolMouq3Q7O91GC+kR@U1d_2(Bov$!m$h{>D2 zy%pY}ae04Wx=!8{&3;T>^Zm7Y$7)V?Hc$~yI}qlCc34xDzZBG^|hyIg}2<+lZ}eEq4LFW$nU4gC)_2i~aQ&rAPo6m+l#E{;lISZ9+Zj_%Yg zxBp?ZR3+O)TwAs0wob|YqlxF9G8*D0OS7@A)63}Z5(WMzT^HZk&a;Hh429c-Z=r-J32@YRJ6gTti6zUomc9~#? zY!>jj6DB)&VB*ete+u>~UM&QiUkZ?_NY8>1Z$uVX+u-fHIAYIFKyn6F z06=mE9>ssrY?{bei1P8>a*SQ2NrjhCJ_PkgPyo5kSTmsRoDihlv8SG)*KdAOe6 zUR^`Af`}Pp+SMC0+sREr>RmwnA!HzyO(QJZ22d?a;C#QZ0760Fd9Jnn;jy&LDrC_^ zdPf$EG9BB!?sh!_?1$xgs>jNjE`z-xEgY25XIAd%_P;_L{E#STvg8Y~eSb}~rhm4? zQur)pI!Vl=JbAdd7UrC(#L#y*=M2mZO2yGXjR(?l%d~{4Gvn*iRoLHCq~DPU<1sp9 zF$^SEf0Hohx>Z(PhBl^@(=gEmx#A5n{k(H(pCN?yJ2E-&-aTp*i^y|F@1ipn@)2YG zFg7qYZuR+VvQ+^I+~@vwb%e0K#>?jV1$sgVSqYT)ValiXHB zOw1QWmw{`p{4vtf&70ZTVuYLoxX)P?&L~dgh5kV?0kp(2P`vTD4f0azkTW53;U}Rf z<40BmNZ}VI5tbN(lvHt2uI_`b-svo*Aq7h+Zq6CLrXrajw13*QrBxc5=*duf&0r z2@R-25XeF-qvNxE$|D*)$uMIre!+rz%TWl0fXdO-6jim87OE#mUzCd}_uhy9w0etj zNFQKR0gP};#PS)Cm2o9Gal@?wStM~LEJ8P{3HQ+wN)V?>1{Cmn8!2}FS>)uHRK7Br z?SamKXVVyx7;-i^rdV8xYo5<~G%`mTJrJo(E@^qqMdbG&G7{-YNOHO9@_Ki4Gx-*N z1@20DAyDs)RtNc0*n`kZ>&#M&rcKjcl!$5{of#Bc*{hq?A12=!Db}h2c#XvH>CCwL zK{Nua^j>#7)GUK|yK8}+s;T<)*ld>TP1x{sDB{NAqq zjQD%#K(IP3`_^6bv|<@kA5&4>fb!G8f?l0Xz7*df zB?i_|c5A^T{ZHtkdWn2N?6Aa~Qk0@@cYiMf5v!H^Q3O8;A$Soc|1!Vx<&-T8A3#7- zSH{CddGAAujIQHQj-Y7JvD#-@71{8mOI&S>Rhs3h=v4*RV2t`HS_BAR)!L4Uy|&ni zL4yADKS>PWt%mJ#tIkBBg)6J`&~HTawJol!aHb9=wXL-HxPsT+zYqmdH3B2%9gTed zq_9`auE4Z5@1*^?$c+A1rGMLh#f!GK*tUi}w6R_jUx^mwi@hLtJ6X>jQP}=Xp0wxYU%AW}aTOV&tUv>AMUO z(Vd`GN_cpM)NFU?QrWZ~6(ywK!+l%MtH+0}9!^9+p=1fKXo=sxEVcWksuDluQp z%2^Qd(xREpf_uxboHbX`s%cMw&aaClTby$kDPyuA1hgo22N5Us#Kx%^o`p%S(sj~ z(R*t&3nf*BDR)ppt2YrSc0ELki|hBzNb!C zGkThnEAozUvqt$322~mSw~w`;wfJ)1iS22u146LsR@8GHpdPn7BTFsv)QfFj>6zjr zY^Ot=gCS(_OXb}w2k2!Z9*$Fnf&qSb2D}a7MMQOOgi8`65#l=G%=fEWidM3)6RQvA z=|m=YW)Ra#b{%{)`>8a1yLK|`r-gPL-)v%@x-kfTov4Vj^i_A^l!bL_~W-rTpPXhk2#)YKtNq?tgwS5K5VwYYcvV z0y4~#)sDX;FbO6qLuLXcvCyWxbv5Lq1Uqm;I{-BM*CwrdULxQMDCImDNQ8lGG6E`! zpu_oa9sGO^QYYw@)GYXMj%qPo1)kt|B1HZ!e`FATq*w)n27J_6s{Uq=?*d~=NVdmo z!H&lm3Vljj!y_iihK$%RBsUS*l8C;Z0RFIw$>pt$$6Z>&OG+|P&BY=xNH8AdwBA^L zHsU5gYLh9)?dI9w|8=5_rv}~WkZz;mRp|6$L@mL~6n4^7xv=VZ-F?>z`yqalF#JsC zw~m{r#desNG~o>@~usRmVq2ha`VgkNp^YnM%-7MpVM&kLd;UtB=f04ZR81UY;Cp7 zAaJuva{k8uGI9qa-Nc?T2Q%nnKBnAcCLr~1aczjuKhuVP8bv)K@utv`8+mEkcc)h< zSVFD|k4(!aE-p@twMOo4Scbiu{VtT)Oa$Yf{#Cz-u<$yAwwP_|47jv)JYH4?KLW1q zIChu-z(qb{XchG~uLXg|(8dtBtX0eJ+vffuQbd>N0}C&Qx&?4Rxw;a-i(^$w5A0D5 z;V zJRh9M=chi1yke_2>>4s~Le!ey8HjZB8+nzu{T8ycMdxQkG#7)2ULdaFqDC4)p)ti5 zUy81yrQ7MEr7hzY;iQRJEz`wLZN0x&4O4on+RnMdGZD7I-zW4f)6@{?+&2LP%-Gm? z3G_afmOz{c5MMiPM_f%>ea&UU`=JHtC7F7qbsZgX$jH60w~BvAzMX?~SDu{oI%J1~ zl|=z9A^^o(!5aUAqjpD{t;YdZL)VyLovstu+0-o_XJ=t)_&Li2SOL0{%IO>}gBlah3Te~!C{xZOl& zLEB5NqpgyO#%}9q>aK;C8)MaM)AxZhf zU6@k@pV7awE$E_v3N$5uC;XR2xkZqp=nbdk#&)mEd{D8WHi3mQ+;I!$Beg%fr+@16 zdrkgoPtlMt1s|rEs>&+S{=pbaSz=>ZQ7!34Ugb@@`r&6YrNk~pCD=$&K00IHg4~Hv zv8>QO_3DO+VK7P8Zds`32sb2=BeXsGOiev`z+ zw+y}ChHD&GLzX_(-3$gLSZ~3_Adk0?+4jFD0e-HKVVC}of1ghNf>74nz8CN_o}5$& z%>mj?o~97^5)<1>1<&di2~ewm%m`p$f(x^ekrFoHuO!yYPwX<1R zd^#9%$g9fh(y%yU<7sb?PDGg^DzY|9gYw4V>uYxQD(-S?O)lYT?v+j;#0X0Mr9v>S zN!y*GdfERCAeN%!<wot8dq)|--{&e`!%YhLqKZo`;xy_X;>4Ycvb4GiS>o(Yh7LNF&jW!4o3QbFF_F9 zv+ic_Qx`nBeqoI$WS^4%wF3Ryf}WoqK`N?%+pu&xclI{la#b9&lD{-Qt?I7L#5FjW zidStBUDVGEo%w@K;ljb&!QR|&>j{BRx4XcV{8|D$B``SF>@vv0N2CZAU?WejzH%C; ziVckNrC?)E_m;8UT_22!u*zHUBHJZrtA|TqD$XM7ZfKO+6fH*h0+ppUQt`m^pgW}`}%mkU;iggv$T@fTMOjC z6i*F#M7xxtbDm~88b-fBMEa+cG97kLo*f9D0!o*JzRcb|T;D}bsI~?Rbr{q4!r3g_ z$PL(^j|w8R_*=yc$c&%gxRyso8nu~)7t|G(n3^jxSeeUguqYUG_U_nGzlkXY#`xRLz>+wtyx=e!b-w9p87(ayNdVSkgR ziK>9-=dq$ctVR|#XU(a7h`(a|@G+*1KxsY4BDEF`%GAKR{^dNK+;(_Gal_|#Xyo`w zqw-B|??p~Sx{n0>Z9ajvUL`9wCb`+J6f-xXD3ne(fu}RYQ4_T+c zn%?Z(EDcdsReCKYmBMd6CMR|lM1Q{oR3W^F0Y9pN9C{|3E6V{_+Gz2mbR2l45@Rg47%^28Kw$_E!EF!y6uCQ;2X)uUz*JQl?uKjXQ_RBf^mH~hOl3JE32!2TS=B( ze88m=d@Sw=bqK6o^2@|_0A;z%fE|>nK^VZOOg>nFnGhItzz#w3asN&5Sz?ZpiwnX> zM~hl5`o@;>cZ9%D6zk$6T2?p-u0$q2MQla- zj>u(-+*bUcD1VhtDOKpgU}yRZ)}CSDYH?jSXJYc9ocMEqK5c1@!oMfWuQyKO-{}O3 zqid5G@B^tgd880z2Eh;Hwuhmy_-BL73ViF)D!UubwFE;^o_WRiahEEjg9m|mn_B@} zjNE)Ffzx(ldQaap_*BTd=d60;cxW8Gb*6m921ffR9fNTF7L0_%&8jlz{bxg0yTVt) zg+Ckm__vFD5K!b`Ath#WgNKPZ;T(L2#Yq^t4k3)}Y|kZ2f={tLLB@##af^hudmy{r zW1+=EP$xpK2b7H9b>qpr3I>1%)^lf0`o0U_zF_=7Z^FO7^8YWy+t7g8fJwx+1xJG) z4WVWGIt21g;0u&l#DK=qq|)(A=Ex2hQvG-3+#SmShs4L@)u&_0$4SX9M*f%12`5UT zuTpc$^iz!q8kHdB{bkhzlw{YWpOMN%ZlLE8Vv`+j$KP?93kZ4f~ z@6(PM_pS4gQM4OOKXJb0DgMS@oAKvI01rL8tH>Ilhs+{I^90g8vmW-zv3xN1lrX#4 zSnkb_>wgoI7ZGPKIg^GtR8z3ISlAnhfq-qh&*-tVQ5$nKl8D6QV->{6Gb&qZ@8LJv ziv5e_nVb%9J8}C&ZX_MdRLNdwM5c*FLGvp|3Sacrb$xSuz@k;LQX_rY#BdOETa}OT zWt4I3L1H_Dh7L9x?D*PgD<=k1v0@m*R`E|h=M{IX;>!r}iO@{rcDT$GMZE^R%oi1y z8zlj3KB=1$XDT-)ns%M&OQlNcaSGv7dU|?$8F1unRaI~pv2$pC7PqE__T|ugh6IT4 zp*R)^ociFjZ5?cI~K!+gYp3+y5#$ zuofIL9335V@0g2E2gm#Vm_Mqd?kg^YrlW za1Dkh|KSv_?jOM$>jLBiOJ)z-izBvKet}wMS+aI{m|E#F`_7``KDvQ zJc&X>sL(=11_XqGl>CQHQlye*yN}pVO(3}dDK8^;l#I7ggi3c8)*=GzT?XKKxHPD4 z3$lK3TRv_M7211x3aXvALI=(Rq@G4p@v}?`GXed<)(LY@E7Ljp&oQwol}ob~MoPgq z?c9;2Eh(Lp-1>tZ3OTZx6LKgqC51P0r6hYp$iQ@@kj*jB5+}-JX=?i&!PGEa26+tM zbAxWHwG18l$(7H=VP#adFq*-FRr4d2&qq4u?+^qgM!hzr=`zMMn*e54Vj~4uMm0F5$ zYvlE$K zA4sJpwOG&g^U@L&kFM_leG8;wXlF6kh6Q`?VKnlT=7nmxYidQ>en4s{`Ft+<{IDyj z|4brU?f|8K(~SDZQboaKW(k5N>slQavz7pyLL0v+`{4bqm436A8S9b3*{+)kg^<2~ z^JDHOm%X%f?Q6BN+*cC$vB`U#(o?>Hfml}M#fnq1?Gyiy(?2m553s03)n){1LU;uj zaW@;Rc-84D6T^BmTE3EnXVd*v^!&CYfPpd2L+!Dk8MyVqNgpSGN9Cv{G3`U=CfC)^ zjtA~@js%_P#Md7Q&v`1C{f`aOf_xJ3X>hQ`1&f&$bJG53SD@Lcu^QZvC1Y9^O2g5x~on9(YxpQ%hE9sND=UQS1Ah^1u7ao zUx?HTLrdJ)eK8Fn33Z(KU0Jo>5T6%PGDn2gcg}TqL)GJYn^tkh-x{fhLhEaI0P&DR zM6oy)KV&#UH}|Ix<=`lwW9UdFpxJD@ae3}I)1P4cW{U1B5*m#j-07!X$fM88X6nsL zo!E_k2!EpB=>O79GwAr6j4nrY2epE@;$eS(|KOm+I$wE3Fkf2u_HPHw{q|VQ4cdv< z*8buP2N|K-Uzu{=(WVNrbmPlV{MT3fVm%TK6yo3N>V9Kbx+BrM{aDh!QN-P9UEYMh zj!Oy{2|lvo-NLu3kaY3SR(kwbW?n&X5~2ogX5DJNOheQR>N!tP8Sg=&4LElTk8d?J z6Td{o#X%}%j~yEYv9@YQD?cmZ!pRYUqyUK<-~pwCpma47icZIB3q}~#=~F<70z^Y& z68A^oVsyLuxV#E1%yBU&8F(4uc|&va`blHs@rc|rZnpD(H$B8|*`%{llF6;P6`(>c zgTlmuSj$^T`@Hiv%qFWCg3i3=M2VHV-yI}5ezS{B!Wn%1qQWqxdV960jI2 zbB{Xn2g6}i98IX#}qE0&t ztS~9lyvXUQvmlN9 zu5878g{>f?!~uu6^tIc0D?36A_JwUWM|lTnO?{gudnk)Ubvz?$jNXcw!{xJ5oKtH7 zd~}%yn*g28EG=%;-4?uMgV zOpRWava8+yPLZ+(4MU?FsIY$O-aS8cJpWC6BXPS|5NG#NO8#tPBR{*nRiYl%lkAvH z(n!;GsSKMzFrGc_sH8u*Hb|>%ATky+kwRjWc-89>Q?V~4oV-yAS2;GmGvqX-N6FWo zHTX2hj}E7u;3j4++c~)igV9>1LA3Ewy+`SXCxtz|!l1RW-y`vBQtAa$`rfYj)IHaH zuJU=2dMl){5uF%MT)g66E=A67gkAB=p^(lhAg*ZB|CbmI|!`K)pNO9D}XTCt=oelF(qP0+4eARq zxPz83_O=((zcs8`(S4T1&%Z7=#)^AcOX|vQ&qxO=7u~~DS7~#lIaB0A3}Z~??eM)` z9^o>ptoY(f(`SqS`NV{cp1^BBz9t%FL!Au-26*sJ;mcUR?Cl1w!W0T zULG;c>}4v@$>9Bzn~m5244M-Wc#{kH8g2NXUMfa@Nq4dh2C8-v7+Dy3H3PilFvxb- zfQP=f56{WbNi0aooS$9vu}{A_eU_a4V>IoBlxOFUgr;?OI+|ehtl#l`t~ASRFI72o z=*;d+eil2XHXD3+fiZ%s_fwbaAPd0;)hs|dcTyDCKp3NAND8FLt)LxI)v3?1Or&_U zpn*~Dq?6o?`30Gq8glb8rwObc{QAQHG_Y|(C4~=hc(Nu=WBIJH&$%>iN8yY5g|6n@J4)< zuh|p2%%WF39-Pr3jyyo~Fk!M!+7hVPyx1O>I`jN6uUE{Cx~7*TOGSdjWf~#ptlxP- zOAbh;^XmW^L95ZOG?)%5^kC}IWK6VX;WB_R$&k7?FNgp~+_IM7%gEoay2Tsi_EQgc zksaE(V|jH_N2#pE1x@7(C^jMSo_iB~HwjME&)2&-!7hiC&aFt?PxLmypAJED9wfn% z!of=U4BSV(zDSK=5Gp8HWyNJ{FnM#td@wxaz+7qMNL(gP7ivFr7t2T>$b0yp^bvQ4 zul~jKEWF!>GwuCw!@sCoELIT|ajm#Xq}m{2!p>^xaD-7-oXAFhGOxfcJTnQ)I|K?LSx4s8}v$X*2n|wiXfq zhYRz6M{bw)R6j`+j~j0@6_ZTsims!_^Q0h{T{hvQo8k4P$&r0q#f>gu=KOlrz68JW zuM4*&seCUoia5s4aa&Z2xqrE_Q6WUmMjRA;14*h(0`cl{?gi4xSmdvM;b6Sl4emLl zo;*uiSqBFrVB{^Ge)sO(9o6$@@P8kOAu#73P-Hw@xz#EW;S2?qZ&C^X!+;|L3NkGR zKQAvp&=~)FJrOS*iO*p56KlouN{HA8m=3-TQhnRx&OIHze4mCEQO9l3&yGhyH^0nC zr(35J)`u^A#h*_m?6Xa=V9~YLI(ztY_RHg1OIW3J>&QuI3#1!fFE78poF(fazLoK? zJdrU*uuVcEGXG@4QdQ|*c{O!Qq`ADc0Mr%sy@+1DVlly4kBGCp3o&m*(6H}OsXu>< zbuXlr`(=DAz})=P>yeeM0Hb3cL7S)6V6N}v5Hzm#M-RqKL`p&9Pg-r{V=N*U1HZE7dG5aCBC+gqN)8e-F9M6IP2`9yc`aAhN=^D|<}UG!Vqi6B_; zM(;nk)LPrDNmZj6=4#{9Vk(s&(;3m26Z(-c+I^~*JGg)}H897J^9xN^<4r3cB!zTE zI@ys<99}jryOitQw{+aMJYRM^&3?}b8YC1dRve9^s1k1-h6e~sflT!%XKZY2Fhp(y z;LmcsiAo7^aj*#t`nM(x>Yy_{j_;C^W6I3ExjVkrvap(2H=JYHx+X~AoS{!K8xZiB?lT(-hY~|cQpl0? z63f%HF}SjmrX6F5At&pL6or2g{J=F*A&jd`b%_M?DW~U}C{#e`H%{+_WD)#yc=hVl zW6&zno7U;A@e5S`!_!E58l!1C_ej~n|0C%f9P)m@KHgfcW!rWwFD+YZ*{)@C%f{W( zvR%t9+qRaCWi9NvzQ5-msP66$&UMatzg}5E7bmA*%%wAb{o=>Q|G8ZDh~Gcp$Lh{< znM$0ryhdN2{;-(fL>@Pnl6OxYC0BO$zw_T!N+*~;7nnOY2H9m~r~cdwz**fs4BG=9 zhWe%^X$a^vPK=EKf)923ls{)6#akP7at~9;lwvq+lj*bmul0eK#91b3L5~8^3eHZQBN~_N> zbdbcuA5<+=m-ng{^Tk8I9)_mSeYL)kl*6;Ju>tiHg-BlB4+JaABWU)={*3PWsD6`Q zdX4Jxpge;Z-DS8Ok}n@b2B6ZsJNs0Wr&IZ3SZO9;1C2}QB~M-QO$y8YaFKXhntU+_$Ll`h8!%hVQb$NgJpMNa{13t4?(WXFH*5jo4lWtP&qKbk<8J}H z$ExB6bgh6|s73uhY7qRPuD-q>n6U2eTQsfqpI~cn^Qa{-4tP=VC!TX*<0^2WCeuw? z6H)yxz#JoT*YC&8Ffp--8|0$*vMF9UT(jcTq`x3Czxw**7>y8xqy8O-hC*Hqx@=AW zs|mMt9JQ!tELQF*fh60r1>^lq6L*4m;& z`>q%E!&8IUQf+CA@;t1_ayr@zT81+yJI;2C1PP;-J(!G|&a4kI9!w&{7K!_lPGw`mtY!tG zOLBe35RB4exP&sT=@$?(F!0Xa~6Z(s86O+jyPiB<8fMn6XaR4kV}yYIe_K zV<@*%m6|6&h60~yFA7M&Y(laak&j#N=tOq|4AT~j~2>;nfS zFeg=N>L*U)M17W77qqrmUF-Kdrt5E!;s3ObBKajG1w!}YzqA=8q8#tkvFx9+onY4* zB^$%sR=rlF<0j`$E%Ea3x!RnDJ(3v}oAi6SOmhO&R?0I*IqY}sCN6gg6g@R68pO_W zl_kM$t_E9y^#~;e=2s%G7nvH0u|1W#pn_oL3BluER5ckA7;J@F%y|c!ZvwotRxu!>|N-0tZ~O7lgt14=mYNRR zcyqhwlxN!;c4o)ga3*9QsUVDA22E#)M`pU~-WvGqx=PK@Gd$`2!!{J%8NoX(cunb| z8+MupOo5M!xs}wK=oQG9e0s*I1PkQNyO>O*6!5)lR@!`PLvx-ER3|^NW^h$OHqy5} z!A50_e?)%ZPuoH;S~|N=2ieZmYN67hb?YR(?X~|*uQQda*_m?UP`Q^#HHYQIeX4=Q zw3f+vveIGqq8EEiXO8_14HaU)r3|Y--c93);cVC9cyDsou-Xwf4-dYFU%r|GGgGMY z%20T~`}gJ@Q_-J)>1pypo#P)cER;+7!>@8~yJ0ib6q+x4u6ip$uA0f2zA>pZeoIt( zP*NTIpHtZfy!P4+KEn~XV&4Yu3U3ha{9U|V{heU_CpH}Z=S9S5{ja)_seM5Kn*)My6u|csCGfb10 zbY%`ya&DAL4MtEGf4#<~ee}Z;RTCui z_4Pq}it#reMMOE@)&2GLHMK@^ax!rH{rgX=1vufRrl#!pV8#vHPNvrd*9vVqLIgWH zbd6Ccj-^B3cp=*&VLY7>y_R0pgh0{pY0Qi3^iizBl-Sy>R?W6q8=9!3cvwtOSeTa0 z-i12dWi=|)g*cnGyafj~vE6bJQMYR!eVQxWcmr6dwst@Zonu)B5EE1Jclvp&2_y*8+p z7A#UL<#uj)VEU6t{O-pEf=Cx_ouVdX&yUQzR-&D%Y?zmn4cfSp^o9Yo*sY{R0*{Hc zOux%MDEj_1K$QkQhlht|&GO3XYL~X?#D$AcL-l%u?4uGn7~iP8{e-UfewOn)cXR0) zaeKPa%;+OToFU2B{tc^NR8ZZjtFRXpoITYfYrj13aV+;vA4ye?k-tSp(JiqazT>~w zpe&cWE__Jqql(3$+SM2e?pGP6&yc8gCB;&jbN>0sD1jd0n7^2-wGY^ur5fIV(GE8C zK^ew?$0IuZB8_)3q7d+1F1AtoGI3~qJFMVa=3-jQS$GkMyt!#R@ehk{Dso&K$&6df zLY#Ke!5adE<$HU3uE~SYNxH8f&VzBT}`ehHk;|o*FckR z3b8hd4ivb8sLGLgCbyb{`WvEVdVfTaLII#3$kuB2zvZ7XaY3{dZ-N>uR4+R{^DG9t zGc-CQ4?YHe*N!YBfW%Lvkzv7DbueB{df}Mfm!kRTh32a@v6T_71%7l~e9JbDYw$mC zTk*18ZKtDXVWxrCKbLy@{s9F2b@8qb3?Hv7UoPoy62D5G2SnCs>nbBP@ir4*Axw-V zouYj!dXNldK|J__IF}D2 zt}?QS|FElxCzVz>|DXO9L^-ej;bx4f z1POzGd!%mBTfy?)*g&2qh$Ep$TO7&U*9cA zEFUl$BtPvAC4TOg!5rYhSB^J!7zo9hMscx;vIT#+RN^(IX63G3IyL2G7^voOS-GG@ zkaKilNac-Ccw=>v5c;W^c(w$#Y9$sFe4RKfTDHXHJ2^;4Bzhyx7Ez>I$bMlusuE|? z9{^tg7-fpBC*X|o{-EOZUWg@}Tk$2-&FZ&)NXrO!+iHfDG1WP+=!!XH2*58dSXX6X z^3Je_DbKs)A1kE`5Qe;bM}Qx`_?jK3Z&^k)&ho3nC!>I z-u2&pgng&K&OcaT_N%DyN!=$jLFFvwPXt+TbaSy<>36NzKJm5#3`vDN*-h^5jTC(V zkc@%$x5Koa^730G;==7V_@I5s9oT759kxy1_^!tfv-PP1un-Ml{9uI>`|0XAkdV#B z9huAL31z7w<$`ySP2;vCmZ>bwy3HUqo|we<;F|?|4-zq$YC_A>MXj|GQ}{wL*LWdF zKY8z56lB8BJIWRQzZ7_)MG1V75*~Xl5qz}iBkz<)!{EIsP7UlrG3Zi zj{L$+s6oFae_1<~dOZ!H`aCSI6Sx9?8}%u>-lQ2UIJ+dmKX=Qt!I57 z(rHQ1Qf4#kAVz^B?ra{-NOX!j&^vQ8hP=^cW@@vR6Y(}c9Q~LSVO3DaoOREINzU2= zt1?fYzCZMK)rrJMXs`YQUUi}bl@89^@#gjq=hUMr=!K^p-x&JJ`K&Q=xahF&4WM5w zGcPM>Vuj`A1i7UF!eZ=3mna3tnvj3M+y&rCha4_hAjfrtbHiw|3K(cn;XunkSeMb%yryTp^6%TnjC@u&krVl0A#|h4Y4HeYpq_fA2k(+owBxKNctT+>WF0R+v z=Upql5V#C)SbWBN-3EoYrBnI5S`APo_^`R`jO4aH5D!&!{sf{d2EBQNHBdEAgw(Hj6LT363`<1ol{P3^V4F} zNf8Pbp|wA#TzdIe-FEdcCbjFS*3qvoWf@kQ4@SJ!>0=7iv>Kn4n}Qs~GSffnRccoD zfo*PjZ_N!9y}YF%D0mLU3 zDN}pf*d$^wmo_0f#z&PN+w}=zU_(WsS(>@D1NIc{n`|3az{DPa4#72VSuYt8?(K~r z(Ge)~whSt=d(SnemhJtij9gQlUNG^GKk%tUS;#=$>34QJsK1(0;_%G?nk_{zZshp1 z;W>DJHC`mpKVdxJCATB^ll@8-%UV&nSkBIUv1| zPM2Dux5HLyw!5KXOD3=eF!Oa3Zm&x6sn3@`IK1mr1n(fDJ--*pTClU;*GQ^eQ4W22 zD};>%LKDueuG}CuRK3V=j3Xe-$G17JQT~ZFM9~~I|M4cI1wP`=&Scz>At@tsfKSrK z-%DgStE4Qj880){vvJLJy%v>efZ67kk3t-i29bxKXFu-Cps2`?njs`&_$rlCsJL(Y z>2ahVOcvF>H;t_flM~9iY)-o>>O;1Na?KcOy-8m@cc;_t(9{2t51Qk%;xI6C_;KA* zyo)ulXjUr)@$UD`rorUBJ4jr1g67Auid<8ssAsS;K@V+qB5g*S>JZ9|IoZmn%QU}F zdp*%_(dZ5v`+8Rtanik=|J*$J!Q^3li#q6N_@wROyymAvYlQ}f(xzBWd5qo)!^qc_ zWIbtr?lGydLKGhYsnDp@Z2#Cw6?YoC>xaotQ25L0VlWN2@)a1uYboxC;z&qpH{DI{ zwxfY81wiOQ0#Sy(>K%)BFiiWk*@W}}FGmx}hS8mJE#J=wxVX1k@?~=^@zjNul3CJK z@LSSp?VLs-vD*G>xhew3< zQgqhjYBDn`3Gtx9ABcU?fFOWKcDn3wbUqcSqK+B+;qx!oo%)?@F#CwTIb}hJ9`sIz z|05!6p-_gN{}?x!WwkR{&-=Z~pc*Jv|HG+-p^-r-BJ;i(+5ImyyBO;}(0W<{Q0cc+ zrmV}2m#+-iJj6|xR%4&~htvMX4*<-kbwY?kQq$uGSQ=$XYkk`&!qS4s;s{?OypvZU z*dB1s&Vw38HJ*lxRzo}>xHD;!STXj^y3`>&Y{FkNycd1|zkGtK>F&=D9X-ovQ-+(Q@P)E(@k&H< zGce&d8BtyloHZ4Ayu~ZMda%6d4$f$3Ya{MG1j#Bu;|;%AfDB^+S_xQf;#kJUh}!k~ zlFCPndNgZ9)oELMw!K|%oF|^@&U%nI%|e|Iq9&VP;0t|VO@TY=PJe|ItoIdI&l4Mj+Il#xUfGJLS_C&41Un)Bd> z1mYS_0uoJ+Plc&Y%1^Jg#Pd8Z;)6tOIk}B(o(U)acT>Z#OSJkN)v3_U{ixK%UAMXI zX6Y(aQP|99?IeAz?P9 zCIQXaLbcu&^n@yrbOm3FH`sauEKO(%YU;y>1Naf-gGgiIN4iMBMLuVI!=7MuMSiV5LoMW!pgLk$O?!C;^jbik3Ggu*8sm~64#EgwU&aC`Bs4zHga_#Ti9p0mFGg0eH z1gc=hLpT2PVv#2ypqEJ5ZS5)a>y~W^FDn2lTd5dLYVaU|GduU}ef4rLrfDJ2wqi}6 zj*h|5uSVR@u3u~3zfjJT4zVOGUHNOUCJOClhRiP&DMx!BI`pR#rnYCmJlR$m1yec3pfdkJ&acqMrKG2)c9NeEoM$^u7vax~N;47Gs0EpNNc~&*n z6m1=?KTAEBeM{$xn)@sk!jxT3vOoPr=XO=|1*+)q&YW&yd?S8-`pPs+Zea`PW*=%z z3(R9|OqOeR5Ns_!e=ev!Rt3vPl+748WqZW^ItIK-t}oXghE6wq8x=iKmWy98L(OKE zd0`NeLLkq9|H^5FM)CFeO@hvkUw8g>pQi_RjA$1~q>X&V?O1qU>FSaUkDcys;$XB&F+hnGDf>1R40@_G7eef! zWQp@7>cobz*9l!-U&W3JW{maBAKwqIR-F^WG}pAr7Y@9yZ>}l1Kv3PEJM(Lb*hhAJa_l83Z>zYrhhjW6R5D7J~~TWn+Lv zHc*6N;oy5$bwh5Tj_FRbr-#SC;ifkEu1DPOMPnIi@G-VC#MqX}X3D1@?WI$kq_;dc zGiaF%5&3?0@bo38OF;zlLYl6rO=`mMw*E%^8&&kKxTe$YX@u7{TOG(3*+7XVf@=oY zFTi0qb5Doa0&{pkPCIL4F2?ne_f9h8|Hl#T5htmo*8Pp>w{OO(lVgvJA$u5kX3UQC zzV^~Tr-UU~<6V-GhjCm~t3{%i0nkm7fz#a@u%sXE`XC@AL_PN2o?N!3we{(Ez8s`; zL9PW5NzsF9SDY%1L?rxXJ<(F(3vkD|4NLdZ`fU|0Cr^ilpG&Ri9UTTU$Z0a`&~C7ul-ua-eLqfXUBg=BK3l zY}X@Ck$p?GUN2#?PYW5?>9RVt@P%JQ>$DN|3qiqxTjXjFk~bDfF{r`POp2B@mY<63;UXnE^e1U zog?{toZek-39bDXG(`c+YUe$}0k};;Rsoo|u-oG&%*rdOtIyBR7i}8ANd$;Il$8Gb zZsk>K+#bQAZe6aO6~3yLdY$D{oF(2bW9xY^z=~?ZUj3!3%SJP}LZnGpf(SnX)R@4b z$Q9u2EqA}BSsr5P>*O?T-=vDT8RH16&H};?fVTluj_%WIlYjo$m(QDgHrZj2aBYGv zADEF!nyhoD?j7>3$%Ip~p(4O;$&WXtrIedOS)+*+_Iyy789s!=LuSB7Z8h$5T~;U!Ewi z#dB4k`Mxy;=|(iZiFselx#Qj;b0<0^F3hnfQnm4XHlS;)5QXIV>WdFAOavie)kdZ> zX-zt8AK>VwPfMdT;O>liH{cdH*+VPwh0&*0?_X4X-?p8s09`3tG=~^xjCjL^cIqeD z+{7PwU?uvmT<=$_Ge9c(pDszV^>`dq`s7o-k*mvx;f&_geqH!5j?ohhA~5aA$Atk&~UOIYdyELWz`hr-tHfM0LOX?*5!7_HgOx8PpBMft7{4 zTA`dF8RrZ)9Gg11ukYCH-ui(U6(HJWOWa%AYisjP@vcKfzOxJb9&$Gx9PL9Hyn7oF zhxvQ_P$0;XUU1~^a4sQ(mTd{i?>;okK2V5L`@#PH@jMcq#)~0SfsI#Xbn9$UYxrm7 zTEzzOd-xNaTs_j`4Hw#LTs$kLulA)Uqk8INlL*c_rBn){@9ptC$ThZNYpi{Dair1{ zc(r||Nat~Q3>yN*5ja52E z-K1V$Sq9)l31_>gz6lpEEm(*Okjuch)I=}E;K>fv&d{X}82LzylZ-j$PqWXFpPR>W zJ*hmB>z=L=aDC7w7Z7%XG&Hz~y54|!i_8^Ac?N6?_UDeClW3C~E4Xj!MH}b9YRr>9 zo|u>jKDU+#-y6-@RnN8k2!3ovV^PE^at9%jenz985h^akkLipY8K2=~mnRRNh2@pU zIfb`7rS@pq$|H%rU_J^UhcwKd9s>odQt|AW`;iN3V+3#S#5N0e`nZ3m@+D^5JFGLn zEIT@p zFhHcmFku?k>6cb#I`P6LO%C6fWu@j$RF`xA2|6pEpy2&ZcYW~;=ji<(Tj^sE0ONr8dBU^V%qN~+ z)gqC+4vx#{Ct-Y)ERg^MX591Nt;Tuy?ubcSAl?Bv z&4LCH!7FtQjvBP3F$$ber^i0@LRkfzA?!~dopa}Hz)Czt_rI&XQ832>7x90qCE%&d zPvJJf6^m@_aP#QY+38F`%~2y8nc%A*uqj#I{pZ%{7kB^wSxJa=oSu1uPRMsNgJ08D zU1b2>0yS!o0T&)Tht0=8nXWf=wTZbt*(cyw>cEU^EJA$~2{ zPmZ~}Iu9F;(1lb=pOB6e`Dq2qne0^1$C2GJ)!!PXdQ-O z5jhuKeH~xv8zQ}Yfc_AX{cx3@9FY zdU7sbzFr5PBaE*oxL;vc%IrpsTIt=)p5GsFubh@WH_L@X#{6bNKt(ULpIKbrgH& zo;JUfc>qxKcXYe}!C3N3@!X#vMA_c{g|ZSn?TLv&AJl+`hYE4T1)bgCgL->?eJ~bW zla;0A!R5{%I0US>`;@Tw^T8aY8_+r54B%Y!l@(~U9c)cluiNne`Hpq~R}O%L)o5tx zfHC0pc!>rhnB)m-_>!I&RBCdV{y_SBDAo#|Mdau(DW~e(qEP<%Dt9s|CV@e%&PuzO zfZvIh1732`Tax$AC-ocwAnsQ>j^~_Bb8qf5RJa&D(sG@fO&pIo=gha`YzH z-0!6r{y9Arm8L_b7^p?J*-M0)-OE6CZq4K)zRUR0J#k zS*6|tZIj-fZh80NLF;Rls0}-QDxuR^ZH_fsSJQTM-C9jRBb0hHrEJmuDfjZHnk=yh z#Jp?JL%hAc1#i{CbS<{;G!+9;(xePj5PzVPqnLIKBgP8t-%qTVO^O8@rdD0G?d|VQ z;i`IM-wgCqfew4OKrb`CVk_1|LV%w$L9$!PI3?`eiP3b@19==)iIN2%&k+0-&9IR zhhkmu_pqp8n=bP{uvkWExi6?-)2R7X;ZovvKm}ZWRMH_y(6&ls*G4dZ_Wax4+`65UntB|mhMp6?S zPNtAdm#wf%{c>k_$3ehDBPb*UvPdOb0f0LI3SBT{l$Mqb;xz^8`rqXeC3LlHpM;8{ zfk)=+4e*YuxZX*Mi&;8OIeBj`GU6DprYtTlwy!=sYAs=XPC+us@XY#_c$G*W61lW0 zGjg9qWnAJ#qLd1@cWoK~ivPdO*U0hQzO2p&Vx!&!)vWC7upvMOcXC-4z7&}LzGkwy z{j)61#l6su6X%n|Vkf@{!lSyEnn?{a{^!DwPvT14?#*UD54D;6L#aaPr~HNCv?2&5 z$T+qbJEWJ%G9Q|0X;S&Ie?G(v-+PA+I1tc%qyA2U#{4f{k8Rc9jaIvnx!C^;<1H{h zh+CkzkqSw-ZJrz=#}WbhWJ$Q3U`DY)bulXwT@=rQTrfE*;VYQEfI#!TcRMK9!P#j7 zauY`}K|)iH`Qxt-a&_I!L*MbW{K=G^4(#PSF+`y{u#?(C2bvw=Fao`;75}br&WgJO zq@q*U3_%-F6n%*x@xk8AwKGGque^&XrOUMZ2ovbNi z^AGQ1tecCb%V`y2jo~|&t8DPo*CG`;IlgV=`9=WWNln{Nm$g=qJ`H9DF={{6Rk)}8 z^6;|RtZedjlueR5^ih;MH#~xzLY+mKF4_Jd!G!fdRnYJ2n0){Avxb~4%WzS;EM#hr z^kYyk>bpC)S^mf$+92I2OsuOfmC6xnqQhoDx(nT0Ve!i6zMKg43n3hU5S>?Xak*HS zk<-W@w*&c=;Smug?EzuLvloK1j`#Sqv?e^^HF5iEqPx30;PoH?7byhXvO1OSzP<{$ zF^Dx}$1v>=r_K9GbV=4q9lSoQeVMQmZyx!PpthcNeBP&zf37wF9a^+yP8|Z1{w*^A z;NAubyN|JX?Gy|pzrjjbyMdvB!M@>#so_PiC^-a?x4#PIdMPe`bsXsFfsVEL{buL#qmdsu6}AeyA8MR&}~` zeJ9l^Nuja1V-@5d-H$olj;S%sYPIwc<7D7qGpxe=D$5iNF$41*JGS{L@lux&J2)_L zadFkt?#*ANf!DT09io+XrDiTd?U{oaPwn-<4pgO!=;q4mzIvlC1g>LZ5pcAz2_m-vR|VZo92? zYbSo8wrqe-3Bc0)r{4SUJsA3{dZF4IzXrp1Oa~Vi@y{RVHisB1bd~*apF1UI%qZXX z4XMi?q-IK*qR8>cyo+u{m8pGd0oZgB5}XZ`$E2DP>oqr(5*no7TBQbq4sVSfoKI_l z{8O~{K6&)xt>LEB4$JrzD)c$*LFcKap_c2!SI!S-6fl~2X}F2{8oPc9?WRGweWQ_< zY@;Qan-5s~%=?JbWa998EO|6}yq58j%Kn$28rNWS%2C(Ob+JUSE%9@8g$ZQQS4pKj z_&o@r#&;F1fKuUO$nySdK!-|7HVTsv+=faoLCKVSA=F=v7-$UcbiZ(R&>n&#U!s1n z#a_gGgDe2(L+%13MgjXO2oz4A9k@Yk;c{?`Oq@6bBlKNkiGY|-RT>#38z6_r*xaNT z`bV56)i*o(Y)m^n{|@ch5zes>wYNp_PR#}*2#Y#?e3Wo=ULKxQfyN|CI4HU)G+F#Q z#={A25N4$2%U-lBevcJS|0ym}Kuj2&dF9P3OsKSR+=%OgfWxSGM`3hyotZDxzff6= z5Fa=Lmp8K?KgTHW=)^waanuH6+FFNnj~je~{n+QF0`aYc4M9$9IOZ74?Gf)B zP77Y2O=%UuWF$5O{y)Xa*=m7kOF!%DC6?%P9RcfKk5#v?dXn*=3$kVhc`dTOeR$X@ zGG8-W|J`+VkrR)kr0{V#*@y9;0B8wSY9fDu!Zc{ZD^`+bq#N!z_j*$8H($g3`K=Gw zffD+|rc9%%{=tm1(+6Two)2veK~`l|oT&$9g~LX8pEdUpLf%3hS7bQ)!wxFK8zCyp zfHw>f>@nk(x^TgKZe@skqhQvi-^`;~`zXeI0so=*M{SK0v6gYa$#ksSWmkjR>Y3Pb zM!QPwwBy9#{S!Xdjz%HBg5~zdT|;5ak0Zp6VVf)#U(`L z$zsO%Hv$hu4c22svH28m0s^Gf;H=(Mp^g3^VLc~X$*oLLY&X1i1(|_hLXiIeWdTT` zNbnUD?7FS}*7jA@^RCTxdo8stMHBoo*IN2+G*8r(&2(wY-nn}Gf;8zF^W$mPzfbCMDH|wEBJ&w z%^o#y<;Ycw=?8@K&~}^i57F^d8YbJ}(raWNW0QL7O~Xvy33?=Q6(9ag?8d3aYoA7u zu3BzBiWRHO*JBNmC>_F2FSc+{_{3kHt~Cx0rTr!~8jRhw;9RApiPRpwvz!d7%)>L) zHQ0==A&uu1i07+kAD|*M%O%ST!R9!1lovz1wno~ZJ8ihDFajL*q+QNyH?LF^?Y>}# z?x(-9^JE9UeA;6SAN_%k)?W4P@*0 z0M-}$MnL@qp2M7f%4Mla)x(`RUb;^ztDeB1tlvre|4`ztCVhfqpAcS@^bME7}1;z4KN=UTo{kBG?0RF9b7A*GzE0{Q{hI1pc2BJf`J<#2$bHY#(qm( zKm+rcOBY}rjqoBgsIT+r^C8Jb=9x+W5+A4Wro2sqktWU5UIst05UR3t^=!owt~%Lg z)MHKSjf;zmMZSEYTJ>Un@rSGlfW822UUeh`1mR$J`bGp-DyOm1&Pi3|uJAV&4HTOS zi0{q27Zhf92(X6CBT}pD)p&k16r1(k<>Q$c1$!=>o-)r=EWGw2=o%Uxte<}9>ZF~9 zeBt*stchjXx^EAoWq;hVzM+2DT6lhZCK_5F7}~Hrmp+%{?Vo7|$69cw(kW-@85n@0 z4=BpiViY$=@1ilsF)F7KMb)^qHO|FC??+BLO|i3-&oJCnW=Xv=)JlUr%4e;&nPr)N z7R&f=VTu)m6H&mGPHkv(M2+_h0-PDO50qLF0KonH3vN1#6bEiJe)3=bLHd*YRTvlo zf`T87v$$L`yyU~{r`KpT7M}4~zB%oW2hv4?=oWVZF=|-7OVK6I0R2C&4JZArwEsAG zS-GdU!Opt}4mP3J4yTo02JiY_y}!Ge8f`{^mlq1pLv&5WUlnFUFaw<(uAx$!^!_v$ zbRNm=XNE*RcWIAJ)$h5J)dw_xaWR?UC}*k9Mn^db7OF)K#~quluiIn;DBR!WUV4XS1d+74Hv`V7O6Hw~ZX}+l+2?T-ruu zx@9Q$?UW7$$(qXPI{KTU^X(-?1^Jn|airh~Ez;r&X2Bq0>bu29NgR_9T1=vfXC<|B zVQrg9cs}mJKGusB7@b7%l#CPfh#zY)jH%iRYKa5qrp2R74oml*PEKMPk)yG`H)gkl zF|;^o9MnI5hd+3A-1z{Pa9CAu-_F=@Ncq!;r?X)7#)BH-cjNlix_i5J==SM%_v{9V zR=WZWwG@@)+Tg0z`g3R=)TkQ&F^)vYqaTCALcvO*j!s@N#_guJ;$HM)tSzGl1nb?P zQlS>fYx-f?^2{ST*i+}VK~y{a%UiIF#b<5Rh_CP?euFHKmm+u2g?FC z-XB+iCDa_vH^;3?MOKT?>q|&mRfD$a#W!s~v@fJDIyl0*>VOS&1gYV}cm`94+;l8M zZ=CSoaB-3(l^gp!&vZZqcJBDT;-&k8OORY1w{Y*Kl6$wGyC*128?+TT(l`c_5wJMv zK#3}pQfh+B;e7&bbYQuqq}gt7-a3rj+~`}ia3(kF5Bv@Dd;F5}3se`gY9RD_JWdYW zkJ&VKbZPY_u$b}rfNQ#xjMro=bDWG0V|dPkx5`jC!zDyFzC`-fUr(Mxbx)?tcwOf0 zH4!~>vTCedHt7+n-3R#p@MS5!CG1I55LQ2N2ySG#wn1yMSEooE+qZ*U#k7@#zE?i4^ zb>EV0*N@Pv;>v*JuOw!L9!TH15)H4nN?>=(oTZnd7Fn?l)_ehe* zH&maalDj!D7F_AqmXe>SjAaJ&Xzg!w{qKk}6sJ)5(6ofbq5H-X$YSSfcE&92Zul|V zTP@6CmN^V&LAImtn*0s5ImO@+j-m~w^PfTX0j-<%e$0UV*S??z75c829=P86z(D*u z#RVe?(QKM1ZO|LuU&@D5EZC98Ygo49d}>4a_(?ujC`si7PH7U=#L0dVg}#KD;{+Hf zILhrV5@5YN(ZID6)SWYJMNCSXELS)`KM#(PC0$U+(Z~5FHCmOLqkFab#q48iJl|oe z(jNL>GwNb4%}PW2p0=7JNc2Gs>ztGS4*KN{6r;Qt@nbupOuT8RNc_^tkK4Y-fY(2{ z7tM>ump{IDlq}%^Z*K*H&%mK}1S?_mN;9u~&J!t`S6u>B(%hpN(_w9|`+KF#?kXO> zksag<#)j^LYE$8S8qj>pu}uhaj`AAvnzl$NC?i+>%C*I!fACj!h3P~^N~|hjv3sQF z;n#CAn}zyU`Uk9tZ4X{4Mwj2E5B4^p`Icw=@;#WgVv4Z7<$dtH@vs7>Bv`lN{{%%u z26If@;%PVEPVcC^LPHh-d4uGLDwEL$yt%F1JxxQg+a^LnVEeT%P~x>0D8lial5z~k z$pS4#vn5IpR1<)`kXV3Q#;*jt!kvF9sMz=M*M7N8LKKQRc2vRcy$UsL$;6^yjNrUB zn&SY!#$AnwzaG~zvrl6cRi1Ij}^%z^?QemEd zm*^5uB%e3xoGMAXn)|L(7oX^~bMD0Bw8YK7IrUz%pGi(d=c8Oq+hzVc8hTQH}5{`7wc!9}qk{3Ge>!EXCNnRDR z;coM_d@K?3VL1F#V<&e_Lw7d_K2xO&(!6Jm`4~H1M+`mtLr_NtcEFxI2`2JXKT zv0@|Lw3RQOOlEyBEeved$w=IV#j0iHiL)yw6?px;_5mcC&N@1~C zj=7cOk=91DrZo`)yrOC7@?j0~tvI%bMq16BR=$lL9sk8Tnwr1>HWVAXjjN86eAN;D z)XTa~yupBD_xq3e6E`tQVS&#@0kCr?Z>Sf=o#Qb zVzAq{*G(R+QSuws{P|uTCc?j0>25CZ4<5#Jc&y=jWI6?S?!C}mCrXSNEHq&OJuI1p zaGFr7cO4u3gxGSZW@$~rVG{c26Y*k3Kx~560n&7V3OyKqf)ln{X`dA7V1JY}BRkry zJVN?cBKdu_6DJ#dh zAAws|IlQOT9No>|9}M$!DwA0Dj4Y;--LYC~3R4}Q!Q=Hw=k**14P_&Tt zgro*}yuQ+J8yB#u1|r14c9W)OXIE=5-rW?AAj~*pkB2r&A1YX&j=}tavZOqK4$x&y zseB6n1ZVe8wKGeP(85@s*mo+KD=OiE8uB$W2QG<<=bASA|3zIoPE4O^S~?Abg~?O65f)`I%?Q3pdoL;Q=$dCmgVlbs+WboSP0K+&&w zr@<9LAYl^`|0ig@eK_>w4p;i<)MMZMO-)&pi+Gyny`M@G#f~Hu@^K(2I^&s#uT-2h zWl!zs&kZ#O*_F;Hs9(VHl|UwH0!L`#E0^aNFw>CeT4EWAR6)hCFy;rez~l69=@F}9 z#0vP41Qx0~o%o5$yd;{#2t?0bIIVQWyLoADsx+B#X$mlqK^B=!`)d&Vw69f!=yq_lozb z7|_~9kvN8V?Dm2qNbQV?`mCJq--E{X zBNPHpdLq40dUH!ZvizLynnlhB*(bbxJ-45BJ2Os(34X8v3_A-sm+z|+|2>{0mhivH ze+qBzj|2Y!r#nq4C$?UlNQh;*Gm86_R+a%3WZuJ$FY(5@Xw+pwMjN@%W05VE)Yzc zH_jJN+?b&Sg48#Dr~2HTE`!EC5I0sYzBLB2&T$K@S%_T_eTv+$U4>RmS4(G&PaHFp zN;rs$eUuYn=pQq=N%ricnoXWQUOhrstsaq9BbJ15aDSIf^=2Cki^}II1wd;X*P0^2 z7Lv-0QP|Wx3_jT6$#gknAV6ZK2HvO9`QJh{OY1o1TLspy|F$0oy!)7jGnR)=!!+=Z zzRB!K<)1%Jd?vm# za}TX?#6BFvs9*{P2(x>8G=b(Dj~Kilcn`X&fLkjwZAwLD{DH%*Xc^Hasy~l}u9k;Z zs!$>rJRN`AH_h9;xtn=F8)(b4q|D_o;fpxq@J3gxO~v1rRI{4=0H_y90~RR zN76M1*HT`rK!JXJDmx z%lkV{{~rhG!;`HZg)X|TfStCxprHHT+uJ4-0ZPON3?A<)bXG!T1KcszMxxrvx~lz_ z^WqYO{^Ns#gN^Zf;FLC8A=A0V*jO^)7MWXPZZ9P0EQKr$f{+x{3jIYD7o5z+FnS)b zTH24W{!K?y)8VjpW=B0eJ#}NnlZljceolflV<2x#B;5-H#N?XhPcg~?zv(kSk*z!3 z7R(>3`N?zR9$%9lC0!2zAy(lD2=H#En{_HFR%r9TlZ0kBXdrlykR}wbvq}HXbzjsNLhV3Q;NxrMd=qt z?sWSUNxwp_CsotA4K;^cWVDG^1^d*c5*(Rj6fkrAC=HfauGj@|iifq?FV?(}S12m_ zTu|3a+LpeBXd9ulpZ`&9SJcSz;s7cD(;r3F-=6BbLziF&XH*Sd32wqzkXV$Fkr5jk zJ3g*t+hJ#Wa%%0hGdA{LYe=TpU1+|r*i3RjH_WKW?y-cd=TTi%H6xC><9yUk>H_dU z`}Q1V_@`R18$Q2Gtch%p2sD5dk`B}5<@LpXV7LMenEs1DnS(3?)w!YoCVENYm;_O1 zPgGqgc87)d4z+qNFd|0_XZTjH8mLs{UR_z~^$e&i(|#a#AyRW_Z^0n+c7w@6fR*qP zft8nzpZ?r*IVk~|D*&nC0$+A>yZ8u3vh49VU>@D_o`jC!>50CHkViR1ICdfpYC4Tn zG>YO+O@v^%qM~1XSh0+IWleLIGt~C$UqaoIVy&O6T>4Yok*VLOBIfxVgiV?E}smO$IwVJGFTk$Rm%l`d>}_ zSF9j&>A*32D`qbtvZ14;+j96=wD(oR!`qus z7bPiBQgX>~LhfAfL0#}WXi?dKT>Rqv{Qz|YWhwzIkFOZ1(w|k;bI><}sAmx707=3( z%F<=w6mqAiWc_J_f_q5>PxkqA;U?0mFQtCI&TlcTUg?-=0!KvAyaMB~*)745R z7+?8>*b3%E=>jA5gG^kJ8_PM|8^i%o8oOrn>8YI$-qMe01&dsSa^%5O21QSkDC}Aq z)@yLEF52QoONpV>QGpC?f03!D46gLnml>6n*#b70XuZtsV7mkb1&f|YSzvu`OUl)2 z{PimT0*iJ4*dN{SpIx;~4tXm$;JgHGIu27vTZ9t^AR>*Ur}Q|gFB*frv2IEBlw=7l zr){m-1LYcYBWW$8Fz78(wD@xIz1)dkoq07b!& zryr@z#BDZSTO{$pnxJtNS&AVDkQ z(4hv73vrZk_KEvKL))5dB*tS;_5c+;Y{8}`6&$h)WCtO6W@hMBme?WB$O-Tm3JHP! z9_{@_YtttI%43rj#{g)K#DjtVOya0u8e zi7&zmpLL5|`@bl!V66RPvH1ZGOyYbcm`S^ggq87;_lg25O;Rrd`7 zZj`pr5#l^lPjZ>j!j3gxr+L|~dAa30&lN)3cFdDSiIpx2Tf(5{Z6+@*JZhl5*5tXx zi#$c91a%i%U)$+2poF)==Z!{p>))v+=kUgYFb&iaAKm`H@8@L3cU7!Kl z@Ty%b_~x@^@~{rBSnwwuFDBYsL?PZ0lPP6S5a;CLQmYbdGjd8 z{%dZE#8QmKxjHRGtk16avL>o!M)CSZ zlNIOjHmzXroEPQ!CC2k@g$|({3XOCTRM3=^sg&;*DUvg>zY--Ez+~pEmgma1uQFEc za<%YDqE!f`Jn%vGAY%K+`Z;=dAK(yq5a-SJYiE7xNm8wM^=1&C4*FCsB;hPb#Q!77 zPoiY|;K16=ZB8U6D4cpK)H6cB^jzDms8#6K0lVNU3?Kar6@*$~4(N!CI=w%#qyq|J zGAIc^KX820ZSD4Z3zgdI@&uliYYmsSv;8}AEBsUpI0J!&M_E}JV9%jR-~YMo+)g8z zrFcMgK<0;V>+CeDUbX-2sA0(N9?@Glk#xSO?Rr#v4>_cju2l}p3IG!d-|$tXeVH*L zCf0hV^Kt73H*dOzVkkz5KC#od<&2E;&O^U9^FyX9?z-BgR6G^`WUe2W&YVe9bLA&r z#DjcAss$L&aU!F(_G|Saz6KzKueMD>E-Y_tZGrTs7F5sH?eF}z%q0ubB5+)!y9{h1 z*&LX#JNyTdfW-l*e}aCG?~EAo2)E;wa>=pAHV^%_MEh+hvGunF-4tTF(Q5kvT1AiH zDNk)q9xoXHFhrwYzKA!elqo=^U|Rd_pH+KyL!Qpg3^t@GI|49D-;-s6lDC?UaM~Cr zf$jgy>VJI8TOo@AZ3IVx^)SDXukm>#asD#d)6SBo?2cx{L4oN@Vscd8&ahdJQ_pKw z4>AOWi4*|npTwqvvtq+VhDS?C@#LW%7=DLJtBUByDzbRmvFcE^6LZ6i_1PQ!s$Y&Yb!rd!HC=-1t$B$lTWvDaUWwUA z+dGWf9;K=HrK6U!b913(KpN9@j0}#Hk7o>WFt(ZCV)L!l;-N=tL#h|(Xj)waW#s1D z`u-Zmbi^fG0rjpvO}SJrULJ88Q{8KhISavb+h?`uU}BdtO>rF@?E_G9&%%rR6R}M; zO+z5lf$u<2wbOCcNKV!X1l>lJqE^r?@^Pm^;Yk_bJBQXk`y8#gI$!0 zq3B{PUesk#+e`AeButqrc_k1?b}B)MlRkWW*Lyw`<3R%yg+Y%N~UtfV92L#hu=UdEZLd_4m-=TFVG*B>~4(QBCP|_xwD%2IdITa~N z=!^ad-m_-y0AXxmu51@Gt%n2yN;8pP%?_wkR(At60*h({fTE{%`P4Li z@sxL9y?$#NJs_sP0DDcoccE=snusncW4w!c&`2)a+;0t5&TVH{&-hil2i_7|cpA+1 zAVRL3p-xf^(l$3C&9Mrp}8X%nx&rQ^~#n>i&_N^y$^S|};>0P+P4 z3N}w)8nqMoPe;+mSttf+<@|Sx263h~?3ibt*n85xLIe?1(AS5|f?8I;2-CIGw-S~c z=`_D9Sqlkm(7t-DD(Td>nZVE1jjqRh8NMyP>C}}m{LTOI-{C<3eyWZVq4jl~94UtD zl4|CayS`)$Q#SrxXNO>lLOvqELqWu%ql-&2l%p;B38FJ;tx}0H2El)ymB6x60NQX@ z#c63Y})T?C(@4x(l_r%EkROh%IrM$_zdt<1a;0IdJ60? zxQWsJ`*rZaUN2=A@^blD$vVQ$1<)#N8h^b$9s^M%Q1DR@z+DOAqX1isDKmgLP^08s ziy;-J6UR}nVs;l?3oNX-Qoj>hr)=;q7g73m1^v%<71rof$;U00`mi6WUB4d2AOFGp z&?9A?@ZstB*xFKJXU8|)m1FUHB)ezr<4#!AfN9~hs41Ys6YBN@HIxQFCp5m7yL(#a zi0BMrrSN8cpuX6%!1g)A6TyuEEYopHN@>V#it!zMnX@-1R!oU##j9eYw; zs#Sdn!)_BZ=iZvrV-CTtZEBK!4KU|&&E9w$$Ab=a&p(kz3elW+!12W#G`LXTg7B2i!r3@#`EBJ%$$`)9WhRegzK}`s? z78hB6a7wCr>-?pKvz9FL)B~qdWbe819RK{>a=c?4U;umu_|4u%&Z649Npab}a+ZAt zsqG~Qf8T1>fokM&YarUb`KgfX1)=FpiH|Xbdwgtc>M24!0&H=!GCO-dIr{s9)Y5?K zto027av`CKaVgX&jmv|Bi0`&3{i-}Ijg2$|F${S`t17|jEp|YH?yfkhoVMFf*c|~y zu-7nkQT>MsNdGtNdgB%11h&H$SJt$WN%RV=@rL+vu>YZ8wJ;)8?PhHDLkJ)^GDrXI zTwPnErHh~ZDaiqWDH5$IibL?w3E;)6c*nxw-#~OE{~yl+`76|jJ25Bm$1LHc4(`lR3V(xk)jAbs(0My{Au3tc)Z=F#mmtR|k#o z(C+Flx!@Rz=@QS&+RpA{+b+gxCe6h>- ze_luCw!#6_f4Mg|ZrRF9DTxh4d~Sjdtn@Rx2M!=_?PG_Km5BU2`t`*JjirOjr|3X@RCe8_0Zfs zWZMo8bQHVTXoy4j=nspeQ^Mt+fvjcSgz$cHoA{T-i2#xA&PHPFAS@Gab`JO^XT9(# zZ1~4`oqA}KrVb91dm#|=9hKni5fKp-{O4c>MHKu^2z8MG=#kC8L;MO< zqK6Ot@wJ!cgta^std|u(Ei^h}Rd1`f2wYh$?A5FV7M68OCuR|YQ5WKubndMoaYNAo z<5E1?Bmc^QT^x#u!{YFvC605I$g?7mX* zzryB(VEQta(QSJityg(_Gj9xZWZ>>4*fl&2xfv1i{O9SL26`@#K%r1OEsZA0=(Gh8 z9biOoIRZFEBCq#mEh4z*Yr!Wu4K}fSB?=K<%xHP@Jtw#pMLWfW^;I= z3^~A^blgF7(TLSd(hI-a_XSL}+v62u?H1+BKwOCk5*jx2ui_@uoD2l&N%xFRCGM+C^bS*UqV9$4XsvK zxjrp&B4kLDaJVbk?GT~H|HJ2vi*B;JNT?AQTI7J31|mMd`HJN&YAO>TZ3)zs`hr}B zO?S>B7=nNC3I5u-&uJR@dFhUH6f4E7RXlCTV=t?r-r9!S6Y3EFgHprT2WX3zxV^3;U4gunSSZHpb2_Inp3hFB+1$1^*38y5GhKRkE= zI4b4J5cC%R!4wycykH9#IP+CJf6-PLY~{gO+Xgl2IBh1<@A|N7p1PP>R0$-x68Cri3V%P0xsapNbjELMV zNfKa!=dS!0HDJsh-DSU)i|+#C9{?#*oC|}dp{g{3Rbw%CFnHmv9d4wloNl%fL4z#` z1(&%9&3t*oxBT=XJlYR|c!00Gx*NfKnllGZLtxHS|HH!@o%Ft=XFmBFoCjGdjZyD# zw03HMy>!?5+g_FfShixIB9j;uv_@s?$1^N9<^SsFsL=ZPkG#(vBrCZ82Rdi64x_Fu z;u{QU?eACut8y^G!p3Q`q>E*hnUtPmcsPSbx2-Ko(e-W|B2HLPkO}nl;z4hjRg-tG zTaZ?8OWRZm!IPG{uBO9fAlQe85Oow1SfkH)%UXz`t*@__dMxbi(JG00>GHs?`_7+X z+wZ-27Osb2`lS!kD?6uYt2baBIAjxj51n5;rt4C9om!`R@lFP;ytJ)cS$ZY3-6AM+ z^Pk`J;}hr7zFiz1er{U>+mRXfUGM^1H!t6vufLttPXh3d?nG()qJ?O}nf94_g5S{d zum)^k_*uqU4)3mPG^@C(;md)jpFd}!x3?E;hlY(`U#yrJtKhD>L0=pa5oopJ#v50V zR6LaFneWTU7_vQNT3z}#tG1=3rM|xJv%ALBcXOnpZ!1~j-(~zsY5Kq2-_KS1yZQP) z$G_djOPbEv;4Gc!*nR zi<%nMJUnmUrEs~1pbZKOQ7qi3I9NDtHwfFarI_ug_6p|B`TkGU4XPdjbN9%VTCHs& z5tcSs?dOHnw7VEta92&0s$`2h;9~_kL5=nDV54CZc5y{7J#C8sTWQIa1JODB%|;Hi+)>9 zkYAFHcQp5!LK!t_k}u9F(_ad-|6T#)QQDAb5@3F-N^NT(FAvy)iD#jK3xL%f+S|b1 z&rPL^(|P`!4C^syq&P+^S7y#fd*NTiELpn(kU0eA2`U!4HEgLqPiBCoXevX;tn-Kb zR#)(@difMq&0&ggJQz81(Oj5Lhb&C@{)vTP*Qs@fzKVc~E{|}LRQQP(f=S_f+s&}0 zqA%`!B=~8;8fVU?tVxF<^__1HZxyz2EVL(j;t}|p$1FeycYqX*Cr+CU6b@c9+X*ZT zT7TGa6CVlXhbTbvL#YmiCrEcyh%sowVEOL$I=E%2TnXj?%lgRIGoZNA`#IMg?x5xw zskGbm+`Y+n_F5KSM?)^Q)Y}^j`@R-&?$3_&$pw)>>_bSBD3BNxp6`F~Q#Z;``L)R`H z>tG{Rzd4W2eJ@>~Ua@~t(mCNv+v8e9MU%3@)W{&WWSDCpRQ27Hx}GWc^wO44`&@XD zJsu&RZ5eSj(;lM)XOkMbR$ii$ifF712y|V5lQ7J54 z#SrVgSAa_k0<9NOK>66p^yL{2YklWCvl>0v2dIlorO&_q@Q~bM%(%JKcloy}rhPBO zBIbnYXldzwtm{whRxT0P@2A*NK|_AUyB>M6wAh!8m52&k7lW#O3BL?#tyS>hpNHpUPMFB2ECWLAp@vLoXPb z?`!zd<*Pn#5ddLT;;Dhl8QpK{sg*&L^rcq>xZIqa)3Y;BD!}ys9(19X$PT@9-%gvY zoqF!h&d;kWDpY@@QNf(%CTs(G{C}r0NH)UwELs)}pW8xBzzP=zm+>)pxw)agBe`2)X<-&#C1E-&#h+bqwF=;@3P=maDp2SX+Imz(o~`lVJ7EgJsv-Uq-}UMSl0+`!0~DhneUM_ZA$1pbB+5?HG{Ux$n>ou?977WW4@QbQ zl!m1}$5rvkup?1qBfBdpYv(6}S_vW~FYEt|iZV^0g?wbw1-?{fxh_zdq&V0#vHQh(M^w(5Z|K=v6S+xgF#=nv6B?Ol101*k+Ncwvz*b_4~(O&9Toz} z{2AHCdV0O}RGKu7nkc`=y^3j?8i*;OH3!A>yU%<6DH+o-VbR&!*c<@}eT@A(nqd!+ z(ZGd3uK0=XfS<#;HRg!jk*y?sNm3Sa$?(Mk6UUEiWOBQMg7OKdLwoHN-zQ$Slx?(L z{B@!Q{v<%#^<#AlBdAoHA+>Gw3?%aay8`3EuHcI&me$Q8)uYU9WyGrWZMLclGj%fq zd)|k6rvSIv^?h5T_9O2mJ@tG%{G6l_Z|BG!jkdrY8cuB-Tl%k}#WIcUo;pg;gGpIC z5CD$b)M0#wl>BI8tT7Xkl!tm~=^XJceT^QetE0pB;fm$~D5P6}1@peMylhn@++iFw z4An{rNM>>dz^;`QybY&fI@pOn-JQE=PITq}$-~VSO`88N+w`lr*x&M`0={eV+-PCF zR32zp+cRS;``}nSNbra6+2ZAEtAASo+n8^6AS(r68K5Zz{+3l$ReHe0L;#a_H||n~ zUirWCD;b?3{khdm;>7|we+u9z%R3TbB7{XydngpI3wiQ#C&o4 zd62)>cBmmThUq6CS(R+Xh7#mvsA*b4H+C+srBES#US+h|`c?#;RkH4Us|r!T<^G&a zBk-?Twu`}FUg=SL2#OlD9YvwVyJ$=eTKX(I%v<-aGtgG-hTJnyyka3A3)x`wyf>T{ z(j#X?#VAxJ;p_%zRAhqMg`s+%lgwgeen&#KROIaeQE>a}D`?tD1w9=B-rUgv5>XMM zeW|iPDMB>|+4ql(j6~yoI1rNJxdX41+Fwwdk4k{99$eO}>aN#J@g3kh0PeIfQDscT zzLGJHpK~%joZj@Y)PI@t(uJ2tbBvrZh?;-IOHd+H$vKE^pATn&Kca(~8I^hpukwIq z-FF$~eYTR{^QHSy`Tdw;qRY75)#DccjsyDxumJ_(x9zJyItG-Wzk?7`-th>1eiw}a z|BApEavJoB`jQL*2vqYNf|xmAKPt}GFX}+vf1}=PWv?0qpc42Ni*(><9QIM;8n)pD zU%;fyb!~z=9wwD zH?E1vcHN+bD+6cO@$bkMDhqHP8@0}wzWme4nri{p=+W#c`Kwl43 zveq)|lvc*R8c=a7?-LmE+=Z@^|rl?N~LKly?=ImuYcJ`OL+fQzqQz6YeE3%!(e z_jN+Ul7bi2IJ=@=At7eK89hU>-#$@)Dpfl zEPgb(jEI?Ehhi9#+5(x}a{^{)u9;j?(;|ldj$V#M3X7G0{6>ft9&q1B#%lzmW3@Ve z{2gIX;X)RkQwXz^OR0A0mLENWsWRDIbfy!i8(NOh2`VJ}LYp|_L0y-8e;I*Ii3>qK zbQdo29K=8QpD*kIwXWU6_KOA+kdhp>1;xRiLfAvz8u@0i?PyBIfY>dG8p>V8Q^tg% zYXYyY{g(glME(QAG*w!8@ATF!IQ@Q9_I5W{>rjpCZ2 z(qkb0h+?>@zNWs0L}Y!E1c&wT_RL;{F_vz5;3g$DbUrJf`UxU$-=p;;bf^?^gs&pDg_ z?3ZB+2W8&ie38`&6G&+sJE<}*!kyX^%~_J@FJAQ5iNUmg6giYwJ~&74C5%e3bo;=f z{!xD3YpvhxqH8K|xN312m(^>>O*Z{VXqg4jkTpK~V!Qbc0$S*jhzG$BXptTZjL$_; zkg9*NJp3eM99;bt8aucO*owoW9Ku@pEF)b7$|M|zygPx9I>2EUZ5n^H)9k3u=vepH zh?xW|NO?mvV+`^7xsYN7gGJf@Jmo4vaYbB0ZHxtHV$BUs>Del(s<7(lVzxcx79yY9 zPacdFJi*pOY~mwTfL$2!SMkzWuloy=R)esf24H{E+{{y@Qo6cl__bqNrOHeb z1mJQwh5*Uv4HPzf8Qn?rXUBZf4IlYHz~&jzj4A;ju(k7wE%)K9=;;SlXjtFwc@RYc z?k=@AoCl#c!AbiF`zNVy?;T2yvUA9K3U)TAros`%+pS2_8QDH|bSV~RNSXegkVz^AFvK{L3kOHEHjP&)h00?6C z0_^X7e28>2)?aU%!5j}f!Kgobrnf1`d+7aX=;~7WWM`Q|sdu^D^GUR#1AMi%j*z-Y zToLL(9vJYy$8So!&cfd~7|?J>@xfrg&4^^89%w6ySTl!sg@M5P)~YgE0Em_wSmZeV z-MBo1xDPfKA~EfxWQ4eWIa9ZfxhlUHpIrPuNYT;RpbxaoJUb9PbWn-V@(gs?3R@K{ z+N%GmYiYR$R#5*vDXxi^la-O=k2@`;xWL;#|YB0>2vcRFy zCB@5~Xl}JZI?){p%=e&@vEr+qA~IF8YsU~47e$UWug5sIqIAh&`pd_jignjxH0N=H z{RlAph`lT%dp<4L%y7WQF46?N4Y2syAfm_#!|Cg==zH>^En-^E6lo6a0SVKh$D?ikQ&*g8tiL1@z!3}<-s&n5o!0cBEK@X$~!U5D#eFL zLKEfRN+S!N3>TWiNE(hOiqg4qHppFc`wID2`#rjQ09VXln%57XV zmN6)G^sm+ex4fgu*$ym^OH=iy3$VYG#4x{58igL~)Kf1enHuMPHh`&Nidgx7$EF!B z$cPqy(|IcAo4$Lrp(hoTbrP}1lJzWX2@c6O%D=E~!8w!fk7vZ@hd=DN8uqFhpFL-+1#O{hfpC^}+%&h5B zZw8AgvSF_3`S3SL&(`0TTH=ha&O!;3K~@w&!DSBMjbJg<^^nySRX@nljsuS^4wr?(NmMaC%{F zZSDWfML>v|Y3={a8Y0Ls<0VRgPl`2n7Em7bRXI2~0J{8F=Fjr?05t_rHUMY9_t8iV zEqVebgP{E{!zqD^VXDZtQ^z3S(lh(>rCD-G3W6#j!IF_W0s4<$d37Vel6( zuf++?7PpFxwJb3cffl6q8T3&PXJ#vIl!S>=>~!~?BW#&uZmVstZj{Z0^K!VuyFAG= zG98D4>x2j+nY93J-H{sNJZibaK^NvB$7NyR$f_KuXa8OO>lNQa1VrxKgEss>WeWgq zpYMl6j0_E5?zh48x|z5Pr(Ni0)M@}0;lRkU>uL3TboUD6-^Qs-!Vgx4J6#_(P=~ri zeAso)Fxv!kajXM4UCaQQ-@Y{Gg09`N@+T@4x}oJ_`J zPdU{;Zy{IBw$-W?eRW%2o3G{0`v|sm(YC?##9(d0v_AdyDU& zPr*Ltf4-6Lokf5i_{O{L+}aT&4T8bFDT8+A6J7__U*c~ZH2c7Us`gwwUzH)XMn?y> z8^+QFd;$Y!sDLQnzZSXN7_;`)PMo4fqy)wU=#n)=9)de1eWHCC4B9kV=PgH{JbK;< z?jp)0kiZ2xWbosI8Q@>2T=~^{)~Oes^2VK|d0%wVO=H*dm+!^T*}7>(ImG1KkGOQ! z0ZmXBB=D`&qdZ`MaS1(ei4sc~g{*=``kt8ys3xKf5P#{0aeKy@?d2$4ZGGhTKZPRk zVv&LI30ara0LIA&%L`m4Q0mB2BnOk4G)!t6L)xU>ayuP%XoQIY+}{$;`}>#FoxHs>PlVJb z$>(&aW)M@n*j52f3U-bLuo#eEH(hJQAyAUt-(LM>uXpetU;IIQuq%J6JZw1fZ&Woe zYKpIK;>yVv#UCxdh(Xq8VL#}V5nP%_qTC6?zZ#9CO2>LJj z1)`r==icV473h%vlo{aH`gkk_%wv8QzM$0}pxaQ($Z0`@-elW$JNZR#Tez85+a|fZ z^khU7L2jl0_!P&{w^97g0Adm?ybl;6R8&@~1!Jc6+S8R{XK4lbs5v7>qGT#}tpl}L zGlawV4SxptSj+3HG_xXx-uq@{VKi(n4e!63lnGqdjgL(I3MqW4zky9Dh(C~VW9OK> z3x2<+s`OzUh4C904<~_X7KDHrW^>MN%dzAd0VZLjl*2O8A!4RU!G{jwlr9X+K0mpN zFdymzR9qTaoLNdjazt(_~&@%~S%e8}n55?;K4i44Jr+;m@2+_3} zaFBj~N>?jF|7i-A9Tnf^fcxLbQgA)CMz2X)B~M+Iwikv8M$_)vno+TO5YKQX;KqX+ zjF(|y8%68XhmcA_Osu*V$5=TDJ6f3@8{3Q^*5g!oEf>q!Gx!|e*~~U`)j3%`@z93e z^SJhp^lJTy`Ipc#9$%>uALAlh631PMHFjuJ+tn zu59Ys@OMJeZu11SjtVzQM>qmG%I&Lb%gfvS?S{INltyq+;3@kL?Vp7Uv1;}!KjB8U zWjYIf?Y*?t<{vOfeuX#B;X?K1gXzf|b@XYqt$51x=Af+l(wR&tYwUM3_g_T@3ezaf z$QI|na!}sOs*uloJ#DlHChh(a^H;C9z%35=LxS`2e7$S(_l8CL z_qsGDq}}`aQT&L{RAiRTaP(g>D(arrXG2q6!GUMrEC)x0->WB9on<+nB8YY8(|i(o z(D^G@l$B^GU_b3%0)Md#Uz_iGp3k}byY$R(y@|$5Gp~^#91^yxG;qQj9Ysp|bA-Dq znAaxpjve&S5@j^=mbB47ws9?aucT93?YOf*9c|P*-PtKpF9X)6D^)I;cYUW$v=Y)F z%C@Foj5b9mk!M07$PhLG(G@J{cs~o|#Qou(b#x9x;pPoe!%HLbb#;|2cn1kb${IbA z(^U&4>GX{S!4y=7Pfh6P=s@uamKwlT?71$x?DjD-FEv)K4)()2F96J02~^=lZ~ohi zJ(wp7RB`tqo<4yRx#_>DvZ$-we{suAZBiV%{{KpEd4k?LR zL?Cxo{FmirC@rQG^fBA42H{*|GNBQ0fCg|weCqbVB380e}NR#yk$*4sVe z1#3HTd3o$zITU~Ezx0ZrW2=R*SBa+F;TCOC|F$RE1N_>y8^=&A?AgIsjfiJE zk}sVpWt8uf3lzKJ%yYRGYtp@RB}ejR`xk+uw%yUmc&`6)0%=eouoeBEHCEsO=;=UH z4pa~(hjE;rV|4!EAZuA@{BFywm<<1m9c=vP%cUDt@f4UpV%iOCFA8XRS1f($nHV_+ z^h15%aDK}}sQ>+?hV*1qikM z#7*m%YiZrOGyx!CaP0@;0aJL{vvzEI(xYgpnfB{eitaL7mfO#x^M#wu*vNv`vhE=Os%=td%0^Y>v1iPh^SQ zrBFrESm4|W9P-D{^(%4dsSw#2#i~RQbWk00KJxX6{>m=Cm7;atATD9}?CuWa2hM8+ zyyJ?Gaaa`fAU+xd_LR{c1=d0Dh1ZfFqa-s55NSBTxh;e8Ejejz0#a*xVJO|hP1C6C z^YL|=R2r$QG$$>iG)q12AbA~>S8d3v$#TAljCX?~SEMvTMfYtxcIg%iwcg1Xozu>0 z=!b3a*)7=Zf<7AM6d+F ziyi>P0c&1gNC8**-W2#@=<7a5UUL(my?>NXoXNW{*JKbY#}eA!oem5l>$mA{053K7CD97#8$lm?sEDlTx%WlB%r+KNZr3L(9x8OlX$QeQ@LP8|C zJ}rA;SWj5VG&RHp zqux;ddt7jguKQjqfrHAE!}^*W@wpQbbL{{>V7b2cE56H(r*8`BVO5+DiWlmEBIF?i z(lkconoi#)1_iRgr)=8nDIi#B*lKEO`hf%214^@MCj?CknVEH@m(vGbxiRb@qI1yy zou2vugu=YK%#$`;sX*LV4#r4()kW-8ACx6meil>G?0wTUgp$LMSk_^{;3_y`tqrP{ zd3^OS4++56R-QK2|2WhBkM7rmMRi#hMr zE2dtyF+YWxfc4*@4H)1Y1d(5=Np^QHUtdqxUr`kvL|%v978Vw|%^=QLxwq`f&S)pb znt|MAb=B}SQWF~)4=!lu!!x@U@Ffj+efFx=k(`U^_WtrE`lw>~Dc~4e*|pV|_oLkU z!!Xua0hFFI%lZL-fYUZf>W}O9nh$>DNo3Nu%*q#Q_^olSQ1-P=W{WZY-PQg#j4|Wj zGy&zKjf@8s(gn_B1el5yPLl^hw@E}K^!?r0^+8xQpTzutq?BB)fv@vIw z*D+4P$JkdtK8jWntTBIniFIH~sng9>DzqR6VP`Jv(Tpoq#r;nN)rJ&0nx8r(!&9up zJ{R5+Xh(c=SZPGb+oajjUJ^s#$EhXv@%4W`$cV#RFuXYNN)@<6IXOB1<-JGzqYq-Ig+~u`$PWR{ z0s|L{^*Gfg>W4PH%9)SBqS?N3^^2hmd?1$eq7erfao417(3x29ex7@fWQB*T?;NtN zWj4|HT%hXFdSze6=DU7Hw>&&D*xeC>hbdj~s!LQ6M7(@_pBweSOE%sYj{d%b`UWm>x1>HF3F(bUA}-PF zcAO%>)3XJX$JW+GTkgbM>T>SG-&d^v*q^C>%0?mu6*tNyTS%(7cc5N?JWPyI7*Q}3 z7R~x?$nKKxVVFhRD;G|CUhRzh{fo03XbnP^uy_GWKxu2T5T8Q4_FyOsuAVhji*r#Fk*wDBtQx4GbL! zu#=%n`hdI~ml7iHz_q}#cB?v1Fs>);yCMBMVBQNjnVj%2D)hjp8vfC^6?KAuYB4Dw zAM)(U;Vl<%FSa}p2Oj5;Mz`&Sbz((ux25dULN~qyv^d{cxlKK6XXya1x-@}uWzRSjO z#Kz!_2TlSYV`E|>j+-7ygkG1XIFREFoP*nsS&%;!>R(K_%Y2qgZ0zmhSY5$LX^;Qz zW~L5LKqf}uOx!aOU^ykqW1mWAL6-}7dLuK^;L-?#1u78U8CC1ANk{^da#j(ME+8^I zzVW||HqN^?_&Fzg0~|f~GVeeDqZy{o%3KA08ao?5BMJc?i<`H18zA6ck$vc2qL7++ zeY;(27)m_mC)+nN_}TJdeC_T~w{d|=p@}Q*WWniEKVlNkMDUIh2FwH61Iz=07ap}N z3Ux#=L=epfDn#{$cuP)w6^9f1q}7!X)5L+7_(K`tx2K<`wQ}4(S%=r+)=p9BjVo>Y z-(9|63#NsPVjQe&%!BB4atzTcm?Gi@0*EG5!jGcctZy}M%p~A+!AD|socU8#s&gfM zA2_Gvzt5k_-%vIkc~qQ>iiEDz#xThD;Z7skahv|JKkD*O|7EB@3XLAg`vPqX)(RF{ z+P@DG7K#&B3k3rrrYVceM1mz9jDTQz0MuS!ZSGxR%dX-v7RHKlBNOPOiU&BOVG}Uw z|GHcLkweb0XL2xU{*s~6dV)|7!2q~{+L%N>o?5)gd@wWA2*IYU9rrRIKSqTewDPkh zZET*r=O-rWbmfo5cH_?>_lNc(`gnp^w(dsWzG_sa**zr9;%jLMSL2o>5@Jt-z&&os zk+x|%9 z#zzT0PAq~@QT&W583dSByUuEVF=Ap=k==QTKe_U5q2EM$Pm{T(1&bmQK~=P|q$9Vr z!Tbu63Fl;{PXLY?AZW-n0x+H-SH!43^h{0ceRasvH19^0 zvFHi9$5$nQu!IdQfl_RX1_K2^2OHS~WQJ7vSZOmeGw3Q0OUuDsXGo-V`)1H1ZYF?T zV%xyxNCNYSIs4Q;(pPceTyzhzDFMmsmezT^0 zTz;5t)Vjt-Sf~$wywz%YXhZ`EIj4uyTF_DMV6t<7r!M=v=c3LpG^hZyOor(r{f|4) zWjDHCo+Sdb*?#?n1CA;U9_n{HvCgKh0Xkphx!VZsl(#BQeHtcYe)ecPb>~lNe<7~) zH?4e-kQX}oV{e{?V%^QKTo-}3 zns34)*{JsY0V;A3#eza&Apf zmSJQX2c5Y!mL0;k2~h>ube?`|mCc?6jHX4~K#d!;>6&e-73^#a?kuU?jJ{1#l&Doy zUo6QcG1-TuFV(=Zyn24wnp0IunnLIu(xo8Kb3tPF#Wv|x`gf7h!HHXTw=CRZ+0as5 zQL*ZPin}46a5p$oPi(mmo$s$$k-yH(&RApJ8F>aYS z3%AexL&{P9pB`!3oY0>(D3b$YbSeDUl?6urFPFyWJNT)gI4ln_#sim&vfVRB+c=-I zs!VDhJ*B9~ekx49YRw~7yNy{3vHd0ty}{x-~b42e4&`JOX8clt-hZ!^MO;_PMP$ zF|u=KLMaEF6MCiNA)gRyf8D6j$p&>h52TG%7pq%>(Ei05R=gatSJA_C1lwOh8i7&F zdo1m4ct5ELW&L(7q0~XwNdYPUJXx~@PW)ZN-CusQZuf(~?n#sA2q|AWE8UP`M7)Yt zAe(%Uwl~`!-L1Yw>Pm3cHy9QulzXq-pljspGKjoNqX>NzuVON0U*g8=uAP*>5*qhV z0rtKc2C=j(+{H~ly!Ztlf4EqR>PocPyb?)K*8jD{A9F!aj|dAV-Y?p&sR@a z*}R2fWbpzk#BcF@DGRY_8+o`vI2mz2RGg*u71H@d@e>W|TS#2QIS5AG1^tS!@9Tf7 zKd67E{Fd}BNfX8&q#Upk z^oZf^fKfC5Hx&z;^-;maPdMY!{j zvEw|;|xSceOLMWDqb|A=^6o8Kg${ZFNJNfG^`WV9$L*N zOdl4ZN_3mXYNBKkr`$(+#J|zEa?5IEK7pIu@cN$IQpLTrMtrgjvTx2a^c8oy*4x(H z8`qOrkfXzm31fJy^Z52=Tx0Y(eP$Yx$80MkEakv}qo@&Ep(sag-=lXm-lZD;RL@WR z#&J8a*9lVxY~g{l#bC#BrudAVdTGg7XNoq*5dFI-!!3sAUYJcrNS9T>iV*l&^&guU+>f)QmuPSGI4H#t%m$dt|uHWd}_^G4%IHcp3U_(jz z+sW4m_Eeoxf)`y-l`_47rTTKxizb=~Uqq6>`y5ZS6dnh3KHUo*NvfIqcj~+`>T$F+ z%MHG4`Rr_N>Skr}Bu+$XQ=Avc`3A=p+^`hN9QBv-GMbx?o15Xb)Z`Y9nJm4}MgG