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.
@@ -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\"\xbf\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(\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')
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=2879
33
- _globals['_MEMORYUNIT']._serialized_end=2934
34
- _globals['_GPUTYPE']._serialized_start=2937
35
- _globals['_GPUTYPE']._serialized_end=3323
36
- _globals['_DATACOLUMNTYPE']._serialized_start=3325
37
- _globals['_DATACOLUMNTYPE']._serialized_end=3425
38
- _globals['_BASEDOCKERIMAGETYPE']._serialized_start=3427
39
- _globals['_BASEDOCKERIMAGETYPE']._serialized_end=3502
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=1002
42
- _globals['_BUILDPROPERTIESV1']._serialized_start=1004
43
- _globals['_BUILDPROPERTIESV1']._serialized_end=1107
44
- _globals['_BUILDPROPERTIES']._serialized_start=1110
45
- _globals['_BUILDPROPERTIES']._serialized_end=1296
46
- _globals['_MODELURISPEC']._serialized_start=1299
47
- _globals['_MODELURISPEC']._serialized_end=1477
48
- _globals['_BUILDENV']._serialized_start=1479
49
- _globals['_BUILDENV']._serialized_end=1603
50
- _globals['_DOCKERENV']._serialized_start=1606
51
- _globals['_DOCKERENV']._serialized_end=1810
52
- _globals['_PYTHONENV']._serialized_start=1813
53
- _globals['_PYTHONENV']._serialized_end=1997
54
- _globals['_CPURESOURCES']._serialized_start=1999
55
- _globals['_CPURESOURCES']._serialized_end=2109
56
- _globals['_GPURESOURCES']._serialized_start=2111
57
- _globals['_GPURESOURCES']._serialized_end=2198
58
- _globals['_DATATABLEDEFINITION']._serialized_start=2201
59
- _globals['_DATATABLEDEFINITION']._serialized_end=2346
60
- _globals['_DATACOLUMNDEFINITION']._serialized_start=2348
61
- _globals['_DATACOLUMNDEFINITION']._serialized_end=2440
62
- _globals['_DATAFORMAT']._serialized_start=2442
63
- _globals['_DATAFORMAT']._serialized_end=2516
64
- _globals['_CSVFORMAT']._serialized_start=2518
65
- _globals['_CSVFORMAT']._serialized_end=2589
66
- _globals['_BUILDINITIATOR']._serialized_start=2592
67
- _globals['_BUILDINITIATOR']._serialized_end=2757
68
- _globals['_USERBUILDINITIATOR']._serialized_start=2759
69
- _globals['_USERBUILDINITIATOR']._serialized_end=2779
70
- _globals['_AUTOMATIONBUILDINITIATOR']._serialized_start=2781
71
- _globals['_AUTOMATIONBUILDINITIATOR']._serialized_end=2877
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\"\x8e\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\")\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')
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=3017
39
- _globals['_PURCHASEOPTION']._serialized_end=3118
40
- _globals['_CLOUDPROVIDER']._serialized_start=3120
41
- _globals['_CLOUDPROVIDER']._serialized_end=3192
42
- _globals['_MEMORYUNIT']._serialized_start=3194
43
- _globals['_MEMORYUNIT']._serialized_end=3249
44
- _globals['_LOGSVERBOSITYLEVEL']._serialized_start=3251
45
- _globals['_LOGSVERBOSITYLEVEL']._serialized_end=3334
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=964
54
- _globals['_ARTIFACTORYDETAILS']._serialized_start=966
55
- _globals['_ARTIFACTORYDETAILS']._serialized_end=1007
56
- _globals['_MODELCODELOCATION']._serialized_start=1010
57
- _globals['_MODELCODELOCATION']._serialized_end=1170
58
- _globals['_LOCALURI']._serialized_start=1172
59
- _globals['_LOCALURI']._serialized_end=1196
60
- _globals['_GITURI']._serialized_start=1198
61
- _globals['_GITURI']._serialized_end=1275
62
- _globals['_GITDETAILS']._serialized_start=1277
63
- _globals['_GITDETAILS']._serialized_end=1401
64
- _globals['_BUILDEXECUTIONSPEC']._serialized_start=1404
65
- _globals['_BUILDEXECUTIONSPEC']._serialized_end=1740
66
- _globals['_SDKSPEC']._serialized_start=1742
67
- _globals['_SDKSPEC']._serialized_end=1839
68
- _globals['_JFROGECOSYSTEMSPEC']._serialized_start=1841
69
- _globals['_JFROGECOSYSTEMSPEC']._serialized_end=1948
70
- _globals['_JOBSPEC']._serialized_start=1951
71
- _globals['_JOBSPEC']._serialized_end=2516
72
- _globals['_JOBSPEC_BUILDEXECUTORENVVARSENTRY']._serialized_start=2457
73
- _globals['_JOBSPEC_BUILDEXECUTORENVVARSENTRY']._serialized_end=2516
74
- _globals['_JOBSIZE']._serialized_start=2519
75
- _globals['_JOBSIZE']._serialized_end=2805
76
- _globals['_CONTAINERENGINE']._serialized_start=2808
77
- _globals['_CONTAINERENGINE']._serialized_end=2965
78
- _globals['_DOCKERCONTAINERENGINE']._serialized_start=2967
79
- _globals['_DOCKERCONTAINERENGINE']._serialized_end=2990
80
- _globals['_PODMANCONTAINERENGINE']._serialized_start=2992
81
- _globals['_PODMANCONTAINERENGINE']._serialized_end=3015
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\"\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')
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=444
29
- _globals['_DOCKERREPOSITORY']._serialized_start=446
30
- _globals['_DOCKERREPOSITORY']._serialized_end=464
31
- _globals['_DATASETREPOSITORY']._serialized_start=466
32
- _globals['_DATASETREPOSITORY']._serialized_end=485
33
- _globals['_ARTIFACTREPOSITORY']._serialized_start=487
34
- _globals['_ARTIFACTREPOSITORY']._serialized_end=507
35
- _globals['_HUGGINGFACEREPOSITORY']._serialized_start=509
36
- _globals['_HUGGINGFACEREPOSITORY']._serialized_end=532
37
- _globals['_REPOSITORYTYPE']._serialized_start=535
38
- _globals['_REPOSITORYTYPE']._serialized_end=884
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,7 +1,7 @@
1
1
  """Top-level package for qwak-core."""
2
2
 
3
3
  __author__ = "Qwak.ai"
4
- __version__ = "0.5.4"
4
+ __version__ = "0.5.16"
5
5
 
6
6
  from qwak.inner.di_configuration import wire_dependencies
7
7
  from qwak.model.experiment_tracking import log_metric, log_param
@@ -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