qwak-core 0.5.4__py3-none-any.whl → 0.5.16__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.
- _qwak_proto/qwak/builds/build_pb2.py +40 -40
- _qwak_proto/qwak/builds/build_pb2.pyi +7 -1
- _qwak_proto/qwak/builds/build_values_pb2.py +38 -38
- _qwak_proto/qwak/builds/build_values_pb2.pyi +7 -1
- _qwak_proto/qwak/model_group/model_group_repository_details_pb2.py +16 -12
- _qwak_proto/qwak/model_group/model_group_repository_details_pb2.pyi +44 -6
- qwak/__init__.py +1 -1
- qwak/clients/feature_store/execution_management_client.py +28 -0
- qwak/feature_store/execution/streaming_backfill.py +48 -0
- qwak/feature_store/feature_sets/streaming.py +84 -63
- qwak/feature_store/feature_sets/streaming_backfill.py +88 -124
- {qwak_core-0.5.4.dist-info → qwak_core-0.5.16.dist-info}/METADATA +1 -1
- {qwak_core-0.5.4.dist-info → qwak_core-0.5.16.dist-info}/RECORD +15 -14
- qwak_services_mock/mocks/execution_management_service.py +9 -1
- {qwak_core-0.5.4.dist-info → qwak_core-0.5.16.dist-info}/WHEEL +0 -0
|
@@ -16,7 +16,7 @@ from _qwak_proto.qwak.fitness_service import fitness_pb2 as qwak_dot_fitness__se
|
|
|
16
16
|
from _qwak_proto.qwak.builds import build_values_pb2 as qwak_dot_builds_dot_build__values__pb2
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17qwak/builds/build.proto\x12\x18qwak.builds.orchestrator\x1a/qwak/user_application/common/v0/resources.proto\x1a\"qwak/fitness_service/fitness.proto\x1a\x1eqwak/builds/build_values.proto\"\
|
|
19
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17qwak/builds/build.proto\x12\x18qwak.builds.orchestrator\x1a/qwak/user_application/common/v0/resources.proto\x1a\"qwak/fitness_service/fitness.proto\x1a\x1eqwak/builds/build_values.proto\"\xd9\x06\n\x0fRemoteBuildSpec\x12\x43\n\x10\x62uild_properties\x18\x01 \x01(\x0b\x32).qwak.builds.orchestrator.BuildProperties\x12\x35\n\tbuild_env\x18\x02 \x01(\x0b\x32\".qwak.builds.orchestrator.BuildEnv\x12\x43\n\rcpu_resources\x18\x03 \x01(\x0b\x32&.qwak.builds.orchestrator.CpuResourcesB\x02\x18\x01H\x00\x12\x43\n\rgpu_resources\x18\x07 \x01(\x0b\x32&.qwak.builds.orchestrator.GpuResourcesB\x02\x18\x01H\x00\x12\x62\n\x1c\x63lient_pod_compute_resources\x18\r \x01(\x0b\x32:.qwak.user_application.common.v0.ClientPodComputeResourcesH\x00\x12\x0f\n\x07verbose\x18\x04 \x01(\x05\x12\x17\n\x0f\x62uild_code_path\x18\x05 \x01(\t\x12\x14\n\x0c\x62uild_config\x18\x06 \x01(\t\x12\x15\n\rbuild_v1_flag\x18\x08 \x01(\x08\x12H\n\x13\x62uild_properties_v1\x18\t \x01(\x0b\x32+.qwak.builds.orchestrator.BuildPropertiesV1\x12\x13\n\x0b\x62uild_steps\x18\n \x03(\t\x12\x16\n\x0e\x65nvironment_id\x18\x0b \x01(\t\x12\x13\n\x0bsdk_version\x18\x0c \x01(\t\x12=\n\x0fpurchase_option\x18\x0e \x01(\x0e\x32$.qwak.fitness.service.PurchaseOption\x12\x1c\n\x14\x62uild_destined_image\x18\x0f \x01(\t\x12\"\n\x1aprovision_instance_timeout\x18\x10 \x01(\x05\x12\x16\n\x0ejfrog_token_id\x18\x11 \x01(\t\x12\x1f\n\x17\x61rtifactory_project_key\x18\x12 \x01(\t\x12\x18\n\x10model_version_id\x18\x13 \x01(\t\x12\x18\n\x10model_group_name\x18\x14 \x01(\tB\x0b\n\tResources\"g\n\x11\x42uildPropertiesV1\x12\x18\n\x10\x62uild_config_url\x18\x01 \x01(\t\x12\x1a\n\x12qwak_sdk_wheel_url\x18\x02 \x01(\t\x12\x1c\n\x14qwak_sdk_version_url\x18\x03 \x01(\t\"\xba\x01\n\x0f\x42uildProperties\x12\x10\n\x08\x62uild_id\x18\x01 \x01(\t\x12\x0e\n\x06\x62ranch\x18\x02 \x01(\t\x12\x10\n\x08model_id\x18\x03 \x01(\t\x12\x0c\n\x04tags\x18\x04 \x03(\t\x12\x39\n\tmodel_uri\x18\x05 \x01(\x0b\x32&.qwak.builds.orchestrator.ModelUriSpec\x12\x16\n\x0egpu_compatible\x18\x06 \x01(\x08\x12\x12\n\nbuild_name\x18\x07 \x01(\t\"\xb2\x01\n\x0cModelUriSpec\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x12\n\ngit_branch\x18\x02 \x01(\t\x12\x17\n\x0fgit_credentials\x18\x03 \x01(\t\x12\x1e\n\x16git_credentials_secret\x18\x04 \x01(\t\x12\x11\n\tcommit_id\x18\x05 \x01(\t\x12\x10\n\x08main_dir\x18\x06 \x01(\t\x12#\n\x1b\x64\x65pendency_required_folders\x18\x07 \x03(\t\"|\n\x08\x42uildEnv\x12\x37\n\ndocker_env\x18\x01 \x01(\x0b\x32#.qwak.builds.orchestrator.DockerEnv\x12\x37\n\npython_env\x18\x02 \x01(\x0b\x32#.qwak.builds.orchestrator.PythonEnv\"\xcc\x01\n\tDockerEnv\x12\x12\n\nbase_image\x18\x01 \x01(\t\x12\x10\n\x08\x65nv_vars\x18\x02 \x03(\t\x12\x10\n\x08no_cache\x18\x03 \x01(\x08\x12\x1c\n\x14\x61ssumed_iam_role_arn\x18\x04 \x01(\t\x12\'\n\x1fservice_account_key_secret_name\x18\x05 \x01(\t\x12@\n\x10\x63ontainer_engine\x18\x06 \x01(\x0b\x32&.qwak.build.management.ContainerEngine\"\xb8\x01\n\tPythonEnv\x12\x17\n\x0fgit_credentials\x18\x01 \x01(\t\x12\x1e\n\x16git_credentials_secret\x18\x02 \x01(\t\x12\x18\n\x10qwak_sdk_version\x18\x03 \x01(\t\x12\x1c\n\x14qwak_sdk_extra_index\x18\x04 \x01(\t\x12\x1a\n\x12\x66rogml_cli_version\x18\x05 \x01(\t\x12\x1e\n\x16\x66rogml_cli_extra_index\x18\x06 \x01(\t\"n\n\x0c\x43puResources\x12\x0b\n\x03\x63pu\x18\x01 \x01(\x02\x12\x15\n\rmemory_amount\x18\x02 \x01(\x05\x12:\n\x0cmemory_units\x18\x03 \x01(\x0e\x32$.qwak.builds.orchestrator.MemoryUnit\"W\n\x0cGpuResources\x12\x33\n\x08gpu_type\x18\x01 \x01(\x0e\x32!.qwak.builds.orchestrator.GpuType\x12\x12\n\ngpu_amount\x18\x02 \x01(\x05\"\x91\x01\n\x13\x44\x61taTableDefinition\x12?\n\x07\x63olumns\x18\x01 \x03(\x0b\x32..qwak.builds.orchestrator.DataColumnDefinition\x12\x39\n\x0b\x64\x61ta_format\x18\x02 \x01(\x0b\x32$.qwak.builds.orchestrator.DataFormat\"\\\n\x14\x44\x61taColumnDefinition\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x36\n\x04type\x18\x02 \x01(\x0e\x32(.qwak.builds.orchestrator.DataColumnType\"J\n\nDataFormat\x12\x32\n\x03\x63sv\x18\x01 \x01(\x0b\x32#.qwak.builds.orchestrator.CsvFormatH\x00\x42\x08\n\x06\x66ormat\"G\n\tCsvFormat\x12\x11\n\tdelimiter\x18\x01 \x01(\t\x12\x12\n\nquote_char\x18\x02 \x01(\t\x12\x13\n\x0b\x65scape_char\x18\x03 \x01(\t\"\xa5\x01\n\x0e\x42uildInitiator\x12<\n\x04user\x18\x01 \x01(\x0b\x32,.qwak.builds.orchestrator.UserBuildInitiatorH\x00\x12H\n\nautomation\x18\x02 \x01(\x0b\x32\x32.qwak.builds.orchestrator.AutomationBuildInitiatorH\x00\x42\x0b\n\tInitiator\"\x14\n\x12UserBuildInitiator\"`\n\x18\x41utomationBuildInitiator\x12\x15\n\rautomation_id\x18\x01 \x01(\t\x12\x14\n\x0c\x65xecution_id\x18\x02 \x01(\t\x12\x17\n\x0f\x61utomation_name\x18\x03 \x01(\t*7\n\nMemoryUnit\x12\x17\n\x13UNKNOWN_MEMORY_UNIT\x10\x00\x12\x07\n\x03MIB\x10\x01\x12\x07\n\x03GIB\x10\x02*\x82\x03\n\x07GpuType\x12\x0b\n\x07INVALID\x10\x00\x12\x0e\n\nNVIDIA_K80\x10\x01\x12\x0f\n\x0bNVIDIA_V100\x10\x02\x12\x0f\n\x0bNVIDIA_A100\x10\x03\x12\r\n\tNVIDIA_T4\x10\x04\x12\x0f\n\x0bNVIDIA_A10G\x10\x05\x12\r\n\tNVIDIA_L4\x10\x06\x12\x14\n\x10NVIDIA_T4_1_4_15\x10\x07\x12\x14\n\x10NVIDIA_T4_1_8_30\x10\x08\x12\x15\n\x11NVIDIA_T4_1_16_60\x10\t\x12\x1e\n\x1aNVIDIA_A100_80GB_8_96_1360\x10\n\x12\x16\n\x12NVIDIA_V100_1_8_52\x10\x0b\x12\x18\n\x14NVIDIA_V100_4_32_208\x10\x0c\x12\x13\n\x0fNVIDIA_H100_NVL\x10\r\x12\x0e\n\nNVIDIA_A10\x10\x0e\x12\x13\n\x0fNVIDIA_H100_SXM\x10\x0f\x12\x14\n\x10NVIDIA_H100_40GB\x10\x10\x12\x14\n\x10NVIDIA_H100_80GB\x10\x11\x12\x0e\n\nNVIDIA_M60\x10\x12*d\n\x0e\x44\x61taColumnType\x12\x17\n\x13INVALID_COLUMN_TYPE\x10\x00\x12\n\n\x06OBJECT\x10\x01\x12\x07\n\x03INT\x10\x02\x12\t\n\x05\x46LOAT\x10\x03\x12\x0b\n\x07\x42OOLEAN\x10\x04\x12\x0c\n\x08\x44\x41TETIME\x10\x05*K\n\x13\x42\x61seDockerImageType\x12\"\n\x1eUNKNOWN_BASE_DOCKER_IMAGE_TYPE\x10\x00\x12\x07\n\x03\x43PU\x10\x01\x12\x07\n\x03GPU\x10\x02\x42\'\n#com.qwak.ai.builds.orchestrator.apiP\x01\x62\x06proto3')
|
|
20
20
|
|
|
21
21
|
_globals = globals()
|
|
22
22
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -29,44 +29,44 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
|
29
29
|
_REMOTEBUILDSPEC.fields_by_name['cpu_resources']._serialized_options = b'\030\001'
|
|
30
30
|
_REMOTEBUILDSPEC.fields_by_name['gpu_resources']._options = None
|
|
31
31
|
_REMOTEBUILDSPEC.fields_by_name['gpu_resources']._serialized_options = b'\030\001'
|
|
32
|
-
_globals['_MEMORYUNIT']._serialized_start=
|
|
33
|
-
_globals['_MEMORYUNIT']._serialized_end=
|
|
34
|
-
_globals['_GPUTYPE']._serialized_start=
|
|
35
|
-
_globals['_GPUTYPE']._serialized_end=
|
|
36
|
-
_globals['_DATACOLUMNTYPE']._serialized_start=
|
|
37
|
-
_globals['_DATACOLUMNTYPE']._serialized_end=
|
|
38
|
-
_globals['_BASEDOCKERIMAGETYPE']._serialized_start=
|
|
39
|
-
_globals['_BASEDOCKERIMAGETYPE']._serialized_end=
|
|
32
|
+
_globals['_MEMORYUNIT']._serialized_start=2905
|
|
33
|
+
_globals['_MEMORYUNIT']._serialized_end=2960
|
|
34
|
+
_globals['_GPUTYPE']._serialized_start=2963
|
|
35
|
+
_globals['_GPUTYPE']._serialized_end=3349
|
|
36
|
+
_globals['_DATACOLUMNTYPE']._serialized_start=3351
|
|
37
|
+
_globals['_DATACOLUMNTYPE']._serialized_end=3451
|
|
38
|
+
_globals['_BASEDOCKERIMAGETYPE']._serialized_start=3453
|
|
39
|
+
_globals['_BASEDOCKERIMAGETYPE']._serialized_end=3528
|
|
40
40
|
_globals['_REMOTEBUILDSPEC']._serialized_start=171
|
|
41
|
-
_globals['_REMOTEBUILDSPEC']._serialized_end=
|
|
42
|
-
_globals['_BUILDPROPERTIESV1']._serialized_start=
|
|
43
|
-
_globals['_BUILDPROPERTIESV1']._serialized_end=
|
|
44
|
-
_globals['_BUILDPROPERTIES']._serialized_start=
|
|
45
|
-
_globals['_BUILDPROPERTIES']._serialized_end=
|
|
46
|
-
_globals['_MODELURISPEC']._serialized_start=
|
|
47
|
-
_globals['_MODELURISPEC']._serialized_end=
|
|
48
|
-
_globals['_BUILDENV']._serialized_start=
|
|
49
|
-
_globals['_BUILDENV']._serialized_end=
|
|
50
|
-
_globals['_DOCKERENV']._serialized_start=
|
|
51
|
-
_globals['_DOCKERENV']._serialized_end=
|
|
52
|
-
_globals['_PYTHONENV']._serialized_start=
|
|
53
|
-
_globals['_PYTHONENV']._serialized_end=
|
|
54
|
-
_globals['_CPURESOURCES']._serialized_start=
|
|
55
|
-
_globals['_CPURESOURCES']._serialized_end=
|
|
56
|
-
_globals['_GPURESOURCES']._serialized_start=
|
|
57
|
-
_globals['_GPURESOURCES']._serialized_end=
|
|
58
|
-
_globals['_DATATABLEDEFINITION']._serialized_start=
|
|
59
|
-
_globals['_DATATABLEDEFINITION']._serialized_end=
|
|
60
|
-
_globals['_DATACOLUMNDEFINITION']._serialized_start=
|
|
61
|
-
_globals['_DATACOLUMNDEFINITION']._serialized_end=
|
|
62
|
-
_globals['_DATAFORMAT']._serialized_start=
|
|
63
|
-
_globals['_DATAFORMAT']._serialized_end=
|
|
64
|
-
_globals['_CSVFORMAT']._serialized_start=
|
|
65
|
-
_globals['_CSVFORMAT']._serialized_end=
|
|
66
|
-
_globals['_BUILDINITIATOR']._serialized_start=
|
|
67
|
-
_globals['_BUILDINITIATOR']._serialized_end=
|
|
68
|
-
_globals['_USERBUILDINITIATOR']._serialized_start=
|
|
69
|
-
_globals['_USERBUILDINITIATOR']._serialized_end=
|
|
70
|
-
_globals['_AUTOMATIONBUILDINITIATOR']._serialized_start=
|
|
71
|
-
_globals['_AUTOMATIONBUILDINITIATOR']._serialized_end=
|
|
41
|
+
_globals['_REMOTEBUILDSPEC']._serialized_end=1028
|
|
42
|
+
_globals['_BUILDPROPERTIESV1']._serialized_start=1030
|
|
43
|
+
_globals['_BUILDPROPERTIESV1']._serialized_end=1133
|
|
44
|
+
_globals['_BUILDPROPERTIES']._serialized_start=1136
|
|
45
|
+
_globals['_BUILDPROPERTIES']._serialized_end=1322
|
|
46
|
+
_globals['_MODELURISPEC']._serialized_start=1325
|
|
47
|
+
_globals['_MODELURISPEC']._serialized_end=1503
|
|
48
|
+
_globals['_BUILDENV']._serialized_start=1505
|
|
49
|
+
_globals['_BUILDENV']._serialized_end=1629
|
|
50
|
+
_globals['_DOCKERENV']._serialized_start=1632
|
|
51
|
+
_globals['_DOCKERENV']._serialized_end=1836
|
|
52
|
+
_globals['_PYTHONENV']._serialized_start=1839
|
|
53
|
+
_globals['_PYTHONENV']._serialized_end=2023
|
|
54
|
+
_globals['_CPURESOURCES']._serialized_start=2025
|
|
55
|
+
_globals['_CPURESOURCES']._serialized_end=2135
|
|
56
|
+
_globals['_GPURESOURCES']._serialized_start=2137
|
|
57
|
+
_globals['_GPURESOURCES']._serialized_end=2224
|
|
58
|
+
_globals['_DATATABLEDEFINITION']._serialized_start=2227
|
|
59
|
+
_globals['_DATATABLEDEFINITION']._serialized_end=2372
|
|
60
|
+
_globals['_DATACOLUMNDEFINITION']._serialized_start=2374
|
|
61
|
+
_globals['_DATACOLUMNDEFINITION']._serialized_end=2466
|
|
62
|
+
_globals['_DATAFORMAT']._serialized_start=2468
|
|
63
|
+
_globals['_DATAFORMAT']._serialized_end=2542
|
|
64
|
+
_globals['_CSVFORMAT']._serialized_start=2544
|
|
65
|
+
_globals['_CSVFORMAT']._serialized_end=2615
|
|
66
|
+
_globals['_BUILDINITIATOR']._serialized_start=2618
|
|
67
|
+
_globals['_BUILDINITIATOR']._serialized_end=2783
|
|
68
|
+
_globals['_USERBUILDINITIATOR']._serialized_start=2785
|
|
69
|
+
_globals['_USERBUILDINITIATOR']._serialized_end=2805
|
|
70
|
+
_globals['_AUTOMATIONBUILDINITIATOR']._serialized_start=2807
|
|
71
|
+
_globals['_AUTOMATIONBUILDINITIATOR']._serialized_end=2903
|
|
72
72
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -178,6 +178,7 @@ class RemoteBuildSpec(google.protobuf.message.Message):
|
|
|
178
178
|
JFROG_TOKEN_ID_FIELD_NUMBER: builtins.int
|
|
179
179
|
ARTIFACTORY_PROJECT_KEY_FIELD_NUMBER: builtins.int
|
|
180
180
|
MODEL_VERSION_ID_FIELD_NUMBER: builtins.int
|
|
181
|
+
MODEL_GROUP_NAME_FIELD_NUMBER: builtins.int
|
|
181
182
|
@property
|
|
182
183
|
def build_properties(self) -> global___BuildProperties: ...
|
|
183
184
|
@property
|
|
@@ -220,6 +221,10 @@ class RemoteBuildSpec(google.protobuf.message.Message):
|
|
|
220
221
|
"""Artifactory project key"""
|
|
221
222
|
model_version_id: builtins.str
|
|
222
223
|
"""Optional - The model version's id used for the build"""
|
|
224
|
+
model_group_name: builtins.str
|
|
225
|
+
"""Human readable model group identifier (e.g., "my-model-group").
|
|
226
|
+
This is the display name, not the UUID.
|
|
227
|
+
"""
|
|
223
228
|
def __init__(
|
|
224
229
|
self,
|
|
225
230
|
*,
|
|
@@ -242,9 +247,10 @@ class RemoteBuildSpec(google.protobuf.message.Message):
|
|
|
242
247
|
jfrog_token_id: builtins.str = ...,
|
|
243
248
|
artifactory_project_key: builtins.str = ...,
|
|
244
249
|
model_version_id: builtins.str = ...,
|
|
250
|
+
model_group_name: builtins.str = ...,
|
|
245
251
|
) -> None: ...
|
|
246
252
|
def HasField(self, field_name: typing_extensions.Literal["Resources", b"Resources", "build_env", b"build_env", "build_properties", b"build_properties", "build_properties_v1", b"build_properties_v1", "client_pod_compute_resources", b"client_pod_compute_resources", "cpu_resources", b"cpu_resources", "gpu_resources", b"gpu_resources"]) -> builtins.bool: ...
|
|
247
|
-
def ClearField(self, field_name: typing_extensions.Literal["Resources", b"Resources", "artifactory_project_key", b"artifactory_project_key", "build_code_path", b"build_code_path", "build_config", b"build_config", "build_destined_image", b"build_destined_image", "build_env", b"build_env", "build_properties", b"build_properties", "build_properties_v1", b"build_properties_v1", "build_steps", b"build_steps", "build_v1_flag", b"build_v1_flag", "client_pod_compute_resources", b"client_pod_compute_resources", "cpu_resources", b"cpu_resources", "environment_id", b"environment_id", "gpu_resources", b"gpu_resources", "jfrog_token_id", b"jfrog_token_id", "model_version_id", b"model_version_id", "provision_instance_timeout", b"provision_instance_timeout", "purchase_option", b"purchase_option", "sdk_version", b"sdk_version", "verbose", b"verbose"]) -> None: ...
|
|
253
|
+
def ClearField(self, field_name: typing_extensions.Literal["Resources", b"Resources", "artifactory_project_key", b"artifactory_project_key", "build_code_path", b"build_code_path", "build_config", b"build_config", "build_destined_image", b"build_destined_image", "build_env", b"build_env", "build_properties", b"build_properties", "build_properties_v1", b"build_properties_v1", "build_steps", b"build_steps", "build_v1_flag", b"build_v1_flag", "client_pod_compute_resources", b"client_pod_compute_resources", "cpu_resources", b"cpu_resources", "environment_id", b"environment_id", "gpu_resources", b"gpu_resources", "jfrog_token_id", b"jfrog_token_id", "model_group_name", b"model_group_name", "model_version_id", b"model_version_id", "provision_instance_timeout", b"provision_instance_timeout", "purchase_option", b"purchase_option", "sdk_version", b"sdk_version", "verbose", b"verbose"]) -> None: ...
|
|
248
254
|
def WhichOneof(self, oneof_group: typing_extensions.Literal["Resources", b"Resources"]) -> typing_extensions.Literal["cpu_resources", "gpu_resources", "client_pod_compute_resources"] | None: ...
|
|
249
255
|
|
|
250
256
|
global___RemoteBuildSpec = RemoteBuildSpec
|
|
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
|
|
|
14
14
|
from _qwak_proto.qwak.user_application.common.v0 import resources_pb2 as qwak_dot_user__application_dot_common_dot_v0_dot_resources__pb2
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1eqwak/builds/build_values.proto\x12\x15qwak.build.management\x1a/qwak/user_application/common/v0/resources.proto\"\xc3\x03\n\x10ModelBuildValues\x12\x34\n\nbuild_info\x18\x01 \x01(\x0b\x32 .qwak.build.management.BuildInfo\x12<\n\x0emodel_metadata\x18\x02 \x01(\x0b\x32$.qwak.build.management.ModelMetadata\x12\x45\n\x13model_code_location\x18\x03 \x01(\x0b\x32(.qwak.build.management.ModelCodeLocation\x12G\n\x14\x62uild_execution_spec\x18\x04 \x01(\x0b\x32).qwak.build.management.BuildExecutionSpec\x12\x30\n\x08sdk_spec\x18\x05 \x01(\x0b\x32\x1e.qwak.build.management.SdkSpec\x12G\n\x14jfrog_ecosystem_spec\x18\x06 \x01(\x0b\x32).qwak.build.management.JfrogEcosystemSpec\x12\x30\n\x08job_spec\x18\x07 \x01(\x0b\x32\x1e.qwak.build.management.JobSpec\"\xa3\x01\n\tBuildInfo\x12\x10\n\x08\x62uild_id\x18\x01 \x01(\t\x12\x13\n\x0b\x62ranch_name\x18\x02 \x01(\t\x12\x12\n\nbuild_tags\x18\x03 \x03(\t\x12\x14\n\x0c\x62uild_config\x18\x04 \x01(\t\x12\x45\n\x13\x62uild_properties_v1\x18\x05 \x01(\x0b\x32(.qwak.build.management.BuildPropertiesV1\"]\n\x11\x42uildPropertiesV1\x12\x18\n\x10\x62uild_config_url\x18\x01 \x01(\t\x12\x15\n\rsdk_wheel_url\x18\x02 \x01(\t\x12\x17\n\x0fsdk_version_url\x18\x03 \x01(\t\"\
|
|
17
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1eqwak/builds/build_values.proto\x12\x15qwak.build.management\x1a/qwak/user_application/common/v0/resources.proto\"\xc3\x03\n\x10ModelBuildValues\x12\x34\n\nbuild_info\x18\x01 \x01(\x0b\x32 .qwak.build.management.BuildInfo\x12<\n\x0emodel_metadata\x18\x02 \x01(\x0b\x32$.qwak.build.management.ModelMetadata\x12\x45\n\x13model_code_location\x18\x03 \x01(\x0b\x32(.qwak.build.management.ModelCodeLocation\x12G\n\x14\x62uild_execution_spec\x18\x04 \x01(\x0b\x32).qwak.build.management.BuildExecutionSpec\x12\x30\n\x08sdk_spec\x18\x05 \x01(\x0b\x32\x1e.qwak.build.management.SdkSpec\x12G\n\x14jfrog_ecosystem_spec\x18\x06 \x01(\x0b\x32).qwak.build.management.JfrogEcosystemSpec\x12\x30\n\x08job_spec\x18\x07 \x01(\x0b\x32\x1e.qwak.build.management.JobSpec\"\xa3\x01\n\tBuildInfo\x12\x10\n\x08\x62uild_id\x18\x01 \x01(\t\x12\x13\n\x0b\x62ranch_name\x18\x02 \x01(\t\x12\x12\n\nbuild_tags\x18\x03 \x03(\t\x12\x14\n\x0c\x62uild_config\x18\x04 \x01(\t\x12\x45\n\x13\x62uild_properties_v1\x18\x05 \x01(\x0b\x32(.qwak.build.management.BuildPropertiesV1\"]\n\x11\x42uildPropertiesV1\x12\x18\n\x10\x62uild_config_url\x18\x01 \x01(\t\x12\x15\n\rsdk_wheel_url\x18\x02 \x01(\t\x12\x17\n\x0fsdk_version_url\x18\x03 \x01(\t\"\xa8\x01\n\rModelMetadata\x12\x10\n\x08model_id\x18\x01 \x01(\t\x12\x12\n\naccount_id\x18\x02 \x01(\t\x12\x0f\n\x07user_id\x18\x03 \x01(\t\x12\x46\n\x13\x61rtifactory_details\x18\x04 \x01(\x0b\x32).qwak.build.management.ArtifactoryDetails\x12\x18\n\x10model_group_name\x18\x05 \x01(\t\")\n\x12\x41rtifactoryDetails\x12\x13\n\x0bproject_key\x18\x01 \x01(\t\"\xa0\x01\n\x11ModelCodeLocation\x12\x1c\n\x14main_model_directory\x18\x01 \x01(\t\x12\x34\n\tlocal_uri\x18\x02 \x01(\x0b\x32\x1f.qwak.build.management.LocalUriH\x00\x12\x30\n\x07git_uri\x18\x03 \x01(\x0b\x32\x1d.qwak.build.management.GitUriH\x00\x42\x05\n\x03uri\"\x18\n\x08LocalUri\x12\x0c\n\x04path\x18\x01 \x01(\t\"M\n\x06GitUri\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x36\n\x0bgit_details\x18\x02 \x01(\x0b\x32!.qwak.build.management.GitDetails\"|\n\nGitDetails\x12\x0e\n\x06\x62ranch\x18\x01 \x01(\t\x12\x11\n\tcommit_id\x18\x02 \x01(\t\x12\x15\n\x0b\x63redentials\x18\x03 \x01(\tH\x00\x12!\n\x17\x63redentials_secret_name\x18\x04 \x01(\tH\x00\x42\x11\n\x0fgit_credentials\"\xd0\x02\n\x12\x42uildExecutionSpec\x12\x1f\n\x17\x62uild_image_destination\x18\x01 \x01(\t\x12\"\n\x1ashould_build_without_cache\x18\x02 \x01(\x08\x12G\n\x14logs_verbosity_level\x18\x03 \x01(\x0e\x32).qwak.build.management.LogsVerbosityLevel\x12\x12\n\nbase_image\x18\x04 \x01(\t\x12\x1b\n\x13\x63ustom_iam_role_arn\x18\x05 \x01(\t\x12\x10\n\x08\x65nv_vars\x18\x06 \x03(\t\x12\'\n\x1fremote_builder_auth_secret_name\x18\x07 \x01(\t\x12@\n\x10\x63ontainer_engine\x18\x08 \x01(\x0b\x32&.qwak.build.management.ContainerEngine\"a\n\x07SdkSpec\x12\x13\n\x0bsdk_version\x18\x01 \x01(\t\x12\x1b\n\x13sdk_extra_index_url\x18\x02 \x01(\t\x12$\n\x1csdk_runtime_version_override\x18\x03 \x01(\t\"k\n\x12JfrogEcosystemSpec\x12\x0f\n\x07\x62\x61seUrl\x18\x01 \x01(\t\x12\x1d\n\x15\x61\x63\x63\x65ssTokenSecretName\x18\x02 \x01(\t\x12%\n\x1d\x61rtifactorySettingsSecretName\x18\x03 \x01(\t\"\xb5\x04\n\x07JobSpec\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\"\n\x1aprovision_instance_timeout\x18\x02 \x01(\x05\x12>\n\x0fpurchase_option\x18\x03 \x01(\x0e\x32%.qwak.build.management.PurchaseOption\x12$\n\x1cis_node_optimization_enabled\x18\x04 \x01(\x08\x12\"\n\x1ashould_use_build_isolation\x18\x05 \x01(\x08\x12#\n\x1bis_multi_tenant_environment\x18\x06 \x01(\x08\x12\x1a\n\x12is_self_hosted_jpd\x18\n \x01(\x08\x12 \n\x18\x62uild_executor_image_url\x18\x07 \x01(\t\x12<\n\x0e\x63loud_provider\x18\x08 \x01(\x0e\x32$.qwak.build.management.CloudProvider\x12\x30\n\x08job_size\x18\t \x01(\x0b\x32\x1e.qwak.build.management.JobSize\x12Y\n\x17\x62uild_executor_env_vars\x18\x0b \x03(\x0b\x32\x38.qwak.build.management.JobSpec.BuildExecutorEnvVarsEntry\x1a;\n\x19\x42uildExecutorEnvVarsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x9e\x02\n\x07JobSize\x12\x0f\n\x03\x63pu\x18\x01 \x01(\x02\x42\x02\x18\x01\x12\x19\n\rmemory_amount\x18\x02 \x01(\x05\x42\x02\x18\x01\x12;\n\x0cmemory_units\x18\x03 \x01(\x0e\x32!.qwak.build.management.MemoryUnitB\x02\x18\x01\x12H\n\rgpu_resources\x18\x04 \x01(\x0b\x32-.qwak.user_application.common.v0.GpuResourcesB\x02\x18\x01\x12`\n\x1c\x63lient_pod_compute_resources\x18\x05 \x01(\x0b\x32:.qwak.user_application.common.v0.ClientPodComputeResources\"\x9d\x01\n\x0f\x43ontainerEngine\x12>\n\x06\x64ocker\x18\x01 \x01(\x0b\x32,.qwak.build.management.DockerContainerEngineH\x00\x12\x42\n\x06podman\x18\x02 \x01(\x0b\x32,.qwak.build.management.PodmanContainerEngineB\x02\x18\x01H\x00\x42\x06\n\x04type\"\x17\n\x15\x44ockerContainerEngine\"\x17\n\x15PodmanContainerEngine*e\n\x0ePurchaseOption\x12\x1b\n\x17INVALID_PURCHASE_OPTION\x10\x00\x12\x18\n\x14SPOT_PURCHASE_OPTION\x10\x01\x12\x1c\n\x18ONDEMAND_PURCHASE_OPTION\x10\x02*H\n\rCloudProvider\x12\x1a\n\x16INVALID_CLOUD_PROVIDER\x10\x00\x12\x07\n\x03\x41WS\x10\x01\x12\x07\n\x03GCP\x10\x02\x12\t\n\x05\x41ZURE\x10\x03*7\n\nMemoryUnit\x12\x17\n\x13INVALID_MEMORY_UNIT\x10\x00\x12\x07\n\x03MIB\x10\x01\x12\x07\n\x03GIB\x10\x02*S\n\x12LogsVerbosityLevel\x12\x1a\n\x16INVALID_LOGS_VERBOSITY\x10\x00\x12\t\n\x05\x44\x45\x42UG\x10\n\x12\x08\n\x04INFO\x10\x14\x12\x0c\n\x08\x43RITICAL\x10\x32\x42\x36\n com.qwak.ai.management.build.apiP\x01Z\x10qwak/build;buildb\x06proto3')
|
|
18
18
|
|
|
19
19
|
_globals = globals()
|
|
20
20
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -35,14 +35,14 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
|
35
35
|
_JOBSIZE.fields_by_name['gpu_resources']._serialized_options = b'\030\001'
|
|
36
36
|
_CONTAINERENGINE.fields_by_name['podman']._options = None
|
|
37
37
|
_CONTAINERENGINE.fields_by_name['podman']._serialized_options = b'\030\001'
|
|
38
|
-
_globals['_PURCHASEOPTION']._serialized_start=
|
|
39
|
-
_globals['_PURCHASEOPTION']._serialized_end=
|
|
40
|
-
_globals['_CLOUDPROVIDER']._serialized_start=
|
|
41
|
-
_globals['_CLOUDPROVIDER']._serialized_end=
|
|
42
|
-
_globals['_MEMORYUNIT']._serialized_start=
|
|
43
|
-
_globals['_MEMORYUNIT']._serialized_end=
|
|
44
|
-
_globals['_LOGSVERBOSITYLEVEL']._serialized_start=
|
|
45
|
-
_globals['_LOGSVERBOSITYLEVEL']._serialized_end=
|
|
38
|
+
_globals['_PURCHASEOPTION']._serialized_start=3043
|
|
39
|
+
_globals['_PURCHASEOPTION']._serialized_end=3144
|
|
40
|
+
_globals['_CLOUDPROVIDER']._serialized_start=3146
|
|
41
|
+
_globals['_CLOUDPROVIDER']._serialized_end=3218
|
|
42
|
+
_globals['_MEMORYUNIT']._serialized_start=3220
|
|
43
|
+
_globals['_MEMORYUNIT']._serialized_end=3275
|
|
44
|
+
_globals['_LOGSVERBOSITYLEVEL']._serialized_start=3277
|
|
45
|
+
_globals['_LOGSVERBOSITYLEVEL']._serialized_end=3360
|
|
46
46
|
_globals['_MODELBUILDVALUES']._serialized_start=107
|
|
47
47
|
_globals['_MODELBUILDVALUES']._serialized_end=558
|
|
48
48
|
_globals['_BUILDINFO']._serialized_start=561
|
|
@@ -50,33 +50,33 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
|
50
50
|
_globals['_BUILDPROPERTIESV1']._serialized_start=726
|
|
51
51
|
_globals['_BUILDPROPERTIESV1']._serialized_end=819
|
|
52
52
|
_globals['_MODELMETADATA']._serialized_start=822
|
|
53
|
-
_globals['_MODELMETADATA']._serialized_end=
|
|
54
|
-
_globals['_ARTIFACTORYDETAILS']._serialized_start=
|
|
55
|
-
_globals['_ARTIFACTORYDETAILS']._serialized_end=
|
|
56
|
-
_globals['_MODELCODELOCATION']._serialized_start=
|
|
57
|
-
_globals['_MODELCODELOCATION']._serialized_end=
|
|
58
|
-
_globals['_LOCALURI']._serialized_start=
|
|
59
|
-
_globals['_LOCALURI']._serialized_end=
|
|
60
|
-
_globals['_GITURI']._serialized_start=
|
|
61
|
-
_globals['_GITURI']._serialized_end=
|
|
62
|
-
_globals['_GITDETAILS']._serialized_start=
|
|
63
|
-
_globals['_GITDETAILS']._serialized_end=
|
|
64
|
-
_globals['_BUILDEXECUTIONSPEC']._serialized_start=
|
|
65
|
-
_globals['_BUILDEXECUTIONSPEC']._serialized_end=
|
|
66
|
-
_globals['_SDKSPEC']._serialized_start=
|
|
67
|
-
_globals['_SDKSPEC']._serialized_end=
|
|
68
|
-
_globals['_JFROGECOSYSTEMSPEC']._serialized_start=
|
|
69
|
-
_globals['_JFROGECOSYSTEMSPEC']._serialized_end=
|
|
70
|
-
_globals['_JOBSPEC']._serialized_start=
|
|
71
|
-
_globals['_JOBSPEC']._serialized_end=
|
|
72
|
-
_globals['_JOBSPEC_BUILDEXECUTORENVVARSENTRY']._serialized_start=
|
|
73
|
-
_globals['_JOBSPEC_BUILDEXECUTORENVVARSENTRY']._serialized_end=
|
|
74
|
-
_globals['_JOBSIZE']._serialized_start=
|
|
75
|
-
_globals['_JOBSIZE']._serialized_end=
|
|
76
|
-
_globals['_CONTAINERENGINE']._serialized_start=
|
|
77
|
-
_globals['_CONTAINERENGINE']._serialized_end=
|
|
78
|
-
_globals['_DOCKERCONTAINERENGINE']._serialized_start=
|
|
79
|
-
_globals['_DOCKERCONTAINERENGINE']._serialized_end=
|
|
80
|
-
_globals['_PODMANCONTAINERENGINE']._serialized_start=
|
|
81
|
-
_globals['_PODMANCONTAINERENGINE']._serialized_end=
|
|
53
|
+
_globals['_MODELMETADATA']._serialized_end=990
|
|
54
|
+
_globals['_ARTIFACTORYDETAILS']._serialized_start=992
|
|
55
|
+
_globals['_ARTIFACTORYDETAILS']._serialized_end=1033
|
|
56
|
+
_globals['_MODELCODELOCATION']._serialized_start=1036
|
|
57
|
+
_globals['_MODELCODELOCATION']._serialized_end=1196
|
|
58
|
+
_globals['_LOCALURI']._serialized_start=1198
|
|
59
|
+
_globals['_LOCALURI']._serialized_end=1222
|
|
60
|
+
_globals['_GITURI']._serialized_start=1224
|
|
61
|
+
_globals['_GITURI']._serialized_end=1301
|
|
62
|
+
_globals['_GITDETAILS']._serialized_start=1303
|
|
63
|
+
_globals['_GITDETAILS']._serialized_end=1427
|
|
64
|
+
_globals['_BUILDEXECUTIONSPEC']._serialized_start=1430
|
|
65
|
+
_globals['_BUILDEXECUTIONSPEC']._serialized_end=1766
|
|
66
|
+
_globals['_SDKSPEC']._serialized_start=1768
|
|
67
|
+
_globals['_SDKSPEC']._serialized_end=1865
|
|
68
|
+
_globals['_JFROGECOSYSTEMSPEC']._serialized_start=1867
|
|
69
|
+
_globals['_JFROGECOSYSTEMSPEC']._serialized_end=1974
|
|
70
|
+
_globals['_JOBSPEC']._serialized_start=1977
|
|
71
|
+
_globals['_JOBSPEC']._serialized_end=2542
|
|
72
|
+
_globals['_JOBSPEC_BUILDEXECUTORENVVARSENTRY']._serialized_start=2483
|
|
73
|
+
_globals['_JOBSPEC_BUILDEXECUTORENVVARSENTRY']._serialized_end=2542
|
|
74
|
+
_globals['_JOBSIZE']._serialized_start=2545
|
|
75
|
+
_globals['_JOBSIZE']._serialized_end=2831
|
|
76
|
+
_globals['_CONTAINERENGINE']._serialized_start=2834
|
|
77
|
+
_globals['_CONTAINERENGINE']._serialized_end=2991
|
|
78
|
+
_globals['_DOCKERCONTAINERENGINE']._serialized_start=2993
|
|
79
|
+
_globals['_DOCKERCONTAINERENGINE']._serialized_end=3016
|
|
80
|
+
_globals['_PODMANCONTAINERENGINE']._serialized_start=3018
|
|
81
|
+
_globals['_PODMANCONTAINERENGINE']._serialized_end=3041
|
|
82
82
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -205,11 +205,16 @@ class ModelMetadata(google.protobuf.message.Message):
|
|
|
205
205
|
ACCOUNT_ID_FIELD_NUMBER: builtins.int
|
|
206
206
|
USER_ID_FIELD_NUMBER: builtins.int
|
|
207
207
|
ARTIFACTORY_DETAILS_FIELD_NUMBER: builtins.int
|
|
208
|
+
MODEL_GROUP_NAME_FIELD_NUMBER: builtins.int
|
|
208
209
|
model_id: builtins.str
|
|
209
210
|
account_id: builtins.str
|
|
210
211
|
user_id: builtins.str
|
|
211
212
|
@property
|
|
212
213
|
def artifactory_details(self) -> global___ArtifactoryDetails: ...
|
|
214
|
+
model_group_name: builtins.str
|
|
215
|
+
"""Human readable model group identifier (e.g., "my-model-group").
|
|
216
|
+
This is the display name, not the UUID.
|
|
217
|
+
"""
|
|
213
218
|
def __init__(
|
|
214
219
|
self,
|
|
215
220
|
*,
|
|
@@ -217,9 +222,10 @@ class ModelMetadata(google.protobuf.message.Message):
|
|
|
217
222
|
account_id: builtins.str = ...,
|
|
218
223
|
user_id: builtins.str = ...,
|
|
219
224
|
artifactory_details: global___ArtifactoryDetails | None = ...,
|
|
225
|
+
model_group_name: builtins.str = ...,
|
|
220
226
|
) -> None: ...
|
|
221
227
|
def HasField(self, field_name: typing_extensions.Literal["artifactory_details", b"artifactory_details"]) -> builtins.bool: ...
|
|
222
|
-
def ClearField(self, field_name: typing_extensions.Literal["account_id", b"account_id", "artifactory_details", b"artifactory_details", "model_id", b"model_id", "user_id", b"user_id"]) -> None: ...
|
|
228
|
+
def ClearField(self, field_name: typing_extensions.Literal["account_id", b"account_id", "artifactory_details", b"artifactory_details", "model_group_name", b"model_group_name", "model_id", b"model_id", "user_id", b"user_id"]) -> None: ...
|
|
223
229
|
|
|
224
230
|
global___ModelMetadata = ModelMetadata
|
|
225
231
|
|
|
@@ -13,7 +13,7 @@ _sym_db = _symbol_database.Default()
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
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\"\
|
|
16
|
+
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\"\x80\x03\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\x45\n\x0enpm_repository\x18\x04 \x01(\x0b\x32+.qwak.model_groups.management.NpmRepositoryH\x00\x12G\n\x0fpypi_repository\x18\x05 \x01(\x0b\x32,.qwak.model_groups.management.PypiRepositoryH\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\"\x0f\n\rNpmRepository\"\x10\n\x0ePypiRepository\"\xed\x03\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\x12\x45\n\x0enpm_repository\x18\x05 \x01(\x0b\x32+.qwak.model_groups.management.NpmRepositoryH\x00\x12G\n\x0fpypi_repository\x18\x06 \x01(\x0b\x32,.qwak.model_groups.management.PypiRepositoryH\x00\x42\x06\n\x04typeBN\n&com.qwak.ai.management.model.group.apiB\"ModelGroupRepositoriesDetailsProtoP\x01\x62\x06proto3')
|
|
17
17
|
|
|
18
18
|
_globals = globals()
|
|
19
19
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -25,15 +25,19 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
|
25
25
|
_globals['_REPOSITORYDETAILS']._serialized_start=87
|
|
26
26
|
_globals['_REPOSITORYDETAILS']._serialized_end=201
|
|
27
27
|
_globals['_REMOTEREPOSITORYDETAILS']._serialized_start=204
|
|
28
|
-
_globals['_REMOTEREPOSITORYDETAILS']._serialized_end=
|
|
29
|
-
_globals['_DOCKERREPOSITORY']._serialized_start=
|
|
30
|
-
_globals['_DOCKERREPOSITORY']._serialized_end=
|
|
31
|
-
_globals['_DATASETREPOSITORY']._serialized_start=
|
|
32
|
-
_globals['_DATASETREPOSITORY']._serialized_end=
|
|
33
|
-
_globals['_ARTIFACTREPOSITORY']._serialized_start=
|
|
34
|
-
_globals['_ARTIFACTREPOSITORY']._serialized_end=
|
|
35
|
-
_globals['_HUGGINGFACEREPOSITORY']._serialized_start=
|
|
36
|
-
_globals['_HUGGINGFACEREPOSITORY']._serialized_end=
|
|
37
|
-
_globals['
|
|
38
|
-
_globals['
|
|
28
|
+
_globals['_REMOTEREPOSITORYDETAILS']._serialized_end=588
|
|
29
|
+
_globals['_DOCKERREPOSITORY']._serialized_start=590
|
|
30
|
+
_globals['_DOCKERREPOSITORY']._serialized_end=608
|
|
31
|
+
_globals['_DATASETREPOSITORY']._serialized_start=610
|
|
32
|
+
_globals['_DATASETREPOSITORY']._serialized_end=629
|
|
33
|
+
_globals['_ARTIFACTREPOSITORY']._serialized_start=631
|
|
34
|
+
_globals['_ARTIFACTREPOSITORY']._serialized_end=651
|
|
35
|
+
_globals['_HUGGINGFACEREPOSITORY']._serialized_start=653
|
|
36
|
+
_globals['_HUGGINGFACEREPOSITORY']._serialized_end=676
|
|
37
|
+
_globals['_NPMREPOSITORY']._serialized_start=678
|
|
38
|
+
_globals['_NPMREPOSITORY']._serialized_end=693
|
|
39
|
+
_globals['_PYPIREPOSITORY']._serialized_start=695
|
|
40
|
+
_globals['_PYPIREPOSITORY']._serialized_end=711
|
|
41
|
+
_globals['_REPOSITORYTYPE']._serialized_start=714
|
|
42
|
+
_globals['_REPOSITORYTYPE']._serialized_end=1207
|
|
39
43
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -40,6 +40,8 @@ class RemoteRepositoryDetails(google.protobuf.message.Message):
|
|
|
40
40
|
|
|
41
41
|
DOCKER_REPOSITORY_FIELD_NUMBER: builtins.int
|
|
42
42
|
HUGGING_FACE_REPOSITORY_FIELD_NUMBER: builtins.int
|
|
43
|
+
NPM_REPOSITORY_FIELD_NUMBER: builtins.int
|
|
44
|
+
PYPI_REPOSITORY_FIELD_NUMBER: builtins.int
|
|
43
45
|
REPOSITORY_REMOTE_URL_FIELD_NUMBER: builtins.int
|
|
44
46
|
@property
|
|
45
47
|
def docker_repository(self) -> global___DockerRepository:
|
|
@@ -47,6 +49,12 @@ class RemoteRepositoryDetails(google.protobuf.message.Message):
|
|
|
47
49
|
@property
|
|
48
50
|
def hugging_face_repository(self) -> global___HuggingFaceRepository:
|
|
49
51
|
"""HuggingFace repository"""
|
|
52
|
+
@property
|
|
53
|
+
def npm_repository(self) -> global___NpmRepository:
|
|
54
|
+
"""NPM repository"""
|
|
55
|
+
@property
|
|
56
|
+
def pypi_repository(self) -> global___PypiRepository:
|
|
57
|
+
"""PyPI repository"""
|
|
50
58
|
repository_remote_url: builtins.str
|
|
51
59
|
"""The remote repository URL"""
|
|
52
60
|
def __init__(
|
|
@@ -54,11 +62,13 @@ class RemoteRepositoryDetails(google.protobuf.message.Message):
|
|
|
54
62
|
*,
|
|
55
63
|
docker_repository: global___DockerRepository | None = ...,
|
|
56
64
|
hugging_face_repository: global___HuggingFaceRepository | None = ...,
|
|
65
|
+
npm_repository: global___NpmRepository | None = ...,
|
|
66
|
+
pypi_repository: global___PypiRepository | None = ...,
|
|
57
67
|
repository_remote_url: builtins.str = ...,
|
|
58
68
|
) -> 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: ...
|
|
69
|
+
def HasField(self, field_name: typing_extensions.Literal["docker_repository", b"docker_repository", "hugging_face_repository", b"hugging_face_repository", "npm_repository", b"npm_repository", "pypi_repository", b"pypi_repository", "repository_type", b"repository_type"]) -> builtins.bool: ...
|
|
70
|
+
def ClearField(self, field_name: typing_extensions.Literal["docker_repository", b"docker_repository", "hugging_face_repository", b"hugging_face_repository", "npm_repository", b"npm_repository", "pypi_repository", b"pypi_repository", "repository_remote_url", b"repository_remote_url", "repository_type", b"repository_type"]) -> None: ...
|
|
71
|
+
def WhichOneof(self, oneof_group: typing_extensions.Literal["repository_type", b"repository_type"]) -> typing_extensions.Literal["docker_repository", "hugging_face_repository", "npm_repository", "pypi_repository"] | None: ...
|
|
62
72
|
|
|
63
73
|
global___RemoteRepositoryDetails = RemoteRepositoryDetails
|
|
64
74
|
|
|
@@ -98,6 +108,24 @@ class HuggingFaceRepository(google.protobuf.message.Message):
|
|
|
98
108
|
|
|
99
109
|
global___HuggingFaceRepository = HuggingFaceRepository
|
|
100
110
|
|
|
111
|
+
class NpmRepository(google.protobuf.message.Message):
|
|
112
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
113
|
+
|
|
114
|
+
def __init__(
|
|
115
|
+
self,
|
|
116
|
+
) -> None: ...
|
|
117
|
+
|
|
118
|
+
global___NpmRepository = NpmRepository
|
|
119
|
+
|
|
120
|
+
class PypiRepository(google.protobuf.message.Message):
|
|
121
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
122
|
+
|
|
123
|
+
def __init__(
|
|
124
|
+
self,
|
|
125
|
+
) -> None: ...
|
|
126
|
+
|
|
127
|
+
global___PypiRepository = PypiRepository
|
|
128
|
+
|
|
101
129
|
class RepositoryType(google.protobuf.message.Message):
|
|
102
130
|
"""The repository type"""
|
|
103
131
|
|
|
@@ -107,6 +135,8 @@ class RepositoryType(google.protobuf.message.Message):
|
|
|
107
135
|
DATASET_REPOSITORY_FIELD_NUMBER: builtins.int
|
|
108
136
|
ARTIFACT_REPOSITORY_FIELD_NUMBER: builtins.int
|
|
109
137
|
HUGGING_FACE_REPOSITORY_FIELD_NUMBER: builtins.int
|
|
138
|
+
NPM_REPOSITORY_FIELD_NUMBER: builtins.int
|
|
139
|
+
PYPI_REPOSITORY_FIELD_NUMBER: builtins.int
|
|
110
140
|
@property
|
|
111
141
|
def docker_repository(self) -> global___DockerRepository:
|
|
112
142
|
"""Docker repository"""
|
|
@@ -119,6 +149,12 @@ class RepositoryType(google.protobuf.message.Message):
|
|
|
119
149
|
@property
|
|
120
150
|
def hugging_face_repository(self) -> global___HuggingFaceRepository:
|
|
121
151
|
"""HuggingFace repository"""
|
|
152
|
+
@property
|
|
153
|
+
def npm_repository(self) -> global___NpmRepository:
|
|
154
|
+
"""NPM repository"""
|
|
155
|
+
@property
|
|
156
|
+
def pypi_repository(self) -> global___PypiRepository:
|
|
157
|
+
"""PyPI repository"""
|
|
122
158
|
def __init__(
|
|
123
159
|
self,
|
|
124
160
|
*,
|
|
@@ -126,9 +162,11 @@ class RepositoryType(google.protobuf.message.Message):
|
|
|
126
162
|
dataset_repository: global___DatasetRepository | None = ...,
|
|
127
163
|
artifact_repository: global___ArtifactRepository | None = ...,
|
|
128
164
|
hugging_face_repository: global___HuggingFaceRepository | None = ...,
|
|
165
|
+
npm_repository: global___NpmRepository | None = ...,
|
|
166
|
+
pypi_repository: global___PypiRepository | None = ...,
|
|
129
167
|
) -> None: ...
|
|
130
|
-
def HasField(self, field_name: typing_extensions.Literal["artifact_repository", b"artifact_repository", "dataset_repository", b"dataset_repository", "docker_repository", b"docker_repository", "hugging_face_repository", b"hugging_face_repository", "type", b"type"]) -> builtins.bool: ...
|
|
131
|
-
def ClearField(self, field_name: typing_extensions.Literal["artifact_repository", b"artifact_repository", "dataset_repository", b"dataset_repository", "docker_repository", b"docker_repository", "hugging_face_repository", b"hugging_face_repository", "type", b"type"]) -> None: ...
|
|
132
|
-
def WhichOneof(self, oneof_group: typing_extensions.Literal["type", b"type"]) -> typing_extensions.Literal["docker_repository", "dataset_repository", "artifact_repository", "hugging_face_repository"] | None: ...
|
|
168
|
+
def HasField(self, field_name: typing_extensions.Literal["artifact_repository", b"artifact_repository", "dataset_repository", b"dataset_repository", "docker_repository", b"docker_repository", "hugging_face_repository", b"hugging_face_repository", "npm_repository", b"npm_repository", "pypi_repository", b"pypi_repository", "type", b"type"]) -> builtins.bool: ...
|
|
169
|
+
def ClearField(self, field_name: typing_extensions.Literal["artifact_repository", b"artifact_repository", "dataset_repository", b"dataset_repository", "docker_repository", b"docker_repository", "hugging_face_repository", b"hugging_face_repository", "npm_repository", b"npm_repository", "pypi_repository", b"pypi_repository", "type", b"type"]) -> None: ...
|
|
170
|
+
def WhichOneof(self, oneof_group: typing_extensions.Literal["type", b"type"]) -> typing_extensions.Literal["docker_repository", "dataset_repository", "artifact_repository", "hugging_face_repository", "npm_repository", "pypi_repository"] | None: ...
|
|
133
171
|
|
|
134
172
|
global___RepositoryType = RepositoryType
|
qwak/__init__.py
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
from _qwak_proto.qwak.execution.v1.backfill_pb2 import BackfillSpec
|
|
2
|
+
from _qwak_proto.qwak.execution.v1.streaming_aggregation_pb2 import (
|
|
3
|
+
StreamingAggregationBackfillIngestion,
|
|
4
|
+
)
|
|
2
5
|
from _qwak_proto.qwak.execution.v1.batch_pb2 import BatchIngestion
|
|
3
6
|
from _qwak_proto.qwak.execution.v1.execution_service_pb2 import (
|
|
4
7
|
GetExecutionEntryRequest,
|
|
@@ -9,6 +12,8 @@ from _qwak_proto.qwak.execution.v1.execution_service_pb2 import (
|
|
|
9
12
|
TriggerBackfillResponse,
|
|
10
13
|
TriggerBatchFeaturesetRequest,
|
|
11
14
|
TriggerBatchFeaturesetResponse,
|
|
15
|
+
TriggerStreamingAggregationBackfillRequest,
|
|
16
|
+
TriggerStreamingAggregationBackfillResponse,
|
|
12
17
|
)
|
|
13
18
|
from _qwak_proto.qwak.execution.v1.execution_service_pb2_grpc import (
|
|
14
19
|
FeatureStoreExecutionServiceStub,
|
|
@@ -29,6 +34,29 @@ class ExecutionManagementClient:
|
|
|
29
34
|
grpc_channel
|
|
30
35
|
)
|
|
31
36
|
|
|
37
|
+
def trigger_streaming_aggregation_backfill(
|
|
38
|
+
self, backfill_ingestion: StreamingAggregationBackfillIngestion
|
|
39
|
+
) -> TriggerStreamingAggregationBackfillResponse:
|
|
40
|
+
"""
|
|
41
|
+
Receives a configured streaming aggregation backfill proto and triggers a streaming aggregation
|
|
42
|
+
backfill against the execution manager
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
backfill_ingestion (StreamingAggregationBackfillIngestion): A protobuf message
|
|
46
|
+
containing the backfill specification details
|
|
47
|
+
|
|
48
|
+
Returns:
|
|
49
|
+
TriggerStreamingAggregationBackfillResponse: response object from the execution manager
|
|
50
|
+
"""
|
|
51
|
+
try:
|
|
52
|
+
return self._feature_store_execution_service.TriggerStreamingAggregationBackfill(
|
|
53
|
+
TriggerStreamingAggregationBackfillRequest(backfill=backfill_ingestion)
|
|
54
|
+
)
|
|
55
|
+
except RpcError as e:
|
|
56
|
+
raise QwakException(
|
|
57
|
+
f"Failed to trigger streaming aggregation backfill job, error encountered {e}"
|
|
58
|
+
)
|
|
59
|
+
|
|
32
60
|
def trigger_batch_backfill(
|
|
33
61
|
self, batch_backfill_spec: BackfillSpec
|
|
34
62
|
) -> TriggerBackfillResponse:
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import pathlib
|
|
2
|
+
|
|
3
|
+
from qwak.clients.feature_store.execution_management_client import (
|
|
4
|
+
ExecutionManagementClient,
|
|
5
|
+
)
|
|
6
|
+
from qwak.feature_store.feature_sets.streaming_backfill import StreamingBackfill
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class StreamingAggregationBackfill:
|
|
10
|
+
def __init__(
|
|
11
|
+
self,
|
|
12
|
+
streaming_backfill: StreamingBackfill,
|
|
13
|
+
source_definition_path: pathlib.Path,
|
|
14
|
+
):
|
|
15
|
+
"""
|
|
16
|
+
Initialize the streaming aggregation backfill executor.
|
|
17
|
+
|
|
18
|
+
Args:
|
|
19
|
+
streaming_backfill (StreamingBackfill): Specification containing the
|
|
20
|
+
featureset name, time range, data sources, and transformation
|
|
21
|
+
source_definition_path (Path): Path to the Python file containing the backfill
|
|
22
|
+
definition. Required for locating UDF artifacts.
|
|
23
|
+
"""
|
|
24
|
+
self._streaming_backfill = streaming_backfill
|
|
25
|
+
self._source_definition_path = source_definition_path
|
|
26
|
+
|
|
27
|
+
def trigger(self) -> str:
|
|
28
|
+
"""
|
|
29
|
+
Triggers the streaming aggregation backfill execution.
|
|
30
|
+
|
|
31
|
+
Converts the backfill specification to proto format and sends it to
|
|
32
|
+
the execution manager to start the backfill job.
|
|
33
|
+
|
|
34
|
+
Returns:
|
|
35
|
+
str: The execution ID for tracking the backfill job status
|
|
36
|
+
|
|
37
|
+
Raises:
|
|
38
|
+
QwakException: If the execution manager request fails
|
|
39
|
+
"""
|
|
40
|
+
backfill_proto = self._streaming_backfill._to_proto(
|
|
41
|
+
str(self._source_definition_path)
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
execution_client = ExecutionManagementClient()
|
|
45
|
+
response = execution_client.trigger_streaming_aggregation_backfill(
|
|
46
|
+
backfill_proto
|
|
47
|
+
)
|
|
48
|
+
return response.execution_id
|