qwak-core 0.4.272__py3-none-any.whl → 0.4.274__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.
Files changed (64) hide show
  1. frogml_storage/__init__.py +1 -0
  2. frogml_storage/artifactory/__init__.py +1 -0
  3. frogml_storage/artifactory/_artifactory_api.py +315 -0
  4. frogml_storage/authentication/login/__init__.py +1 -0
  5. frogml_storage/authentication/login/_login_cli.py +239 -0
  6. frogml_storage/authentication/login/_login_command.py +74 -0
  7. frogml_storage/authentication/models/__init__.py +3 -0
  8. frogml_storage/authentication/models/_auth.py +24 -0
  9. frogml_storage/authentication/models/_auth_config.py +70 -0
  10. frogml_storage/authentication/models/_login.py +22 -0
  11. frogml_storage/authentication/utils/__init__.py +17 -0
  12. frogml_storage/authentication/utils/_authentication_utils.py +281 -0
  13. frogml_storage/authentication/utils/_login_checks_utils.py +114 -0
  14. frogml_storage/base_storage.py +140 -0
  15. frogml_storage/constants.py +56 -0
  16. frogml_storage/exceptions/checksum_verification_error.py +3 -0
  17. frogml_storage/exceptions/validation_error.py +4 -0
  18. frogml_storage/frog_ml.py +668 -0
  19. frogml_storage/http/__init__.py +1 -0
  20. frogml_storage/http/http_client.py +83 -0
  21. frogml_storage/logging/__init__.py +1 -0
  22. frogml_storage/logging/_log_config.py +45 -0
  23. frogml_storage/logging/log_utils.py +21 -0
  24. frogml_storage/models/__init__.py +1 -0
  25. frogml_storage/models/_download_context.py +54 -0
  26. frogml_storage/models/dataset_manifest.py +13 -0
  27. frogml_storage/models/entity_manifest.py +93 -0
  28. frogml_storage/models/frogml_dataset_version.py +21 -0
  29. frogml_storage/models/frogml_entity_type_info.py +50 -0
  30. frogml_storage/models/frogml_entity_version.py +34 -0
  31. frogml_storage/models/frogml_model_version.py +21 -0
  32. frogml_storage/models/model_manifest.py +60 -0
  33. frogml_storage/models/serialization_metadata.py +15 -0
  34. frogml_storage/utils/__init__.py +12 -0
  35. frogml_storage/utils/_environment.py +21 -0
  36. frogml_storage/utils/_input_checks_utility.py +104 -0
  37. frogml_storage/utils/_storage_utils.py +15 -0
  38. frogml_storage/utils/_url_utils.py +27 -0
  39. qwak/__init__.py +1 -1
  40. qwak/clients/batch_job_management/client.py +39 -0
  41. qwak/clients/instance_template/client.py +6 -4
  42. qwak/clients/prompt_manager/model_descriptor_mapper.py +21 -19
  43. qwak/feature_store/_common/artifact_utils.py +3 -3
  44. qwak/feature_store/data_sources/base.py +4 -4
  45. qwak/feature_store/data_sources/batch/athena.py +3 -3
  46. qwak/feature_store/feature_sets/streaming.py +3 -3
  47. qwak/feature_store/feature_sets/streaming_backfill.py +1 -1
  48. qwak/feature_store/online/client.py +6 -6
  49. qwak/feature_store/sinks/streaming/factory.py +1 -1
  50. qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/git/git_strategy.py +3 -3
  51. qwak/inner/di_configuration/account.py +23 -24
  52. qwak/inner/tool/auth.py +2 -2
  53. qwak/llmops/provider/openai/provider.py +3 -3
  54. qwak/model/tools/adapters/output.py +1 -1
  55. qwak/model/utils/feature_utils.py +12 -8
  56. qwak/model_loggers/artifact_logger.py +7 -7
  57. qwak/tools/logger/logger.py +1 -1
  58. qwak_core-0.4.274.dist-info/METADATA +415 -0
  59. {qwak_core-0.4.272.dist-info → qwak_core-0.4.274.dist-info}/RECORD +61 -25
  60. qwak_services_mock/mocks/batch_job_manager_service.py +24 -1
  61. _qwak_proto/__init__.py +0 -0
  62. _qwak_proto/qwak/__init__.py +0 -0
  63. qwak_core-0.4.272.dist-info/METADATA +0 -53
  64. {qwak_core-0.4.272.dist-info → qwak_core-0.4.274.dist-info}/WHEEL +0 -0
