frogml 1.2.35__py3-none-any.whl → 1.2.38__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
frogml/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
1
  __author__ = "jfrog"
2
- __version__ = "1.2.35"
2
+ __version__ = "1.2.38"
3
3
 
4
4
  from frogml.sdk.model.decorators.api import api_decorator as api
5
5
  from frogml.sdk.model_loggers.model_logger import load_model, log_model
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
14
14
 
15
15
 
16
16
 
17
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dqwak/logging/log_source.proto\x12\x14qwak.logging.service\"\xca\x04\n\tLogSource\x12\x41\n\rmodel_runtime\x18\x01 \x01(\x0b\x32(.qwak.logging.service.ModelRuntimeSourceH\x00\x12?\n\x0cremote_build\x18\x02 \x01(\x0b\x32\'.qwak.logging.service.RemoteBuildSourceH\x00\x12M\n\x13inference_execution\x18\x03 \x01(\x0b\x32..qwak.logging.service.InferenceExecutionSourceH\x00\x12P\n\x15streaming_feature_set\x18\x04 \x01(\x0b\x32/.qwak.logging.service.StreamingFeatureSetSourceH\x00\x12g\n!streaming_aggregation_feature_set\x18\x05 \x01(\x0b\x32:.qwak.logging.service.StreamingAggregationFeatureSetSourceH\x00\x12H\n\x11\x62\x61tch_feature_set\x18\x06 \x01(\x0b\x32+.qwak.logging.service.BatchFeatureSetSourceH\x00\x12[\n\x1breal_time_feature_extractor\x18\x07 \x01(\x0b\x32\x34.qwak.logging.service.RealTimeFeatureExtractorSourceH\x00\x42\x08\n\x06source\"f\n\x11RemoteBuildSource\x12\x18\n\x10model_group_name\x18\x03 \x01(\t\x12\x12\n\nmodel_name\x18\x04 \x01(\t\x12\x10\n\x08\x62uild_id\x18\x01 \x01(\t\x12\x11\n\tphase_ids\x18\x02 \x03(\t\"|\n\x12ModelRuntimeSource\x12\x18\n\x10model_group_name\x18\x03 \x01(\t\x12\x12\n\nmodel_name\x18\x04 \x01(\t\x12\x17\n\rdeployment_id\x18\x01 \x01(\tH\x00\x12\x12\n\x08\x62uild_id\x18\x02 \x01(\tH\x00\x42\x0b\n\tsearch_by\"\x8e\x01\n\x18InferenceExecutionSource\x12\x18\n\x10model_group_name\x18\x03 \x01(\t\x12\x12\n\nmodel_name\x18\x04 \x01(\t\x12\x1a\n\x10inference_job_id\x18\x01 \x01(\tH\x00\x12\x1b\n\x11inference_task_id\x18\x02 \x01(\tH\x00\x42\x0b\n\tsearch_by\"\xe4\x01\n\x19StreamingFeatureSetSource\x12\x16\n\x0e\x66\x65\x61ture_set_id\x18\x01 \x01(\t\x12\x18\n\x10\x66\x65\x61ture_set_name\x18\x02 \x01(\t\x12#\n\x1b\x66\x65\x61ture_set_repository_name\x18\x05 \x01(\t\x12\x34\n\x07offline\x18\x03 \x01(\x0b\x32!.qwak.logging.service.OfflineTypeH\x00\x12\x32\n\x06online\x18\x04 \x01(\x0b\x32 .qwak.logging.service.OnlineTypeH\x00\x42\x06\n\x04type\"\xa0\x01\n\x15\x42\x61tchFeatureSetSource\x12\x15\n\rfeatureset_id\x18\x01 \x01(\t\x12\x17\n\x0f\x66\x65\x61tureset_name\x18\x02 \x01(\t\x12#\n\x1b\x66\x65\x61ture_set_repository_name\x18\x04 \x01(\t\x12\"\n\x1a\x66ilter_by_feature_set_name\x18\x05 \x01(\x08\x12\x0e\n\x06run_id\x18\x03 \x01(\t\"\xdb\x01\n$StreamingAggregationFeatureSetSource\x12\x37\n\trow_level\x18\x01 \x01(\x0b\x32\".qwak.logging.service.RowLevelTypeH\x00\x12:\n\ncompaction\x18\x02 \x01(\x0b\x32$.qwak.logging.service.CompactionTypeH\x00\x12\x36\n\x08\x62\x61\x63kfill\x18\x03 \x01(\x0b\x32\".qwak.logging.service.BackfillTypeH\x00\x42\x06\n\x04type\"c\n\nOnlineType\x12\x16\n\x0e\x66\x65\x61ture_set_id\x18\x01 \x01(\t\x12\x18\n\x10\x66\x65\x61ture_set_name\x18\x02 \x01(\t\x12#\n\x1b\x66\x65\x61ture_set_repository_name\x18\x03 \x01(\t\"t\n\x0bOfflineType\x12\x16\n\x0e\x66\x65\x61ture_set_id\x18\x01 \x01(\t\x12\x18\n\x10\x66\x65\x61ture_set_name\x18\x02 \x01(\t\x12#\n\x1b\x66\x65\x61ture_set_repository_name\x18\x04 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\t\"e\n\x0cRowLevelType\x12\x16\n\x0e\x66\x65\x61ture_set_id\x18\x01 \x01(\t\x12\x18\n\x10\x66\x65\x61ture_set_name\x18\x02 \x01(\t\x12#\n\x1b\x66\x65\x61ture_set_repository_name\x18\x03 \x01(\t\"w\n\x0e\x43ompactionType\x12\x16\n\x0e\x66\x65\x61ture_set_id\x18\x01 \x01(\t\x12\x18\n\x10\x66\x65\x61ture_set_name\x18\x02 \x01(\t\x12#\n\x1b\x66\x65\x61ture_set_repository_name\x18\x04 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\t\"e\n\x0c\x42\x61\x63kfillType\x12\x16\n\x0e\x66\x65\x61ture_set_id\x18\x01 \x01(\t\x12\x18\n\x10\x66\x65\x61ture_set_name\x18\x02 \x01(\t\x12#\n\x1b\x66\x65\x61ture_set_repository_name\x18\x03 \x01(\t\"H\n\x1eRealTimeFeatureExtractorSource\x12&\n\x1ereal_time_feature_extractor_id\x18\x01 \x01(\tB\"\n\x1e\x63om.qwak.ai.logging.reader.apiP\x01\x62\x06proto3')
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dqwak/logging/log_source.proto\x12\x14qwak.logging.service\"\xca\x04\n\tLogSource\x12\x41\n\rmodel_runtime\x18\x01 \x01(\x0b\x32(.qwak.logging.service.ModelRuntimeSourceH\x00\x12?\n\x0cremote_build\x18\x02 \x01(\x0b\x32\'.qwak.logging.service.RemoteBuildSourceH\x00\x12M\n\x13inference_execution\x18\x03 \x01(\x0b\x32..qwak.logging.service.InferenceExecutionSourceH\x00\x12P\n\x15streaming_feature_set\x18\x04 \x01(\x0b\x32/.qwak.logging.service.StreamingFeatureSetSourceH\x00\x12g\n!streaming_aggregation_feature_set\x18\x05 \x01(\x0b\x32:.qwak.logging.service.StreamingAggregationFeatureSetSourceH\x00\x12H\n\x11\x62\x61tch_feature_set\x18\x06 \x01(\x0b\x32+.qwak.logging.service.BatchFeatureSetSourceH\x00\x12[\n\x1breal_time_feature_extractor\x18\x07 \x01(\x0b\x32\x34.qwak.logging.service.RealTimeFeatureExtractorSourceH\x00\x42\x08\n\x06source\"\x92\x01\n\x11RemoteBuildSource\x12\x18\n\x10model_group_name\x18\x03 \x01(\t\x12\x16\n\nmodel_name\x18\x04 \x01(\tB\x02\x18\x01\x12\x12\n\x08model_id\x18\x05 \x01(\tH\x00\x12\x10\n\x08\x62uild_id\x18\x01 \x01(\t\x12\x11\n\tphase_ids\x18\x02 \x03(\tB\x12\n\x10model_identifier\"\xa8\x01\n\x12ModelRuntimeSource\x12\x18\n\x10model_group_name\x18\x03 \x01(\t\x12\x16\n\nmodel_name\x18\x04 \x01(\tB\x02\x18\x01\x12\x12\n\x08model_id\x18\x05 \x01(\tH\x00\x12\x17\n\rdeployment_id\x18\x01 \x01(\tH\x01\x12\x12\n\x08\x62uild_id\x18\x02 \x01(\tH\x01\x42\x12\n\x10model_identifierB\x0b\n\tsearch_by\"\xba\x01\n\x18InferenceExecutionSource\x12\x18\n\x10model_group_name\x18\x03 \x01(\t\x12\x16\n\nmodel_name\x18\x04 \x01(\tB\x02\x18\x01\x12\x12\n\x08model_id\x18\x05 \x01(\tH\x00\x12\x1a\n\x10inference_job_id\x18\x01 \x01(\tH\x01\x12\x1b\n\x11inference_task_id\x18\x02 \x01(\tH\x01\x42\x12\n\x10model_identifierB\x0b\n\tsearch_by\"\xe4\x01\n\x19StreamingFeatureSetSource\x12\x16\n\x0e\x66\x65\x61ture_set_id\x18\x01 \x01(\t\x12\x18\n\x10\x66\x65\x61ture_set_name\x18\x02 \x01(\t\x12#\n\x1b\x66\x65\x61ture_set_repository_name\x18\x05 \x01(\t\x12\x34\n\x07offline\x18\x03 \x01(\x0b\x32!.qwak.logging.service.OfflineTypeH\x00\x12\x32\n\x06online\x18\x04 \x01(\x0b\x32 .qwak.logging.service.OnlineTypeH\x00\x42\x06\n\x04type\"\xa0\x01\n\x15\x42\x61tchFeatureSetSource\x12\x15\n\rfeatureset_id\x18\x01 \x01(\t\x12\x17\n\x0f\x66\x65\x61tureset_name\x18\x02 \x01(\t\x12#\n\x1b\x66\x65\x61ture_set_repository_name\x18\x04 \x01(\t\x12\"\n\x1a\x66ilter_by_feature_set_name\x18\x05 \x01(\x08\x12\x0e\n\x06run_id\x18\x03 \x01(\t\"\xdb\x01\n$StreamingAggregationFeatureSetSource\x12\x37\n\trow_level\x18\x01 \x01(\x0b\x32\".qwak.logging.service.RowLevelTypeH\x00\x12:\n\ncompaction\x18\x02 \x01(\x0b\x32$.qwak.logging.service.CompactionTypeH\x00\x12\x36\n\x08\x62\x61\x63kfill\x18\x03 \x01(\x0b\x32\".qwak.logging.service.BackfillTypeH\x00\x42\x06\n\x04type\"c\n\nOnlineType\x12\x16\n\x0e\x66\x65\x61ture_set_id\x18\x01 \x01(\t\x12\x18\n\x10\x66\x65\x61ture_set_name\x18\x02 \x01(\t\x12#\n\x1b\x66\x65\x61ture_set_repository_name\x18\x03 \x01(\t\"t\n\x0bOfflineType\x12\x16\n\x0e\x66\x65\x61ture_set_id\x18\x01 \x01(\t\x12\x18\n\x10\x66\x65\x61ture_set_name\x18\x02 \x01(\t\x12#\n\x1b\x66\x65\x61ture_set_repository_name\x18\x04 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\t\"e\n\x0cRowLevelType\x12\x16\n\x0e\x66\x65\x61ture_set_id\x18\x01 \x01(\t\x12\x18\n\x10\x66\x65\x61ture_set_name\x18\x02 \x01(\t\x12#\n\x1b\x66\x65\x61ture_set_repository_name\x18\x03 \x01(\t\"w\n\x0e\x43ompactionType\x12\x16\n\x0e\x66\x65\x61ture_set_id\x18\x01 \x01(\t\x12\x18\n\x10\x66\x65\x61ture_set_name\x18\x02 \x01(\t\x12#\n\x1b\x66\x65\x61ture_set_repository_name\x18\x04 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\t\"e\n\x0c\x42\x61\x63kfillType\x12\x16\n\x0e\x66\x65\x61ture_set_id\x18\x01 \x01(\t\x12\x18\n\x10\x66\x65\x61ture_set_name\x18\x02 \x01(\t\x12#\n\x1b\x66\x65\x61ture_set_repository_name\x18\x03 \x01(\t\"H\n\x1eRealTimeFeatureExtractorSource\x12&\n\x1ereal_time_feature_extractor_id\x18\x01 \x01(\tB\"\n\x1e\x63om.qwak.ai.logging.reader.apiP\x01\x62\x06proto3')
18
18
 
