frogml-core 0.0.97__py3-none-any.whl → 0.0.99__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.
frogml_core/__init__.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """Top-level package for frogml."""
2
2
 
3
3
  __author__ = "jfrog"
4
- __version__ = "0.0.97"
4
+ __version__ = "0.0.99"
5
5
 
6
6
  from frogml_core.inner.di_configuration import wire_dependencies
7
7
  from frogml_core.model.model_version_tracking import ( # noqa: F401,E501
@@ -36,6 +36,10 @@ from frogml_proto.qwak.batch_job.v1.batch_job_service_pb2 import (
36
36
  StartBatchJobResponse,
37
37
  StartWarmupJobRequest,
38
38
  StartWarmupJobResponse,
39
+ UpdateTasksDetailsResponse,
40
+ UpdateTasksDetailsRequest,
41
+ BatchTaskDetails,
42
+ InputFileDetails,
39
43
  )
40
44
  from frogml_proto.qwak.batch_job.v1.batch_job_service_pb2_grpc import (
41
45
  BatchJobManagementServiceStub,
@@ -67,6 +71,7 @@ from .results import (
67
71
  GetExecutionReportResult,
68
72
  StartExecutionResult,
69
73
  )
74
+ from typing import List
70
75
 
71
76
  CLIENT_TIMEOUT = 180 # Seconds
72
77
 
@@ -542,3 +547,37 @@ class BatchJobManagerClient:
542
547
 
543
548
  except grpc.RpcError as e:
544
549
  raise FrogmlException(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
+ Args:
556
+ task_id: The ID of the task to update.
557
+ input_file_paths: A list of paths for the input files associated with the task.
558
+ """
559
+ # Create InputFileDetails messages for each input file path
560
+ input_files_details = [
561
+ InputFileDetails(path=file_path) for file_path in input_file_paths
562
+ ]
563
+
564
+ # Create BatchTaskDetails message for the single task
565
+ batch_task_details = BatchTaskDetails(
566
+ task_id=task_id, input_files_details=input_files_details
567
+ )
568
+
569
+ update_request = UpdateTasksDetailsRequest(
570
+ tasks_details=[batch_task_details] # Wrap in a list
571
+ )
572
+
573
+ try:
574
+ response: UpdateTasksDetailsResponse = (
575
+ self.batch_job_management.UpdateTasksDetails(
576
+ update_request, timeout=CLIENT_TIMEOUT
577
+ )
578
+ )
579
+ return response
580
+ except grpc.RpcError as e:
581
+ raise FrogmlException(
582
+ f"Failed to update task details for task '{task_id}', error is: {e}"
583
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: frogml-core
3
- Version: 0.0.97
3
+ Version: 0.0.99
4
4
  Summary: frogml Core contains the necessary objects and communication tools for using the Jfrog ml Platform
5
5
  License: Apache-2.0
6
6
  Keywords: mlops,ml,deployment,serving,model
@@ -1,4 +1,4 @@
1
- frogml_core/__init__.py,sha256=qVJvp0Th1tj8hSuSvHfQlESs2X9saUoSnods3O0RX1M,777
1
+ frogml_core/__init__.py,sha256=QdMe5Qmm9qmXOskppK40Rzg8cfe58ugR6WtvaypKK5I,777
2
2
  frogml_core/automations/__init__.py,sha256=j2gD15MN-xVWhI5rAFsDwhL0CIyICLNT0scXsKvNBkU,1547
3
3
  frogml_core/automations/automation_executions.py,sha256=xpOb9Dq8gPPGNQDJTvBBZbNz4woZDRZY0HqnLSu7pwU,3230
4
4
  frogml_core/automations/automations.py,sha256=GKEQyQMi8sxX5oZn62PaxPi0zD8IaJRjBkhczRJxHNs,13070
@@ -34,7 +34,7 @@ frogml_core/clients/automation_management/client.py,sha256=rG1tvdtKoSBCSG5IdzmSP
34
34
  frogml_core/clients/autoscaling/__init__.py,sha256=A-zuZOWaZf16NjnpX38204m730c5Lde491KaXneGirE,38
35
35
  frogml_core/clients/autoscaling/client.py,sha256=Izl_Ko31ECsVEadTcthru8GGujsHpwWN5E_VSCKiymM,1296
36
36
  frogml_core/clients/batch_job_management/__init__.py,sha256=zywxYf2JupkIWnGVB2C6ugZs5CrOdxTPrksD5P6uQu4,211
37
- frogml_core/clients/batch_job_management/client.py,sha256=mXGyIQLlEOVcrmESje_rEOdlDLWIB8Ndi6N38cXWe74,21120
37
+ frogml_core/clients/batch_job_management/client.py,sha256=V8sqltMAsoHAoXHxXZsoLmY7L1XykbBvod1xyhCmHHA,22528
38
38
  frogml_core/clients/batch_job_management/executions_config.py,sha256=eEbT_ldIEVtwe85oThJ-Jv3qFBIfvLpZ-w6aJCLlqlk,6910
39
39
  frogml_core/clients/batch_job_management/results.py,sha256=nrFGZ3y538FBhej94CYV4cwqQssK1aUQOLGubYdQVrc,1846
40
40
  frogml_core/clients/build_management/__init__.py,sha256=oXurHX6Kho5X-fOuuNHB3B9oMX6ejYUqh6GWv5qJyjw,43
@@ -947,11 +947,11 @@ frogml_proto/qwak/logging/log_source_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXH
947
947
  frogml_proto/qwak/model_descriptor/open_ai_descriptor_pb2.py,sha256=yArUUX9SsaOuTmFfhxGIxe_ZEFC6u39oqYBAiPro5mo,6764
948
948
  frogml_proto/qwak/model_descriptor/open_ai_descriptor_pb2.pyi,sha256=G5CaQGczrZ9kGsMbmJXMFWAwnqMZ4jPSl9KQpSq0yMo,12345
949
949
  frogml_proto/qwak/model_descriptor/open_ai_descriptor_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
950
- frogml_proto/qwak/model_group/model_group_pb2.py,sha256=Clk4w9yFYetBnrk04LVS6DCVsodGCPD69msJS9_FrGk,3441
951
- frogml_proto/qwak/model_group/model_group_pb2.pyi,sha256=AfUK0LLa1uzTDQvOncQUu6t8GJHYTfdlc2R5ehHhaVc,3051
952
- frogml_proto/qwak/model_group/model_group_pb2_grpc.py,sha256=DWBD3YffezJW8ov0UO6dYn7Ofx1sww-LjPGBKHfUf2U,3074
953
- frogml_proto/qwak/model_group/model_group_repository_details_pb2.py,sha256=iZ7Psb7aUSGWG0IB6igZDHbsYbZratpqx5Dtzkd0v9A,5035
954
- frogml_proto/qwak/model_group/model_group_repository_details_pb2.pyi,sha256=h5ciIby9peqjZqHosajfrHdmX5kosmzDJiadoCVpTmc,4119
950
+ frogml_proto/qwak/model_group/model_group_pb2.py,sha256=1A5FJtSSiL4rfAbqzV00xln0PM42hLq3v7cDyFQt4H8,5388
951
+ frogml_proto/qwak/model_group/model_group_pb2.pyi,sha256=sOHTXNJjDNGUpIcgqzrCcV_lmwaUt2MJiW6RN0YOAEA,5086
952
+ frogml_proto/qwak/model_group/model_group_pb2_grpc.py,sha256=10iHVXBKc3FXdBh5u5SqQFIn5qZaOsVGuKVaI4kHMZk,5126
953
+ frogml_proto/qwak/model_group/model_group_repository_details_pb2.py,sha256=HaWF7QWEDWZJm-IEV25xT8XbVWgqwVU4pqFKt7t3sRk,5812
954
+ frogml_proto/qwak/model_group/model_group_repository_details_pb2.pyi,sha256=GgYhrSXu8L2RdEV0clooKgB9Gye3_no4q0YrMy8QrZw,5701
955
955
  frogml_proto/qwak/model_group/model_group_repository_details_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
956
956
  frogml_proto/qwak/models/models_pb2.py,sha256=Q-XUigDskzrltE8l1x3r268kLOq7SgUJMD-wg-r6_Bw,32112
957
957
  frogml_proto/qwak/models/models_pb2.pyi,sha256=277mGQradMyhof3J54ilaW_SKN0d-dan7DAy_6Zkmo8,39261
@@ -1070,7 +1070,7 @@ frogml_services_mock/mocks/audience_service_api.py,sha256=x96adhF05NYqEtI8lJaf5l
1070
1070
  frogml_services_mock/mocks/authentication_service.py,sha256=M3cVfnQ2XcxQAWZCm9uR9cAVu_0BahEP4BdymYQfihI,1180
1071
1071
  frogml_services_mock/mocks/automation_management_service.py,sha256=-7kncqM3R-_pLmppzFpuv_TniXCVGVuESculVuQ3EbY,8238
1072
1072
  frogml_services_mock/mocks/autoscaling_service_api.py,sha256=u3RkwHxACPFSk9DwhLFQSI7_ULoHN9uWFL-zyyo-sNw,1032
1073
- frogml_services_mock/mocks/batch_job_manager_service.py,sha256=QY3HA0MlA8eg2jkQEzjyGx8UsSnlGbOUopDLOYLacL4,13146
1073
+ frogml_services_mock/mocks/batch_job_manager_service.py,sha256=AJNM5yJDD7fGRSeHoxC8AdGdx6iwwxUWXNhEFDcD3QE,14098
1074
1074
  frogml_services_mock/mocks/build_management.py,sha256=IECGXfSEDOUhwMcHtI3pd9PF0aXqZL2R98gl3wS0joY,3697
1075
1075
  frogml_services_mock/mocks/build_orchestrator_build_api.py,sha256=fnB6x7W_UWoOxkCm7AgtrRYJjjm1QCotkf-2hPGk75c,5026
1076
1076
  frogml_services_mock/mocks/build_orchestrator_build_settings_api.py,sha256=5V15s2QUur4CPMNZPyXIIt_NJ2W_DwugfreMDA6WbfM,1394
@@ -1114,7 +1114,7 @@ frogml_services_mock/mocks/workspace_manager_service_mock.py,sha256=WbOiWgOyr-xT
1114
1114
  frogml_services_mock/services_mock.py,sha256=sgKgwhu2W0YOHtzil8x7f1znK_sZr_i27XSeiF4xqVE,21200
1115
1115
  frogml_services_mock/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1116
1116
  frogml_services_mock/utils/service_utils.py,sha256=ZlB0CnB1J6oBn6_m7fQO2U8tKoboHdUa6ljjkRMYNXU,265
1117
- frogml_storage/__init__.py,sha256=93lvSWnHyZhOl_RAxkMtdi_akHt37ijuw8MdOyJYdKM,23
1117
+ frogml_storage/__init__.py,sha256=3svy--sM0f1CbY-gO0A9g6zDgvjpar3s5vNWbJeQ08Q,23
1118
1118
  frogml_storage/_environment.py,sha256=zuzOJBtBwFaguwn_JkKjfhXStZoustgP30KzOP3mYv8,707
1119
1119
  frogml_storage/artifactory/__init__.py,sha256=C02rcm7kqsZBVA6c6Gztxamj96hn8Aj6BuzYWFRmWbQ,71
1120
1120
  frogml_storage/artifactory/_artifactory_api.py,sha256=Oz0HOpQPSNwWIVAy94UJUyPhLetc7sdZjoTfSXtrFug,11200
@@ -1153,6 +1153,6 @@ frogml_storage/utils/__init__.py,sha256=HQUWfuGUIPZY7kfS795TRW8BQ4WmNqrNjS7lUrbx
1153
1153
  frogml_storage/utils/_input_checks_utility.py,sha256=CFiJOdTBS9piJMtR3lemEz27wZcQ6_-7XESu8iy-mrw,3221
1154
1154
  frogml_storage/utils/_storage_utils.py,sha256=HB2g7uY5A3b33yIcAUM1OjHb5jWsnpESsiDrEviQwrI,366
1155
1155
  frogml_storage/utils/_url_utils.py,sha256=NUEfz9Fp1iE8b676-A5wrMlSTsJVRKrUhcUItOFAJD8,821
1156
- frogml_core-0.0.97.dist-info/METADATA,sha256=RUgAcVvSjFGkMrXZ0k4tJRYXa1aLyXlZJX14uE8J5XQ,14975
1157
- frogml_core-0.0.97.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
1158
- frogml_core-0.0.97.dist-info/RECORD,,
1156
+ frogml_core-0.0.99.dist-info/METADATA,sha256=omvhGi0BYg-wKqHXHm1JY6Zn52ChbLZkaSDoYfF_XMc,14975
1157
+ frogml_core-0.0.99.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
1158
+ frogml_core-0.0.99.dist-info/RECORD,,
@@ -16,12 +16,14 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__
16
16
  from frogml_proto.qwak.model_group import model_group_repository_details_pb2 as qwak_dot_model__group_dot_model__group__repository__details__pb2
17
17
 
18
18
 
19
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"qwak/model_group/model_group.proto\x12\x1cqwak.model_groups.management\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x35qwak/model_group/model_group_repository_details.proto\"Y\n\"CreateIfNotExistsModelGroupRequest\x12\x18\n\x10model_group_name\x18\x01 \x01(\t\x12\x19\n\x11jfrog_project_key\x18\x02 \x01(\t\"\xdf\x01\n\x1bModelGroupBriefInfoResponse\x12\x16\n\x0emodel_group_id\x18\x01 \x01(\t\x12\x1f\n\x17model_group_description\x18\x02 \x01(\t\x12:\n\x16model_group_created_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12K\n\x12repository_details\x18\x04 \x03(\x0b\x32/.qwak.model_groups.management.RepositoryDetails2\xba\x01\n\x1bModelGroupManagementService\x12\x9a\x01\n\x1b\x43reateIfNotExistsModelGroup\x12@.qwak.model_groups.management.CreateIfNotExistsModelGroupRequest\x1a\x39.qwak.model_groups.management.ModelGroupBriefInfoResponseBL\n&com.qwak.ai.management.model.group.apiB ModelGroupManagementServiceProtoP\x01\x62\x06proto3')
19
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"qwak/model_group/model_group.proto\x12\x1cqwak.model_groups.management\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x35qwak/model_group/model_group_repository_details.proto\"Y\n\"CreateIfNotExistsModelGroupRequest\x12\x18\n\x10model_group_name\x18\x01 \x01(\t\x12\x19\n\x11jfrog_project_key\x18\x02 \x01(\t\"\xdf\x01\n\x1bModelGroupBriefInfoResponse\x12\x16\n\x0emodel_group_id\x18\x01 \x01(\t\x12\x1f\n\x17model_group_description\x18\x02 \x01(\t\x12:\n\x16model_group_created_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12K\n\x12repository_details\x18\x04 \x03(\x0b\x32/.qwak.model_groups.management.RepositoryDetails\"\x95\x01\n&CreateRepositoriesForModelGroupRequest\x12\x18\n\x10model_group_uuid\x18\x01 \x01(\t\x12Q\n\x12repository_details\x18\x02 \x03(\x0b\x32\x35.qwak.model_groups.management.RemoteRepositoryDetails\"\x82\x01\n\'CreateRepositoriesForModelGroupResponse\x12W\n\x1e\x61rtifactory_repository_details\x18\x01 \x03(\x0b\x32/.qwak.model_groups.management.RepositoryDetails2\xeb\x02\n\x1bModelGroupManagementService\x12\x9a\x01\n\x1b\x43reateIfNotExistsModelGroup\x12@.qwak.model_groups.management.CreateIfNotExistsModelGroupRequest\x1a\x39.qwak.model_groups.management.ModelGroupBriefInfoResponse\x12\xae\x01\n\x1f\x43reateRepositoriesForModelGroup\x12\x44.qwak.model_groups.management.CreateRepositoriesForModelGroupRequest\x1a\x45.qwak.model_groups.management.CreateRepositoriesForModelGroupResponseBL\n&com.qwak.ai.management.model.group.apiB ModelGroupManagementServiceProtoP\x01\x62\x06proto3')
20
20
 
21
21
 
22
22
 
23
23
  _CREATEIFNOTEXISTSMODELGROUPREQUEST = DESCRIPTOR.message_types_by_name['CreateIfNotExistsModelGroupRequest']
24
24
  _MODELGROUPBRIEFINFORESPONSE = DESCRIPTOR.message_types_by_name['ModelGroupBriefInfoResponse']
25
+ _CREATEREPOSITORIESFORMODELGROUPREQUEST = DESCRIPTOR.message_types_by_name['CreateRepositoriesForModelGroupRequest']
26
+ _CREATEREPOSITORIESFORMODELGROUPRESPONSE = DESCRIPTOR.message_types_by_name['CreateRepositoriesForModelGroupResponse']
25
27
  CreateIfNotExistsModelGroupRequest = _reflection.GeneratedProtocolMessageType('CreateIfNotExistsModelGroupRequest', (_message.Message,), {
26
28
  'DESCRIPTOR' : _CREATEIFNOTEXISTSMODELGROUPREQUEST,
27
29
  '__module__' : 'qwak.model_group.model_group_pb2'
@@ -36,6 +38,20 @@ ModelGroupBriefInfoResponse = _reflection.GeneratedProtocolMessageType('ModelGro
36
38
  })
37
39
  _sym_db.RegisterMessage(ModelGroupBriefInfoResponse)
38
40
 
41
+ CreateRepositoriesForModelGroupRequest = _reflection.GeneratedProtocolMessageType('CreateRepositoriesForModelGroupRequest', (_message.Message,), {
42
+ 'DESCRIPTOR' : _CREATEREPOSITORIESFORMODELGROUPREQUEST,
43
+ '__module__' : 'qwak.model_group.model_group_pb2'
44
+ # @@protoc_insertion_point(class_scope:qwak.model_groups.management.CreateRepositoriesForModelGroupRequest)
45
+ })
46
+ _sym_db.RegisterMessage(CreateRepositoriesForModelGroupRequest)
47
+
48
+ CreateRepositoriesForModelGroupResponse = _reflection.GeneratedProtocolMessageType('CreateRepositoriesForModelGroupResponse', (_message.Message,), {
49
+ 'DESCRIPTOR' : _CREATEREPOSITORIESFORMODELGROUPRESPONSE,
50
+ '__module__' : 'qwak.model_group.model_group_pb2'
51
+ # @@protoc_insertion_point(class_scope:qwak.model_groups.management.CreateRepositoriesForModelGroupResponse)
52
+ })
53
+ _sym_db.RegisterMessage(CreateRepositoriesForModelGroupResponse)
54
+
39
55
  _MODELGROUPMANAGEMENTSERVICE = DESCRIPTOR.services_by_name['ModelGroupManagementService']
40
56
  if _descriptor._USE_C_DESCRIPTORS == False:
41
57
 
@@ -45,6 +61,10 @@ if _descriptor._USE_C_DESCRIPTORS == False:
45
61
  _CREATEIFNOTEXISTSMODELGROUPREQUEST._serialized_end=245
46
62
  _MODELGROUPBRIEFINFORESPONSE._serialized_start=248
47
63
  _MODELGROUPBRIEFINFORESPONSE._serialized_end=471
48
- _MODELGROUPMANAGEMENTSERVICE._serialized_start=474
49
- _MODELGROUPMANAGEMENTSERVICE._serialized_end=660
64
+ _CREATEREPOSITORIESFORMODELGROUPREQUEST._serialized_start=474
65
+ _CREATEREPOSITORIESFORMODELGROUPREQUEST._serialized_end=623
66
+ _CREATEREPOSITORIESFORMODELGROUPRESPONSE._serialized_start=626
67
+ _CREATEREPOSITORIESFORMODELGROUPRESPONSE._serialized_end=756
68
+ _MODELGROUPMANAGEMENTSERVICE._serialized_start=759
69
+ _MODELGROUPMANAGEMENTSERVICE._serialized_end=1122
50
70
  # @@protoc_insertion_point(module_scope)
@@ -66,3 +66,39 @@ class ModelGroupBriefInfoResponse(google.protobuf.message.Message):
66
66
  def ClearField(self, field_name: typing_extensions.Literal["model_group_created_at", b"model_group_created_at", "model_group_description", b"model_group_description", "model_group_id", b"model_group_id", "repository_details", b"repository_details"]) -> None: ...
67
67
 
68
68
  global___ModelGroupBriefInfoResponse = ModelGroupBriefInfoResponse
69
+
70
+ class CreateRepositoriesForModelGroupRequest(google.protobuf.message.Message):
71
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
72
+
73
+ MODEL_GROUP_UUID_FIELD_NUMBER: builtins.int
74
+ REPOSITORY_DETAILS_FIELD_NUMBER: builtins.int
75
+ model_group_uuid: builtins.str
76
+ """the model group UUID for which to create repositories"""
77
+ @property
78
+ def repository_details(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[qwak.model_group.model_group_repository_details_pb2.RemoteRepositoryDetails]:
79
+ """List of remote repository details to create for the model group"""
80
+ def __init__(
81
+ self,
82
+ *,
83
+ model_group_uuid: builtins.str = ...,
84
+ repository_details: collections.abc.Iterable[qwak.model_group.model_group_repository_details_pb2.RemoteRepositoryDetails] | None = ...,
85
+ ) -> None: ...
86
+ def ClearField(self, field_name: typing_extensions.Literal["model_group_uuid", b"model_group_uuid", "repository_details", b"repository_details"]) -> None: ...
87
+
88
+ global___CreateRepositoriesForModelGroupRequest = CreateRepositoriesForModelGroupRequest
89
+
90
+ class CreateRepositoriesForModelGroupResponse(google.protobuf.message.Message):
91
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
92
+
93
+ ARTIFACTORY_REPOSITORY_DETAILS_FIELD_NUMBER: builtins.int
94
+ @property
95
+ def artifactory_repository_details(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[qwak.model_group.model_group_repository_details_pb2.RepositoryDetails]:
96
+ """List of repository details associated with this model group"""
97
+ def __init__(
98
+ self,
99
+ *,
100
+ artifactory_repository_details: collections.abc.Iterable[qwak.model_group.model_group_repository_details_pb2.RepositoryDetails] | None = ...,
101
+ ) -> None: ...
102
+ def ClearField(self, field_name: typing_extensions.Literal["artifactory_repository_details", b"artifactory_repository_details"]) -> None: ...
103
+
104
+ global___CreateRepositoriesForModelGroupResponse = CreateRepositoriesForModelGroupResponse
@@ -19,6 +19,11 @@ class ModelGroupManagementServiceStub(object):
19
19
  request_serializer=qwak_dot_model__group_dot_model__group__pb2.CreateIfNotExistsModelGroupRequest.SerializeToString,
20
20
  response_deserializer=qwak_dot_model__group_dot_model__group__pb2.ModelGroupBriefInfoResponse.FromString,
21
21
  )
22
+ self.CreateRepositoriesForModelGroup = channel.unary_unary(
23
+ '/qwak.model_groups.management.ModelGroupManagementService/CreateRepositoriesForModelGroup',
24
+ request_serializer=qwak_dot_model__group_dot_model__group__pb2.CreateRepositoriesForModelGroupRequest.SerializeToString,
25
+ response_deserializer=qwak_dot_model__group_dot_model__group__pb2.CreateRepositoriesForModelGroupResponse.FromString,
26
+ )
22
27
 
23
28
 
24
29
  class ModelGroupManagementServiceServicer(object):
@@ -30,6 +35,12 @@ class ModelGroupManagementServiceServicer(object):
30
35
  context.set_details('Method not implemented!')
31
36
  raise NotImplementedError('Method not implemented!')
32
37
 
38
+ def CreateRepositoriesForModelGroup(self, request, context):
39
+ """Missing associated documentation comment in .proto file."""
40
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
41
+ context.set_details('Method not implemented!')
42
+ raise NotImplementedError('Method not implemented!')
43
+
33
44
 
34
45
  def add_ModelGroupManagementServiceServicer_to_server(servicer, server):
35
46
  rpc_method_handlers = {
@@ -38,6 +49,11 @@ def add_ModelGroupManagementServiceServicer_to_server(servicer, server):
38
49
  request_deserializer=qwak_dot_model__group_dot_model__group__pb2.CreateIfNotExistsModelGroupRequest.FromString,
39
50
  response_serializer=qwak_dot_model__group_dot_model__group__pb2.ModelGroupBriefInfoResponse.SerializeToString,
40
51
  ),
52
+ 'CreateRepositoriesForModelGroup': grpc.unary_unary_rpc_method_handler(
53
+ servicer.CreateRepositoriesForModelGroup,
54
+ request_deserializer=qwak_dot_model__group_dot_model__group__pb2.CreateRepositoriesForModelGroupRequest.FromString,
55
+ response_serializer=qwak_dot_model__group_dot_model__group__pb2.CreateRepositoriesForModelGroupResponse.SerializeToString,
56
+ ),
41
57
  }
42
58
  generic_handler = grpc.method_handlers_generic_handler(
43
59
  'qwak.model_groups.management.ModelGroupManagementService', rpc_method_handlers)
@@ -64,3 +80,20 @@ class ModelGroupManagementService(object):
64
80
  qwak_dot_model__group_dot_model__group__pb2.ModelGroupBriefInfoResponse.FromString,
65
81
  options, channel_credentials,
66
82
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
83
+
84
+ @staticmethod
85
+ def CreateRepositoriesForModelGroup(request,
86
+ target,
87
+ options=(),
88
+ channel_credentials=None,
89
+ call_credentials=None,
90
+ insecure=False,
91
+ compression=None,
92
+ wait_for_ready=None,
93
+ timeout=None,
94
+ metadata=None):
95
+ return grpc.experimental.unary_unary(request, target, '/qwak.model_groups.management.ModelGroupManagementService/CreateRepositoriesForModelGroup',
96
+ qwak_dot_model__group_dot_model__group__pb2.CreateRepositoriesForModelGroupRequest.SerializeToString,
97
+ qwak_dot_model__group_dot_model__group__pb2.CreateRepositoriesForModelGroupResponse.FromString,
98
+ options, channel_credentials,
99
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -12,14 +12,14 @@ from google.protobuf import symbol_database as _symbol_database
12
12
  _sym_db = _symbol_database.Default()
13
13
 
14
14
 
15
- from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
16
15
 
17
16
 
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n5qwak/model_group/model_group_repository_details.proto\x12\x1cqwak.model_groups.management\x1a\x1fgoogle/protobuf/timestamp.proto\"r\n\x11RepositoryDetails\x12\x45\n\x0frepository_type\x18\x01 \x01(\x0b\x32,.qwak.model_groups.management.RepositoryType\x12\x16\n\x0erepository_key\x18\x02 \x01(\t\"\x12\n\x10\x44ockerRepository\"\x13\n\x11\x44\x61tasetRepository\"\x14\n\x12\x41rtifactRepository\"\x17\n\x15HuggingFaceRepository\"\xdd\x02\n\x0eRepositoryType\x12K\n\x11\x64ocker_repository\x18\x01 \x01(\x0b\x32..qwak.model_groups.management.DockerRepositoryH\x00\x12M\n\x12\x64\x61taset_repository\x18\x02 \x01(\x0b\x32/.qwak.model_groups.management.DatasetRepositoryH\x00\x12O\n\x13\x61rtifact_repository\x18\x03 \x01(\x0b\x32\x30.qwak.model_groups.management.ArtifactRepositoryH\x00\x12V\n\x17hugging_face_repository\x18\x04 \x01(\x0b\x32\x33.qwak.model_groups.management.HuggingFaceRepositoryH\x00\x42\x06\n\x04typeBN\n&com.qwak.ai.management.model.group.apiB\"ModelGroupRepositoriesDetailsProtoP\x01\x62\x06proto3')
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n5qwak/model_group/model_group_repository_details.proto\x12\x1cqwak.model_groups.management\"r\n\x11RepositoryDetails\x12\x45\n\x0frepository_type\x18\x01 \x01(\x0b\x32,.qwak.model_groups.management.RepositoryType\x12\x16\n\x0erepository_key\x18\x02 \x01(\t\"\xf0\x01\n\x17RemoteRepositoryDetails\x12K\n\x11\x64ocker_repository\x18\x01 \x01(\x0b\x32..qwak.model_groups.management.DockerRepositoryH\x00\x12V\n\x17hugging_face_repository\x18\x02 \x01(\x0b\x32\x33.qwak.model_groups.management.HuggingFaceRepositoryH\x00\x12\x1d\n\x15repository_remote_url\x18\x03 \x01(\tB\x11\n\x0frepository_type\"\x12\n\x10\x44ockerRepository\"\x13\n\x11\x44\x61tasetRepository\"\x14\n\x12\x41rtifactRepository\"\x17\n\x15HuggingFaceRepository\"\xdd\x02\n\x0eRepositoryType\x12K\n\x11\x64ocker_repository\x18\x01 \x01(\x0b\x32..qwak.model_groups.management.DockerRepositoryH\x00\x12M\n\x12\x64\x61taset_repository\x18\x02 \x01(\x0b\x32/.qwak.model_groups.management.DatasetRepositoryH\x00\x12O\n\x13\x61rtifact_repository\x18\x03 \x01(\x0b\x32\x30.qwak.model_groups.management.ArtifactRepositoryH\x00\x12V\n\x17hugging_face_repository\x18\x04 \x01(\x0b\x32\x33.qwak.model_groups.management.HuggingFaceRepositoryH\x00\x42\x06\n\x04typeBN\n&com.qwak.ai.management.model.group.apiB\"ModelGroupRepositoriesDetailsProtoP\x01\x62\x06proto3')
19
18
 
20
19
 
21
20
 
22
21
  _REPOSITORYDETAILS = DESCRIPTOR.message_types_by_name['RepositoryDetails']
22
+ _REMOTEREPOSITORYDETAILS = DESCRIPTOR.message_types_by_name['RemoteRepositoryDetails']
23
23
  _DOCKERREPOSITORY = DESCRIPTOR.message_types_by_name['DockerRepository']
24
24
  _DATASETREPOSITORY = DESCRIPTOR.message_types_by_name['DatasetRepository']
25
25
  _ARTIFACTREPOSITORY = DESCRIPTOR.message_types_by_name['ArtifactRepository']
@@ -32,6 +32,13 @@ RepositoryDetails = _reflection.GeneratedProtocolMessageType('RepositoryDetails'
32
32
  })
33
33
  _sym_db.RegisterMessage(RepositoryDetails)
34
34
 
35
+ RemoteRepositoryDetails = _reflection.GeneratedProtocolMessageType('RemoteRepositoryDetails', (_message.Message,), {
36
+ 'DESCRIPTOR' : _REMOTEREPOSITORYDETAILS,
37
+ '__module__' : 'qwak.model_group.model_group_repository_details_pb2'
38
+ # @@protoc_insertion_point(class_scope:qwak.model_groups.management.RemoteRepositoryDetails)
39
+ })
40
+ _sym_db.RegisterMessage(RemoteRepositoryDetails)
41
+
35
42
  DockerRepository = _reflection.GeneratedProtocolMessageType('DockerRepository', (_message.Message,), {
36
43
  'DESCRIPTOR' : _DOCKERREPOSITORY,
37
44
  '__module__' : 'qwak.model_group.model_group_repository_details_pb2'
@@ -71,16 +78,18 @@ if _descriptor._USE_C_DESCRIPTORS == False:
71
78
 
72
79
  DESCRIPTOR._options = None
73
80
  DESCRIPTOR._serialized_options = b'\n&com.qwak.ai.management.model.group.apiB\"ModelGroupRepositoriesDetailsProtoP\001'
74
- _REPOSITORYDETAILS._serialized_start=120
75
- _REPOSITORYDETAILS._serialized_end=234
76
- _DOCKERREPOSITORY._serialized_start=236
77
- _DOCKERREPOSITORY._serialized_end=254
78
- _DATASETREPOSITORY._serialized_start=256
79
- _DATASETREPOSITORY._serialized_end=275
80
- _ARTIFACTREPOSITORY._serialized_start=277
81
- _ARTIFACTREPOSITORY._serialized_end=297
82
- _HUGGINGFACEREPOSITORY._serialized_start=299
83
- _HUGGINGFACEREPOSITORY._serialized_end=322
84
- _REPOSITORYTYPE._serialized_start=325
85
- _REPOSITORYTYPE._serialized_end=674
81
+ _REPOSITORYDETAILS._serialized_start=87
82
+ _REPOSITORYDETAILS._serialized_end=201
83
+ _REMOTEREPOSITORYDETAILS._serialized_start=204
84
+ _REMOTEREPOSITORYDETAILS._serialized_end=444
85
+ _DOCKERREPOSITORY._serialized_start=446
86
+ _DOCKERREPOSITORY._serialized_end=464
87
+ _DATASETREPOSITORY._serialized_start=466
88
+ _DATASETREPOSITORY._serialized_end=485
89
+ _ARTIFACTREPOSITORY._serialized_start=487
90
+ _ARTIFACTREPOSITORY._serialized_end=507
91
+ _HUGGINGFACEREPOSITORY._serialized_start=509
92
+ _HUGGINGFACEREPOSITORY._serialized_end=532
93
+ _REPOSITORYTYPE._serialized_start=535
94
+ _REPOSITORYTYPE._serialized_end=884
86
95
  # @@protoc_insertion_point(module_scope)
@@ -35,6 +35,33 @@ class RepositoryDetails(google.protobuf.message.Message):
35
35
 
36
36
  global___RepositoryDetails = RepositoryDetails
37
37
 
38
+ class RemoteRepositoryDetails(google.protobuf.message.Message):
39
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
40
+
41
+ DOCKER_REPOSITORY_FIELD_NUMBER: builtins.int
42
+ HUGGING_FACE_REPOSITORY_FIELD_NUMBER: builtins.int
43
+ REPOSITORY_REMOTE_URL_FIELD_NUMBER: builtins.int
44
+ @property
45
+ def docker_repository(self) -> global___DockerRepository:
46
+ """Docker repository"""
47
+ @property
48
+ def hugging_face_repository(self) -> global___HuggingFaceRepository:
49
+ """HuggingFace repository"""
50
+ repository_remote_url: builtins.str
51
+ """The remote repository URL"""
52
+ def __init__(
53
+ self,
54
+ *,
55
+ docker_repository: global___DockerRepository | None = ...,
56
+ hugging_face_repository: global___HuggingFaceRepository | None = ...,
57
+ repository_remote_url: builtins.str = ...,
58
+ ) -> None: ...
59
+ def HasField(self, field_name: typing_extensions.Literal["docker_repository", b"docker_repository", "hugging_face_repository", b"hugging_face_repository", "repository_type", b"repository_type"]) -> builtins.bool: ...
60
+ def ClearField(self, field_name: typing_extensions.Literal["docker_repository", b"docker_repository", "hugging_face_repository", b"hugging_face_repository", "repository_remote_url", b"repository_remote_url", "repository_type", b"repository_type"]) -> None: ...
61
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["repository_type", b"repository_type"]) -> typing_extensions.Literal["docker_repository", "hugging_face_repository"] | None: ...
62
+
63
+ global___RemoteRepositoryDetails = RemoteRepositoryDetails
64
+
38
65
  class DockerRepository(google.protobuf.message.Message):
39
66
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
40
67
 
@@ -38,6 +38,9 @@ from frogml_proto.qwak.batch_job.v1.batch_job_service_pb2 import (
38
38
  StartWarmupJobRequest,
39
39
  StartWarmupJobResponse,
40
40
  TaskExecutionDetails,
41
+ UpdateTasksDetailsRequest,
42
+ UpdateTasksDetailsResponse,
43
+ BatchTaskDetails,
41
44
  )
42
45
  from frogml_proto.qwak.batch_job.v1.batch_job_service_pb2_grpc import (
43
46
  BatchJobManagementServiceServicer,
@@ -54,6 +57,7 @@ class BatchJobManagerService(BatchJobManagementServiceServicer):
54
57
  self.id_to_batch_job: Dict[str, MockBatchJob] = dict()
55
58
  self.model_id_active_warmup: Set[str] = set()
56
59
  self.models_to_fail: Set[str] = set()
60
+ self.task_id_to_update_task_details: Dict[str, BatchTaskDetails] = dict()
57
61
 
58
62
  def StartBatchJob(
59
63
  self, request: StartBatchJobRequest, context
@@ -268,6 +272,25 @@ class BatchJobManagerService(BatchJobManagementServiceServicer):
268
272
  except Exception as e:
269
273
  raise_internal_grpc_error(context, e)
270
274
 
275
+ def UpdateTasksDetails(
276
+ self, request: UpdateTasksDetailsRequest, context
277
+ ) -> UpdateTasksDetailsResponse:
278
+ for task in request.tasks_details:
279
+ task_id = task.task_id
280
+ if not task_id :
281
+ raise ValueError("Task ID cannot be empty")
282
+ input_files = task.input_files_details
283
+
284
+ print(f"Updating task with ID: {task_id} and input files: {[file.path for file in input_files]}")
285
+ self.task_id_to_update_task_details[task_id] = task
286
+ return UpdateTasksDetailsResponse()
287
+
288
+ def get_task_details(self,task_id: str
289
+ ) -> Optional[BatchTaskDetails]:
290
+ """
291
+ Get task details by task ID
292
+ """
293
+ return self.task_id_to_update_task_details[task_id]
271
294
 
272
295
  class MockBatchJob:
273
296
  def __init__(self, request: StartBatchJobRequest):
@@ -1 +1 @@
1
- __version__ = "0.0.97"
1
+ __version__ = "0.0.99"