frogml-core 0.0.96__py3-none-any.whl → 0.0.98__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 (63) hide show
  1. frogml_core/__init__.py +1 -1
  2. frogml_core/clients/batch_job_management/client.py +39 -0
  3. frogml_core/clients/instance_template/client.py +6 -4
  4. frogml_core/clients/model_version_manager/client.py +4 -4
  5. frogml_core/clients/prompt_manager/model_descriptor_mapper.py +4 -4
  6. frogml_core/feature_store/_common/artifact_utils.py +3 -3
  7. frogml_core/feature_store/data_sources/batch/athena.py +3 -3
  8. frogml_core/feature_store/feature_sets/context.py +2 -6
  9. frogml_core/feature_store/feature_sets/streaming.py +3 -3
  10. frogml_core/feature_store/feature_sets/streaming_backfill.py +1 -1
  11. frogml_core/feature_store/online/client.py +6 -6
  12. frogml_core/feature_store/sinks/streaming/factory.py +1 -1
  13. frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/git/git_strategy.py +3 -3
  14. frogml_core/inner/di_configuration/account.py +2 -2
  15. frogml_core/inner/tool/auth.py +2 -3
  16. frogml_core/llmops/provider/openai/provider.py +3 -3
  17. frogml_core/model/tools/adapters/output.py +1 -1
  18. frogml_core/tools/logger/logger.py +1 -1
  19. frogml_core/utils/proto_utils.py +1 -1
  20. frogml_core-0.0.98.dist-info/METADATA +411 -0
  21. {frogml_core-0.0.96.dist-info → frogml_core-0.0.98.dist-info}/RECORD +62 -24
  22. frogml_services_mock/mocks/batch_job_manager_service.py +23 -0
  23. frogml_storage/__init__.py +1 -0
  24. frogml_storage/_environment.py +22 -0
  25. frogml_storage/artifactory/__init__.py +1 -0
  26. frogml_storage/artifactory/_artifactory_api.py +315 -0
  27. frogml_storage/authentication/login/__init__.py +1 -0
  28. frogml_storage/authentication/login/_login_cli.py +229 -0
  29. frogml_storage/authentication/login/_login_command.py +71 -0
  30. frogml_storage/authentication/models/__init__.py +3 -0
  31. frogml_storage/authentication/models/_auth.py +20 -0
  32. frogml_storage/authentication/models/_auth_config.py +70 -0
  33. frogml_storage/authentication/models/_login.py +22 -0
  34. frogml_storage/authentication/utils/__init__.py +17 -0
  35. frogml_storage/authentication/utils/_authentication_utils.py +281 -0
  36. frogml_storage/authentication/utils/_login_checks_utils.py +114 -0
  37. frogml_storage/base_storage.py +140 -0
  38. frogml_storage/constants.py +56 -0
  39. frogml_storage/exceptions/checksum_verification_error.py +3 -0
  40. frogml_storage/exceptions/validation_error.py +4 -0
  41. frogml_storage/frog_ml.py +668 -0
  42. frogml_storage/http/__init__.py +1 -0
  43. frogml_storage/http/http_client.py +83 -0
  44. frogml_storage/logging/__init__.py +1 -0
  45. frogml_storage/logging/_log_config.py +45 -0
  46. frogml_storage/logging/log_utils.py +21 -0
  47. frogml_storage/models/__init__.py +1 -0
  48. frogml_storage/models/_download_context.py +54 -0
  49. frogml_storage/models/dataset_manifest.py +13 -0
  50. frogml_storage/models/entity_manifest.py +93 -0
  51. frogml_storage/models/frogml_dataset_version.py +21 -0
  52. frogml_storage/models/frogml_entity_type_info.py +48 -0
  53. frogml_storage/models/frogml_entity_version.py +34 -0
  54. frogml_storage/models/frogml_model_version.py +21 -0
  55. frogml_storage/models/model_manifest.py +60 -0
  56. frogml_storage/models/serialization_metadata.py +15 -0
  57. frogml_storage/utils/__init__.py +12 -0
  58. frogml_storage/utils/_input_checks_utility.py +104 -0
  59. frogml_storage/utils/_storage_utils.py +15 -0
  60. frogml_storage/utils/_url_utils.py +27 -0
  61. frogml_core-0.0.96.dist-info/METADATA +0 -46
  62. {frogml_core-0.0.96.dist-info → frogml_core-0.0.98.dist-info}/WHEEL +0 -0
  63. {frogml_proto → frogml_storage/authentication}/__init__.py +0 -0