19
19
  _globals = globals()
20
20
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -22,30 +22,36 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'qwak.logging.log_source_pb2
22
22
  if _descriptor._USE_C_DESCRIPTORS == False:
23
23
  _globals['DESCRIPTOR']._options = None
24
24
  _globals['DESCRIPTOR']._serialized_options = b'\n\036com.qwak.ai.logging.reader.apiP\001'
25
+ _globals['_REMOTEBUILDSOURCE'].fields_by_name['model_name']._options = None
26
+ _globals['_REMOTEBUILDSOURCE'].fields_by_name['model_name']._serialized_options = b'\030\001'
27
+ _globals['_MODELRUNTIMESOURCE'].fields_by_name['model_name']._options = None
28
+ _globals['_MODELRUNTIMESOURCE'].fields_by_name['model_name']._serialized_options = b'\030\001'
29
+ _globals['_INFERENCEEXECUTIONSOURCE'].fields_by_name['model_name']._options = None
30
+ _globals['_INFERENCEEXECUTIONSOURCE'].fields_by_name['model_name']._serialized_options = b'\030\001'
25
31
  _globals['_LOGSOURCE']._serialized_start=56
26
32
  _globals['_LOGSOURCE']._serialized_end=642
27
- _globals['_REMOTEBUILDSOURCE']._serialized_start=644
28
- _globals['_REMOTEBUILDSOURCE']._serialized_end=746
29
- _globals['_MODELRUNTIMESOURCE']._serialized_start=748
30
- _globals['_MODELRUNTIMESOURCE']._serialized_end=872
31
- _globals['_INFERENCEEXECUTIONSOURCE']._serialized_start=875
32
- _globals['_INFERENCEEXECUTIONSOURCE']._serialized_end=1017
33
- _globals['_STREAMINGFEATURESETSOURCE']._serialized_start=1020
34
- _globals['_STREAMINGFEATURESETSOURCE']._serialized_end=1248
35
- _globals['_BATCHFEATURESETSOURCE']._serialized_start=1251
36
- _globals['_BATCHFEATURESETSOURCE']._serialized_end=1411
37
- _globals['_STREAMINGAGGREGATIONFEATURESETSOURCE']._serialized_start=1414
38
- _globals['_STREAMINGAGGREGATIONFEATURESETSOURCE']._serialized_end=1633
39
- _globals['_ONLINETYPE']._serialized_start=1635
40
- _globals['_ONLINETYPE']._serialized_end=1734
41
- _globals['_OFFLINETYPE']._serialized_start=1736
42
- _globals['_OFFLINETYPE']._serialized_end=1852
43
- _globals['_ROWLEVELTYPE']._serialized_start=1854
44
- _globals['_ROWLEVELTYPE']._serialized_end=1955
45
- _globals['_COMPACTIONTYPE']._serialized_start=1957
46
- _globals['_COMPACTIONTYPE']._serialized_end=2076
47
- _globals['_BACKFILLTYPE']._serialized_start=2078
48
- _globals['_BACKFILLTYPE']._serialized_end=2179
49
- _globals['_REALTIMEFEATUREEXTRACTORSOURCE']._serialized_start=2181
50
- _globals['_REALTIMEFEATUREEXTRACTORSOURCE']._serialized_end=2253
33
+ _globals['_REMOTEBUILDSOURCE']._serialized_start=645
34
+ _globals['_REMOTEBUILDSOURCE']._serialized_end=791
35
+ _globals['_MODELRUNTIMESOURCE']._serialized_start=794
36
+ _globals['_MODELRUNTIMESOURCE']._serialized_end=962
37
+ _globals['_INFERENCEEXECUTIONSOURCE']._serialized_start=965
38
+ _globals['_INFERENCEEXECUTIONSOURCE']._serialized_end=1151
39
+ _globals['_STREAMINGFEATURESETSOURCE']._serialized_start=1154
40
+ _globals['_STREAMINGFEATURESETSOURCE']._serialized_end=1382
41
+ _globals['_BATCHFEATURESETSOURCE']._serialized_start=1385
42
+ _globals['_BATCHFEATURESETSOURCE']._serialized_end=1545
43
+ _globals['_STREAMINGAGGREGATIONFEATURESETSOURCE']._serialized_start=1548
44
+ _globals['_STREAMINGAGGREGATIONFEATURESETSOURCE']._serialized_end=1767
45
+ _globals['_ONLINETYPE']._serialized_start=1769
46
+ _globals['_ONLINETYPE']._serialized_end=1868
47
+ _globals['_OFFLINETYPE']._serialized_start=1870
48
+ _globals['_OFFLINETYPE']._serialized_end=1986
49
+ _globals['_ROWLEVELTYPE']._serialized_start=1988
50
+ _globals['_ROWLEVELTYPE']._serialized_end=2089
51
+ _globals['_COMPACTIONTYPE']._serialized_start=2091
52
+ _globals['_COMPACTIONTYPE']._serialized_end=2210
53
+ _globals['_BACKFILLTYPE']._serialized_start=2212
54
+ _globals['_BACKFILLTYPE']._serialized_end=2313
55
+ _globals['_REALTIMEFEATUREEXTRACTORSOURCE']._serialized_start=2315
56
+ _globals['_REALTIMEFEATUREEXTRACTORSOURCE']._serialized_end=2387
51
57
  # @@protoc_insertion_point(module_scope)
