oracle-ads 2.11.18__py3-none-any.whl → 2.11.19__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.
- ads/aqua/common/utils.py +20 -3
- ads/aqua/config/__init__.py +4 -0
- ads/aqua/config/config.py +28 -0
- ads/aqua/config/evaluation/__init__.py +4 -0
- ads/aqua/config/evaluation/evaluation_service_config.py +282 -0
- ads/aqua/config/evaluation/evaluation_service_model_config.py +8 -0
- ads/aqua/config/utils/__init__.py +4 -0
- ads/aqua/config/utils/serializer.py +339 -0
- ads/aqua/constants.py +1 -1
- ads/aqua/evaluation/entities.py +1 -0
- ads/aqua/evaluation/evaluation.py +56 -88
- ads/aqua/extension/common_handler.py +2 -3
- ads/aqua/extension/common_ws_msg_handler.py +2 -2
- ads/aqua/extension/evaluation_handler.py +4 -3
- ads/aqua/extension/model_handler.py +26 -1
- ads/aqua/extension/utils.py +12 -1
- ads/aqua/modeldeployment/deployment.py +31 -51
- ads/aqua/ui.py +27 -25
- {oracle_ads-2.11.18.dist-info → oracle_ads-2.11.19.dist-info}/METADATA +2 -1
- {oracle_ads-2.11.18.dist-info → oracle_ads-2.11.19.dist-info}/RECORD +23 -17
- {oracle_ads-2.11.18.dist-info → oracle_ads-2.11.19.dist-info}/LICENSE.txt +0 -0
- {oracle_ads-2.11.18.dist-info → oracle_ads-2.11.19.dist-info}/WHEEL +0 -0
- {oracle_ads-2.11.18.dist-info → oracle_ads-2.11.19.dist-info}/entry_points.txt +0 -0
ads/aqua/extension/utils.py
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
|
-
# -*- coding: utf-8 -*-
|
3
2
|
# Copyright (c) 2024 Oracle and/or its affiliates.
|
4
3
|
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
|
5
4
|
from dataclasses import fields
|
5
|
+
from datetime import datetime, timedelta
|
6
6
|
from typing import Dict, Optional
|
7
7
|
|
8
|
+
from cachetools import TTLCache, cached
|
8
9
|
from tornado.web import HTTPError
|
9
10
|
|
11
|
+
from ads.aqua import ODSC_MODEL_COMPARTMENT_OCID
|
12
|
+
from ads.aqua.common.utils import fetch_service_compartment
|
10
13
|
from ads.aqua.extension.errors import Errors
|
11
14
|
|
12
15
|
|
@@ -21,3 +24,11 @@ def validate_function_parameters(data_class, input_data: Dict):
|
|
21
24
|
raise HTTPError(
|
22
25
|
400, Errors.MISSING_REQUIRED_PARAMETER.format(required_parameter)
|
23
26
|
)
|
27
|
+
|
28
|
+
|
29
|
+
@cached(cache=TTLCache(maxsize=1, ttl=timedelta(minutes=1), timer=datetime.now))
|
30
|
+
def ui_compatability_check():
|
31
|
+
"""This method caches the service compartment OCID details that is set by either the environment variable or if
|
32
|
+
fetched from the configuration. The cached result is returned when multiple calls are made in quick succession
|
33
|
+
from the UI to avoid multiple config file loads."""
|
34
|
+
return ODSC_MODEL_COMPARTMENT_OCID or fetch_service_compartment()
|
@@ -146,7 +146,7 @@ class AquaDeploymentApp(AquaApp):
|
|
146
146
|
env_var : dict, optional
|
147
147
|
Environment variable for the deployment, by default None.
|
148
148
|
container_family: str
|
149
|
-
The image family of model deployment container runtime.
|
149
|
+
The image family of model deployment container runtime.
|
150
150
|
memory_in_gbs: float
|
151
151
|
The memory in gbs for the shape selected.
|
152
152
|
ocpus: float
|
@@ -230,41 +230,14 @@ class AquaDeploymentApp(AquaApp):
|
|
230
230
|
|
231
231
|
env_var.update({"FT_MODEL": f"{fine_tune_output_path}"})
|
232
232
|
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
).value
|
238
|
-
except ValueError as err:
|
239
|
-
message = (
|
240
|
-
f"{AQUA_DEPLOYMENT_CONTAINER_METADATA_NAME} key is not available in the custom metadata field "
|
241
|
-
f"for model {aqua_model.id}."
|
242
|
-
)
|
243
|
-
logger.debug(message)
|
244
|
-
if not container_family:
|
245
|
-
raise AquaValueError(
|
246
|
-
f"{message}. For unverified Aqua models, container_family parameter should be "
|
247
|
-
f"set and value can be one of {', '.join(InferenceContainerTypeFamily.values())}."
|
248
|
-
) from err
|
249
|
-
container_type_key = container_family
|
250
|
-
try:
|
251
|
-
# Check if the container override flag is set. If set, then the user has chosen custom image
|
252
|
-
if aqua_model.custom_metadata_list.get(
|
253
|
-
AQUA_DEPLOYMENT_CONTAINER_OVERRIDE_FLAG_METADATA_NAME
|
254
|
-
).value:
|
255
|
-
is_custom_container = True
|
256
|
-
except Exception:
|
257
|
-
pass
|
233
|
+
container_type_key = self._get_container_type_key(
|
234
|
+
model=aqua_model,
|
235
|
+
container_family=container_family
|
236
|
+
)
|
258
237
|
|
259
238
|
# fetch image name from config
|
260
|
-
|
261
|
-
|
262
|
-
get_container_image(
|
263
|
-
container_type=container_type_key,
|
264
|
-
)
|
265
|
-
if not is_custom_container
|
266
|
-
else container_type_key
|
267
|
-
)
|
239
|
+
container_image = get_container_image(container_type=container_type_key)
|
240
|
+
|
268
241
|
logging.info(
|
269
242
|
f"Aqua Image used for deploying {aqua_model.id} : {container_image}"
|
270
243
|
)
|
@@ -433,6 +406,26 @@ class AquaDeploymentApp(AquaApp):
|
|
433
406
|
deployment.dsc_model_deployment, self.region
|
434
407
|
)
|
435
408
|
|
409
|
+
@staticmethod
|
410
|
+
def _get_container_type_key(model: DataScienceModel, container_family: str) -> str:
|
411
|
+
container_type_key = UNKNOWN
|
412
|
+
if container_family:
|
413
|
+
container_type_key = container_family
|
414
|
+
else:
|
415
|
+
try:
|
416
|
+
container_type_key = model.custom_metadata_list.get(
|
417
|
+
AQUA_DEPLOYMENT_CONTAINER_METADATA_NAME
|
418
|
+
).value
|
419
|
+
except ValueError as err:
|
420
|
+
raise AquaValueError(
|
421
|
+
f"{AQUA_DEPLOYMENT_CONTAINER_METADATA_NAME} key is not available in the custom metadata field "
|
422
|
+
f"for model {model.id}. For unverified Aqua models, {AQUA_DEPLOYMENT_CONTAINER_METADATA_NAME} should be"
|
423
|
+
f"set and value can be one of {', '.join(InferenceContainerTypeFamily.values())}."
|
424
|
+
) from err
|
425
|
+
|
426
|
+
return container_type_key
|
427
|
+
|
428
|
+
|
436
429
|
@telemetry(entry_point="plugin=deployment&action=list", name="aqua")
|
437
430
|
def list(self, **kwargs) -> List["AquaDeployment"]:
|
438
431
|
"""List Aqua model deployments in a given compartment and under certain project.
|
@@ -672,23 +665,10 @@ class AquaDeploymentApp(AquaApp):
|
|
672
665
|
restricted_params = []
|
673
666
|
if params:
|
674
667
|
model = DataScienceModel.from_id(model_id)
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
except ValueError as err:
|
680
|
-
message = (
|
681
|
-
f"{AQUA_DEPLOYMENT_CONTAINER_METADATA_NAME} key is not available in the custom metadata field "
|
682
|
-
f"for model {model_id}."
|
683
|
-
)
|
684
|
-
logger.debug(message)
|
685
|
-
|
686
|
-
if not container_family:
|
687
|
-
raise AquaValueError(
|
688
|
-
f"{message}. For unverified Aqua models, container_family parameter should be "
|
689
|
-
f"set and value can be one of {', '.join(InferenceContainerTypeFamily.values())}."
|
690
|
-
) from err
|
691
|
-
container_type_key = container_family
|
668
|
+
container_type_key = self._get_container_type_key(
|
669
|
+
model=model,
|
670
|
+
container_family=container_family
|
671
|
+
)
|
692
672
|
|
693
673
|
container_config = get_container_config()
|
694
674
|
container_spec = container_config.get(ContainerSpec.CONTAINER_SPEC, {}).get(
|
ads/aqua/ui.py
CHANGED
@@ -84,9 +84,6 @@ class AquaContainerConfigSpec(DataClassSerializable):
|
|
84
84
|
health_check_port: str = None
|
85
85
|
env_vars: List[dict] = None
|
86
86
|
restricted_params: List[str] = None
|
87
|
-
evaluation_configuration: AquaContainerEvaluationConfig = field(
|
88
|
-
default_factory=AquaContainerEvaluationConfig
|
89
|
-
)
|
90
87
|
|
91
88
|
|
92
89
|
@dataclass(repr=False)
|
@@ -184,32 +181,37 @@ class AquaContainerConfig(DataClassSerializable):
|
|
184
181
|
family=container_type,
|
185
182
|
platforms=platforms,
|
186
183
|
model_formats=model_formats,
|
187
|
-
spec=
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
else None,
|
184
|
+
spec=(
|
185
|
+
AquaContainerConfigSpec(
|
186
|
+
cli_param=container_spec.get(
|
187
|
+
ContainerSpec.CLI_PARM, ""
|
188
|
+
),
|
189
|
+
server_port=container_spec.get(
|
190
|
+
ContainerSpec.SERVER_PORT, ""
|
191
|
+
),
|
192
|
+
health_check_port=container_spec.get(
|
193
|
+
ContainerSpec.HEALTH_CHECK_PORT, ""
|
194
|
+
),
|
195
|
+
env_vars=container_spec.get(ContainerSpec.ENV_VARS, []),
|
196
|
+
restricted_params=container_spec.get(
|
197
|
+
ContainerSpec.RESTRICTED_PARAMS, []
|
198
|
+
),
|
199
|
+
)
|
200
|
+
if container_spec
|
201
|
+
else None
|
202
|
+
),
|
207
203
|
)
|
208
204
|
if container.get("type") == "inference":
|
209
205
|
inference_items[container_type] = container_item
|
210
|
-
elif
|
206
|
+
elif (
|
207
|
+
container.get("type") == "fine-tune"
|
208
|
+
or container_type == "odsc-llm-fine-tuning"
|
209
|
+
):
|
211
210
|
finetune_items[container_type] = container_item
|
212
|
-
elif
|
211
|
+
elif (
|
212
|
+
container.get("type") == "evaluate"
|
213
|
+
or container_type == "odsc-llm-evaluate"
|
214
|
+
):
|
213
215
|
evaluate_items[container_type] = container_item
|
214
216
|
|
215
217
|
return AquaContainerConfig(
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: oracle_ads
|
3
|
-
Version: 2.11.
|
3
|
+
Version: 2.11.19
|
4
4
|
Summary: Oracle Accelerated Data Science SDK
|
5
5
|
Keywords: Oracle Cloud Infrastructure,OCI,Machine Learning,ML,Artificial Intelligence,AI,Data Science,Cloud,Oracle
|
6
6
|
Author: Oracle Data Science
|
@@ -33,6 +33,7 @@ Requires-Dist: requests
|
|
33
33
|
Requires-Dist: scikit-learn>=1.0
|
34
34
|
Requires-Dist: tabulate>=0.8.9
|
35
35
|
Requires-Dist: tqdm>=4.59.0
|
36
|
+
Requires-Dist: pydantic>=2.6.3
|
36
37
|
Requires-Dist: oracle_ads[opctl] ; extra == "anomaly"
|
37
38
|
Requires-Dist: autots ; extra == "anomaly"
|
38
39
|
Requires-Dist: oracledb ; extra == "anomaly"
|
@@ -4,43 +4,49 @@ ads/config.py,sha256=t_zDKftVYOLPP-t8IcnzEbtmMRX-6a8QKY9E_SnqA8M,8163
|
|
4
4
|
ads/aqua/__init__.py,sha256=IUKZAsxUGVicsyeSwsGwK6rAUJ1vIUW9ywduA3U22xc,1015
|
5
5
|
ads/aqua/app.py,sha256=BQuQ9RERU0rKmn3N3xicKzYaXOd7xBwX1aVuVLNgw98,11993
|
6
6
|
ads/aqua/cli.py,sha256=W-0kswzRDEilqHyw5GSMOrARgvOyPRtkEtpy54ew0Jo,3907
|
7
|
-
ads/aqua/constants.py,sha256=
|
7
|
+
ads/aqua/constants.py,sha256=M2bbrIlq9z-DTq8stsv1OHNfLAxwhTA3X-cdtQ8uGcc,2868
|
8
8
|
ads/aqua/data.py,sha256=7T7kdHGnEH6FXL_7jv_Da0CjEWXfjQZTFkaZWQikis4,932
|
9
|
-
ads/aqua/ui.py,sha256=
|
9
|
+
ads/aqua/ui.py,sha256=2hH9YmyJfDd70qV2EQyx0HFuPY5KSMH-WyCKRBt3qGU,25211
|
10
10
|
ads/aqua/common/__init__.py,sha256=rZrmh1nho40OCeabXCNWtze-mXi-PGKetcZdxZSn3_0,204
|
11
11
|
ads/aqua/common/decorator.py,sha256=XFS7tYGkN4dVzmB1wTYiJk1XqJ-VLhvzfZjExiQClgc,3640
|
12
12
|
ads/aqua/common/entities.py,sha256=UsP8CczuifLOLr_gAhulh8VmgGSFir3rli1MMQ-CZhk,537
|
13
13
|
ads/aqua/common/enums.py,sha256=hJABLhORCnAkZ6OxsjxhhkmZQQcMzfBzOQkAZLgxNXs,2603
|
14
14
|
ads/aqua/common/errors.py,sha256=Ev2xbaqkDqeCYDx4ZgOKOoM0sXsOXP3GIV6N1lhIUxM,3085
|
15
|
-
ads/aqua/common/utils.py,sha256=
|
16
|
-
ads/aqua/config/
|
15
|
+
ads/aqua/common/utils.py,sha256=MM-RZVpGNXm9KHmju1UZl7UjnbvQZjUzykcTISGsF4Y,34919
|
16
|
+
ads/aqua/config/__init__.py,sha256=2a_1LI4jWtJpbic5_v4EoOUTXCAH7cmsy9BW5prDHjU,179
|
17
|
+
ads/aqua/config/config.py,sha256=YIbd_9yP5kZd3G2q4q0TM6hzMdJSQ8BHPRAFE_5Xk3s,1548
|
17
18
|
ads/aqua/config/deployment_config_defaults.json,sha256=1fzb8EZOcFMjwktes40qgetKvdmUtEGCl4Jp4eb8tJg,665
|
18
19
|
ads/aqua/config/resource_limit_names.json,sha256=0ecGLCLxll9qt3E7fVZPtzpurqe1PGdTk0Rjn_cWh8k,235
|
20
|
+
ads/aqua/config/evaluation/__init__.py,sha256=2a_1LI4jWtJpbic5_v4EoOUTXCAH7cmsy9BW5prDHjU,179
|
21
|
+
ads/aqua/config/evaluation/evaluation_service_config.py,sha256=JAaK_2dSVyoGv22PkjGgzMbt9WLBaZAOlk02yY3590k,8735
|
22
|
+
ads/aqua/config/evaluation/evaluation_service_model_config.py,sha256=ITs_RBCynWuygjNdcUD7e2BLbPyPP3UozryEWlnju9s,280
|
23
|
+
ads/aqua/config/utils/__init__.py,sha256=2a_1LI4jWtJpbic5_v4EoOUTXCAH7cmsy9BW5prDHjU,179
|
24
|
+
ads/aqua/config/utils/serializer.py,sha256=RTyeFw2fDxmcTsERRd8AJDuyOuRQckL9dDLk8HFdxxc,11347
|
19
25
|
ads/aqua/dummy_data/icon.txt,sha256=wlB79r3A4mUBbrK5yVVXrNEEKpvfZiwBx2sKlj7wzA4,6326
|
20
26
|
ads/aqua/dummy_data/oci_model_deployments.json,sha256=xSBj6CEbFHHk9Ytgfu-lOgqWOss2DgSaK6tk2vgziEI,1939
|
21
27
|
ads/aqua/dummy_data/oci_models.json,sha256=mxUU8o3plmAFfr06fQmIQuiGe2qFFBlUB7QNPUNB1cE,36997
|
22
28
|
ads/aqua/dummy_data/readme.md,sha256=AlBPt0HBSOFA5HbYVsFsdTm-BC3R5NRpcKrTxdjEnlI,1256
|
23
29
|
ads/aqua/evaluation/__init__.py,sha256=Fd7WL7MpQ1FtJjlftMY2KHli5cz1wr5MDu3hGmV89a0,298
|
24
30
|
ads/aqua/evaluation/constants.py,sha256=GvcXvPIw-VDKw4a8WNKs36uWdT-f7VJrWSpnnRnthGg,1533
|
25
|
-
ads/aqua/evaluation/entities.py,sha256=
|
31
|
+
ads/aqua/evaluation/entities.py,sha256=mlu_ohjNPxxyDh4s_dFFxXJqKrwutAn48Wqr_odcT2M,5713
|
26
32
|
ads/aqua/evaluation/errors.py,sha256=qzR63YEIA8haCh4HcBHFFm7j4g6jWDfGszqrPkXx9zQ,4564
|
27
|
-
ads/aqua/evaluation/evaluation.py,sha256=
|
33
|
+
ads/aqua/evaluation/evaluation.py,sha256=LoEBUHwJwMa-seLa8d4qzPRMic_4AjeYcxMbftkoXa0,59885
|
28
34
|
ads/aqua/extension/__init__.py,sha256=mRArjU6UZpZYVr0qHSSkPteA_CKcCZIczOFaK421m9o,1453
|
29
35
|
ads/aqua/extension/aqua_ws_msg_handler.py,sha256=PcRhBqGpq5aOPP0ibhaKfmkA8ajimldsvJC32o9JeTw,3291
|
30
36
|
ads/aqua/extension/base_handler.py,sha256=MuVxsJG66NdatL-Hh99UD3VQOQw1ir-q2YBajwh9cJk,5132
|
31
|
-
ads/aqua/extension/common_handler.py,sha256=
|
32
|
-
ads/aqua/extension/common_ws_msg_handler.py,sha256=
|
37
|
+
ads/aqua/extension/common_handler.py,sha256=Oz3riHDy5pFfbArLge5iaaRoK8PEAnkBvhqqVGbUsvE,4196
|
38
|
+
ads/aqua/extension/common_ws_msg_handler.py,sha256=pMX79tmJKTKog684o6vuwZkAD47l8SxtRx5TNn8se7k,2230
|
33
39
|
ads/aqua/extension/deployment_handler.py,sha256=8MafpUaN-1gqyIksJ9EO55mbdGV57IWf1GmJ-zs9h8c,9475
|
34
40
|
ads/aqua/extension/deployment_ws_msg_handler.py,sha256=JX3ZHRtscrflSxT7ZTEEI_p_owtk3m5FZq3QXE96AGY,2013
|
35
41
|
ads/aqua/extension/errors.py,sha256=i37EnRzxGgvxzUNoyEORzHYmB296DGOUb6pm7VwEyTU,451
|
36
|
-
ads/aqua/extension/evaluation_handler.py,sha256=
|
42
|
+
ads/aqua/extension/evaluation_handler.py,sha256=RT2W7WDtxNIT0uirLfTcDlmTPYCuMuWRhiDxYZYliZs,4542
|
37
43
|
ads/aqua/extension/evaluation_ws_msg_handler.py,sha256=dv0iwOSTxYj1kQ1rPEoDmGgFBzLUCLXq5h7rpmY2T1M,2098
|
38
44
|
ads/aqua/extension/finetune_handler.py,sha256=ZCdXoEYzfViZfJsk0solCB6HQkg0skG1jFfqq1zF-vw,3312
|
39
|
-
ads/aqua/extension/model_handler.py,sha256=
|
45
|
+
ads/aqua/extension/model_handler.py,sha256=usiyLPaJJLAjtDhyFCNseaT3AQelZkBkLwoCno4Uo1o,9079
|
40
46
|
ads/aqua/extension/models_ws_msg_handler.py,sha256=3CPfzWl1xfrE2Dpn_WYP9zY0kY5zlsAE8tU_6Y2-i18,1801
|
41
47
|
ads/aqua/extension/ui_handler.py,sha256=IYhtyL4oE8zlxe-kfbvWSmFsayyXaZZZButDdxM3hcA,9850
|
42
48
|
ads/aqua/extension/ui_websocket_handler.py,sha256=oLFjaDrqkSERbhExdvxjLJX0oRcP-DVJ_aWn0qy0uvo,5084
|
43
|
-
ads/aqua/extension/utils.py,sha256=
|
49
|
+
ads/aqua/extension/utils.py,sha256=UKafTX6tN6ObOkWCLy6c3y_cNmUHfD64PtIaR5B7Sl0,1476
|
44
50
|
ads/aqua/extension/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
45
51
|
ads/aqua/extension/models/ws_models.py,sha256=-m6IJRS-4I6AMLDwgu19XdrvHyOStuBx9t4B0LgS07g,3348
|
46
52
|
ads/aqua/finetuning/__init__.py,sha256=vwYT5PluMR0mDQwVIavn_8Icms7LmvfV_FOrJ8fJx8I,296
|
@@ -54,7 +60,7 @@ ads/aqua/model/enums.py,sha256=t8GbK2nblIPm3gClR8W31RmbtTuqpoSzoN4W3JfD6AI,1004
|
|
54
60
|
ads/aqua/model/model.py,sha256=gMoELf_HjuUYYcW05XfNRghXk3IhBP0PPaQDgP_-QUA,54277
|
55
61
|
ads/aqua/modeldeployment/__init__.py,sha256=RJCfU1yazv3hVWi5rS08QVLTpTwZLnlC8wU8diwFjnM,391
|
56
62
|
ads/aqua/modeldeployment/constants.py,sha256=lJF77zwxmlECljDYjwFAMprAUR_zctZHmawiP-4alLg,296
|
57
|
-
ads/aqua/modeldeployment/deployment.py,sha256=
|
63
|
+
ads/aqua/modeldeployment/deployment.py,sha256=zrzC0i4H25M50dqrYF88ZyHUj3N6WjxQdcRLHLDgyA4,27976
|
58
64
|
ads/aqua/modeldeployment/entities.py,sha256=QgiLxdWfoNg-u4P7DqauZh9oQQ-WjSs37s8WR84m164,4744
|
59
65
|
ads/aqua/modeldeployment/inference.py,sha256=JPqzbHJoM-PpIU_Ft9lHudO9_1vFr7OPQ2GHjPoAufU,2142
|
60
66
|
ads/aqua/training/__init__.py,sha256=w2DNWltXtASQgbrHyvKo0gMs5_chZoG-CSDMI4qe7i0,202
|
@@ -805,8 +811,8 @@ ads/type_discovery/unknown_detector.py,sha256=yZuYQReO7PUyoWZE7onhhtYaOg6088wf1y
|
|
805
811
|
ads/type_discovery/zipcode_detector.py,sha256=3AlETg_ZF4FT0u914WXvTT3F3Z6Vf51WiIt34yQMRbw,1421
|
806
812
|
ads/vault/__init__.py,sha256=x9tMdDAOdF5iDHk9u2di_K-ze5Nq068x25EWOBoWwqY,245
|
807
813
|
ads/vault/vault.py,sha256=hFBkpYE-Hfmzu1L0sQwUfYcGxpWmgG18JPndRl0NOXI,8624
|
808
|
-
oracle_ads-2.11.
|
809
|
-
oracle_ads-2.11.
|
810
|
-
oracle_ads-2.11.
|
811
|
-
oracle_ads-2.11.
|
812
|
-
oracle_ads-2.11.
|
814
|
+
oracle_ads-2.11.19.dist-info/entry_points.txt,sha256=9VFnjpQCsMORA4rVkvN8eH6D3uHjtegb9T911t8cqV0,35
|
815
|
+
oracle_ads-2.11.19.dist-info/LICENSE.txt,sha256=zoGmbfD1IdRKx834U0IzfFFFo5KoFK71TND3K9xqYqo,1845
|
816
|
+
oracle_ads-2.11.19.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
817
|
+
oracle_ads-2.11.19.dist-info/METADATA,sha256=R8jk8MKEE5pas8WxbiX_VJ02VbhhojP_R83HgtIKUmE,16068
|
818
|
+
oracle_ads-2.11.19.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|