From 9a4acd1ea42f3ac9f0a12187ac9d6abd356c263b Mon Sep 17 00:00:00 2001 From: Yuvraj Date: Thu, 17 Oct 2024 04:01:52 +0530 Subject: [PATCH] restructure python --- .gitignore | 1 + buf.gen.yaml | 2 +- example/main.py | 14 - idl/cloud/v1/cloud.proto | 18 - modules/cloud/v1/cloud_pb2.py | 94 +- modules/task.py | 21 - modules/workflow.py | 23 - pixi.lock | 557 ++-- pixi.toml | 2 +- pkg/gen/cloud/v1/cloud.pb.go | 823 +++--- pkg/gen/cloud/v1/cloud.swagger.json | 21 +- pkg/gen/cloud/v1/cloud_grpc.pb.go | 4 + .../cloud/v1/cloudv1connect/cloud.connect.go | 4 + pkg/gen/index.html | 2424 +---------------- {modules => pytask/cloud}/__init__.py | 0 pytask/cloud/v1/__init__.py | 0 pytask/cloud/v1/cloud_pb2.py | 160 ++ requirements.txt => pytask/requirements.txt | 0 setup.py => pytask/setup.py | 15 +- taskcli.py => pytask/taskcli.py | 80 +- pytask/validate/__init__.py | 0 pytask/validate/validate_pb2.py | 86 + pytask/validate/validate_pb2.pyi | 494 ++++ 23 files changed, 1474 insertions(+), 3369 deletions(-) delete mode 100644 modules/task.py delete mode 100644 modules/workflow.py rename {modules => pytask/cloud}/__init__.py (100%) create mode 100644 pytask/cloud/v1/__init__.py create mode 100644 pytask/cloud/v1/cloud_pb2.py rename requirements.txt => pytask/requirements.txt (100%) rename setup.py => pytask/setup.py (53%) rename taskcli.py => pytask/taskcli.py (78%) create mode 100644 pytask/validate/__init__.py create mode 100644 pytask/validate/validate_pb2.py create mode 100644 pytask/validate/validate_pb2.pyi diff --git a/.gitignore b/.gitignore index b2ecd6f..119acfb 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ *.dll *.so *.dylib +build/ # Test binary, built with `go test -c` *.test diff --git a/buf.gen.yaml b/buf.gen.yaml index 3094c30..d22d339 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -8,7 +8,7 @@ managed: - buf.build/bufbuild/protovalidate plugins: - plugin: buf.build/protocolbuffers/python:v28.2 - out: modules/ + out: pytask/ - plugin: buf.build/connectrpc/go:v1.11.1 out: pkg/gen/ opt: diff --git a/example/main.py b/example/main.py index 7088dcc..c74a734 100644 --- a/example/main.py +++ b/example/main.py @@ -41,17 +41,3 @@ def hello_world_2(a : int, b : int) -> bool: return True -@Workflow(WorkflowSpec( - name="hello_world", - description="This is a test workflow", - metadata={ - "author": "Yuvraj Singh", - "version": "1.0.0", - }, -)) -def hello_world_workflow(a : int, b : int)-> bool: - return hello_world(a=a, b=b) or hello_world(a=a, b=b) - - -if __name__ == "__main__": - hello_world() diff --git a/idl/cloud/v1/cloud.proto b/idl/cloud/v1/cloud.proto index cd053ca..f0dfff2 100644 --- a/idl/cloud/v1/cloud.proto +++ b/idl/cloud/v1/cloud.proto @@ -117,15 +117,6 @@ message Task { map env = 14; } -// Workflow represents a collection of tasks organized in a Directed Acyclic Graph (DAG). -message Workflow { - string id = 1; // Unique identifier for the workflow. - string name = 2; // Name of the workflow. - string description = 3; // Description of the workflow. - repeated Task tasks = 4; // List of tasks in the workflow. - map metadata = 5; // Additional metadata for the workflow. -} - // ExecutionStatus represents the current state of a task or workflow execution. enum ExecutionStatus { EXECUTION_STATUS_UNSPECIFIED = 0; // Status is not specified. @@ -144,15 +135,6 @@ message TaskExecution { map execution_metadata = 5; // Metadata related to the task execution. } -// WorkflowExecution represents the execution of a workflow. -message WorkflowExecution { - string workflow_id = 1; // Unique identifier for the workflow being executed. - ExecutionStatus status = 2; // Current execution status of the workflow. - repeated TaskExecution task_executions = 3; // List of task executions within the workflow. - google.protobuf.Timestamp created_at = 4; // Timestamp of when the workflow execution started. - google.protobuf.Timestamp updated_at = 5; // Timestamp of the last update to the workflow execution. - map execution_metadata = 6; // Metadata related to the workflow execution. -} // Message for Task history message TaskHistory { diff --git a/modules/cloud/v1/cloud_pb2.py b/modules/cloud/v1/cloud_pb2.py index 10eed05..ba513b2 100644 --- a/modules/cloud/v1/cloud_pb2.py +++ b/modules/cloud/v1/cloud_pb2.py @@ -27,7 +27,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x63loud/v1/cloud.proto\x12\x08\x63loud.v1\x1a\x17validate/validate.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xb0\x01\n\x07Payload\x12\x66\n\nparameters\x18\x01 \x03(\x0b\x32!.cloud.v1.Payload.ParametersEntryB#\xfa\x42 \x9a\x01\x1d\"\x14r\x12\x32\x10^[a-zA-Z0-9_-]+$*\x05r\x03\x18\x80\x08R\nparameters\x1a=\n\x0fParametersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xc4\x01\n\x11\x43reateTaskRequest\x12.\n\x04name\x18\x01 \x01(\tB\x1a\xfa\x42\x17r\x15\x18\xff\x01\x32\x10^[a-zA-Z0-9_-]+$R\x04name\x12\x1c\n\x04type\x18\x02 \x01(\tB\x08\xfa\x42\x05\x82\x01\x02\x10\x01R\x04type\x12\x35\n\x07payload\x18\x03 \x01(\x0b\x32\x11.cloud.v1.PayloadB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x07payload\x12*\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x08\xfa\x42\x05r\x03\x18\x88\'R\x0b\x64\x65scription\"-\n\x12\x43reateTaskResponse\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\"\xfe\x04\n\x04Task\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\x12.\n\x04name\x18\x02 \x01(\tB\x1a\xfa\x42\x17r\x15\x18\xff\x01\x32\x10^[a-zA-Z0-9_-]+$R\x04name\x12\x1c\n\x04type\x18\x03 \x01(\tB\x08\xfa\x42\x05\x82\x01\x02\x10\x01R\x04type\x12:\n\x06status\x18\x04 \x01(\x0e\x32\x18.cloud.v1.TaskStatusEnumB\x08\xfa\x42\x05\x82\x01\x02\x10\x01R\x06status\x12#\n\x07retries\x18\x05 \x01(\x05\x42\t\xfa\x42\x06\x1a\x04\x18\n(\x00R\x07retries\x12#\n\x08priority\x18\x06 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x08priority\x12L\n\ncreated_at\x18\x07 \x01(\tB-\xfa\x42*r(2&^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$R\tcreatedAt\x12\x35\n\x07payload\x18\x08 \x01(\x0b\x32\x11.cloud.v1.PayloadB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x07payload\x12*\n\x0b\x64\x65scription\x18\t \x01(\tB\x08\xfa\x42\x05r\x03\x18\x88\'R\x0b\x64\x65scription\x12\"\n\x0c\x64\x65pendencies\x18\n \x03(\tR\x0c\x64\x65pendencies\x12\x1d\n\nbase_image\x18\x0b \x01(\tR\tbaseImage\x12\x1e\n\nentrypoint\x18\x0c \x01(\tR\nentrypoint\x12\x12\n\x04\x61rgs\x18\r \x03(\tR\x04\x61rgs\x12)\n\x03\x65nv\x18\x0e \x03(\x0b\x32\x17.cloud.v1.Task.EnvEntryR\x03\x65nv\x1a\x36\n\x08\x45nvEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xf1\x01\n\x08Workflow\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12 \n\x0b\x64\x65scription\x18\x03 \x01(\tR\x0b\x64\x65scription\x12$\n\x05tasks\x18\x04 \x03(\x0b\x32\x0e.cloud.v1.TaskR\x05tasks\x12<\n\x08metadata\x18\x05 \x03(\x0b\x32 .cloud.v1.Workflow.MetadataEntryR\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xf6\x02\n\rTaskExecution\x12\x17\n\x07task_id\x18\x01 \x01(\tR\x06taskId\x12\x31\n\x06status\x18\x02 \x01(\x0e\x32\x19.cloud.v1.ExecutionStatusR\x06status\x12\x39\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12]\n\x12\x65xecution_metadata\x18\x05 \x03(\x0b\x32..cloud.v1.TaskExecution.ExecutionMetadataEntryR\x11\x65xecutionMetadata\x1a\x44\n\x16\x45xecutionMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xc8\x03\n\x11WorkflowExecution\x12\x1f\n\x0bworkflow_id\x18\x01 \x01(\tR\nworkflowId\x12\x31\n\x06status\x18\x02 \x01(\x0e\x32\x19.cloud.v1.ExecutionStatusR\x06status\x12@\n\x0ftask_executions\x18\x03 \x03(\x0b\x32\x17.cloud.v1.TaskExecutionR\x0etaskExecutions\x12\x39\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x61\n\x12\x65xecution_metadata\x18\x06 \x03(\x0b\x32\x32.cloud.v1.WorkflowExecution.ExecutionMetadataEntryR\x11\x65xecutionMetadata\x1a\x44\n\x16\x45xecutionMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xd4\x01\n\x0bTaskHistory\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\x12:\n\x06status\x18\x02 \x01(\x0e\x32\x18.cloud.v1.TaskStatusEnumB\x08\xfa\x42\x05\x82\x01\x02\x10\x01R\x06status\x12L\n\ncreated_at\x18\x03 \x01(\tB-\xfa\x42*r(2&^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$R\tcreatedAt\x12\"\n\x07\x64\x65tails\x18\x04 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xd0\x0fR\x07\x64\x65tails\")\n\x0eGetTaskRequest\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\"0\n\x15GetTaskHistoryRequest\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\"V\n\x16GetTaskHistoryResponse\x12<\n\x07history\x18\x01 \x03(\x0b\x32\x15.cloud.v1.TaskHistoryB\x0b\xfa\x42\x08\x92\x01\x05\x08\x01\x10\xe8\x07R\x07history\"\x92\x01\n\x17UpdateTaskStatusRequest\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\x12:\n\x06status\x18\x02 \x01(\x0e\x32\x18.cloud.v1.TaskStatusEnumB\x08\xfa\x42\x05\x82\x01\x02\x10\x01R\x06status\x12\"\n\x07message\x18\x03 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xd0\x0fR\x07message\"\xd6\x01\n\x10HeartbeatRequest\x12K\n\ttimestamp\x18\x01 \x01(\tB-\xfa\x42*r(2&^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$R\ttimestamp\x12u\n\x04uuid\x18\x02 \x01(\tBa\xfa\x42^r\\2Z^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$R\x04uuid\"\x13\n\x11HeartbeatResponse\"\x13\n\x11PullEventsRequest\"B\n\x12PullEventsResponse\x12,\n\x04work\x18\x01 \x01(\x0b\x32\x18.cloud.v1.WorkAssignmentR\x04work\"c\n\x0eWorkAssignment\x12#\n\rassignment_id\x18\x01 \x01(\x03R\x0c\x61ssignmentId\x12,\n\x04task\x18\x02 \x01(\x0b\x32\x0e.cloud.v1.TaskB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x04task\"\x12\n\x10GetStatusRequest\"\xa8\x01\n\x11GetStatusResponse\x12R\n\rstatus_counts\x18\x01 \x03(\x0b\x32-.cloud.v1.GetStatusResponse.StatusCountsEntryR\x0cstatusCounts\x1a?\n\x11StatusCountsEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05value:\x02\x38\x01\"0\n\x08TaskList\x12$\n\x05tasks\x18\x01 \x03(\x0b\x32\x0e.cloud.v1.TaskR\x05tasks\"\xd5\x01\n\x0fTaskListRequest\x12\x1f\n\x05limit\x18\x01 \x01(\x05\x42\t\xfa\x42\x06\x1a\x04\x18\x64(\x01R\x05limit\x12\x1f\n\x06offset\x18\x02 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x06offset\x12\x35\n\x06status\x18\x03 \x01(\x0e\x32\x18.cloud.v1.TaskStatusEnumH\x00R\x06status\x88\x01\x01\x12\x35\n\x04type\x18\x04 \x01(\tB\x1c\xfa\x42\x19r\x17R\nsend_emailR\trun_queryH\x01R\x04type\x88\x01\x01\x42\t\n\x07_statusB\x07\n\x05_type*Z\n\x0eTaskStatusEnum\x12\n\n\x06QUEUED\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\x12\r\n\tSUCCEEDED\x10\x03\x12\x0b\n\x07UNKNOWN\x10\x04\x12\x07\n\x03\x41LL\x10\x05*\xac\x01\n\x0f\x45xecutionStatus\x12 \n\x1c\x45XECUTION_STATUS_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x45XECUTION_STATUS_PENDING\x10\x01\x12\x1c\n\x18\x45XECUTION_STATUS_RUNNING\x10\x02\x12\x1e\n\x1a\x45XECUTION_STATUS_COMPLETED\x10\x03\x12\x1b\n\x17\x45XECUTION_STATUS_FAILED\x10\x04\x32\xdc\x04\n\x15TaskManagementService\x12I\n\nCreateTask\x12\x1b.cloud.v1.CreateTaskRequest\x1a\x1c.cloud.v1.CreateTaskResponse\"\x00\x12\x35\n\x07GetTask\x12\x18.cloud.v1.GetTaskRequest\x1a\x0e.cloud.v1.Task\"\x00\x12<\n\tListTasks\x12\x19.cloud.v1.TaskListRequest\x1a\x12.cloud.v1.TaskList\"\x00\x12U\n\x0eGetTaskHistory\x12\x1f.cloud.v1.GetTaskHistoryRequest\x1a .cloud.v1.GetTaskHistoryResponse\"\x00\x12O\n\x10UpdateTaskStatus\x12!.cloud.v1.UpdateTaskStatusRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\tGetStatus\x12\x1a.cloud.v1.GetStatusRequest\x1a\x1b.cloud.v1.GetStatusResponse\"\x00\x12\x46\n\tHeartbeat\x12\x1a.cloud.v1.HeartbeatRequest\x1a\x1b.cloud.v1.HeartbeatResponse\"\x00\x12K\n\nPullEvents\x12\x1b.cloud.v1.PullEventsRequest\x1a\x1c.cloud.v1.PullEventsResponse\"\x00\x30\x01\x42z\n\x0c\x63om.cloud.v1B\nCloudProtoP\x01Z\x1dtask/pkg/gen/cloud/v1;cloudv1\xa2\x02\x03\x43XX\xaa\x02\x08\x43loud.V1\xca\x02\x08\x43loud\\V1\xe2\x02\x14\x43loud\\V1\\GPBMetadata\xea\x02\tCloud::V1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x63loud/v1/cloud.proto\x12\x08\x63loud.v1\x1a\x17validate/validate.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xb0\x01\n\x07Payload\x12\x66\n\nparameters\x18\x01 \x03(\x0b\x32!.cloud.v1.Payload.ParametersEntryB#\xfa\x42 \x9a\x01\x1d\"\x14r\x12\x32\x10^[a-zA-Z0-9_-]+$*\x05r\x03\x18\x80\x08R\nparameters\x1a=\n\x0fParametersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xc4\x01\n\x11\x43reateTaskRequest\x12.\n\x04name\x18\x01 \x01(\tB\x1a\xfa\x42\x17r\x15\x18\xff\x01\x32\x10^[a-zA-Z0-9_-]+$R\x04name\x12\x1c\n\x04type\x18\x02 \x01(\tB\x08\xfa\x42\x05\x82\x01\x02\x10\x01R\x04type\x12\x35\n\x07payload\x18\x03 \x01(\x0b\x32\x11.cloud.v1.PayloadB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x07payload\x12*\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x08\xfa\x42\x05r\x03\x18\x88\'R\x0b\x64\x65scription\"-\n\x12\x43reateTaskResponse\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\"\xfe\x04\n\x04Task\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\x12.\n\x04name\x18\x02 \x01(\tB\x1a\xfa\x42\x17r\x15\x18\xff\x01\x32\x10^[a-zA-Z0-9_-]+$R\x04name\x12\x1c\n\x04type\x18\x03 \x01(\tB\x08\xfa\x42\x05\x82\x01\x02\x10\x01R\x04type\x12:\n\x06status\x18\x04 \x01(\x0e\x32\x18.cloud.v1.TaskStatusEnumB\x08\xfa\x42\x05\x82\x01\x02\x10\x01R\x06status\x12#\n\x07retries\x18\x05 \x01(\x05\x42\t\xfa\x42\x06\x1a\x04\x18\n(\x00R\x07retries\x12#\n\x08priority\x18\x06 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x08priority\x12L\n\ncreated_at\x18\x07 \x01(\tB-\xfa\x42*r(2&^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$R\tcreatedAt\x12\x35\n\x07payload\x18\x08 \x01(\x0b\x32\x11.cloud.v1.PayloadB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x07payload\x12*\n\x0b\x64\x65scription\x18\t \x01(\tB\x08\xfa\x42\x05r\x03\x18\x88\'R\x0b\x64\x65scription\x12\"\n\x0c\x64\x65pendencies\x18\n \x03(\tR\x0c\x64\x65pendencies\x12\x1d\n\nbase_image\x18\x0b \x01(\tR\tbaseImage\x12\x1e\n\nentrypoint\x18\x0c \x01(\tR\nentrypoint\x12\x12\n\x04\x61rgs\x18\r \x03(\tR\x04\x61rgs\x12)\n\x03\x65nv\x18\x0e \x03(\x0b\x32\x17.cloud.v1.Task.EnvEntryR\x03\x65nv\x1a\x36\n\x08\x45nvEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xf6\x02\n\rTaskExecution\x12\x17\n\x07task_id\x18\x01 \x01(\tR\x06taskId\x12\x31\n\x06status\x18\x02 \x01(\x0e\x32\x19.cloud.v1.ExecutionStatusR\x06status\x12\x39\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12]\n\x12\x65xecution_metadata\x18\x05 \x03(\x0b\x32..cloud.v1.TaskExecution.ExecutionMetadataEntryR\x11\x65xecutionMetadata\x1a\x44\n\x16\x45xecutionMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xd4\x01\n\x0bTaskHistory\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\x12:\n\x06status\x18\x02 \x01(\x0e\x32\x18.cloud.v1.TaskStatusEnumB\x08\xfa\x42\x05\x82\x01\x02\x10\x01R\x06status\x12L\n\ncreated_at\x18\x03 \x01(\tB-\xfa\x42*r(2&^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$R\tcreatedAt\x12\"\n\x07\x64\x65tails\x18\x04 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xd0\x0fR\x07\x64\x65tails\")\n\x0eGetTaskRequest\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\"0\n\x15GetTaskHistoryRequest\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\"V\n\x16GetTaskHistoryResponse\x12<\n\x07history\x18\x01 \x03(\x0b\x32\x15.cloud.v1.TaskHistoryB\x0b\xfa\x42\x08\x92\x01\x05\x08\x01\x10\xe8\x07R\x07history\"\x92\x01\n\x17UpdateTaskStatusRequest\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\x12:\n\x06status\x18\x02 \x01(\x0e\x32\x18.cloud.v1.TaskStatusEnumB\x08\xfa\x42\x05\x82\x01\x02\x10\x01R\x06status\x12\"\n\x07message\x18\x03 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xd0\x0fR\x07message\"\xd6\x01\n\x10HeartbeatRequest\x12K\n\ttimestamp\x18\x01 \x01(\tB-\xfa\x42*r(2&^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$R\ttimestamp\x12u\n\x04uuid\x18\x02 \x01(\tBa\xfa\x42^r\\2Z^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$R\x04uuid\"\x13\n\x11HeartbeatResponse\"\x13\n\x11PullEventsRequest\"B\n\x12PullEventsResponse\x12,\n\x04work\x18\x01 \x01(\x0b\x32\x18.cloud.v1.WorkAssignmentR\x04work\"c\n\x0eWorkAssignment\x12#\n\rassignment_id\x18\x01 \x01(\x03R\x0c\x61ssignmentId\x12,\n\x04task\x18\x02 \x01(\x0b\x32\x0e.cloud.v1.TaskB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x04task\"\x12\n\x10GetStatusRequest\"\xa8\x01\n\x11GetStatusResponse\x12R\n\rstatus_counts\x18\x01 \x03(\x0b\x32-.cloud.v1.GetStatusResponse.StatusCountsEntryR\x0cstatusCounts\x1a?\n\x11StatusCountsEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05value:\x02\x38\x01\"0\n\x08TaskList\x12$\n\x05tasks\x18\x01 \x03(\x0b\x32\x0e.cloud.v1.TaskR\x05tasks\"\xd5\x01\n\x0fTaskListRequest\x12\x1f\n\x05limit\x18\x01 \x01(\x05\x42\t\xfa\x42\x06\x1a\x04\x18\x64(\x01R\x05limit\x12\x1f\n\x06offset\x18\x02 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x06offset\x12\x35\n\x06status\x18\x03 \x01(\x0e\x32\x18.cloud.v1.TaskStatusEnumH\x00R\x06status\x88\x01\x01\x12\x35\n\x04type\x18\x04 \x01(\tB\x1c\xfa\x42\x19r\x17R\nsend_emailR\trun_queryH\x01R\x04type\x88\x01\x01\x42\t\n\x07_statusB\x07\n\x05_type*Z\n\x0eTaskStatusEnum\x12\n\n\x06QUEUED\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\x12\r\n\tSUCCEEDED\x10\x03\x12\x0b\n\x07UNKNOWN\x10\x04\x12\x07\n\x03\x41LL\x10\x05*\xac\x01\n\x0f\x45xecutionStatus\x12 \n\x1c\x45XECUTION_STATUS_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x45XECUTION_STATUS_PENDING\x10\x01\x12\x1c\n\x18\x45XECUTION_STATUS_RUNNING\x10\x02\x12\x1e\n\x1a\x45XECUTION_STATUS_COMPLETED\x10\x03\x12\x1b\n\x17\x45XECUTION_STATUS_FAILED\x10\x04\x32\xdc\x04\n\x15TaskManagementService\x12I\n\nCreateTask\x12\x1b.cloud.v1.CreateTaskRequest\x1a\x1c.cloud.v1.CreateTaskResponse\"\x00\x12\x35\n\x07GetTask\x12\x18.cloud.v1.GetTaskRequest\x1a\x0e.cloud.v1.Task\"\x00\x12<\n\tListTasks\x12\x19.cloud.v1.TaskListRequest\x1a\x12.cloud.v1.TaskList\"\x00\x12U\n\x0eGetTaskHistory\x12\x1f.cloud.v1.GetTaskHistoryRequest\x1a .cloud.v1.GetTaskHistoryResponse\"\x00\x12O\n\x10UpdateTaskStatus\x12!.cloud.v1.UpdateTaskStatusRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\tGetStatus\x12\x1a.cloud.v1.GetStatusRequest\x1a\x1b.cloud.v1.GetStatusResponse\"\x00\x12\x46\n\tHeartbeat\x12\x1a.cloud.v1.HeartbeatRequest\x1a\x1b.cloud.v1.HeartbeatResponse\"\x00\x12K\n\nPullEvents\x12\x1b.cloud.v1.PullEventsRequest\x1a\x1c.cloud.v1.PullEventsResponse\"\x00\x30\x01\x42z\n\x0c\x63om.cloud.v1B\nCloudProtoP\x01Z\x1dtask/pkg/gen/cloud/v1;cloudv1\xa2\x02\x03\x43XX\xaa\x02\x08\x43loud.V1\xca\x02\x08\x43loud\\V1\xe2\x02\x14\x43loud\\V1\\GPBMetadata\xea\x02\tCloud::V1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -69,12 +69,8 @@ _globals['_TASK'].fields_by_name['payload']._serialized_options = b'\372B\005\212\001\002\020\001' _globals['_TASK'].fields_by_name['description']._loaded_options = None _globals['_TASK'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\210\'' - _globals['_WORKFLOW_METADATAENTRY']._loaded_options = None - _globals['_WORKFLOW_METADATAENTRY']._serialized_options = b'8\001' _globals['_TASKEXECUTION_EXECUTIONMETADATAENTRY']._loaded_options = None _globals['_TASKEXECUTION_EXECUTIONMETADATAENTRY']._serialized_options = b'8\001' - _globals['_WORKFLOWEXECUTION_EXECUTIONMETADATAENTRY']._loaded_options = None - _globals['_WORKFLOWEXECUTION_EXECUTIONMETADATAENTRY']._serialized_options = b'8\001' _globals['_TASKHISTORY'].fields_by_name['id']._loaded_options = None _globals['_TASKHISTORY'].fields_by_name['id']._serialized_options = b'\372B\004\032\002(\000' _globals['_TASKHISTORY'].fields_by_name['status']._loaded_options = None @@ -109,10 +105,10 @@ _globals['_TASKLISTREQUEST'].fields_by_name['offset']._serialized_options = b'\372B\004\032\002(\000' _globals['_TASKLISTREQUEST'].fields_by_name['type']._loaded_options = None _globals['_TASKLISTREQUEST'].fields_by_name['type']._serialized_options = b'\372B\031r\027R\nsend_emailR\trun_query' - _globals['_TASKSTATUSENUM']._serialized_start=3697 - _globals['_TASKSTATUSENUM']._serialized_end=3787 - _globals['_EXECUTIONSTATUS']._serialized_start=3790 - _globals['_EXECUTIONSTATUS']._serialized_end=3962 + _globals['_TASKSTATUSENUM']._serialized_start=2994 + _globals['_TASKSTATUSENUM']._serialized_end=3084 + _globals['_EXECUTIONSTATUS']._serialized_start=3087 + _globals['_EXECUTIONSTATUS']._serialized_end=3259 _globals['_PAYLOAD']._serialized_start=122 _globals['_PAYLOAD']._serialized_end=298 _globals['_PAYLOAD_PARAMETERSENTRY']._serialized_start=237 @@ -125,48 +121,40 @@ _globals['_TASK']._serialized_end=1185 _globals['_TASK_ENVENTRY']._serialized_start=1131 _globals['_TASK_ENVENTRY']._serialized_end=1185 - _globals['_WORKFLOW']._serialized_start=1188 - _globals['_WORKFLOW']._serialized_end=1429 - _globals['_WORKFLOW_METADATAENTRY']._serialized_start=1370 - _globals['_WORKFLOW_METADATAENTRY']._serialized_end=1429 - _globals['_TASKEXECUTION']._serialized_start=1432 - _globals['_TASKEXECUTION']._serialized_end=1806 - _globals['_TASKEXECUTION_EXECUTIONMETADATAENTRY']._serialized_start=1738 - _globals['_TASKEXECUTION_EXECUTIONMETADATAENTRY']._serialized_end=1806 - _globals['_WORKFLOWEXECUTION']._serialized_start=1809 - _globals['_WORKFLOWEXECUTION']._serialized_end=2265 - _globals['_WORKFLOWEXECUTION_EXECUTIONMETADATAENTRY']._serialized_start=1738 - _globals['_WORKFLOWEXECUTION_EXECUTIONMETADATAENTRY']._serialized_end=1806 - _globals['_TASKHISTORY']._serialized_start=2268 - _globals['_TASKHISTORY']._serialized_end=2480 - _globals['_GETTASKREQUEST']._serialized_start=2482 - _globals['_GETTASKREQUEST']._serialized_end=2523 - _globals['_GETTASKHISTORYREQUEST']._serialized_start=2525 - _globals['_GETTASKHISTORYREQUEST']._serialized_end=2573 - _globals['_GETTASKHISTORYRESPONSE']._serialized_start=2575 - _globals['_GETTASKHISTORYRESPONSE']._serialized_end=2661 - _globals['_UPDATETASKSTATUSREQUEST']._serialized_start=2664 - _globals['_UPDATETASKSTATUSREQUEST']._serialized_end=2810 - _globals['_HEARTBEATREQUEST']._serialized_start=2813 - _globals['_HEARTBEATREQUEST']._serialized_end=3027 - _globals['_HEARTBEATRESPONSE']._serialized_start=3029 - _globals['_HEARTBEATRESPONSE']._serialized_end=3048 - _globals['_PULLEVENTSREQUEST']._serialized_start=3050 - _globals['_PULLEVENTSREQUEST']._serialized_end=3069 - _globals['_PULLEVENTSRESPONSE']._serialized_start=3071 - _globals['_PULLEVENTSRESPONSE']._serialized_end=3137 - _globals['_WORKASSIGNMENT']._serialized_start=3139 - _globals['_WORKASSIGNMENT']._serialized_end=3238 - _globals['_GETSTATUSREQUEST']._serialized_start=3240 - _globals['_GETSTATUSREQUEST']._serialized_end=3258 - _globals['_GETSTATUSRESPONSE']._serialized_start=3261 - _globals['_GETSTATUSRESPONSE']._serialized_end=3429 - _globals['_GETSTATUSRESPONSE_STATUSCOUNTSENTRY']._serialized_start=3366 - _globals['_GETSTATUSRESPONSE_STATUSCOUNTSENTRY']._serialized_end=3429 - _globals['_TASKLIST']._serialized_start=3431 - _globals['_TASKLIST']._serialized_end=3479 - _globals['_TASKLISTREQUEST']._serialized_start=3482 - _globals['_TASKLISTREQUEST']._serialized_end=3695 - _globals['_TASKMANAGEMENTSERVICE']._serialized_start=3965 - _globals['_TASKMANAGEMENTSERVICE']._serialized_end=4569 + _globals['_TASKEXECUTION']._serialized_start=1188 + _globals['_TASKEXECUTION']._serialized_end=1562 + _globals['_TASKEXECUTION_EXECUTIONMETADATAENTRY']._serialized_start=1494 + _globals['_TASKEXECUTION_EXECUTIONMETADATAENTRY']._serialized_end=1562 + _globals['_TASKHISTORY']._serialized_start=1565 + _globals['_TASKHISTORY']._serialized_end=1777 + _globals['_GETTASKREQUEST']._serialized_start=1779 + _globals['_GETTASKREQUEST']._serialized_end=1820 + _globals['_GETTASKHISTORYREQUEST']._serialized_start=1822 + _globals['_GETTASKHISTORYREQUEST']._serialized_end=1870 + _globals['_GETTASKHISTORYRESPONSE']._serialized_start=1872 + _globals['_GETTASKHISTORYRESPONSE']._serialized_end=1958 + _globals['_UPDATETASKSTATUSREQUEST']._serialized_start=1961 + _globals['_UPDATETASKSTATUSREQUEST']._serialized_end=2107 + _globals['_HEARTBEATREQUEST']._serialized_start=2110 + _globals['_HEARTBEATREQUEST']._serialized_end=2324 + _globals['_HEARTBEATRESPONSE']._serialized_start=2326 + _globals['_HEARTBEATRESPONSE']._serialized_end=2345 + _globals['_PULLEVENTSREQUEST']._serialized_start=2347 + _globals['_PULLEVENTSREQUEST']._serialized_end=2366 + _globals['_PULLEVENTSRESPONSE']._serialized_start=2368 + _globals['_PULLEVENTSRESPONSE']._serialized_end=2434 + _globals['_WORKASSIGNMENT']._serialized_start=2436 + _globals['_WORKASSIGNMENT']._serialized_end=2535 + _globals['_GETSTATUSREQUEST']._serialized_start=2537 + _globals['_GETSTATUSREQUEST']._serialized_end=2555 + _globals['_GETSTATUSRESPONSE']._serialized_start=2558 + _globals['_GETSTATUSRESPONSE']._serialized_end=2726 + _globals['_GETSTATUSRESPONSE_STATUSCOUNTSENTRY']._serialized_start=2663 + _globals['_GETSTATUSRESPONSE_STATUSCOUNTSENTRY']._serialized_end=2726 + _globals['_TASKLIST']._serialized_start=2728 + _globals['_TASKLIST']._serialized_end=2776 + _globals['_TASKLISTREQUEST']._serialized_start=2779 + _globals['_TASKLISTREQUEST']._serialized_end=2992 + _globals['_TASKMANAGEMENTSERVICE']._serialized_start=3262 + _globals['_TASKMANAGEMENTSERVICE']._serialized_end=3866 # @@protoc_insertion_point(module_scope) diff --git a/modules/task.py b/modules/task.py deleted file mode 100644 index 439d984..0000000 --- a/modules/task.py +++ /dev/null @@ -1,21 +0,0 @@ - -from typing import TypedDict, List -from enum import Enum -from functools import wraps -from modules.cloud.v1.cloud_pb2 import Task - -class TaskType(Enum): - PYTHON = "python" - -class TaskMetadata(TypedDict): - author: str - version: str - -class TaskSpec(TypedDict): - name: str - type: TaskType - description: str - dependencies: List[str] - metadata: TaskMetadata - base_image: str - entrypoint: str diff --git a/modules/workflow.py b/modules/workflow.py deleted file mode 100644 index 53a2e55..0000000 --- a/modules/workflow.py +++ /dev/null @@ -1,23 +0,0 @@ - -from typing import TypedDict, List, Dict -from enum import Enum -from functools import wraps -from modules.cloud.v1.cloud_pb2 import Workflow - -class WorkflowType(Enum): - PYTHON = "python" - -class WorkflowMetadata(TypedDict): - author: str - version: str - -class WorkflowSpec(TypedDict): - name: str - type: WorkflowType - description: str - dependencies: List[str] - metadata: WorkflowMetadata - base_image: str - entrypoint: str - args: List[str] - env: Dict[str, str] diff --git a/pixi.lock b/pixi.lock index 13af399..62adbf0 100644 --- a/pixi.lock +++ b/pixi.lock @@ -22,7 +22,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.33.1-h44e7173_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py310hfce808e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py39h8ddeee6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/curl-8.10.1-h58e7537_0.conda @@ -39,14 +39,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240116.2-cxx17_hf036a51_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-14.0.2-h2902fa7_44_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-14.0.2-hf036a51_44_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-14.0.2-hf036a51_44_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-14.0.2-hd834827_44_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-sql-14.0.2-he1e86a1_44_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-gandiva-14.0.2-hfa04d5a_44_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-14.0.2-he1e86a1_44_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240722.0-cxx17_hac325c4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-14.0.2-h4caaaa1_47_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-14.0.2-h97d8b74_47_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-14.0.2-h97d8b74_47_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-14.0.2-h2627002_47_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-sql-14.0.2-h5924cc9_47_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-gandiva-14.0.2-hbd7cc15_47_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-14.0.2-h5924cc9_47_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-0.22.5-hdfe23c8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-devel-0.22.5-hdfe23c8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-22_osx64_openblas.conda @@ -66,22 +66,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libgettextpo-devel-0.22.5-hdfe23c8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.29.0-hecd3d69_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.29.0-h8126ed0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.62.2-h384b2fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.30.0-hade041e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.30.0-h8126ed0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.65.5-hb88832f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-hdfe23c8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-devel-0.22.5-hdfe23c8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-22_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm16-16.0.6-hbedff68_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm17-17.0.6-hbedff68_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.27-openmp_h8869122_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-14.0.2-h808e2ea_44_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-4.25.3-hd4aba4c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2023.09.01-h81f5012_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-14.0.2-h2be9fba_47_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.27.5-h62b0dff_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-hd530cb8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.46.1-h4b8f8c9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.0-hd019ec5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.20.0-h75589b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.21.0-h75589b3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.8.0-hb7f2c08_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.48.0-h67532ce_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.12.7-hc603aa4_3.conda @@ -91,9 +91,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/nodejs-20.9.0-hfc0f20e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-1.26.4-py310h4bfa8fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-1.26.4-py39h28c39a1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.2-hd23fc13_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.0.2-h22b2039_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.0.2-h52ea4d3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.42-h0ad2156_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/perl-5.32.1-7_h10d778d_perl5.conda @@ -101,20 +101,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.3.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-14.0.2-py310hcd1d8fd_44_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-14.0.2-py39haecdfb1_47_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.10.15-h6bafeb6_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.10-5_cp310.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py310h837254d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2023.09.01-hb168e87_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.9.20-hf24efe3_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.9-5_cp39.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py39h06d86d0_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2024.07.02-h2fb0a26_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.1-he1e6707_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py310hfa8da69_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py39h0d8d0ca_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 @@ -412,21 +412,21 @@ packages: - kind: conda name: cffi version: 1.17.1 - build: py310hfce808e_0 + build: py39h8ddeee6_0 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py310hfce808e_0.conda - sha256: a9a98a09031c4b5304ca04d29f9b35329e40a915e8e9c6431daee97c1b606d36 - md5: eefa80a0b01ffccf57c7c865bc6acfc4 + url: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py39h8ddeee6_0.conda + sha256: 08e363b8c7662245ac89e864334fc76b61c6a8c1642c8404db0d2544a8566e82 + md5: ea57b55b4b6884ae7a9dcb14cd9782e9 depends: - __osx >=10.13 - libffi >=3.4,<4.0a0 - pycparser - - python >=3.10,<3.11.0a0 - - python_abi 3.10.* *_cp310 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 license: MIT license_family: MIT - size: 229844 - timestamp: 1725560765436 + size: 229582 + timestamp: 1725560793066 - kind: conda name: cfgv version: 3.3.1 @@ -700,32 +700,32 @@ packages: timestamp: 1719463492984 - kind: conda name: libabseil - version: '20240116.2' - build: cxx17_hf036a51_1 + version: '20240722.0' + build: cxx17_hac325c4_1 build_number: 1 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240116.2-cxx17_hf036a51_1.conda - sha256: 396d18f39d5207ecae06fddcbc6e5f20865718939bc4e0ea9729e13952833aac - md5: d6c78ca84abed3fea5f308ac83b8f54e + url: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240722.0-cxx17_hac325c4_1.conda + sha256: b548e80280242ad1d93d8d7fb48a30af7e4124959ba2031c65c9675b98163652 + md5: 40373920232a6ac0404eee9cf39a9f09 depends: - __osx >=10.13 - - libcxx >=16 + - libcxx >=17 constrains: - - abseil-cpp =20240116.2 - - libabseil-static =20240116.2=cxx17* + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* license: Apache-2.0 license_family: Apache - size: 1124364 - timestamp: 1720857589333 + size: 1170354 + timestamp: 1727295597292 - kind: conda name: libarrow version: 14.0.2 - build: h2902fa7_44_cpu - build_number: 44 + build: h4caaaa1_47_cpu + build_number: 47 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-14.0.2-h2902fa7_44_cpu.conda - sha256: 30bf881c015071d38a843de8785bd28098909637d2e325907ec74acc0dd1c5de - md5: 0ebd27395a10b7895863a4c67ea0579c + url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-14.0.2-h4caaaa1_47_cpu.conda + sha256: cd26fba14b4381e1af82c0e922811dc88acfb0c6449a7a0609caf1ddeaec75f0 + md5: 7b247e3fa44db0cbc16308bf8ca425c5 depends: - __osx >=10.13 - aws-crt-cpp >=0.28.3,<0.28.4.0a0 @@ -733,13 +733,13 @@ packages: - bzip2 >=1.0.8,<2.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - - libabseil >=20240116.2,<20240117.0a0 + - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=16 - - libgoogle-cloud >=2.29.0,<2.30.0a0 - - libgoogle-cloud-storage >=2.29.0,<2.30.0a0 - - libre2-11 >=2023.9.1,<2024.0a0 + - libcxx >=17 + - libgoogle-cloud >=2.30.0,<2.31.0a0 + - libgoogle-cloud-storage >=2.30.0,<2.31.0a0 + - libre2-11 >=2023.9.1 - libutf8proc >=2.8.0,<3.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -753,126 +753,126 @@ packages: - parquet-cpp <0.0a0 license: Apache-2.0 license_family: APACHE - size: 5583546 - timestamp: 1726708103572 + size: 5662209 + timestamp: 1728664216656 - kind: conda name: libarrow-acero version: 14.0.2 - build: hf036a51_44_cpu - build_number: 44 + build: h97d8b74_47_cpu + build_number: 47 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-14.0.2-hf036a51_44_cpu.conda - sha256: f74634761d17dca0fd8dd19bbd6fff249c74fec1bb090dc6bad2a297862ddac9 - md5: 6b41721142152b215c73a59824330459 + url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-14.0.2-h97d8b74_47_cpu.conda + sha256: b0416b32f9dd9f8be379d70160dce857d454c3513910108b6dfb9ece6bacd31e + md5: 6dfb7ae87bc0d27ebbfc72f2bcc2885a depends: - __osx >=10.13 - - libarrow 14.0.2 h2902fa7_44_cpu - - libcxx >=16 + - libarrow 14.0.2 h4caaaa1_47_cpu + - libcxx >=17 license: Apache-2.0 license_family: APACHE - size: 507916 - timestamp: 1726708213363 + size: 509583 + timestamp: 1728664327591 - kind: conda name: libarrow-dataset version: 14.0.2 - build: hf036a51_44_cpu - build_number: 44 + build: h97d8b74_47_cpu + build_number: 47 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-14.0.2-hf036a51_44_cpu.conda - sha256: 74ccbe5e285f789b68f103c8cbf14e9a68ed6fd5512a2b96c1b87fbea1a9040c - md5: 4e93260003a6d6d5ea51e4ef735431a1 + url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-14.0.2-h97d8b74_47_cpu.conda + sha256: 277c171c5d5753a24be61ff604b4d4d4710fdcdf664a3ebc850548bbb10b1f77 + md5: 5dd401ce9cf9d3350f7a8b7e01cd4caf depends: - __osx >=10.13 - - libarrow 14.0.2 h2902fa7_44_cpu - - libarrow-acero 14.0.2 hf036a51_44_cpu - - libcxx >=16 - - libparquet 14.0.2 h808e2ea_44_cpu + - libarrow 14.0.2 h4caaaa1_47_cpu + - libarrow-acero 14.0.2 h97d8b74_47_cpu + - libcxx >=17 + - libparquet 14.0.2 h2be9fba_47_cpu license: Apache-2.0 license_family: APACHE - size: 513046 - timestamp: 1726709126956 + size: 523863 + timestamp: 1728665417571 - kind: conda name: libarrow-flight version: 14.0.2 - build: hd834827_44_cpu - build_number: 44 + build: h2627002_47_cpu + build_number: 47 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-14.0.2-hd834827_44_cpu.conda - sha256: e4974e6bc170b99bbafddd60db7bdd09bd478703e3543361ff1239c77e6b36b3 - md5: 557e5288de9850a96c38078d230e8a2e + url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-14.0.2-h2627002_47_cpu.conda + sha256: d5f0113753ca5a9c7a89c0c43c8a447dbf768379e3236297a0e89abe4f1514fc + md5: 682b4f05811a0caa1c55bfe917cf76b6 depends: - __osx >=10.13 - libabseil * cxx17* - - libabseil >=20240116.2,<20240117.0a0 - - libarrow 14.0.2 h2902fa7_44_cpu - - libcxx >=16 - - libgrpc >=1.62.2,<1.63.0a0 - - libprotobuf >=4.25.3,<4.25.4.0a0 + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 14.0.2 h4caaaa1_47_cpu + - libcxx >=17 + - libgrpc >=1.65.5,<1.66.0a0 + - libprotobuf >=5.27.5,<5.27.6.0a0 license: Apache-2.0 license_family: APACHE - size: 324954 - timestamp: 1726708359132 + size: 333068 + timestamp: 1728664470493 - kind: conda name: libarrow-flight-sql version: 14.0.2 - build: he1e86a1_44_cpu - build_number: 44 + build: h5924cc9_47_cpu + build_number: 47 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-sql-14.0.2-he1e86a1_44_cpu.conda - sha256: 13625883d7daf474b6fdd2bc2522bc2949518f0af9fdee64c058237f673751e8 - md5: 04c7dd293e7d3034d0b56a48bc6ecbbf + url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-sql-14.0.2-h5924cc9_47_cpu.conda + sha256: 548feef243b58ea095d682995e24bbd5fa1f2da017c8780b854e2c47e81137ff + md5: f2b92613dd200135eeeb1db875751600 depends: - __osx >=10.13 - - libarrow 14.0.2 h2902fa7_44_cpu - - libarrow-flight 14.0.2 hd834827_44_cpu - - libcxx >=16 - - libprotobuf >=4.25.3,<4.25.4.0a0 + - libarrow 14.0.2 h4caaaa1_47_cpu + - libarrow-flight 14.0.2 h2627002_47_cpu + - libcxx >=17 + - libprotobuf >=5.27.5,<5.27.6.0a0 license: Apache-2.0 license_family: APACHE - size: 157572 - timestamp: 1726709179222 + size: 160297 + timestamp: 1728665470448 - kind: conda name: libarrow-gandiva version: 14.0.2 - build: hfa04d5a_44_cpu - build_number: 44 + build: hbd7cc15_47_cpu + build_number: 47 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-gandiva-14.0.2-hfa04d5a_44_cpu.conda - sha256: 8fb907d2c43546cd8108edc855c401fcd9d1191f46d3589c793249d72b60576c - md5: 66af76fb864d894c1619f461013d8ce6 + url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-gandiva-14.0.2-hbd7cc15_47_cpu.conda + sha256: b20822bb151fab93b96fb594cb7f7e6d8fb6040532b8c704a63f65fd5d3abcbf + md5: 67bc62fddca7228a6cd2612d2c3966c7 depends: - __osx >=10.13 - - libarrow 14.0.2 h2902fa7_44_cpu - - libcxx >=16 - - libllvm16 >=16.0.6,<16.1.0a0 - - libre2-11 >=2023.9.1,<2024.0a0 + - libarrow 14.0.2 h4caaaa1_47_cpu + - libcxx >=17 + - libllvm17 >=17.0.6,<17.1.0a0 + - libre2-11 >=2023.9.1 - libutf8proc >=2.8.0,<3.0a0 - openssl >=3.3.2,<4.0a0 - re2 license: Apache-2.0 license_family: APACHE - size: 696386 - timestamp: 1726708998280 + size: 702783 + timestamp: 1728665254153 - kind: conda name: libarrow-substrait version: 14.0.2 - build: he1e86a1_44_cpu - build_number: 44 + build: h5924cc9_47_cpu + build_number: 47 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-14.0.2-he1e86a1_44_cpu.conda - sha256: 6a21665498a816c340b1b799b80b9f83a6bc5cd348089ea537d3f1f7e22a14e1 - md5: c0995c610ed3d95e0a91e99135d2fc4a + url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-14.0.2-h5924cc9_47_cpu.conda + sha256: 654793b98e9b47f99b6c0f2b29dc9ce17ad06916d1e16b2aeda22cfcdf03add7 + md5: 4dcef599a98ad757e5b4d414692fe0b5 depends: - __osx >=10.13 - - libarrow 14.0.2 h2902fa7_44_cpu - - libarrow-acero 14.0.2 hf036a51_44_cpu - - libarrow-dataset 14.0.2 hf036a51_44_cpu - - libcxx >=16 - - libprotobuf >=4.25.3,<4.25.4.0a0 + - libarrow 14.0.2 h4caaaa1_47_cpu + - libarrow-acero 14.0.2 h97d8b74_47_cpu + - libarrow-dataset 14.0.2 h97d8b74_47_cpu + - libcxx >=17 + - libprotobuf >=5.27.5,<5.27.6.0a0 license: Apache-2.0 license_family: APACHE - size: 453586 - timestamp: 1726709259219 + size: 433656 + timestamp: 1728665554045 - kind: conda name: libasprintf version: 0.22.5 @@ -1179,73 +1179,73 @@ packages: timestamp: 1707328880361 - kind: conda name: libgoogle-cloud - version: 2.29.0 - build: hecd3d69_0 + version: 2.30.0 + build: hade041e_0 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.29.0-hecd3d69_0.conda - sha256: fb76eb738bf7a68b2ade5735d10cf8c5b43e558338b7dfa8157b3bbe2152e8d3 - md5: 3bbd93763e4b77411f252378a83ac595 + url: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.30.0-hade041e_0.conda + sha256: faf1c644b68306e3a58b471edaaac67f57c193ca543533fe7f29f698e9b9c626 + md5: a431e45b599ada6817543683cf61115c depends: - __osx >=10.13 - libabseil * cxx17* - - libabseil >=20240116.2,<20240117.0a0 - - libcurl >=8.9.1,<9.0a0 + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.10.1,<9.0a0 - libcxx >=17 - - libgrpc >=1.62.2,<1.63.0a0 - - libprotobuf >=4.25.3,<4.25.4.0a0 + - libgrpc >=1.65.5,<1.66.0a0 + - libprotobuf >=5.27.5,<5.27.6.0a0 - openssl >=3.3.2,<4.0a0 constrains: - - libgoogle-cloud 2.29.0 *_0 + - libgoogle-cloud 2.30.0 *_0 license: Apache-2.0 license_family: Apache - size: 882673 - timestamp: 1725640300891 + size: 864474 + timestamp: 1728021663496 - kind: conda name: libgoogle-cloud-storage - version: 2.29.0 + version: 2.30.0 build: h8126ed0_0 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.29.0-h8126ed0_0.conda - sha256: de1e2579f7da3b23215ecdd9941f7137fd612208e5b7cc79bb0c907dacd5ab8c - md5: 3f66bd3748be4fee5cfea25fe9fdce62 + url: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.30.0-h8126ed0_0.conda + sha256: 104333dad7dc1ea4467f7f14dedab7ed4bdfc664493605767550262e7488bdb3 + md5: fdfef310fda223057e1e4962146ddf97 depends: - __osx >=10.13 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=17 - - libgoogle-cloud 2.29.0 hecd3d69_0 + - libgoogle-cloud 2.30.0 hade041e_0 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 551789 - timestamp: 1725641251227 + size: 553911 + timestamp: 1728022491695 - kind: conda name: libgrpc - version: 1.62.2 - build: h384b2fc_0 + version: 1.65.5 + build: hb88832f_0 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.62.2-h384b2fc_0.conda - sha256: 7c228040e7dac4e5e7e6935a4decf6bc2155cc05fcfb0811d25ccb242d0036ba - md5: 9421f67cf8b4bc976fe5d0c3ab42de18 + url: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.65.5-hb88832f_0.conda + sha256: b862af63c5b362743527fde9b7411b6a2d1270f858acbabc2beeee306465b405 + md5: 8ef969b891fe57caf3acfb5495ec0ab9 depends: - __osx >=10.13 - - c-ares >=1.28.1,<2.0a0 + - c-ares >=1.33.1,<2.0a0 - libabseil * cxx17* - - libabseil >=20240116.1,<20240117.0a0 - - libcxx >=16 - - libprotobuf >=4.25.3,<4.25.4.0a0 - - libre2-11 >=2023.9.1,<2024.0a0 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.2.1,<4.0a0 + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=17 + - libprotobuf >=5.27.5,<5.27.6.0a0 + - libre2-11 >=2023.9.1 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 - re2 constrains: - - grpc-cpp =1.62.2 + - grpc-cpp =1.65.5 license: Apache-2.0 license_family: APACHE - size: 5189573 - timestamp: 1713392887258 + size: 5152392 + timestamp: 1727200873427 - kind: conda name: libiconv version: '1.17' @@ -1309,14 +1309,14 @@ packages: size: 14657 timestamp: 1712542322711 - kind: conda - name: libllvm16 - version: 16.0.6 - build: hbedff68_3 - build_number: 3 + name: libllvm17 + version: 17.0.6 + build: hbedff68_1 + build_number: 1 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libllvm16-16.0.6-hbedff68_3.conda - sha256: ad848dc0bb02b1dbe54324ee5700b050a2e5f63c095f5229b2de58249a3e268e - md5: 8fd56c0adc07a37f93bd44aa61a97c90 + url: https://conda.anaconda.org/conda-forge/osx-64/libllvm17-17.0.6-hbedff68_1.conda + sha256: 605460ecc4ccc04163d0b06c99693864e5bcba7a9f014a5263c9856195282265 + md5: fcd38f0553a99fa279fb66a5bfc2fb28 depends: - libcxx >=16 - libxml2 >=2.12.1,<3.0.0a0 @@ -1324,8 +1324,8 @@ packages: - zstd >=1.5.5,<1.6.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 25196932 - timestamp: 1701379796962 + size: 26306756 + timestamp: 1701378823527 - kind: conda name: libnghttp2 version: 1.58.0 @@ -1370,61 +1370,61 @@ packages: - kind: conda name: libparquet version: 14.0.2 - build: h808e2ea_44_cpu - build_number: 44 + build: h2be9fba_47_cpu + build_number: 47 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libparquet-14.0.2-h808e2ea_44_cpu.conda - sha256: 13cce83283a0a9d6af1618f200fece36a8f61931b420a2c5fc6a75848a62f5a5 - md5: 71f417d137fb71006279d85871c814b8 + url: https://conda.anaconda.org/conda-forge/osx-64/libparquet-14.0.2-h2be9fba_47_cpu.conda + sha256: 4c93858a128eaa323a02be84a4849940b068677758fd4b81c89ea2ecb5ad0edd + md5: 7ddcc301e6f3b432abbb4c64830cb102 depends: - __osx >=10.13 - - libarrow 14.0.2 h2902fa7_44_cpu - - libcxx >=16 - - libthrift >=0.20.0,<0.20.1.0a0 + - libarrow 14.0.2 h4caaaa1_47_cpu + - libcxx >=17 + - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.3.2,<4.0a0 license: Apache-2.0 license_family: APACHE - size: 912924 - timestamp: 1726709063239 + size: 927020 + timestamp: 1728665338750 - kind: conda name: libprotobuf - version: 4.25.3 - build: hd4aba4c_1 - build_number: 1 + version: 5.27.5 + build: h62b0dff_2 + build_number: 2 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-4.25.3-hd4aba4c_1.conda - sha256: f509cb24a164b84553b28837ec1e8311ceb0212a1dbb8c7fd99ca383d461ea6c - md5: 64ad501f0fd74955056169ec9c42c5c0 + url: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.27.5-h62b0dff_2.conda + sha256: ac77bce3b9a58e6fa72bed339af0d47faf1dec3bc717e4e05e2e729dc42bd2b3 + md5: e3b68d9a164d807f70df49e17bc54931 depends: - __osx >=10.13 - libabseil * cxx17* - - libabseil >=20240116.2,<20240117.0a0 + - libabseil >=20240722.0,<20240723.0a0 - libcxx >=17 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2212274 - timestamp: 1727160957452 + size: 2332719 + timestamp: 1727424047974 - kind: conda name: libre2-11 - version: 2023.09.01 - build: h81f5012_2 - build_number: 2 + version: 2024.07.02 + build: hd530cb8_1 + build_number: 1 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2023.09.01-h81f5012_2.conda - sha256: 384b72a09bd4bb29c1aa085110b2f940dba431587ffb4e2c1a28f605887a1867 - md5: c5c36ec64e3c86504728c38b79011d08 + url: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-hd530cb8_1.conda + sha256: 2fac39fb704ded9584d1a9e7511163830016803f83852a724c2ccef1cc16e17b + md5: 1e14c67a5e8a9273a98b83fbc0905b99 depends: - __osx >=10.13 - libabseil * cxx17* - - libabseil >=20240116.1,<20240117.0a0 - - libcxx >=16 + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=17 constrains: - - re2 2023.09.01.* + - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 184017 - timestamp: 1708947106275 + size: 178580 + timestamp: 1728779037721 - kind: conda name: libsqlite version: 3.46.1 @@ -1456,23 +1456,22 @@ packages: timestamp: 1685837820566 - kind: conda name: libthrift - version: 0.20.0 - build: h75589b3_1 - build_number: 1 + version: 0.21.0 + build: h75589b3_0 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.20.0-h75589b3_1.conda - sha256: a1f40fcb9970fbfd6d0b825841b4127cf7dd7c54199d0b49bdbcd838b66f3b7a - md5: c20b01aa07ece86a237c580f7ba56923 + url: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.21.0-h75589b3_0.conda + sha256: 3f82eddd6de435a408538ac81a7a2c0c155877534761ec9cd7a2906c005cece2 + md5: 7a472cd20d9ae866aeb6e292b33381d6 depends: - __osx >=10.13 - libcxx >=17 - libevent >=2.1.12,<2.1.13.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.1,<4.0a0 + - openssl >=3.3.2,<4.0a0 license: Apache-2.0 license_family: APACHE - size: 324391 - timestamp: 1724657549149 + size: 332651 + timestamp: 1727206546431 - kind: conda name: libutf8proc version: 2.8.0 @@ -1619,24 +1618,24 @@ packages: - kind: conda name: numpy version: 1.26.4 - build: py310h4bfa8fc_0 + build: py39h28c39a1_0 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/numpy-1.26.4-py310h4bfa8fc_0.conda - sha256: 914476e2d3273fdf9c0419a7bdcb7b31a5ec25949e4afbc847297ff3a50c62c8 - md5: cd6a2298387f558c9ea70ee73a189791 + url: https://conda.anaconda.org/conda-forge/osx-64/numpy-1.26.4-py39h28c39a1_0.conda + sha256: 47f75135f6f85225709d5a8f05a0ac2c6a437c8a4cc53ce0f70e9b8766f23b1b + md5: 1b07000dc6aed4a69e91107dac4464d3 depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - libcxx >=16 - liblapack >=3.9.0,<4.0a0 - - python >=3.10,<3.11.0a0 - - python_abi 3.10.* *_cp310 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD - size: 6491938 - timestamp: 1707226191321 + size: 6481665 + timestamp: 1707226262838 - kind: conda name: openssl version: 3.3.2 @@ -1655,15 +1654,16 @@ packages: - kind: conda name: orc version: 2.0.2 - build: h22b2039_0 + build: h52ea4d3_1 + build_number: 1 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/orc-2.0.2-h22b2039_0.conda - sha256: b5a0667937d9d2d8d50e624e67fdc54c898a33013cd3a6fada343f3c4e69ae6e - md5: f7c6463d97edb79a39df8e5e90c53b1b + url: https://conda.anaconda.org/conda-forge/osx-64/orc-2.0.2-h52ea4d3_1.conda + sha256: 9004a65831743a3a52cc74312d454fb52d8a37141188f3a96f29d33e58215047 + md5: c217341f1416bab5d027e776981dccf4 depends: - __osx >=10.13 - - libcxx >=16 - - libprotobuf >=4.25.3,<4.25.4.0a0 + - libcxx >=17 + - libprotobuf >=5.27.5,<5.27.6.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - snappy >=1.2.1,<1.3.0a0 @@ -1671,8 +1671,8 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 466353 - timestamp: 1723760915178 + size: 475535 + timestamp: 1727242441383 - kind: conda name: packaging version: '24.1' @@ -1786,34 +1786,34 @@ packages: - kind: conda name: pyarrow version: 14.0.2 - build: py310hcd1d8fd_44_cpu - build_number: 44 + build: py39haecdfb1_47_cpu + build_number: 47 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-14.0.2-py310hcd1d8fd_44_cpu.conda - sha256: 72e075dc04023f6e277f58401f7b92cb5449ac8140cbaff368955e316ce044a7 - md5: e71831e4a21b0c82a9d9576c58e53d54 + url: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-14.0.2-py39haecdfb1_47_cpu.conda + sha256: b7f65f976c82b987943131c41b6122df170d8690750d26570fb3d088eb0195a3 + md5: 8f047d4d8cbe4978708d0ff4d5e00c0d depends: - __osx >=10.13 - - libarrow 14.0.2 h2902fa7_44_cpu - - libarrow-acero 14.0.2 hf036a51_44_cpu - - libarrow-dataset 14.0.2 hf036a51_44_cpu - - libarrow-flight 14.0.2 hd834827_44_cpu - - libarrow-flight-sql 14.0.2 he1e86a1_44_cpu - - libarrow-gandiva 14.0.2 hfa04d5a_44_cpu - - libarrow-substrait 14.0.2 he1e86a1_44_cpu - - libcxx >=16 - - libparquet 14.0.2 h808e2ea_44_cpu + - libarrow 14.0.2 h4caaaa1_47_cpu + - libarrow-acero 14.0.2 h97d8b74_47_cpu + - libarrow-dataset 14.0.2 h97d8b74_47_cpu + - libarrow-flight 14.0.2 h2627002_47_cpu + - libarrow-flight-sql 14.0.2 h5924cc9_47_cpu + - libarrow-gandiva 14.0.2 hbd7cc15_47_cpu + - libarrow-substrait 14.0.2 h5924cc9_47_cpu + - libcxx >=17 + - libparquet 14.0.2 h2be9fba_47_cpu - libzlib >=1.3.1,<2.0a0 - numpy >=1.22.4,<2.0a0 - - python >=3.10,<3.11.0a0 - - python_abi 3.10.* *_cp310 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 - tzdata constrains: - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 3917797 - timestamp: 1726709605670 + size: 3934803 + timestamp: 1728666592826 - kind: conda name: pycparser version: '2.22' @@ -1854,12 +1854,13 @@ packages: timestamp: 1725977334143 - kind: conda name: python - version: 3.10.15 - build: h6bafeb6_0_cpython + version: 3.9.20 + build: hf24efe3_1_cpython + build_number: 1 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/python-3.10.15-h6bafeb6_0_cpython.conda - sha256: 75a20a06c5844336e9e8c438097043ec02559e493feff51e6d11e365d7693a22 - md5: e83a11fdf5d883b29649c5c3075c2109 + url: https://conda.anaconda.org/conda-forge/osx-64/python-3.9.20-hf24efe3_1_cpython.conda + sha256: d2ee8b24fa298708967c5ea9edb0fc310691200fcafe35a5caca4b3341f7b0bc + md5: 0482528eb9c88cd5f2113b1c2921c9b9 depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 @@ -1873,58 +1874,58 @@ packages: - tzdata - xz >=5.2.6,<6.0a0 constrains: - - python_abi 3.10.* *_cp310 + - python_abi 3.9.* *_cp39 license: Python-2.0 - size: 11943878 - timestamp: 1726850340642 + size: 12411513 + timestamp: 1727719187767 - kind: conda name: python_abi - version: '3.10' - build: 5_cp310 + version: '3.9' + build: 5_cp39 build_number: 5 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.10-5_cp310.conda - sha256: 67eda423ceaf73e50be545464c289ad0c4aecf2df98cc3bbabd5eeded4ca0511 - md5: 5918a11cbc8e1650b2dde23b6ef7452c + url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.9-5_cp39.conda + sha256: 18224feb9a5ffb1ad5ae8eac21496f399befce29aeaaf929fff44dc827e9ac16 + md5: 09ac18c0db8f06c3913fa014ec016849 constrains: - - python 3.10.* *_cpython + - python 3.9.* *_cpython license: BSD-3-Clause license_family: BSD - size: 6319 - timestamp: 1723823093772 + size: 6294 + timestamp: 1723823176192 - kind: conda name: pyyaml version: 6.0.2 - build: py310h837254d_1 + build: py39h06d86d0_1 build_number: 1 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py310h837254d_1.conda - sha256: 9606edcb7578ee32c25688e16ca57eab590d047007d17f5ffbedc06438ba830c - md5: f66b37a401bdbf379080ba9c62854730 + url: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py39h06d86d0_1.conda + sha256: 37eb8d753d52d300e0bdbeb2baa394e770a4a1009eb4fb03e9c2ba179629faab + md5: 46dd423c757e1b7589e2e2d4a9945059 depends: - __osx >=10.13 - - python >=3.10,<3.11.0a0 - - python_abi 3.10.* *_cp310 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 - yaml >=0.2.5,<0.3.0a0 license: MIT license_family: MIT - size: 164184 - timestamp: 1725456348769 + size: 163637 + timestamp: 1725456332138 - kind: conda name: re2 - version: 2023.09.01 - build: hb168e87_2 - build_number: 2 + version: 2024.07.02 + build: h2fb0a26_1 + build_number: 1 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/re2-2023.09.01-hb168e87_2.conda - sha256: 5739ed2cfa62ed7f828eb4b9e6e69ff1df56cb9a9aacdc296451a3cb647034eb - md5: 266f8ca8528fc7e0fa31066c309ad864 + url: https://conda.anaconda.org/conda-forge/osx-64/re2-2024.07.02-h2fb0a26_1.conda + sha256: 49ec4ed6249efe9cda173745e036137f8de1f0b22edf9b0ca4f9c6409b2b68f9 + md5: aa8ea927cdbdf690efeae3e575716131 depends: - - libre2-11 2023.09.01 h81f5012_2 + - libre2-11 2024.07.02 hd530cb8_1 license: BSD-3-Clause license_family: BSD - size: 26814 - timestamp: 1708947195067 + size: 26864 + timestamp: 1728779054104 - kind: conda name: readline version: '8.2' @@ -2016,22 +2017,22 @@ packages: - kind: conda name: ukkonen version: 1.0.1 - build: py310hfa8da69_5 + build: py39h0d8d0ca_5 build_number: 5 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py310hfa8da69_5.conda - sha256: 326ad0a36c09aa74fed9277ab8b12002512a91252d426b0baad34fe11cc59568 - md5: b33e406764d2ffc9d23a0133f3b5fead + url: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py39h0d8d0ca_5.conda + sha256: ece1321d81a28df84dd53355ecbff721b1a00e32d22a4d6c7451a9c4854c8e28 + md5: 2ac0b0181380339a01151f5ac6471579 depends: - __osx >=10.13 - cffi - libcxx >=17 - - python >=3.10,<3.11.0a0 - - python_abi 3.10.* *_cp310 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 license: MIT license_family: MIT - size: 12925 - timestamp: 1725784218557 + size: 12930 + timestamp: 1725784201570 - kind: conda name: virtualenv version: 20.26.5 diff --git a/pixi.toml b/pixi.toml index a577f9d..c9c3111 100644 --- a/pixi.toml +++ b/pixi.toml @@ -13,7 +13,7 @@ platforms = ["osx-64"] pre-commit = "~=3.3.0" git = "2.42.0.*" -python = "=3.10" +python = "=3.9" pip = "*" go = "=1.21" pyarrow = "14.0.2" diff --git a/pkg/gen/cloud/v1/cloud.pb.go b/pkg/gen/cloud/v1/cloud.pb.go index 2ef98be..0a411b2 100644 --- a/pkg/gen/cloud/v1/cloud.pb.go +++ b/pkg/gen/cloud/v1/cloud.pb.go @@ -82,15 +82,15 @@ func (TaskStatusEnum) EnumDescriptor() ([]byte, []int) { return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{0} } -// ExecutionStatus represents the current state of a task or workflow execution +// ExecutionStatus represents the current state of a task or workflow execution. type ExecutionStatus int32 const ( - ExecutionStatus_EXECUTION_STATUS_UNSPECIFIED ExecutionStatus = 0 - ExecutionStatus_EXECUTION_STATUS_PENDING ExecutionStatus = 1 - ExecutionStatus_EXECUTION_STATUS_RUNNING ExecutionStatus = 2 - ExecutionStatus_EXECUTION_STATUS_COMPLETED ExecutionStatus = 3 - ExecutionStatus_EXECUTION_STATUS_FAILED ExecutionStatus = 4 + ExecutionStatus_EXECUTION_STATUS_UNSPECIFIED ExecutionStatus = 0 // Status is not specified. + ExecutionStatus_EXECUTION_STATUS_PENDING ExecutionStatus = 1 // Task or workflow is pending execution. + ExecutionStatus_EXECUTION_STATUS_RUNNING ExecutionStatus = 2 // Task or workflow is currently running. + ExecutionStatus_EXECUTION_STATUS_COMPLETED ExecutionStatus = 3 // Task or workflow has completed execution. + ExecutionStatus_EXECUTION_STATUS_FAILED ExecutionStatus = 4 // Task or workflow has failed. ) // Enum value maps for ExecutionStatus. @@ -340,12 +340,17 @@ type Task struct { // Payload containing task parameters. This field is required. Payload *Payload `protobuf:"bytes,8,opt,name=payload,proto3" json:"payload,omitempty"` // Description of the task. A large text string with a maximum length of 5000 characters. - Description string `protobuf:"bytes,9,opt,name=description,proto3" json:"description,omitempty"` - Dependencies []string `protobuf:"bytes,10,rep,name=dependencies,proto3" json:"dependencies,omitempty"` // IDs of tasks that must complete before this task - BaseImage string `protobuf:"bytes,11,opt,name=base_image,json=baseImage,proto3" json:"base_image,omitempty"` - Entrypoint string `protobuf:"bytes,12,opt,name=entrypoint,proto3" json:"entrypoint,omitempty"` - Args []string `protobuf:"bytes,13,rep,name=args,proto3" json:"args,omitempty"` - Env map[string]string `protobuf:"bytes,14,rep,name=env,proto3" json:"env,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Description string `protobuf:"bytes,9,opt,name=description,proto3" json:"description,omitempty"` + // IDs of tasks that must complete before this task. + Dependencies []string `protobuf:"bytes,10,rep,name=dependencies,proto3" json:"dependencies,omitempty"` + // Base image for the task execution environment. + BaseImage string `protobuf:"bytes,11,opt,name=base_image,json=baseImage,proto3" json:"base_image,omitempty"` + // Entrypoint for the task execution. + Entrypoint string `protobuf:"bytes,12,opt,name=entrypoint,proto3" json:"entrypoint,omitempty"` + // Arguments for the task execution. + Args []string `protobuf:"bytes,13,rep,name=args,proto3" json:"args,omitempty"` + // Environment variables for the task execution. + Env map[string]string `protobuf:"bytes,14,rep,name=env,proto3" json:"env,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *Task) Reset() { @@ -476,100 +481,22 @@ func (x *Task) GetEnv() map[string]string { return nil } -// Workflow represents a collection of tasks organized in a DAG -type Workflow struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Tasks []*Task `protobuf:"bytes,4,rep,name=tasks,proto3" json:"tasks,omitempty"` - Metadata map[string]string `protobuf:"bytes,5,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -} - -func (x *Workflow) Reset() { - *x = Workflow{} - mi := &file_cloud_v1_cloud_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Workflow) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Workflow) ProtoMessage() {} - -func (x *Workflow) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Workflow.ProtoReflect.Descriptor instead. -func (*Workflow) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{4} -} - -func (x *Workflow) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Workflow) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Workflow) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *Workflow) GetTasks() []*Task { - if x != nil { - return x.Tasks - } - return nil -} - -func (x *Workflow) GetMetadata() map[string]string { - if x != nil { - return x.Metadata - } - return nil -} - -// TaskExecution represents the execution of a task +// TaskExecution represents the execution of a task. type TaskExecution struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` - Status ExecutionStatus `protobuf:"varint,2,opt,name=status,proto3,enum=cloud.v1.ExecutionStatus" json:"status,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - ExecutionMetadata map[string]string `protobuf:"bytes,5,rep,name=execution_metadata,json=executionMetadata,proto3" json:"execution_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` // Unique identifier for the task being executed. + Status ExecutionStatus `protobuf:"varint,2,opt,name=status,proto3,enum=cloud.v1.ExecutionStatus" json:"status,omitempty"` // Current execution status of the task. + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Timestamp of when the task execution started. + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // Timestamp of the last update to the task execution. + ExecutionMetadata map[string]string `protobuf:"bytes,5,rep,name=execution_metadata,json=executionMetadata,proto3" json:"execution_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Metadata related to the task execution. } func (x *TaskExecution) Reset() { *x = TaskExecution{} - mi := &file_cloud_v1_cloud_proto_msgTypes[5] + mi := &file_cloud_v1_cloud_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -581,7 +508,7 @@ func (x *TaskExecution) String() string { func (*TaskExecution) ProtoMessage() {} func (x *TaskExecution) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[5] + mi := &file_cloud_v1_cloud_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -594,7 +521,7 @@ func (x *TaskExecution) ProtoReflect() protoreflect.Message { // Deprecated: Use TaskExecution.ProtoReflect.Descriptor instead. func (*TaskExecution) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{5} + return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{4} } func (x *TaskExecution) GetTaskId() string { @@ -632,92 +559,6 @@ func (x *TaskExecution) GetExecutionMetadata() map[string]string { return nil } -// WorkflowExecution represents the execution of a workflow -type WorkflowExecution struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - WorkflowId string `protobuf:"bytes,1,opt,name=workflow_id,json=workflowId,proto3" json:"workflow_id,omitempty"` - Status ExecutionStatus `protobuf:"varint,2,opt,name=status,proto3,enum=cloud.v1.ExecutionStatus" json:"status,omitempty"` - TaskExecutions []*TaskExecution `protobuf:"bytes,3,rep,name=task_executions,json=taskExecutions,proto3" json:"task_executions,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - ExecutionMetadata map[string]string `protobuf:"bytes,6,rep,name=execution_metadata,json=executionMetadata,proto3" json:"execution_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -} - -func (x *WorkflowExecution) Reset() { - *x = WorkflowExecution{} - mi := &file_cloud_v1_cloud_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *WorkflowExecution) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WorkflowExecution) ProtoMessage() {} - -func (x *WorkflowExecution) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WorkflowExecution.ProtoReflect.Descriptor instead. -func (*WorkflowExecution) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{6} -} - -func (x *WorkflowExecution) GetWorkflowId() string { - if x != nil { - return x.WorkflowId - } - return "" -} - -func (x *WorkflowExecution) GetStatus() ExecutionStatus { - if x != nil { - return x.Status - } - return ExecutionStatus_EXECUTION_STATUS_UNSPECIFIED -} - -func (x *WorkflowExecution) GetTaskExecutions() []*TaskExecution { - if x != nil { - return x.TaskExecutions - } - return nil -} - -func (x *WorkflowExecution) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *WorkflowExecution) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *WorkflowExecution) GetExecutionMetadata() map[string]string { - if x != nil { - return x.ExecutionMetadata - } - return nil -} - // Message for Task history type TaskHistory struct { state protoimpl.MessageState @@ -737,7 +578,7 @@ type TaskHistory struct { func (x *TaskHistory) Reset() { *x = TaskHistory{} - mi := &file_cloud_v1_cloud_proto_msgTypes[7] + mi := &file_cloud_v1_cloud_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -749,7 +590,7 @@ func (x *TaskHistory) String() string { func (*TaskHistory) ProtoMessage() {} func (x *TaskHistory) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[7] + mi := &file_cloud_v1_cloud_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -762,7 +603,7 @@ func (x *TaskHistory) ProtoReflect() protoreflect.Message { // Deprecated: Use TaskHistory.ProtoReflect.Descriptor instead. func (*TaskHistory) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{7} + return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{5} } func (x *TaskHistory) GetId() int32 { @@ -805,7 +646,7 @@ type GetTaskRequest struct { func (x *GetTaskRequest) Reset() { *x = GetTaskRequest{} - mi := &file_cloud_v1_cloud_proto_msgTypes[8] + mi := &file_cloud_v1_cloud_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -817,7 +658,7 @@ func (x *GetTaskRequest) String() string { func (*GetTaskRequest) ProtoMessage() {} func (x *GetTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[8] + mi := &file_cloud_v1_cloud_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -830,7 +671,7 @@ func (x *GetTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTaskRequest.ProtoReflect.Descriptor instead. func (*GetTaskRequest) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{8} + return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{6} } func (x *GetTaskRequest) GetId() int32 { @@ -852,7 +693,7 @@ type GetTaskHistoryRequest struct { func (x *GetTaskHistoryRequest) Reset() { *x = GetTaskHistoryRequest{} - mi := &file_cloud_v1_cloud_proto_msgTypes[9] + mi := &file_cloud_v1_cloud_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -864,7 +705,7 @@ func (x *GetTaskHistoryRequest) String() string { func (*GetTaskHistoryRequest) ProtoMessage() {} func (x *GetTaskHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[9] + mi := &file_cloud_v1_cloud_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -877,7 +718,7 @@ func (x *GetTaskHistoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTaskHistoryRequest.ProtoReflect.Descriptor instead. func (*GetTaskHistoryRequest) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{9} + return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{7} } func (x *GetTaskHistoryRequest) GetId() int32 { @@ -900,7 +741,7 @@ type GetTaskHistoryResponse struct { func (x *GetTaskHistoryResponse) Reset() { *x = GetTaskHistoryResponse{} - mi := &file_cloud_v1_cloud_proto_msgTypes[10] + mi := &file_cloud_v1_cloud_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -912,7 +753,7 @@ func (x *GetTaskHistoryResponse) String() string { func (*GetTaskHistoryResponse) ProtoMessage() {} func (x *GetTaskHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[10] + mi := &file_cloud_v1_cloud_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -925,7 +766,7 @@ func (x *GetTaskHistoryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTaskHistoryResponse.ProtoReflect.Descriptor instead. func (*GetTaskHistoryResponse) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{10} + return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{8} } func (x *GetTaskHistoryResponse) GetHistory() []*TaskHistory { @@ -951,7 +792,7 @@ type UpdateTaskStatusRequest struct { func (x *UpdateTaskStatusRequest) Reset() { *x = UpdateTaskStatusRequest{} - mi := &file_cloud_v1_cloud_proto_msgTypes[11] + mi := &file_cloud_v1_cloud_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -963,7 +804,7 @@ func (x *UpdateTaskStatusRequest) String() string { func (*UpdateTaskStatusRequest) ProtoMessage() {} func (x *UpdateTaskStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[11] + mi := &file_cloud_v1_cloud_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -976,7 +817,7 @@ func (x *UpdateTaskStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTaskStatusRequest.ProtoReflect.Descriptor instead. func (*UpdateTaskStatusRequest) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{11} + return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{9} } func (x *UpdateTaskStatusRequest) GetId() int32 { @@ -1000,6 +841,7 @@ func (x *UpdateTaskStatusRequest) GetMessage() string { return "" } +// Message for heartbeat request type HeartbeatRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1015,7 +857,7 @@ type HeartbeatRequest struct { func (x *HeartbeatRequest) Reset() { *x = HeartbeatRequest{} - mi := &file_cloud_v1_cloud_proto_msgTypes[12] + mi := &file_cloud_v1_cloud_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1027,7 +869,7 @@ func (x *HeartbeatRequest) String() string { func (*HeartbeatRequest) ProtoMessage() {} func (x *HeartbeatRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[12] + mi := &file_cloud_v1_cloud_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1040,7 +882,7 @@ func (x *HeartbeatRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use HeartbeatRequest.ProtoReflect.Descriptor instead. func (*HeartbeatRequest) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{12} + return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{10} } func (x *HeartbeatRequest) GetTimestamp() string { @@ -1057,6 +899,7 @@ func (x *HeartbeatRequest) GetUuid() string { return "" } +// Message for heartbeat response type HeartbeatResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1065,7 +908,7 @@ type HeartbeatResponse struct { func (x *HeartbeatResponse) Reset() { *x = HeartbeatResponse{} - mi := &file_cloud_v1_cloud_proto_msgTypes[13] + mi := &file_cloud_v1_cloud_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1077,7 +920,7 @@ func (x *HeartbeatResponse) String() string { func (*HeartbeatResponse) ProtoMessage() {} func (x *HeartbeatResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[13] + mi := &file_cloud_v1_cloud_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1090,7 +933,7 @@ func (x *HeartbeatResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use HeartbeatResponse.ProtoReflect.Descriptor instead. func (*HeartbeatResponse) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{13} + return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{11} } // Message for stream requests @@ -1102,7 +945,7 @@ type PullEventsRequest struct { func (x *PullEventsRequest) Reset() { *x = PullEventsRequest{} - mi := &file_cloud_v1_cloud_proto_msgTypes[14] + mi := &file_cloud_v1_cloud_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1114,7 +957,7 @@ func (x *PullEventsRequest) String() string { func (*PullEventsRequest) ProtoMessage() {} func (x *PullEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[14] + mi := &file_cloud_v1_cloud_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1127,7 +970,7 @@ func (x *PullEventsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PullEventsRequest.ProtoReflect.Descriptor instead. func (*PullEventsRequest) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{14} + return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{12} } // Message for stream responses @@ -1142,7 +985,7 @@ type PullEventsResponse struct { func (x *PullEventsResponse) Reset() { *x = PullEventsResponse{} - mi := &file_cloud_v1_cloud_proto_msgTypes[15] + mi := &file_cloud_v1_cloud_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1154,7 +997,7 @@ func (x *PullEventsResponse) String() string { func (*PullEventsResponse) ProtoMessage() {} func (x *PullEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[15] + mi := &file_cloud_v1_cloud_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1167,7 +1010,7 @@ func (x *PullEventsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PullEventsResponse.ProtoReflect.Descriptor instead. func (*PullEventsResponse) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{15} + return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{13} } func (x *PullEventsResponse) GetWork() *WorkAssignment { @@ -1183,15 +1026,15 @@ type WorkAssignment struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Unique identifier for the assignment + // Unique identifier for the assignment. AssignmentId int64 `protobuf:"varint,1,opt,name=assignment_id,json=assignmentId,proto3" json:"assignment_id,omitempty"` - // The task to be executed + // The task to be executed. Task *Task `protobuf:"bytes,2,opt,name=task,proto3" json:"task,omitempty"` } func (x *WorkAssignment) Reset() { *x = WorkAssignment{} - mi := &file_cloud_v1_cloud_proto_msgTypes[16] + mi := &file_cloud_v1_cloud_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1203,7 +1046,7 @@ func (x *WorkAssignment) String() string { func (*WorkAssignment) ProtoMessage() {} func (x *WorkAssignment) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[16] + mi := &file_cloud_v1_cloud_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1216,7 +1059,7 @@ func (x *WorkAssignment) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkAssignment.ProtoReflect.Descriptor instead. func (*WorkAssignment) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{16} + return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{14} } func (x *WorkAssignment) GetAssignmentId() int64 { @@ -1242,7 +1085,7 @@ type GetStatusRequest struct { func (x *GetStatusRequest) Reset() { *x = GetStatusRequest{} - mi := &file_cloud_v1_cloud_proto_msgTypes[17] + mi := &file_cloud_v1_cloud_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1254,7 +1097,7 @@ func (x *GetStatusRequest) String() string { func (*GetStatusRequest) ProtoMessage() {} func (x *GetStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[17] + mi := &file_cloud_v1_cloud_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1267,7 +1110,7 @@ func (x *GetStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStatusRequest.ProtoReflect.Descriptor instead. func (*GetStatusRequest) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{17} + return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{15} } // Message for GetStatus response @@ -1282,7 +1125,7 @@ type GetStatusResponse struct { func (x *GetStatusResponse) Reset() { *x = GetStatusResponse{} - mi := &file_cloud_v1_cloud_proto_msgTypes[18] + mi := &file_cloud_v1_cloud_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1294,7 +1137,7 @@ func (x *GetStatusResponse) String() string { func (*GetStatusResponse) ProtoMessage() {} func (x *GetStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[18] + mi := &file_cloud_v1_cloud_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1307,7 +1150,7 @@ func (x *GetStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStatusResponse.ProtoReflect.Descriptor instead. func (*GetStatusResponse) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{18} + return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{16} } func (x *GetStatusResponse) GetStatusCounts() map[int32]int64 { @@ -1323,12 +1166,13 @@ type TaskList struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Tasks []*Task `protobuf:"bytes,1,rep,name=tasks,proto3" json:"tasks,omitempty"` // List of tasks in the system. + // List of tasks in the system. + Tasks []*Task `protobuf:"bytes,1,rep,name=tasks,proto3" json:"tasks,omitempty"` } func (x *TaskList) Reset() { *x = TaskList{} - mi := &file_cloud_v1_cloud_proto_msgTypes[19] + mi := &file_cloud_v1_cloud_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1340,7 +1184,7 @@ func (x *TaskList) String() string { func (*TaskList) ProtoMessage() {} func (x *TaskList) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[19] + mi := &file_cloud_v1_cloud_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1353,7 +1197,7 @@ func (x *TaskList) ProtoReflect() protoreflect.Message { // Deprecated: Use TaskList.ProtoReflect.Descriptor instead. func (*TaskList) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{19} + return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{17} } func (x *TaskList) GetTasks() []*Task { @@ -1384,7 +1228,7 @@ type TaskListRequest struct { func (x *TaskListRequest) Reset() { *x = TaskListRequest{} - mi := &file_cloud_v1_cloud_proto_msgTypes[20] + mi := &file_cloud_v1_cloud_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1396,7 +1240,7 @@ func (x *TaskListRequest) String() string { func (*TaskListRequest) ProtoMessage() {} func (x *TaskListRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_v1_cloud_proto_msgTypes[20] + mi := &file_cloud_v1_cloud_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1409,7 +1253,7 @@ func (x *TaskListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TaskListRequest.ProtoReflect.Descriptor instead. func (*TaskListRequest) Descriptor() ([]byte, []int) { - return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{20} + return file_cloud_v1_cloud_proto_rawDescGZIP(), []int{18} } func (x *TaskListRequest) GetLimit() int32 { @@ -1517,226 +1361,182 @@ var file_cloud_v1_cloud_proto_rawDesc = []byte{ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0xf1, 0x01, 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf6, 0x02, 0x0a, 0x0d, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, - 0x12, 0x31, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x19, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, - 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x5d, 0x0a, 0x12, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x44, 0x0a, 0x16, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc8, - 0x03, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x40, 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, - 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, - 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x74, 0x61, 0x73, 0x6b, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x01, 0x22, 0xf6, 0x02, 0x0a, 0x0d, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x61, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x1a, 0x44, 0x0a, 0x16, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd4, 0x01, 0x0a, 0x0b, 0x54, 0x61, - 0x73, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x1a, 0x02, 0x28, 0x00, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, - 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x2d, 0xfa, 0x42, 0x2a, 0x72, 0x28, 0x32, 0x26, 0x5e, 0x5c, 0x64, 0x7b, 0x34, - 0x7d, 0x2d, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x2d, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x54, 0x5c, 0x64, - 0x7b, 0x32, 0x7d, 0x3a, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x3a, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x5a, - 0x24, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x22, 0x0a, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x22, 0x29, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x5d, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, + 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x1a, 0x44, 0x0a, 0x16, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd4, 0x01, 0x0a, 0x0b, 0x54, + 0x61, 0x73, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x1a, 0x02, 0x28, 0x00, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x4c, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x2d, 0xfa, 0x42, 0x2a, 0x72, 0x28, 0x32, 0x26, 0x5e, 0x5c, 0x64, 0x7b, + 0x34, 0x7d, 0x2d, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x2d, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x54, 0x5c, + 0x64, 0x7b, 0x32, 0x7d, 0x3a, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x3a, 0x5c, 0x64, 0x7b, 0x32, 0x7d, + 0x5a, 0x24, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x22, 0x0a, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x22, 0x29, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x1a, 0x02, 0x28, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x30, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x1a, 0x02, 0x28, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x56, + 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x68, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x92, 0x01, 0x05, 0x08, 0x01, 0x10, 0xe8, 0x07, 0x52, 0x07, 0x68, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x92, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x1a, 0x02, 0x28, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x30, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x1a, 0x02, 0x28, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x56, 0x0a, - 0x16, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, - 0x0b, 0xfa, 0x42, 0x08, 0x92, 0x01, 0x05, 0x08, 0x01, 0x10, 0xe8, 0x07, 0x52, 0x07, 0x68, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x92, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x1a, 0x02, 0x28, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, - 0x0f, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x10, 0x48, - 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x4b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x2d, 0xfa, 0x42, 0x2a, 0x72, 0x28, 0x32, 0x26, 0x5e, 0x5c, 0x64, 0x7b, 0x34, - 0x7d, 0x2d, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x2d, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x54, 0x5c, 0x64, - 0x7b, 0x32, 0x7d, 0x3a, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x3a, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x5a, - 0x24, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x75, 0x0a, 0x04, - 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x61, 0xfa, 0x42, 0x5e, 0x72, - 0x5c, 0x32, 0x5a, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, - 0x38, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, - 0x7d, 0x2d, 0x5b, 0x31, 0x2d, 0x35, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, - 0x46, 0x5d, 0x7b, 0x33, 0x7d, 0x2d, 0x5b, 0x38, 0x39, 0x61, 0x62, 0x41, 0x42, 0x5d, 0x5b, 0x30, - 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x33, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, - 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x31, 0x32, 0x7d, 0x24, 0x52, 0x04, 0x75, - 0x75, 0x69, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x0a, 0x11, 0x50, 0x75, 0x6c, 0x6c, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x42, 0x0a, - 0x12, 0x50, 0x75, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x77, 0x6f, 0x72, - 0x6b, 0x22, 0x63, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x73, 0x73, 0x69, - 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x22, 0x12, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa8, 0x01, 0x0a, 0x11, 0x47, - 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x52, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x30, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x24, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0e, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, - 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0xd5, 0x01, 0x0a, 0x0f, 0x54, 0x61, 0x73, 0x6b, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x1a, - 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x1a, 0x02, 0x28, 0x00, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x35, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1c, 0xfa, 0x42, 0x19, 0x72, 0x17, 0x52, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x5f, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x09, 0x72, 0x75, 0x6e, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2a, - 0x5a, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0a, 0x0a, 0x06, 0x51, 0x55, 0x45, 0x55, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, - 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, - 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, - 0x44, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, - 0x10, 0x04, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x05, 0x2a, 0xac, 0x01, 0x0a, 0x0f, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x20, 0x0a, 0x1c, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, - 0x1c, 0x0a, 0x18, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x1e, 0x0a, - 0x1a, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1b, 0x0a, - 0x17, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x32, 0xdc, 0x04, 0x0a, 0x15, 0x54, - 0x61, 0x73, 0x6b, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, - 0x73, 0x6b, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1c, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x35, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x18, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x61, 0x73, 0x6b, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, - 0x73, 0x6b, 0x73, 0x12, 0x19, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, - 0x73, 0x74, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0xfa, 0x42, 0x04, 0x1a, 0x02, 0x28, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, + 0xd0, 0x0f, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x10, + 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x4b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x2d, 0xfa, 0x42, 0x2a, 0x72, 0x28, 0x32, 0x26, 0x5e, 0x5c, 0x64, 0x7b, + 0x34, 0x7d, 0x2d, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x2d, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x54, 0x5c, + 0x64, 0x7b, 0x32, 0x7d, 0x3a, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x3a, 0x5c, 0x64, 0x7b, 0x32, 0x7d, + 0x5a, 0x24, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x75, 0x0a, + 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x61, 0xfa, 0x42, 0x5e, + 0x72, 0x5c, 0x32, 0x5a, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, + 0x7b, 0x38, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, + 0x34, 0x7d, 0x2d, 0x5b, 0x31, 0x2d, 0x35, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, + 0x2d, 0x46, 0x5d, 0x7b, 0x33, 0x7d, 0x2d, 0x5b, 0x38, 0x39, 0x61, 0x62, 0x41, 0x42, 0x5d, 0x5b, + 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x33, 0x7d, 0x2d, 0x5b, 0x30, + 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x31, 0x32, 0x7d, 0x24, 0x52, 0x04, + 0x75, 0x75, 0x69, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x0a, 0x11, 0x50, 0x75, 0x6c, + 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x42, + 0x0a, 0x12, 0x50, 0x75, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x77, 0x6f, + 0x72, 0x6b, 0x22, 0x63, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x73, 0x73, + 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x61, 0x73, + 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x22, 0x12, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa8, 0x01, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x52, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x30, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, + 0x6b, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0xd5, 0x01, 0x0a, 0x0f, 0x54, 0x61, 0x73, + 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0xfa, 0x42, 0x06, + 0x1a, 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x1a, 0x02, 0x28, 0x00, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x35, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x1c, 0xfa, 0x42, 0x19, 0x72, 0x17, 0x52, 0x0a, 0x73, 0x65, 0x6e, 0x64, + 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x09, 0x72, 0x75, 0x6e, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x2a, 0x5a, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0a, 0x0a, 0x06, 0x51, 0x55, 0x45, 0x55, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, + 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, + 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, + 0x45, 0x44, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, + 0x4e, 0x10, 0x04, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x05, 0x2a, 0xac, 0x01, 0x0a, + 0x0f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x20, 0x0a, 0x1c, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, + 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x1e, + 0x0a, 0x1a, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1b, + 0x0a, 0x17, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x32, 0xdc, 0x04, 0x0a, 0x15, + 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x35, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x18, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x61, 0x73, 0x6b, 0x73, 0x12, 0x19, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x12, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4c, + 0x69, 0x73, 0x74, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x10, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x21, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x09, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x09, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, - 0x74, 0x12, 0x1a, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, - 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, - 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, - 0x50, 0x75, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x42, 0x7a, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1d, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x58, 0x58, 0xaa, 0x02, 0x08, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x08, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, - 0x56, 0x31, 0xe2, 0x02, 0x14, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x09, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x10, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x21, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x46, 0x0a, + 0x09, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x09, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, + 0x61, 0x74, 0x12, 0x1a, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, + 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, + 0x65, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, + 0x0a, 0x50, 0x75, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x42, 0x7a, 0x0a, 0x0c, 0x63, 0x6f, + 0x6d, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1d, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, 0x31, 0x3b, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x58, 0x58, 0xaa, 0x02, 0x08, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x08, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x14, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x09, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1752,7 +1552,7 @@ func file_cloud_v1_cloud_proto_rawDescGZIP() []byte { } var file_cloud_v1_cloud_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_cloud_v1_cloud_proto_msgTypes = make([]protoimpl.MessageInfo, 27) +var file_cloud_v1_cloud_proto_msgTypes = make([]protoimpl.MessageInfo, 23) var file_cloud_v1_cloud_proto_goTypes = []any{ (TaskStatusEnum)(0), // 0: cloud.v1.TaskStatusEnum (ExecutionStatus)(0), // 1: cloud.v1.ExecutionStatus @@ -1760,78 +1560,67 @@ var file_cloud_v1_cloud_proto_goTypes = []any{ (*CreateTaskRequest)(nil), // 3: cloud.v1.CreateTaskRequest (*CreateTaskResponse)(nil), // 4: cloud.v1.CreateTaskResponse (*Task)(nil), // 5: cloud.v1.Task - (*Workflow)(nil), // 6: cloud.v1.Workflow - (*TaskExecution)(nil), // 7: cloud.v1.TaskExecution - (*WorkflowExecution)(nil), // 8: cloud.v1.WorkflowExecution - (*TaskHistory)(nil), // 9: cloud.v1.TaskHistory - (*GetTaskRequest)(nil), // 10: cloud.v1.GetTaskRequest - (*GetTaskHistoryRequest)(nil), // 11: cloud.v1.GetTaskHistoryRequest - (*GetTaskHistoryResponse)(nil), // 12: cloud.v1.GetTaskHistoryResponse - (*UpdateTaskStatusRequest)(nil), // 13: cloud.v1.UpdateTaskStatusRequest - (*HeartbeatRequest)(nil), // 14: cloud.v1.HeartbeatRequest - (*HeartbeatResponse)(nil), // 15: cloud.v1.HeartbeatResponse - (*PullEventsRequest)(nil), // 16: cloud.v1.PullEventsRequest - (*PullEventsResponse)(nil), // 17: cloud.v1.PullEventsResponse - (*WorkAssignment)(nil), // 18: cloud.v1.WorkAssignment - (*GetStatusRequest)(nil), // 19: cloud.v1.GetStatusRequest - (*GetStatusResponse)(nil), // 20: cloud.v1.GetStatusResponse - (*TaskList)(nil), // 21: cloud.v1.TaskList - (*TaskListRequest)(nil), // 22: cloud.v1.TaskListRequest - nil, // 23: cloud.v1.Payload.ParametersEntry - nil, // 24: cloud.v1.Task.EnvEntry - nil, // 25: cloud.v1.Workflow.MetadataEntry - nil, // 26: cloud.v1.TaskExecution.ExecutionMetadataEntry - nil, // 27: cloud.v1.WorkflowExecution.ExecutionMetadataEntry - nil, // 28: cloud.v1.GetStatusResponse.StatusCountsEntry - (*timestamppb.Timestamp)(nil), // 29: google.protobuf.Timestamp - (*emptypb.Empty)(nil), // 30: google.protobuf.Empty + (*TaskExecution)(nil), // 6: cloud.v1.TaskExecution + (*TaskHistory)(nil), // 7: cloud.v1.TaskHistory + (*GetTaskRequest)(nil), // 8: cloud.v1.GetTaskRequest + (*GetTaskHistoryRequest)(nil), // 9: cloud.v1.GetTaskHistoryRequest + (*GetTaskHistoryResponse)(nil), // 10: cloud.v1.GetTaskHistoryResponse + (*UpdateTaskStatusRequest)(nil), // 11: cloud.v1.UpdateTaskStatusRequest + (*HeartbeatRequest)(nil), // 12: cloud.v1.HeartbeatRequest + (*HeartbeatResponse)(nil), // 13: cloud.v1.HeartbeatResponse + (*PullEventsRequest)(nil), // 14: cloud.v1.PullEventsRequest + (*PullEventsResponse)(nil), // 15: cloud.v1.PullEventsResponse + (*WorkAssignment)(nil), // 16: cloud.v1.WorkAssignment + (*GetStatusRequest)(nil), // 17: cloud.v1.GetStatusRequest + (*GetStatusResponse)(nil), // 18: cloud.v1.GetStatusResponse + (*TaskList)(nil), // 19: cloud.v1.TaskList + (*TaskListRequest)(nil), // 20: cloud.v1.TaskListRequest + nil, // 21: cloud.v1.Payload.ParametersEntry + nil, // 22: cloud.v1.Task.EnvEntry + nil, // 23: cloud.v1.TaskExecution.ExecutionMetadataEntry + nil, // 24: cloud.v1.GetStatusResponse.StatusCountsEntry + (*timestamppb.Timestamp)(nil), // 25: google.protobuf.Timestamp + (*emptypb.Empty)(nil), // 26: google.protobuf.Empty } var file_cloud_v1_cloud_proto_depIdxs = []int32{ - 23, // 0: cloud.v1.Payload.parameters:type_name -> cloud.v1.Payload.ParametersEntry + 21, // 0: cloud.v1.Payload.parameters:type_name -> cloud.v1.Payload.ParametersEntry 2, // 1: cloud.v1.CreateTaskRequest.payload:type_name -> cloud.v1.Payload 0, // 2: cloud.v1.Task.status:type_name -> cloud.v1.TaskStatusEnum 2, // 3: cloud.v1.Task.payload:type_name -> cloud.v1.Payload - 24, // 4: cloud.v1.Task.env:type_name -> cloud.v1.Task.EnvEntry - 5, // 5: cloud.v1.Workflow.tasks:type_name -> cloud.v1.Task - 25, // 6: cloud.v1.Workflow.metadata:type_name -> cloud.v1.Workflow.MetadataEntry - 1, // 7: cloud.v1.TaskExecution.status:type_name -> cloud.v1.ExecutionStatus - 29, // 8: cloud.v1.TaskExecution.created_at:type_name -> google.protobuf.Timestamp - 29, // 9: cloud.v1.TaskExecution.updated_at:type_name -> google.protobuf.Timestamp - 26, // 10: cloud.v1.TaskExecution.execution_metadata:type_name -> cloud.v1.TaskExecution.ExecutionMetadataEntry - 1, // 11: cloud.v1.WorkflowExecution.status:type_name -> cloud.v1.ExecutionStatus - 7, // 12: cloud.v1.WorkflowExecution.task_executions:type_name -> cloud.v1.TaskExecution - 29, // 13: cloud.v1.WorkflowExecution.created_at:type_name -> google.protobuf.Timestamp - 29, // 14: cloud.v1.WorkflowExecution.updated_at:type_name -> google.protobuf.Timestamp - 27, // 15: cloud.v1.WorkflowExecution.execution_metadata:type_name -> cloud.v1.WorkflowExecution.ExecutionMetadataEntry - 0, // 16: cloud.v1.TaskHistory.status:type_name -> cloud.v1.TaskStatusEnum - 9, // 17: cloud.v1.GetTaskHistoryResponse.history:type_name -> cloud.v1.TaskHistory - 0, // 18: cloud.v1.UpdateTaskStatusRequest.status:type_name -> cloud.v1.TaskStatusEnum - 18, // 19: cloud.v1.PullEventsResponse.work:type_name -> cloud.v1.WorkAssignment - 5, // 20: cloud.v1.WorkAssignment.task:type_name -> cloud.v1.Task - 28, // 21: cloud.v1.GetStatusResponse.status_counts:type_name -> cloud.v1.GetStatusResponse.StatusCountsEntry - 5, // 22: cloud.v1.TaskList.tasks:type_name -> cloud.v1.Task - 0, // 23: cloud.v1.TaskListRequest.status:type_name -> cloud.v1.TaskStatusEnum - 3, // 24: cloud.v1.TaskManagementService.CreateTask:input_type -> cloud.v1.CreateTaskRequest - 10, // 25: cloud.v1.TaskManagementService.GetTask:input_type -> cloud.v1.GetTaskRequest - 22, // 26: cloud.v1.TaskManagementService.ListTasks:input_type -> cloud.v1.TaskListRequest - 11, // 27: cloud.v1.TaskManagementService.GetTaskHistory:input_type -> cloud.v1.GetTaskHistoryRequest - 13, // 28: cloud.v1.TaskManagementService.UpdateTaskStatus:input_type -> cloud.v1.UpdateTaskStatusRequest - 19, // 29: cloud.v1.TaskManagementService.GetStatus:input_type -> cloud.v1.GetStatusRequest - 14, // 30: cloud.v1.TaskManagementService.Heartbeat:input_type -> cloud.v1.HeartbeatRequest - 16, // 31: cloud.v1.TaskManagementService.PullEvents:input_type -> cloud.v1.PullEventsRequest - 4, // 32: cloud.v1.TaskManagementService.CreateTask:output_type -> cloud.v1.CreateTaskResponse - 5, // 33: cloud.v1.TaskManagementService.GetTask:output_type -> cloud.v1.Task - 21, // 34: cloud.v1.TaskManagementService.ListTasks:output_type -> cloud.v1.TaskList - 12, // 35: cloud.v1.TaskManagementService.GetTaskHistory:output_type -> cloud.v1.GetTaskHistoryResponse - 30, // 36: cloud.v1.TaskManagementService.UpdateTaskStatus:output_type -> google.protobuf.Empty - 20, // 37: cloud.v1.TaskManagementService.GetStatus:output_type -> cloud.v1.GetStatusResponse - 15, // 38: cloud.v1.TaskManagementService.Heartbeat:output_type -> cloud.v1.HeartbeatResponse - 17, // 39: cloud.v1.TaskManagementService.PullEvents:output_type -> cloud.v1.PullEventsResponse - 32, // [32:40] is the sub-list for method output_type - 24, // [24:32] is the sub-list for method input_type - 24, // [24:24] is the sub-list for extension type_name - 24, // [24:24] is the sub-list for extension extendee - 0, // [0:24] is the sub-list for field type_name + 22, // 4: cloud.v1.Task.env:type_name -> cloud.v1.Task.EnvEntry + 1, // 5: cloud.v1.TaskExecution.status:type_name -> cloud.v1.ExecutionStatus + 25, // 6: cloud.v1.TaskExecution.created_at:type_name -> google.protobuf.Timestamp + 25, // 7: cloud.v1.TaskExecution.updated_at:type_name -> google.protobuf.Timestamp + 23, // 8: cloud.v1.TaskExecution.execution_metadata:type_name -> cloud.v1.TaskExecution.ExecutionMetadataEntry + 0, // 9: cloud.v1.TaskHistory.status:type_name -> cloud.v1.TaskStatusEnum + 7, // 10: cloud.v1.GetTaskHistoryResponse.history:type_name -> cloud.v1.TaskHistory + 0, // 11: cloud.v1.UpdateTaskStatusRequest.status:type_name -> cloud.v1.TaskStatusEnum + 16, // 12: cloud.v1.PullEventsResponse.work:type_name -> cloud.v1.WorkAssignment + 5, // 13: cloud.v1.WorkAssignment.task:type_name -> cloud.v1.Task + 24, // 14: cloud.v1.GetStatusResponse.status_counts:type_name -> cloud.v1.GetStatusResponse.StatusCountsEntry + 5, // 15: cloud.v1.TaskList.tasks:type_name -> cloud.v1.Task + 0, // 16: cloud.v1.TaskListRequest.status:type_name -> cloud.v1.TaskStatusEnum + 3, // 17: cloud.v1.TaskManagementService.CreateTask:input_type -> cloud.v1.CreateTaskRequest + 8, // 18: cloud.v1.TaskManagementService.GetTask:input_type -> cloud.v1.GetTaskRequest + 20, // 19: cloud.v1.TaskManagementService.ListTasks:input_type -> cloud.v1.TaskListRequest + 9, // 20: cloud.v1.TaskManagementService.GetTaskHistory:input_type -> cloud.v1.GetTaskHistoryRequest + 11, // 21: cloud.v1.TaskManagementService.UpdateTaskStatus:input_type -> cloud.v1.UpdateTaskStatusRequest + 17, // 22: cloud.v1.TaskManagementService.GetStatus:input_type -> cloud.v1.GetStatusRequest + 12, // 23: cloud.v1.TaskManagementService.Heartbeat:input_type -> cloud.v1.HeartbeatRequest + 14, // 24: cloud.v1.TaskManagementService.PullEvents:input_type -> cloud.v1.PullEventsRequest + 4, // 25: cloud.v1.TaskManagementService.CreateTask:output_type -> cloud.v1.CreateTaskResponse + 5, // 26: cloud.v1.TaskManagementService.GetTask:output_type -> cloud.v1.Task + 19, // 27: cloud.v1.TaskManagementService.ListTasks:output_type -> cloud.v1.TaskList + 10, // 28: cloud.v1.TaskManagementService.GetTaskHistory:output_type -> cloud.v1.GetTaskHistoryResponse + 26, // 29: cloud.v1.TaskManagementService.UpdateTaskStatus:output_type -> google.protobuf.Empty + 18, // 30: cloud.v1.TaskManagementService.GetStatus:output_type -> cloud.v1.GetStatusResponse + 13, // 31: cloud.v1.TaskManagementService.Heartbeat:output_type -> cloud.v1.HeartbeatResponse + 15, // 32: cloud.v1.TaskManagementService.PullEvents:output_type -> cloud.v1.PullEventsResponse + 25, // [25:33] is the sub-list for method output_type + 17, // [17:25] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name } func init() { file_cloud_v1_cloud_proto_init() } @@ -1839,14 +1628,14 @@ func file_cloud_v1_cloud_proto_init() { if File_cloud_v1_cloud_proto != nil { return } - file_cloud_v1_cloud_proto_msgTypes[20].OneofWrappers = []any{} + file_cloud_v1_cloud_proto_msgTypes[18].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cloud_v1_cloud_proto_rawDesc, NumEnums: 2, - NumMessages: 27, + NumMessages: 23, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/gen/cloud/v1/cloud.swagger.json b/pkg/gen/cloud/v1/cloud.swagger.json index 3fe7150..b7b936b 100644 --- a/pkg/gen/cloud/v1/cloud.swagger.json +++ b/pkg/gen/cloud/v1/cloud.swagger.json @@ -86,7 +86,8 @@ }, "v1HeartbeatResponse": { "type": "object", - "description": "Response message for the heartbeat request.\n Currently, this message is empty, indicating successful receipt of the heartbeat." + "description": "Response message for the heartbeat request.\n Currently, this message is empty, indicating successful receipt of the heartbeat.", + "title": "Message for heartbeat response" }, "v1Payload": { "type": "object", @@ -158,25 +159,29 @@ "items": { "type": "string" }, - "title": "IDs of tasks that must complete before this task" + "description": "IDs of tasks that must complete before this task." }, "baseImage": { - "type": "string" + "type": "string", + "description": "Base image for the task execution environment." }, "entrypoint": { - "type": "string" + "type": "string", + "description": "Entrypoint for the task execution." }, "args": { "type": "array", "items": { "type": "string" - } + }, + "description": "Arguments for the task execution." }, "env": { "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "Environment variables for the task execution." } }, "title": "Message for Task status" @@ -238,11 +243,11 @@ "assignmentId": { "type": "string", "format": "int64", - "title": "Unique identifier for the assignment" + "description": "Unique identifier for the assignment." }, "task": { "$ref": "#/definitions/v1Task", - "title": "The task to be executed" + "description": "The task to be executed." } }, "title": "Message for work assignments" diff --git a/pkg/gen/cloud/v1/cloud_grpc.pb.go b/pkg/gen/cloud/v1/cloud_grpc.pb.go index 784a833..4fba9d7 100644 --- a/pkg/gen/cloud/v1/cloud_grpc.pb.go +++ b/pkg/gen/cloud/v1/cloud_grpc.pb.go @@ -54,7 +54,9 @@ type TaskManagementServiceClient interface { // Retrieves the count of tasks for each status. // Returns a GetStatusResponse containing a map of status counts. GetStatus(ctx context.Context, in *GetStatusRequest, opts ...grpc.CallOption) (*GetStatusResponse, error) + // Sends a heartbeat signal to indicate the service is alive. Heartbeat(ctx context.Context, in *HeartbeatRequest, opts ...grpc.CallOption) (*HeartbeatResponse, error) + // Pulls events related to task execution. PullEvents(ctx context.Context, in *PullEventsRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[PullEventsResponse], error) } @@ -179,7 +181,9 @@ type TaskManagementServiceServer interface { // Retrieves the count of tasks for each status. // Returns a GetStatusResponse containing a map of status counts. GetStatus(context.Context, *GetStatusRequest) (*GetStatusResponse, error) + // Sends a heartbeat signal to indicate the service is alive. Heartbeat(context.Context, *HeartbeatRequest) (*HeartbeatResponse, error) + // Pulls events related to task execution. PullEvents(*PullEventsRequest, grpc.ServerStreamingServer[PullEventsResponse]) error mustEmbedUnimplementedTaskManagementServiceServer() } diff --git a/pkg/gen/cloud/v1/cloudv1connect/cloud.connect.go b/pkg/gen/cloud/v1/cloudv1connect/cloud.connect.go index 6d97232..a3f101e 100644 --- a/pkg/gen/cloud/v1/cloudv1connect/cloud.connect.go +++ b/pkg/gen/cloud/v1/cloudv1connect/cloud.connect.go @@ -80,7 +80,9 @@ type TaskManagementServiceClient interface { // Retrieves the count of tasks for each status. // Returns a GetStatusResponse containing a map of status counts. GetStatus(context.Context, *connect.Request[v1.GetStatusRequest]) (*connect.Response[v1.GetStatusResponse], error) + // Sends a heartbeat signal to indicate the service is alive. Heartbeat(context.Context, *connect.Request[v1.HeartbeatRequest]) (*connect.Response[v1.HeartbeatResponse], error) + // Pulls events related to task execution. PullEvents(context.Context, *connect.Request[v1.PullEventsRequest]) (*connect.ServerStreamForClient[v1.PullEventsResponse], error) } @@ -209,7 +211,9 @@ type TaskManagementServiceHandler interface { // Retrieves the count of tasks for each status. // Returns a GetStatusResponse containing a map of status counts. GetStatus(context.Context, *connect.Request[v1.GetStatusRequest]) (*connect.Response[v1.GetStatusResponse], error) + // Sends a heartbeat signal to indicate the service is alive. Heartbeat(context.Context, *connect.Request[v1.HeartbeatRequest]) (*connect.Response[v1.HeartbeatResponse], error) + // Pulls events related to task execution. PullEvents(context.Context, *connect.Request[v1.PullEventsRequest], *connect.ServerStream[v1.PullEventsResponse]) error } diff --git a/pkg/gen/index.html b/pkg/gen/index.html index 1c87160..6ed32f0 100644 --- a/pkg/gen/index.html +++ b/pkg/gen/index.html @@ -174,129 +174,6 @@

