indexify 0.3.19__py3-none-any.whl → 0.3.20__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. indexify/cli/cli.py +12 -0
  2. indexify/executor/blob_store/blob_store.py +69 -0
  3. indexify/executor/blob_store/local_fs_blob_store.py +48 -0
  4. indexify/executor/blob_store/metrics/blob_store.py +33 -0
  5. indexify/executor/blob_store/s3_blob_store.py +85 -0
  6. indexify/executor/downloader.py +145 -24
  7. indexify/executor/executor.py +26 -12
  8. indexify/executor/function_executor/function_executor.py +1 -1
  9. indexify/executor/function_executor/function_executor_states_container.py +5 -0
  10. indexify/executor/function_executor/function_executor_status.py +2 -0
  11. indexify/executor/function_executor/health_checker.py +7 -2
  12. indexify/executor/function_executor/invocation_state_client.py +4 -2
  13. indexify/executor/function_executor/task_output.py +2 -1
  14. indexify/executor/grpc/channel_manager.py +4 -3
  15. indexify/executor/grpc/function_executor_controller.py +163 -193
  16. indexify/executor/grpc/metrics/state_reconciler.py +17 -0
  17. indexify/executor/grpc/metrics/task_controller.py +8 -0
  18. indexify/executor/grpc/state_reconciler.py +305 -188
  19. indexify/executor/grpc/state_reporter.py +18 -10
  20. indexify/executor/grpc/task_controller.py +232 -189
  21. indexify/executor/task_reporter.py +23 -5
  22. indexify/proto/executor_api.proto +37 -11
  23. indexify/proto/executor_api_pb2.py +49 -47
  24. indexify/proto/executor_api_pb2.pyi +55 -15
  25. {indexify-0.3.19.dist-info → indexify-0.3.20.dist-info}/METADATA +2 -1
  26. {indexify-0.3.19.dist-info → indexify-0.3.20.dist-info}/RECORD +28 -23
  27. indexify/executor/grpc/completed_tasks_container.py +0 -26
  28. {indexify-0.3.19.dist-info → indexify-0.3.20.dist-info}/WHEEL +0 -0
  29. {indexify-0.3.19.dist-info → indexify-0.3.20.dist-info}/entry_points.txt +0 -0
@@ -9,6 +9,7 @@ from tensorlake.utils.http_client import get_httpx_client
9
9
 
10
10
  from indexify.proto.executor_api_pb2 import (
11
11
  DataPayload,
12
+ DataPayloadEncoding,
12
13
  OutputEncoding,
13
14
  ReportTaskOutcomeRequest,
14
15
  TaskOutcome,
@@ -75,7 +76,7 @@ class TaskReporter:
75
76
  self._client = get_httpx_client(config_path, make_async=False)
76
77
  self._channel_manager = channel_manager
77
78
 
78
- async def shutdown(self):
79
+ async def shutdown(self) -> None:
79
80
  """Shuts down the task reporter.
80
81
 
81
82
  Task reporter stops reporting all task outcomes to the Server.
@@ -84,7 +85,7 @@ class TaskReporter:
84
85
  """
85
86
  self._is_shutdown = True
86
87
 
87
- async def report(self, output: TaskOutput, logger: Any):
88
+ async def report(self, output: TaskOutput, logger: Any) -> None:
88
89
  """Reports result of the supplied task."""
89
90
  logger = logger.bind(module=__name__)
90
91
 
@@ -121,6 +122,7 @@ class TaskReporter:
121
122
  "files": output_files if len(output_files) > 0 else FORCE_MULTIPART,
122
123
  }
123
124
 
125
+ # TODO: Instead of uploading the files to server, upload them to S3.
124
126
  start_time = time.time()
125
127
  with metric_server_ingest_files_latency.time():
126
128
  metric_server_ingest_files_requests.inc()
@@ -159,23 +161,32 @@ class TaskReporter:
159
161
  for data_payload in ingested_files.data_payloads:
160
162
  fn_outputs.append(
161
163
  DataPayload(
162
- path=data_payload.path,
164
+ path=data_payload.path, # TODO: stop using this deprecated field once Server side migration is done.
165
+ uri=data_payload.path,
163
166
  size=data_payload.size,
164
167
  sha256_hash=data_payload.sha256_hash,
168
+ encoding=_to_grpc_data_payload_encoding(output),
169
+ encoding_version=0,
165
170
  )
166
171
  )
167
172
  stdout, stderr = None, None
168
173
  if ingested_files.stdout:
169
174
  stdout = DataPayload(
170
- path=ingested_files.stdout.path,
175
+ path=ingested_files.stdout.path, # TODO: stop using this deprecated field once Server side migration is done.
176
+ uri=ingested_files.stdout.path,
171
177
  size=ingested_files.stdout.size,
172
178
  sha256_hash=ingested_files.stdout.sha256_hash,
179
+ encoding=DataPayloadEncoding.DATA_PAYLOAD_ENCODING_UTF8_TEXT,
180
+ encoding_version=0,
173
181
  )
174
182
  if ingested_files.stderr:
175
183
  stderr = DataPayload(
176
- path=ingested_files.stderr.path,
184
+ path=ingested_files.stderr.path, # TODO: stop using this deprecated field once Server side migration is done.
185
+ uri=ingested_files.stderr.path,
177
186
  size=ingested_files.stderr.size,
178
187
  sha256_hash=ingested_files.stderr.sha256_hash,
188
+ encoding=DataPayloadEncoding.DATA_PAYLOAD_ENCODING_UTF8_TEXT,
189
+ encoding_version=0,
179
190
  )
180
191
 
