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 +1 -1
- frogml/_proto/qwak/logging/log_source_pb2.py +31 -25
- frogml/_proto/qwak/logging/log_source_pb2.pyi +28 -14
- frogml/core/clients/batch_job_management/client.py +14 -6
- frogml/core/clients/logging_client/client.py +118 -33
- {frogml-1.2.35.dist-info → frogml-1.2.38.dist-info}/METADATA +1 -1
- {frogml-1.2.35.dist-info → frogml-1.2.38.dist-info}/RECORD +8 -8
- {frogml-1.2.35.dist-info → frogml-1.2.38.dist-info}/WHEEL +0 -0
frogml/__init__.py
CHANGED
|
@@ -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\"
|
|
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=
|
|
28
|
-
_globals['_REMOTEBUILDSOURCE']._serialized_end=
|
|
29
|
-
_globals['_MODELRUNTIMESOURCE']._serialized_start=
|
|
30
|
-
_globals['_MODELRUNTIMESOURCE']._serialized_end=
|
|
31
|
-
_globals['_INFERENCEEXECUTIONSOURCE']._serialized_start=
|
|
32
|
-
_globals['_INFERENCEEXECUTIONSOURCE']._serialized_end=
|
|
33
|
-
_globals['_STREAMINGFEATURESETSOURCE']._serialized_start=
|
|
34
|
-
_globals['_STREAMINGFEATURESETSOURCE']._serialized_end=
|
|
35
|
-
_globals['_BATCHFEATURESETSOURCE']._serialized_start=
|
|
36
|
-
_globals['_BATCHFEATURESETSOURCE']._serialized_end=
|
|
37
|
-
_globals['_STREAMINGAGGREGATIONFEATURESETSOURCE']._serialized_start=
|
|
38
|
-
_globals['_STREAMINGAGGREGATIONFEATURESETSOURCE']._serialized_end=
|
|
39
|
-
_globals['_ONLINETYPE']._serialized_start=
|
|
40
|
-
_globals['_ONLINETYPE']._serialized_end=
|
|
41
|
-
_globals['_OFFLINETYPE']._serialized_start=
|
|
42
|
-
_globals['_OFFLINETYPE']._serialized_end=
|
|
43
|
-
_globals['_ROWLEVELTYPE']._serialized_start=
|
|
44
|
-
_globals['_ROWLEVELTYPE']._serialized_end=
|
|
45
|
-
_globals['_COMPACTIONTYPE']._serialized_start=
|
|
46
|
-
_globals['_COMPACTIONTYPE']._serialized_end=
|
|
47
|
-
_globals['_BACKFILLTYPE']._serialized_start=
|
|
48
|
-
_globals['_BACKFILLTYPE']._serialized_end=
|
|
49
|
-
_globals['_REALTIMEFEATUREEXTRACTORSOURCE']._serialized_start=
|
|
50
|
-
_globals['_REALTIMEFEATUREEXTRACTORSOURCE']._serialized_end=
|
|
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
|
-
"""
|
|
75
|
-
|
|
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
|
|
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
|
-
"""
|
|
111
|
-
|
|
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
|
-
"""
|
|
145
|
-
|
|
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(
|
|
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:
|
|
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=
|
|
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,4 +1,4 @@
|
|
|
1
|
-
frogml/__init__.py,sha256=
|
|
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=
|
|
534
|
-
frogml/_proto/qwak/logging/log_source_pb2.pyi,sha256=
|
|
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=
|
|
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=
|
|
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.
|
|
1151
|
-
frogml-1.2.
|
|
1152
|
-
frogml-1.2.
|
|
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,,
|
|
File without changes
|