Table of Contents

- - - - -
-

validate/validate.proto

Top -
-

- - -

AnyRules

-

AnyRules describe constraints applied exclusively to the

`google.protobuf.Any` well-known type

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
requiredbooloptional

Required specifies that this field must be set

instringrepeated

In specifies that this field's `type_url` must be equal to one of the -specified values.

not_instringrepeated

NotIn specifies that this field's `type_url` must not be equal to any of -the specified values.

- - - - - -

BoolRules

-

BoolRules describes the constraints applied to `bool` values

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
constbooloptional

Const specifies that this field must be exactly the specified value

- - - - - -

BytesRules

-

BytesRules describe the constraints applied to `bytes` values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
constbytesoptional

Const specifies that this field must be exactly the specified value

lenuint64optional

Len specifies that this field must be the specified number of bytes

min_lenuint64optional

MinLen specifies that this field must be the specified number of bytes -at a minimum

max_lenuint64optional

MaxLen specifies that this field must be the specified number of bytes -at a maximum

patternstringoptional

Pattern specifies that this field must match against the specified -regular expression (RE2 syntax). The included expression should elide -any delimiters.

prefixbytesoptional

Prefix specifies that this field must have the specified bytes at the -beginning of the string.

suffixbytesoptional

Suffix specifies that this field must have the specified bytes at the -end of the string.