181
192
  request = ReportTaskOutcomeRequest(
@@ -337,3 +348,10 @@ def _to_grpc_output_encoding(task_output: TaskOutput) -> OutputEncoding:
337
348
  return OutputEncoding.OUTPUT_ENCODING_JSON
338
349
  else:
339
350
  return OutputEncoding.OUTPUT_ENCODING_PICKLE
351
+
352
+
353
+ def _to_grpc_data_payload_encoding(task_output: TaskOutput) -> DataPayloadEncoding:
354
+ if task_output.output_encoding == "json":
355
+ return DataPayloadEncoding.DATA_PAYLOAD_ENCODING_UTF8_JSON
356
+ else:
357
+ return DataPayloadEncoding.DATA_PAYLOAD_ENCODING_BINARY_PICKLE
@@ -4,6 +4,28 @@ syntax = "proto3";
4
4
  // Existing clients won't find the service if the package name changes.
5
5
  package executor_api_pb;
6
6
 
7
+ // ===== DataPayload =====
8
+ enum DataPayloadEncoding {
9
+ DATA_PAYLOAD_ENCODING_UNKNOWN = 0;
10
+ // These encodings are currently mapping 1:1 to mime types.
11
+ // TODO: use SDK specific encodings becase 1:1 mapping might not work in the future.
12
+ DATA_PAYLOAD_ENCODING_UTF8_JSON = 1;
13
+ DATA_PAYLOAD_ENCODING_UTF8_TEXT = 2;
14
+ DATA_PAYLOAD_ENCODING_BINARY_PICKLE = 3;
15
+ }
16
+
17
+ message DataPayload {
18
+ optional string path = 1; // deprecated, TODO: remove when URI us used everywhere
19
+ optional uint64 size = 2;
20
+ optional string sha256_hash = 3;
21
+ // URI of the data.
22
+ // S3 URI if the data is stored in S3.
23
+ // Starts with "file://"" prefix if the data is stored on a local file system.
24
+ optional string uri = 4;
25
+ optional DataPayloadEncoding encoding = 5;
26
+ optional uint64 encoding_version = 6;
27
+ }
28
+
7
29
  // ===== report_executor_state RPC =====
8
30
 
9
31
  enum GPUModel {
@@ -72,6 +94,7 @@ message FunctionExecutorDescription {
72
94
  optional HostResources resource_limits = 8;
73
95
  // Timeout for customer code duration during FE creation.
74
96
  optional uint32 customer_code_timeout_ms = 9;
97
+ optional DataPayload graph = 10;
75
98
  }
76
99
 
77
100
  message FunctionExecutorState {
@@ -112,6 +135,9 @@ message ExecutorState {
112
135
  repeated FunctionExecutorState function_executor_states = 9;
113
136
  map<string, string> labels = 10;
114
137
  optional string state_hash = 11;
138
+ // Server supplied clock value of the latest desired executor state that was
139
+ // reconciled by Executor. Not included into state_hash.
140
+ optional uint64 server_clock = 12;
115
141
  }
116
142
 
117
143
  // A message sent by Executor to report its up to date state to Server.
@@ -131,9 +157,15 @@ message Task {
131
157
  optional string graph_version = 4;
132
158
  optional string function_name = 5;
133
159
  optional string graph_invocation_id = 6;
134
- optional string input_key = 8;
135
- optional string reducer_output_key = 9;
160
+ optional string input_key = 8; // deprecated. TODO: remove when input is used everywhere
161
+ optional string reducer_output_key = 9; // deprecated. TODO: remove when reducer_input is used everywhere
136
162
  optional uint32 timeout_ms = 10;
163
+ optional DataPayload input = 11;
164
+ optional DataPayload reducer_input = 12;
165
+ // URI prefix for the output payloads.
166
+ // S3 URI if the data is stored in S3.
167
+ // Starts with "file://"" prefix followed by an absolute directory path if the data is stored on a local file system.
168
+ optional string output_payload_uri_prefix = 13;
137
169
  }
138
170
 
139
171
  message TaskAllocation {
@@ -163,12 +195,6 @@ enum TaskOutcome {
163
195
  TASK_OUTCOME_FAILURE = 2;
164
196
  }
165
197
 
166
- message DataPayload {
167
- optional string path = 1;
168
- optional uint64 size = 2;
169
- optional string sha256_hash = 3;
170
- }
171
-
172
198
  enum OutputEncoding {
173
199
  OUTPUT_ENCODING_UNKNOWN = 0;
174
200
  OUTPUT_ENCODING_JSON = 1;
@@ -183,7 +209,7 @@ message ReportTaskOutcomeRequest {
183
209
  optional string function_name = 4;
184
210
  optional string graph_invocation_id = 6;
185
211
  optional TaskOutcome outcome = 7;
186
- optional string invocation_id = 8;
212
+ optional string invocation_id = 8; // deprecated. TODO: remove when graph_invocation_id is used everywhere
187
213
  optional string executor_id = 9;
188
214
  optional bool reducer = 10;
189
215
 
@@ -196,10 +222,10 @@ message ReportTaskOutcomeRequest {
196
222
  optional DataPayload stdout = 14;
197
223
  optional DataPayload stderr = 15;
198
224
  // Output encoding of all the outputs of a function have to be same.
199
- optional OutputEncoding output_encoding = 13;
225
+ optional OutputEncoding output_encoding = 13; // deprecated. TODO: remove when DataPayload.encoding is used everywhere
200
226
  // This allows us to change how we encode the output from functions
201
227
  // and serialize them into storage.
202
- optional uint64 output_encoding_version = 5;
228
+ optional uint64 output_encoding_version = 5; // deprecated. TODO: remove when DataPayload.encoding_version is used everywhere
203
229
  }
204
230
 
205
231
  message ReportTaskOutcomeResponse {
@@ -19,7 +19,7 @@ _sym_db = _symbol_database.Default()
19
19
 
20
20
 
21
21
  DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
22
- b'\n!indexify/proto/executor_api.proto\x12\x0f\x65xecutor_api_pb"e\n\x0cGPUResources\x12\x12\n\x05\x63ount\x18\x01 \x01(\rH\x00\x88\x01\x01\x12-\n\x05model\x18\x02 \x01(\x0e\x32\x19.executor_api_pb.GPUModelH\x01\x88\x01\x01\x42\x08\n\x06_countB\x08\n\x06_model"\xc2\x01\n\rHostResources\x12\x16\n\tcpu_count\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x19\n\x0cmemory_bytes\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x17\n\ndisk_bytes\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12/\n\x03gpu\x18\x04 \x01(\x0b\x32\x1d.executor_api_pb.GPUResourcesH\x03\x88\x01\x01\x42\x0c\n\n_cpu_countB\x0f\n\r_memory_bytesB\r\n\x0b_disk_bytesB\x06\n\x04_gpu"\xbb\x01\n\x0f\x41llowedFunction\x12\x16\n\tnamespace\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ngraph_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rgraph_version\x18\x04 \x01(\tH\x03\x88\x01\x01\x42\x0c\n\n_namespaceB\r\n\x0b_graph_nameB\x10\n\x0e_function_nameB\x10\n\x0e_graph_version"\xb1\x03\n\x1b\x46unctionExecutorDescription\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tnamespace\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x17\n\ngraph_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rgraph_version\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x16\n\timage_uri\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x14\n\x0csecret_names\x18\x07 \x03(\t\x12<\n\x0fresource_limits\x18\x08 \x01(\x0b\x32\x1e.executor_api_pb.HostResourcesH\x06\x88\x01\x01\x12%\n\x18\x63ustomer_code_timeout_ms\x18\t \x01(\rH\x07\x88\x01\x01\x42\x05\n\x03_idB\x0c\n\n_namespaceB\r\n\x0b_graph_nameB\x10\n\x0e_graph_versionB\x10\n\x0e_function_nameB\x0c\n\n_image_uriB\x12\n\x10_resource_limitsB\x1b\n\x19_customer_code_timeout_ms"\xe8\x01\n\x15\x46unctionExecutorState\x12\x46\n\x0b\x64\x65scription\x18\x01 \x01(\x0b\x32,.executor_api_pb.FunctionExecutorDescriptionH\x00\x88\x01\x01\x12<\n\x06status\x18\x02 \x01(\x0e\x32\'.executor_api_pb.FunctionExecutorStatusH\x01\x88\x01\x01\x12\x1b\n\x0estatus_message\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x0e\n\x0c_descriptionB\t\n\x07_statusB\x11\n\x0f_status_message"\x9f\x05\n\rExecutorState\x12\x18\n\x0b\x65xecutor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x10\x64\x65velopment_mode\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x15\n\x08hostname\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x34\n\x06\x66lavor\x18\x04 \x01(\x0e\x32\x1f.executor_api_pb.ExecutorFlavorH\x03\x88\x01\x01\x12\x14\n\x07version\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x34\n\x06status\x18\x06 \x01(\x0e\x32\x1f.executor_api_pb.ExecutorStatusH\x05\x88\x01\x01\x12;\n\x0e\x66ree_resources\x18\x07 \x01(\x0b\x32\x1e.executor_api_pb.HostResourcesH\x06\x88\x01\x01\x12;\n\x11\x61llowed_functions\x18\x08 \x03(\x0b\x32 .executor_api_pb.AllowedFunction\x12H\n\x18\x66unction_executor_states\x18\t \x03(\x0b\x32&.executor_api_pb.FunctionExecutorState\x12:\n\x06labels\x18\n \x03(\x0b\x32*.executor_api_pb.ExecutorState.LabelsEntry\x12\x17\n\nstate_hash\x18\x0b \x01(\tH\x07\x88\x01\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0e\n\x0c_executor_idB\x13\n\x11_development_modeB\x0b\n\t_hostnameB\t\n\x07_flavorB\n\n\x08_versionB\t\n\x07_statusB\x11\n\x0f_free_resourcesB\r\n\x0b_state_hash"l\n\x1aReportExecutorStateRequest\x12;\n\x0e\x65xecutor_state\x18\x01 \x01(\x0b\x32\x1e.executor_api_pb.ExecutorStateH\x00\x88\x01\x01\x42\x11\n\x0f_executor_state"\x1d\n\x1bReportExecutorStateResponse"\x88\x03\n\x04Task\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tnamespace\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x17\n\ngraph_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rgraph_version\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x05 \x01(\tH\x04\x88\x01\x01\x12 \n\x13graph_invocation_id\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x16\n\tinput_key\x18\x08 \x01(\tH\x06\x88\x01\x01\x12\x1f\n\x12reducer_output_key\x18\t \x01(\tH\x07\x88\x01\x01\x12\x17\n\ntimeout_ms\x18\n \x01(\rH\x08\x88\x01\x01\x42\x05\n\x03_idB\x0c\n\n_namespaceB\r\n\x0b_graph_nameB\x10\n\x0e_graph_versionB\x10\n\x0e_function_nameB\x16\n\x14_graph_invocation_idB\x0c\n\n_input_keyB\x15\n\x13_reducer_output_keyB\r\n\x0b_timeout_ms"\x7f\n\x0eTaskAllocation\x12!\n\x14\x66unction_executor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12(\n\x04task\x18\x02 \x01(\x0b\x32\x15.executor_api_pb.TaskH\x01\x88\x01\x01\x42\x17\n\x15_function_executor_idB\x07\n\x05_task"K\n\x1fGetDesiredExecutorStatesRequest\x12\x18\n\x0b\x65xecutor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_executor_id"\xb9\x01\n\x14\x44\x65siredExecutorState\x12H\n\x12\x66unction_executors\x18\x01 \x03(\x0b\x32,.executor_api_pb.FunctionExecutorDescription\x12\x39\n\x10task_allocations\x18\x02 \x03(\x0b\x32\x1f.executor_api_pb.TaskAllocation\x12\x12\n\x05\x63lock\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x08\n\x06_clock"o\n\x0b\x44\x61taPayload\x12\x11\n\x04path\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04size\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x18\n\x0bsha256_hash\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x07\n\x05_pathB\x07\n\x05_sizeB\x0e\n\x0c_sha256_hash"\x87\x06\n\x18ReportTaskOutcomeRequest\x12\x14\n\x07task_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tnamespace\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x17\n\ngraph_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x04 \x01(\tH\x03\x88\x01\x01\x12 \n\x13graph_invocation_id\x18\x06 \x01(\tH\x04\x88\x01\x01\x12\x32\n\x07outcome\x18\x07 \x01(\x0e\x32\x1c.executor_api_pb.TaskOutcomeH\x05\x88\x01\x01\x12\x1a\n\rinvocation_id\x18\x08 \x01(\tH\x06\x88\x01\x01\x12\x18\n\x0b\x65xecutor_id\x18\t \x01(\tH\x07\x88\x01\x01\x12\x14\n\x07reducer\x18\n \x01(\x08H\x08\x88\x01\x01\x12\x16\n\x0enext_functions\x18\x0b \x03(\t\x12\x30\n\nfn_outputs\x18\x0c \x03(\x0b\x32\x1c.executor_api_pb.DataPayload\x12\x31\n\x06stdout\x18\x0e \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\t\x88\x01\x01\x12\x31\n\x06stderr\x18\x0f \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\n\x88\x01\x01\x12=\n\x0foutput_encoding\x18\r \x01(\x0e\x32\x1f.executor_api_pb.OutputEncodingH\x0b\x88\x01\x01\x12$\n\x17output_encoding_version\x18\x05 \x01(\x04H\x0c\x88\x01\x01\x42\n\n\x08_task_idB\x0c\n\n_namespaceB\r\n\x0b_graph_nameB\x10\n\x0e_function_nameB\x16\n\x14_graph_invocation_idB\n\n\x08_outcomeB\x10\n\x0e_invocation_idB\x0e\n\x0c_executor_idB\n\n\x08_reducerB\t\n\x07_stdoutB\t\n\x07_stderrB\x12\n\x10_output_encodingB\x1a\n\x18_output_encoding_version"\x1b\n\x19ReportTaskOutcomeResponse*\x86\x03\n\x08GPUModel\x12\x15\n\x11GPU_MODEL_UNKNOWN\x10\x00\x12"\n\x1eGPU_MODEL_NVIDIA_TESLA_T4_16GB\x10\n\x12$\n GPU_MODEL_NVIDIA_TESLA_V100_16GB\x10\x14\x12\x1d\n\x19GPU_MODEL_NVIDIA_A10_24GB\x10\x1e\x12\x1f\n\x1bGPU_MODEL_NVIDIA_A6000_48GB\x10(\x12#\n\x1fGPU_MODEL_NVIDIA_A100_SXM4_40GB\x10\x32\x12#\n\x1fGPU_MODEL_NVIDIA_A100_SXM4_80GB\x10\x33\x12"\n\x1eGPU_MODEL_NVIDIA_A100_PCI_40GB\x10\x34\x12#\n\x1fGPU_MODEL_NVIDIA_H100_SXM5_80GB\x10<\x12"\n\x1eGPU_MODEL_NVIDIA_H100_PCI_80GB\x10=\x12"\n\x1eGPU_MODEL_NVIDIA_RTX_6000_24GB\x10>*\xca\x03\n\x16\x46unctionExecutorStatus\x12$\n FUNCTION_EXECUTOR_STATUS_UNKNOWN\x10\x00\x12(\n$FUNCTION_EXECUTOR_STATUS_STARTING_UP\x10\x01\x12:\n6FUNCTION_EXECUTOR_STATUS_STARTUP_FAILED_CUSTOMER_ERROR\x10\x02\x12:\n6FUNCTION_EXECUTOR_STATUS_STARTUP_FAILED_PLATFORM_ERROR\x10\x03\x12!\n\x1d\x46UNCTION_EXECUTOR_STATUS_IDLE\x10\x04\x12)\n%FUNCTION_EXECUTOR_STATUS_RUNNING_TASK\x10\x05\x12&\n"FUNCTION_EXECUTOR_STATUS_UNHEALTHY\x10\x06\x12%\n!FUNCTION_EXECUTOR_STATUS_STOPPING\x10\x07\x12$\n FUNCTION_EXECUTOR_STATUS_STOPPED\x10\x08\x12%\n!FUNCTION_EXECUTOR_STATUS_SHUTDOWN\x10\t*\xc3\x01\n\x0e\x45xecutorStatus\x12\x1b\n\x17\x45XECUTOR_STATUS_UNKNOWN\x10\x00\x12\x1f\n\x1b\x45XECUTOR_STATUS_STARTING_UP\x10\x01\x12\x1b\n\x17\x45XECUTOR_STATUS_RUNNING\x10\x02\x12\x1b\n\x17\x45XECUTOR_STATUS_DRAINED\x10\x03\x12\x1c\n\x18\x45XECUTOR_STATUS_STOPPING\x10\x04\x12\x1b\n\x17\x45XECUTOR_STATUS_STOPPED\x10\x05*d\n\x0e\x45xecutorFlavor\x12\x1b\n\x17\x45XECUTOR_FLAVOR_UNKNOWN\x10\x00\x12\x17\n\x13\x45XECUTOR_FLAVOR_OSS\x10\x01\x12\x1c\n\x18\x45XECUTOR_FLAVOR_PLATFORM\x10\x02*[\n\x0bTaskOutcome\x12\x18\n\x14TASK_OUTCOME_UNKNOWN\x10\x00\x12\x18\n\x14TASK_OUTCOME_SUCCESS\x10\x01\x12\x18\n\x14TASK_OUTCOME_FAILURE\x10\x02*\x7f\n\x0eOutputEncoding\x12\x1b\n\x17OUTPUT_ENCODING_UNKNOWN\x10\x00\x12\x18\n\x14OUTPUT_ENCODING_JSON\x10\x01\x12\x1a\n\x16OUTPUT_ENCODING_PICKLE\x10\x02\x12\x1a\n\x16OUTPUT_ENCODING_BINARY\x10\x03\x32\xef\x02\n\x0b\x45xecutorAPI\x12t\n\x15report_executor_state\x12+.executor_api_pb.ReportExecutorStateRequest\x1a,.executor_api_pb.ReportExecutorStateResponse"\x00\x12z\n\x1bget_desired_executor_states\x12\x30.executor_api_pb.GetDesiredExecutorStatesRequest\x1a%.executor_api_pb.DesiredExecutorState"\x00\x30\x01\x12n\n\x13report_task_outcome\x12).executor_api_pb.ReportTaskOutcomeRequest\x1a*.executor_api_pb.ReportTaskOutcomeResponse"\x00\x62\x06proto3'
22
+ b'\n!indexify/proto/executor_api.proto\x12\x0f\x65xecutor_api_pb"\x87\x02\n\x0b\x44\x61taPayload\x12\x11\n\x04path\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04size\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x18\n\x0bsha256_hash\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x10\n\x03uri\x18\x04 \x01(\tH\x03\x88\x01\x01\x12;\n\x08\x65ncoding\x18\x05 \x01(\x0e\x32$.executor_api_pb.DataPayloadEncodingH\x04\x88\x01\x01\x12\x1d\n\x10\x65ncoding_version\x18\x06 \x01(\x04H\x05\x88\x01\x01\x42\x07\n\x05_pathB\x07\n\x05_sizeB\x0e\n\x0c_sha256_hashB\x06\n\x04_uriB\x0b\n\t_encodingB\x13\n\x11_encoding_version"e\n\x0cGPUResources\x12\x12\n\x05\x63ount\x18\x01 \x01(\rH\x00\x88\x01\x01\x12-\n\x05model\x18\x02 \x01(\x0e\x32\x19.executor_api_pb.GPUModelH\x01\x88\x01\x01\x42\x08\n\x06_countB\x08\n\x06_model"\xc2\x01\n\rHostResources\x12\x16\n\tcpu_count\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x19\n\x0cmemory_bytes\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x17\n\ndisk_bytes\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12/\n\x03gpu\x18\x04 \x01(\x0b\x32\x1d.executor_api_pb.GPUResourcesH\x03\x88\x01\x01\x42\x0c\n\n_cpu_countB\x0f\n\r_memory_bytesB\r\n\x0b_disk_bytesB\x06\n\x04_gpu"\xbb\x01\n\x0f\x41llowedFunction\x12\x16\n\tnamespace\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ngraph_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rgraph_version\x18\x04 \x01(\tH\x03\x88\x01\x01\x42\x0c\n\n_namespaceB\r\n\x0b_graph_nameB\x10\n\x0e_function_nameB\x10\n\x0e_graph_version"\xed\x03\n\x1b\x46unctionExecutorDescription\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tnamespace\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x17\n\ngraph_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rgraph_version\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x16\n\timage_uri\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x14\n\x0csecret_names\x18\x07 \x03(\t\x12<\n\x0fresource_limits\x18\x08 \x01(\x0b\x32\x1e.executor_api_pb.HostResourcesH\x06\x88\x01\x01\x12%\n\x18\x63ustomer_code_timeout_ms\x18\t \x01(\rH\x07\x88\x01\x01\x12\x30\n\x05graph\x18\n \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\x08\x88\x01\x01\x42\x05\n\x03_idB\x0c\n\n_namespaceB\r\n\x0b_graph_nameB\x10\n\x0e_graph_versionB\x10\n\x0e_function_nameB\x0c\n\n_image_uriB\x12\n\x10_resource_limitsB\x1b\n\x19_customer_code_timeout_msB\x08\n\x06_graph"\xe8\x01\n\x15\x46unctionExecutorState\x12\x46\n\x0b\x64\x65scription\x18\x01 \x01(\x0b\x32,.executor_api_pb.FunctionExecutorDescriptionH\x00\x88\x01\x01\x12<\n\x06status\x18\x02 \x01(\x0e\x32\'.executor_api_pb.FunctionExecutorStatusH\x01\x88\x01\x01\x12\x1b\n\x0estatus_message\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x0e\n\x0c_descriptionB\t\n\x07_statusB\x11\n\x0f_status_message"\xcb\x05\n\rExecutorState\x12\x18\n\x0b\x65xecutor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x10\x64\x65velopment_mode\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x15\n\x08hostname\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x34\n\x06\x66lavor\x18\x04 \x01(\x0e\x32\x1f.executor_api_pb.ExecutorFlavorH\x03\x88\x01\x01\x12\x14\n\x07version\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x34\n\x06status\x18\x06 \x01(\x0e\x32\x1f.executor_api_pb.ExecutorStatusH\x05\x88\x01\x01\x12;\n\x0e\x66ree_resources\x18\x07 \x01(\x0b\x32\x1e.executor_api_pb.HostResourcesH\x06\x88\x01\x01\x12;\n\x11\x61llowed_functions\x18\x08 \x03(\x0b\x32 .executor_api_pb.AllowedFunction\x12H\n\x18\x66unction_executor_states\x18\t \x03(\x0b\x32&.executor_api_pb.FunctionExecutorState\x12:\n\x06labels\x18\n \x03(\x0b\x32*.executor_api_pb.ExecutorState.LabelsEntry\x12\x17\n\nstate_hash\x18\x0b \x01(\tH\x07\x88\x01\x01\x12\x19\n\x0cserver_clock\x18\x0c \x01(\x04H\x08\x88\x01\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0e\n\x0c_executor_idB\x13\n\x11_development_modeB\x0b\n\t_hostnameB\t\n\x07_flavorB\n\n\x08_versionB\t\n\x07_statusB\x11\n\x0f_free_resourcesB\r\n\x0b_state_hashB\x0f\n\r_server_clock"l\n\x1aReportExecutorStateRequest\x12;\n\x0e\x65xecutor_state\x18\x01 \x01(\x0b\x32\x1e.executor_api_pb.ExecutorStateH\x00\x88\x01\x01\x42\x11\n\x0f_executor_state"\x1d\n\x1bReportExecutorStateResponse"\xd6\x04\n\x04Task\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tnamespace\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x17\n\ngraph_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rgraph_version\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x05 \x01(\tH\x04\x88\x01\x01\x12 \n\x13graph_invocation_id\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x16\n\tinput_key\x18\x08 \x01(\tH\x06\x88\x01\x01\x12\x1f\n\x12reducer_output_key\x18\t \x01(\tH\x07\x88\x01\x01\x12\x17\n\ntimeout_ms\x18\n \x01(\rH\x08\x88\x01\x01\x12\x30\n\x05input\x18\x0b \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\t\x88\x01\x01\x12\x38\n\rreducer_input\x18\x0c \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\n\x88\x01\x01\x12&\n\x19output_payload_uri_prefix\x18\r \x01(\tH\x0b\x88\x01\x01\x42\x05\n\x03_idB\x0c\n\n_namespaceB\r\n\x0b_graph_nameB\x10\n\x0e_graph_versionB\x10\n\x0e_function_nameB\x16\n\x14_graph_invocation_idB\x0c\n\n_input_keyB\x15\n\x13_reducer_output_keyB\r\n\x0b_timeout_msB\x08\n\x06_inputB\x10\n\x0e_reducer_inputB\x1c\n\x1a_output_payload_uri_prefix"\x7f\n\x0eTaskAllocation\x12!\n\x14\x66unction_executor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12(\n\x04task\x18\x02 \x01(\x0b\x32\x15.executor_api_pb.TaskH\x01\x88\x01\x01\x42\x17\n\x15_function_executor_idB\x07\n\x05_task"K\n\x1fGetDesiredExecutorStatesRequest\x12\x18\n\x0b\x65xecutor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_executor_id"\xb9\x01\n\x14\x44\x65siredExecutorState\x12H\n\x12\x66unction_executors\x18\x01 \x03(\x0b\x32,.executor_api_pb.FunctionExecutorDescription\x12\x39\n\x10task_allocations\x18\x02 \x03(\x0b\x32\x1f.executor_api_pb.TaskAllocation\x12\x12\n\x05\x63lock\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x08\n\x06_clock"\x87\x06\n\x18ReportTaskOutcomeRequest\x12\x14\n\x07task_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tnamespace\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x17\n\ngraph_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x04 \x01(\tH\x03\x88\x01\x01\x12 \n\x13graph_invocation_id\x18\x06 \x01(\tH\x04\x88\x01\x01\x12\x32\n\x07outcome\x18\x07 \x01(\x0e\x32\x1c.executor_api_pb.TaskOutcomeH\x05\x88\x01\x01\x12\x1a\n\rinvocation_id\x18\x08 \x01(\tH\x06\x88\x01\x01\x12\x18\n\x0b\x65xecutor_id\x18\t \x01(\tH\x07\x88\x01\x01\x12\x14\n\x07reducer\x18\n \x01(\x08H\x08\x88\x01\x01\x12\x16\n\x0enext_functions\x18\x0b \x03(\t\x12\x30\n\nfn_outputs\x18\x0c \x03(\x0b\x32\x1c.executor_api_pb.DataPayload\x12\x31\n\x06stdout\x18\x0e \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\t\x88\x01\x01\x12\x31\n\x06stderr\x18\x0f \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\n\x88\x01\x01\x12=\n\x0foutput_encoding\x18\r \x01(\x0e\x32\x1f.executor_api_pb.OutputEncodingH\x0b\x88\x01\x01\x12$\n\x17output_encoding_version\x18\x05 \x01(\x04H\x0c\x88\x01\x01\x42\n\n\x08_task_idB\x0c\n\n_namespaceB\r\n\x0b_graph_nameB\x10\n\x0e_function_nameB\x16\n\x14_graph_invocation_idB\n\n\x08_outcomeB\x10\n\x0e_invocation_idB\x0e\n\x0c_executor_idB\n\n\x08_reducerB\t\n\x07_stdoutB\t\n\x07_stderrB\x12\n\x10_output_encodingB\x1a\n\x18_output_encoding_version"\x1b\n\x19ReportTaskOutcomeResponse*\xab\x01\n\x13\x44\x61taPayloadEncoding\x12!\n\x1d\x44\x41TA_PAYLOAD_ENCODING_UNKNOWN\x10\x00\x12#\n\x1f\x44\x41TA_PAYLOAD_ENCODING_UTF8_JSON\x10\x01\x12#\n\x1f\x44\x41TA_PAYLOAD_ENCODING_UTF8_TEXT\x10\x02\x12\'\n#DATA_PAYLOAD_ENCODING_BINARY_PICKLE\x10\x03*\x86\x03\n\x08GPUModel\x12\x15\n\x11GPU_MODEL_UNKNOWN\x10\x00\x12"\n\x1eGPU_MODEL_NVIDIA_TESLA_T4_16GB\x10\n\x12$\n GPU_MODEL_NVIDIA_TESLA_V100_16GB\x10\x14\x12\x1d\n\x19GPU_MODEL_NVIDIA_A10_24GB\x10\x1e\x12\x1f\n\x1bGPU_MODEL_NVIDIA_A6000_48GB\x10(\x12#\n\x1fGPU_MODEL_NVIDIA_A100_SXM4_40GB\x10\x32\x12#\n\x1fGPU_MODEL_NVIDIA_A100_SXM4_80GB\x10\x33\x12"\n\x1eGPU_MODEL_NVIDIA_A100_PCI_40GB\x10\x34\x12#\n\x1fGPU_MODEL_NVIDIA_H100_SXM5_80GB\x10<\x12"\n\x1eGPU_MODEL_NVIDIA_H100_PCI_80GB\x10=\x12"\n\x1eGPU_MODEL_NVIDIA_RTX_6000_24GB\x10>*\xca\x03\n\x16\x46unctionExecutorStatus\x12$\n FUNCTION_EXECUTOR_STATUS_UNKNOWN\x10\x00\x12(\n$FUNCTION_EXECUTOR_STATUS_STARTING_UP\x10\x01\x12:\n6FUNCTION_EXECUTOR_STATUS_STARTUP_FAILED_CUSTOMER_ERROR\x10\x02\x12:\n6FUNCTION_EXECUTOR_STATUS_STARTUP_FAILED_PLATFORM_ERROR\x10\x03\x12!\n\x1d\x46UNCTION_EXECUTOR_STATUS_IDLE\x10\x04\x12)\n%FUNCTION_EXECUTOR_STATUS_RUNNING_TASK\x10\x05\x12&\n"FUNCTION_EXECUTOR_STATUS_UNHEALTHY\x10\x06\x12%\n!FUNCTION_EXECUTOR_STATUS_STOPPING\x10\x07\x12$\n FUNCTION_EXECUTOR_STATUS_STOPPED\x10\x08\x12%\n!FUNCTION_EXECUTOR_STATUS_SHUTDOWN\x10\t*\xc3\x01\n\x0e\x45xecutorStatus\x12\x1b\n\x17\x45XECUTOR_STATUS_UNKNOWN\x10\x00\x12\x1f\n\x1b\x45XECUTOR_STATUS_STARTING_UP\x10\x01\x12\x1b\n\x17\x45XECUTOR_STATUS_RUNNING\x10\x02\x12\x1b\n\x17\x45XECUTOR_STATUS_DRAINED\x10\x03\x12\x1c\n\x18\x45XECUTOR_STATUS_STOPPING\x10\x04\x12\x1b\n\x17\x45XECUTOR_STATUS_STOPPED\x10\x05*d\n\x0e\x45xecutorFlavor\x12\x1b\n\x17\x45XECUTOR_FLAVOR_UNKNOWN\x10\x00\x12\x17\n\x13\x45XECUTOR_FLAVOR_OSS\x10\x01\x12\x1c\n\x18\x45XECUTOR_FLAVOR_PLATFORM\x10\x02*[\n\x0bTaskOutcome\x12\x18\n\x14TASK_OUTCOME_UNKNOWN\x10\x00\x12\x18\n\x14TASK_OUTCOME_SUCCESS\x10\x01\x12\x18\n\x14TASK_OUTCOME_FAILURE\x10\x02*\x7f\n\x0eOutputEncoding\x12\x1b\n\x17OUTPUT_ENCODING_UNKNOWN\x10\x00\x12\x18\n\x14OUTPUT_ENCODING_JSON\x10\x01\x12\x1a\n\x16OUTPUT_ENCODING_PICKLE\x10\x02\x12\x1a\n\x16OUTPUT_ENCODING_BINARY\x10\x03\x32\xef\x02\n\x0b\x45xecutorAPI\x12t\n\x15report_executor_state\x12+.executor_api_pb.ReportExecutorStateRequest\x1a,.executor_api_pb.ReportExecutorStateResponse"\x00\x12z\n\x1bget_desired_executor_states\x12\x30.executor_api_pb.GetDesiredExecutorStatesRequest\x1a%.executor_api_pb.DesiredExecutorState"\x00\x30\x01\x12n\n\x13report_task_outcome\x12).executor_api_pb.ReportTaskOutcomeRequest\x1a*.executor_api_pb.ReportTaskOutcomeResponse"\x00\x62\x06proto3'
23
23
  )
24
24
 
25
25
  _globals = globals()
@@ -31,50 +31,52 @@ if not _descriptor._USE_C_DESCRIPTORS:
31
31
  DESCRIPTOR._loaded_options = None
32
32
  _globals["_EXECUTORSTATE_LABELSENTRY"]._loaded_options = None
33
33
  _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_options = b"8\001"
34
- _globals["_GPUMODEL"]._serialized_start = 3740
35
- _globals["_GPUMODEL"]._serialized_end = 4130
36
- _globals["_FUNCTIONEXECUTORSTATUS"]._serialized_start = 4133
37
- _globals["_FUNCTIONEXECUTORSTATUS"]._serialized_end = 4591
38
- _globals["_EXECUTORSTATUS"]._serialized_start = 4594
39
- _globals["_EXECUTORSTATUS"]._serialized_end = 4789
40
- _globals["_EXECUTORFLAVOR"]._serialized_start = 4791
41
- _globals["_EXECUTORFLAVOR"]._serialized_end = 4891
42
- _globals["_TASKOUTCOME"]._serialized_start = 4893
43
- _globals["_TASKOUTCOME"]._serialized_end = 4984
44
- _globals["_OUTPUTENCODING"]._serialized_start = 4986
45
- _globals["_OUTPUTENCODING"]._serialized_end = 5113
46
- _globals["_GPURESOURCES"]._serialized_start = 54
47
- _globals["_GPURESOURCES"]._serialized_end = 155
48
- _globals["_HOSTRESOURCES"]._serialized_start = 158
49
- _globals["_HOSTRESOURCES"]._serialized_end = 352
50
- _globals["_ALLOWEDFUNCTION"]._serialized_start = 355
51
- _globals["_ALLOWEDFUNCTION"]._serialized_end = 542
52
- _globals["_FUNCTIONEXECUTORDESCRIPTION"]._serialized_start = 545
53
- _globals["_FUNCTIONEXECUTORDESCRIPTION"]._serialized_end = 978
54
- _globals["_FUNCTIONEXECUTORSTATE"]._serialized_start = 981
55
- _globals["_FUNCTIONEXECUTORSTATE"]._serialized_end = 1213
56
- _globals["_EXECUTORSTATE"]._serialized_start = 1216
57
- _globals["_EXECUTORSTATE"]._serialized_end = 1887
58
- _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_start = 1724
59
- _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_end = 1769
60
- _globals["_REPORTEXECUTORSTATEREQUEST"]._serialized_start = 1889
61
- _globals["_REPORTEXECUTORSTATEREQUEST"]._serialized_end = 1997
62
- _globals["_REPORTEXECUTORSTATERESPONSE"]._serialized_start = 1999
63
- _globals["_REPORTEXECUTORSTATERESPONSE"]._serialized_end = 2028
64
- _globals["_TASK"]._serialized_start = 2031
65
- _globals["_TASK"]._serialized_end = 2423
66
- _globals["_TASKALLOCATION"]._serialized_start = 2425
67
- _globals["_TASKALLOCATION"]._serialized_end = 2552
68
- _globals["_GETDESIREDEXECUTORSTATESREQUEST"]._serialized_start = 2554
69
- _globals["_GETDESIREDEXECUTORSTATESREQUEST"]._serialized_end = 2629
70
- _globals["_DESIREDEXECUTORSTATE"]._serialized_start = 2632
71
- _globals["_DESIREDEXECUTORSTATE"]._serialized_end = 2817
72
- _globals["_DATAPAYLOAD"]._serialized_start = 2819
73
- _globals["_DATAPAYLOAD"]._serialized_end = 2930
74
- _globals["_REPORTTASKOUTCOMEREQUEST"]._serialized_start = 2933
75
- _globals["_REPORTTASKOUTCOMEREQUEST"]._serialized_end = 3708
76
- _globals["_REPORTTASKOUTCOMERESPONSE"]._serialized_start = 3710
77
- _globals["_REPORTTASKOUTCOMERESPONSE"]._serialized_end = 3737
78
- _globals["_EXECUTORAPI"]._serialized_start = 5116
79
- _globals["_EXECUTORAPI"]._serialized_end = 5483
34
+ _globals["_DATAPAYLOADENCODING"]._serialized_start = 4203
35
+ _globals["_DATAPAYLOADENCODING"]._serialized_end = 4374
36
+ _globals["_GPUMODEL"]._serialized_start = 4377
37
+ _globals["_GPUMODEL"]._serialized_end = 4767
38
+ _globals["_FUNCTIONEXECUTORSTATUS"]._serialized_start = 4770
39
+ _globals["_FUNCTIONEXECUTORSTATUS"]._serialized_end = 5228
40
+ _globals["_EXECUTORSTATUS"]._serialized_start = 5231
41
+ _globals["_EXECUTORSTATUS"]._serialized_end = 5426
42
+ _globals["_EXECUTORFLAVOR"]._serialized_start = 5428
43
+ _globals["_EXECUTORFLAVOR"]._serialized_end = 5528
44
+ _globals["_TASKOUTCOME"]._serialized_start = 5530
45
+ _globals["_TASKOUTCOME"]._serialized_end = 5621
46
+ _globals["_OUTPUTENCODING"]._serialized_start = 5623
47
+ _globals["_OUTPUTENCODING"]._serialized_end = 5750
48
+ _globals["_DATAPAYLOAD"]._serialized_start = 55
49
+ _globals["_DATAPAYLOAD"]._serialized_end = 318
50
+ _globals["_GPURESOURCES"]._serialized_start = 320
51
+ _globals["_GPURESOURCES"]._serialized_end = 421
52
+ _globals["_HOSTRESOURCES"]._serialized_start = 424
53
+ _globals["_HOSTRESOURCES"]._serialized_end = 618
54
+ _globals["_ALLOWEDFUNCTION"]._serialized_start = 621
55
+ _globals["_ALLOWEDFUNCTION"]._serialized_end = 808
56
+ _globals["_FUNCTIONEXECUTORDESCRIPTION"]._serialized_start = 811
57
+ _globals["_FUNCTIONEXECUTORDESCRIPTION"]._serialized_end = 1304
58
+ _globals["_FUNCTIONEXECUTORSTATE"]._serialized_start = 1307
59
+ _globals["_FUNCTIONEXECUTORSTATE"]._serialized_end = 1539
60
+ _globals["_EXECUTORSTATE"]._serialized_start = 1542
61
+ _globals["_EXECUTORSTATE"]._serialized_end = 2257
62
+ _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_start = 2077
63
+ _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_end = 2122
64
+ _globals["_REPORTEXECUTORSTATEREQUEST"]._serialized_start = 2259
65
+ _globals["_REPORTEXECUTORSTATEREQUEST"]._serialized_end = 2367
66
+ _globals["_REPORTEXECUTORSTATERESPONSE"]._serialized_start = 2369
67
+ _globals["_REPORTEXECUTORSTATERESPONSE"]._serialized_end = 2398
68
+ _globals["_TASK"]._serialized_start = 2401
69
+ _globals["_TASK"]._serialized_end = 2999
70
+ _globals["_TASKALLOCATION"]._serialized_start = 3001
71
+ _globals["_TASKALLOCATION"]._serialized_end = 3128
72
+ _globals["_GETDESIREDEXECUTORSTATESREQUEST"]._serialized_start = 3130
73
+ _globals["_GETDESIREDEXECUTORSTATESREQUEST"]._serialized_end = 3205
74
+ _globals["_DESIREDEXECUTORSTATE"]._serialized_start = 3208
75
+ _globals["_DESIREDEXECUTORSTATE"]._serialized_end = 3393
76
+ _globals["_REPORTTASKOUTCOMEREQUEST"]._serialized_start = 3396
77
+ _globals["_REPORTTASKOUTCOMEREQUEST"]._serialized_end = 4171
78
+ _globals["_REPORTTASKOUTCOMERESPONSE"]._serialized_start = 4173
79
+ _globals["_REPORTTASKOUTCOMERESPONSE"]._serialized_end = 4200
80
+ _globals["_EXECUTORAPI"]._serialized_start = 5753
81
+ _globals["_EXECUTORAPI"]._serialized_end = 6120
80
82
  # @@protoc_insertion_point(module_scope)
@@ -11,6 +11,13 @@ from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
11
11
 
12
12
  DESCRIPTOR: _descriptor.FileDescriptor
13
13
 
14
+ class DataPayloadEncoding(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
15
+ __slots__ = ()
16
+ DATA_PAYLOAD_ENCODING_UNKNOWN: _ClassVar[DataPayloadEncoding]
17
+ DATA_PAYLOAD_ENCODING_UTF8_JSON: _ClassVar[DataPayloadEncoding]
18
+ DATA_PAYLOAD_ENCODING_UTF8_TEXT: _ClassVar[DataPayloadEncoding]
19
+ DATA_PAYLOAD_ENCODING_BINARY_PICKLE: _ClassVar[DataPayloadEncoding]
20
+
14
21
  class GPUModel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
15
22
  __slots__ = ()
16
23
  GPU_MODEL_UNKNOWN: _ClassVar[GPUModel]
@@ -70,6 +77,10 @@ class OutputEncoding(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
70
77
  OUTPUT_ENCODING_PICKLE: _ClassVar[OutputEncoding]
71
78
  OUTPUT_ENCODING_BINARY: _ClassVar[OutputEncoding]
72
79
 
80
+ DATA_PAYLOAD_ENCODING_UNKNOWN: DataPayloadEncoding
81
+ DATA_PAYLOAD_ENCODING_UTF8_JSON: DataPayloadEncoding
82
+ DATA_PAYLOAD_ENCODING_UTF8_TEXT: DataPayloadEncoding
83
+ DATA_PAYLOAD_ENCODING_BINARY_PICKLE: DataPayloadEncoding
73
84
  GPU_MODEL_UNKNOWN: GPUModel
74
85
  GPU_MODEL_NVIDIA_TESLA_T4_16GB: GPUModel
75
86
  GPU_MODEL_NVIDIA_TESLA_V100_16GB: GPUModel
@@ -108,6 +119,30 @@ OUTPUT_ENCODING_JSON: OutputEncoding
108
119
  OUTPUT_ENCODING_PICKLE: OutputEncoding
109
120
  OUTPUT_ENCODING_BINARY: OutputEncoding
110
121
 
122
+ class DataPayload(_message.Message):
123
+ __slots__ = ("path", "size", "sha256_hash", "uri", "encoding", "encoding_version")
124
+ PATH_FIELD_NUMBER: _ClassVar[int]
125
+ SIZE_FIELD_NUMBER: _ClassVar[int]
126
+ SHA256_HASH_FIELD_NUMBER: _ClassVar[int]
127
+ URI_FIELD_NUMBER: _ClassVar[int]
128
+ ENCODING_FIELD_NUMBER: _ClassVar[int]
129
+ ENCODING_VERSION_FIELD_NUMBER: _ClassVar[int]
130
+ path: str
131
+ size: int
132
+ sha256_hash: str
133
+ uri: str
134
+ encoding: DataPayloadEncoding
135
+ encoding_version: int
136
+ def __init__(
137
+ self,
138
+ path: _Optional[str] = ...,
139
+ size: _Optional[int] = ...,
140
+ sha256_hash: _Optional[str] = ...,
141
+ uri: _Optional[str] = ...,
142
+ encoding: _Optional[_Union[DataPayloadEncoding, str]] = ...,
143
+ encoding_version: _Optional[int] = ...,
144
+ ) -> None: ...
145
+
111
146
  class GPUResources(_message.Message):
112
147
  __slots__ = ("count", "model")
113
148
  COUNT_FIELD_NUMBER: _ClassVar[int]
@@ -165,6 +200,7 @@ class FunctionExecutorDescription(_message.Message):
165
200
  "secret_names",
166
201
  "resource_limits",
167
202
  "customer_code_timeout_ms",
203
+ "graph",
168
204
  )
169
205
  ID_FIELD_NUMBER: _ClassVar[int]
170
206
  NAMESPACE_FIELD_NUMBER: _ClassVar[int]
@@ -175,6 +211,7 @@ class FunctionExecutorDescription(_message.Message):
175
211
  SECRET_NAMES_FIELD_NUMBER: _ClassVar[int]
176
212
  RESOURCE_LIMITS_FIELD_NUMBER: _ClassVar[int]
177
213
  CUSTOMER_CODE_TIMEOUT_MS_FIELD_NUMBER: _ClassVar[int]
214
+ GRAPH_FIELD_NUMBER: _ClassVar[int]
178
215
  id: str
179
216
  namespace: str
180
217
  graph_name: str
@@ -184,6 +221,7 @@ class FunctionExecutorDescription(_message.Message):
184
221
  secret_names: _containers.RepeatedScalarFieldContainer[str]
185
222
  resource_limits: HostResources
186
223
  customer_code_timeout_ms: int
224
+ graph: DataPayload
187
225
  def __init__(
188
226
  self,
189
227
  id: _Optional[str] = ...,
@@ -195,6 +233,7 @@ class FunctionExecutorDescription(_message.Message):
195
233
  secret_names: _Optional[_Iterable[str]] = ...,
196
234
  resource_limits: _Optional[_Union[HostResources, _Mapping]] = ...,
197
235
  customer_code_timeout_ms: _Optional[int] = ...,
236
+ graph: _Optional[_Union[DataPayload, _Mapping]] = ...,
198
237
  ) -> None: ...
199
238
 
200
239
  class FunctionExecutorState(_message.Message):
@@ -225,6 +264,7 @@ class ExecutorState(_message.Message):
225
264
  "function_executor_states",
226
265
  "labels",
227
266
  "state_hash",
267
+ "server_clock",
228
268
  )
229
269
 
230
270
  class LabelsEntry(_message.Message):
@@ -248,6 +288,7 @@ class ExecutorState(_message.Message):
248
288
  FUNCTION_EXECUTOR_STATES_FIELD_NUMBER: _ClassVar[int]
249
289
  LABELS_FIELD_NUMBER: _ClassVar[int]
250
290
  STATE_HASH_FIELD_NUMBER: _ClassVar[int]
291
+ SERVER_CLOCK_FIELD_NUMBER: _ClassVar[int]
251
292
  executor_id: str
252
293
  development_mode: bool
253
294
  hostname: str
@@ -261,6 +302,7 @@ class ExecutorState(_message.Message):
261
302
  ]
262
303
  labels: _containers.ScalarMap[str, str]
263
304
  state_hash: str
305
+ server_clock: int
264
306
  def __init__(
265
307
  self,
266
308
  executor_id: _Optional[str] = ...,
@@ -278,6 +320,7 @@ class ExecutorState(_message.Message):
278
320
  ] = ...,
279
321
  labels: _Optional[_Mapping[str, str]] = ...,
280
322
  state_hash: _Optional[str] = ...,
323
+ server_clock: _Optional[int] = ...,
281
324
  ) -> None: ...
282
325
 
283
326
  class ReportExecutorStateRequest(_message.Message):
@@ -303,6 +346,9 @@ class Task(_message.Message):
303
346
  "input_key",
304
347
  "reducer_output_key",
305
348
  "timeout_ms",
349
+ "input",
350
+ "reducer_input",
351
+ "output_payload_uri_prefix",
306
352
  )
307
353
  ID_FIELD_NUMBER: _ClassVar[int]
308
354
  NAMESPACE_FIELD_NUMBER: _ClassVar[int]
@@ -313,6 +359,9 @@ class Task(_message.Message):
313
359
  INPUT_KEY_FIELD_NUMBER: _ClassVar[int]
314
360
  REDUCER_OUTPUT_KEY_FIELD_NUMBER: _ClassVar[int]
315
361
  TIMEOUT_MS_FIELD_NUMBER: _ClassVar[int]
362
+ INPUT_FIELD_NUMBER: _ClassVar[int]
363
+ REDUCER_INPUT_FIELD_NUMBER: _ClassVar[int]
364
+ OUTPUT_PAYLOAD_URI_PREFIX_FIELD_NUMBER: _ClassVar[int]
316
365
  id: str
317
366
  namespace: str
318
367
  graph_name: str
@@ -322,6 +371,9 @@ class Task(_message.Message):
322
371
  input_key: str
323
372
  reducer_output_key: str
324
373
  timeout_ms: int
374
+ input: DataPayload
375
+ reducer_input: DataPayload
376
+ output_payload_uri_prefix: str
325
377
  def __init__(
326
378
  self,
327
379
  id: _Optional[str] = ...,
@@ -333,6 +385,9 @@ class Task(_message.Message):
333
385
  input_key: _Optional[str] = ...,
334
386
  reducer_output_key: _Optional[str] = ...,
335
387
  timeout_ms: _Optional[int] = ...,
388
+ input: _Optional[_Union[DataPayload, _Mapping]] = ...,
389
+ reducer_input: _Optional[_Union[DataPayload, _Mapping]] = ...,
390
+ output_payload_uri_prefix: _Optional[str] = ...,
336
391
  ) -> None: ...
337
392
 
338
393
  class TaskAllocation(_message.Message):
@@ -372,21 +427,6 @@ class DesiredExecutorState(_message.Message):
372
427
  clock: _Optional[int] = ...,
373
428
  ) -> None: ...
374
429
 
375
- class DataPayload(_message.Message):
376
- __slots__ = ("path", "size", "sha256_hash")
377
- PATH_FIELD_NUMBER: _ClassVar[int]
378
- SIZE_FIELD_NUMBER: _ClassVar[int]
379
- SHA256_HASH_FIELD_NUMBER: _ClassVar[int]
380
- path: str
381
- size: int
382
- sha256_hash: str
383
- def __init__(
384
- self,
385
- path: _Optional[str] = ...,
386
- size: _Optional[int] = ...,
387
- sha256_hash: _Optional[str] = ...,
388
- ) -> None: ...
389
-
390
430
  class ReportTaskOutcomeRequest(_message.Message):
391
431
  __slots__ = (
392
432
  "task_id",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: indexify
3
- Version: 0.3.19
3
+ Version: 0.3.20
4
4
  Summary: Open Source Indexify components and helper tools
5
5
  Home-page: https://github.com/tensorlakeai/indexify
6
6
  License: Apache 2.0
@@ -15,6 +15,7 @@ Classifier: Programming Language :: Python :: 3.11
15
15
  Classifier: Programming Language :: Python :: 3.12
16
16
  Classifier: Programming Language :: Python :: 3.13
17
17
  Requires-Dist: aiohttp (>=3.11.0,<4.0.0)
18
+ Requires-Dist: boto3 (>=1.37.30,<2.0.0)
18
19
  Requires-Dist: prometheus-client (>=0.21.1,<0.22.0)
19
20
  Requires-Dist: rich (>=13.9.2,<14.0.0)
20
21
  Requires-Dist: tensorlake (>=0.1)
@@ -1,15 +1,19 @@
1
- indexify/cli/cli.py,sha256=TgXC_ZZPT-MJA7CWH297Y4_5M5SDt2QslPUoMotp3Cc,8708
1
+ indexify/cli/cli.py,sha256=L-QVyRO-nGazfrdIbhxYvxMwhEnNjJ4H32Lw9pz464I,9345
2
2
  indexify/executor/README.md,sha256=ozC6_hMkhQQNVCMEpBxwiUALz6lwErPQxNxQfQDqnG4,2029
3
3
  indexify/executor/api_objects.py,sha256=qKQMEjr18xIq7yjpnsLPnWXP4KsVQ9O76EsbYoaL_qQ,1507
4
- indexify/executor/downloader.py,sha256=59FD2LNUQvl6Ul6m59uTsgE0FWU5t6C2XflaaDcc2FA,9459
5
- indexify/executor/executor.py,sha256=jdsp9vP2q8y6rIAIRmwfTXBGW3D5cgaFjfy_tHetJ3k,16035
4
+ indexify/executor/blob_store/blob_store.py,sha256=XViw_KRfFSNqwcFYwMZixZF-EYCjXK2AQHdt0xh4UVo,2368
5
+ indexify/executor/blob_store/local_fs_blob_store.py,sha256=hDZXrcjKmYoH7ob0AAZ-7Zz1aoksxD8ArQEzmUSjkY4,1807
6
+ indexify/executor/blob_store/metrics/blob_store.py,sha256=5_xiPREeHWFtxFh1NupDsF8zP4pmUPgLNNn-UE9Uzvc,1008
7
+ indexify/executor/blob_store/s3_blob_store.py,sha256=4Hn1r5XpiNdfa-buRge0hR36j8j3xmuQC-7noOoOFo0,3319
8
+ indexify/executor/downloader.py,sha256=0tRQY8jT03-R36bBo5MsoLjxkoehWCY9-61fsoW3Gng,13507
9
+ indexify/executor/executor.py,sha256=uZiERFDKBQLmfPgun6bxEN7JE-BEEqmdGwawLjTAjf0,16499
6
10
  indexify/executor/executor_flavor.py,sha256=uilzDQVVYlQGR1MVnrUC4NevUActDWHdnJkr38M6kTk,118
7
- indexify/executor/function_executor/function_executor.py,sha256=rmqJrz4yihIefVhfbIIu3K6HFjKU3eEvEy2xFICYPp4,11881
11
+ indexify/executor/function_executor/function_executor.py,sha256=agfUxzSQ-2TqkpMhW3OvOSMF_EhpemetaL3_dYp29Ro,11888
8
12
  indexify/executor/function_executor/function_executor_state.py,sha256=ljPm1IrRMJ8hFklwvFp7Xax2HMpUIOHm0DwOxxMcy7U,4336
9
- indexify/executor/function_executor/function_executor_states_container.py,sha256=wKehM_GXv3i0WkKNS72JVxXq6s60iqiOCX_Gm0qa9pw,3546
10
- indexify/executor/function_executor/function_executor_status.py,sha256=FUu5PcFC-kkVSCYGwzcEmvpPytoM--XUZ9ylVjv79S4,3416
11
- indexify/executor/function_executor/health_checker.py,sha256=Fvd1gmrcjyJqP-8vcsUxfnTHQIMNlHeMWCS70PAVr9E,6095
12
- indexify/executor/function_executor/invocation_state_client.py,sha256=p-xgM4__cHR1ApvMV9hShrGWee_Je0VDhICZUGjpQY4,9644
13
+ indexify/executor/function_executor/function_executor_states_container.py,sha256=MFtHNMkzL3zzoa4YdWaw6X21dzo3P4vdEyJ_OKAuTlw,3766
14
+ indexify/executor/function_executor/function_executor_status.py,sha256=Ms8tHG0wlw__pToeQIfBV6SO9c4tPu3UQgJAwXUkg2M,3597
15
+ indexify/executor/function_executor/health_checker.py,sha256=EVA65Rn7eAC7HXzhZgScMDc57ODnvFopopdye7j1hfU,6254
16
+ indexify/executor/function_executor/invocation_state_client.py,sha256=VTpeNxxfsa0ej20Q_ker5RZVdHiu59HWd5qNOjo6DBQ,9800
13
17
  indexify/executor/function_executor/metrics/function_executor.py,sha256=TDksxLRJr-P9ZKhF2Orsaxzzb4lVIBxFEjd_9Zv53Ng,6313
14
18
  indexify/executor/function_executor/metrics/function_executor_state.py,sha256=qheMhnoiYLiZB7ky5EyegfDy4Mr0Zh83bOE0gJ38YmU,1607
15
19
  indexify/executor/function_executor/metrics/function_executor_state_container.py,sha256=6rrAfml-TivjkHatCM4BLY7jmVs523Wzb6QIysncc-0,302
@@ -23,15 +27,16 @@ indexify/executor/function_executor/server/subprocess_function_executor_server.p
23
27
  indexify/executor/function_executor/server/subprocess_function_executor_server_factory.py,sha256=g1AUbhOoPsdhp_50Ayahdyv1Ix5-nEBE8orOQfkATpM,4470
24
28
  indexify/executor/function_executor/single_task_runner.py,sha256=OY3a2znwtuv0_Pqn9r5ScGhekNn1OquznKmaGnQL71k,13979
25
29
  indexify/executor/function_executor/task_input.py,sha256=wSrHR4m0juiGClQyeVdhRC37QzDt6Rrjq-ZXJkfBi9k,584
26
- indexify/executor/function_executor/task_output.py,sha256=kBRy7eSYzxZ3FYQ9PhA56VtBmhJ7ywePICMx_Vx5ipo,3011
27
- indexify/executor/grpc/channel_manager.py,sha256=THamn5VghCxRkXDlu2WEXtC6-SNKGc0xoa718bw9A4k,6257
28
- indexify/executor/grpc/completed_tasks_container.py,sha256=0JhWBUyEQXurVWZ1UtxoPDLXceIrcnnTBlSmfG3v0Cs,898
29
- indexify/executor/grpc/function_executor_controller.py,sha256=pfxMgyxLR2FFbLjyY5Yib8RSaI_6YeQOdf_VscXLqN0,18645
30
+ indexify/executor/function_executor/task_output.py,sha256=snh25Ynj7uss1SUIeivpDYWdRkODoDpdPrQrGvnjyIs,3077
31
+ indexify/executor/grpc/channel_manager.py,sha256=ihDkLoiGBLfSmoA2szbntjCfL3E_NDf5LABRXE7YRec,6330
32
+ indexify/executor/grpc/function_executor_controller.py,sha256=b_xqiXsA79yIMCHtRJv0i0px6QMToIj9nCTc_km9fHk,16070
30
33
  indexify/executor/grpc/metrics/channel_manager.py,sha256=k-WArgklmP5WhjcmFmrgRblB7yc3XlaOXO8owRyV-mw,649
34
+ indexify/executor/grpc/metrics/state_reconciler.py,sha256=0aI2IM4XztKxFa7NCxYSLafw_iiej3p07yEiKyewXIM,585
31
35
  indexify/executor/grpc/metrics/state_reporter.py,sha256=GggBEjMzQUYIG95LtTS4fUg1u9jYowkaXoUXppAXucs,543
32
- indexify/executor/grpc/state_reconciler.py,sha256=XRaZxHy2bX-zIzbJCBg3io_ZlslnGeG61dOk0fhYdJw,12866
33
- indexify/executor/grpc/state_reporter.py,sha256=7Z3pFqtXucxqAGX3o004uVG6tYWflsnKx1H2ldfnGT8,10043
34
- indexify/executor/grpc/task_controller.py,sha256=fsUiABPuZhGAjdpSKm0AVNIyoRxlJVFd4XDo3GzXEIQ,18483
36
+ indexify/executor/grpc/metrics/task_controller.py,sha256=9Nm86nGxL2rZ3rAORB0_CBdO--Fe4MBrewVW4CqGyOU,222
37
+ indexify/executor/grpc/state_reconciler.py,sha256=Yx_r1oUBGWjHWqUSUhap2ALZpz_o1Ue-SdL7BOgWQQU,19273
38
+ indexify/executor/grpc/state_reporter.py,sha256=iixvl1nzJ_SfQhTUJpBEfiVlFPvOxQxvZyqT5Szk43Q,10503
39
+ indexify/executor/grpc/task_controller.py,sha256=IQkxKYfj8TLhmoLi4xDVjEKBZlK6ttP1w2a9kOlX58A,20277
35
40
  indexify/executor/metrics/downloader.py,sha256=lctPh8xjkXeLEFJnl1hNrD1yEhLhIl5sggsR4Yoe_Zc,2746
36
41
  indexify/executor/metrics/executor.py,sha256=ua-Vv_k1CB4juJdF7tEBQbBMksqWAA3iXKKMKXZUCLk,2369
37
42
  indexify/executor/metrics/task_fetcher.py,sha256=iJEwCLzYr2cuz7hRvNiqaa2nvQP4OrA0hm0iJY0YKG0,736
@@ -48,13 +53,13 @@ indexify/executor/monitoring/server.py,sha256=yzdYhcxnmY6uTQUMt3vatF5jilN52ZtfFs
48
53
  indexify/executor/monitoring/startup_probe_handler.py,sha256=zXXsBU15SMlBx1bSFpxWDfed1VHtKKnwvLQ8-frpG98,425
49
54
  indexify/executor/runtime_probes.py,sha256=bo6Dq6AGZpJH099j0DHtVSDEH80tv3j9MXf3VXSx_p8,2182
50
55
  indexify/executor/task_fetcher.py,sha256=p3iEsWyGi0ZMPAv0183smzOUD1KycQ_dXsyd9mpB9IU,3529
51
- indexify/executor/task_reporter.py,sha256=59Bgsjflxzo936KMOj70lGpDhwbUlQDuqqfHEy16kcw,11274
56
+ indexify/executor/task_reporter.py,sha256=AbestQmKxpJo0pfJWnB_9ziOnAdFmMScvWzFTeyG6X4,12382
52
57
  indexify/executor/task_runner.py,sha256=2-f6Uupu_aVPg34G27yuiPTC6eE4XnT-qizpzPryzDI,7134
53
- indexify/proto/executor_api.proto,sha256=16jEP4VxSaEPWVBx3h2_rel3ltYdgW4SBLvRl-iUe78,8319
54
- indexify/proto/executor_api_pb2.py,sha256=dW4zAMZ-YU8aeU77-5ciQ0bTNWDt7v4m6CGQ2VdQZZI,12874
55
- indexify/proto/executor_api_pb2.pyi,sha256=6WHUUjsn5y7jJot_y_h3NXy2L04E8Xo-zpO9_tZJcAA,16851
58
+ indexify/proto/executor_api.proto,sha256=K1lwFmk042GA1tp8s633FZJVg6Fi8f8LtAuFj8Gz7XU,9930
59
+ indexify/proto/executor_api_pb2.py,sha256=5y570_FIgc6WFhHVAKWFieMuUhyKBA7rPJJ4DJ5hcCM,14054
60
+ indexify/proto/executor_api_pb2.pyi,sha256=5eJJJjPNdTMSttNUOtzGwADbASsCh7138de_Y3l8uq4,18612
56
61
  indexify/proto/executor_api_pb2_grpc.py,sha256=GGiDtyQlA2382E_ZyKUBYcWNEJHH_RlulieStKfkJXI,9514
57
- indexify-0.3.19.dist-info/METADATA,sha256=gii0ukZNSxaQ4jF1J1NtsQOSbisC4lCbIV7hjXSFiqk,1158
58
- indexify-0.3.19.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
59
- indexify-0.3.19.dist-info/entry_points.txt,sha256=GU9wmsgvN7nQw3N2X0PMYn1RSvF6CrhH9RuC2D8d3Gk,53
60
- indexify-0.3.19.dist-info/RECORD,,
62
+ indexify-0.3.20.dist-info/METADATA,sha256=rg0FBC-z-e_Ft09YgQ5ldhaS3u5XKtmqxNFFMa9074A,1198
63
+ indexify-0.3.20.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
64
+ indexify-0.3.20.dist-info/entry_points.txt,sha256=GU9wmsgvN7nQw3N2X0PMYn1RSvF6CrhH9RuC2D8d3Gk,53
65
+ indexify-0.3.20.dist-info/RECORD,,
@@ -1,26 +0,0 @@
1
- import asyncio
2
- from typing import List, Set
3
-
4
-
5
- class CompletedTasksContainer:
6
- """An asyncio concurrent container for the completed task IDs."""
7
-
8
- def __init__(self):
9
- # The fields below are protected by the lock.
10
- self._lock: asyncio.Lock = asyncio.Lock()
11
- self._completed_task_ids: Set[str] = set()
12
-
13
- async def add(self, task_id: str) -> None:
14
- """Add a task to the container."""
15
- async with self._lock:
16
- self._completed_task_ids.add(task_id)
17
-
18
- async def contains(self, task_id: str) -> bool:
19
- """Check if the task is in the container."""
20
- async with self._lock:
21
- return task_id in self._completed_task_ids
22
-
23
- async def replace(self, task_ids: List[str]) -> None:
24
- """Replaces the task IDs with the supplied task IDs."""
25
- async with self._lock:
26
- self._completed_task_ids = set(task_ids)