@@ -64,6 +64,7 @@ class RemoteBuildSource(google.protobuf.message.Message):
64
64
 
65
65
  MODEL_GROUP_NAME_FIELD_NUMBER: builtins.int
66
66
  MODEL_NAME_FIELD_NUMBER: builtins.int
67
+ MODEL_ID_FIELD_NUMBER: builtins.int
67
68
  BUILD_ID_FIELD_NUMBER: builtins.int
68
69
  PHASE_IDS_FIELD_NUMBER: builtins.int
69
70
  model_group_name: builtins.str
@@ -71,9 +72,9 @@ class RemoteBuildSource(google.protobuf.message.Message):
71
72
  This field is mandatory
72
73
  """
73
74
  model_name: builtins.str
74
- """Model name - for verifying user permissions
75
- This field is mandatory
76
- """
75
+ """This field is identical to model_id, use model_id instead"""
76
+ model_id: builtins.str
77
+ """Model id (human readable name)"""
77
78
  build_id: builtins.str
78
79
  """Filter by build id"""
79
80
  @property
@@ -85,10 +86,13 @@ class RemoteBuildSource(google.protobuf.message.Message):
85
86
  *,
86
87
  model_group_name: builtins.str = ...,
87
88
  model_name: builtins.str = ...,
89
+ model_id: builtins.str = ...,
88
90
  build_id: builtins.str = ...,
89
91
  phase_ids: collections.abc.Iterable[builtins.str] | None = ...,
90
92
  ) -> None: ...
91
- def ClearField(self, field_name: typing.Literal["build_id", b"build_id", "model_group_name", b"model_group_name", "model_name", b"model_name", "phase_ids", b"phase_ids"]) -> None: ...
93
+ def HasField(self, field_name: typing.Literal["model_id", b"model_id", "model_identifier", b"model_identifier"]) -> builtins.bool: ...
94
+ def ClearField(self, field_name: typing.Literal["build_id", b"build_id", "model_group_name", b"model_group_name", "model_id", b"model_id", "model_identifier", b"model_identifier", "model_name", b"model_name", "phase_ids", b"phase_ids"]) -> None: ...
95
+ def WhichOneof(self, oneof_group: typing.Literal["model_identifier", b"model_identifier"]) -> typing.Literal["model_id"] | None: ...
92
96
 
93
97
  global___RemoteBuildSource = RemoteBuildSource
94
98
 
@@ -100,6 +104,7 @@ class ModelRuntimeSource(google.protobuf.message.Message):
100
104
 
101
105
  MODEL_GROUP_NAME_FIELD_NUMBER: builtins.int
102
106
  MODEL_NAME_FIELD_NUMBER: builtins.int
107
+ MODEL_ID_FIELD_NUMBER: builtins.int
103
108
  DEPLOYMENT_ID_FIELD_NUMBER: builtins.int
104
109
  BUILD_ID_FIELD_NUMBER: builtins.int
105
110
  model_group_name: builtins.str
@@ -107,9 +112,9 @@ class ModelRuntimeSource(google.protobuf.message.Message):
107
112
  This field is mandatory
108
113
  """