containsbytesoptional

Contains specifies that this field must have the specified bytes -anywhere in the string.

inbytesrepeated

In specifies that this field must be equal to one of the specified -values

not_inbytesrepeated

NotIn specifies that this field cannot be equal to one of the specified -values

ipbooloptional

Ip specifies that the field must be a valid IP (v4 or v6) address in -byte format

ipv4booloptional

Ipv4 specifies that the field must be a valid IPv4 address in byte -format

ipv6booloptional

Ipv6 specifies that the field must be a valid IPv6 address in byte -format

ignore_emptybooloptional

IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

- - - - - -

DoubleRules

-

DoubleRules describes the constraints applied to `double` values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
constdoubleoptional

Const specifies that this field must be exactly the specified value

ltdoubleoptional

Lt specifies that this field must be less than the specified value, -exclusive

ltedoubleoptional

Lte specifies that this field must be less than or equal to the -specified value, inclusive

gtdoubleoptional

Gt specifies that this field must be greater than the specified value, -exclusive. If the value of Gt is larger than a specified Lt or Lte, the -range is reversed.

gtedoubleoptional

Gte specifies that this field must be greater than or equal to the -specified value, inclusive. If the value of Gte is larger than a -specified Lt or Lte, the range is reversed.

indoublerepeated

In specifies that this field must be equal to one of the specified -values

