oracle-ads 2.13.2rc1__py3-none-any.whl → 2.13.4__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/app.py +2 -1
- ads/aqua/evaluation/evaluation.py +11 -10
- ads/aqua/finetuning/finetuning.py +2 -3
- ads/common/utils.py +1 -17
- ads/model/datascience_model.py +81 -21
- ads/model/service/oci_datascience_model.py +50 -42
- ads/opctl/operator/lowcode/forecast/model/factory.py +8 -1
- {oracle_ads-2.13.2rc1.dist-info → oracle_ads-2.13.4.dist-info}/METADATA +8 -4
- {oracle_ads-2.13.2rc1.dist-info → oracle_ads-2.13.4.dist-info}/RECORD +12 -12
- {oracle_ads-2.13.2rc1.dist-info → oracle_ads-2.13.4.dist-info}/WHEEL +1 -1
- {oracle_ads-2.13.2rc1.dist-info → oracle_ads-2.13.4.dist-info}/entry_points.txt +0 -0
- {oracle_ads-2.13.2rc1.dist-info → oracle_ads-2.13.4.dist-info}/licenses/LICENSE.txt +0 -0
ads/aqua/app.py
CHANGED
@@ -225,6 +225,7 @@ class AquaApp:
|
|
225
225
|
model_taxonomy_metadata: Union[ModelTaxonomyMetadata, Dict],
|
226
226
|
compartment_id: str,
|
227
227
|
project_id: str,
|
228
|
+
defined_tags: Dict = None,
|
228
229
|
**kwargs,
|
229
230
|
) -> DataScienceModel:
|
230
231
|
model = (
|
@@ -237,7 +238,7 @@ class AquaApp:
|
|
237
238
|
.with_custom_metadata_list(model_custom_metadata)
|
238
239
|
.with_defined_metadata_list(model_taxonomy_metadata)
|
239
240
|
.with_provenance_metadata(ModelProvenanceMetadata(training_id=UNKNOWN))
|
240
|
-
#
|
241
|
+
.with_defined_tags(**(defined_tags or {})) # Create defined tags when a model is created.
|
241
242
|
.create(
|
242
243
|
**kwargs,
|
243
244
|
)
|
@@ -260,6 +260,10 @@ class AquaEvaluationApp(AquaApp):
|
|
260
260
|
**create_aqua_evaluation_details.model_parameters,
|
261
261
|
)
|
262
262
|
|
263
|
+
evaluation_model_defined_tags = (
|
264
|
+
create_aqua_evaluation_details.defined_tags or {}
|
265
|
+
)
|
266
|
+
|
263
267
|
target_compartment = (
|
264
268
|
create_aqua_evaluation_details.compartment_id or COMPARTMENT_OCID
|
265
269
|
)
|
@@ -311,9 +315,7 @@ class AquaEvaluationApp(AquaApp):
|
|
311
315
|
create_aqua_evaluation_details.experiment_description
|
312
316
|
)
|
313
317
|
.with_freeform_tags(**evaluation_mvs_freeform_tags)
|
314
|
-
.with_defined_tags(
|
315
|
-
**(create_aqua_evaluation_details.defined_tags or {})
|
316
|
-
)
|
318
|
+
.with_defined_tags(**evaluation_model_defined_tags)
|
317
319
|
# TODO: decide what parameters will be needed
|
318
320
|
.create(**kwargs)
|
319
321
|
)
|
@@ -358,6 +360,7 @@ class AquaEvaluationApp(AquaApp):
|
|
358
360
|
.with_custom_metadata_list(evaluation_model_custom_metadata)
|
359
361
|
.with_defined_metadata_list(evaluation_model_taxonomy_metadata)
|
360
362
|
.with_provenance_metadata(ModelProvenanceMetadata(training_id=UNKNOWN))
|
363
|
+
.with_defined_tags(**evaluation_model_defined_tags)
|
361
364
|
# TODO uncomment this once the evaluation container will get the updated version of the ADS
|
362
365
|
# .with_input_schema(create_aqua_evaluation_details.to_dict())
|
363
366
|
# TODO: decide what parameters will be needed
|
@@ -390,7 +393,7 @@ class AquaEvaluationApp(AquaApp):
|
|
390
393
|
.with_shape_name(create_aqua_evaluation_details.shape_name)
|
391
394
|
.with_block_storage_size(create_aqua_evaluation_details.block_storage_size)
|
392
395
|
.with_freeform_tag(**evaluation_job_freeform_tags)
|
393
|
-
.with_defined_tag(**
|
396
|
+
.with_defined_tag(**evaluation_model_defined_tags)
|
394
397
|
)
|
395
398
|
if (
|
396
399
|
create_aqua_evaluation_details.memory_in_gbs
|
@@ -429,7 +432,9 @@ class AquaEvaluationApp(AquaApp):
|
|
429
432
|
metrics=create_aqua_evaluation_details.metrics,
|
430
433
|
inference_configuration=eval_inference_configuration or {},
|
431
434
|
)
|
432
|
-
).create(
|
435
|
+
).create(
|
436
|
+
**kwargs
|
437
|
+
) ## TODO: decide what parameters will be needed
|
433
438
|
logger.debug(
|
434
439
|
f"Successfully created evaluation job {evaluation_job.id} for {create_aqua_evaluation_details.evaluation_source_id}."
|
435
440
|
)
|
@@ -437,7 +442,7 @@ class AquaEvaluationApp(AquaApp):
|
|
437
442
|
evaluation_job_run = evaluation_job.run(
|
438
443
|
name=evaluation_model.display_name,
|
439
444
|
freeform_tags=evaluation_job_freeform_tags,
|
440
|
-
defined_tags=
|
445
|
+
defined_tags=evaluation_model_defined_tags,
|
441
446
|
wait=False,
|
442
447
|
)
|
443
448
|
logger.debug(
|
@@ -461,16 +466,12 @@ class AquaEvaluationApp(AquaApp):
|
|
461
466
|
Tags.AQUA_EVALUATION: Tags.AQUA_EVALUATION,
|
462
467
|
**(create_aqua_evaluation_details.freeform_tags or {}),
|
463
468
|
}
|
464
|
-
evaluation_model_defined_tags = (
|
465
|
-
create_aqua_evaluation_details.defined_tags or {}
|
466
|
-
)
|
467
469
|
|
468
470
|
self.ds_client.update_model(
|
469
471
|
model_id=evaluation_model.id,
|
470
472
|
update_model_details=UpdateModelDetails(
|
471
473
|
custom_metadata_list=updated_custom_metadata_list,
|
472
474
|
freeform_tags=evaluation_model_freeform_tags,
|
473
|
-
defined_tags=evaluation_model_defined_tags,
|
474
475
|
),
|
475
476
|
)
|
476
477
|
|
@@ -263,6 +263,7 @@ class AquaFineTuningApp(AquaApp):
|
|
263
263
|
compartment_id=target_compartment,
|
264
264
|
project_id=target_project,
|
265
265
|
model_by_reference=True,
|
266
|
+
defined_tags=create_fine_tuning_details.defined_tags
|
266
267
|
)
|
267
268
|
|
268
269
|
ft_job_freeform_tags = {
|
@@ -382,14 +383,12 @@ class AquaFineTuningApp(AquaApp):
|
|
382
383
|
Tags.AQUA_FINE_TUNED_MODEL_TAG: f"{source.id}#{source.display_name}",
|
383
384
|
**(create_fine_tuning_details.freeform_tags or {}),
|
384
385
|
}
|
385
|
-
model_defined_tags = create_fine_tuning_details.defined_tags or {}
|
386
386
|
|
387
387
|
self.update_model(
|
388
388
|
model_id=ft_model.id,
|
389
389
|
update_model_details=UpdateModelDetails(
|
390
390
|
custom_metadata_list=updated_custom_metadata_list,
|
391
391
|
freeform_tags=model_freeform_tags,
|
392
|
-
defined_tags=model_defined_tags,
|
393
392
|
),
|
394
393
|
)
|
395
394
|
logger.debug(
|
@@ -490,7 +489,7 @@ class AquaFineTuningApp(AquaApp):
|
|
490
489
|
"finetuning_source": source.id,
|
491
490
|
"finetuning_experiment_id": experiment_model_version_set_id,
|
492
491
|
**model_freeform_tags,
|
493
|
-
**
|
492
|
+
**(create_fine_tuning_details.defined_tags or {}),
|
494
493
|
},
|
495
494
|
parameters=ft_parameters,
|
496
495
|
)
|
ads/common/utils.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
|
3
|
-
# Copyright (c) 2020,
|
3
|
+
# Copyright (c) 2020, 2025 Oracle and/or its affiliates.
|
4
4
|
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
|
5
5
|
|
6
6
|
|
@@ -152,22 +152,6 @@ def oci_key_location():
|
|
152
152
|
)
|
153
153
|
|
154
154
|
|
155
|
-
def text_sanitizer(content):
|
156
|
-
if isinstance(content, str):
|
157
|
-
return (
|
158
|
-
content.replace("“", '"')
|
159
|
-
.replace("”", '"')
|
160
|
-
.replace("’", "'")
|
161
|
-
.replace("‘", "'")
|
162
|
-
.replace("—", "-")
|
163
|
-
.encode("utf-8", "ignore")
|
164
|
-
.decode("utf-8", "ignore")
|
165
|
-
)
|
166
|
-
if isinstance(content, dict):
|
167
|
-
return json.dumps(content)
|
168
|
-
return str(content)
|
169
|
-
|
170
|
-
|
171
155
|
@deprecated(
|
172
156
|
"2.5.10",
|
173
157
|
details="Deprecated, use: from ads.common.auth import AuthState; AuthState().oci_config_path",
|
ads/model/datascience_model.py
CHANGED
@@ -89,6 +89,11 @@ class InvalidArtifactType(Exception): # pragma: no cover
|
|
89
89
|
pass
|
90
90
|
|
91
91
|
|
92
|
+
class InvalidArtifactPathTypeOrContentError(Exception): # pragma: no cover
|
93
|
+
def __init__(self, msg="Invalid type of Metdata artifact content"):
|
94
|
+
super().__init__(msg)
|
95
|
+
|
96
|
+
|
92
97
|
class CustomerNotificationType(ExtendedEnum):
|
93
98
|
NONE = "NONE"
|
94
99
|
ALL = "ALL"
|
@@ -2238,7 +2243,7 @@ class DataScienceModel(Builder):
|
|
2238
2243
|
def create_custom_metadata_artifact(
|
2239
2244
|
self,
|
2240
2245
|
metadata_key_name: str,
|
2241
|
-
artifact_path_or_content: str,
|
2246
|
+
artifact_path_or_content: Union[str, bytes],
|
2242
2247
|
path_type: MetadataArtifactPathType = MetadataArtifactPathType.LOCAL,
|
2243
2248
|
) -> ModelMetadataArtifactDetails:
|
2244
2249
|
"""Creates model custom metadata artifact for specified model.
|
@@ -2248,13 +2253,22 @@ class DataScienceModel(Builder):
|
|
2248
2253
|
metadata_key_name: str
|
2249
2254
|
The name of the model custom metadata key
|
2250
2255
|
|
2251
|
-
artifact_path_or_content: str
|
2252
|
-
The model custom metadata artifact path to be
|
2256
|
+
artifact_path_or_content: Union[str,bytes]
|
2257
|
+
The model custom metadata artifact path to be uploaded. It can also be the actual content of the custom metadata artifact
|
2258
|
+
The type is string when it represents local path or oss path.
|
2259
|
+
The type is bytes when it represents content itself
|
2253
2260
|
|
2254
2261
|
path_type: MetadataArtifactPathType
|
2255
2262
|
Can be either of MetadataArtifactPathType.LOCAL , MetadataArtifactPathType.OSS , MetadataArtifactPathType.CONTENT
|
2256
2263
|
Specifies what type of path is to be provided for metadata artifact.
|
2257
|
-
|
2264
|
+
|
2265
|
+
Example:
|
2266
|
+
>>> ds_model=DataScienceModel.from_id("ocid1.datasciencemodel.iad.xxyxz...")
|
2267
|
+
>>> ds_model.create_custom_metadata_artifact(
|
2268
|
+
... "README",
|
2269
|
+
... artifact_path_or_content="/Users/<username>/Downloads/README.md",
|
2270
|
+
... path_type=MetadataArtifactPathType.LOCAL
|
2271
|
+
... )
|
2258
2272
|
|
2259
2273
|
Returns
|
2260
2274
|
-------
|
@@ -2273,16 +2287,23 @@ class DataScienceModel(Builder):
|
|
2273
2287
|
}
|
2274
2288
|
|
2275
2289
|
"""
|
2290
|
+
if path_type == MetadataArtifactPathType.CONTENT and not isinstance(
|
2291
|
+
artifact_path_or_content, bytes
|
2292
|
+
):
|
2293
|
+
raise InvalidArtifactPathTypeOrContentError(
|
2294
|
+
f"Invalid type of artifact content: {type(artifact_path_or_content)}. It should be bytes."
|
2295
|
+
)
|
2296
|
+
|
2276
2297
|
return self.dsc_model.create_custom_metadata_artifact(
|
2277
2298
|
metadata_key_name=metadata_key_name,
|
2278
|
-
|
2299
|
+
artifact_path_or_content=artifact_path_or_content,
|
2279
2300
|
path_type=path_type,
|
2280
2301
|
)
|
2281
2302
|
|
2282
2303
|
def create_defined_metadata_artifact(
|
2283
2304
|
self,
|
2284
2305
|
metadata_key_name: str,
|
2285
|
-
artifact_path_or_content: str,
|
2306
|
+
artifact_path_or_content: Union[str, bytes],
|
2286
2307
|
path_type: MetadataArtifactPathType = MetadataArtifactPathType.LOCAL,
|
2287
2308
|
) -> ModelMetadataArtifactDetails:
|
2288
2309
|
"""Creates model defined metadata artifact for specified model.
|
@@ -2292,14 +2313,24 @@ class DataScienceModel(Builder):
|
|
2292
2313
|
metadata_key_name: str
|
2293
2314
|
The name of the model defined metadata key
|
2294
2315
|
|
2295
|
-
artifact_path_or_content: str
|
2296
|
-
The model defined metadata artifact path to be
|
2316
|
+
artifact_path_or_content: Union[str,bytes]
|
2317
|
+
The model defined metadata artifact path to be uploaded. It can also be the actual content of the defined metadata
|
2318
|
+
The type is string when it represents local path or oss path.
|
2319
|
+
The type is bytes when it represents content itself
|
2297
2320
|
|
2298
2321
|
path_type: MetadataArtifactPathType
|
2299
2322
|
Can be either of MetadataArtifactPathType.LOCAL , MetadataArtifactPathType.OSS , MetadataArtifactPathType.CONTENT
|
2300
2323
|
Specifies what type of path is to be provided for metadata artifact.
|
2301
2324
|
Can be either local , oss or the actual content itself
|
2302
2325
|
|
2326
|
+
Example:
|
2327
|
+
>>> ds_model=DataScienceModel.from_id("ocid1.datasciencemodel.iad.xxyxz...")
|
2328
|
+
>>> ds_model.create_defined_metadata_artifact(
|
2329
|
+
... "README",
|
2330
|
+
... artifact_path_or_content="oci://path/to/bucket/README.md",
|
2331
|
+
... path_type=MetadataArtifactPathType.OSS
|
2332
|
+
... )
|
2333
|
+
|
2303
2334
|
Returns
|
2304
2335
|
-------
|
2305
2336
|
ModelMetadataArtifactDetails
|
@@ -2317,16 +2348,23 @@ class DataScienceModel(Builder):
|
|
2317
2348
|
}
|
2318
2349
|
|
2319
2350
|
"""
|
2351
|
+
if path_type == MetadataArtifactPathType.CONTENT and not isinstance(
|
2352
|
+
artifact_path_or_content, bytes
|
2353
|
+
):
|
2354
|
+
raise InvalidArtifactPathTypeOrContentError(
|
2355
|
+
f"Invalid type of artifact content: {type(artifact_path_or_content)}. It should be bytes."
|
2356
|
+
)
|
2357
|
+
|
2320
2358
|
return self.dsc_model.create_defined_metadata_artifact(
|
2321
2359
|
metadata_key_name=metadata_key_name,
|
2322
|
-
|
2360
|
+
artifact_path_or_content=artifact_path_or_content,
|
2323
2361
|
path_type=path_type,
|
2324
2362
|
)
|
2325
2363
|
|
2326
2364
|
def update_custom_metadata_artifact(
|
2327
2365
|
self,
|
2328
2366
|
metadata_key_name: str,
|
2329
|
-
artifact_path_or_content: str,
|
2367
|
+
artifact_path_or_content: Union[str, bytes],
|
2330
2368
|
path_type: MetadataArtifactPathType = MetadataArtifactPathType.LOCAL,
|
2331
2369
|
) -> ModelMetadataArtifactDetails:
|
2332
2370
|
"""Update model custom metadata artifact for specified model.
|
@@ -2336,8 +2374,10 @@ class DataScienceModel(Builder):
|
|
2336
2374
|
metadata_key_name: str
|
2337
2375
|
The name of the model custom metadata key
|
2338
2376
|
|
2339
|
-
artifact_path_or_content: str
|
2340
|
-
The model custom metadata artifact path. It can also be the actual content of the custom metadata
|
2377
|
+
artifact_path_or_content: Union[str,bytes]
|
2378
|
+
The model custom metadata artifact path to be uploaded. It can also be the actual content of the custom metadata
|
2379
|
+
The type is string when it represents local path or oss path.
|
2380
|
+
The type is bytes when it represents content itself
|
2341
2381
|
|
2342
2382
|
path_type: MetadataArtifactPathType
|
2343
2383
|
Can be either of MetadataArtifactPathType.LOCAL , MetadataArtifactPathType.OSS , MetadataArtifactPathType.CONTENT
|
@@ -2361,16 +2401,23 @@ class DataScienceModel(Builder):
|
|
2361
2401
|
}
|
2362
2402
|
|
2363
2403
|
"""
|
2404
|
+
if path_type == MetadataArtifactPathType.CONTENT and not isinstance(
|
2405
|
+
artifact_path_or_content, bytes
|
2406
|
+
):
|
2407
|
+
raise InvalidArtifactPathTypeOrContentError(
|
2408
|
+
f"Invalid type of artifact content: {type(artifact_path_or_content)}. It should be bytes."
|
2409
|
+
)
|
2410
|
+
|
2364
2411
|
return self.dsc_model.update_custom_metadata_artifact(
|
2365
2412
|
metadata_key_name=metadata_key_name,
|
2366
|
-
|
2413
|
+
artifact_path_or_content=artifact_path_or_content,
|
2367
2414
|
path_type=path_type,
|
2368
2415
|
)
|
2369
2416
|
|
2370
2417
|
def update_defined_metadata_artifact(
|
2371
2418
|
self,
|
2372
2419
|
metadata_key_name: str,
|
2373
|
-
artifact_path_or_content: str,
|
2420
|
+
artifact_path_or_content: Union[str, bytes],
|
2374
2421
|
path_type: MetadataArtifactPathType = MetadataArtifactPathType.LOCAL,
|
2375
2422
|
) -> ModelMetadataArtifactDetails:
|
2376
2423
|
"""Update model defined metadata artifact for specified model.
|
@@ -2380,8 +2427,10 @@ class DataScienceModel(Builder):
|
|
2380
2427
|
metadata_key_name: str
|
2381
2428
|
The name of the model defined metadata key
|
2382
2429
|
|
2383
|
-
artifact_path_or_content: str
|
2384
|
-
The model defined metadata artifact path. It can also be the actual content of the defined metadata
|
2430
|
+
artifact_path_or_content: Union[str,bytes]
|
2431
|
+
The model defined metadata artifact path to be uploaded. It can also be the actual content of the defined metadata
|
2432
|
+
The type is string when it represents local path or oss path.
|
2433
|
+
The type is bytes when it represents content itself
|
2385
2434
|
|
2386
2435
|
path_type: MetadataArtifactPathType
|
2387
2436
|
Can be either of MetadataArtifactPathType.LOCAL , MetadataArtifactPathType.OSS , MetadataArtifactPathType.CONTENT
|
@@ -2405,9 +2454,16 @@ class DataScienceModel(Builder):
|
|
2405
2454
|
}
|
2406
2455
|
|
2407
2456
|
"""
|
2457
|
+
if path_type == MetadataArtifactPathType.CONTENT and not isinstance(
|
2458
|
+
artifact_path_or_content, bytes
|
2459
|
+
):
|
2460
|
+
raise InvalidArtifactPathTypeOrContentError(
|
2461
|
+
f"Invalid type of artifact content: {type(artifact_path_or_content)}. It should be bytes."
|
2462
|
+
)
|
2463
|
+
|
2408
2464
|
return self.dsc_model.update_defined_metadata_artifact(
|
2409
2465
|
metadata_key_name=metadata_key_name,
|
2410
|
-
|
2466
|
+
artifact_path_or_content=artifact_path_or_content,
|
2411
2467
|
path_type=path_type,
|
2412
2468
|
)
|
2413
2469
|
|
@@ -2442,8 +2498,10 @@ class DataScienceModel(Builder):
|
|
2442
2498
|
)
|
2443
2499
|
artifact_file_path = os.path.join(target_dir, f"{metadata_key_name}")
|
2444
2500
|
|
2445
|
-
if not override and
|
2446
|
-
raise FileExistsError(
|
2501
|
+
if not override and is_path_exists(artifact_file_path):
|
2502
|
+
raise FileExistsError(
|
2503
|
+
f"File already exists: {artifact_file_path}. Please use boolean override parameter to override the file content."
|
2504
|
+
)
|
2447
2505
|
|
2448
2506
|
with open(artifact_file_path, "wb") as _file:
|
2449
2507
|
_file.write(file_content)
|
@@ -2481,8 +2539,10 @@ class DataScienceModel(Builder):
|
|
2481
2539
|
)
|
2482
2540
|
artifact_file_path = os.path.join(target_dir, f"{metadata_key_name}")
|
2483
2541
|
|
2484
|
-
if not override and
|
2485
|
-
raise FileExistsError(
|
2542
|
+
if not override and is_path_exists(artifact_file_path):
|
2543
|
+
raise FileExistsError(
|
2544
|
+
f"File already exists: {artifact_file_path}. Please use boolean override parameter to override the file content."
|
2545
|
+
)
|
2486
2546
|
|
2487
2547
|
with open(artifact_file_path, "wb") as _file:
|
2488
2548
|
_file.write(file_content)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
|
3
|
-
# Copyright (c) 2022,
|
3
|
+
# Copyright (c) 2022, 2025 Oracle and/or its affiliates.
|
4
4
|
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
|
5
5
|
|
6
6
|
import logging
|
@@ -28,7 +28,7 @@ from ads.common.oci_datascience import OCIDataScienceMixin
|
|
28
28
|
from ads.common.oci_mixin import OCIWorkRequestMixin
|
29
29
|
from ads.common.oci_resource import SEARCH_TYPE, OCIResource
|
30
30
|
from ads.common.serializer import DataClassSerializable
|
31
|
-
from ads.common.utils import extract_region, read_file
|
31
|
+
from ads.common.utils import extract_region, read_file
|
32
32
|
from ads.common.work_request import DataScienceWorkRequest
|
33
33
|
from ads.model.common.utils import MetadataArtifactPathType
|
34
34
|
from ads.model.deployment import ModelDeployment
|
@@ -621,45 +621,43 @@ class OCIDataScienceModel(
|
|
621
621
|
return False
|
622
622
|
|
623
623
|
def get_metadata_content(
|
624
|
-
self,
|
625
|
-
|
624
|
+
self,
|
625
|
+
artifact_path_or_content: Union[str, bytes],
|
626
|
+
path_type: MetadataArtifactPathType,
|
627
|
+
) -> bytes:
|
626
628
|
"""
|
627
629
|
returns the content of the metadata artifact
|
628
630
|
|
629
631
|
Parameters
|
630
632
|
----------
|
631
|
-
artifact_path_or_content: str
|
633
|
+
artifact_path_or_content: Union[str,bytes]
|
632
634
|
The path of the file (local or oss) containing metadata artifact or content.
|
635
|
+
The type is string when it represents local path or oss path.
|
636
|
+
The type is bytes when it represents content itself
|
633
637
|
path_type: str
|
634
638
|
can be one of local , oss or actual content itself
|
635
639
|
|
636
640
|
Returns
|
637
641
|
-------
|
638
|
-
|
642
|
+
bytes
|
643
|
+
metadata artifact content in bytes
|
639
644
|
"""
|
640
645
|
|
641
646
|
if path_type == MetadataArtifactPathType.CONTENT:
|
642
647
|
return artifact_path_or_content
|
643
648
|
|
644
|
-
elif
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
)
|
649
|
-
|
650
|
-
with open(artifact_path_or_content, "rb") as f:
|
651
|
-
contents = f.read()
|
652
|
-
logger.info(f"The metadata artifact content - {contents}")
|
653
|
-
|
654
|
-
return contents
|
655
|
-
|
656
|
-
elif path_type == MetadataArtifactPathType.OSS:
|
649
|
+
elif (
|
650
|
+
path_type == MetadataArtifactPathType.LOCAL
|
651
|
+
or path_type == MetadataArtifactPathType.OSS
|
652
|
+
):
|
657
653
|
if not utils.is_path_exists(artifact_path_or_content):
|
658
654
|
raise FileNotFoundError(f"File not found: {artifact_path_or_content}")
|
659
|
-
|
660
|
-
|
661
|
-
read_file(file_path=artifact_path_or_content, auth=default_signer())
|
655
|
+
signer = (
|
656
|
+
default_signer() if path_type == MetadataArtifactPathType.OSS else {}
|
662
657
|
)
|
658
|
+
contents = read_file(
|
659
|
+
file_path=artifact_path_or_content, auth=signer
|
660
|
+
).encode()
|
663
661
|
logger.debug(f"The metadata artifact content - {contents}")
|
664
662
|
|
665
663
|
return contents
|
@@ -670,7 +668,7 @@ class OCIDataScienceModel(
|
|
670
668
|
def create_custom_metadata_artifact(
|
671
669
|
self,
|
672
670
|
metadata_key_name: str,
|
673
|
-
|
671
|
+
artifact_path_or_content: Union[str, bytes],
|
674
672
|
path_type: MetadataArtifactPathType,
|
675
673
|
) -> ModelMetadataArtifactDetails:
|
676
674
|
"""Creates model custom metadata artifact for specified model.
|
@@ -680,8 +678,10 @@ class OCIDataScienceModel(
|
|
680
678
|
metadata_key_name: str
|
681
679
|
The name of the model metadatum in the metadata.
|
682
680
|
|
683
|
-
|
684
|
-
The
|
681
|
+
artifact_path_or_content: Union[str,bytes]
|
682
|
+
The path of the file (local or oss) containing metadata artifact or content.
|
683
|
+
The type is string when it represents local path or oss path.
|
684
|
+
The type is bytes when it represents content itself
|
685
685
|
|
686
686
|
path_type: MetadataArtifactPathType
|
687
687
|
can be one of local , oss or actual content itself
|
@@ -704,12 +704,13 @@ class OCIDataScienceModel(
|
|
704
704
|
|
705
705
|
"""
|
706
706
|
contents = self.get_metadata_content(
|
707
|
-
artifact_path_or_content=
|
707
|
+
artifact_path_or_content=artifact_path_or_content, path_type=path_type
|
708
708
|
)
|
709
|
+
|
709
710
|
response = self.client.create_model_custom_metadatum_artifact(
|
710
711
|
self.id,
|
711
712
|
metadata_key_name,
|
712
|
-
|
713
|
+
contents,
|
713
714
|
content_disposition="form" '-data; name="file"; filename="readme.*"',
|
714
715
|
)
|
715
716
|
response_data = convert_model_metadata_response(
|
@@ -723,7 +724,7 @@ class OCIDataScienceModel(
|
|
723
724
|
def create_defined_metadata_artifact(
|
724
725
|
self,
|
725
726
|
metadata_key_name: str,
|
726
|
-
|
727
|
+
artifact_path_or_content: Union[str, bytes],
|
727
728
|
path_type: MetadataArtifactPathType,
|
728
729
|
) -> ModelMetadataArtifactDetails:
|
729
730
|
"""Creates model defined metadata artifact for specified model.
|
@@ -733,8 +734,10 @@ class OCIDataScienceModel(
|
|
733
734
|
metadata_key_name: str
|
734
735
|
The name of the model metadatum in the metadata.
|
735
736
|
|
736
|
-
|
737
|
-
The
|
737
|
+
artifact_path_or_content: Union[str,bytes]
|
738
|
+
The path of the file (local or oss) containing metadata artifact or content.
|
739
|
+
The type is string when it represents local path or oss path.
|
740
|
+
The type is bytes when it represents content itself
|
738
741
|
|
739
742
|
path_type: MetadataArtifactPathType
|
740
743
|
can be one of local , oss or actual content itself.
|
@@ -757,12 +760,13 @@ class OCIDataScienceModel(
|
|
757
760
|
|
758
761
|
"""
|
759
762
|
contents = self.get_metadata_content(
|
760
|
-
artifact_path_or_content=
|
763
|
+
artifact_path_or_content=artifact_path_or_content, path_type=path_type
|
761
764
|
)
|
765
|
+
|
762
766
|
response = self.client.create_model_defined_metadatum_artifact(
|
763
767
|
self.id,
|
764
768
|
metadata_key_name,
|
765
|
-
|
769
|
+
contents,
|
766
770
|
content_disposition='form-data; name="file"; filename="readme.*"',
|
767
771
|
)
|
768
772
|
response_data = convert_model_metadata_response(
|
@@ -776,7 +780,7 @@ class OCIDataScienceModel(
|
|
776
780
|
def update_defined_metadata_artifact(
|
777
781
|
self,
|
778
782
|
metadata_key_name: str,
|
779
|
-
|
783
|
+
artifact_path_or_content: Union[str, bytes],
|
780
784
|
path_type: MetadataArtifactPathType,
|
781
785
|
) -> ModelMetadataArtifactDetails:
|
782
786
|
"""Update model defined metadata artifact for specified model.
|
@@ -786,8 +790,10 @@ class OCIDataScienceModel(
|
|
786
790
|
metadata_key_name: str
|
787
791
|
The name of the model metadatum in the metadata.
|
788
792
|
|
789
|
-
|
790
|
-
The
|
793
|
+
artifact_path_or_content: Union[str,bytes]
|
794
|
+
The path of the file (local or oss) containing metadata artifact or content.
|
795
|
+
The type is string when it represents local path or oss path.
|
796
|
+
The type is bytes when it represents content itself
|
791
797
|
|
792
798
|
path_type:MetadataArtifactPathType
|
793
799
|
can be one of local , oss or actual content itself.
|
@@ -809,12 +815,12 @@ class OCIDataScienceModel(
|
|
809
815
|
|
810
816
|
"""
|
811
817
|
contents = self.get_metadata_content(
|
812
|
-
artifact_path_or_content=
|
818
|
+
artifact_path_or_content=artifact_path_or_content, path_type=path_type
|
813
819
|
)
|
814
820
|
response = self.client.update_model_defined_metadatum_artifact(
|
815
821
|
self.id,
|
816
822
|
metadata_key_name,
|
817
|
-
|
823
|
+
contents,
|
818
824
|
content_disposition='form-data; name="file"; filename="readme.*"',
|
819
825
|
)
|
820
826
|
response_data = convert_model_metadata_response(
|
@@ -828,7 +834,7 @@ class OCIDataScienceModel(
|
|
828
834
|
def update_custom_metadata_artifact(
|
829
835
|
self,
|
830
836
|
metadata_key_name: str,
|
831
|
-
|
837
|
+
artifact_path_or_content: Union[str, bytes],
|
832
838
|
path_type: MetadataArtifactPathType,
|
833
839
|
) -> ModelMetadataArtifactDetails:
|
834
840
|
"""Update model custom metadata artifact for specified model.
|
@@ -838,8 +844,10 @@ class OCIDataScienceModel(
|
|
838
844
|
metadata_key_name: str
|
839
845
|
The name of the model metadatum in the metadata.
|
840
846
|
|
841
|
-
|
842
|
-
The
|
847
|
+
artifact_path_or_content: Union[str,bytes]
|
848
|
+
The path of the file (local or oss) containing metadata artifact or content.
|
849
|
+
The type is string when it represents local path or oss path.
|
850
|
+
The type is bytes when it represents content itself
|
843
851
|
|
844
852
|
path_type: MetadataArtifactPathType
|
845
853
|
can be one of local , oss or actual content itself.
|
@@ -862,12 +870,12 @@ class OCIDataScienceModel(
|
|
862
870
|
|
863
871
|
"""
|
864
872
|
contents = self.get_metadata_content(
|
865
|
-
artifact_path_or_content=
|
873
|
+
artifact_path_or_content=artifact_path_or_content, path_type=path_type
|
866
874
|
)
|
867
875
|
response = self.client.update_model_custom_metadatum_artifact(
|
868
876
|
self.id,
|
869
877
|
metadata_key_name,
|
870
|
-
|
878
|
+
contents,
|
871
879
|
content_disposition="form" '-data; name="file"; filename="readme.*"',
|
872
880
|
)
|
873
881
|
response_data = convert_model_metadata_response(
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# Copyright (c) 2023, 2024 Oracle and/or its affiliates.
|
4
4
|
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
|
5
5
|
|
6
|
-
from ..const import AUTO_SELECT, SupportedModels
|
6
|
+
from ..const import AUTO_SELECT, SpeedAccuracyMode, SupportedModels
|
7
7
|
from ..model_evaluator import ModelEvaluator
|
8
8
|
from ..operator_config import ForecastOperatorConfig
|
9
9
|
from .arima import ArimaOperatorModel
|
@@ -66,6 +66,13 @@ class ForecastOperatorModelFactory:
|
|
66
66
|
if model_type == AUTO_SELECT:
|
67
67
|
model_type = cls.auto_select_model(datasets, operator_config)
|
68
68
|
operator_config.spec.model_kwargs = {}
|
69
|
+
# set the explanations accuracy mode to AUTOMLX if the selected model is automlx
|
70
|
+
if (
|
71
|
+
model_type == SupportedModels.AutoMLX
|
72
|
+
and operator_config.spec.explanations_accuracy_mode
|
73
|
+
== SpeedAccuracyMode.FAST_APPROXIMATE
|
74
|
+
):
|
75
|
+
operator_config.spec.explanations_accuracy_mode = SpeedAccuracyMode.AUTOMLX
|
69
76
|
if model_type not in cls._MAP:
|
70
77
|
raise UnSupportedModelError(model_type)
|
71
78
|
return cls._MAP[model_type](config=operator_config, datasets=datasets)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: oracle_ads
|
3
|
-
Version: 2.13.
|
3
|
+
Version: 2.13.4
|
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
|
@@ -13,6 +13,7 @@ Classifier: Operating System :: OS Independent
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.9
|
14
14
|
Classifier: Programming Language :: Python :: 3.10
|
15
15
|
Classifier: Programming Language :: Python :: 3.11
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
16
17
|
License-File: LICENSE.txt
|
17
18
|
Requires-Dist: PyYAML>=6
|
18
19
|
Requires-Dist: asteval>=0.9.25
|
@@ -97,9 +98,11 @@ Requires-Dist: evaluate>=0.4.0 ; extra == "llm"
|
|
97
98
|
Requires-Dist: ipython>=7.23.1, <8.0 ; extra == "notebook"
|
98
99
|
Requires-Dist: ipywidgets~=7.6.3 ; extra == "notebook"
|
99
100
|
Requires-Dist: lightgbm ; extra == "onnx"
|
100
|
-
Requires-Dist: onnx>=1.12.0,<=1.15.0 ; extra == "onnx"
|
101
|
+
Requires-Dist: onnx>=1.12.0,<=1.15.0 ; extra == "onnx" and ( python_version < '3.12')
|
102
|
+
Requires-Dist: onnx>=1.12.0 ; extra == "onnx" and ( python_version >= '3.12')
|
101
103
|
Requires-Dist: onnxmltools>=1.10.0 ; extra == "onnx"
|
102
|
-
Requires-Dist: onnxruntime~=1.17.0,!=1.16.0 ; extra == "onnx"
|
104
|
+
Requires-Dist: onnxruntime~=1.17.0,!=1.16.0 ; extra == "onnx" and ( python_version < '3.12')
|
105
|
+
Requires-Dist: onnxruntime ; extra == "onnx" and ( python_version >= '3.12')
|
103
106
|
Requires-Dist: oracle_ads[viz] ; extra == "onnx"
|
104
107
|
Requires-Dist: protobuf ; extra == "onnx"
|
105
108
|
Requires-Dist: skl2onnx>=1.10.4 ; extra == "onnx"
|
@@ -134,7 +137,8 @@ Requires-Dist: plotly ; extra == "recommender"
|
|
134
137
|
Requires-Dist: report-creator==1.0.37 ; extra == "recommender"
|
135
138
|
Requires-Dist: pyspark>=3.0.0 ; extra == "spark"
|
136
139
|
Requires-Dist: oracle_ads[viz] ; extra == "tensorflow"
|
137
|
-
Requires-Dist: tensorflow<=2.15.1 ; extra == "tensorflow"
|
140
|
+
Requires-Dist: tensorflow<=2.15.1 ; extra == "tensorflow" and ( python_version < '3.12')
|
141
|
+
Requires-Dist: tensorflow ; extra == "tensorflow" and ( python_version >= '3.12')
|
138
142
|
Requires-Dist: arff ; extra == "testsuite"
|
139
143
|
Requires-Dist: autogen-agentchat<0.4 ; extra == "testsuite"
|
140
144
|
Requires-Dist: category_encoders==2.6.3 ; extra == "testsuite"
|
@@ -2,7 +2,7 @@ ads/__init__.py,sha256=OxHySbHbMqPgZ8sUj33Bxy-smSiNgRjtcSUV77oBL08,3787
|
|
2
2
|
ads/cli.py,sha256=WkOpZv8jWgFYN9BNkt2LJBs9KzJHgFqq3pIymsqc8Q4,4292
|
3
3
|
ads/config.py,sha256=Xa6CGxNUQf3CKTS9HpXnAWR5kOFvAs0M66f8kEl6z54,8051
|
4
4
|
ads/aqua/__init__.py,sha256=I3HL7LadTue3X41EPUZue4rILG8xeMTapJiBA6Lu8Mg,1149
|
5
|
-
ads/aqua/app.py,sha256=
|
5
|
+
ads/aqua/app.py,sha256=_LrDKMR0SSxPEylIMPTsJvXnSnJFDud_MS3tMO25RMo,14360
|
6
6
|
ads/aqua/cli.py,sha256=W-0kswzRDEilqHyw5GSMOrARgvOyPRtkEtpy54ew0Jo,3907
|
7
7
|
ads/aqua/constants.py,sha256=bdBBafATGl5rYHjZ2i9jZPDKFab8nWjzjJKA2DFgIDc,3019
|
8
8
|
ads/aqua/data.py,sha256=HfxLfKiNiPJecMQy0JAztUsT3IdZilHHHOrCJnjZMc4,408
|
@@ -30,7 +30,7 @@ ads/aqua/evaluation/__init__.py,sha256=Fd7WL7MpQ1FtJjlftMY2KHli5cz1wr5MDu3hGmV89
|
|
30
30
|
ads/aqua/evaluation/constants.py,sha256=dmvDs_t93EhGa0N7J0y8R18AFW0cokj2Q5Oy0LHelxU,1436
|
31
31
|
ads/aqua/evaluation/entities.py,sha256=pvZWrO-Hlsh0TIFnly84OijKHULRVM13D5a-4ZGxte8,5733
|
32
32
|
ads/aqua/evaluation/errors.py,sha256=IbqcQFgXfwzlF5EoaT5jPw8JE8OWqtgiXpH0ddFhRzY,4523
|
33
|
-
ads/aqua/evaluation/evaluation.py,sha256=
|
33
|
+
ads/aqua/evaluation/evaluation.py,sha256=Q8822M1asVpBdw5e2LmN1B-vI3k8SdT-44nGQI0d4YI,59510
|
34
34
|
ads/aqua/extension/__init__.py,sha256=mRArjU6UZpZYVr0qHSSkPteA_CKcCZIczOFaK421m9o,1453
|
35
35
|
ads/aqua/extension/aqua_ws_msg_handler.py,sha256=zR7Fb3LEXzPrEICooWvuo_ahoY6KhcABpKUmYQkEpS0,3626
|
36
36
|
ads/aqua/extension/base_handler.py,sha256=gK3YBBrkbG__0eAq49zHRmJKJXp-lvEOYdYlDuxWPpM,5475
|
@@ -52,7 +52,7 @@ ads/aqua/extension/models/ws_models.py,sha256=y_3LlzKGNRcWqfuW5TGHl0PchM5xE83WGm
|
|
52
52
|
ads/aqua/finetuning/__init__.py,sha256=vwYT5PluMR0mDQwVIavn_8Icms7LmvfV_FOrJ8fJx8I,296
|
53
53
|
ads/aqua/finetuning/constants.py,sha256=Fx-8LMyF9ZbV9zo5LUYgCv9VniV7djGnM2iW7js2ILE,844
|
54
54
|
ads/aqua/finetuning/entities.py,sha256=1RRaRFuxoBtApeCIqG-0H8Iom2kz2dv7LOX6y2wWLnA,6116
|
55
|
-
ads/aqua/finetuning/finetuning.py,sha256
|
55
|
+
ads/aqua/finetuning/finetuning.py,sha256=-re_K9wR46_EbENddUEefNrnYd5IlR0GotUa_kkgXU8,26302
|
56
56
|
ads/aqua/model/__init__.py,sha256=j2iylvERdANxgrEDp7b_mLcKMz1CF5Go0qgYCiMwdos,278
|
57
57
|
ads/aqua/model/constants.py,sha256=pI_oHKSLJvt3dOC4hdkj75Y3CJqK9yW3AT1kHyDfPTI,1500
|
58
58
|
ads/aqua/model/entities.py,sha256=kBjsihInnbGw9MhWQEfJ4hcWEzv6BxF8VlDDFWUPYVg,9903
|
@@ -102,7 +102,7 @@ ads/common/oci_logging.py,sha256=U0HRAUkpnycGpo2kWMrT3wjQVFZaWqLL6pZ2B6_epsM,419
|
|
102
102
|
ads/common/oci_mixin.py,sha256=mhja5UomrhXH43uB0jT-u2KaT37op9tM-snxvtGfc40,34548
|
103
103
|
ads/common/oci_resource.py,sha256=zRa4z5yh5GoOW_6ZE57nhMmK2d94WUqyFqvaNvje9Co,4484
|
104
104
|
ads/common/serializer.py,sha256=JyUJWNybuCwFO_oem41F8477QR2Mj-1P-PKJ-3D3_qw,18813
|
105
|
-
ads/common/utils.py,sha256=
|
105
|
+
ads/common/utils.py,sha256=Clw1unEySV4XMEx3VKLOl60lU-g5wH9n4oMdYYxTKdM,53883
|
106
106
|
ads/common/word_lists.py,sha256=luyfSHWZtwAYKuRsSmUYd1VskKYR_8jG_Y26D3j2Vc8,22306
|
107
107
|
ads/common/work_request.py,sha256=z7OGroZNKs9FnOVCi89QnrxOh4PEWEdTsyXWUUydKwM,6591
|
108
108
|
ads/common/artifact/.model-ignore,sha256=C8hKYunLSYF36BqZiTaCZN-XLpl3Iuhphsa8RZXfOy8,879
|
@@ -497,7 +497,7 @@ ads/model/artifact.py,sha256=CmHdeINF0K6p2MaWZOwU5tLPQ9PoIdnfQis2voMAhHE,21459
|
|
497
497
|
ads/model/artifact_downloader.py,sha256=mGVvIl_pfNikvPIsPgLCrh36z-puQ-DCYGjYbqGrSJ0,9769
|
498
498
|
ads/model/artifact_uploader.py,sha256=jdkpmncczceOc28LyMkv4u6f845HJ1vVCoI-hLBT-RM,11305
|
499
499
|
ads/model/base_properties.py,sha256=YeVyjCync4fzqqruMc9UfZKR4PnscU31n0mf4CJv3R8,7885
|
500
|
-
ads/model/datascience_model.py,sha256=
|
500
|
+
ads/model/datascience_model.py,sha256=T0T6czpp6hTFTAkyJv3b-9Iz8nw9F-DiW3-pEB6O-6E,97619
|
501
501
|
ads/model/generic_model.py,sha256=JVL5WYpZW7LSECm8Yeq59IDLymMRgfF2SIkOkqdoU8c,147014
|
502
502
|
ads/model/model_file_description_schema.json,sha256=NZw_U4CvKf9oOdxCKr1eUxq8FHwjR_g0GSDk0Hz3SnE,1402
|
503
503
|
ads/model/model_introspect.py,sha256=z9pJul9dwT9w8flvRguhu0ZKoEkbm2Tvdutw_SHYTeg,9745
|
@@ -560,7 +560,7 @@ ads/model/serde/common.py,sha256=cDtblusT8fZ04mbBASg7EC62oaB9Sp7X_NPPhPiDnJk,112
|
|
560
560
|
ads/model/serde/model_input.py,sha256=MB6Uf4H_UzlAUTRIRqHTW4ZiyQKw0yerGtUE-WFSw-g,18577
|
561
561
|
ads/model/serde/model_serializer.py,sha256=2vi4MoUHZV-V-4r1OWD5YJzwARFqIBv7-oyGeXGhrK4,43197
|
562
562
|
ads/model/service/__init__.py,sha256=xMyuwB5xsIEW9MFmvyjmF1YnRarsIjeFe2Ib-aprCG4,210
|
563
|
-
ads/model/service/oci_datascience_model.py,sha256=
|
563
|
+
ads/model/service/oci_datascience_model.py,sha256=gyaFcFC9-yVjAd8pgV0bJ1X7-giZuHSutpxMjsYwz7o,38765
|
564
564
|
ads/model/service/oci_datascience_model_deployment.py,sha256=ONiogPK_wN7omxdnTMAcJhcvDEZQwI_XqmT84Q1xoj0,18472
|
565
565
|
ads/model/service/oci_datascience_model_version_set.py,sha256=lYw9BauH4BNZk2Jdf8mRjFO3MorQDSMPAxkP-inlwiM,5690
|
566
566
|
ads/model/transformer/__init__.py,sha256=yBa9sP_49XF0GDWWG-u1Q5ry-vXfmO61oUjNp7mdN74,204
|
@@ -722,7 +722,7 @@ ads/opctl/operator/lowcode/forecast/model/arima.py,sha256=PvHoTdDr6RIC4I-YLzed91
|
|
722
722
|
ads/opctl/operator/lowcode/forecast/model/automlx.py,sha256=2M1Ipnq73x-bnKg9ju4Oyi9-0WxmdrCNWgAACob1HRI,21488
|
723
723
|
ads/opctl/operator/lowcode/forecast/model/autots.py,sha256=UThBBGsEiC3WLSn-BPAuNWT_ZFa3bYMu52keB0vvSt8,13137
|
724
724
|
ads/opctl/operator/lowcode/forecast/model/base_model.py,sha256=s9WwPpo61YY7teAcmL2MK7cl1GGYAKZu7IkxoReD1I0,35969
|
725
|
-
ads/opctl/operator/lowcode/forecast/model/factory.py,sha256=
|
725
|
+
ads/opctl/operator/lowcode/forecast/model/factory.py,sha256=5a9A3ql-bU412BiTB20ob6OxQlkdk8z_tGONMwDXT1k,3900
|
726
726
|
ads/opctl/operator/lowcode/forecast/model/forecast_datasets.py,sha256=2NsWE2WtD_O7uAXw42_3tmG3vb5lk3mdnzCZTph4hao,18903
|
727
727
|
ads/opctl/operator/lowcode/forecast/model/ml_forecast.py,sha256=t5x6EBxOd7XwfT3FGdt-n9gscxaHMm3R2A4Evvxbj38,9646
|
728
728
|
ads/opctl/operator/lowcode/forecast/model/neuralprophet.py,sha256=60nfNGxjRDsD09Sg7s1YG8G8Qxfcyw0_2rW2PcNy1-c,20021
|
@@ -849,8 +849,8 @@ ads/type_discovery/unknown_detector.py,sha256=yZuYQReO7PUyoWZE7onhhtYaOg6088wf1y
|
|
849
849
|
ads/type_discovery/zipcode_detector.py,sha256=3AlETg_ZF4FT0u914WXvTT3F3Z6Vf51WiIt34yQMRbw,1421
|
850
850
|
ads/vault/__init__.py,sha256=x9tMdDAOdF5iDHk9u2di_K-ze5Nq068x25EWOBoWwqY,245
|
851
851
|
ads/vault/vault.py,sha256=hFBkpYE-Hfmzu1L0sQwUfYcGxpWmgG18JPndRl0NOXI,8624
|
852
|
-
oracle_ads-2.13.
|
853
|
-
oracle_ads-2.13.
|
854
|
-
oracle_ads-2.13.
|
855
|
-
oracle_ads-2.13.
|
856
|
-
oracle_ads-2.13.
|
852
|
+
oracle_ads-2.13.4.dist-info/entry_points.txt,sha256=9VFnjpQCsMORA4rVkvN8eH6D3uHjtegb9T911t8cqV0,35
|
853
|
+
oracle_ads-2.13.4.dist-info/licenses/LICENSE.txt,sha256=zoGmbfD1IdRKx834U0IzfFFFo5KoFK71TND3K9xqYqo,1845
|
854
|
+
oracle_ads-2.13.4.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
855
|
+
oracle_ads-2.13.4.dist-info/METADATA,sha256=h627fGPS6HRcuxJqujEXMGJQZSA2wAyI-nL0mhfht30,16639
|
856
|
+
oracle_ads-2.13.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|