109
114
  model_name: builtins.str
110
- """Model name - for verifying user permissions
111
- This field is mandatory
112
- """
115
+ """This field is identical to model_id, use model_id instead"""
116
+ model_id: builtins.str
117
+ """Model id (human readable name)"""
113
118
  deployment_id: builtins.str
114
119
  """Filter by deployment id"""
115
120
  build_id: builtins.str
@@ -119,11 +124,15 @@ class ModelRuntimeSource(google.protobuf.message.Message):
119
124
  *,
120
125
  model_group_name: builtins.str = ...,
121
126
  model_name: builtins.str = ...,
127
+ model_id: builtins.str = ...,
122
128
  deployment_id: builtins.str = ...,
123
129
  build_id: builtins.str = ...,
124
130
  ) -> None: ...
125
- def HasField(self, field_name: typing.Literal["build_id", b"build_id", "deployment_id", b"deployment_id", "search_by", b"search_by"]) -> builtins.bool: ...
126
- def ClearField(self, field_name: typing.Literal["build_id", b"build_id", "deployment_id", b"deployment_id", "model_group_name", b"model_group_name", "model_name", b"model_name", "search_by", b"search_by"]) -> None: ...
131
+ def HasField(self, field_name: typing.Literal["build_id", b"build_id", "deployment_id", b"deployment_id", "model_id", b"model_id", "model_identifier", b"model_identifier", "search_by", b"search_by"]) -> builtins.bool: ...
132
+ def ClearField(self, field_name: typing.Literal["build_id", b"build_id", "deployment_id", b"deployment_id", "model_group_name", b"model_group_name", "model_id", b"model_id", "model_identifier", b"model_identifier", "model_name", b"model_name", "search_by", b"search_by"]) -> None: ...
133
+ @typing.overload
134
+ def WhichOneof(self, oneof_group: typing.Literal["model_identifier", b"model_identifier"]) -> typing.Literal["model_id"] | None: ...
135
+ @typing.overload
127
136
  def WhichOneof(self, oneof_group: typing.Literal["search_by", b"search_by"]) -> typing.Literal["deployment_id", "build_id"] | None: ...