not_indoublerepeated

NotIn specifies that this field cannot be equal to one of the specified -values

ignore_emptybooloptional

IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

- - - - - -

DurationRules

-

DurationRules describe the constraints applied exclusively to the

`google.protobuf.Duration` well-known type

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
requiredbooloptional

Required specifies that this field must be set

constgoogle.protobuf.Durationoptional

Const specifies that this field must be exactly the specified value

ltgoogle.protobuf.Durationoptional

Lt specifies that this field must be less than the specified value, -exclusive

ltegoogle.protobuf.Durationoptional

Lt specifies that this field must be less than the specified value, -inclusive

gtgoogle.protobuf.Durationoptional

Gt specifies that this field must be greater than the specified value, -exclusive

gtegoogle.protobuf.Durationoptional

Gte specifies that this field must be greater than the specified value, -inclusive

ingoogle.protobuf.Durationrepeated

In specifies that this field must be equal to one of the specified -values

not_ingoogle.protobuf.Durationrepeated

NotIn specifies that this field cannot be equal to one of the specified -values

- - - - - -

EnumRules

-

EnumRules describe the constraints applied to enum values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
constint32optional

Const specifies that this field must be exactly the specified value

defined_onlybooloptional

DefinedOnly specifies that this field must be only one of the defined -values for this enum, failing on any undefined value.

