qwak-core 0.4.273__py3-none-any.whl → 0.4.274__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.
@@ -1 +1 @@
1
- __version__ = "0.4.273"
1
+ __version__ = "0.4.274"
qwak/__init__.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """Top-level package for qwak-core."""
2
2
 
3
3
  __author__ = "Qwak.ai"
4
- __version__ = "0.4.273"
4
+ __version__ = "0.4.274"
5
5
 
6
6
  from qwak.inner.di_configuration import wire_dependencies
7
7
  from qwak.model.experiment_tracking import log_metric, log_param
@@ -34,6 +34,10 @@ from _qwak_proto.qwak.batch_job.v1.batch_job_service_pb2 import (
34
34
  StartBatchJobResponse,
35
35
  StartWarmupJobRequest,
36
36
  StartWarmupJobResponse,
37
+ UpdateTasksDetailsResponse,
38
+ UpdateTasksDetailsRequest,
39
+ BatchTaskDetails,
40
+ InputFileDetails,
37
41
  )
38
42
  from _qwak_proto.qwak.batch_job.v1.batch_job_service_pb2_grpc import (
39
43
  BatchJobManagementServiceStub,
@@ -67,6 +71,8 @@ from .results import (
67
71
  StartExecutionResult,
68
72
  )
69
73
 
74
+ from typing import List
75
+
70
76
  CLIENT_TIMEOUT = 180 # Seconds
71
77
 
72
78
 
@@ -541,3 +547,36 @@ class BatchJobManagerClient:
541
547
 
542
548
  except grpc.RpcError as e:
543
549
  raise QwakException(f"Failed to get batch job details, error is: {e}")
550
+
551
+ def update_task_details(self, task_id: str, input_file_paths: List[str]):
552
+ """
553
+ Update task details for a specific task using the provided list of input file paths.
554
+
555
+ :param task_id: The ID of the task to update.
556
+ :param input_file_paths: A list of paths for the input files associated with the task.
557
+ """
558
+ # Create InputFileDetails messages for each input file path
559
+ input_files_details = [
560
+ InputFileDetails(path=file_path) for file_path in input_file_paths
561
+ ]
562
+
563
+ # Create BatchTaskDetails message for the single task
564
+ batch_task_details = BatchTaskDetails(
565
+ task_id=task_id, input_files_details=input_files_details
566
+ )
567
+
568
+ update_request = UpdateTasksDetailsRequest(
569
+ tasks_details=[batch_task_details] # Wrap in a list
570
+ )
571
+
572
+ try:
573
+ response: UpdateTasksDetailsResponse = (
574
+ self.batch_job_management.UpdateTasksDetails(
575
+ update_request, timeout=CLIENT_TIMEOUT
576
+ )
577
+ )
578
+ return response
579
+ except grpc.RpcError as e:
580
+ raise QwakException(
581
+ f"Failed to update task details for task '{task_id}', error is: {e}"
582
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: qwak-core
3
- Version: 0.4.273
3
+ Version: 0.4.274
4
4
  Summary: Qwak Core contains the necessary objects and communication tools for using the Qwak Platform
5
5
  License: Apache-2.0
6
6
  Keywords: mlops,ml,deployment,serving,model
@@ -601,7 +601,7 @@ _qwak_proto/qwak/workspace/workspace_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXH
601
601
  _qwak_proto/qwak/workspace/workspace_service_pb2.py,sha256=AB3C9S_AbOD7Nx1Ni4j1rW6PNtYTV1zjiqFQk-goQ74,21429
602
602
  _qwak_proto/qwak/workspace/workspace_service_pb2.pyi,sha256=nKKCHwnovZhsy8TSVmdz-Vtl0nviOOoX56HD-41Xo08,13726
603
603
  _qwak_proto/qwak/workspace/workspace_service_pb2_grpc.py,sha256=yKGuexxTBza99Ihe0DSTniV2ZSd_AG47inHenqfi890,27193
604
- frogml_storage/__init__.py,sha256=Wq_pUPT9jRznmLWLcQuuLFhFJPxX4mt7avCmVvx1DJI,24
604
+ frogml_storage/__init__.py,sha256=1mCSXL7YMxikjtZ5XkdakddCj6I8TUdikdVsLUZnEKI,24
605
605
  frogml_storage/artifactory/__init__.py,sha256=C02rcm7kqsZBVA6c6Gztxamj96hn8Aj6BuzYWFRmWbQ,71
606
606
  frogml_storage/artifactory/_artifactory_api.py,sha256=z8YX90bCy82BWqMNUdpbbig1qF5CarkIOfP6V96uYYg,11188
607
607
  frogml_storage/authentication/login/__init__.py,sha256=ch8UhQwh3o5ddyoJykQ0Bnog5-8qKHmeDpwqny8xMzM,46
@@ -639,7 +639,7 @@ frogml_storage/utils/_environment.py,sha256=NEnRxaFdRDi3UA33IVTSfQxqc9ZB6nV9YlHD
639
639
  frogml_storage/utils/_input_checks_utility.py,sha256=ZUvkxhcTcbSKtpSo5ePWha3Ca5xohxIpiAlZlpcQ3xk,3221
640
640
  frogml_storage/utils/_storage_utils.py,sha256=HB2g7uY5A3b33yIcAUM1OjHb5jWsnpESsiDrEviQwrI,366
641
641
  frogml_storage/utils/_url_utils.py,sha256=NUEfz9Fp1iE8b676-A5wrMlSTsJVRKrUhcUItOFAJD8,821
642
- qwak/__init__.py,sha256=2Xg-Qy0BfDX-xLBTGxnWF9JZ2QFnpPKvTGk6wE82nKY,587
642
+ qwak/__init__.py,sha256=P5ciba6jp-mh0N5zd9Lk_21ggEtl8c6HxAeHazCeQVM,587
643
643
  qwak/automations/__init__.py,sha256=qFZRvCxUUn8gcxkJR0v19ulHW2oJ0x6-Rif7HiheDP4,1522
644
644
  qwak/automations/automation_executions.py,sha256=5MeH_epYYWb8NKXgAozwT_jPyyUDednBHG7izloi7RY,3228
645
645
  qwak/automations/automations.py,sha256=3yx8e2v0uSKDnXbqyknasyEoQ5vxGni6K40Hbi1_zkk,12599
@@ -675,7 +675,7 @@ qwak/clients/automation_management/client.py,sha256=oO3CihRxPPPlIWN764Dmf4hmWChH
675
675
  qwak/clients/autoscaling/__init__.py,sha256=A-zuZOWaZf16NjnpX38204m730c5Lde491KaXneGirE,38
676
676
  qwak/clients/autoscaling/client.py,sha256=55Pc2yc8dLl2C2MSdO2g5E25vYgkmvJSxXnKZriP_dk,1240
677
677
  qwak/clients/batch_job_management/__init__.py,sha256=zywxYf2JupkIWnGVB2C6ugZs5CrOdxTPrksD5P6uQu4,211
678
- qwak/clients/batch_job_management/client.py,sha256=L0vq9n_z0pUBIvv97B3tQt4iIEZHEZTvLdLmCWMCHeo,21054
678
+ qwak/clients/batch_job_management/client.py,sha256=4fwZtljRW93Yz6hqNEpR4YP9T7s7rYXLn2jR7hUE9B8,22453
679
679
  qwak/clients/batch_job_management/executions_config.py,sha256=LYf9j8T5W1M1EK6cjXPwAmiyGNR7wfdjNCmeKNhiREU,6882
680
680
  qwak/clients/batch_job_management/results.py,sha256=nrFGZ3y538FBhej94CYV4cwqQssK1aUQOLGubYdQVrc,1846
681
681
  qwak/clients/build_management/__init__.py,sha256=oXurHX6Kho5X-fOuuNHB3B9oMX6ejYUqh6GWv5qJyjw,43
@@ -1072,7 +1072,7 @@ qwak_services_mock/mocks/audience_service_api.py,sha256=2PvXpzKBR-Dnu9Fmb70UJn-h
1072
1072
  qwak_services_mock/mocks/authentication_service.py,sha256=79A8hmYUsg4i7EwyGG54CidbANlp-ub4f716BbLCaJQ,1166
1073
1073
  qwak_services_mock/mocks/automation_management_service.py,sha256=C9rYKMy0hzOTaKTCrTkE5jTnPSenVkLV8DCptBKr02U,8211
1074
1074
  qwak_services_mock/mocks/autoscaling_service_api.py,sha256=YgucRD3ZjhxqttNVSF_HL7u3aDo55LdRSEE7q0fxp3M,1019
1075
- qwak_services_mock/mocks/batch_job_manager_service.py,sha256=HeUZulDtfIlSm2h4cLdByR0voJjOy97m4_YWldg7pqQ,13129
1075
+ qwak_services_mock/mocks/batch_job_manager_service.py,sha256=zVBBBkYdvWFwEXP_VHBH8SBIvJosPt0jHnHlJjuf6AI,14080
1076
1076
  qwak_services_mock/mocks/build_management.py,sha256=LYtrEvDt-lJbNJEP-pFpvAKcS82mAzb2gyoCu1-XCOs,3686
1077
1077
  qwak_services_mock/mocks/build_orchestrator_build_api.py,sha256=mtb6wEZug9zCiMHZVrfsU0YOP59rgBrpvZDjEInG7B8,5004
1078
1078
  qwak_services_mock/mocks/build_orchestrator_build_settings_api.py,sha256=oj_JTxY_3xj8FkgWkxQER_EoBFDqL2g21NPrU31fD6o,1379
@@ -1113,6 +1113,6 @@ qwak_services_mock/mocks/workspace_manager_service_mock.py,sha256=O9ZSwln4T4kHVk
1113
1113
  qwak_services_mock/services_mock.py,sha256=zXtHcX8a_acz7ynxuCBxxVpHpde7aAGjIn6Uw52LY1s,19593
1114
1114
  qwak_services_mock/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1115
1115
  qwak_services_mock/utils/service_utils.py,sha256=ZlB0CnB1J6oBn6_m7fQO2U8tKoboHdUa6ljjkRMYNXU,265
1116
- qwak_core-0.4.273.dist-info/METADATA,sha256=dg-g1DVAuLRRPWYRI2dG7fUCqg4bNMsWuMKqLY83xM0,15142
1117
- qwak_core-0.4.273.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
1118
- qwak_core-0.4.273.dist-info/RECORD,,
1116
+ qwak_core-0.4.274.dist-info/METADATA,sha256=y4d-7FAjGvZED7BOp-KlfV853gDZPiO3HJu7KfMTUvU,15142
1117
+ qwak_core-0.4.274.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
1118
+ qwak_core-0.4.274.dist-info/RECORD,,
@@ -36,6 +36,9 @@ from _qwak_proto.qwak.batch_job.v1.batch_job_service_pb2 import (
36
36
  StartWarmupJobRequest,
37
37
  StartWarmupJobResponse,
38
38
  TaskExecutionDetails,
39
+ UpdateTasksDetailsRequest,
40
+ UpdateTasksDetailsResponse,
41
+ BatchTaskDetails,
39
42
  )
40
43
  from _qwak_proto.qwak.batch_job.v1.batch_job_service_pb2_grpc import (
41
44
  BatchJobManagementServiceServicer,
@@ -51,6 +54,7 @@ class BatchJobManagerService(BatchJobManagementServiceServicer):
51
54
  self.id_to_batch_job: Dict[str, MockBatchJob] = dict()
52
55
  self.model_id_active_warmup: Set[str] = set()
53
56
  self.models_to_fail: Set[str] = set()
57
+ self.task_id_to_update_task_details: Dict[str, BatchTaskDetails] = dict()
54
58
 
55
59
  def StartBatchJob(
56
60
  self, request: StartBatchJobRequest, context
@@ -265,6 +269,25 @@ class BatchJobManagerService(BatchJobManagementServiceServicer):
265
269
  except Exception as e:
266
270
  raise_internal_grpc_error(context, e)
267
271
 
272
+ def UpdateTasksDetails(
273
+ self, request: UpdateTasksDetailsRequest, context
274
+ ) -> UpdateTasksDetailsResponse:
275
+ for task in request.tasks_details:
276
+ task_id = task.task_id
277
+ if not task_id :
278
+ raise ValueError("Task ID cannot be empty")
279
+ input_files = task.input_files_details
280
+
281
+ print(f"Updating task with ID: {task_id} and input files: {[file.path for file in input_files]}")
282
+ self.task_id_to_update_task_details[task_id] = task
283
+ return UpdateTasksDetailsResponse()
284
+
285
+ def get_task_details(self,task_id: str
286
+ ) -> Optional[BatchTaskDetails]:
287
+ """
288
+ Get task details by task ID
289
+ """
290
+ return self.task_id_to_update_task_details[task_id]
268
291
 
269
292
  class MockBatchJob:
270
293
  def __init__(self, request: StartBatchJobRequest):
@@ -331,4 +354,4 @@ def batch_job_to_message(batch_job: MockBatchJob) -> BatchJobMessage:
331
354
  for line in batch_job.report
332
355
  ],
333
356
  task_executions=batch_job.tasks,
334
- )
357
+ )