128
137
 
129
138
  global___ModelRuntimeSource = ModelRuntimeSource
@@ -134,6 +143,7 @@ class InferenceExecutionSource(google.protobuf.message.Message):
134
143
 
135
144
  MODEL_GROUP_NAME_FIELD_NUMBER: builtins.int
136
145
  MODEL_NAME_FIELD_NUMBER: builtins.int
146
+ MODEL_ID_FIELD_NUMBER: builtins.int
137
147
  INFERENCE_JOB_ID_FIELD_NUMBER: builtins.int
138
148
  INFERENCE_TASK_ID_FIELD_NUMBER: builtins.int
139
149
  model_group_name: builtins.str
@@ -141,9 +151,9 @@ class InferenceExecutionSource(google.protobuf.message.Message):
141
151
  This field is mandatory
142
152
  """
143
153
  model_name: builtins.str
144
- """Model name - for verifying user permissions
145
- This field is mandatory
146
- """
154
+ """This field is identical to model_id, use model_id instead"""
155
+ model_id: builtins.str
156
+ """Model id (human readable name)"""
147
157
  inference_job_id: builtins.str
148
158
  """Filter by deployment id"""
149
159
  inference_task_id: builtins.str
@@ -153,11 +163,15 @@ class InferenceExecutionSource(google.protobuf.message.Message):
153
163
  *,
154
164
  model_group_name: builtins.str = ...,
155
165
  model_name: builtins.str = ...,
166
+ model_id: builtins.str = ...,
156
167
  inference_job_id: builtins.str = ...,
157
168
  inference_task_id: builtins.str = ...,
158
169
  ) -> None: ...
159
- def HasField(self, field_name: typing.Literal["inference_job_id", b"inference_job_id", "inference_task_id", b"inference_task_id", "search_by", b"search_by"]) -> builtins.bool: ...
160
- def ClearField(self, field_name: typing.Literal["inference_job_id", b"inference_job_id", "inference_task_id", b"inference_task_id", "model_group_name", b"model_group_name", "model_name", b"model_name", "search_by", b"search_by"]) -> None: ...
170
+ def HasField(self, field_name: typing.Literal["inference_job_id", b"inference_job_id", "inference_task_id", b"inference_task_id", "model_id", b"model_id", "model_identifier", b"model_identifier", "search_by", b"search_by"]) -> builtins.bool: ...
171
+ def ClearField(self, field_name: typing.Literal["inference_job_id", b"inference_job_id", "inference_task_id", b"inference_task_id", "model_group_name", b"model_group_name", "model_id", b"model_id", "model_identifier", b"model_identifier", "model_name", b"model_name", "search_by", b"search_by"]) -> None: ...
172
+ @typing.overload
173
+ def WhichOneof(self, oneof_group: typing.Literal["model_identifier", b"model_identifier"]) -> typing.Literal["model_id"] | None: ...
174
+ @typing.overload
161
175
  def WhichOneof(self, oneof_group: typing.Literal["search_by", b"search_by"]) -> typing.Literal["inference_job_id", "inference_task_id"] | None: ...
162
176
 
163
177
  global___InferenceExecutionSource = InferenceExecutionSource
@@ -71,7 +71,7 @@ from .results import (
71
71
  GetExecutionReportResult,
72
72
  StartExecutionResult,
73
73
  )
74
- from typing import List
74
+ from typing import List, Optional
75
75
 
76
76
  CLIENT_TIMEOUT = 180 # Seconds
77
77
 
@@ -359,15 +359,21 @@ class BatchJobManagerClient:
359
359
  except grpc.RpcError as e:
360
360
  raise FrogmlException(f"Failed to cancel execution, error is {e}")
361
361
 
362
- def get_execution_report(self, execution_id: str) -> GetExecutionReportResult:
362
+ def get_execution_report(
363
+ self,
364
+ execution_id: str,
365
+ model_id: Optional[str] = None,
366
+ model_group_name: Optional[str] = None,
367
+ ) -> GetExecutionReportResult:
363
368
  """