@@ -0,0 +1,411 @@
1
+ Metadata-Version: 2.3
2
+ Name: frogml-core
3
+ Version: 0.0.98
4
+ Summary: frogml Core contains the necessary objects and communication tools for using the Jfrog ml Platform
5
+ License: Apache-2.0
6
+ Keywords: mlops,ml,deployment,serving,model
7
+ Author: Jfrog
8
+ Requires-Python: >=3.9,<3.12
9
+ Classifier: License :: OSI Approved :: Apache Software License
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.9
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: Implementation :: CPython
16
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
17
+ Provides-Extra: feature-store
18
+ Requires-Dist: PyYAML
19
+ Requires-Dist: cachetools
20
+ Requires-Dist: chevron (==0.14.0)
21
+ Requires-Dist: cloudpickle (==2.2.1) ; extra == "feature-store"
22
+ Requires-Dist: dacite (==1.8.1)
23
+ Requires-Dist: dependency-injector (>=4.0)
24
+ Requires-Dist: filelock
25
+ Requires-Dist: grpcio (>=1.57.0)
26
+ Requires-Dist: joblib (>=1.3.2,<2.0.0)
27
+ Requires-Dist: marshmallow-dataclass (>=8.5.8,<9.0.0)
28
+ Requires-Dist: protobuf (>=3.10,<4) ; python_version < "3.10"
29
+ Requires-Dist: protobuf (>=4.21.6) ; python_version >= "3.10"
30
+ Requires-Dist: pyarrow (>=6.0.0) ; extra == "feature-store"
31
+ Requires-Dist: pyathena (>=2.2.0,!=2.18.0) ; extra == "feature-store"
32
+ Requires-Dist: pydantic
33
+ Requires-Dist: pyspark (==3.4.2) ; extra == "feature-store"
34
+ Requires-Dist: python-jose[cryptography] (>=3.4.0)
35
+ Requires-Dist: python-json-logger (>=2.0.2)
36
+ Requires-Dist: requests
37
+ Requires-Dist: retrying (==1.3.4)
38
+ Requires-Dist: tqdm
39
+ Requires-Dist: typeguard (>=2,<3)
40
+ Project-URL: Home page, https://www.jfrog.com/
41
+ Description-Content-Type: text/markdown
42
+
43
+ # Frogml Core
44
+
45
+ Frogml 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.
46
+ Frogml Core contains all the objects and tools necessary to use the Frogml Platform
47
+
48
+ # Frog ML Storage
49
+
50
+ ## Table of contents:
51
+
52
+ - [Overview](#overview)
53
+ - [Working with Artifactory](#Working-with-Artifactory)
54
+ - [Login by adding authentication details to your python code](#Login-by-adding-authentication-details-to-your-python-code)
55
+ - [Login via environment variables](#Login-via-environment-variables)
56
+ - [Login via cli](#Login-via-cli)
57
+ - [Login by a single command line with options](#Login-by-a-single-command-line-with-options)
58
+ - [Login by interactive flow in Cli](#Login-by-interactive-flow-in-Cli)
59
+ - [Upload ML model to Artifactory](#Upload-ML-model-to-Artifactory)
60
+ - [Download ML model from Artifactory](#Download-ML-model-from-Artifactory)
61
+ - [Upload ML dataset to Artifactory](#Upload-ML-dataset-to-Artifactory)
62
+ - [Download ML dataset from Artifactory](#Download-ML-dataset-from-Artifactory)
63
+ - [Testing](#Testing)
64
+ - [Locally run integration tests using local artifactory](#Locally-run-integration-tests-using-artifactory)
65
+ - [Locally run tests using existing Artifactory](#Locally-run-tests-using-existing-Artifactory)
66
+ - [Packaging](#Packaging)
67
+ - [Linters](#Linters)
68
+
69
+ ## Overview
70
+
71
+ 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.
72
+
73
+ ## Working with Artifactory
74
+
75
+ FrogML Storage Library support is available from Artifactory version 7.84.x.
76
+
77
+ To be able to use FrogML Storage with Artifactory, you should authenticate the frogml storage client against Artifactory.
78
+ 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.
79
+
80
+ The credentials retrieval order is as follows:
81
+
82
+ 1. [Login by adding authentication details to your python code](#Login-by-adding-authentication-details-to-your-python-code)
83
+ 2. [Login via environment variables](#Login-via-environment-variables)
84
+ 3. [Login via cli](#login-via-cli)
85
+
86
+
87
+ #### Login by adding authentication details to your python code
88
+
89
+ ---
90
+ **NOTE**
91
+
92
+ It is strongly discouraged to use credentials in clear text. Use this method for testing purposes only.
93
+
94
+ ---
95
+
96
+ 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):
97
+ - Username and Password
98
+ - Access Token
99
+
100
+ 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.
101
+
102
+ Authentication by username and password:
103
+
104
+ ```
105
+ from frogml_storage.frog_ml import FrogMLStorage
106
+ from frogml_storage.authentication.models._auth_config import AuthConfig
107
+
108
+ arti = FrogMLStorage(AuthConfig.by_basic_auth("http://myorg.jfrog.io", <username>, <password>))
109
+ ```
110
+
111
+ Authentication by access token:
112
+
113
+ ```
114
+ from frogml_storage.frog_ml import FrogMLStorage
115
+ from frogml_storage.authentication.models._auth_config import AuthConfig
116
+
117
+ arti = FrogMLStorage(AuthConfig.by_access_token("http://myorg.jfrog.io", <token>))
118
+ ```
119
+
120
+ #### Login via environment variables
121
+
122
+ You can also authenticate the frogml client using the following environment variables:
123
+
124
+ - JF_URL - your JFrog platform domain, for example 'http://myorg.jfrog.io'
125
+ - 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".
126
+
127
+ After setting the environment variables, you can log in to the frogml client without specifying credentials.
128
+
129
+
130
+ ```
131
+ from frogml_storage.frog_ml import FrogMLStorage
132
+ from frogml_storage.authentication.models._auth_config import AuthConfig
133
+
134
+ arti = FrogMLStorage()
135
+ ```
136
+
137
+
138
+ ### Login via cli
139
+
140
+ It is possible to authenticate the frogml client using any of the following methods:
141
+
142
+ 1. Login by a single CLI command
143
+ 2. Interactive flow
144
+
145
+ After each login attempt, the authentication result (success or failure) is printed on the screen.
146
+ 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.
147
+
148
+ In both interactive flow and the single command flow, it is possible to authenticate the frogml client by:
149
+
150
+ 1. Username and password
151
+ 2. Access token
152
+ 3. Anonymous authentication
153
+
154
+
155
+
156
+ #### Login by a single command line with options
157
+
158
+ The below examples show the frogml login options using the cli:
159
+
160
+ Login using existing jfrog-cli of frogml configuration files (~/.jfrog/jfrog-cli.conf.v6 or ~/.frogml/config.json, respectively):
161
+
162
+ ```
163
+ frogml login
164
+ ```
165
+ If no configuration file is found, interactive mode will be triggered.
166
+
167
+ Login by username and password:
168
+
169
+ ```
170
+ frogml login --url <artifactory_url> --username <username> --password <password>
171
+ ```
172
+
173
+ Where:
174
+ - artifactory_url is your JFrog platform domain, for example 'http://myorg.jfrog.io'
175
+ - username and password are your artifactory credentials for this domain
176
+
177
+ Login by access token:
178
+
179
+ ```
180
+ frogml login --url <artifactory_url> --token <access_token>
181
+ ```
182
+
183
+ Where:
184
+ - artifactory_url is your JFrog platform domain, for example 'http://myorg.jfrog.io'
185
+ - token - your artifactory token for this domain. To generate a token, log in to your artifactory and navigate to Administration -> User Management -> Access Tokens.
186
+
187
+ Login by anonymous access:
188
+
189
+ ```
190
+ frogml login --url <artifactory_url> --anonymous
191
+ ```
192
+
193
+ #### Login by interactive flow in cli:
194
+
195
+ To start an interactive flow in the cli, run the command:
196
+
197
+ ```
198
+ frogml login --interactive
199
+ ```
200
+
201
+ After executing the command above, the cli prompts two options as follows:
202
+
203
+ ```
204
+ frogml login --interactive
205
+ Please select from the following options:
206
+ 1.Login by jfrog-cli configuration file: ~/.jfrog/jfrog-cli.conf.v6
207
+ 2.Connecting to a new server
208
+ ```
209
+
210
+ On choosing the first option, the cli attempts to retrieve your authentication credentials from your JFrog CLI configuration file and sends them to Artifactory.
211
+
212
+ 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.
213
+
214
+ ```
215
+ Enter artifactory base url: http://myorg.jfrog.io
216
+ Choose your preferred authentication option:
217
+ 0: Username and Password
218
+ 1: Access Token
219
+ 2: Anonymous Access
220
+ ```
221
+
222
+
223
+ ### Upload ML model to Artifactory
224
+
225
+ You can upload a model to a FrogML repository using the upload_model_version() function.
226
+ You can upload a single file or an entire folder.
227
+ 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.
228
+ After uploading the model, FrogML generates a file named model-info.json which contains the model name and its related files and dependencies.
229
+
230
+ 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.
231
+ Additionally, you can add properties to the model in Artifactory to categorize and label it.
232
+ The function upload_model_version returns an instance of FrogMlModelVersion, which includes the model's name, version, and namespace.
233
+
234
+ The below examples show how to upload a model to Artifactory:
235
+
236
+ ---
237
+ **NOTE**
238
+
239
+ namespace, version, properties, dependencies_files_paths and code_archive_file_path are optional.
240
+ model_path can point to a single file or a directory, in which case the whole directory is uploaded.
241
+ model_type can be written as JSON or as SerializationMetadata object imported from jfrog_ml.serialization_metadata.
242
+ All of SerializationMetadata fields must be populated.
243
+
244
+ ---
245
+
246
+
247
+ Upload an entire folder as model:
248
+
249
+ ```
250
+ from frogml_storage.frog_ml import FrogMLStorage
251
+
252
+ arti = FrogMLStorage()
253
+ arti.upload_model_version(repository=<repository_key>,
254
+ namespace=<namespce>,
255
+ model_name=<model_name>,
256
+ model_path="~/model_to_upload/",
257
+ model_type={"framework": "tensorflow", "framework_version": "2.3.0", "serialization_format": "H5", "runtime": "python", "runtime_version": "3.7"},
258
+ properties={"model_type": "keras", "experiment": "my-exp"},
259
+ dependencies_files_paths=["path/to/req/file1", "path/to/req/file2"],
260
+ code_archive_file_path="path/to/code/archieve/file"
261
+ )
262
+ ```
263
+
264
+ Upload a model with a specified version, and no dependencies and code archive:
265
+
266
+ ```
267
+ from frogml_storage.frog_ml import FrogMLStorage
268
+
269
+ arti = FrogMLStorage()
270
+ arti.upload_model_version(repository=<repository_key>,
271
+ namespace=<namespce>,
272
+ model_name=<model_name>,
273
+ version=<version>,
274
+ model_path="~/model_to_upload/",
275
+ model_type={"framework": "tensorflow", "framework_version": "2.3.0", "serialization_format": "H5", "runtime": "python", "runtime_version": "3.7"}
276
+ )
277
+ ```
278
+
279
+ ---
280
+
281
+ #### Download ML model from Artifactory
282
+
283
+ The below example shows how to download a model from Artifactory:
284
+
285
+ ```
286
+ from frogml_storage.frog_ml import FrogMLStorage
287
+
288
+ arti = FrogMLStorage()
289
+
290
+ arti.download_model_version(repository=<repository_key>,
291
+ namespace=<namespace>,
292
+ model_name=<model_name>,
293
+ target_path="~/models",
294
+ version=<version>)
295
+ ```
296
+
297
+ ---
298
+ **NOTE**
299
+
300
+ The dependencies and code archive cannot be downloaded.
301
+
302
+ ---
303
+
304
+ ### Upload ML dataset to Artifactory
305
+
306
+ Upload an entire folder as dataset:
307
+
308
+
309
+ ```
310
+ from frogml_storage.frog_ml import FrogMLStorage
311
+
312
+ arti = FrogMLStorage()
313
+ arti.upload_dataset_version(repository=<repository_key>,
314
+ namespace=<namespce>,
315
+ dataset_name=<dataset_name>,
316
+ source_path="~/dataset_to_upload/",
317
+ properties={"dataset_type": "kerras", "experiment": "my-exp"})
318
+ ```
319
+
320
+ Upload a dataset with specified version:
321
+
322
+ ```
323
+ from frogml_storage.frog_ml import FrogMLStorage
324
+
325
+ arti = FrogMLStorage()
326
+ arti.upload_dataset_version(repository=<repository_key>,
327
+ namespace=<namespce>,
328
+ dataset_name=<dataset_name>,
329
+ version=<version>,
330
+ source_path="~/dataset_to_upload/")
331
+ ```
332
+
333
+ Upload a single file as a dataset:
334
+
335
+ ```
336
+ from frogml_storage.frog_ml import FrogMLStorage
337
+
338
+ arti = FrogMLStorage()
339
+ arti.upload_dataset_version(repository=<repository_key>,
340
+ namespace=<namespce>,
341
+ dataset_name=<dataset_name>,
342
+ version=<version>,
343
+ source_path="~/dataset_to_upload/config.json")
344
+ ```
345
+
346
+ #### Download ML dataset from Artifactory
347
+
348
+ The below example shows how to download a dataset from Artifactory:
349
+
350
+ ```
351
+ from frogml_storage.frog_ml import FrogMLStorage
352
+
353
+ arti = FrogMLStorage()
354
+
355
+ arti.download_dataset_version(repository=<repository_key>,
356
+ namespace=<namespace>,
357
+ dataset_name=<dataset_name>,
358
+ target_path="~/datasets",
359
+ version=<version>)
360
+ ```
361
+
362
+ ## Testing
363
+
364
+ ### Locally run integration tests using artifactory
365
+
366
+ Prerequisites:
367
+ - A user credentials (username, password)
368
+
369
+ To run the integration tests, use the ```poetry run pytest tests/integrations/test_artifactory_integration.py``` command.
370
+ In addition, you will need to supply your
371
+ ARTIFACTORY_URL in a `http(s)://` format (if not supplied, default will be as defined [here](tests/integrations/conftest.py)), ARTIFACTORY_USERNAME, ARTIFACTORY_PASSWORD.
372
+ the test will create a local repository in RT, will upload and download model and datasets using the provided details,
373
+ and will delete the repository after the test.
374
+
375
+ example:
376
+ ```
377
+ export ARTIFACTORY_URL=<artifactory_url>
378
+ export ARTIFACTORY_USERNAME=<username>
379
+ export ARTIFACTORY_PASSWORD=<password>
380
+
381
+ poetry run pytest tests/integrations/test_artifactory_integration.py
382
+ ```
383
+
384
+ ### Locally run tests using existing Artifactory
385
+
386
+ To run the tests, use the ```pytest``` command pointing it to an existing Artifactory host.
387
+ Prerequisites:
388
+ - A generic local repository in the Artifactory instance
389
+ - A user token or user credentials (username, password)
390
+
391
+ To run the test:
392
+
393
+ ```
394
+ python3 -m pytest tests/integrations/test_artifactory_integration.py --rt_url "<artifactory_url>" --rt_access_token <token> --repo_name <generic-repo-name> -s
395
+ ```
396
+
397
+ ## Packaging
398
+
399
+ ```
400
+ poetry build
401
+ ```
402
+
403
+ ## Linters
404
+ Fix spaces and linebreaks with:
405
+ ```
406
+ make format
407
+ ```
408
+ Run linter check:
409
+ ```
410
+ make format
411
+ ```
@@ -1,4 +1,4 @@
1
- frogml_core/__init__.py,sha256=nQ0vxUcn4ES2hYTIOpjykEpySvZrqxGJ_hHWg98i5D8,777
1
+ frogml_core/__init__.py,sha256=h96JpLfFmHinl3ED_VUGsGl6xZ45EEHe_VrqZdsUsGk,777
2
2
  frogml_core/automations/__init__.py,sha256=j2gD15MN-xVWhI5rAFsDwhL0CIyICLNT0scXsKvNBkU,1547
3
3
  frogml_core/automations/automation_executions.py,sha256=xpOb9Dq8gPPGNQDJTvBBZbNz4woZDRZY0HqnLSu7pwU,3230
4
4
  frogml_core/automations/automations.py,sha256=GKEQyQMi8sxX5oZn62PaxPi0zD8IaJRjBkhczRJxHNs,13070
@@ -34,7 +34,7 @@ frogml_core/clients/automation_management/client.py,sha256=rG1tvdtKoSBCSG5IdzmSP
34
34
  frogml_core/clients/autoscaling/__init__.py,sha256=A-zuZOWaZf16NjnpX38204m730c5Lde491KaXneGirE,38
35
35
  frogml_core/clients/autoscaling/client.py,sha256=Izl_Ko31ECsVEadTcthru8GGujsHpwWN5E_VSCKiymM,1296
36
36
  frogml_core/clients/batch_job_management/__init__.py,sha256=zywxYf2JupkIWnGVB2C6ugZs5CrOdxTPrksD5P6uQu4,211
37
- frogml_core/clients/batch_job_management/client.py,sha256=mXGyIQLlEOVcrmESje_rEOdlDLWIB8Ndi6N38cXWe74,21120
37
+ frogml_core/clients/batch_job_management/client.py,sha256=V8sqltMAsoHAoXHxXZsoLmY7L1XykbBvod1xyhCmHHA,22528
38
38
  frogml_core/clients/batch_job_management/executions_config.py,sha256=eEbT_ldIEVtwe85oThJ-Jv3qFBIfvLpZ-w6aJCLlqlk,6910
39
39
  frogml_core/clients/batch_job_management/results.py,sha256=nrFGZ3y538FBhej94CYV4cwqQssK1aUQOLGubYdQVrc,1846
40
40
  frogml_core/clients/build_management/__init__.py,sha256=oXurHX6Kho5X-fOuuNHB3B9oMX6ejYUqh6GWv5qJyjw,43
@@ -58,7 +58,7 @@ frogml_core/clients/file_versioning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
58
58
  frogml_core/clients/file_versioning/client.py,sha256=GQ0drq_6f3lyKFSEg_tLh6wybGgyiiPF7TsiHCIPPZU,2533
59
59
  frogml_core/clients/file_versioning/file_tag_filter.py,sha256=Ehgr605zPt2x163EQP5IRXKdnmd_8gNwCVBhxUlRcnI,886
60
60
  frogml_core/clients/instance_template/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
- frogml_core/clients/instance_template/client.py,sha256=uKTSebOUwb79t8SosxBbjIg6N9PlXXSYfedOVt5-jjc,2541
61
+ frogml_core/clients/instance_template/client.py,sha256=VDGU7IQgrTo3swnAzvRjBFFeyMqCV1i17LodsROchXE,2597
62
62
  frogml_core/clients/integration_management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
63
  frogml_core/clients/integration_management/integration_manager_client.py,sha256=E6VcgbEI6IbP8TLsatWTTvWNXerdSP08er0KkdRmg90,1240
64
64
  frogml_core/clients/integration_management/integration_utils.py,sha256=j5gomMtYi-CYr2flYF8-BKd5pU4tHxAAlB9R2R3iYoo,968
@@ -75,11 +75,11 @@ frogml_core/clients/logging_client/client.py,sha256=A7qQJWW54Ve7O0DuJX9gmSJlUQyR
75
75
  frogml_core/clients/model_management/__init__.py,sha256=vjWVP8MjmK4_A70WOgJqa6x24AeLK-ABjGJtogGzw9w,43
76
76
  frogml_core/clients/model_management/client.py,sha256=hOWbpO6KkcScT6sn3eNHSp7n2HfQIPug7lm-e-bkzEs,4915
77
77
  frogml_core/clients/model_version_manager/__init__.py,sha256=4Pnfzj4Egps48__dProdbSKQl5pNip0hGJd75w67BfY,46
78
- frogml_core/clients/model_version_manager/client.py,sha256=WeU9XXLu5K0ViS-2YeENq121qV4ESXmI6pzc_K8QkvM,9457
78
+ frogml_core/clients/model_version_manager/client.py,sha256=XtUJWjIXNy1J2vXIHzX1tahtGYqXT__MmHiT1N3zAxk,9466
79
79
  frogml_core/clients/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
80
  frogml_core/clients/project/client.py,sha256=2L4LJS3xIGTAeWuL2HOgW0OyUNiQUHZ4mXfukRLjX2U,2527
81
81
  frogml_core/clients/prompt_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
- frogml_core/clients/prompt_manager/model_descriptor_mapper.py,sha256=-j97vEEx0RUNBH245vIIMYw_xrFE-4AgV1hmg7g14U8,7856
82
+ frogml_core/clients/prompt_manager/model_descriptor_mapper.py,sha256=IaIR4mseRiql0mgBrjz0rmioglSGgAR6OTEJeFXlatg,7866
83
83
  frogml_core/clients/prompt_manager/prompt_manager_client.py,sha256=pl5SZ0j81PBMBeJc7jOkDJtJ61TGMqeq3Splg6Tsr90,7958
84
84
  frogml_core/clients/prompt_manager/prompt_proto_mapper.py,sha256=WqIrL1wq_8LkLiLnyVO6vVh7qDLHnZNaHZ7n3s94qgw,10073
85
85
  frogml_core/clients/secret_service/__init__.py,sha256=TdQl1lgplXCKVHYSN4feRIAoonZ7XDz50zALjwVDcM4,40
@@ -111,7 +111,7 @@ frogml_core/exceptions/frogml_suggestion_exception.py,sha256=saqST0umnKRFCscoEBH
111
111
  frogml_core/exceptions/quiet_error.py,sha256=ePdCGP6ta8afjzprMiGoJFY-gxf8albRwuY0t1WF2lY,559
112
112
  frogml_core/feature_store/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
113
  frogml_core/feature_store/_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
- frogml_core/feature_store/_common/artifact_utils.py,sha256=STiDfiYOOX57zYSm2O8oUKIiRNP07w2NaxNcR0CuqWk,2005
114
+ frogml_core/feature_store/_common/artifact_utils.py,sha256=g_DDeeBQ2JyqAuDiAj5utI742Jfyzy0woDW5QOy4vkI,2007
115
115
  frogml_core/feature_store/_common/feature_set_utils.py,sha256=s_GGSHqgMD88c1ij62ptgMo0ar9iEBi4yd6T1wuocwQ,9222
116
116
  frogml_core/feature_store/_common/featureset_asterisk_handler.py,sha256=3kygt0HM6QxDSGIRWcWoDwhOr126wwtv0Xr8W7AUGnk,4721
117
117
  frogml_core/feature_store/_common/functions.py,sha256=kSNYJ7dy48NN09HG9asm4ibQh0JaCGcZYsRDjRWlUHE,659
@@ -125,7 +125,7 @@ frogml_core/feature_store/data_sources/base.py,sha256=sCJ1CzbhRX-fgsw_Y3ucUu-tKC
125
125
  frogml_core/feature_store/data_sources/batch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
126
  frogml_core/feature_store/data_sources/batch/_batch.py,sha256=xnrC1SZ4OH4b7gYLRajEBFQ2U00cA3JxKT8bKNTNHLg,204
127
127
  frogml_core/feature_store/data_sources/batch/_jdbc.py,sha256=lC-m3ZypER5vLtYo4h6ghYWeXvdfGSOdTadqS-sTb58,676
128
- frogml_core/feature_store/data_sources/batch/athena.py,sha256=2brkewwDRKEPiUW27oER1dwbjWOg9Xq3ik1tPSsHBxY,11290
128
+ frogml_core/feature_store/data_sources/batch/athena.py,sha256=fKKdKE1B59dbCiOQQ5amJECoyETwxswkBhDLQ-Pctsg,11292
129
129
  frogml_core/feature_store/data_sources/batch/big_query.py,sha256=h9iscw9I-WyCj1BeyesASNoIiNwPty9acQ37KGD0Ulo,3112
130
130
  frogml_core/feature_store/data_sources/batch/clickhouse.py,sha256=mUSE139-ACnInctQNZqETbnWgFyZidvffVJpwQu0T3Q,2149
131
131
  frogml_core/feature_store/data_sources/batch/csv.py,sha256=saxFeP--CL4h5j2toyxSuOl4kN_WtEEg8pumaYOjCHg,2070
@@ -161,12 +161,12 @@ frogml_core/feature_store/feature_sets/_utils/_featureset_utils.py,sha256=mnznpQ
161
161
  frogml_core/feature_store/feature_sets/backfill.py,sha256=oZqGb8PA1BQxVOxf9-MwzeZyjJqgwulbA-flmBmXAj4,1981
162
162
  frogml_core/feature_store/feature_sets/base_feature_set.py,sha256=1niCItXApA6JZB7tviXJJVaw91sFwSBwiA1f2xOQnwM,5378
163
163
  frogml_core/feature_store/feature_sets/batch.py,sha256=VADm8KVYhyxV7Ibt2luOlnrbrqd774_ICG0iKPs82cU,17422
164
- frogml_core/feature_store/feature_sets/context.py,sha256=RfHXPI6hD7AI7_hZWoLGEhYROeDDsfXTW0OToRB33-s,349
164
+ frogml_core/feature_store/feature_sets/context.py,sha256=zV6r0O70cfM4pmxlfC6xxAtro-wBhenXWwYwF3KwfTY,263
165
165
  frogml_core/feature_store/feature_sets/execution_spec.py,sha256=zKQd7U-PdYkZMqBpA9eIRhhWff-8xxKB_Qo4IDolwGI,2348
166
166
  frogml_core/feature_store/feature_sets/metadata.py,sha256=Vv2pyBbwaJZRFhWKRhxdFyN3AsV-DvTQzLs9nyRMWK0,1888
167
167
  frogml_core/feature_store/feature_sets/read_policies.py,sha256=BQu6B6IZuKJt8Ff5RYeADdqpHmSkec790RIYeSl6Ulo,6844
168
- frogml_core/feature_store/feature_sets/streaming.py,sha256=7IRumnjXgjwnmL7RU8RcW2E8-vLmmL4wDMP5snORt_s,25293
169
- frogml_core/feature_store/feature_sets/streaming_backfill.py,sha256=Nl4q41NvnW8eHtus2aBNdViYc8WqP5he_z9xQgX5i08,9833
168
+ frogml_core/feature_store/feature_sets/streaming.py,sha256=78ItVSojMfLoTY3k0SH6UD40XS7dnVZFn9cKfYUcS3Y,25295
169
+ frogml_core/feature_store/feature_sets/streaming_backfill.py,sha256=u-tjq86AaXAusLUwPYtdCKhTuySQFAtRrUvbPrY3CtI,9834
170
170
  frogml_core/feature_store/feature_sets/transformations/__init__.py,sha256=ozc50AI9RBY71nhNiJDu1-vSWJL2Bdgstyh7GGUW2ig,902
171
171
  frogml_core/feature_store/feature_sets/transformations/aggregations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
172
  frogml_core/feature_store/feature_sets/transformations/aggregations/aggregations.py,sha256=f81U0xiE-TBPqtqGabKb-3ApkIyE0tGU0yIxbF4j-D4,15308
@@ -181,14 +181,14 @@ frogml_core/feature_store/offline/_offline_serving_validations.py,sha256=yfkV8UV
181
181
  frogml_core/feature_store/offline/client_v2.py,sha256=kTFyHAYIsKBe3wcuE1S_LyD9CLQ_yCorOLcHVR3Emms,14966
182
182
  frogml_core/feature_store/offline/feature_set_features.py,sha256=MjrQrXNhzk7QBdCojdpLfy1fuGdP3GcpOgcc7n7H0G8,740
183
183
  frogml_core/feature_store/online/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
184
- frogml_core/feature_store/online/client.py,sha256=JM7GLS8TeXW-jhEbecu2wp-tHoFHxPePqCw1XrsM6lw,13554
184
+ frogml_core/feature_store/online/client.py,sha256=_NCVJngFgh8D3IVBW8u8estPqZ7mSwg5IxmuTndFY0A,13572
185
185
  frogml_core/feature_store/online/endpoint_utils.py,sha256=lGssZR-r8kJpcSozVxQAk1_JpVXgRLqOVrK6fw8flPg,2242
186
186
  frogml_core/feature_store/sinks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
187
187
  frogml_core/feature_store/sinks/base.py,sha256=QdIutDlO_8IBRr-zKfHBRHJ1-DjDmFfR_Yuad193kg0,361
188
188
  frogml_core/feature_store/sinks/kafka.py,sha256=zlawE62TSShX1D4RWHMowLdVaw5FFThl7kcDBkN2LH0,1923
189
189
  frogml_core/feature_store/sinks/streaming/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
190
190
  frogml_core/feature_store/sinks/streaming/attachment.py,sha256=oHHaxoMtSALI2udHk59joizs15di6OXX-BN_rruWF-c,1158
191
- frogml_core/feature_store/sinks/streaming/factory.py,sha256=tpBkJmc1EC7OdhDO9bNiiVq2XtV7MVLfZJs1RiHt1Fk,2529
191
+ frogml_core/feature_store/sinks/streaming/factory.py,sha256=nal7FWQEZWIKHsVZ4gIwPzCz3WClxL7tDBhkkuCtlsQ,2543
192
192
  frogml_core/feature_store/validations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
193
193
  frogml_core/feature_store/validations/validation_options.py,sha256=2EbOVC8pmnToP0GUwiPHuz3ew7Vrqr3IdRpUdiLqa0Y,2847
194
194
  frogml_core/feature_store/validations/validation_response.py,sha256=N7lh7h187wBkeuEfVTooE_cGDt_Wo29mEZjmiHR6Pq0,3953
@@ -248,7 +248,7 @@ frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manage
248
248
  frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/folder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
249
249
  frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/folder/folder_strategy.py,sha256=Uy3HJuiIaGjqVdFyMhyB33QLQxZEHR22K_wx9KrFSaY,5081
250
250
  frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
251
- frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/git/git_strategy.py,sha256=0ZbCGBJ6pxjIBi8t8fT-g2fK-es_vSHboZiPT_hgOkI,5947
251
+ frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/git/git_strategy.py,sha256=iqNqD79iKY9kgj3e5G2aZwjeLJnOIE4BC9i0Dl0aaII,5949
252
252
  frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/strategy.py,sha256=MocvnsB_0NAy8ab6NOWRhmNbApGnO_zttyBXvtx8CPE,1447
253
253
  frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/zip/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
254
254
  frogml_core/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/zip/zip_strategy.py,sha256=wCDk5wQlEtCLVDFdC3lXEebpLIMECovHHTvyLsorki8,2276
@@ -270,7 +270,7 @@ frogml_core/inner/build_logic/tools/text.py,sha256=tH-v19Mt8l90sMVxku5XRtrderT0q
270
270
  frogml_core/inner/build_logic/trigger_build_context.py,sha256=SgyWaOKTlZUHqglo8r_pkn_a6PHP-L6gtYaapQ6F3Rs,207
271
271
  frogml_core/inner/const.py,sha256=eP8Naruk3EnRWDdS9gwpozUYA9Nxznybw7Eiv4k5l38,126
272
272
  frogml_core/inner/di_configuration/__init__.py,sha256=RJ30JlZguilrvlFTn66F7SWUGzV6T5yu_GOQCd7mwDY,1892
273
- frogml_core/inner/di_configuration/account.py,sha256=sKxNqsSIodxV5XQuGeucQcrHYCx4IVIe3eiuPxeS4XE,2841
273
+ frogml_core/inner/di_configuration/account.py,sha256=AaUzYa0xHT8zGGcv1KTE58k9Gik4fYT7wQhJ62keQTA,2822
274
274
  frogml_core/inner/di_configuration/config.yml,sha256=GUvaZMWIDIR_d7hFcPVG_kHdCwpERKH1AFDakG3vqI4,242
275
275
  frogml_core/inner/di_configuration/containers.py,sha256=epzNvWcHcfO07EV6aQxEaGIehqgKBUK2CGzKgk1HeEA,1148
276
276
  frogml_core/inner/instance_template/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -281,7 +281,7 @@ frogml_core/inner/runtime_di/__init__.py,sha256=HXqtejgH3J9TXjnEBT6cNwnTDPq6v3sT
281
281
  frogml_core/inner/runtime_di/containers.py,sha256=LbapepWFjBjkELEOTK7m7AJEfj4KENVDlpD7lv7zw6o,577
282
282
  frogml_core/inner/singleton_meta.py,sha256=1cU99I0f9tjuMQLMJyLsK1oK3fZJMsO5-TbRHAMXqds,627
283
283
  frogml_core/inner/tool/__init__.py,sha256=rmOSE-ejnzDG_H7kbikPQxEO4TFIkhBWjOXhTIrldiU,35
284
- frogml_core/inner/tool/auth.py,sha256=H0tQTc8JgEGLxv79IS_28jahi8cq8NNoP3lpxlQshPs,2714
284
+ frogml_core/inner/tool/auth.py,sha256=7YIUVGwkAmNf1uWNtPOpnF4FPowrq0tZ3rOO0cn_EXQ,2652
285
285
  frogml_core/inner/tool/grpc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
286
286
  frogml_core/inner/tool/grpc/grpc_auth.py,sha256=WPFWn7CfGp-pSqlnUTplHB6lfuJdzpS6jeidmpyondo,1421
287
287
  frogml_core/inner/tool/grpc/grpc_tools.py,sha256=8sXDWBd_kVRuwmUSdpQNobylT6u8H_83Q8WlZJYOi0c,7247
@@ -345,7 +345,7 @@ frogml_core/llmops/provider/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
345
345
  frogml_core/llmops/provider/chat.py,sha256=n0WY2OhdX__w20DO7vvP53xVIqmr3cVF_G0yiCJsAzU,1626
346
346
  frogml_core/llmops/provider/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
347
347
  frogml_core/llmops/provider/openai/client.py,sha256=JwI9SMUu3bpMoixBAl10iX0J5xKdGFXV0SloPMI6gv8,4534
348
- frogml_core/llmops/provider/openai/provider.py,sha256=cWM3KoxFNOKgMtkKAgSpcFO_D9MipXRBwwC-sQe3uZM,3129
348
+ frogml_core/llmops/provider/openai/provider.py,sha256=2dQQSBxr6hqJFhT4U-KJmsZd-K_vLnOPFeyBMdRntxU,3131
349
349
  frogml_core/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
350
350
  frogml_core/model/_entity_extraction.py,sha256=gFeHgKgnz-MpB61w0OfJe30PUh5Cm390nZWSKy0JIls,4669
351
351
  frogml_core/model/adapters/__init__.py,sha256=jMM_0Nf6_vCKccsRB0izs8odCXYlXt-u1sXGh4PcpX4,1739
@@ -393,7 +393,7 @@ frogml_core/model/tools/adapters/input_adapters/image_input.py,sha256=Kh8RHMxqHO
393
393
  frogml_core/model/tools/adapters/input_adapters/json_input.py,sha256=kF3n6zFOjRtaU34PZuDoM9cIHKUe-N8Xx5v3GTW__OA,621
394
394
  frogml_core/model/tools/adapters/input_adapters/string_input.py,sha256=K2SIJy92C-1eX1ReT8iqeFAU8UQWF2d88Zv79jsMrac,151
395
395
  frogml_core/model/tools/adapters/input_adapters/tf_tensor_input.py,sha256=vP0DWrCzn2dh48cN16872QZzyTfWSRKPs5FAUxjZgHk,1415
396
- frogml_core/model/tools/adapters/output.py,sha256=xkYikB2iTcm9oZ8l9pJ3W-vLlORRYy7wPsigkdOB4VQ,2741
396
+ frogml_core/model/tools/adapters/output.py,sha256=JtmNkpPvJRuTqDrfjWo67GdEC9C4j6oZxOW7wKlVmrE,2745
397
397
  frogml_core/model/tools/adapters/output_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
398
398
  frogml_core/model/tools/adapters/output_adapters/base_output.py,sha256=VXiwnA1499RQSfdFbEU769lRhuOqWTBPfXglKaymhRc,343
399
399
  frogml_core/model/tools/adapters/output_adapters/dataframe_output.py,sha256=f1stPSAEJoceOO4rblmaid3cbN2PmzL-JV408hFQRLY,809
@@ -412,13 +412,13 @@ frogml_core/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
412
412
  frogml_core/testing/fixtures.py,sha256=tjWIvdZ2nIfNPs6VtUeGx5coJepQVMUWemKGtqUYPzM,318
413
413
  frogml_core/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
414
414
  frogml_core/tools/logger/__init__.py,sha256=3FfLlYKajB15QA7d2AeDUTfv_UPGz7s2hucPRe_GXdA,115
415
- frogml_core/tools/logger/logger.py,sha256=m38m6niR7QJgcd90t7_5N6ZTKnO-cP2cRmshcbLRa5k,9677
415
+ frogml_core/tools/logger/logger.py,sha256=y4RaCRV8YVFtfUhj8KpSg1WukNoxFM61O6zpt8mv85A,9685
416
416
  frogml_core/tools/logger/logging.yml,sha256=UWC2i3NVKT3j5S8_SapzqClDzXLIEAurzNIXa2tS4UA,1941
417
417
  frogml_core/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
418
418
  frogml_core/utils/datetime_utils.py,sha256=3zK7PUrerMlwB7U6WeuYwMAclVMfPqBNZihNRyIVMs4,581
419
419
  frogml_core/utils/dict_utils.py,sha256=YsOSQeGpmrsm3CMnx2ZbqvzEcybk3m-0TCMXbBdBXaY,263
420
420
  frogml_core/utils/model_utils.py,sha256=fLdYIScmVUfChGGxOacH2mID00ZUOPtS4ewUimEDGhg,132
421
- frogml_core/utils/proto_utils.py,sha256=5kQAIxuzhk2_AB_enOD8kpLpIeruFjEGGSafnnt1fc8,2383
421
+ frogml_core/utils/proto_utils.py,sha256=fTo259gqrknV3mSpTIN7wo7WpprJRjJmwwYcmkLYwHY,2390
422
422
  frogml_core/vector_store/__init__.py,sha256=9gR2B5A1MXb2ks5VUzqrPASGpVTDuJs4uq7N7FNWOY4,120
423
423
  frogml_core/vector_store/client.py,sha256=mmchLHjR5aOZOLIz1eibmsoXSMHvcHjCtaWB24QZoAY,6067
424
424
  frogml_core/vector_store/collection.py,sha256=KKeEww8iogmHdfEeqgTHqIV9PizeiUl1coWwHJY8Glc,17150
@@ -428,7 +428,6 @@ frogml_core/vector_store/rest_helpers.py,sha256=RV7yxBqXs-lcGZmFmht5yRpcAAPFXRVF
428
428
  frogml_core/vector_store/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
429
429
  frogml_core/vector_store/utils/filter_utils.py,sha256=n80IlmS7lGelCNEpZ8o3rAHzrZpHc-3EykEd8tZoeAE,854
430
430
  frogml_core/vector_store/utils/upsert_utils.py,sha256=vqnyAJOl46WqpZMUiOa4I8Zf2CDIXQxR7wM4Z8rgooc,7517
431
- frogml_proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
432
431
  frogml_proto/jfml/hosting_gateway/v1/build_upload_url_pb2.py,sha256=dbxw7rgdWh38JDI7F1X6PFei4xvjAgsqKWihemdFyCs,2449
433
432
  frogml_proto/jfml/hosting_gateway/v1/build_upload_url_pb2.pyi,sha256=HFrUIrEJFdKls7PhmadzZ-daVPV1i062w-71wPMMPa4,3116
434
433
  frogml_proto/jfml/hosting_gateway/v1/build_upload_url_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -1071,7 +1070,7 @@ frogml_services_mock/mocks/audience_service_api.py,sha256=x96adhF05NYqEtI8lJaf5l
1071
1070
  frogml_services_mock/mocks/authentication_service.py,sha256=M3cVfnQ2XcxQAWZCm9uR9cAVu_0BahEP4BdymYQfihI,1180
1072
1071
  frogml_services_mock/mocks/automation_management_service.py,sha256=-7kncqM3R-_pLmppzFpuv_TniXCVGVuESculVuQ3EbY,8238
1073
1072
  frogml_services_mock/mocks/autoscaling_service_api.py,sha256=u3RkwHxACPFSk9DwhLFQSI7_ULoHN9uWFL-zyyo-sNw,1032
1074
- frogml_services_mock/mocks/batch_job_manager_service.py,sha256=QY3HA0MlA8eg2jkQEzjyGx8UsSnlGbOUopDLOYLacL4,13146
1073
+ frogml_services_mock/mocks/batch_job_manager_service.py,sha256=AJNM5yJDD7fGRSeHoxC8AdGdx6iwwxUWXNhEFDcD3QE,14098
1075
1074
  frogml_services_mock/mocks/build_management.py,sha256=IECGXfSEDOUhwMcHtI3pd9PF0aXqZL2R98gl3wS0joY,3697
1076
1075
  frogml_services_mock/mocks/build_orchestrator_build_api.py,sha256=fnB6x7W_UWoOxkCm7AgtrRYJjjm1QCotkf-2hPGk75c,5026
1077
1076
  frogml_services_mock/mocks/build_orchestrator_build_settings_api.py,sha256=5V15s2QUur4CPMNZPyXIIt_NJ2W_DwugfreMDA6WbfM,1394
@@ -1115,6 +1114,45 @@ frogml_services_mock/mocks/workspace_manager_service_mock.py,sha256=WbOiWgOyr-xT
1115
1114
  frogml_services_mock/services_mock.py,sha256=sgKgwhu2W0YOHtzil8x7f1znK_sZr_i27XSeiF4xqVE,21200
1116
1115
  frogml_services_mock/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1117
1116
  frogml_services_mock/utils/service_utils.py,sha256=ZlB0CnB1J6oBn6_m7fQO2U8tKoboHdUa6ljjkRMYNXU,265
1118
- frogml_core-0.0.96.dist-info/METADATA,sha256=zoNkkGUooSlfokhWhG-cQy_4qI1OamQywzNWRniXSPw,2028
1119
- frogml_core-0.0.96.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
1120
- frogml_core-0.0.96.dist-info/RECORD,,
1117
+ frogml_storage/__init__.py,sha256=R0_ti3PsltPx4mNjqmHCovLdHboKsuVdrODhlZ0ELGk,23
1118
+ frogml_storage/_environment.py,sha256=zuzOJBtBwFaguwn_JkKjfhXStZoustgP30KzOP3mYv8,707
1119
+ frogml_storage/artifactory/__init__.py,sha256=C02rcm7kqsZBVA6c6Gztxamj96hn8Aj6BuzYWFRmWbQ,71
1120
+ frogml_storage/artifactory/_artifactory_api.py,sha256=Oz0HOpQPSNwWIVAy94UJUyPhLetc7sdZjoTfSXtrFug,11200
1121
+ frogml_storage/authentication/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1122
+ frogml_storage/authentication/login/__init__.py,sha256=ch8UhQwh3o5ddyoJykQ0Bnog5-8qKHmeDpwqny8xMzM,46
1123
+ frogml_storage/authentication/login/_login_cli.py,sha256=FK8ZugljvpCZNz480y1XISqrLzBG6X4Mz4MHKHS3WJc,8137
1124
+ frogml_storage/authentication/login/_login_command.py,sha256=LRHNUR74Sv8j7ORLHyUmQfBaJ32hQ89iQ92njGr2I24,2749
1125
+ frogml_storage/authentication/models/__init__.py,sha256=e8MvB-Pz9WPWPRnrM_rsndUQzDpHWTZQrCVmK2AIeuI,113
1126
+ frogml_storage/authentication/models/_auth.py,sha256=MQeRDHBBwkqFvGpXf8oB8Q11eqBQJgoRNsb20RBOnrA,443
1127
+ frogml_storage/authentication/models/_auth_config.py,sha256=uDcPXaPRXKDEtAhHEuN-GQTeDg8AUL8FE4aiAByHU_I,2024
1128
+ frogml_storage/authentication/models/_login.py,sha256=jcFdiWRqjaVAGG9hiYpPHF0WUNT4DqMqVp1FPFGuwOM,723
1129
+ frogml_storage/authentication/utils/__init__.py,sha256=NBT-KjHJrqXYS3sZvWENjq1gmLiyKSN3fXWDl0-rh8k,430
1130
+ frogml_storage/authentication/utils/_authentication_utils.py,sha256=1N44Vbq3hUCpQdwbcjTm3IjUHACxN1j2v53aIGCF5Dw,9730
1131
+ frogml_storage/authentication/utils/_login_checks_utils.py,sha256=OQZSJHN9C0ujCaAjYuttBBxyoOrWo0KGLKOw5et__ds,2993
1132
+ frogml_storage/base_storage.py,sha256=gbkDRhXhLLJrr72A2vGcQqEHEjCDEk9-n7ye98F3_2k,5606
1133
+ frogml_storage/constants.py,sha256=Fx-Dyzkl9e28O2qCvIgyEf2aBuhftXAdbn2BIfXFaGw,1542
1134
+ frogml_storage/exceptions/checksum_verification_error.py,sha256=t1muLRYvqza7Q4jo1mYHck9ZoDwlGE7WxcheAFAnIQs,159
1135
+ frogml_storage/exceptions/validation_error.py,sha256=_twu_xcL-O7D26qkskuuR-_NcnPPTADIUO9HGY4g0x0,156
1136
+ frogml_storage/frog_ml.py,sha256=QROKxjNe8OUZo3vDkHsALm0gCBXOZEARBBY2hR4H610,24182
1137
+ frogml_storage/http/__init__.py,sha256=BOXGzjq1gJXlihldaZvMQNGJIdCy-UHWsk3u-bXEZnQ,36
1138
+ frogml_storage/http/http_client.py,sha256=jYwe4aHhMRsTjl5fZDlJxaTFuY3RnIcw7P1Wz8Ykz4g,2420
1139
+ frogml_storage/logging/__init__.py,sha256=JaBPWQQt3pjoLhUcZtgqPydGlKAWYpSvfPkt2z1Wi90,32
1140
+ frogml_storage/logging/_log_config.py,sha256=ytwyRLYr3SyRlo4UpTjLBtlNqVApP9URTVO5m5DN3uU,1162
1141
+ frogml_storage/logging/log_utils.py,sha256=MLuQvBrmysiWAeKKq1lHFt3o6DJPyafFWRJNTg9ECaY,711
1142
+ frogml_storage/models/__init__.py,sha256=ZoWMjtQ4Bn-ARJqKEUp-XDRbHgaSQJG_1M2S5z91jbQ,47
1143
+ frogml_storage/models/_download_context.py,sha256=8Jc5JmQG5mwObQp-CXF-D6dP3xUbZcyHUSdwM-p-8s0,1667
1144
+ frogml_storage/models/dataset_manifest.py,sha256=w5ARGQSkRSP7mofsbxOcc9bXORKXIMo5iF1yFGd8Nyw,303
1145
+ frogml_storage/models/entity_manifest.py,sha256=BXwJz1q3NIH6QFccnGDG51R3HnHO9-oCeO9qZqaxQg4,2787
1146
+ frogml_storage/models/frogml_dataset_version.py,sha256=Uwe50e8eD9XqwARCsa4-iJJqyMQsDqs9E-iuAInvJuA,637
1147
+ frogml_storage/models/frogml_entity_type_info.py,sha256=uBW7shYpShDTKQVraFNdyImG4vdtnIfkDcy4r1QL4sY,1405
1148
+ frogml_storage/models/frogml_entity_version.py,sha256=jiDGk3xcZ-OaaTacs6VLshpyUNKYs8qgBOPk1NUJFkY,928
1149
+ frogml_storage/models/frogml_model_version.py,sha256=2pVHW-BhowBcIScLZzWj5SH0abAirP3cDvXeq334lJI,631
1150
+ frogml_storage/models/model_manifest.py,sha256=NEyUTt0ZbLbv-47nb_yJJrA0xnTCk67SdEUcZ09tjr8,2200
1151
+ frogml_storage/models/serialization_metadata.py,sha256=KOJ9Yj0XGbYudpcUBMh67Hd7VohmoWsYOvhD-L2yzyY,347
1152
+ frogml_storage/utils/__init__.py,sha256=HQUWfuGUIPZY7kfS795TRW8BQ4WmNqrNjS7lUrbxCdk,299
1153
+ frogml_storage/utils/_input_checks_utility.py,sha256=CFiJOdTBS9piJMtR3lemEz27wZcQ6_-7XESu8iy-mrw,3221
1154
+ frogml_storage/utils/_storage_utils.py,sha256=HB2g7uY5A3b33yIcAUM1OjHb5jWsnpESsiDrEviQwrI,366
1155
+ frogml_storage/utils/_url_utils.py,sha256=NUEfz9Fp1iE8b676-A5wrMlSTsJVRKrUhcUItOFAJD8,821
1156
+ frogml_core-0.0.98.dist-info/METADATA,sha256=Y4p0fxi4Lb_4JeEKdpnF1zC-nNCae6nyrMYzuDthUA4,14975
1157
+ frogml_core-0.0.98.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
1158
+ frogml_core-0.0.98.dist-info/RECORD,,