inint32repeated

In specifies that this field must be equal to one of the specified -values

not_inint32repeated

NotIn specifies that this field cannot be equal to one of the specified -values

- - - - - -

FieldRules

-

FieldRules encapsulates the rules for each type of field. Depending on the

field, the correct set should be used to ensure proper validations.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
messageMessageRulesoptional

floatFloatRulesoptional

Scalar Field Types

doubleDoubleRulesoptional

int32Int32Rulesoptional

int64Int64Rulesoptional

uint32UInt32Rulesoptional

uint64UInt64Rulesoptional

sint32SInt32Rulesoptional

sint64SInt64Rulesoptional

fixed32Fixed32Rulesoptional

fixed64Fixed64Rulesoptional

sfixed32SFixed32Rulesoptional

sfixed64SFixed64Rulesoptional

boolBoolRulesoptional

stringStringRulesoptional

bytesBytesRulesoptional

enumEnumRulesoptional

Complex Field Types

repeatedRepeatedRulesoptional

mapMapRulesoptional

anyAnyRulesoptional

Well-Known Field Types

durationDurationRulesoptional

timestampTimestampRulesoptional

- - - - - -

Fixed32Rules

-

Fixed32Rules describes the constraints applied to `fixed32` values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
constfixed32optional

Const specifies that this field must be exactly the specified value

ltfixed32optional

Lt specifies that this field must be less than the specified value, -exclusive

ltefixed32optional

Lte specifies that this field must be less than or equal to the -specified value, inclusive

gtfixed32optional

Gt specifies that this field must be greater than the specified value, -exclusive. If the value of Gt is larger than a specified Lt or Lte, the -range is reversed.

gtefixed32optional

Gte specifies that this field must be greater than or equal to the -specified value, inclusive. If the value of Gte is larger than a -specified Lt or Lte, the range is reversed.

infixed32repeated

In specifies that this field must be equal to one of the specified -values

not_infixed32repeated

NotIn specifies that this field cannot be equal to one of the specified -values

ignore_emptybooloptional

IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

- - - - - -

Fixed64Rules

-

Fixed64Rules describes the constraints applied to `fixed64` values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
constfixed64optional

Const specifies that this field must be exactly the specified value

ltfixed64optional

Lt specifies that this field must be less than the specified value, -exclusive

ltefixed64optional

Lte specifies that this field must be less than or equal to the -specified value, inclusive

gtfixed64optional

Gt specifies that this field must be greater than the specified value, -exclusive. If the value of Gt is larger than a specified Lt or Lte, the -range is reversed.

gtefixed64optional

Gte specifies that this field must be greater than or equal to the -specified value, inclusive. If the value of Gte is larger than a -specified Lt or Lte, the range is reversed.

infixed64repeated

In specifies that this field must be equal to one of the specified -values

not_infixed64repeated

NotIn specifies that this field cannot be equal to one of the specified -values

ignore_emptybooloptional

IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

- - - - - -

FloatRules

-

FloatRules describes the constraints applied to `float` values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
constfloatoptional

Const specifies that this field must be exactly the specified value

ltfloatoptional

Lt specifies that this field must be less than the specified value, -exclusive

ltefloatoptional

Lte specifies that this field must be less than or equal to the -specified value, inclusive

gtfloatoptional

Gt specifies that this field must be greater than the specified value, -exclusive. If the value of Gt is larger than a specified Lt or Lte, the -range is reversed.

gtefloatoptional

Gte specifies that this field must be greater than or equal to the -specified value, inclusive. If the value of Gte is larger than a -specified Lt or Lte, the range is reversed.

infloatrepeated

In specifies that this field must be equal to one of the specified -values

not_infloatrepeated

NotIn specifies that this field cannot be equal to one of the specified -values

ignore_emptybooloptional

IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

- - - - - -

Int32Rules

-

Int32Rules describes the constraints applied to `int32` values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
constint32optional

Const specifies that this field must be exactly the specified value

ltint32optional

Lt specifies that this field must be less than the specified value, -exclusive

lteint32optional

Lte specifies that this field must be less than or equal to the -specified value, inclusive

gtint32optional

Gt specifies that this field must be greater than the specified value, -exclusive. If the value of Gt is larger than a specified Lt or Lte, the -range is reversed.

gteint32optional

Gte specifies that this field must be greater than or equal to the -specified value, inclusive. If the value of Gte is larger than a -specified Lt or Lte, the range is reversed.

inint32repeated

In specifies that this field must be equal to one of the specified -values

not_inint32repeated

NotIn specifies that this field cannot be equal to one of the specified -values

ignore_emptybooloptional

IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

- - - - - -

Int64Rules

-

Int64Rules describes the constraints applied to `int64` values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
constint64optional

Const specifies that this field must be exactly the specified value

ltint64optional

Lt specifies that this field must be less than the specified value, -exclusive

lteint64optional

Lte specifies that this field must be less than or equal to the -specified value, inclusive

gtint64optional

Gt specifies that this field must be greater than the specified value, -exclusive. If the value of Gt is larger than a specified Lt or Lte, the -range is reversed.

gteint64optional

Gte specifies that this field must be greater than or equal to the -specified value, inclusive. If the value of Gte is larger than a -specified Lt or Lte, the range is reversed.

inint64repeated

In specifies that this field must be equal to one of the specified -values

not_inint64repeated

NotIn specifies that this field cannot be equal to one of the specified -values

ignore_emptybooloptional

IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

- - - - - -

MapRules

-

MapRules describe the constraints applied to `map` values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
min_pairsuint64optional

MinPairs specifies that this field must have the specified number of -KVs at a minimum

max_pairsuint64optional

MaxPairs specifies that this field must have the specified number of -KVs at a maximum

no_sparsebooloptional

NoSparse specifies values in this field cannot be unset. This only -applies to map's with message value types.

keysFieldRulesoptional

Keys specifies the constraints to be applied to each key in the field.

valuesFieldRulesoptional

Values specifies the constraints to be applied to the value of each key -in the field. Message values will still have their validations evaluated -unless skip is specified here.

ignore_emptybooloptional

IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

- - - - - -

MessageRules

-

MessageRules describe the constraints applied to embedded message values.

For message-type fields, validation is performed recursively.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
skipbooloptional

Skip specifies that the validation rules of this field should not be -evaluated

requiredbooloptional

Required specifies that this field must be set

- - - - - -

RepeatedRules

-

RepeatedRules describe the constraints applied to `repeated` values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
min_itemsuint64optional

MinItems specifies that this field must have the specified number of -items at a minimum

max_itemsuint64optional

MaxItems specifies that this field must have the specified number of -items at a maximum

uniquebooloptional

Unique specifies that all elements in this field must be unique. This -constraint is only applicable to scalar and enum types (messages are not -supported).

itemsFieldRulesoptional

Items specifies the constraints to be applied to each item in the field. -Repeated message fields will still execute validation against each item -unless skip is specified here.

ignore_emptybooloptional

IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

- - - - - -

SFixed32Rules

-

SFixed32Rules describes the constraints applied to `sfixed32` values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
constsfixed32optional

Const specifies that this field must be exactly the specified value

ltsfixed32optional

Lt specifies that this field must be less than the specified value, -exclusive

ltesfixed32optional

Lte specifies that this field must be less than or equal to the -specified value, inclusive

gtsfixed32optional

Gt specifies that this field must be greater than the specified value, -exclusive. If the value of Gt is larger than a specified Lt or Lte, the -range is reversed.

gtesfixed32optional

Gte specifies that this field must be greater than or equal to the -specified value, inclusive. If the value of Gte is larger than a -specified Lt or Lte, the range is reversed.

insfixed32repeated

In specifies that this field must be equal to one of the specified -values

not_insfixed32repeated

NotIn specifies that this field cannot be equal to one of the specified -values

ignore_emptybooloptional

IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

- - - - - -

SFixed64Rules

-

SFixed64Rules describes the constraints applied to `sfixed64` values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
constsfixed64optional

Const specifies that this field must be exactly the specified value

ltsfixed64optional

Lt specifies that this field must be less than the specified value, -exclusive

ltesfixed64optional

Lte specifies that this field must be less than or equal to the -specified value, inclusive

gtsfixed64optional

Gt specifies that this field must be greater than the specified value, -exclusive. If the value of Gt is larger than a specified Lt or Lte, the -range is reversed.

gtesfixed64optional

Gte specifies that this field must be greater than or equal to the -specified value, inclusive. If the value of Gte is larger than a -specified Lt or Lte, the range is reversed.

insfixed64repeated

In specifies that this field must be equal to one of the specified -values

not_insfixed64repeated

NotIn specifies that this field cannot be equal to one of the specified -values

ignore_emptybooloptional

IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

- - - - - -

SInt32Rules

-

SInt32Rules describes the constraints applied to `sint32` values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
constsint32optional

Const specifies that this field must be exactly the specified value

ltsint32optional

Lt specifies that this field must be less than the specified value, -exclusive

ltesint32optional

Lte specifies that this field must be less than or equal to the -specified value, inclusive

gtsint32optional

Gt specifies that this field must be greater than the specified value, -exclusive. If the value of Gt is larger than a specified Lt or Lte, the -range is reversed.

gtesint32optional

Gte specifies that this field must be greater than or equal to the -specified value, inclusive. If the value of Gte is larger than a -specified Lt or Lte, the range is reversed.

insint32repeated

In specifies that this field must be equal to one of the specified -values

not_insint32repeated

NotIn specifies that this field cannot be equal to one of the specified -values

ignore_emptybooloptional

IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

- - - - - -

SInt64Rules

-

SInt64Rules describes the constraints applied to `sint64` values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
constsint64optional

Const specifies that this field must be exactly the specified value

ltsint64optional

Lt specifies that this field must be less than the specified value, -exclusive

ltesint64optional

Lte specifies that this field must be less than or equal to the -specified value, inclusive

gtsint64optional

Gt specifies that this field must be greater than the specified value, -exclusive. If the value of Gt is larger than a specified Lt or Lte, the -range is reversed.

gtesint64optional

Gte specifies that this field must be greater than or equal to the -specified value, inclusive. If the value of Gte is larger than a -specified Lt or Lte, the range is reversed.

insint64repeated

In specifies that this field must be equal to one of the specified -values

not_insint64repeated

NotIn specifies that this field cannot be equal to one of the specified -values

ignore_emptybooloptional

IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

- - - - - -

StringRules

-

StringRules describe the constraints applied to `string` values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
conststringoptional

Const specifies that this field must be exactly the specified value

lenuint64optional

Len specifies that this field must be the specified number of -characters (Unicode code points). Note that the number of -characters may differ from the number of bytes in the string.

min_lenuint64optional

MinLen specifies that this field must be the specified number of -characters (Unicode code points) at a minimum. Note that the number of -characters may differ from the number of bytes in the string.

max_lenuint64optional

MaxLen specifies that this field must be the specified number of -characters (Unicode code points) at a maximum. Note that the number of -characters may differ from the number of bytes in the string.

len_bytesuint64optional

LenBytes specifies that this field must be the specified number of bytes

min_bytesuint64optional

MinBytes specifies that this field must be the specified number of bytes -at a minimum

max_bytesuint64optional

MaxBytes specifies that this field must be the specified number of bytes -at a maximum

patternstringoptional

Pattern specifies that this field must match against the specified -regular expression (RE2 syntax). The included expression should elide -any delimiters.

prefixstringoptional

Prefix specifies that this field must have the specified substring at -the beginning of the string.

suffixstringoptional

Suffix specifies that this field must have the specified substring at -the end of the string.

containsstringoptional

Contains specifies that this field must have the specified substring -anywhere in the string.

not_containsstringoptional

NotContains specifies that this field cannot have the specified substring -anywhere in the string.

instringrepeated

In specifies that this field must be equal to one of the specified -values

not_instringrepeated

NotIn specifies that this field cannot be equal to one of the specified -values

emailbooloptional

Email specifies that the field must be a valid email address as -defined by RFC 5322

hostnamebooloptional

Hostname specifies that the field must be a valid hostname as -defined by RFC 1034. This constraint does not support -internationalized domain names (IDNs).

ipbooloptional

Ip specifies that the field must be a valid IP (v4 or v6) address. -Valid IPv6 addresses should not include surrounding square brackets.

ipv4booloptional

Ipv4 specifies that the field must be a valid IPv4 address.

ipv6booloptional

Ipv6 specifies that the field must be a valid IPv6 address. Valid -IPv6 addresses should not include surrounding square brackets.

uribooloptional

Uri specifies that the field must be a valid, absolute URI as defined -by RFC 3986

uri_refbooloptional

UriRef specifies that the field must be a valid URI as defined by RFC -3986 and may be relative or absolute.

addressbooloptional

Address specifies that the field must be either a valid hostname as -defined by RFC 1034 (which does not support internationalized domain -names or IDNs), or it can be a valid IP (v4 or v6).

uuidbooloptional

Uuid specifies that the field must be a valid UUID as defined by -RFC 4122

well_known_regexKnownRegexoptional

WellKnownRegex specifies a common well known pattern defined as a regex.

strictbooloptional

This applies to regexes HTTP_HEADER_NAME and HTTP_HEADER_VALUE to enable -strict header validation. -By default, this is true, and HTTP header validations are RFC-compliant. -Setting to false will enable a looser validations that only disallows -\r\n\0 characters, which can be used to bypass header matching rules. Default: true

ignore_emptybooloptional

IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

- - - - - -

TimestampRules

-

TimestampRules describe the constraints applied exclusively to the

`google.protobuf.Timestamp` well-known type

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
requiredbooloptional

Required specifies that this field must be set

constgoogle.protobuf.Timestampoptional

Const specifies that this field must be exactly the specified value

ltgoogle.protobuf.Timestampoptional

Lt specifies that this field must be less than the specified value, -exclusive

ltegoogle.protobuf.Timestampoptional

Lte specifies that this field must be less than the specified value, -inclusive

gtgoogle.protobuf.Timestampoptional

Gt specifies that this field must be greater than the specified value, -exclusive

gtegoogle.protobuf.Timestampoptional

Gte specifies that this field must be greater than the specified value, -inclusive

lt_nowbooloptional

LtNow specifies that this must be less than the current time. LtNow -can only be used with the Within rule.

gt_nowbooloptional

GtNow specifies that this must be greater than the current time. GtNow -can only be used with the Within rule.

withingoogle.protobuf.Durationoptional

Within specifies that this field must be within this duration of the -current time. This constraint can be used alone or with the LtNow and -GtNow rules.

- - - - - -

UInt32Rules

-

UInt32Rules describes the constraints applied to `uint32` values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
constuint32optional

Const specifies that this field must be exactly the specified value

ltuint32optional

Lt specifies that this field must be less than the specified value, -exclusive

lteuint32optional

Lte specifies that this field must be less than or equal to the -specified value, inclusive

gtuint32optional

Gt specifies that this field must be greater than the specified value, -exclusive. If the value of Gt is larger than a specified Lt or Lte, the -range is reversed.

gteuint32optional

Gte specifies that this field must be greater than or equal to the -specified value, inclusive. If the value of Gte is larger than a -specified Lt or Lte, the range is reversed.

inuint32repeated

In specifies that this field must be equal to one of the specified -values

not_inuint32repeated

NotIn specifies that this field cannot be equal to one of the specified -values

ignore_emptybooloptional

IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

- - - - - -

UInt64Rules

-

UInt64Rules describes the constraints applied to `uint64` values

- - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - +
  • + EExecutionStatus +
  • - - - - - - +
  • + ETaskStatusEnum +
  • - - - - - - - - - - - - - - - - - - +
  • + STaskManagementService +
  • - -
    FieldTypeLabelDescription
    constuint64optional

    Const specifies that this field must be exactly the specified value

    ltuint64optional

    Lt specifies that this field must be less than the specified value, -exclusive

    lteuint64optional

    Lte specifies that this field must be less than or equal to the -specified value, inclusive

    gtuint64optional

    Gt specifies that this field must be greater than the specified value, -exclusive. If the value of Gt is larger than a specified Lt or Lte, the -range is reversed.

    gteuint64optional

    Gte specifies that this field must be greater than or equal to the -specified value, inclusive. If the value of Gte is larger than a -specified Lt or Lte, the range is reversed.

    inuint64repeated

    In specifies that this field must be equal to one of the specified -values

    not_inuint64repeated

    NotIn specifies that this field cannot be equal to one of the specified -values

    ignore_emptybooloptional

    IgnoreEmpty specifies that the validation rules of this field should be -evaluated only if the field is not empty

    - - - + + - - - -

    KnownRegex

    -

    WellKnownRegex contain some well-known patterns.

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    UNKNOWN0

    HTTP_HEADER_NAME1

    HTTP header name as defined by RFC 7230.

    HTTP_HEADER_VALUE2

    HTTP header value as defined by RFC 7230.

    - - - -

    File-level Extensions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ExtensionTypeBaseNumberDescription
    rulesFieldRules.google.protobuf.FieldOptions1071

    Rules specify the validations to be performed on this field. By default, -no validation is performed against a field.

    disabledbool.google.protobuf.MessageOptions1071

    Disabled nullifies any validation rules for this message, including any -message fields associated with it that do support validation.

    ignoredbool.google.protobuf.MessageOptions1072

    Ignore skips generation of validation methods for this message.

    requiredbool.google.protobuf.OneofOptions1071

    Required ensures that exactly one the field options in a oneof is set; -validation fails if no fields in the oneof are set.

    - +
  • Scalar Value Types
  • + + -
    @@ -2857,7 +682,7 @@

    Validated Fields

    HeartbeatRequest

    -

    +

    Message for heartbeat request

    @@ -2928,7 +753,7 @@

    Validated Fields

    HeartbeatResponse

    -

    Response message for the heartbeat request.

    Currently, this message is empty, indicating successful receipt of the heartbeat.

    +

    Message for heartbeat response

    Response message for the heartbeat request.

    Currently, this message is empty, indicating successful receipt of the heartbeat.

    @@ -3134,35 +959,35 @@

    Task

    - + - + - + - + - + @@ -3323,7 +1148,7 @@

    Task.EnvEntry

    TaskExecution

    -

    TaskExecution represents the execution of a task

    +

    TaskExecution represents the execution of a task.

    dependencies string repeated

    IDs of tasks that must complete before this task

    IDs of tasks that must complete before this task.

    base_image string

    Base image for the task execution environment.

    entrypoint string

    Entrypoint for the task execution.

    args string repeated

    Arguments for the task execution.

    env Task.EnvEntry repeated

    Environment variables for the task execution.

    @@ -3336,35 +1161,35 @@

    TaskExecution

    - + - + - + - + - + @@ -3735,14 +1560,14 @@

    WorkAssignment

    - + - + @@ -3779,183 +1604,10 @@

    Validated Fields

    -

    Workflow

    -

    Workflow represents a collection of tasks organized in a DAG

    - - -
    task_id string

    Unique identifier for the task being executed.

    status ExecutionStatus

    Current execution status of the task.

    created_at google.protobuf.Timestamp

    Timestamp of when the task execution started.

    updated_at google.protobuf.Timestamp

    Timestamp of the last update to the task execution.

    execution_metadata TaskExecution.ExecutionMetadataEntry repeated

    Metadata related to the task execution.

    assignment_id int64

    Unique identifier for the assignment

    Unique identifier for the assignment.

    task Task

    The task to be executed

    The task to be executed.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    idstring

    namestring

    descriptionstring

    tasksTaskrepeated

    metadataWorkflow.MetadataEntryrepeated

    - - - - - -

    Workflow.MetadataEntry

    -

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    keystring

    valuestring

    - - - - - -

    WorkflowExecution

    -

    WorkflowExecution represents the execution of a workflow

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    workflow_idstring

    statusExecutionStatus

    task_executionsTaskExecutionrepeated

    created_atgoogle.protobuf.Timestamp

    updated_atgoogle.protobuf.Timestamp

    execution_metadataWorkflowExecution.ExecutionMetadataEntryrepeated

    - - - - - -

    WorkflowExecution.ExecutionMetadataEntry

    -

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    keystring

    valuestring

    - - - - -

    ExecutionStatus

    -

    ExecutionStatus represents the current state of a task or workflow execution

    +

    ExecutionStatus represents the current state of a task or workflow execution.

    @@ -3965,31 +1617,31 @@

    ExecutionStatus

    - + - + - + - + - + @@ -4106,14 +1758,14 @@

    TaskManagementService

    - + - + diff --git a/modules/__init__.py b/pytask/cloud/__init__.py similarity index 100% rename from modules/__init__.py rename to pytask/cloud/__init__.py diff --git a/pytask/cloud/v1/__init__.py b/pytask/cloud/v1/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pytask/cloud/v1/cloud_pb2.py b/pytask/cloud/v1/cloud_pb2.py new file mode 100644 index 0000000..ba513b2 --- /dev/null +++ b/pytask/cloud/v1/cloud_pb2.py @@ -0,0 +1,160 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: cloud/v1/cloud.proto +# Protobuf Python Version: 5.28.2 +"""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, + 5, + 28, + 2, + '', + 'cloud/v1/cloud.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from validate import validate_pb2 as validate_dot_validate__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x63loud/v1/cloud.proto\x12\x08\x63loud.v1\x1a\x17validate/validate.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xb0\x01\n\x07Payload\x12\x66\n\nparameters\x18\x01 \x03(\x0b\x32!.cloud.v1.Payload.ParametersEntryB#\xfa\x42 \x9a\x01\x1d\"\x14r\x12\x32\x10^[a-zA-Z0-9_-]+$*\x05r\x03\x18\x80\x08R\nparameters\x1a=\n\x0fParametersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xc4\x01\n\x11\x43reateTaskRequest\x12.\n\x04name\x18\x01 \x01(\tB\x1a\xfa\x42\x17r\x15\x18\xff\x01\x32\x10^[a-zA-Z0-9_-]+$R\x04name\x12\x1c\n\x04type\x18\x02 \x01(\tB\x08\xfa\x42\x05\x82\x01\x02\x10\x01R\x04type\x12\x35\n\x07payload\x18\x03 \x01(\x0b\x32\x11.cloud.v1.PayloadB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x07payload\x12*\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x08\xfa\x42\x05r\x03\x18\x88\'R\x0b\x64\x65scription\"-\n\x12\x43reateTaskResponse\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\"\xfe\x04\n\x04Task\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\x12.\n\x04name\x18\x02 \x01(\tB\x1a\xfa\x42\x17r\x15\x18\xff\x01\x32\x10^[a-zA-Z0-9_-]+$R\x04name\x12\x1c\n\x04type\x18\x03 \x01(\tB\x08\xfa\x42\x05\x82\x01\x02\x10\x01R\x04type\x12:\n\x06status\x18\x04 \x01(\x0e\x32\x18.cloud.v1.TaskStatusEnumB\x08\xfa\x42\x05\x82\x01\x02\x10\x01R\x06status\x12#\n\x07retries\x18\x05 \x01(\x05\x42\t\xfa\x42\x06\x1a\x04\x18\n(\x00R\x07retries\x12#\n\x08priority\x18\x06 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x08priority\x12L\n\ncreated_at\x18\x07 \x01(\tB-\xfa\x42*r(2&^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$R\tcreatedAt\x12\x35\n\x07payload\x18\x08 \x01(\x0b\x32\x11.cloud.v1.PayloadB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x07payload\x12*\n\x0b\x64\x65scription\x18\t \x01(\tB\x08\xfa\x42\x05r\x03\x18\x88\'R\x0b\x64\x65scription\x12\"\n\x0c\x64\x65pendencies\x18\n \x03(\tR\x0c\x64\x65pendencies\x12\x1d\n\nbase_image\x18\x0b \x01(\tR\tbaseImage\x12\x1e\n\nentrypoint\x18\x0c \x01(\tR\nentrypoint\x12\x12\n\x04\x61rgs\x18\r \x03(\tR\x04\x61rgs\x12)\n\x03\x65nv\x18\x0e \x03(\x0b\x32\x17.cloud.v1.Task.EnvEntryR\x03\x65nv\x1a\x36\n\x08\x45nvEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xf6\x02\n\rTaskExecution\x12\x17\n\x07task_id\x18\x01 \x01(\tR\x06taskId\x12\x31\n\x06status\x18\x02 \x01(\x0e\x32\x19.cloud.v1.ExecutionStatusR\x06status\x12\x39\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12]\n\x12\x65xecution_metadata\x18\x05 \x03(\x0b\x32..cloud.v1.TaskExecution.ExecutionMetadataEntryR\x11\x65xecutionMetadata\x1a\x44\n\x16\x45xecutionMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xd4\x01\n\x0bTaskHistory\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\x12:\n\x06status\x18\x02 \x01(\x0e\x32\x18.cloud.v1.TaskStatusEnumB\x08\xfa\x42\x05\x82\x01\x02\x10\x01R\x06status\x12L\n\ncreated_at\x18\x03 \x01(\tB-\xfa\x42*r(2&^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$R\tcreatedAt\x12\"\n\x07\x64\x65tails\x18\x04 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xd0\x0fR\x07\x64\x65tails\")\n\x0eGetTaskRequest\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\"0\n\x15GetTaskHistoryRequest\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\"V\n\x16GetTaskHistoryResponse\x12<\n\x07history\x18\x01 \x03(\x0b\x32\x15.cloud.v1.TaskHistoryB\x0b\xfa\x42\x08\x92\x01\x05\x08\x01\x10\xe8\x07R\x07history\"\x92\x01\n\x17UpdateTaskStatusRequest\x12\x17\n\x02id\x18\x01 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x02id\x12:\n\x06status\x18\x02 \x01(\x0e\x32\x18.cloud.v1.TaskStatusEnumB\x08\xfa\x42\x05\x82\x01\x02\x10\x01R\x06status\x12\"\n\x07message\x18\x03 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xd0\x0fR\x07message\"\xd6\x01\n\x10HeartbeatRequest\x12K\n\ttimestamp\x18\x01 \x01(\tB-\xfa\x42*r(2&^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$R\ttimestamp\x12u\n\x04uuid\x18\x02 \x01(\tBa\xfa\x42^r\\2Z^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$R\x04uuid\"\x13\n\x11HeartbeatResponse\"\x13\n\x11PullEventsRequest\"B\n\x12PullEventsResponse\x12,\n\x04work\x18\x01 \x01(\x0b\x32\x18.cloud.v1.WorkAssignmentR\x04work\"c\n\x0eWorkAssignment\x12#\n\rassignment_id\x18\x01 \x01(\x03R\x0c\x61ssignmentId\x12,\n\x04task\x18\x02 \x01(\x0b\x32\x0e.cloud.v1.TaskB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x04task\"\x12\n\x10GetStatusRequest\"\xa8\x01\n\x11GetStatusResponse\x12R\n\rstatus_counts\x18\x01 \x03(\x0b\x32-.cloud.v1.GetStatusResponse.StatusCountsEntryR\x0cstatusCounts\x1a?\n\x11StatusCountsEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05value:\x02\x38\x01\"0\n\x08TaskList\x12$\n\x05tasks\x18\x01 \x03(\x0b\x32\x0e.cloud.v1.TaskR\x05tasks\"\xd5\x01\n\x0fTaskListRequest\x12\x1f\n\x05limit\x18\x01 \x01(\x05\x42\t\xfa\x42\x06\x1a\x04\x18\x64(\x01R\x05limit\x12\x1f\n\x06offset\x18\x02 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x06offset\x12\x35\n\x06status\x18\x03 \x01(\x0e\x32\x18.cloud.v1.TaskStatusEnumH\x00R\x06status\x88\x01\x01\x12\x35\n\x04type\x18\x04 \x01(\tB\x1c\xfa\x42\x19r\x17R\nsend_emailR\trun_queryH\x01R\x04type\x88\x01\x01\x42\t\n\x07_statusB\x07\n\x05_type*Z\n\x0eTaskStatusEnum\x12\n\n\x06QUEUED\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\x12\r\n\tSUCCEEDED\x10\x03\x12\x0b\n\x07UNKNOWN\x10\x04\x12\x07\n\x03\x41LL\x10\x05*\xac\x01\n\x0f\x45xecutionStatus\x12 \n\x1c\x45XECUTION_STATUS_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x45XECUTION_STATUS_PENDING\x10\x01\x12\x1c\n\x18\x45XECUTION_STATUS_RUNNING\x10\x02\x12\x1e\n\x1a\x45XECUTION_STATUS_COMPLETED\x10\x03\x12\x1b\n\x17\x45XECUTION_STATUS_FAILED\x10\x04\x32\xdc\x04\n\x15TaskManagementService\x12I\n\nCreateTask\x12\x1b.cloud.v1.CreateTaskRequest\x1a\x1c.cloud.v1.CreateTaskResponse\"\x00\x12\x35\n\x07GetTask\x12\x18.cloud.v1.GetTaskRequest\x1a\x0e.cloud.v1.Task\"\x00\x12<\n\tListTasks\x12\x19.cloud.v1.TaskListRequest\x1a\x12.cloud.v1.TaskList\"\x00\x12U\n\x0eGetTaskHistory\x12\x1f.cloud.v1.GetTaskHistoryRequest\x1a .cloud.v1.GetTaskHistoryResponse\"\x00\x12O\n\x10UpdateTaskStatus\x12!.cloud.v1.UpdateTaskStatusRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\tGetStatus\x12\x1a.cloud.v1.GetStatusRequest\x1a\x1b.cloud.v1.GetStatusResponse\"\x00\x12\x46\n\tHeartbeat\x12\x1a.cloud.v1.HeartbeatRequest\x1a\x1b.cloud.v1.HeartbeatResponse\"\x00\x12K\n\nPullEvents\x12\x1b.cloud.v1.PullEventsRequest\x1a\x1c.cloud.v1.PullEventsResponse\"\x00\x30\x01\x42z\n\x0c\x63om.cloud.v1B\nCloudProtoP\x01Z\x1dtask/pkg/gen/cloud/v1;cloudv1\xa2\x02\x03\x43XX\xaa\x02\x08\x43loud.V1\xca\x02\x08\x43loud\\V1\xe2\x02\x14\x43loud\\V1\\GPBMetadata\xea\x02\tCloud::V1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'cloud.v1.cloud_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\014com.cloud.v1B\nCloudProtoP\001Z\035task/pkg/gen/cloud/v1;cloudv1\242\002\003CXX\252\002\010Cloud.V1\312\002\010Cloud\\V1\342\002\024Cloud\\V1\\GPBMetadata\352\002\tCloud::V1' + _globals['_PAYLOAD_PARAMETERSENTRY']._loaded_options = None + _globals['_PAYLOAD_PARAMETERSENTRY']._serialized_options = b'8\001' + _globals['_PAYLOAD'].fields_by_name['parameters']._loaded_options = None + _globals['_PAYLOAD'].fields_by_name['parameters']._serialized_options = b'\372B \232\001\035\"\024r\0222\020^[a-zA-Z0-9_-]+$*\005r\003\030\200\010' + _globals['_CREATETASKREQUEST'].fields_by_name['name']._loaded_options = None + _globals['_CREATETASKREQUEST'].fields_by_name['name']._serialized_options = b'\372B\027r\025\030\377\0012\020^[a-zA-Z0-9_-]+$' + _globals['_CREATETASKREQUEST'].fields_by_name['type']._loaded_options = None + _globals['_CREATETASKREQUEST'].fields_by_name['type']._serialized_options = b'\372B\005\202\001\002\020\001' + _globals['_CREATETASKREQUEST'].fields_by_name['payload']._loaded_options = None + _globals['_CREATETASKREQUEST'].fields_by_name['payload']._serialized_options = b'\372B\005\212\001\002\020\001' + _globals['_CREATETASKREQUEST'].fields_by_name['description']._loaded_options = None + _globals['_CREATETASKREQUEST'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\210\'' + _globals['_CREATETASKRESPONSE'].fields_by_name['id']._loaded_options = None + _globals['_CREATETASKRESPONSE'].fields_by_name['id']._serialized_options = b'\372B\004\032\002(\000' + _globals['_TASK_ENVENTRY']._loaded_options = None + _globals['_TASK_ENVENTRY']._serialized_options = b'8\001' + _globals['_TASK'].fields_by_name['id']._loaded_options = None + _globals['_TASK'].fields_by_name['id']._serialized_options = b'\372B\004\032\002(\000' + _globals['_TASK'].fields_by_name['name']._loaded_options = None + _globals['_TASK'].fields_by_name['name']._serialized_options = b'\372B\027r\025\030\377\0012\020^[a-zA-Z0-9_-]+$' + _globals['_TASK'].fields_by_name['type']._loaded_options = None + _globals['_TASK'].fields_by_name['type']._serialized_options = b'\372B\005\202\001\002\020\001' + _globals['_TASK'].fields_by_name['status']._loaded_options = None + _globals['_TASK'].fields_by_name['status']._serialized_options = b'\372B\005\202\001\002\020\001' + _globals['_TASK'].fields_by_name['retries']._loaded_options = None + _globals['_TASK'].fields_by_name['retries']._serialized_options = b'\372B\006\032\004\030\n(\000' + _globals['_TASK'].fields_by_name['priority']._loaded_options = None + _globals['_TASK'].fields_by_name['priority']._serialized_options = b'\372B\004\032\002(\000' + _globals['_TASK'].fields_by_name['created_at']._loaded_options = None + _globals['_TASK'].fields_by_name['created_at']._serialized_options = b'\372B*r(2&^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$' + _globals['_TASK'].fields_by_name['payload']._loaded_options = None + _globals['_TASK'].fields_by_name['payload']._serialized_options = b'\372B\005\212\001\002\020\001' + _globals['_TASK'].fields_by_name['description']._loaded_options = None + _globals['_TASK'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\210\'' + _globals['_TASKEXECUTION_EXECUTIONMETADATAENTRY']._loaded_options = None + _globals['_TASKEXECUTION_EXECUTIONMETADATAENTRY']._serialized_options = b'8\001' + _globals['_TASKHISTORY'].fields_by_name['id']._loaded_options = None + _globals['_TASKHISTORY'].fields_by_name['id']._serialized_options = b'\372B\004\032\002(\000' + _globals['_TASKHISTORY'].fields_by_name['status']._loaded_options = None + _globals['_TASKHISTORY'].fields_by_name['status']._serialized_options = b'\372B\005\202\001\002\020\001' + _globals['_TASKHISTORY'].fields_by_name['created_at']._loaded_options = None + _globals['_TASKHISTORY'].fields_by_name['created_at']._serialized_options = b'\372B*r(2&^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$' + _globals['_TASKHISTORY'].fields_by_name['details']._loaded_options = None + _globals['_TASKHISTORY'].fields_by_name['details']._serialized_options = b'\372B\005r\003\030\320\017' + _globals['_GETTASKREQUEST'].fields_by_name['id']._loaded_options = None + _globals['_GETTASKREQUEST'].fields_by_name['id']._serialized_options = b'\372B\004\032\002(\000' + _globals['_GETTASKHISTORYREQUEST'].fields_by_name['id']._loaded_options = None + _globals['_GETTASKHISTORYREQUEST'].fields_by_name['id']._serialized_options = b'\372B\004\032\002(\000' + _globals['_GETTASKHISTORYRESPONSE'].fields_by_name['history']._loaded_options = None + _globals['_GETTASKHISTORYRESPONSE'].fields_by_name['history']._serialized_options = b'\372B\010\222\001\005\010\001\020\350\007' + _globals['_UPDATETASKSTATUSREQUEST'].fields_by_name['id']._loaded_options = None + _globals['_UPDATETASKSTATUSREQUEST'].fields_by_name['id']._serialized_options = b'\372B\004\032\002(\000' + _globals['_UPDATETASKSTATUSREQUEST'].fields_by_name['status']._loaded_options = None + _globals['_UPDATETASKSTATUSREQUEST'].fields_by_name['status']._serialized_options = b'\372B\005\202\001\002\020\001' + _globals['_UPDATETASKSTATUSREQUEST'].fields_by_name['message']._loaded_options = None + _globals['_UPDATETASKSTATUSREQUEST'].fields_by_name['message']._serialized_options = b'\372B\005r\003\030\320\017' + _globals['_HEARTBEATREQUEST'].fields_by_name['timestamp']._loaded_options = None + _globals['_HEARTBEATREQUEST'].fields_by_name['timestamp']._serialized_options = b'\372B*r(2&^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$' + _globals['_HEARTBEATREQUEST'].fields_by_name['uuid']._loaded_options = None + _globals['_HEARTBEATREQUEST'].fields_by_name['uuid']._serialized_options = b'\372B^r\\2Z^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$' + _globals['_WORKASSIGNMENT'].fields_by_name['task']._loaded_options = None + _globals['_WORKASSIGNMENT'].fields_by_name['task']._serialized_options = b'\372B\005\212\001\002\020\001' + _globals['_GETSTATUSRESPONSE_STATUSCOUNTSENTRY']._loaded_options = None + _globals['_GETSTATUSRESPONSE_STATUSCOUNTSENTRY']._serialized_options = b'8\001' + _globals['_TASKLISTREQUEST'].fields_by_name['limit']._loaded_options = None + _globals['_TASKLISTREQUEST'].fields_by_name['limit']._serialized_options = b'\372B\006\032\004\030d(\001' + _globals['_TASKLISTREQUEST'].fields_by_name['offset']._loaded_options = None + _globals['_TASKLISTREQUEST'].fields_by_name['offset']._serialized_options = b'\372B\004\032\002(\000' + _globals['_TASKLISTREQUEST'].fields_by_name['type']._loaded_options = None + _globals['_TASKLISTREQUEST'].fields_by_name['type']._serialized_options = b'\372B\031r\027R\nsend_emailR\trun_query' + _globals['_TASKSTATUSENUM']._serialized_start=2994 + _globals['_TASKSTATUSENUM']._serialized_end=3084 + _globals['_EXECUTIONSTATUS']._serialized_start=3087 + _globals['_EXECUTIONSTATUS']._serialized_end=3259 + _globals['_PAYLOAD']._serialized_start=122 + _globals['_PAYLOAD']._serialized_end=298 + _globals['_PAYLOAD_PARAMETERSENTRY']._serialized_start=237 + _globals['_PAYLOAD_PARAMETERSENTRY']._serialized_end=298 + _globals['_CREATETASKREQUEST']._serialized_start=301 + _globals['_CREATETASKREQUEST']._serialized_end=497 + _globals['_CREATETASKRESPONSE']._serialized_start=499 + _globals['_CREATETASKRESPONSE']._serialized_end=544 + _globals['_TASK']._serialized_start=547 + _globals['_TASK']._serialized_end=1185 + _globals['_TASK_ENVENTRY']._serialized_start=1131 + _globals['_TASK_ENVENTRY']._serialized_end=1185 + _globals['_TASKEXECUTION']._serialized_start=1188 + _globals['_TASKEXECUTION']._serialized_end=1562 + _globals['_TASKEXECUTION_EXECUTIONMETADATAENTRY']._serialized_start=1494 + _globals['_TASKEXECUTION_EXECUTIONMETADATAENTRY']._serialized_end=1562 + _globals['_TASKHISTORY']._serialized_start=1565 + _globals['_TASKHISTORY']._serialized_end=1777 + _globals['_GETTASKREQUEST']._serialized_start=1779 + _globals['_GETTASKREQUEST']._serialized_end=1820 + _globals['_GETTASKHISTORYREQUEST']._serialized_start=1822 + _globals['_GETTASKHISTORYREQUEST']._serialized_end=1870 + _globals['_GETTASKHISTORYRESPONSE']._serialized_start=1872 + _globals['_GETTASKHISTORYRESPONSE']._serialized_end=1958 + _globals['_UPDATETASKSTATUSREQUEST']._serialized_start=1961 + _globals['_UPDATETASKSTATUSREQUEST']._serialized_end=2107 + _globals['_HEARTBEATREQUEST']._serialized_start=2110 + _globals['_HEARTBEATREQUEST']._serialized_end=2324 + _globals['_HEARTBEATRESPONSE']._serialized_start=2326 + _globals['_HEARTBEATRESPONSE']._serialized_end=2345 + _globals['_PULLEVENTSREQUEST']._serialized_start=2347 + _globals['_PULLEVENTSREQUEST']._serialized_end=2366 + _globals['_PULLEVENTSRESPONSE']._serialized_start=2368 + _globals['_PULLEVENTSRESPONSE']._serialized_end=2434 + _globals['_WORKASSIGNMENT']._serialized_start=2436 + _globals['_WORKASSIGNMENT']._serialized_end=2535 + _globals['_GETSTATUSREQUEST']._serialized_start=2537 + _globals['_GETSTATUSREQUEST']._serialized_end=2555 + _globals['_GETSTATUSRESPONSE']._serialized_start=2558 + _globals['_GETSTATUSRESPONSE']._serialized_end=2726 + _globals['_GETSTATUSRESPONSE_STATUSCOUNTSENTRY']._serialized_start=2663 + _globals['_GETSTATUSRESPONSE_STATUSCOUNTSENTRY']._serialized_end=2726 + _globals['_TASKLIST']._serialized_start=2728 + _globals['_TASKLIST']._serialized_end=2776 + _globals['_TASKLISTREQUEST']._serialized_start=2779 + _globals['_TASKLISTREQUEST']._serialized_end=2992 + _globals['_TASKMANAGEMENTSERVICE']._serialized_start=3262 + _globals['_TASKMANAGEMENTSERVICE']._serialized_end=3866 +# @@protoc_insertion_point(module_scope) diff --git a/requirements.txt b/pytask/requirements.txt similarity index 100% rename from requirements.txt rename to pytask/requirements.txt diff --git a/setup.py b/pytask/setup.py similarity index 53% rename from setup.py rename to pytask/setup.py index dc5224c..cad8222 100644 --- a/setup.py +++ b/pytask/setup.py @@ -2,9 +2,9 @@ setup(name='taskcli', - version='0.0.1', - py_modules=['modules'], - packages=find_packages(), + version='0.0.5', + py_modules=['cloud','validate'], + packages=find_packages(), # Automatically find all packages under pytask include_package_data=True, install_requires=[ 'Click', @@ -13,10 +13,11 @@ 'protobuf' ], package_data={'': ['*.txt', '*.lst']}, - entry_points=''' - [console_scripts] - taskcli=taskcli:cli - ''', + entry_points={ + 'console_scripts': [ + 'taskcli=taskcli:cli', # Ensure this points to the correct CLI + ], + }, test_suite='nose.collector', tests_require=['nose'], ) diff --git a/taskcli.py b/pytask/taskcli.py similarity index 78% rename from taskcli.py rename to pytask/taskcli.py index 0aa9252..83d0717 100644 --- a/taskcli.py +++ b/pytask/taskcli.py @@ -3,14 +3,32 @@ import ast import logging from typing import List, Dict, Union, Any -from modules.task import TaskSpec -from modules.workflow import WorkflowSpec -from modules.cloud.v1.cloud_pb2 import Task, Workflow +from cloud.v1.cloud_pb2 import Task # Adjusted import import tarfile import tempfile import json import fnmatch +from typing import TypedDict, List, Dict +from enum import Enum + + +class TaskType(Enum): + PYTHON = "python" + + +class TaskSpec(TypedDict): + name: str + type: TaskType + description: str + dependencies: List[str] + metadata: Dict[str, str] + base_image: str + entrypoint: str + args: List[str] + env: Dict[str, str] + + logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) @@ -29,8 +47,7 @@ def parse_decorator_config(file_path: str) -> Dict[str, List[Dict[str, Union[str tree = ast.parse(file.read()) configs = { - 'tasks': [], - 'workflows': [] + 'tasks': [] } def get_value(node: ast.AST) -> Any: @@ -75,7 +92,7 @@ def get_function_info(node: ast.FunctionDef) -> Dict[str, Any]: if isinstance(node, ast.FunctionDef): for decorator in node.decorator_list: if isinstance(decorator, ast.Call) and decorator.func.id in ['task', 'Workflow']: - config: Union[TaskSpec, WorkflowSpec] = {} + config: Union[TaskSpec] = {} for kw in decorator.args[0].keywords: config[kw.arg] = get_value(kw.value) @@ -90,8 +107,6 @@ def get_function_info(node: ast.FunctionDef) -> Dict[str, Any]: if decorator.func.id == 'task': configs['tasks'].append(item) - else: - configs['workflows'].append(item) return configs @@ -147,8 +162,7 @@ def process_file(file_path: str, custom_image: str = None) -> None: with tempfile.TemporaryDirectory() as temp_dir: task_protos = [] - workflow_protos = [] - + if parsed_configs['tasks']: logger.info(f"Found {len(parsed_configs['tasks'])} tasks in {file_path}") for task in parsed_configs['tasks']: @@ -157,44 +171,26 @@ def process_file(file_path: str, custom_image: str = None) -> None: logger.debug(f" Input: {task['input']}") logger.debug(f" Output: {task['output']}") - task_proto = Task( - name=task['config']["name"], - type=task['config']["type"], - description=task['config']["description"], - dependencies=task['config']["dependencies"], - metadata=task['config']["metadata"], - base_image=custom_image if custom_image else task['config']["base_image"], - entrypoint=task['config']["entrypoint"], - args=task['config']["args"], - env=task['config']["env"] - ) - task_protos.append(task_proto) + # task_proto = Task( + # name=task['config']["name"], + # type=task['config']["type"], + # description=task['config']["description"], + # dependencies=task['config']["dependencies"], + # metadata=task['config']["metadata"], + # base_image=custom_image if custom_image else task['config']["base_image"], + # entrypoint=task['config']["entrypoint"], + # args=task['config']["args"], + # env=task['config']["env"] + # ) + # task_protos.append(task_proto) - if parsed_configs['workflows']: - logger.info(f"Found {len(parsed_configs['workflows'])} workflows in {file_path}") - for workflow in parsed_configs['workflows']: - logger.debug(f"Workflow: {workflow['name']}") - logger.debug(f" Config: {workflow['config']}") - logger.debug(f" Input: {workflow['input']}") - logger.debug(f" Output: {workflow['output']}") - logger.debug(f" workflow: {workflow['workflow']}") - - workflow_proto = Workflow( - name=workflow['config']["name"], - description=workflow['config']["description"], - metadata=workflow['config']["metadata"], - ) - workflow_protos.append(workflow_proto) + # Save protos in binary format for i, task_proto in enumerate(task_protos): with open(os.path.join(temp_dir, f'task_{i}.pb'), 'wb') as f: f.write(task_proto.SerializeToString()) - for i, workflow_proto in enumerate(workflow_protos): - with open(os.path.join(temp_dir, f'workflow_{i}.pb'), 'wb') as f: - f.write(workflow_proto.SerializeToString()) - # Compress the entire code code_tar_path = os.path.join(temp_dir, 'code.tar.gz') with tarfile.open(code_tar_path, "w:gz") as code_tar: @@ -222,4 +218,4 @@ def process_file(file_path: str, custom_image: str = None) -> None: logger.info(f"Stored task and workflow protos in {output_filename}") if __name__ == '__main__': - cli() \ No newline at end of file + cli() diff --git a/pytask/validate/__init__.py b/pytask/validate/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pytask/validate/validate_pb2.py b/pytask/validate/validate_pb2.py new file mode 100644 index 0000000..5181fea --- /dev/null +++ b/pytask/validate/validate_pb2.py @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: validate/validate.proto +# Protobuf Python Version: 5.28.2 +"""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, + 5, + 28, + 2, + '', + 'validate/validate.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +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 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17validate/validate.proto\x12\x08validate\x1a google/protobuf/descriptor.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xc8\x08\n\nFieldRules\x12\x30\n\x07message\x18\x11 \x01(\x0b\x32\x16.validate.MessageRulesR\x07message\x12,\n\x05\x66loat\x18\x01 \x01(\x0b\x32\x14.validate.FloatRulesH\x00R\x05\x66loat\x12/\n\x06\x64ouble\x18\x02 \x01(\x0b\x32\x15.validate.DoubleRulesH\x00R\x06\x64ouble\x12,\n\x05int32\x18\x03 \x01(\x0b\x32\x14.validate.Int32RulesH\x00R\x05int32\x12,\n\x05int64\x18\x04 \x01(\x0b\x32\x14.validate.Int64RulesH\x00R\x05int64\x12/\n\x06uint32\x18\x05 \x01(\x0b\x32\x15.validate.UInt32RulesH\x00R\x06uint32\x12/\n\x06uint64\x18\x06 \x01(\x0b\x32\x15.validate.UInt64RulesH\x00R\x06uint64\x12/\n\x06sint32\x18\x07 \x01(\x0b\x32\x15.validate.SInt32RulesH\x00R\x06sint32\x12/\n\x06sint64\x18\x08 \x01(\x0b\x32\x15.validate.SInt64RulesH\x00R\x06sint64\x12\x32\n\x07\x66ixed32\x18\t \x01(\x0b\x32\x16.validate.Fixed32RulesH\x00R\x07\x66ixed32\x12\x32\n\x07\x66ixed64\x18\n \x01(\x0b\x32\x16.validate.Fixed64RulesH\x00R\x07\x66ixed64\x12\x35\n\x08sfixed32\x18\x0b \x01(\x0b\x32\x17.validate.SFixed32RulesH\x00R\x08sfixed32\x12\x35\n\x08sfixed64\x18\x0c \x01(\x0b\x32\x17.validate.SFixed64RulesH\x00R\x08sfixed64\x12)\n\x04\x62ool\x18\r \x01(\x0b\x32\x13.validate.BoolRulesH\x00R\x04\x62ool\x12/\n\x06string\x18\x0e \x01(\x0b\x32\x15.validate.StringRulesH\x00R\x06string\x12,\n\x05\x62ytes\x18\x0f \x01(\x0b\x32\x14.validate.BytesRulesH\x00R\x05\x62ytes\x12)\n\x04\x65num\x18\x10 \x01(\x0b\x32\x13.validate.EnumRulesH\x00R\x04\x65num\x12\x35\n\x08repeated\x18\x12 \x01(\x0b\x32\x17.validate.RepeatedRulesH\x00R\x08repeated\x12&\n\x03map\x18\x13 \x01(\x0b\x32\x12.validate.MapRulesH\x00R\x03map\x12&\n\x03\x61ny\x18\x14 \x01(\x0b\x32\x12.validate.AnyRulesH\x00R\x03\x61ny\x12\x35\n\x08\x64uration\x18\x15 \x01(\x0b\x32\x17.validate.DurationRulesH\x00R\x08\x64uration\x12\x38\n\ttimestamp\x18\x16 \x01(\x0b\x32\x18.validate.TimestampRulesH\x00R\ttimestampB\x06\n\x04type\"\xb0\x01\n\nFloatRules\x12\x14\n\x05\x63onst\x18\x01 \x01(\x02R\x05\x63onst\x12\x0e\n\x02lt\x18\x02 \x01(\x02R\x02lt\x12\x10\n\x03lte\x18\x03 \x01(\x02R\x03lte\x12\x0e\n\x02gt\x18\x04 \x01(\x02R\x02gt\x12\x10\n\x03gte\x18\x05 \x01(\x02R\x03gte\x12\x0e\n\x02in\x18\x06 \x03(\x02R\x02in\x12\x15\n\x06not_in\x18\x07 \x03(\x02R\x05notIn\x12!\n\x0cignore_empty\x18\x08 \x01(\x08R\x0bignoreEmpty\"\xb1\x01\n\x0b\x44oubleRules\x12\x14\n\x05\x63onst\x18\x01 \x01(\x01R\x05\x63onst\x12\x0e\n\x02lt\x18\x02 \x01(\x01R\x02lt\x12\x10\n\x03lte\x18\x03 \x01(\x01R\x03lte\x12\x0e\n\x02gt\x18\x04 \x01(\x01R\x02gt\x12\x10\n\x03gte\x18\x05 \x01(\x01R\x03gte\x12\x0e\n\x02in\x18\x06 \x03(\x01R\x02in\x12\x15\n\x06not_in\x18\x07 \x03(\x01R\x05notIn\x12!\n\x0cignore_empty\x18\x08 \x01(\x08R\x0bignoreEmpty\"\xb0\x01\n\nInt32Rules\x12\x14\n\x05\x63onst\x18\x01 \x01(\x05R\x05\x63onst\x12\x0e\n\x02lt\x18\x02 \x01(\x05R\x02lt\x12\x10\n\x03lte\x18\x03 \x01(\x05R\x03lte\x12\x0e\n\x02gt\x18\x04 \x01(\x05R\x02gt\x12\x10\n\x03gte\x18\x05 \x01(\x05R\x03gte\x12\x0e\n\x02in\x18\x06 \x03(\x05R\x02in\x12\x15\n\x06not_in\x18\x07 \x03(\x05R\x05notIn\x12!\n\x0cignore_empty\x18\x08 \x01(\x08R\x0bignoreEmpty\"\xb0\x01\n\nInt64Rules\x12\x14\n\x05\x63onst\x18\x01 \x01(\x03R\x05\x63onst\x12\x0e\n\x02lt\x18\x02 \x01(\x03R\x02lt\x12\x10\n\x03lte\x18\x03 \x01(\x03R\x03lte\x12\x0e\n\x02gt\x18\x04 \x01(\x03R\x02gt\x12\x10\n\x03gte\x18\x05 \x01(\x03R\x03gte\x12\x0e\n\x02in\x18\x06 \x03(\x03R\x02in\x12\x15\n\x06not_in\x18\x07 \x03(\x03R\x05notIn\x12!\n\x0cignore_empty\x18\x08 \x01(\x08R\x0bignoreEmpty\"\xb1\x01\n\x0bUInt32Rules\x12\x14\n\x05\x63onst\x18\x01 \x01(\rR\x05\x63onst\x12\x0e\n\x02lt\x18\x02 \x01(\rR\x02lt\x12\x10\n\x03lte\x18\x03 \x01(\rR\x03lte\x12\x0e\n\x02gt\x18\x04 \x01(\rR\x02gt\x12\x10\n\x03gte\x18\x05 \x01(\rR\x03gte\x12\x0e\n\x02in\x18\x06 \x03(\rR\x02in\x12\x15\n\x06not_in\x18\x07 \x03(\rR\x05notIn\x12!\n\x0cignore_empty\x18\x08 \x01(\x08R\x0bignoreEmpty\"\xb1\x01\n\x0bUInt64Rules\x12\x14\n\x05\x63onst\x18\x01 \x01(\x04R\x05\x63onst\x12\x0e\n\x02lt\x18\x02 \x01(\x04R\x02lt\x12\x10\n\x03lte\x18\x03 \x01(\x04R\x03lte\x12\x0e\n\x02gt\x18\x04 \x01(\x04R\x02gt\x12\x10\n\x03gte\x18\x05 \x01(\x04R\x03gte\x12\x0e\n\x02in\x18\x06 \x03(\x04R\x02in\x12\x15\n\x06not_in\x18\x07 \x03(\x04R\x05notIn\x12!\n\x0cignore_empty\x18\x08 \x01(\x08R\x0bignoreEmpty\"\xb1\x01\n\x0bSInt32Rules\x12\x14\n\x05\x63onst\x18\x01 \x01(\x11R\x05\x63onst\x12\x0e\n\x02lt\x18\x02 \x01(\x11R\x02lt\x12\x10\n\x03lte\x18\x03 \x01(\x11R\x03lte\x12\x0e\n\x02gt\x18\x04 \x01(\x11R\x02gt\x12\x10\n\x03gte\x18\x05 \x01(\x11R\x03gte\x12\x0e\n\x02in\x18\x06 \x03(\x11R\x02in\x12\x15\n\x06not_in\x18\x07 \x03(\x11R\x05notIn\x12!\n\x0cignore_empty\x18\x08 \x01(\x08R\x0bignoreEmpty\"\xb1\x01\n\x0bSInt64Rules\x12\x14\n\x05\x63onst\x18\x01 \x01(\x12R\x05\x63onst\x12\x0e\n\x02lt\x18\x02 \x01(\x12R\x02lt\x12\x10\n\x03lte\x18\x03 \x01(\x12R\x03lte\x12\x0e\n\x02gt\x18\x04 \x01(\x12R\x02gt\x12\x10\n\x03gte\x18\x05 \x01(\x12R\x03gte\x12\x0e\n\x02in\x18\x06 \x03(\x12R\x02in\x12\x15\n\x06not_in\x18\x07 \x03(\x12R\x05notIn\x12!\n\x0cignore_empty\x18\x08 \x01(\x08R\x0bignoreEmpty\"\xb2\x01\n\x0c\x46ixed32Rules\x12\x14\n\x05\x63onst\x18\x01 \x01(\x07R\x05\x63onst\x12\x0e\n\x02lt\x18\x02 \x01(\x07R\x02lt\x12\x10\n\x03lte\x18\x03 \x01(\x07R\x03lte\x12\x0e\n\x02gt\x18\x04 \x01(\x07R\x02gt\x12\x10\n\x03gte\x18\x05 \x01(\x07R\x03gte\x12\x0e\n\x02in\x18\x06 \x03(\x07R\x02in\x12\x15\n\x06not_in\x18\x07 \x03(\x07R\x05notIn\x12!\n\x0cignore_empty\x18\x08 \x01(\x08R\x0bignoreEmpty\"\xb2\x01\n\x0c\x46ixed64Rules\x12\x14\n\x05\x63onst\x18\x01 \x01(\x06R\x05\x63onst\x12\x0e\n\x02lt\x18\x02 \x01(\x06R\x02lt\x12\x10\n\x03lte\x18\x03 \x01(\x06R\x03lte\x12\x0e\n\x02gt\x18\x04 \x01(\x06R\x02gt\x12\x10\n\x03gte\x18\x05 \x01(\x06R\x03gte\x12\x0e\n\x02in\x18\x06 \x03(\x06R\x02in\x12\x15\n\x06not_in\x18\x07 \x03(\x06R\x05notIn\x12!\n\x0cignore_empty\x18\x08 \x01(\x08R\x0bignoreEmpty\"\xb3\x01\n\rSFixed32Rules\x12\x14\n\x05\x63onst\x18\x01 \x01(\x0fR\x05\x63onst\x12\x0e\n\x02lt\x18\x02 \x01(\x0fR\x02lt\x12\x10\n\x03lte\x18\x03 \x01(\x0fR\x03lte\x12\x0e\n\x02gt\x18\x04 \x01(\x0fR\x02gt\x12\x10\n\x03gte\x18\x05 \x01(\x0fR\x03gte\x12\x0e\n\x02in\x18\x06 \x03(\x0fR\x02in\x12\x15\n\x06not_in\x18\x07 \x03(\x0fR\x05notIn\x12!\n\x0cignore_empty\x18\x08 \x01(\x08R\x0bignoreEmpty\"\xb3\x01\n\rSFixed64Rules\x12\x14\n\x05\x63onst\x18\x01 \x01(\x10R\x05\x63onst\x12\x0e\n\x02lt\x18\x02 \x01(\x10R\x02lt\x12\x10\n\x03lte\x18\x03 \x01(\x10R\x03lte\x12\x0e\n\x02gt\x18\x04 \x01(\x10R\x02gt\x12\x10\n\x03gte\x18\x05 \x01(\x10R\x03gte\x12\x0e\n\x02in\x18\x06 \x03(\x10R\x02in\x12\x15\n\x06not_in\x18\x07 \x03(\x10R\x05notIn\x12!\n\x0cignore_empty\x18\x08 \x01(\x08R\x0bignoreEmpty\"!\n\tBoolRules\x12\x14\n\x05\x63onst\x18\x01 \x01(\x08R\x05\x63onst\"\xd4\x05\n\x0bStringRules\x12\x14\n\x05\x63onst\x18\x01 \x01(\tR\x05\x63onst\x12\x10\n\x03len\x18\x13 \x01(\x04R\x03len\x12\x17\n\x07min_len\x18\x02 \x01(\x04R\x06minLen\x12\x17\n\x07max_len\x18\x03 \x01(\x04R\x06maxLen\x12\x1b\n\tlen_bytes\x18\x14 \x01(\x04R\x08lenBytes\x12\x1b\n\tmin_bytes\x18\x04 \x01(\x04R\x08minBytes\x12\x1b\n\tmax_bytes\x18\x05 \x01(\x04R\x08maxBytes\x12\x18\n\x07pattern\x18\x06 \x01(\tR\x07pattern\x12\x16\n\x06prefix\x18\x07 \x01(\tR\x06prefix\x12\x16\n\x06suffix\x18\x08 \x01(\tR\x06suffix\x12\x1a\n\x08\x63ontains\x18\t \x01(\tR\x08\x63ontains\x12!\n\x0cnot_contains\x18\x17 \x01(\tR\x0bnotContains\x12\x0e\n\x02in\x18\n \x03(\tR\x02in\x12\x15\n\x06not_in\x18\x0b \x03(\tR\x05notIn\x12\x16\n\x05\x65mail\x18\x0c \x01(\x08H\x00R\x05\x65mail\x12\x1c\n\x08hostname\x18\r \x01(\x08H\x00R\x08hostname\x12\x10\n\x02ip\x18\x0e \x01(\x08H\x00R\x02ip\x12\x14\n\x04ipv4\x18\x0f \x01(\x08H\x00R\x04ipv4\x12\x14\n\x04ipv6\x18\x10 \x01(\x08H\x00R\x04ipv6\x12\x12\n\x03uri\x18\x11 \x01(\x08H\x00R\x03uri\x12\x19\n\x07uri_ref\x18\x12 \x01(\x08H\x00R\x06uriRef\x12\x1a\n\x07\x61\x64\x64ress\x18\x15 \x01(\x08H\x00R\x07\x61\x64\x64ress\x12\x14\n\x04uuid\x18\x16 \x01(\x08H\x00R\x04uuid\x12@\n\x10well_known_regex\x18\x18 \x01(\x0e\x32\x14.validate.KnownRegexH\x00R\x0ewellKnownRegex\x12\x1c\n\x06strict\x18\x19 \x01(\x08:\x04trueR\x06strict\x12!\n\x0cignore_empty\x18\x1a \x01(\x08R\x0bignoreEmptyB\x0c\n\nwell_known\"\xe2\x02\n\nBytesRules\x12\x14\n\x05\x63onst\x18\x01 \x01(\x0cR\x05\x63onst\x12\x10\n\x03len\x18\r \x01(\x04R\x03len\x12\x17\n\x07min_len\x18\x02 \x01(\x04R\x06minLen\x12\x17\n\x07max_len\x18\x03 \x01(\x04R\x06maxLen\x12\x18\n\x07pattern\x18\x04 \x01(\tR\x07pattern\x12\x16\n\x06prefix\x18\x05 \x01(\x0cR\x06prefix\x12\x16\n\x06suffix\x18\x06 \x01(\x0cR\x06suffix\x12\x1a\n\x08\x63ontains\x18\x07 \x01(\x0cR\x08\x63ontains\x12\x0e\n\x02in\x18\x08 \x03(\x0cR\x02in\x12\x15\n\x06not_in\x18\t \x03(\x0cR\x05notIn\x12\x10\n\x02ip\x18\n \x01(\x08H\x00R\x02ip\x12\x14\n\x04ipv4\x18\x0b \x01(\x08H\x00R\x04ipv4\x12\x14\n\x04ipv6\x18\x0c \x01(\x08H\x00R\x04ipv6\x12!\n\x0cignore_empty\x18\x0e \x01(\x08R\x0bignoreEmptyB\x0c\n\nwell_known\"k\n\tEnumRules\x12\x14\n\x05\x63onst\x18\x01 \x01(\x05R\x05\x63onst\x12!\n\x0c\x64\x65\x66ined_only\x18\x02 \x01(\x08R\x0b\x64\x65\x66inedOnly\x12\x0e\n\x02in\x18\x03 \x03(\x05R\x02in\x12\x15\n\x06not_in\x18\x04 \x03(\x05R\x05notIn\">\n\x0cMessageRules\x12\x12\n\x04skip\x18\x01 \x01(\x08R\x04skip\x12\x1a\n\x08required\x18\x02 \x01(\x08R\x08required\"\xb0\x01\n\rRepeatedRules\x12\x1b\n\tmin_items\x18\x01 \x01(\x04R\x08minItems\x12\x1b\n\tmax_items\x18\x02 \x01(\x04R\x08maxItems\x12\x16\n\x06unique\x18\x03 \x01(\x08R\x06unique\x12*\n\x05items\x18\x04 \x01(\x0b\x32\x14.validate.FieldRulesR\x05items\x12!\n\x0cignore_empty\x18\x05 \x01(\x08R\x0bignoreEmpty\"\xdc\x01\n\x08MapRules\x12\x1b\n\tmin_pairs\x18\x01 \x01(\x04R\x08minPairs\x12\x1b\n\tmax_pairs\x18\x02 \x01(\x04R\x08maxPairs\x12\x1b\n\tno_sparse\x18\x03 \x01(\x08R\x08noSparse\x12(\n\x04keys\x18\x04 \x01(\x0b\x32\x14.validate.FieldRulesR\x04keys\x12,\n\x06values\x18\x05 \x01(\x0b\x32\x14.validate.FieldRulesR\x06values\x12!\n\x0cignore_empty\x18\x06 \x01(\x08R\x0bignoreEmpty\"M\n\x08\x41nyRules\x12\x1a\n\x08required\x18\x01 \x01(\x08R\x08required\x12\x0e\n\x02in\x18\x02 \x03(\tR\x02in\x12\x15\n\x06not_in\x18\x03 \x03(\tR\x05notIn\"\xe9\x02\n\rDurationRules\x12\x1a\n\x08required\x18\x01 \x01(\x08R\x08required\x12/\n\x05\x63onst\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR\x05\x63onst\x12)\n\x02lt\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationR\x02lt\x12+\n\x03lte\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\x03lte\x12)\n\x02gt\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationR\x02gt\x12+\n\x03gte\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x03gte\x12)\n\x02in\x18\x07 \x03(\x0b\x32\x19.google.protobuf.DurationR\x02in\x12\x30\n\x06not_in\x18\x08 \x03(\x0b\x32\x19.google.protobuf.DurationR\x05notIn\"\xf3\x02\n\x0eTimestampRules\x12\x1a\n\x08required\x18\x01 \x01(\x08R\x08required\x12\x30\n\x05\x63onst\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x05\x63onst\x12*\n\x02lt\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x02lt\x12,\n\x03lte\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x03lte\x12*\n\x02gt\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x02gt\x12,\n\x03gte\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x03gte\x12\x15\n\x06lt_now\x18\x07 \x01(\x08R\x05ltNow\x12\x15\n\x06gt_now\x18\x08 \x01(\x08R\x05gtNow\x12\x31\n\x06within\x18\t \x01(\x0b\x32\x19.google.protobuf.DurationR\x06within*F\n\nKnownRegex\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x14\n\x10HTTP_HEADER_NAME\x10\x01\x12\x15\n\x11HTTP_HEADER_VALUE\x10\x02:<\n\x08\x64isabled\x12\x1f.google.protobuf.MessageOptions\x18\xaf\x08 \x01(\x08R\x08\x64isabled::\n\x07ignored\x12\x1f.google.protobuf.MessageOptions\x18\xb0\x08 \x01(\x08R\x07ignored::\n\x08required\x12\x1d.google.protobuf.OneofOptions\x18\xaf\x08 \x01(\x08R\x08required:J\n\x05rules\x12\x1d.google.protobuf.FieldOptions\x18\xaf\x08 \x01(\x0b\x32\x14.validate.FieldRulesR\x05rulesB\x91\x01\n\x0c\x63om.validateB\rValidateProtoP\x01Z2github.com/envoyproxy/protoc-gen-validate/validate\xa2\x02\x03VXX\xaa\x02\x08Validate\xca\x02\x08Validate\xe2\x02\x14Validate\\GPBMetadata\xea\x02\x08Validate') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'validate.validate_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\014com.validateB\rValidateProtoP\001Z2github.com/envoyproxy/protoc-gen-validate/validate\242\002\003VXX\252\002\010Validate\312\002\010Validate\342\002\024Validate\\GPBMetadata\352\002\010Validate' + _globals['_KNOWNREGEX']._serialized_start=5909 + _globals['_KNOWNREGEX']._serialized_end=5979 + _globals['_FIELDRULES']._serialized_start=137 + _globals['_FIELDRULES']._serialized_end=1233 + _globals['_FLOATRULES']._serialized_start=1236 + _globals['_FLOATRULES']._serialized_end=1412 + _globals['_DOUBLERULES']._serialized_start=1415 + _globals['_DOUBLERULES']._serialized_end=1592 + _globals['_INT32RULES']._serialized_start=1595 + _globals['_INT32RULES']._serialized_end=1771 + _globals['_INT64RULES']._serialized_start=1774 + _globals['_INT64RULES']._serialized_end=1950 + _globals['_UINT32RULES']._serialized_start=1953 + _globals['_UINT32RULES']._serialized_end=2130 + _globals['_UINT64RULES']._serialized_start=2133 + _globals['_UINT64RULES']._serialized_end=2310 + _globals['_SINT32RULES']._serialized_start=2313 + _globals['_SINT32RULES']._serialized_end=2490 + _globals['_SINT64RULES']._serialized_start=2493 + _globals['_SINT64RULES']._serialized_end=2670 + _globals['_FIXED32RULES']._serialized_start=2673 + _globals['_FIXED32RULES']._serialized_end=2851 + _globals['_FIXED64RULES']._serialized_start=2854 + _globals['_FIXED64RULES']._serialized_end=3032 + _globals['_SFIXED32RULES']._serialized_start=3035 + _globals['_SFIXED32RULES']._serialized_end=3214 + _globals['_SFIXED64RULES']._serialized_start=3217 + _globals['_SFIXED64RULES']._serialized_end=3396 + _globals['_BOOLRULES']._serialized_start=3398 + _globals['_BOOLRULES']._serialized_end=3431 + _globals['_STRINGRULES']._serialized_start=3434 + _globals['_STRINGRULES']._serialized_end=4158 + _globals['_BYTESRULES']._serialized_start=4161 + _globals['_BYTESRULES']._serialized_end=4515 + _globals['_ENUMRULES']._serialized_start=4517 + _globals['_ENUMRULES']._serialized_end=4624 + _globals['_MESSAGERULES']._serialized_start=4626 + _globals['_MESSAGERULES']._serialized_end=4688 + _globals['_REPEATEDRULES']._serialized_start=4691 + _globals['_REPEATEDRULES']._serialized_end=4867 + _globals['_MAPRULES']._serialized_start=4870 + _globals['_MAPRULES']._serialized_end=5090 + _globals['_ANYRULES']._serialized_start=5092 + _globals['_ANYRULES']._serialized_end=5169 + _globals['_DURATIONRULES']._serialized_start=5172 + _globals['_DURATIONRULES']._serialized_end=5533 + _globals['_TIMESTAMPRULES']._serialized_start=5536 + _globals['_TIMESTAMPRULES']._serialized_end=5907 +# @@protoc_insertion_point(module_scope) diff --git a/pytask/validate/validate_pb2.pyi b/pytask/validate/validate_pb2.pyi new file mode 100644 index 0000000..2286693 --- /dev/null +++ b/pytask/validate/validate_pb2.pyi @@ -0,0 +1,494 @@ +from google.protobuf import descriptor_pb2 as _descriptor_pb2 +from google.protobuf import duration_pb2 as _duration_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 import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class KnownRegex(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN: _ClassVar[KnownRegex] + HTTP_HEADER_NAME: _ClassVar[KnownRegex] + HTTP_HEADER_VALUE: _ClassVar[KnownRegex] +UNKNOWN: KnownRegex +HTTP_HEADER_NAME: KnownRegex +HTTP_HEADER_VALUE: KnownRegex +DISABLED_FIELD_NUMBER: _ClassVar[int] +disabled: _descriptor.FieldDescriptor +IGNORED_FIELD_NUMBER: _ClassVar[int] +ignored: _descriptor.FieldDescriptor +REQUIRED_FIELD_NUMBER: _ClassVar[int] +required: _descriptor.FieldDescriptor +RULES_FIELD_NUMBER: _ClassVar[int] +rules: _descriptor.FieldDescriptor + +class FieldRules(_message.Message): + __slots__ = ("message", "float", "double", "int32", "int64", "uint32", "uint64", "sint32", "sint64", "fixed32", "fixed64", "sfixed32", "sfixed64", "bool", "string", "bytes", "enum", "repeated", "map", "any", "duration", "timestamp") + MESSAGE_FIELD_NUMBER: _ClassVar[int] + FLOAT_FIELD_NUMBER: _ClassVar[int] + DOUBLE_FIELD_NUMBER: _ClassVar[int] + INT32_FIELD_NUMBER: _ClassVar[int] + INT64_FIELD_NUMBER: _ClassVar[int] + UINT32_FIELD_NUMBER: _ClassVar[int] + UINT64_FIELD_NUMBER: _ClassVar[int] + SINT32_FIELD_NUMBER: _ClassVar[int] + SINT64_FIELD_NUMBER: _ClassVar[int] + FIXED32_FIELD_NUMBER: _ClassVar[int] + FIXED64_FIELD_NUMBER: _ClassVar[int] + SFIXED32_FIELD_NUMBER: _ClassVar[int] + SFIXED64_FIELD_NUMBER: _ClassVar[int] + BOOL_FIELD_NUMBER: _ClassVar[int] + STRING_FIELD_NUMBER: _ClassVar[int] + BYTES_FIELD_NUMBER: _ClassVar[int] + ENUM_FIELD_NUMBER: _ClassVar[int] + REPEATED_FIELD_NUMBER: _ClassVar[int] + MAP_FIELD_NUMBER: _ClassVar[int] + ANY_FIELD_NUMBER: _ClassVar[int] + DURATION_FIELD_NUMBER: _ClassVar[int] + TIMESTAMP_FIELD_NUMBER: _ClassVar[int] + message: MessageRules + float: FloatRules + double: DoubleRules + int32: Int32Rules + int64: Int64Rules + uint32: UInt32Rules + uint64: UInt64Rules + sint32: SInt32Rules + sint64: SInt64Rules + fixed32: Fixed32Rules + fixed64: Fixed64Rules + sfixed32: SFixed32Rules + sfixed64: SFixed64Rules + bool: BoolRules + string: StringRules + bytes: BytesRules + enum: EnumRules + repeated: RepeatedRules + map: MapRules + any: AnyRules + duration: DurationRules + timestamp: TimestampRules + def __init__(self, message: _Optional[_Union[MessageRules, _Mapping]] = ..., float: _Optional[_Union[FloatRules, _Mapping]] = ..., double: _Optional[_Union[DoubleRules, _Mapping]] = ..., int32: _Optional[_Union[Int32Rules, _Mapping]] = ..., int64: _Optional[_Union[Int64Rules, _Mapping]] = ..., uint32: _Optional[_Union[UInt32Rules, _Mapping]] = ..., uint64: _Optional[_Union[UInt64Rules, _Mapping]] = ..., sint32: _Optional[_Union[SInt32Rules, _Mapping]] = ..., sint64: _Optional[_Union[SInt64Rules, _Mapping]] = ..., fixed32: _Optional[_Union[Fixed32Rules, _Mapping]] = ..., fixed64: _Optional[_Union[Fixed64Rules, _Mapping]] = ..., sfixed32: _Optional[_Union[SFixed32Rules, _Mapping]] = ..., sfixed64: _Optional[_Union[SFixed64Rules, _Mapping]] = ..., bool: _Optional[_Union[BoolRules, _Mapping]] = ..., string: _Optional[_Union[StringRules, _Mapping]] = ..., bytes: _Optional[_Union[BytesRules, _Mapping]] = ..., enum: _Optional[_Union[EnumRules, _Mapping]] = ..., repeated: _Optional[_Union[RepeatedRules, _Mapping]] = ..., map: _Optional[_Union[MapRules, _Mapping]] = ..., any: _Optional[_Union[AnyRules, _Mapping]] = ..., duration: _Optional[_Union[DurationRules, _Mapping]] = ..., timestamp: _Optional[_Union[TimestampRules, _Mapping]] = ...) -> None: ... + +class FloatRules(_message.Message): + __slots__ = ("const", "lt", "lte", "gt", "gte", "not_in", "ignore_empty") + CONST_FIELD_NUMBER: _ClassVar[int] + LT_FIELD_NUMBER: _ClassVar[int] + LTE_FIELD_NUMBER: _ClassVar[int] + GT_FIELD_NUMBER: _ClassVar[int] + GTE_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + const: float + lt: float + lte: float + gt: float + gte: float + not_in: _containers.RepeatedScalarFieldContainer[float] + ignore_empty: bool + def __init__(self, const: _Optional[float] = ..., lt: _Optional[float] = ..., lte: _Optional[float] = ..., gt: _Optional[float] = ..., gte: _Optional[float] = ..., not_in: _Optional[_Iterable[float]] = ..., ignore_empty: bool = ..., **kwargs) -> None: ... + +class DoubleRules(_message.Message): + __slots__ = ("const", "lt", "lte", "gt", "gte", "not_in", "ignore_empty") + CONST_FIELD_NUMBER: _ClassVar[int] + LT_FIELD_NUMBER: _ClassVar[int] + LTE_FIELD_NUMBER: _ClassVar[int] + GT_FIELD_NUMBER: _ClassVar[int] + GTE_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + const: float + lt: float + lte: float + gt: float + gte: float + not_in: _containers.RepeatedScalarFieldContainer[float] + ignore_empty: bool + def __init__(self, const: _Optional[float] = ..., lt: _Optional[float] = ..., lte: _Optional[float] = ..., gt: _Optional[float] = ..., gte: _Optional[float] = ..., not_in: _Optional[_Iterable[float]] = ..., ignore_empty: bool = ..., **kwargs) -> None: ... + +class Int32Rules(_message.Message): + __slots__ = ("const", "lt", "lte", "gt", "gte", "not_in", "ignore_empty") + CONST_FIELD_NUMBER: _ClassVar[int] + LT_FIELD_NUMBER: _ClassVar[int] + LTE_FIELD_NUMBER: _ClassVar[int] + GT_FIELD_NUMBER: _ClassVar[int] + GTE_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + const: int + lt: int + lte: int + gt: int + gte: int + not_in: _containers.RepeatedScalarFieldContainer[int] + ignore_empty: bool + def __init__(self, const: _Optional[int] = ..., lt: _Optional[int] = ..., lte: _Optional[int] = ..., gt: _Optional[int] = ..., gte: _Optional[int] = ..., not_in: _Optional[_Iterable[int]] = ..., ignore_empty: bool = ..., **kwargs) -> None: ... + +class Int64Rules(_message.Message): + __slots__ = ("const", "lt", "lte", "gt", "gte", "not_in", "ignore_empty") + CONST_FIELD_NUMBER: _ClassVar[int] + LT_FIELD_NUMBER: _ClassVar[int] + LTE_FIELD_NUMBER: _ClassVar[int] + GT_FIELD_NUMBER: _ClassVar[int] + GTE_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + const: int + lt: int + lte: int + gt: int + gte: int + not_in: _containers.RepeatedScalarFieldContainer[int] + ignore_empty: bool + def __init__(self, const: _Optional[int] = ..., lt: _Optional[int] = ..., lte: _Optional[int] = ..., gt: _Optional[int] = ..., gte: _Optional[int] = ..., not_in: _Optional[_Iterable[int]] = ..., ignore_empty: bool = ..., **kwargs) -> None: ... + +class UInt32Rules(_message.Message): + __slots__ = ("const", "lt", "lte", "gt", "gte", "not_in", "ignore_empty") + CONST_FIELD_NUMBER: _ClassVar[int] + LT_FIELD_NUMBER: _ClassVar[int] + LTE_FIELD_NUMBER: _ClassVar[int] + GT_FIELD_NUMBER: _ClassVar[int] + GTE_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + const: int + lt: int + lte: int + gt: int + gte: int + not_in: _containers.RepeatedScalarFieldContainer[int] + ignore_empty: bool + def __init__(self, const: _Optional[int] = ..., lt: _Optional[int] = ..., lte: _Optional[int] = ..., gt: _Optional[int] = ..., gte: _Optional[int] = ..., not_in: _Optional[_Iterable[int]] = ..., ignore_empty: bool = ..., **kwargs) -> None: ... + +class UInt64Rules(_message.Message): + __slots__ = ("const", "lt", "lte", "gt", "gte", "not_in", "ignore_empty") + CONST_FIELD_NUMBER: _ClassVar[int] + LT_FIELD_NUMBER: _ClassVar[int] + LTE_FIELD_NUMBER: _ClassVar[int] + GT_FIELD_NUMBER: _ClassVar[int] + GTE_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + const: int + lt: int + lte: int + gt: int + gte: int + not_in: _containers.RepeatedScalarFieldContainer[int] + ignore_empty: bool + def __init__(self, const: _Optional[int] = ..., lt: _Optional[int] = ..., lte: _Optional[int] = ..., gt: _Optional[int] = ..., gte: _Optional[int] = ..., not_in: _Optional[_Iterable[int]] = ..., ignore_empty: bool = ..., **kwargs) -> None: ... + +class SInt32Rules(_message.Message): + __slots__ = ("const", "lt", "lte", "gt", "gte", "not_in", "ignore_empty") + CONST_FIELD_NUMBER: _ClassVar[int] + LT_FIELD_NUMBER: _ClassVar[int] + LTE_FIELD_NUMBER: _ClassVar[int] + GT_FIELD_NUMBER: _ClassVar[int] + GTE_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + const: int + lt: int + lte: int + gt: int + gte: int + not_in: _containers.RepeatedScalarFieldContainer[int] + ignore_empty: bool + def __init__(self, const: _Optional[int] = ..., lt: _Optional[int] = ..., lte: _Optional[int] = ..., gt: _Optional[int] = ..., gte: _Optional[int] = ..., not_in: _Optional[_Iterable[int]] = ..., ignore_empty: bool = ..., **kwargs) -> None: ... + +class SInt64Rules(_message.Message): + __slots__ = ("const", "lt", "lte", "gt", "gte", "not_in", "ignore_empty") + CONST_FIELD_NUMBER: _ClassVar[int] + LT_FIELD_NUMBER: _ClassVar[int] + LTE_FIELD_NUMBER: _ClassVar[int] + GT_FIELD_NUMBER: _ClassVar[int] + GTE_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + const: int + lt: int + lte: int + gt: int + gte: int + not_in: _containers.RepeatedScalarFieldContainer[int] + ignore_empty: bool + def __init__(self, const: _Optional[int] = ..., lt: _Optional[int] = ..., lte: _Optional[int] = ..., gt: _Optional[int] = ..., gte: _Optional[int] = ..., not_in: _Optional[_Iterable[int]] = ..., ignore_empty: bool = ..., **kwargs) -> None: ... + +class Fixed32Rules(_message.Message): + __slots__ = ("const", "lt", "lte", "gt", "gte", "not_in", "ignore_empty") + CONST_FIELD_NUMBER: _ClassVar[int] + LT_FIELD_NUMBER: _ClassVar[int] + LTE_FIELD_NUMBER: _ClassVar[int] + GT_FIELD_NUMBER: _ClassVar[int] + GTE_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + const: int + lt: int + lte: int + gt: int + gte: int + not_in: _containers.RepeatedScalarFieldContainer[int] + ignore_empty: bool + def __init__(self, const: _Optional[int] = ..., lt: _Optional[int] = ..., lte: _Optional[int] = ..., gt: _Optional[int] = ..., gte: _Optional[int] = ..., not_in: _Optional[_Iterable[int]] = ..., ignore_empty: bool = ..., **kwargs) -> None: ... + +class Fixed64Rules(_message.Message): + __slots__ = ("const", "lt", "lte", "gt", "gte", "not_in", "ignore_empty") + CONST_FIELD_NUMBER: _ClassVar[int] + LT_FIELD_NUMBER: _ClassVar[int] + LTE_FIELD_NUMBER: _ClassVar[int] + GT_FIELD_NUMBER: _ClassVar[int] + GTE_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + const: int + lt: int + lte: int + gt: int + gte: int + not_in: _containers.RepeatedScalarFieldContainer[int] + ignore_empty: bool + def __init__(self, const: _Optional[int] = ..., lt: _Optional[int] = ..., lte: _Optional[int] = ..., gt: _Optional[int] = ..., gte: _Optional[int] = ..., not_in: _Optional[_Iterable[int]] = ..., ignore_empty: bool = ..., **kwargs) -> None: ... + +class SFixed32Rules(_message.Message): + __slots__ = ("const", "lt", "lte", "gt", "gte", "not_in", "ignore_empty") + CONST_FIELD_NUMBER: _ClassVar[int] + LT_FIELD_NUMBER: _ClassVar[int] + LTE_FIELD_NUMBER: _ClassVar[int] + GT_FIELD_NUMBER: _ClassVar[int] + GTE_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + const: int + lt: int + lte: int + gt: int + gte: int + not_in: _containers.RepeatedScalarFieldContainer[int] + ignore_empty: bool + def __init__(self, const: _Optional[int] = ..., lt: _Optional[int] = ..., lte: _Optional[int] = ..., gt: _Optional[int] = ..., gte: _Optional[int] = ..., not_in: _Optional[_Iterable[int]] = ..., ignore_empty: bool = ..., **kwargs) -> None: ... + +class SFixed64Rules(_message.Message): + __slots__ = ("const", "lt", "lte", "gt", "gte", "not_in", "ignore_empty") + CONST_FIELD_NUMBER: _ClassVar[int] + LT_FIELD_NUMBER: _ClassVar[int] + LTE_FIELD_NUMBER: _ClassVar[int] + GT_FIELD_NUMBER: _ClassVar[int] + GTE_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + const: int + lt: int + lte: int + gt: int + gte: int + not_in: _containers.RepeatedScalarFieldContainer[int] + ignore_empty: bool + def __init__(self, const: _Optional[int] = ..., lt: _Optional[int] = ..., lte: _Optional[int] = ..., gt: _Optional[int] = ..., gte: _Optional[int] = ..., not_in: _Optional[_Iterable[int]] = ..., ignore_empty: bool = ..., **kwargs) -> None: ... + +class BoolRules(_message.Message): + __slots__ = ("const",) + CONST_FIELD_NUMBER: _ClassVar[int] + const: bool + def __init__(self, const: bool = ...) -> None: ... + +class StringRules(_message.Message): + __slots__ = ("const", "len", "min_len", "max_len", "len_bytes", "min_bytes", "max_bytes", "pattern", "prefix", "suffix", "contains", "not_contains", "not_in", "email", "hostname", "ip", "ipv4", "ipv6", "uri", "uri_ref", "address", "uuid", "well_known_regex", "strict", "ignore_empty") + CONST_FIELD_NUMBER: _ClassVar[int] + LEN_FIELD_NUMBER: _ClassVar[int] + MIN_LEN_FIELD_NUMBER: _ClassVar[int] + MAX_LEN_FIELD_NUMBER: _ClassVar[int] + LEN_BYTES_FIELD_NUMBER: _ClassVar[int] + MIN_BYTES_FIELD_NUMBER: _ClassVar[int] + MAX_BYTES_FIELD_NUMBER: _ClassVar[int] + PATTERN_FIELD_NUMBER: _ClassVar[int] + PREFIX_FIELD_NUMBER: _ClassVar[int] + SUFFIX_FIELD_NUMBER: _ClassVar[int] + CONTAINS_FIELD_NUMBER: _ClassVar[int] + NOT_CONTAINS_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + EMAIL_FIELD_NUMBER: _ClassVar[int] + HOSTNAME_FIELD_NUMBER: _ClassVar[int] + IP_FIELD_NUMBER: _ClassVar[int] + IPV4_FIELD_NUMBER: _ClassVar[int] + IPV6_FIELD_NUMBER: _ClassVar[int] + URI_FIELD_NUMBER: _ClassVar[int] + URI_REF_FIELD_NUMBER: _ClassVar[int] + ADDRESS_FIELD_NUMBER: _ClassVar[int] + UUID_FIELD_NUMBER: _ClassVar[int] + WELL_KNOWN_REGEX_FIELD_NUMBER: _ClassVar[int] + STRICT_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + const: str + len: int + min_len: int + max_len: int + len_bytes: int + min_bytes: int + max_bytes: int + pattern: str + prefix: str + suffix: str + contains: str + not_contains: str + not_in: _containers.RepeatedScalarFieldContainer[str] + email: bool + hostname: bool + ip: bool + ipv4: bool + ipv6: bool + uri: bool + uri_ref: bool + address: bool + uuid: bool + well_known_regex: KnownRegex + strict: bool + ignore_empty: bool + def __init__(self, const: _Optional[str] = ..., len: _Optional[int] = ..., min_len: _Optional[int] = ..., max_len: _Optional[int] = ..., len_bytes: _Optional[int] = ..., min_bytes: _Optional[int] = ..., max_bytes: _Optional[int] = ..., pattern: _Optional[str] = ..., prefix: _Optional[str] = ..., suffix: _Optional[str] = ..., contains: _Optional[str] = ..., not_contains: _Optional[str] = ..., not_in: _Optional[_Iterable[str]] = ..., email: bool = ..., hostname: bool = ..., ip: bool = ..., ipv4: bool = ..., ipv6: bool = ..., uri: bool = ..., uri_ref: bool = ..., address: bool = ..., uuid: bool = ..., well_known_regex: _Optional[_Union[KnownRegex, str]] = ..., strict: bool = ..., ignore_empty: bool = ..., **kwargs) -> None: ... + +class BytesRules(_message.Message): + __slots__ = ("const", "len", "min_len", "max_len", "pattern", "prefix", "suffix", "contains", "not_in", "ip", "ipv4", "ipv6", "ignore_empty") + CONST_FIELD_NUMBER: _ClassVar[int] + LEN_FIELD_NUMBER: _ClassVar[int] + MIN_LEN_FIELD_NUMBER: _ClassVar[int] + MAX_LEN_FIELD_NUMBER: _ClassVar[int] + PATTERN_FIELD_NUMBER: _ClassVar[int] + PREFIX_FIELD_NUMBER: _ClassVar[int] + SUFFIX_FIELD_NUMBER: _ClassVar[int] + CONTAINS_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + IP_FIELD_NUMBER: _ClassVar[int] + IPV4_FIELD_NUMBER: _ClassVar[int] + IPV6_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + const: bytes + len: int + min_len: int + max_len: int + pattern: str + prefix: bytes + suffix: bytes + contains: bytes + not_in: _containers.RepeatedScalarFieldContainer[bytes] + ip: bool + ipv4: bool + ipv6: bool + ignore_empty: bool + def __init__(self, const: _Optional[bytes] = ..., len: _Optional[int] = ..., min_len: _Optional[int] = ..., max_len: _Optional[int] = ..., pattern: _Optional[str] = ..., prefix: _Optional[bytes] = ..., suffix: _Optional[bytes] = ..., contains: _Optional[bytes] = ..., not_in: _Optional[_Iterable[bytes]] = ..., ip: bool = ..., ipv4: bool = ..., ipv6: bool = ..., ignore_empty: bool = ..., **kwargs) -> None: ... + +class EnumRules(_message.Message): + __slots__ = ("const", "defined_only", "not_in") + CONST_FIELD_NUMBER: _ClassVar[int] + DEFINED_ONLY_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + const: int + defined_only: bool + not_in: _containers.RepeatedScalarFieldContainer[int] + def __init__(self, const: _Optional[int] = ..., defined_only: bool = ..., not_in: _Optional[_Iterable[int]] = ..., **kwargs) -> None: ... + +class MessageRules(_message.Message): + __slots__ = ("skip", "required") + SKIP_FIELD_NUMBER: _ClassVar[int] + REQUIRED_FIELD_NUMBER: _ClassVar[int] + skip: bool + required: bool + def __init__(self, skip: bool = ..., required: bool = ...) -> None: ... + +class RepeatedRules(_message.Message): + __slots__ = ("min_items", "max_items", "unique", "items", "ignore_empty") + MIN_ITEMS_FIELD_NUMBER: _ClassVar[int] + MAX_ITEMS_FIELD_NUMBER: _ClassVar[int] + UNIQUE_FIELD_NUMBER: _ClassVar[int] + ITEMS_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + min_items: int + max_items: int + unique: bool + items: FieldRules + ignore_empty: bool + def __init__(self, min_items: _Optional[int] = ..., max_items: _Optional[int] = ..., unique: bool = ..., items: _Optional[_Union[FieldRules, _Mapping]] = ..., ignore_empty: bool = ...) -> None: ... + +class MapRules(_message.Message): + __slots__ = ("min_pairs", "max_pairs", "no_sparse", "keys", "values", "ignore_empty") + MIN_PAIRS_FIELD_NUMBER: _ClassVar[int] + MAX_PAIRS_FIELD_NUMBER: _ClassVar[int] + NO_SPARSE_FIELD_NUMBER: _ClassVar[int] + KEYS_FIELD_NUMBER: _ClassVar[int] + VALUES_FIELD_NUMBER: _ClassVar[int] + IGNORE_EMPTY_FIELD_NUMBER: _ClassVar[int] + min_pairs: int + max_pairs: int + no_sparse: bool + keys: FieldRules + values: FieldRules + ignore_empty: bool + def __init__(self, min_pairs: _Optional[int] = ..., max_pairs: _Optional[int] = ..., no_sparse: bool = ..., keys: _Optional[_Union[FieldRules, _Mapping]] = ..., values: _Optional[_Union[FieldRules, _Mapping]] = ..., ignore_empty: bool = ...) -> None: ... + +class AnyRules(_message.Message): + __slots__ = ("required", "not_in") + REQUIRED_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + required: bool + not_in: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, required: bool = ..., not_in: _Optional[_Iterable[str]] = ..., **kwargs) -> None: ... + +class DurationRules(_message.Message): + __slots__ = ("required", "const", "lt", "lte", "gt", "gte", "not_in") + REQUIRED_FIELD_NUMBER: _ClassVar[int] + CONST_FIELD_NUMBER: _ClassVar[int] + LT_FIELD_NUMBER: _ClassVar[int] + LTE_FIELD_NUMBER: _ClassVar[int] + GT_FIELD_NUMBER: _ClassVar[int] + GTE_FIELD_NUMBER: _ClassVar[int] + IN_FIELD_NUMBER: _ClassVar[int] + NOT_IN_FIELD_NUMBER: _ClassVar[int] + required: bool + const: _duration_pb2.Duration + lt: _duration_pb2.Duration + lte: _duration_pb2.Duration + gt: _duration_pb2.Duration + gte: _duration_pb2.Duration + not_in: _containers.RepeatedCompositeFieldContainer[_duration_pb2.Duration] + def __init__(self, required: bool = ..., const: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., lt: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., lte: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., gt: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., gte: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., not_in: _Optional[_Iterable[_Union[_duration_pb2.Duration, _Mapping]]] = ..., **kwargs) -> None: ... + +class TimestampRules(_message.Message): + __slots__ = ("required", "const", "lt", "lte", "gt", "gte", "lt_now", "gt_now", "within") + REQUIRED_FIELD_NUMBER: _ClassVar[int] + CONST_FIELD_NUMBER: _ClassVar[int] + LT_FIELD_NUMBER: _ClassVar[int] + LTE_FIELD_NUMBER: _ClassVar[int] + GT_FIELD_NUMBER: _ClassVar[int] + GTE_FIELD_NUMBER: _ClassVar[int] + LT_NOW_FIELD_NUMBER: _ClassVar[int] + GT_NOW_FIELD_NUMBER: _ClassVar[int] + WITHIN_FIELD_NUMBER: _ClassVar[int] + required: bool + const: _timestamp_pb2.Timestamp + lt: _timestamp_pb2.Timestamp + lte: _timestamp_pb2.Timestamp + gt: _timestamp_pb2.Timestamp + gte: _timestamp_pb2.Timestamp + lt_now: bool + gt_now: bool + within: _duration_pb2.Duration + def __init__(self, required: bool = ..., const: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., lt: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., lte: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., gt: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., gte: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., lt_now: bool = ..., gt_now: bool = ..., within: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...) -> None: ...
    NameNumberDescription
    EXECUTION_STATUS_UNSPECIFIED 0

    Status is not specified.

    EXECUTION_STATUS_PENDING 1

    Task or workflow is pending execution.

    EXECUTION_STATUS_RUNNING 2

    Task or workflow is currently running.

    EXECUTION_STATUS_COMPLETED 3

    Task or workflow has completed execution.

    EXECUTION_STATUS_FAILED 4

    Task or workflow has failed.

    Heartbeat HeartbeatRequest HeartbeatResponse

    Sends a heartbeat signal to indicate the service is alive.

    PullEvents PullEventsRequest PullEventsResponse stream

    Pulls events related to task execution.