@@ -0,0 +1,415 @@
1
+ Metadata-Version: 2.3
2
+ Name: qwak-core
3
+ Version: 0.4.274
4
+ Summary: Qwak Core contains the necessary objects and communication tools for using the Qwak Platform
5
+ License: Apache-2.0
6
+ Keywords: mlops,ml,deployment,serving,model
7
+ Author: Qwak
8
+ Author-email: info@qwak.com
9
+ Requires-Python: >=3.9,<3.12
10
+ Classifier: License :: OSI Approved :: Apache Software License
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.9
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.7
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Programming Language :: Python :: Implementation :: CPython
19
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
20
+ Provides-Extra: feature-store
21
+ Requires-Dist: PyYAML
22
+ Requires-Dist: cachetools
23
+ Requires-Dist: chevron (==0.14.0)
24
+ Requires-Dist: cloudpickle (==2.2.1) ; extra == "feature-store"
25
+ Requires-Dist: dacite (==1.8.1)
26
+ Requires-Dist: dependency-injector (>=4.0)
27
+ Requires-Dist: filelock
28
+ Requires-Dist: grpcio (>=1.57.0)
29
+ Requires-Dist: joblib (>=1.3.2,<2.0.0)
30
+ Requires-Dist: marshmallow-dataclass (>=8.5.8,<9.0.0)
31
+ Requires-Dist: protobuf (>=3.10,<4) ; python_full_version >= "3.7.1" and python_version < "3.10"
32
+ Requires-Dist: protobuf (>=4.21.6) ; python_version >= "3.10"
33
+ Requires-Dist: pyarrow (>=6.0.0) ; extra == "feature-store"
34
+ Requires-Dist: pyathena (>=2.2.0,!=2.18.0) ; extra == "feature-store"
35
+ Requires-Dist: pydantic
36
+ Requires-Dist: pyspark (==3.4.2) ; extra == "feature-store"
37
+ Requires-Dist: python-jose[cryptography] (>=3.4.0)
38
+ Requires-Dist: python-json-logger (>=2.0.2)
39
+ Requires-Dist: requests
40
+ Requires-Dist: retrying (==1.3.4)
41
+ Requires-Dist: tqdm
42
+ Requires-Dist: typeguard (>=2,<3)
43
+ Requires-Dist: typer
44
+ Project-URL: Home page, https://www.qwak.com/
45
+ Description-Content-Type: text/markdown
46
+
47
+ # Qwak Core
48
+
49
+ Qwak is an end-to-end production ML platform designed to allow data scientists to build, deploy, and monitor their models in production with minimal engineering friction.
50
+ Qwak Core contains all the objects and tools necessary to use the Qwak Platform
51
+
52
+ # Frog ML Storage
53
+
54
+ ## Table of contents:
55
+
56
+ - [Overview](#overview)
57
+ - [Working with Artifactory](#Working-with-Artifactory)
58
+ - [Login by adding authentication details to your python code](#Login-by-adding-authentication-details-to-your-python-code)
59
+ - [Login via environment variables](#Login-via-environment-variables)
60
+ - [Login via cli](#Login-via-cli)
61
+ - [Login by a single command line with options](#Login-by-a-single-command-line-with-options)
62
+ - [Login by interactive flow in Cli](#Login-by-interactive-flow-in-Cli)
63
+ - [Upload ML model to Artifactory](#Upload-ML-model-to-Artifactory)
64
+ - [Download ML model from Artifactory](#Download-ML-model-from-Artifactory)
65
+ - [Upload ML dataset to Artifactory](#Upload-ML-dataset-to-Artifactory)
66
+ - [Download ML dataset from Artifactory](#Download-ML-dataset-from-Artifactory)
67
+ - [Testing](#Testing)
68
+ - [Locally run integration tests using local artifactory](#Locally-run-integration-tests-using-artifactory)
69
+ - [Locally run tests using existing Artifactory](#Locally-run-tests-using-existing-Artifactory)
70
+ - [Packaging](#Packaging)
71
+ - [Linters](#Linters)
72
+
73
+ ## Overview
74
+
75
+ JFrog ML Storage is a smart python client library providing a simple and efficient method of storing and downloading models, model data and datasets from the JFrog platform, utilizing the advanced capabilities of the JFrog platform.
76
+
77
+ ## Working with Artifactory
78
+
79
+ FrogML Storage Library support is available from Artifactory version 7.84.x.
80
+
81
+ To be able to use FrogML Storage with Artifactory, you should authenticate the frogml storage client against Artifactory.
82
+ JFrog implements a credentials provider chain. It sequentially checks each place where you can set the credentials to authenticate with FrogML, and then selects the first one you set.
83
+
84
+ The credentials retrieval order is as follows:
85
+
86
+ 1. [Login by adding authentication details to your python code](#Login-by-adding-authentication-details-to-your-python-code)
87
+ 2. [Login via environment variables](#Login-via-environment-variables)
88
+ 3. [Login via cli](#login-via-cli)
89
+
90
+
91
+ #### Login by adding authentication details to your python code
92
+
93
+ ---
94
+ **NOTE**
95
+
96
+ It is strongly discouraged to use credentials in clear text. Use this method for testing purposes only.
97
+
98
+ ---
99
+
100
+ You can authenticate the FrogML client directly via your Python code, using any of the following credentials (overriding env vars and the credentials in the configuration file):
101
+ - Username and Password
102
+ - Access Token
103
+
104
+ To log in as an anonymous user, log in first via CLI, and then you will be able to log in via Python using only your JFrog Platform domain.
105
+
106
+ Authentication by username and password:
107
+
108
+ ```
109
+ from frogml_storage.frog_ml import FrogMLStorage
110
+ from frogml_storage.authentication.models._auth_config import AuthConfig
111
+
112
+ arti = FrogMLStorage(AuthConfig.by_basic_auth("http://myorg.jfrog.io", <username>, <password>))
113
+ ```
114
+
115
+ Authentication by access token:
116
+
117
+ ```
118
+ from frogml_storage.frog_ml import FrogMLStorage
119
+ from frogml_storage.authentication.models._auth_config import AuthConfig
120
+
121
+ arti = FrogMLStorage(AuthConfig.by_access_token("http://myorg.jfrog.io", <token>))
122
+ ```
123
+
124
+ #### Login via environment variables
125
+
126
+ You can also authenticate the frogml client using the following environment variables:
127
+
128
+ - JF_URL - your JFrog platform domain, for example 'http://myorg.jfrog.io'
129
+ - JF_ACCESS_TOKEN - your artifactory token for this domain. To generate a token, log in to your artifactory, navigate to your FrogML repository and click on "Set Me Up".
130
+
131
+ After setting the environment variables, you can log in to the frogml client without specifying credentials.
132
+
133
+
134
+ ```
135
+ from frogml_storage.frog_ml import FrogMLStorage
136
+ from frogml_storage.authentication.models._auth_config import AuthConfig
137
+
138
+ arti = FrogMLStorage()
139
+ ```
140
+
141
+
142
+ ### Login via cli
143
+
144
+ It is possible to authenticate the frogml client using any of the following methods:
145
+
146
+ 1. Login by a single CLI command
147
+ 2. Interactive flow
148
+
149
+ After each login attempt, the authentication result (success or failure) is printed on the screen.
150
+ If the login attempt succeeded, the authentication details will be saved as frogml configuration file under the path: ~/.frogml/config.json and from that point you can login again without specifying credentials.
151
+
152
+ In both interactive flow and the single command flow, it is possible to authenticate the frogml client by:
153
+
154
+ 1. Username and password
155
+ 2. Access token
156
+ 3. Anonymous authentication
157
+
158
+
159
+
160
+ #### Login by a single command line with options
161
+
162
+ The below examples show the frogml login options using the cli:
163
+
164
+ Login using existing jfrog-cli of frogml configuration files (~/.jfrog/jfrog-cli.conf.v6 or ~/.frogml/config.json, respectively):
165
+
166
+ ```
167
+ frogml login
168
+ ```
169
+ If no configuration file is found, interactive mode will be triggered.
170
+
171
+ Login by username and password:
172
+
173
+ ```
174
+ frogml login --url <artifactory_url> --username <username> --password <password>
175
+ ```
176
+
177
+ Where:
178
+ - artifactory_url is your JFrog platform domain, for example 'http://myorg.jfrog.io'
179
+ - username and password are your artifactory credentials for this domain
180
+
181
+ Login by access token:
182
+
183
+ ```
184
+ frogml login --url <artifactory_url> --token <access_token>
185
+ ```
186
+
187
+ Where:
188
+ - artifactory_url is your JFrog platform domain, for example 'http://myorg.jfrog.io'
189
+ - token - your artifactory token for this domain. To generate a token, log in to your artifactory and navigate to Administration -> User Management -> Access Tokens.
190
+
191
+ Login by anonymous access:
192
+
193
+ ```
194
+ frogml login --url <artifactory_url> --anonymous
195
+ ```
196
+
197
+ #### Login by interactive flow in cli:
198
+
199
+ To start an interactive flow in the cli, run the command:
200
+
201
+ ```
202
+ frogml login --interactive
203
+ ```
204
+
205
+ After executing the command above, the cli prompts two options as follows:
206
+
207
+ ```
208
+ frogml login --interactive
209
+ Please select from the following options:
210
+ 1.Login by jfrog-cli configuration file: ~/.jfrog/jfrog-cli.conf.v6
211
+ 2.Connecting to a new server
212
+ ```
213
+
214
+ On choosing the first option, the cli attempts to retrieve your authentication credentials from your JFrog CLI configuration file and sends them to Artifactory.
215
+
216
+ On choosing the second option, the cli prompts you to input your JFrog platform domain URL. Afterwards, you can select the method you wish to use for authenticating the FrogML library.
217
+
218
+ ```
219
+ Enter artifactory base url: http://myorg.jfrog.io
220
+ Choose your preferred authentication option:
221
+ 0: Username and Password
222
+ 1: Access Token
223
+ 2: Anonymous Access
224
+ ```
225
+
226
+
227
+ ### Upload ML model to Artifactory
228
+
229
+ You can upload a model to a FrogML repository using the upload_model_version() function.
230
+ You can upload a single file or an entire folder.
231
+ This function uses checksum upload, assigning a SHA2 value to each model for retrieval from storage. If the binary content cannot be reused, the smart upload mechanism performs regular upload instead.
232
+ After uploading the model, FrogML generates a file named model-info.json which contains the model name and its related files and dependencies.
233
+
234
+ The version parameter is optional. If not specified, Artifactory will set the version as the timestamp of the time you uploaded the model in your time zone, in UTC format: yyyy-MM-dd-HH-mm-ss.
235
+ Additionally, you can add properties to the model in Artifactory to categorize and label it.
236
+ The function upload_model_version returns an instance of FrogMlModelVersion, which includes the model's name, version, and namespace.
237
+
238
+ The below examples show how to upload a model to Artifactory:
239
+
240
+ ---
241
+ **NOTE**
242
+
243
+ namespace, version, properties, dependencies_files_paths and code_archive_file_path are optional.
244
+ model_path can point to a single file or a directory, in which case the whole directory is uploaded.
245
+ model_type can be written as JSON or as SerializationMetadata object imported from jfrog_ml.serialization_metadata.
246
+ All of SerializationMetadata fields must be populated.
247
+
248
+ ---
249
+
250
+
251
+ Upload an entire folder as model:
252
+
253
+ ```
254
+ from frogml_storage.frog_ml import FrogMLStorage
255
+
256
+ arti = FrogMLStorage()
257
+ arti.upload_model_version(repository=<repository_key>,
258
+ namespace=<namespce>,
259
+ model_name=<model_name>,
260
+ model_path="~/model_to_upload/",
261
+ model_type={"framework": "tensorflow", "framework_version": "2.3.0", "serialization_format": "H5", "runtime": "python", "runtime_version": "3.7"},
262
+ properties={"model_type": "keras", "experiment": "my-exp"},
263
+ dependencies_files_paths=["path/to/req/file1", "path/to/req/file2"],
264
+ code_archive_file_path="path/to/code/archieve/file"
265
+ )
266
+ ```
267
+
268
+ Upload a model with a specified version, and no dependencies and code archive:
269
+
270
+ ```
271
+ from frogml_storage.frog_ml import FrogMLStorage
272
+
273
+ arti = FrogMLStorage()
274
+ arti.upload_model_version(repository=<repository_key>,
275
+ namespace=<namespce>,
276
+ model_name=<model_name>,
277
+ version=<version>,
278
+ model_path="~/model_to_upload/",
279
+ model_type={"framework": "tensorflow", "framework_version": "2.3.0", "serialization_format": "H5", "runtime": "python", "runtime_version": "3.7"}
280
+ )
281
+ ```
282
+
283
+ ---
284
+
285
+ #### Download ML model from Artifactory
286
+
287
+ The below example shows how to download a model from Artifactory:
288
+
289
+ ```
290
+ from frogml_storage.frog_ml import FrogMLStorage
291
+
292
+ arti = FrogMLStorage()
293
+
294
+ arti.download_model_version(repository=<repository_key>,
295
+ namespace=<namespace>,
296
+ model_name=<model_name>,
297
+ target_path="~/models",
298
+ version=<version>)
299
+ ```
300
+
301
+ ---
302
+ **NOTE**
303
+
304
+ The dependencies and code archive cannot be downloaded.
305
+
306
+ ---
307
+
308
+ ### Upload ML dataset to Artifactory
309
+
310
+ Upload an entire folder as dataset:
311
+
312
+
313
+ ```
314
+ from frogml_storage.frog_ml import FrogMLStorage
315
+
316
+ arti = FrogMLStorage()
317
+ arti.upload_dataset_version(repository=<repository_key>,
318
+ namespace=<namespce>,
319
+ dataset_name=<dataset_name>,
320
+ source_path="~/dataset_to_upload/",
321
+ properties={"dataset_type": "kerras", "experiment": "my-exp"})
322
+ ```
323
+
324
+ Upload a dataset with specified version:
325
+
326
+ ```
327
+ from frogml_storage.frog_ml import FrogMLStorage
328
+
329
+ arti = FrogMLStorage()
330
+ arti.upload_dataset_version(repository=<repository_key>,
331
+ namespace=<namespce>,
332
+ dataset_name=<dataset_name>,
333
+ version=<version>,
334
+ source_path="~/dataset_to_upload/")
335
+ ```
336
+
337
+ Upload a single file as a dataset:
338
+
339
+ ```
340
+ from frogml_storage.frog_ml import FrogMLStorage
341
+
342
+ arti = FrogMLStorage()
343
+ arti.upload_dataset_version(repository=<repository_key>,
344
+ namespace=<namespce>,
345
+ dataset_name=<dataset_name>,
346
+ version=<version>,
347
+ source_path="~/dataset_to_upload/config.json")
348
+ ```
349
+
350
+ #### Download ML dataset from Artifactory
351
+
352
+ The below example shows how to download a dataset from Artifactory:
353
+
354
+ ```
355
+ from frogml_storage.frog_ml import FrogMLStorage
356
+
357
+ arti = FrogMLStorage()
358
+
359
+ arti.download_dataset_version(repository=<repository_key>,
360
+ namespace=<namespace>,
361
+ dataset_name=<dataset_name>,
362
+ target_path="~/datasets",
363
+ version=<version>)
364
+ ```
365
+
366
+ ## Testing
367
+
368
+ ### Locally run integration tests using artifactory
369
+
370
+ Prerequisites:
371
+ - A user credentials (username, password)
372
+
373
+ To run the integration tests, use the ```poetry run pytest tests/integrations/test_artifactory_integration.py``` command.
374
+ In addition, you will need to supply your
375
+ ARTIFACTORY_URL in a `http(s)://` format (if not supplied, default will be as defined [here](tests/integrations/conftest.py)), ARTIFACTORY_USERNAME, ARTIFACTORY_PASSWORD.
376
+ the test will create a local repository in RT, will upload and download model and datasets using the provided details,
377
+ and will delete the repository after the test.
378
+
379
+ example:
380
+ ```
381
+ export ARTIFACTORY_URL=<artifactory_url>
382
+ export ARTIFACTORY_USERNAME=<username>
383
+ export ARTIFACTORY_PASSWORD=<password>
384
+
385
+ poetry run pytest tests/integrations/test_artifactory_integration.py
386
+ ```
387
+
388
+ ### Locally run tests using existing Artifactory
389
+
390
+ To run the tests, use the ```pytest``` command pointing it to an existing Artifactory host.
391
+ Prerequisites:
392
+ - A generic local repository in the Artifactory instance
393
+ - A user token or user credentials (username, password)
394
+
395
+ To run the test:
396
+
397
+ ```
398
+ python3 -m pytest tests/integrations/test_artifactory_integration.py --rt_url "<artifactory_url>" --rt_access_token <token> --repo_name <generic-repo-name> -s
399
+ ```
400
+
401
+ ## Packaging
402
+
403
+ ```
404
+ poetry build
405
+ ```
406
+
407
+ ## Linters
408
+ Fix spaces and linebreaks with:
409
+ ```
410
+ make format
411
+ ```
412
+ Run linter check:
413
+ ```
414
+ make format
415
+ ```
@@ -1,11 +1,9 @@
1
- _qwak_proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
1
  _qwak_proto/jfml/hosting_gateway/v1/build_upload_url_pb2.py,sha256=zEXiqCyaQNloO23DGWrilwn1bXoaStuCaiXkcnm3F_o,2436
3
2
  _qwak_proto/jfml/hosting_gateway/v1/build_upload_url_pb2.pyi,sha256=HFrUIrEJFdKls7PhmadzZ-daVPV1i062w-71wPMMPa4,3116
4
3
  _qwak_proto/jfml/hosting_gateway/v1/build_upload_url_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
5
4
  _qwak_proto/jfml/hosting_gateway/v1/hosting_gateway_service_pb2.py,sha256=T0RwhekjgVIlXFY5M9toJNqlZtpZvInh172ZSHiWIZc,3049
6
5
  _qwak_proto/jfml/hosting_gateway/v1/hosting_gateway_service_pb2.pyi,sha256=1ph1Ifv61UeT1aloXi3Ml4Ls5-tkrUUpjtOO16Pd5A0,1690
7
6
  _qwak_proto/jfml/hosting_gateway/v1/hosting_gateway_service_pb2_grpc.py,sha256=zrgMffnpFmrB7dxF6QmdLYRg-OUKsaVj2A3NBBKTXJU,3264
8
- _qwak_proto/qwak/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
7
  _qwak_proto/qwak/administration/account/v1/account_pb2.py,sha256=WM_b2Yzakj2quNp08TdndvjE1tPBzrnGYBsFO4PX094,8229
10
8
  _qwak_proto/qwak/administration/account/v1/account_pb2.pyi,sha256=nVQd1EGvYdJZ4WpsHxqUGK1m9F-ESB0bX7S8d-pziWo,11832
11
9
  _qwak_proto/qwak/administration/account/v1/account_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -603,7 +601,45 @@ _qwak_proto/qwak/workspace/workspace_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXH
603
601
  _qwak_proto/qwak/workspace/workspace_service_pb2.py,sha256=AB3C9S_AbOD7Nx1Ni4j1rW6PNtYTV1zjiqFQk-goQ74,21429
604
602
  _qwak_proto/qwak/workspace/workspace_service_pb2.pyi,sha256=nKKCHwnovZhsy8TSVmdz-Vtl0nviOOoX56HD-41Xo08,13726
605
603
  _qwak_proto/qwak/workspace/workspace_service_pb2_grpc.py,sha256=yKGuexxTBza99Ihe0DSTniV2ZSd_AG47inHenqfi890,27193
606
- qwak/__init__.py,sha256=8jN3thTv7G9Gdxw5tA7nuf_YCiVmgBUIxZDTgvG2Mew,587
604
+ frogml_storage/__init__.py,sha256=1mCSXL7YMxikjtZ5XkdakddCj6I8TUdikdVsLUZnEKI,24
605
+ frogml_storage/artifactory/__init__.py,sha256=C02rcm7kqsZBVA6c6Gztxamj96hn8Aj6BuzYWFRmWbQ,71
606
+ frogml_storage/artifactory/_artifactory_api.py,sha256=z8YX90bCy82BWqMNUdpbbig1qF5CarkIOfP6V96uYYg,11188
607
+ frogml_storage/authentication/login/__init__.py,sha256=ch8UhQwh3o5ddyoJykQ0Bnog5-8qKHmeDpwqny8xMzM,46
608
+ frogml_storage/authentication/login/_login_cli.py,sha256=9Lyt0poCYVYPFaiWWtcX0kO4MncXeZnkQ-GfEnamnfo,8414
609
+ frogml_storage/authentication/login/_login_command.py,sha256=dj9pOanaYg4PMNbF1EbgMXeoIMo1lfoHp5JFNUZFZ5g,2849
610
+ frogml_storage/authentication/models/__init__.py,sha256=-nG08ZWSD2nIa5lqGtn9pidXM_-XLj4ASG_jHATOK84,113
611
+ frogml_storage/authentication/models/_auth.py,sha256=uKo6hxD1jjDGmYeQIJSnKJCOZIE6iTA8LJJs__BTufA,600
612
+ frogml_storage/authentication/models/_auth_config.py,sha256=uDcPXaPRXKDEtAhHEuN-GQTeDg8AUL8FE4aiAByHU_I,2024
613
+ frogml_storage/authentication/models/_login.py,sha256=jcFdiWRqjaVAGG9hiYpPHF0WUNT4DqMqVp1FPFGuwOM,723
614
+ frogml_storage/authentication/utils/__init__.py,sha256=NBT-KjHJrqXYS3sZvWENjq1gmLiyKSN3fXWDl0-rh8k,430
615
+ frogml_storage/authentication/utils/_authentication_utils.py,sha256=WTQRclyGKWTKLfFQEV3Xgq1_aCsKVDZsuhM3WkxeC1k,9730
616
+ frogml_storage/authentication/utils/_login_checks_utils.py,sha256=OQZSJHN9C0ujCaAjYuttBBxyoOrWo0KGLKOw5et__ds,2993
617
+ frogml_storage/base_storage.py,sha256=gbkDRhXhLLJrr72A2vGcQqEHEjCDEk9-n7ye98F3_2k,5606
618
+ frogml_storage/constants.py,sha256=Fx-Dyzkl9e28O2qCvIgyEf2aBuhftXAdbn2BIfXFaGw,1542
619
+ frogml_storage/exceptions/checksum_verification_error.py,sha256=t1muLRYvqza7Q4jo1mYHck9ZoDwlGE7WxcheAFAnIQs,159
620
+ frogml_storage/exceptions/validation_error.py,sha256=_twu_xcL-O7D26qkskuuR-_NcnPPTADIUO9HGY4g0x0,156
621
+ frogml_storage/frog_ml.py,sha256=TavbAqoZ8Q-DYN93nORmT88pcwwLEjkkRb9tp_gFy1o,24182
622
+ frogml_storage/http/__init__.py,sha256=BOXGzjq1gJXlihldaZvMQNGJIdCy-UHWsk3u-bXEZnQ,36
623
+ frogml_storage/http/http_client.py,sha256=jYwe4aHhMRsTjl5fZDlJxaTFuY3RnIcw7P1Wz8Ykz4g,2420
624
+ frogml_storage/logging/__init__.py,sha256=JaBPWQQt3pjoLhUcZtgqPydGlKAWYpSvfPkt2z1Wi90,32
625
+ frogml_storage/logging/_log_config.py,sha256=ytwyRLYr3SyRlo4UpTjLBtlNqVApP9URTVO5m5DN3uU,1162
626
+ frogml_storage/logging/log_utils.py,sha256=MLuQvBrmysiWAeKKq1lHFt3o6DJPyafFWRJNTg9ECaY,711
627
+ frogml_storage/models/__init__.py,sha256=ZoWMjtQ4Bn-ARJqKEUp-XDRbHgaSQJG_1M2S5z91jbQ,47
628
+ frogml_storage/models/_download_context.py,sha256=8Jc5JmQG5mwObQp-CXF-D6dP3xUbZcyHUSdwM-p-8s0,1667
629
+ frogml_storage/models/dataset_manifest.py,sha256=w5ARGQSkRSP7mofsbxOcc9bXORKXIMo5iF1yFGd8Nyw,303
630
+ frogml_storage/models/entity_manifest.py,sha256=BXwJz1q3NIH6QFccnGDG51R3HnHO9-oCeO9qZqaxQg4,2787
631
+ frogml_storage/models/frogml_dataset_version.py,sha256=Uwe50e8eD9XqwARCsa4-iJJqyMQsDqs9E-iuAInvJuA,637
632
+ frogml_storage/models/frogml_entity_type_info.py,sha256=gIoWcm-nqKQRpVg8DJcq8jJE-e7qgR_-EUv6R8wKCFs,1448
633
+ frogml_storage/models/frogml_entity_version.py,sha256=jiDGk3xcZ-OaaTacs6VLshpyUNKYs8qgBOPk1NUJFkY,928
634
+ frogml_storage/models/frogml_model_version.py,sha256=2pVHW-BhowBcIScLZzWj5SH0abAirP3cDvXeq334lJI,631
635
+ frogml_storage/models/model_manifest.py,sha256=NEyUTt0ZbLbv-47nb_yJJrA0xnTCk67SdEUcZ09tjr8,2200
636
+ frogml_storage/models/serialization_metadata.py,sha256=KOJ9Yj0XGbYudpcUBMh67Hd7VohmoWsYOvhD-L2yzyY,347
637
+ frogml_storage/utils/__init__.py,sha256=HQUWfuGUIPZY7kfS795TRW8BQ4WmNqrNjS7lUrbxCdk,299
638
+ frogml_storage/utils/_environment.py,sha256=NEnRxaFdRDi3UA33IVTSfQxqc9ZB6nV9YlHDmT5bIkI,650
639
+ frogml_storage/utils/_input_checks_utility.py,sha256=ZUvkxhcTcbSKtpSo5ePWha3Ca5xohxIpiAlZlpcQ3xk,3221
640
+ frogml_storage/utils/_storage_utils.py,sha256=HB2g7uY5A3b33yIcAUM1OjHb5jWsnpESsiDrEviQwrI,366
641
+ frogml_storage/utils/_url_utils.py,sha256=NUEfz9Fp1iE8b676-A5wrMlSTsJVRKrUhcUItOFAJD8,821
642
+ qwak/__init__.py,sha256=P5ciba6jp-mh0N5zd9Lk_21ggEtl8c6HxAeHazCeQVM,587
607
643
  qwak/automations/__init__.py,sha256=qFZRvCxUUn8gcxkJR0v19ulHW2oJ0x6-Rif7HiheDP4,1522
608
644
  qwak/automations/automation_executions.py,sha256=5MeH_epYYWb8NKXgAozwT_jPyyUDednBHG7izloi7RY,3228
609
645
  qwak/automations/automations.py,sha256=3yx8e2v0uSKDnXbqyknasyEoQ5vxGni6K40Hbi1_zkk,12599
@@ -639,7 +675,7 @@ qwak/clients/automation_management/client.py,sha256=oO3CihRxPPPlIWN764Dmf4hmWChH
639
675
  qwak/clients/autoscaling/__init__.py,sha256=A-zuZOWaZf16NjnpX38204m730c5Lde491KaXneGirE,38
640
676
  qwak/clients/autoscaling/client.py,sha256=55Pc2yc8dLl2C2MSdO2g5E25vYgkmvJSxXnKZriP_dk,1240
641
677
  qwak/clients/batch_job_management/__init__.py,sha256=zywxYf2JupkIWnGVB2C6ugZs5CrOdxTPrksD5P6uQu4,211
642
- qwak/clients/batch_job_management/client.py,sha256=L0vq9n_z0pUBIvv97B3tQt4iIEZHEZTvLdLmCWMCHeo,21054
678
+ qwak/clients/batch_job_management/client.py,sha256=4fwZtljRW93Yz6hqNEpR4YP9T7s7rYXLn2jR7hUE9B8,22453
643
679
  qwak/clients/batch_job_management/executions_config.py,sha256=LYf9j8T5W1M1EK6cjXPwAmiyGNR7wfdjNCmeKNhiREU,6882
644
680
  qwak/clients/batch_job_management/results.py,sha256=nrFGZ3y538FBhej94CYV4cwqQssK1aUQOLGubYdQVrc,1846
645
681
  qwak/clients/build_management/__init__.py,sha256=oXurHX6Kho5X-fOuuNHB3B9oMX6ejYUqh6GWv5qJyjw,43
@@ -663,7 +699,7 @@ qwak/clients/file_versioning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
663
699
  qwak/clients/file_versioning/client.py,sha256=ywOy9olB4mekjQQrKUufAbaC-3sWzQnqd3ChcwrAJzc,2505
664
700
  qwak/clients/file_versioning/file_tag_filter.py,sha256=5pVJ0mGq9DEOqQkg7H-jjSbsmnWusO4-_0Jpz4DhDwo,885
665
701
  qwak/clients/instance_template/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
666
- qwak/clients/instance_template/client.py,sha256=7c4mQG7tzp-OmNhBEBYxIqAYTNYtCRe76j5X1aP2Xk4,2509
702
+ qwak/clients/instance_template/client.py,sha256=8EjXzMLTeGfywO1kDycVr4MxT3Z6gF7nX8B9i03JRYQ,2565
667
703
  qwak/clients/integration_management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
668
704
  qwak/clients/integration_management/integration_manager_client.py,sha256=-pNY6iQU8du46wvRCiTKKCi23RcCNXr9La_0oG0mJo0,1225
669
705
  qwak/clients/integration_management/integration_utils.py,sha256=EVNsM5ItlGwpfqfZPayJCrTiZa0AaR241ui4QvzcLVg,953
@@ -680,7 +716,7 @@ qwak/clients/model_management/client.py,sha256=LHJlR12plQCjv0TtuozJ4Da91M7C-ay6G
680
716
  qwak/clients/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
681
717
  qwak/clients/project/client.py,sha256=Np4vDU4iPndGtWTF_bH2CqepCQHw49whvsq23uLMMJs,2484
682
718
  qwak/clients/prompt_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
683
- qwak/clients/prompt_manager/model_descriptor_mapper.py,sha256=rRQXjqLvq7SVxYSM5_IFo_6z70Kzf5WPOtxFzm-69m0,7313
719
+ qwak/clients/prompt_manager/model_descriptor_mapper.py,sha256=QDLPImRIPv9Jrdtg03oL7zgKvrWDXmzK0QXkUFAo1bs,7395
684
720
  qwak/clients/prompt_manager/prompt_manager_client.py,sha256=Mg1uqJjwj57jFfNKx6tomzfOe6C8keTKpxvXFSPo0yA,6952
685
721
  qwak/clients/prompt_manager/prompt_proto_mapper.py,sha256=ybLsPz5nt4BsgBFk2RYk0tFwbNpHTsCOp93k8ALXmr4,9233
686
722
  qwak/clients/secret_service/__init__.py,sha256=TdQl1lgplXCKVHYSN4feRIAoonZ7XDz50zALjwVDcM4,40
@@ -712,7 +748,7 @@ qwak/exceptions/qwak_remote_build_failed.py,sha256=JgrYwCQGclCCcpSkYk2FKqhkEk45a
712
748
  qwak/exceptions/qwak_suggestion_exception.py,sha256=3sIK6s3OB3G0NLC_fGV1WkAo_tHNjH-A5vaehxmkoek,746
713
749
  qwak/feature_store/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
714
750
  qwak/feature_store/_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
715
- qwak/feature_store/_common/artifact_utils.py,sha256=iIdz6EfFuE_yub6g5KXlOOMt7TA7pEuuLwjlzVSRpO8,1977
751
+ qwak/feature_store/_common/artifact_utils.py,sha256=0u90A3Fxdw5_QFWaK80VJoJh907ffy-GIuVMku7cyL0,1979
716
752
  qwak/feature_store/_common/feature_set_utils.py,sha256=dhtPWnwv1nB3h3EA8FAYklx1qGkO_Dj1jecaBGNNpew,8634
717
753
  qwak/feature_store/_common/functions.py,sha256=kSNYJ7dy48NN09HG9asm4ibQh0JaCGcZYsRDjRWlUHE,659
718
754
  qwak/feature_store/_common/packaging.py,sha256=eyTyjIB_C6wGHcdU7xR5u7-N2Ld98s4LPU_iZtcbRO0,8122
@@ -721,11 +757,11 @@ qwak/feature_store/_common/source_code_spec_factory.py,sha256=zDif0nlWs43T87-k2V
721
757
  qwak/feature_store/_common/value.py,sha256=6aN3101DvEDUJalNL1LrzH32wi9SVhl0ZpsGHcFJZzg,323
722
758
  qwak/feature_store/data_sources/__init__.py,sha256=IKv3UDhcaCm6VagPGv1AvdYu_gxHUc69mbNOG96kEsU,2316
723
759
  qwak/feature_store/data_sources/attributes.py,sha256=6xbotlaWcrqmW5cjCET57hyCRDy8I2a2aoo5BGcIE4I,791
724
- qwak/feature_store/data_sources/base.py,sha256=w9EJOp-RnbA6oxoAvKOF6LKUCEWOkN8gjG9uNQUYJ1M,4178
760
+ qwak/feature_store/data_sources/base.py,sha256=KYP1VLr_Br_4se3-JxKWC2dj5CjMM5Mli7OOz_NZtCQ,4170
725
761
  qwak/feature_store/data_sources/batch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
726
762
  qwak/feature_store/data_sources/batch/_batch.py,sha256=V-VLVgUVPN1Mfk-brNYl0nPczqRU-GYOB7Xy-3-O0zI,197
727
763
  qwak/feature_store/data_sources/batch/_jdbc.py,sha256=k045Rm5iMx2pXYvif4C4vdZt7tbVgAt-3ThH3cP2rTM,695
728
- qwak/feature_store/data_sources/batch/athena.py,sha256=sdP68PkWsAWE1U-5VpZnGFF9aNUTOqns4JQDeTDqI5k,10900
764
+ qwak/feature_store/data_sources/batch/athena.py,sha256=Ogrr3Za7owdWu8cWsa81UnvZ4_R2UFA1YMe8UjkYroA,10902
729
765
  qwak/feature_store/data_sources/batch/big_query.py,sha256=H3rEWGxXJjIQNFiyZ9c6JgcSyeWzSeZzh59y8ZjAn0U,3117
730
766
  qwak/feature_store/data_sources/batch/clickhouse.py,sha256=FELh-70EIyPeYap3Gj8maoalXdXbJ5kBvnfvaiw6Kk4,2158
731
767
  qwak/feature_store/data_sources/batch/csv.py,sha256=wdn8ARBYebTcNojaji8OYXnKlx_U1G7sFLChGffMxfg,2076
@@ -765,8 +801,8 @@ qwak/feature_store/feature_sets/context.py,sha256=zV6r0O70cfM4pmxlfC6xxAtro-wBhe
765
801
  qwak/feature_store/feature_sets/execution_spec.py,sha256=SXlhgNJeFDIKvrH35ZOyjBqGUesdoxjWkPgHmm518Y0,1877
766
802
  qwak/feature_store/feature_sets/metadata.py,sha256=ckr-zr0hZgsK-tRWucMomF7Tj8XIYcp_cnNGwtMV4mA,1814
767
803
  qwak/feature_store/feature_sets/read_policies.py,sha256=ZVMRiducxfb5YbU0NQQDPb78BH5fRttsE5y2TL7Jaj4,6820
768
- qwak/feature_store/feature_sets/streaming.py,sha256=QScKkdCGF8TqVJscB-8YE4s9Uu--3VT2C7KwaRUMIpw,25159
769
- qwak/feature_store/feature_sets/streaming_backfill.py,sha256=eb5grj467Z4xEujUpCMpmXda1_W82G7NaxR6cw_AHbQ,9584
804
+ qwak/feature_store/feature_sets/streaming.py,sha256=G0Prg6hyjrzimL0u7tA71G-Bq3mnn57ZZCneMfudL0Y,25161
805
+ qwak/feature_store/feature_sets/streaming_backfill.py,sha256=NInPNnc0WYx2FDsjaOt5woTO7EtzgrZCbMB_Ull0ux0,9585
770
806
  qwak/feature_store/feature_sets/transformations/__init__.py,sha256=TtzeMNhqxuYu8NIxqBCcGHJoA-B8389RTIHrDMvpMbw,857
771
807
  qwak/feature_store/feature_sets/transformations/aggregations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
772
808
  qwak/feature_store/feature_sets/transformations/aggregations/aggregations.py,sha256=MENQyuDEG5G4TQs7fd1L1FEfP4kWd0LaHbG61Kw4rbY,14117
@@ -781,14 +817,14 @@ qwak/feature_store/offline/_offline_serving_validations.py,sha256=a3Ga9-IPTS0TPf
781
817
  qwak/feature_store/offline/client_v2.py,sha256=MKIlVGohW7aMmCpBUKE9wP9X6gtU_pLVfOgnBn2Bp98,14393
782
818
  qwak/feature_store/offline/feature_set_features.py,sha256=Eh_rPz_m12cAQvrhIF-xtA-ZGVKy1HlgKJdjNvsmPoo,739
783
819
  qwak/feature_store/online/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
784
- qwak/feature_store/online/client.py,sha256=fBD48NDpocX01qvFVYB5Qd4JRM1InCjdeQgoMM8nQ0Q,12911
820
+ qwak/feature_store/online/client.py,sha256=V317ol5IXslhmHmUlmucc-yBXaByj6HuA6LdzGWDSTk,12929
785
821
  qwak/feature_store/online/endpoint_utils.py,sha256=Lx5Wvvg7teJGXP3SOUPPmYQeVjSve2b0hQlqhs13R5M,2210
786
822
  qwak/feature_store/sinks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
787
823
  qwak/feature_store/sinks/base.py,sha256=FvNz9aabvYHT-3vZdHdtEnlFQ0tyvsnspkPnWt2lTdU,360
788
824
  qwak/feature_store/sinks/kafka.py,sha256=P9gPxotQMyC3qr8xZyL_7g65amnzeqpvz6jutwRoHiY,1826
789
825
  qwak/feature_store/sinks/streaming/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
790
826
  qwak/feature_store/sinks/streaming/attachment.py,sha256=sONswzyTZlxB9OEDc1DzE_Et6AI7gBi_T--NSY3MeOw,1031
791
- qwak/feature_store/sinks/streaming/factory.py,sha256=VctrlU9oHNPniTb43eACXUwM2K2pDskd0LD4g_Cp8uY,2347
827
+ qwak/feature_store/sinks/streaming/factory.py,sha256=8gGJs6dAzYZVhTIyvlmnQgm7KqYe5xa9eBGUyigMPSw,2361
792
828
  qwak/feature_store/validations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
793
829
  qwak/feature_store/validations/validation_options.py,sha256=f4kqv8j-lyvWLGnaFlUQNmAleZ3hkTZZs0CJPcsk18I,2656
794
830
  qwak/feature_store/validations/validation_response.py,sha256=e052KUs2qzYvh5Kuo4XbnscRK_1jcT6HwqwdL-4qH20,3783
@@ -824,7 +860,7 @@ qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strat
824
860
  qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/folder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
825
861
  qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/folder/folder_strategy.py,sha256=Cry97YuBP16TZT6iL512Gmqp-U1J-UDxdARt-E1MD2M,5057
826
862
  qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
827
- qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/git/git_strategy.py,sha256=QDK3upq7DNeL6zmegFf3sHg3kw61AGcxzjDPlv4nusA,5944
863
+ qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/git/git_strategy.py,sha256=xt2Ywwf0zirPkpLCu_RgtZp7AxFU-qEboqK6DZdNb5Y,5946
828
864
  qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/strategy.py,sha256=iRl-au3V6KbKIY-doYSAaqiS5Bt2_w3ZIvUw9xwSK64,1424
829
865
  qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/zip/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
830
866
  qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/zip/zip_strategy.py,sha256=z1PHzvhUWtEqcppE5Ju4BRbwvZ07kodNglkl6AwvbfI,2258
@@ -846,7 +882,7 @@ qwak/inner/build_logic/tools/text.py,sha256=tH-v19Mt8l90sMVxku5XRtrderT0qdRqJ-jL
846
882
  qwak/inner/build_logic/trigger_build_context.py,sha256=n5s7MRk41h8cxPI3IVuqMQUVuCc-D8A7Hhq35YuuAps,200
847
883
  qwak/inner/const.py,sha256=cGC_pvrMxOgA7601PU4X_nlQwnov1Sfolxg5ZqpPH8s,1135
848
884
  qwak/inner/di_configuration/__init__.py,sha256=hWlDSkum6Vi42I2weMRWucKwcWEdxpyOOEHFxjbBzfI,1765
849
- qwak/inner/di_configuration/account.py,sha256=XhMgtxbczjNqXpuGZQcFjtXkTE4xefjQru8Q6LlhL1M,7324
885
+ qwak/inner/di_configuration/account.py,sha256=UinLhBLxg9wyNZzXw9zVNC1GddT3gVdmQJ5_lxNcy1g,7257
850
886
  qwak/inner/di_configuration/config.yml,sha256=GUvaZMWIDIR_d7hFcPVG_kHdCwpERKH1AFDakG3vqI4,242
851
887
  qwak/inner/di_configuration/containers.py,sha256=1Vvs_p5laNcduDWH47dZpJJa2xu3v5P5w3eFTtPWgbA,1136
852
888
  qwak/inner/di_configuration/session.py,sha256=Pwqapcu-0dsbb5dDn7ZGewVk4bYRN9sWk6ity72IDqY,452
@@ -858,7 +894,7 @@ qwak/inner/runtime_di/__init__.py,sha256=ylaHwo2Hlq3pmeziA0Ip87DMnkcuBffKKi0tTH7
858
894
  qwak/inner/runtime_di/containers.py,sha256=-AREM-IUAd9JhrhQablqixxpj4L9Tk1iQkK1fA5YbrA,545
859
895
  qwak/inner/singleton_meta.py,sha256=1cU99I0f9tjuMQLMJyLsK1oK3fZJMsO5-TbRHAMXqds,627
860
896
  qwak/inner/tool/__init__.py,sha256=DDoMZk7LIZNfu63Ft0mLE5wflwlQoghAJ1ZmMAcAeVE,74
861
- qwak/inner/tool/auth.py,sha256=yw4XgIviPQ83hslb5T3T0AoosuOOEdRmlZoFvg79oPA,7488
897
+ qwak/inner/tool/auth.py,sha256=5T3q4lcCsgtXQZ4_xEUiCNjMKAU9E1GwRbSz6PA4-g8,7459
862
898
  qwak/inner/tool/grpc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
863
899
  qwak/inner/tool/grpc/grpc_auth.py,sha256=nHfIk2R5ljCvU8hsgk_X6grfNhVrbTvQe6uJffe5W5o,2291
864
900
  qwak/inner/tool/grpc/grpc_tools.py,sha256=ArtsEZz5V-YxOVE6vH_UHJwOn6gAJVIolda8hF6qwMs,7256
@@ -922,7 +958,7 @@ qwak/llmops/provider/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
922
958
  qwak/llmops/provider/chat.py,sha256=dec-IKGzkECb5tz63HNK0Fx9Tm4ukQ4kkYFEr6bA7co,1582
923
959
  qwak/llmops/provider/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
924
960
  qwak/llmops/provider/openai/client.py,sha256=G20TB3LW4amdOu-_7526xBDnvpNop7c_QvhLz7hSLUs,4462
925
- qwak/llmops/provider/openai/provider.py,sha256=E0LnEfFFidrXMcOG-sI3teZvNyzApmhbi1ZB0MDnDcE,3042
961
+ qwak/llmops/provider/openai/provider.py,sha256=TFdbo9NWPPKkx8yNuAfDkVmYFvVW9IcAg_NBtCowW4Q,3044
926
962
  qwak/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
927
963
  qwak/model/_entity_extraction.py,sha256=-h66QcJS0bzrzHMqdvxybHj3lgPbQhoVHnt7YKAFjKg,4626
928
964
  qwak/model/adapters/__init__.py,sha256=jMM_0Nf6_vCKccsRB0izs8odCXYlXt-u1sXGh4PcpX4,1739
@@ -970,7 +1006,7 @@ qwak/model/tools/adapters/input_adapters/image_input.py,sha256=NL869uiD5TjI3WzjQ
970
1006
  qwak/model/tools/adapters/input_adapters/json_input.py,sha256=nP_1EgJvmv4rkXR6tLYrJwf4p-FAfFQOTxY-LEfAJaU,608
971
1007
  qwak/model/tools/adapters/input_adapters/string_input.py,sha256=K2SIJy92C-1eX1ReT8iqeFAU8UQWF2d88Zv79jsMrac,151
972
1008
  qwak/model/tools/adapters/input_adapters/tf_tensor_input.py,sha256=tNid73S0WOLjvD6tKrO2BsgUa-eJaMmCkRs4ucVQXDU,1363
973
- qwak/model/tools/adapters/output.py,sha256=GZa-8LD25vkDccupxNEvlmrept3hgL94BZ2pGABYmmQ,2712
1009
+ qwak/model/tools/adapters/output.py,sha256=tj2kj7TQiH0b7N1C3j-EPYWESoNiwSyqazV8gbkMIbY,2716
974
1010
  qwak/model/tools/adapters/output_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
975
1011
  qwak/model/tools/adapters/output_adapters/base_output.py,sha256=VXiwnA1499RQSfdFbEU769lRhuOqWTBPfXglKaymhRc,343
976
1012
  qwak/model/tools/adapters/output_adapters/dataframe_output.py,sha256=tJwG798QCarqXSfD8Je-E3RNwvW9KskcgAYoLioPFns,798
@@ -980,9 +1016,9 @@ qwak/model/tools/adapters/output_adapters/tf_tensor_output.py,sha256=Xg98LMoldKE
980
1016
  qwak/model/tools/run_model_locally.py,sha256=xRYOOi-BLAs-QRTrSWxKPQLeTg5j3FSmImDq6e6lLro,2289
981
1017
  qwak/model/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
982
1018
  qwak/model/utils/extract_wrapped_function.py,sha256=uIle1zL8vbmeS3PGAuaNFLIUQAsvpuzk3LlH-Teba94,320
983
- qwak/model/utils/feature_utils.py,sha256=jB4pfmhqN2_B4THR7YADlCWbymU3cm_8u2RzTegrv_w,2389
1019
+ qwak/model/utils/feature_utils.py,sha256=bCeWZgsKSvGjbQOfLKubEJNec6Gp1Gbxug_fsO3wReo,2491
984
1020
  qwak/model_loggers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
985
- qwak/model_loggers/artifact_logger.py,sha256=Emv8eSpgxJ_5_uCiNLUloTNdXPCtWC0pJDcWMcc6A78,3909
1021
+ qwak/model_loggers/artifact_logger.py,sha256=kXYfnVu7zvInA3CQlPFdIQLWOUGpZ6wNTprY5WE6Mvo,3889
986
1022
  qwak/model_loggers/data_logger.py,sha256=aTRnRwKmKUFZq9SRg4sY-b1yGDY2XB-pExlQ0WlcH0k,5629
987
1023
  qwak/model_loggers/model_logger.py,sha256=WxKLEpfzDaRn3kanrI0kj4zqqKQrwT2sin1IS1WNEA8,852
988
1024
  qwak/qwak_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1013,7 +1049,7 @@ qwak/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1013
1049
  qwak/testing/fixtures.py,sha256=tjWIvdZ2nIfNPs6VtUeGx5coJepQVMUWemKGtqUYPzM,318
1014
1050
  qwak/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1015
1051
  qwak/tools/logger/__init__.py,sha256=i70JxYs7RGOaUrcYAHkakLqyUt486qJyEY1cXFvkk9Y,107
1016
- qwak/tools/logger/logger.py,sha256=VmseUKV8fWpJ7yYFHjE3nQu6_2dU-t1-PQrY6Mnt8nc,9598
1052
+ qwak/tools/logger/logger.py,sha256=aGCsimvkfBF4eVPCqgwQc0LVuQZyenheNUmNiOSruK4,9606
1017
1053
  qwak/tools/logger/logging.yml,sha256=UWC2i3NVKT3j5S8_SapzqClDzXLIEAurzNIXa2tS4UA,1941
1018
1054
  qwak/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1019
1055
  qwak/utils/datetime_utils.py,sha256=3zK7PUrerMlwB7U6WeuYwMAclVMfPqBNZihNRyIVMs4,581
@@ -1036,7 +1072,7 @@ qwak_services_mock/mocks/audience_service_api.py,sha256=2PvXpzKBR-Dnu9Fmb70UJn-h
1036
1072
  qwak_services_mock/mocks/authentication_service.py,sha256=79A8hmYUsg4i7EwyGG54CidbANlp-ub4f716BbLCaJQ,1166
1037
1073
  qwak_services_mock/mocks/automation_management_service.py,sha256=C9rYKMy0hzOTaKTCrTkE5jTnPSenVkLV8DCptBKr02U,8211
1038
1074
  qwak_services_mock/mocks/autoscaling_service_api.py,sha256=YgucRD3ZjhxqttNVSF_HL7u3aDo55LdRSEE7q0fxp3M,1019
1039
- qwak_services_mock/mocks/batch_job_manager_service.py,sha256=HeUZulDtfIlSm2h4cLdByR0voJjOy97m4_YWldg7pqQ,13129
1075
+ qwak_services_mock/mocks/batch_job_manager_service.py,sha256=zVBBBkYdvWFwEXP_VHBH8SBIvJosPt0jHnHlJjuf6AI,14080
1040
1076
  qwak_services_mock/mocks/build_management.py,sha256=LYtrEvDt-lJbNJEP-pFpvAKcS82mAzb2gyoCu1-XCOs,3686
1041
1077
  qwak_services_mock/mocks/build_orchestrator_build_api.py,sha256=mtb6wEZug9zCiMHZVrfsU0YOP59rgBrpvZDjEInG7B8,5004
1042
1078
  qwak_services_mock/mocks/build_orchestrator_build_settings_api.py,sha256=oj_JTxY_3xj8FkgWkxQER_EoBFDqL2g21NPrU31fD6o,1379
@@ -1077,6 +1113,6 @@ qwak_services_mock/mocks/workspace_manager_service_mock.py,sha256=O9ZSwln4T4kHVk
1077
1113
  qwak_services_mock/services_mock.py,sha256=zXtHcX8a_acz7ynxuCBxxVpHpde7aAGjIn6Uw52LY1s,19593
1078
1114
  qwak_services_mock/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1079
1115
  qwak_services_mock/utils/service_utils.py,sha256=ZlB0CnB1J6oBn6_m7fQO2U8tKoboHdUa6ljjkRMYNXU,265
1080
- qwak_core-0.4.272.dist-info/METADATA,sha256=6QwKVVwymTNEAzfNvoarcqgRNGXTLFTD_K_GJ_ZSP7I,2549
1081
- qwak_core-0.4.272.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
1082
- qwak_core-0.4.272.dist-info/RECORD,,
1116
+ qwak_core-0.4.274.dist-info/METADATA,sha256=y4d-7FAjGvZED7BOp-KlfV853gDZPiO3HJu7KfMTUvU,15142
1117
+ qwak_core-0.4.274.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
1118
+ qwak_core-0.4.274.dist-info/RECORD,,