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 +1 -1
- frogml_core/clients/batch_job_management/client.py +39 -0
- {frogml_core-0.0.97.dist-info → frogml_core-0.0.99.dist-info}/METADATA +1 -1
- {frogml_core-0.0.97.dist-info → frogml_core-0.0.99.dist-info}/RECORD +12 -12
- frogml_proto/qwak/model_group/model_group_pb2.py +23 -3
- frogml_proto/qwak/model_group/model_group_pb2.pyi +36 -0
- frogml_proto/qwak/model_group/model_group_pb2_grpc.py +33 -0
- frogml_proto/qwak/model_group/model_group_repository_details_pb2.py +23 -14
- frogml_proto/qwak/model_group/model_group_repository_details_pb2.pyi +27 -0
- frogml_services_mock/mocks/batch_job_manager_service.py +23 -0
- frogml_storage/__init__.py +1 -1
- {frogml_core-0.0.97.dist-info → frogml_core-0.0.99.dist-info}/WHEEL +0 -0
frogml_core/__init__.py
CHANGED
@@ -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,4 +1,4 @@
|
|
1
|
-
frogml_core/__init__.py,sha256=
|
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=
|
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=
|
951
|
-
frogml_proto/qwak/model_group/model_group_pb2.pyi,sha256=
|
952
|
-
frogml_proto/qwak/model_group/model_group_pb2_grpc.py,sha256=
|
953
|
-
frogml_proto/qwak/model_group/model_group_repository_details_pb2.py,sha256=
|
954
|
-
frogml_proto/qwak/model_group/model_group_repository_details_pb2.pyi,sha256=
|
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=
|
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=
|
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.
|
1157
|
-
frogml_core-0.0.
|
1158
|
-
frogml_core-0.0.
|
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.
|
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
|
-
|
49
|
-
|
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\
|
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=
|
75
|
-
_REPOSITORYDETAILS._serialized_end=
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
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):
|
frogml_storage/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "0.0.
|
1
|
+
__version__ = "0.0.99"
|
File without changes
|