364
369
 
365
370
  Args:
366
- execution_id: the batch execution id to get the current status of
371
+ execution_id: The batch execution id to get the report for.
372
+ model_id: The model ID. This is the display name(identifier), not the UUID.
373
+ model_group_name: The model group name.
367
374
 
368
375
  Returns:
369
- A full report of all the events that occurred as part of the execution job
370
-
376
+ A full report of all the events that occurred as part of the execution job.
371
377
  """
372
378
  try:
373
379
  self.logging_client = (
@@ -383,7 +389,9 @@ class BatchJobManagerClient:
383
389
  try:
384
390
  execution_log_response: ReadLogsResponse = (
385
391
  self.logging_client.read_execution_models_logs(
386
- execution_id=execution_id
392
+ execution_id=execution_id,
393
+ model_id=model_id,
394
+ model_group_name=model_group_name,
387
395
  )
388
396
  )
389
397
  execution_logs = execution_log_response.log_line
@@ -49,15 +49,41 @@ class LoggingClient:
49
49
 
50
50
  def read_build_logs(
51
51
  self,
52
- build_id=None,
53
- before_offset=None,
54
- after_offset=None,
55
- max_number_of_results=None,
56
- log_text_filter=None,
57
- ):
52
+ build_id: Optional[str] = None,
53
+ before_offset: Optional[str] = None,
54
+ after_offset: Optional[str] = None,
55
+ max_number_of_results: Optional[int] = None,
56
+ log_text_filter: Optional[str] = None,
57
+ model_id: Optional[str] = None,
58
+ model_group_name: Optional[str] = None,
59
+ ) -> ReadLogsResponse:
60
+ """
61
+ Read logs for a remote build.
62
+
63
+ Args:
64
+ build_id: The build ID to fetch logs for
65
+ before_offset: Optional offset to read logs before this point
66
+ after_offset: Optional offset to read logs after this point
67
+ max_number_of_results: Optional maximum number of log lines to return
68
+ log_text_filter: Optional text filter to search for in logs
69
+ model_id: The model ID. This is the display name(identifier), not the UUID.
70
+ model_group_name: The model group name.
71
+
72
+ Returns:
73
+ ReadLogsResponse containing the log lines
74
+
75
+ Raises:
76
+ FrogmlException: If reading logs fails
77
+ """
58
78
  try:
79
+ remote_build_source = RemoteBuildSource(
80
+ build_id=build_id,
81
+ model_id=model_id,
82
+ model_group_name=model_group_name,
83
+ )
84
+
59
85
  response = self.read_logs(
60
- source=LogSource(remote_build=RemoteBuildSource(build_id=build_id)),
86
+ source=LogSource(remote_build=remote_build_source),
61
87
  before_offset=before_offset,
62
88
  after_offset=after_offset,
63
89
  log_text_filter=log_text_filter,
@@ -70,20 +96,44 @@ class LoggingClient:
70
96
 
71
97
  def read_model_runtime_logs(
72
98
  self,
73
- build_id=None,
74
- deployment_id=None,
75
- before_offset=None,
76
- after_offset=None,
77
- max_number_of_results=None,
78
- log_text_filter=None,
99
+ build_id: Optional[str] = None,
100
+ deployment_id: Optional[str] = None,
101
+ before_offset: Optional[str] = None,
102
+ after_offset: Optional[str] = None,
103
+ max_number_of_results: Optional[int] = None,
104
+ log_text_filter: Optional[str] = None,
105
+ model_id: Optional[str] = None,
106
+ model_group_name: Optional[str] = None,
79
107
  ) -> ReadLogsResponse:
108
+ """
109
+ Read logs for a model runtime (deployment).
110
+
111
+ Args:
112
+ build_id: The build ID to fetch logs for
113
+ deployment_id: The deployment ID to fetch logs for
114
+ before_offset: Optional offset to read logs before this point
115
+ after_offset: Optional offset to read logs after this point
116
+ max_number_of_results: Optional maximum number of log lines to return
117
+ log_text_filter: Optional text filter to search for in logs
118
+ model_id: The model ID. This is the display name(identifier), not the UUID.
119
+ model_group_name: The model group name.
120
+
121
+ Returns:
122
+ ReadLogsResponse containing the log lines
123
+
124
+ Raises:
125
+ FrogmlException: If reading logs fails
126
+ """
80
127
  try:
128
+ model_runtime_source = ModelRuntimeSource(
129
+ build_id=build_id,
130
+ deployment_id=deployment_id,
131
+ model_id=model_id,
132
+ model_group_name=model_group_name,
133
+ )
134
+
81
135
  response = self.read_logs(
82
- source=LogSource(
83
- model_runtime=ModelRuntimeSource(
84
- build_id=build_id, deployment_id=deployment_id
85
- )
86
- ),
136
+ source=LogSource(model_runtime=model_runtime_source),
87
137
  before_offset=before_offset,
88
138
  after_offset=after_offset,
89
139
  log_text_filter=log_text_filter,
@@ -96,19 +146,41 @@ class LoggingClient:
96
146
 
97
147
  def read_execution_models_logs(
98
148
  self,
99
- execution_id,
100
- before_offset=None,
101
- after_offset=None,
102
- max_number_of_results=None,
103
- log_text_filter=None,
149
+ execution_id: str,
150
+ before_offset: Optional[str] = None,
151
+ after_offset: Optional[str] = None,
152
+ max_number_of_results: Optional[int] = None,
153
+ log_text_filter: Optional[str] = None,
154
+ model_id: Optional[str] = None,
155
+ model_group_name: Optional[str] = None,
104
156
  ) -> ReadLogsResponse:
157
+ """
158
+ Read logs for a model inference execution (batch job).
159
+
160
+ Args:
161
+ execution_id: The execution/inference job ID to fetch logs for
162
+ before_offset: Optional offset to read logs before this point
163
+ after_offset: Optional offset to read logs after this point
164
+ max_number_of_results: Optional maximum number of log lines to return
165
+ log_text_filter: Optional text filter to search for in logs
166
+ model_id: The model ID. This is the display name(identifier), not the UUID.
167
+ model_group_name: The model group name.
168
+
169
+ Returns:
170
+ ReadLogsResponse containing the log lines
171
+
172
+ Raises:
173
+ FrogmlException: If reading logs fails
174
+ """
105
175
  try:
176
+ inference_execution_source = InferenceExecutionSource(
177
+ inference_job_id=execution_id,
178
+ model_id=model_id,
179
+ model_group_name=model_group_name,
180
+ )
181
+
106
182
  response = self.read_logs(
107
- source=LogSource(
108
- inference_execution=InferenceExecutionSource(
109
- inference_job_id=execution_id
110
- )
111
- ),
183
+ source=LogSource(inference_execution=inference_execution_source),
112
184
  before_offset=before_offset,
113
185
  after_offset=after_offset,
114
186
  log_text_filter=log_text_filter,
@@ -122,12 +194,25 @@ class LoggingClient:
122
194
  @grpc_try_catch_wrapper("Failed to read logs request")
123
195
  def read_logs(
124
196
  self,
125
- source,
126
- before_offset,
127
- after_offset,
128
- max_number_of_results,
129
- log_text_filter,
197
+ source: LogSource,
198
+ before_offset: Optional[str],
199
+ after_offset: Optional[str],
200
+ max_number_of_results: Optional[int],
201
+ log_text_filter: Optional[str],
130
202
  ) -> ReadLogsResponse:
203
+ """
204
+ Low-level method to read logs from any source.
205
+
206
+ Args:
207
+ source: The log source to read from
208
+ before_offset: Optional offset to read logs before this point
209
+ after_offset: Optional offset to read logs after this point
210
+ max_number_of_results: Optional maximum number of log lines to return
211
+ log_text_filter: Optional text filter to search for in logs
212
+
213
+ Returns:
214
+ ReadLogsResponse containing the log lines
215
+ """
131
216
  response: ReadLogsResponse = self._logging_service.ReadLogs(
132
217
  ReadLogsRequest(
133
218
  source=source,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: frogml
3
- Version: 1.2.35
3
+ Version: 1.2.38
4
4
  Summary: frogml contains the necessary objects and communication tools for using the JFrog ml Platform
5
5
  License: Apache-2.0
6
6
  Keywords: mlops,ml,deployment,serving,model
@@ -1,4 +1,4 @@
1
- frogml/__init__.py,sha256=qCiP-lN6Bb32rwIiGrzBPQVv6qPplDfH17uU5IH8bIU,741
1
+ frogml/__init__.py,sha256=I4yJ_02i6XF65Grp6rwHpt87lTM97-QfQ_XPNBP1DMk,741
2
2
  frogml/_proto/jfml/hosting_gateway/v1/build_upload_url_pb2.py,sha256=pY7-QarLJWbL9uNmZ69RfE7IPVzwpVIhtd3A0wztSNY,1942
3
3
  frogml/_proto/jfml/hosting_gateway/v1/build_upload_url_pb2.pyi,sha256=505I4uUrCmv2hsUw2H5eT-nlkNOCQOWodpvEkH2fHIo,3073
4
4
  frogml/_proto/jfml/hosting_gateway/v1/build_upload_url_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -530,8 +530,8 @@ frogml/_proto/qwak/logging/log_line_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHD
530
530
  frogml/_proto/qwak/logging/log_reader_service_pb2.py,sha256=mGzDgASTP_oJlVcPkId5JxjhpUbh7O_CQ9xbcQRUOXI,2561
531
531
  frogml/_proto/qwak/logging/log_reader_service_pb2.pyi,sha256=KdIIgfFCw0I-51d2dEMZy3zVgkGw4tZNF26WcR5yNz4,3451
532
532
  frogml/_proto/qwak/logging/log_reader_service_pb2_grpc.py,sha256=5iwiKKEWLCgNl6KyUanuUFpsg-159HgiF6ugMvGgW9k,2833
533
- frogml/_proto/qwak/logging/log_source_pb2.py,sha256=KfVCEihMIVtJ2vVMR0jdiFCUsdY9RDJ7YDBVyzps-fk,6170
534
- frogml/_proto/qwak/logging/log_source_pb2.pyi,sha256=YJ3xGWEgG4dF9CvsF_X1dBITgHMxs7IdkGsWQ4G0uNg,18672
533
+ frogml/_proto/qwak/logging/log_source_pb2.py,sha256=7wzXkpjxW6tEYJ-hZJ1s_7eB1G5m2K2_WEjL8NtyfqY,6971
534
+ frogml/_proto/qwak/logging/log_source_pb2.pyi,sha256=9ekSIfto3LP-e2pyVwHjx_ewbDxaHpQf_siyT4zdP_4,20017
535
535
  frogml/_proto/qwak/logging/log_source_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
536
536
  frogml/_proto/qwak/model_descriptor/open_ai_descriptor_pb2.py,sha256=-4tcS6KSdpUK3knQ9YUyQTsMcHFaPTQ3A8kHPOLVPSQ,4203
537
537
  frogml/_proto/qwak/model_descriptor/open_ai_descriptor_pb2.pyi,sha256=7ZaPgYKgRhZvq9LMaj7jWlQxKhQ9fRUDK86SaJvMuu0,11801
@@ -656,7 +656,7 @@ frogml/core/clients/automation_management/client.py,sha256=Dk6SsZGMLaVDLLzvFBysL
656
656
  frogml/core/clients/autoscaling/__init__.py,sha256=A-zuZOWaZf16NjnpX38204m730c5Lde491KaXneGirE,38
657
657
  frogml/core/clients/autoscaling/client.py,sha256=d1BoUH4hBiqoSR6ZM2_Ds6H7gV9HZPM2IIYNDbjPGgY,1299
658
658
  frogml/core/clients/batch_job_management/__init__.py,sha256=zywxYf2JupkIWnGVB2C6ugZs5CrOdxTPrksD5P6uQu4,211
659
- frogml/core/clients/batch_job_management/client.py,sha256=yym_GRJlB2qWnFf58EK2i7iD4llSj3FwmjdmIEdBSRc,22621
659
+ frogml/core/clients/batch_job_management/client.py,sha256=TBN_9MkHXW342PLRepUckuQmA_gLPPrq5VavkkDtnCQ,22979
660
660
  frogml/core/clients/batch_job_management/executions_config.py,sha256=tyQbNiIAo3U4t_vyQp8nY17U0oQIyuE5GLW5WqhDxjA,7045
661
661
  frogml/core/clients/batch_job_management/results.py,sha256=nrFGZ3y538FBhej94CYV4cwqQssK1aUQOLGubYdQVrc,1846
662
662
  frogml/core/clients/build_orchestrator/__init__.py,sha256=ReW7Lbjws06MbVlCTRdsymDZiS2CKuczXIZ1xnPKSdg,105
@@ -691,7 +691,7 @@ frogml/core/clients/kube_deployment_captain/client.py,sha256=la4V7WsVL1z4zuLQtPZ
691
691
  frogml/core/clients/location_discovery/__init__.py,sha256=sqGQ75YHFE6nvOcir38fykUUmAa6cFEIze8PJYgYWRc,44
692
692
  frogml/core/clients/location_discovery/client.py,sha256=ZcBbbLqzZ9E7oLyamBTLTpp611LldhfFOSkzWroyIQg,2895
693
693
  frogml/core/clients/logging_client/__init__.py,sha256=1OCHnigQBYThBwGbxCreYA0BgP0HcuLFzNEWd3Yxh-c,34
694
- frogml/core/clients/logging_client/client.py,sha256=vq2Fv7UAEnrG910Npp1COxxWQ2_NWofbAStPkLhiz1w,4836
694
+ frogml/core/clients/logging_client/client.py,sha256=ZTRRPrcM2cqrZX9T3DvIr0YICrhDK91P4CDP-ei_ZjQ,8599
695
695
  frogml/core/clients/model_group_management/__init__.py,sha256=f-nExP4vGWoWMUrRstY8QdtPqXnbsl2Ux0KfFkvGBkg,47
696
696
  frogml/core/clients/model_group_management/client.py,sha256=F8YCbfyphcljb8WxpeY7H7wnPpksyaKQ2ZOKi03RU6M,2016
697
697
  frogml/core/clients/model_management/__init__.py,sha256=vjWVP8MjmK4_A70WOgJqa6x24AeLK-ABjGJtogGzw9w,43
@@ -1147,6 +1147,6 @@ frogml_services_mock/mocks/utils/exception_handlers.py,sha256=k_8mez3cwjNjKE9yGQ
1147
1147
  frogml_services_mock/services_mock.py,sha256=y1_h189Ldu5MdVUW4nj-WMBtvUfkM_aKse7UfAb6Rxk,19419
1148
1148
  frogml_services_mock/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1149
1149
  frogml_services_mock/utils/service_utils.py,sha256=ZlB0CnB1J6oBn6_m7fQO2U8tKoboHdUa6ljjkRMYNXU,265
1150
- frogml-1.2.35.dist-info/METADATA,sha256=VJC2cI-AIqs8Ut2FSG7oQQBYQsWpEWl39_C57crPn80,5599
1151
- frogml-1.2.35.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
1152
- frogml-1.2.35.dist-info/RECORD,,
1150
+ frogml-1.2.38.dist-info/METADATA,sha256=dAmb_6Ua2nc4DBFf9lUgTIAM9Qo3LQ5I7MTFhDVF7HI,5599
1151
+ frogml-1.2.38.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
1152
+ frogml-1.2.38.dist-info/RECORD,,