oracle-ads 2.13.8__py3-none-any.whl → 2.13.9rc0__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.
- {oracle_ads-2.13.8.dist-info → oracle_ads-2.13.9rc0.dist-info}/METADATA +151 -151
- oracle_ads-2.13.9rc0.dist-info/RECORD +9 -0
- {oracle_ads-2.13.8.dist-info → oracle_ads-2.13.9rc0.dist-info}/WHEEL +2 -1
- {oracle_ads-2.13.8.dist-info → oracle_ads-2.13.9rc0.dist-info}/entry_points.txt +1 -2
- oracle_ads-2.13.9rc0.dist-info/top_level.txt +1 -0
- ads/aqua/__init__.py +0 -40
- ads/aqua/app.py +0 -506
- ads/aqua/cli.py +0 -96
- ads/aqua/client/__init__.py +0 -3
- ads/aqua/client/client.py +0 -836
- ads/aqua/client/openai_client.py +0 -305
- ads/aqua/common/__init__.py +0 -5
- ads/aqua/common/decorator.py +0 -125
- ads/aqua/common/entities.py +0 -266
- ads/aqua/common/enums.py +0 -122
- ads/aqua/common/errors.py +0 -109
- ads/aqua/common/utils.py +0 -1285
- ads/aqua/config/__init__.py +0 -4
- ads/aqua/config/container_config.py +0 -248
- ads/aqua/config/evaluation/__init__.py +0 -4
- ads/aqua/config/evaluation/evaluation_service_config.py +0 -147
- ads/aqua/config/utils/__init__.py +0 -4
- ads/aqua/config/utils/serializer.py +0 -339
- ads/aqua/constants.py +0 -114
- ads/aqua/data.py +0 -14
- ads/aqua/dummy_data/icon.txt +0 -1
- ads/aqua/dummy_data/oci_model_deployments.json +0 -56
- ads/aqua/dummy_data/oci_models.json +0 -1
- ads/aqua/dummy_data/readme.md +0 -26
- ads/aqua/evaluation/__init__.py +0 -8
- ads/aqua/evaluation/constants.py +0 -53
- ads/aqua/evaluation/entities.py +0 -186
- ads/aqua/evaluation/errors.py +0 -70
- ads/aqua/evaluation/evaluation.py +0 -1814
- ads/aqua/extension/__init__.py +0 -42
- ads/aqua/extension/aqua_ws_msg_handler.py +0 -76
- ads/aqua/extension/base_handler.py +0 -90
- ads/aqua/extension/common_handler.py +0 -121
- ads/aqua/extension/common_ws_msg_handler.py +0 -36
- ads/aqua/extension/deployment_handler.py +0 -298
- ads/aqua/extension/deployment_ws_msg_handler.py +0 -54
- ads/aqua/extension/errors.py +0 -30
- ads/aqua/extension/evaluation_handler.py +0 -129
- ads/aqua/extension/evaluation_ws_msg_handler.py +0 -61
- ads/aqua/extension/finetune_handler.py +0 -96
- ads/aqua/extension/model_handler.py +0 -390
- ads/aqua/extension/models/__init__.py +0 -0
- ads/aqua/extension/models/ws_models.py +0 -145
- ads/aqua/extension/models_ws_msg_handler.py +0 -50
- ads/aqua/extension/ui_handler.py +0 -282
- ads/aqua/extension/ui_websocket_handler.py +0 -130
- ads/aqua/extension/utils.py +0 -133
- ads/aqua/finetuning/__init__.py +0 -7
- ads/aqua/finetuning/constants.py +0 -23
- ads/aqua/finetuning/entities.py +0 -181
- ads/aqua/finetuning/finetuning.py +0 -731
- ads/aqua/model/__init__.py +0 -8
- ads/aqua/model/constants.py +0 -60
- ads/aqua/model/entities.py +0 -306
- ads/aqua/model/enums.py +0 -30
- ads/aqua/model/model.py +0 -2080
- ads/aqua/modeldeployment/__init__.py +0 -8
- ads/aqua/modeldeployment/constants.py +0 -10
- ads/aqua/modeldeployment/deployment.py +0 -1324
- ads/aqua/modeldeployment/entities.py +0 -653
- ads/aqua/modeldeployment/inference.py +0 -74
- ads/aqua/modeldeployment/utils.py +0 -543
- ads/aqua/resources/gpu_shapes_index.json +0 -94
- ads/aqua/server/__init__.py +0 -4
- ads/aqua/server/__main__.py +0 -24
- ads/aqua/server/app.py +0 -47
- ads/aqua/server/aqua_spec.yml +0 -1291
- ads/aqua/training/__init__.py +0 -4
- ads/aqua/training/exceptions.py +0 -476
- ads/aqua/ui.py +0 -499
- ads/automl/__init__.py +0 -9
- ads/automl/driver.py +0 -330
- ads/automl/provider.py +0 -975
- ads/bds/__init__.py +0 -5
- ads/bds/auth.py +0 -127
- ads/bds/big_data_service.py +0 -255
- ads/catalog/__init__.py +0 -19
- ads/catalog/model.py +0 -1576
- ads/catalog/notebook.py +0 -461
- ads/catalog/project.py +0 -468
- ads/catalog/summary.py +0 -178
- ads/common/__init__.py +0 -11
- ads/common/analyzer.py +0 -65
- ads/common/artifact/.model-ignore +0 -63
- ads/common/artifact/__init__.py +0 -10
- ads/common/auth.py +0 -1122
- ads/common/card_identifier.py +0 -83
- ads/common/config.py +0 -647
- ads/common/data.py +0 -165
- ads/common/decorator/__init__.py +0 -9
- ads/common/decorator/argument_to_case.py +0 -88
- ads/common/decorator/deprecate.py +0 -69
- ads/common/decorator/require_nonempty_arg.py +0 -65
- ads/common/decorator/runtime_dependency.py +0 -178
- ads/common/decorator/threaded.py +0 -97
- ads/common/decorator/utils.py +0 -35
- ads/common/dsc_file_system.py +0 -303
- ads/common/error.py +0 -14
- ads/common/extended_enum.py +0 -81
- ads/common/function/__init__.py +0 -5
- ads/common/function/fn_util.py +0 -142
- ads/common/function/func_conf.yaml +0 -25
- ads/common/ipython.py +0 -76
- ads/common/model.py +0 -679
- ads/common/model_artifact.py +0 -1759
- ads/common/model_artifact_schema.json +0 -107
- ads/common/model_export_util.py +0 -664
- ads/common/model_metadata.py +0 -24
- ads/common/object_storage_details.py +0 -296
- ads/common/oci_client.py +0 -175
- ads/common/oci_datascience.py +0 -46
- ads/common/oci_logging.py +0 -1144
- ads/common/oci_mixin.py +0 -957
- ads/common/oci_resource.py +0 -136
- ads/common/serializer.py +0 -559
- ads/common/utils.py +0 -1852
- ads/common/word_lists.py +0 -1491
- ads/common/work_request.py +0 -189
- ads/data_labeling/__init__.py +0 -13
- ads/data_labeling/boundingbox.py +0 -253
- ads/data_labeling/constants.py +0 -47
- ads/data_labeling/data_labeling_service.py +0 -244
- ads/data_labeling/interface/__init__.py +0 -5
- ads/data_labeling/interface/loader.py +0 -16
- ads/data_labeling/interface/parser.py +0 -16
- ads/data_labeling/interface/reader.py +0 -23
- ads/data_labeling/loader/__init__.py +0 -5
- ads/data_labeling/loader/file_loader.py +0 -241
- ads/data_labeling/metadata.py +0 -110
- ads/data_labeling/mixin/__init__.py +0 -5
- ads/data_labeling/mixin/data_labeling.py +0 -232
- ads/data_labeling/ner.py +0 -129
- ads/data_labeling/parser/__init__.py +0 -5
- ads/data_labeling/parser/dls_record_parser.py +0 -388
- ads/data_labeling/parser/export_metadata_parser.py +0 -94
- ads/data_labeling/parser/export_record_parser.py +0 -473
- ads/data_labeling/reader/__init__.py +0 -5
- ads/data_labeling/reader/dataset_reader.py +0 -574
- ads/data_labeling/reader/dls_record_reader.py +0 -121
- ads/data_labeling/reader/export_record_reader.py +0 -62
- ads/data_labeling/reader/jsonl_reader.py +0 -75
- ads/data_labeling/reader/metadata_reader.py +0 -203
- ads/data_labeling/reader/record_reader.py +0 -263
- ads/data_labeling/record.py +0 -52
- ads/data_labeling/visualizer/__init__.py +0 -5
- ads/data_labeling/visualizer/image_visualizer.py +0 -525
- ads/data_labeling/visualizer/text_visualizer.py +0 -357
- ads/database/__init__.py +0 -5
- ads/database/connection.py +0 -338
- ads/dataset/__init__.py +0 -10
- ads/dataset/capabilities.md +0 -51
- ads/dataset/classification_dataset.py +0 -339
- ads/dataset/correlation.py +0 -226
- ads/dataset/correlation_plot.py +0 -563
- ads/dataset/dask_series.py +0 -173
- ads/dataset/dataframe_transformer.py +0 -110
- ads/dataset/dataset.py +0 -1979
- ads/dataset/dataset_browser.py +0 -360
- ads/dataset/dataset_with_target.py +0 -995
- ads/dataset/exception.py +0 -25
- ads/dataset/factory.py +0 -987
- ads/dataset/feature_engineering_transformer.py +0 -35
- ads/dataset/feature_selection.py +0 -107
- ads/dataset/forecasting_dataset.py +0 -26
- ads/dataset/helper.py +0 -1450
- ads/dataset/label_encoder.py +0 -99
- ads/dataset/mixin/__init__.py +0 -5
- ads/dataset/mixin/dataset_accessor.py +0 -134
- ads/dataset/pipeline.py +0 -58
- ads/dataset/plot.py +0 -710
- ads/dataset/progress.py +0 -86
- ads/dataset/recommendation.py +0 -297
- ads/dataset/recommendation_transformer.py +0 -502
- ads/dataset/regression_dataset.py +0 -14
- ads/dataset/sampled_dataset.py +0 -1050
- ads/dataset/target.py +0 -98
- ads/dataset/timeseries.py +0 -18
- ads/dbmixin/__init__.py +0 -5
- ads/dbmixin/db_pandas_accessor.py +0 -153
- ads/environment/__init__.py +0 -9
- ads/environment/ml_runtime.py +0 -66
- ads/evaluations/README.md +0 -14
- ads/evaluations/__init__.py +0 -109
- ads/evaluations/evaluation_plot.py +0 -983
- ads/evaluations/evaluator.py +0 -1334
- ads/evaluations/statistical_metrics.py +0 -543
- ads/experiments/__init__.py +0 -9
- ads/experiments/capabilities.md +0 -0
- ads/explanations/__init__.py +0 -21
- ads/explanations/base_explainer.py +0 -142
- ads/explanations/capabilities.md +0 -83
- ads/explanations/explainer.py +0 -190
- ads/explanations/mlx_global_explainer.py +0 -1050
- ads/explanations/mlx_interface.py +0 -386
- ads/explanations/mlx_local_explainer.py +0 -287
- ads/explanations/mlx_whatif_explainer.py +0 -201
- ads/feature_engineering/__init__.py +0 -20
- ads/feature_engineering/accessor/__init__.py +0 -5
- ads/feature_engineering/accessor/dataframe_accessor.py +0 -535
- ads/feature_engineering/accessor/mixin/__init__.py +0 -5
- ads/feature_engineering/accessor/mixin/correlation.py +0 -166
- ads/feature_engineering/accessor/mixin/eda_mixin.py +0 -266
- ads/feature_engineering/accessor/mixin/eda_mixin_series.py +0 -85
- ads/feature_engineering/accessor/mixin/feature_types_mixin.py +0 -211
- ads/feature_engineering/accessor/mixin/utils.py +0 -65
- ads/feature_engineering/accessor/series_accessor.py +0 -431
- ads/feature_engineering/adsimage/__init__.py +0 -5
- ads/feature_engineering/adsimage/image.py +0 -192
- ads/feature_engineering/adsimage/image_reader.py +0 -170
- ads/feature_engineering/adsimage/interface/__init__.py +0 -5
- ads/feature_engineering/adsimage/interface/reader.py +0 -19
- ads/feature_engineering/adsstring/__init__.py +0 -7
- ads/feature_engineering/adsstring/oci_language/__init__.py +0 -8
- ads/feature_engineering/adsstring/string/__init__.py +0 -8
- ads/feature_engineering/data_schema.json +0 -57
- ads/feature_engineering/dataset/__init__.py +0 -5
- ads/feature_engineering/dataset/zip_code_data.py +0 -42062
- ads/feature_engineering/exceptions.py +0 -40
- ads/feature_engineering/feature_type/__init__.py +0 -133
- ads/feature_engineering/feature_type/address.py +0 -184
- ads/feature_engineering/feature_type/adsstring/__init__.py +0 -5
- ads/feature_engineering/feature_type/adsstring/common_regex_mixin.py +0 -164
- ads/feature_engineering/feature_type/adsstring/oci_language.py +0 -93
- ads/feature_engineering/feature_type/adsstring/parsers/__init__.py +0 -5
- ads/feature_engineering/feature_type/adsstring/parsers/base.py +0 -47
- ads/feature_engineering/feature_type/adsstring/parsers/nltk_parser.py +0 -96
- ads/feature_engineering/feature_type/adsstring/parsers/spacy_parser.py +0 -221
- ads/feature_engineering/feature_type/adsstring/string.py +0 -258
- ads/feature_engineering/feature_type/base.py +0 -58
- ads/feature_engineering/feature_type/boolean.py +0 -183
- ads/feature_engineering/feature_type/category.py +0 -146
- ads/feature_engineering/feature_type/constant.py +0 -137
- ads/feature_engineering/feature_type/continuous.py +0 -151
- ads/feature_engineering/feature_type/creditcard.py +0 -314
- ads/feature_engineering/feature_type/datetime.py +0 -190
- ads/feature_engineering/feature_type/discrete.py +0 -134
- ads/feature_engineering/feature_type/document.py +0 -43
- ads/feature_engineering/feature_type/gis.py +0 -251
- ads/feature_engineering/feature_type/handler/__init__.py +0 -5
- ads/feature_engineering/feature_type/handler/feature_validator.py +0 -524
- ads/feature_engineering/feature_type/handler/feature_warning.py +0 -319
- ads/feature_engineering/feature_type/handler/warnings.py +0 -128
- ads/feature_engineering/feature_type/integer.py +0 -142
- ads/feature_engineering/feature_type/ip_address.py +0 -144
- ads/feature_engineering/feature_type/ip_address_v4.py +0 -138
- ads/feature_engineering/feature_type/ip_address_v6.py +0 -138
- ads/feature_engineering/feature_type/lat_long.py +0 -256
- ads/feature_engineering/feature_type/object.py +0 -43
- ads/feature_engineering/feature_type/ordinal.py +0 -132
- ads/feature_engineering/feature_type/phone_number.py +0 -135
- ads/feature_engineering/feature_type/string.py +0 -171
- ads/feature_engineering/feature_type/text.py +0 -93
- ads/feature_engineering/feature_type/unknown.py +0 -43
- ads/feature_engineering/feature_type/zip_code.py +0 -164
- ads/feature_engineering/feature_type_manager.py +0 -406
- ads/feature_engineering/schema.py +0 -795
- ads/feature_engineering/utils.py +0 -245
- ads/feature_store/.readthedocs.yaml +0 -19
- ads/feature_store/README.md +0 -65
- ads/feature_store/__init__.py +0 -9
- ads/feature_store/common/__init__.py +0 -0
- ads/feature_store/common/enums.py +0 -339
- ads/feature_store/common/exceptions.py +0 -18
- ads/feature_store/common/spark_session_singleton.py +0 -125
- ads/feature_store/common/utils/__init__.py +0 -0
- ads/feature_store/common/utils/base64_encoder_decoder.py +0 -72
- ads/feature_store/common/utils/feature_schema_mapper.py +0 -283
- ads/feature_store/common/utils/transformation_utils.py +0 -82
- ads/feature_store/common/utils/utility.py +0 -403
- ads/feature_store/data_validation/__init__.py +0 -0
- ads/feature_store/data_validation/great_expectation.py +0 -129
- ads/feature_store/dataset.py +0 -1230
- ads/feature_store/dataset_job.py +0 -530
- ads/feature_store/docs/Dockerfile +0 -7
- ads/feature_store/docs/Makefile +0 -44
- ads/feature_store/docs/conf.py +0 -28
- ads/feature_store/docs/requirements.txt +0 -14
- ads/feature_store/docs/source/ads.feature_store.query.rst +0 -20
- ads/feature_store/docs/source/cicd.rst +0 -137
- ads/feature_store/docs/source/conf.py +0 -86
- ads/feature_store/docs/source/data_versioning.rst +0 -33
- ads/feature_store/docs/source/dataset.rst +0 -388
- ads/feature_store/docs/source/dataset_job.rst +0 -27
- ads/feature_store/docs/source/demo.rst +0 -70
- ads/feature_store/docs/source/entity.rst +0 -78
- ads/feature_store/docs/source/feature_group.rst +0 -624
- ads/feature_store/docs/source/feature_group_job.rst +0 -29
- ads/feature_store/docs/source/feature_store.rst +0 -122
- ads/feature_store/docs/source/feature_store_class.rst +0 -123
- ads/feature_store/docs/source/feature_validation.rst +0 -66
- ads/feature_store/docs/source/figures/cicd.png +0 -0
- ads/feature_store/docs/source/figures/data_validation.png +0 -0
- ads/feature_store/docs/source/figures/data_versioning.png +0 -0
- ads/feature_store/docs/source/figures/dataset.gif +0 -0
- ads/feature_store/docs/source/figures/dataset.png +0 -0
- ads/feature_store/docs/source/figures/dataset_lineage.png +0 -0
- ads/feature_store/docs/source/figures/dataset_statistics.png +0 -0
- ads/feature_store/docs/source/figures/dataset_statistics_viz.png +0 -0
- ads/feature_store/docs/source/figures/dataset_validation_results.png +0 -0
- ads/feature_store/docs/source/figures/dataset_validation_summary.png +0 -0
- ads/feature_store/docs/source/figures/drift_monitoring.png +0 -0
- ads/feature_store/docs/source/figures/entity.png +0 -0
- ads/feature_store/docs/source/figures/feature_group.png +0 -0
- ads/feature_store/docs/source/figures/feature_group_lineage.png +0 -0
- ads/feature_store/docs/source/figures/feature_group_statistics_viz.png +0 -0
- ads/feature_store/docs/source/figures/feature_store_deployment.png +0 -0
- ads/feature_store/docs/source/figures/feature_store_overview.png +0 -0
- ads/feature_store/docs/source/figures/featuregroup.gif +0 -0
- ads/feature_store/docs/source/figures/lineage_d1.png +0 -0
- ads/feature_store/docs/source/figures/lineage_d2.png +0 -0
- ads/feature_store/docs/source/figures/lineage_fg.png +0 -0
- ads/feature_store/docs/source/figures/logo-dark-mode.png +0 -0
- ads/feature_store/docs/source/figures/logo-light-mode.png +0 -0
- ads/feature_store/docs/source/figures/overview.png +0 -0
- ads/feature_store/docs/source/figures/resource_manager.png +0 -0
- ads/feature_store/docs/source/figures/resource_manager_feature_store_stack.png +0 -0
- ads/feature_store/docs/source/figures/resource_manager_home.png +0 -0
- ads/feature_store/docs/source/figures/stats_1.png +0 -0
- ads/feature_store/docs/source/figures/stats_2.png +0 -0
- ads/feature_store/docs/source/figures/stats_d.png +0 -0
- ads/feature_store/docs/source/figures/stats_fg.png +0 -0
- ads/feature_store/docs/source/figures/transformation.png +0 -0
- ads/feature_store/docs/source/figures/transformations.gif +0 -0
- ads/feature_store/docs/source/figures/validation.png +0 -0
- ads/feature_store/docs/source/figures/validation_fg.png +0 -0
- ads/feature_store/docs/source/figures/validation_results.png +0 -0
- ads/feature_store/docs/source/figures/validation_summary.png +0 -0
- ads/feature_store/docs/source/index.rst +0 -81
- ads/feature_store/docs/source/module.rst +0 -8
- ads/feature_store/docs/source/notebook.rst +0 -94
- ads/feature_store/docs/source/overview.rst +0 -47
- ads/feature_store/docs/source/quickstart.rst +0 -176
- ads/feature_store/docs/source/release_notes.rst +0 -194
- ads/feature_store/docs/source/setup_feature_store.rst +0 -81
- ads/feature_store/docs/source/statistics.rst +0 -58
- ads/feature_store/docs/source/transformation.rst +0 -199
- ads/feature_store/docs/source/ui.rst +0 -65
- ads/feature_store/docs/source/user_guides.setup.feature_store_operator.rst +0 -66
- ads/feature_store/docs/source/user_guides.setup.helm_chart.rst +0 -192
- ads/feature_store/docs/source/user_guides.setup.terraform.rst +0 -338
- ads/feature_store/entity.py +0 -718
- ads/feature_store/execution_strategy/__init__.py +0 -0
- ads/feature_store/execution_strategy/delta_lake/__init__.py +0 -0
- ads/feature_store/execution_strategy/delta_lake/delta_lake_service.py +0 -375
- ads/feature_store/execution_strategy/engine/__init__.py +0 -0
- ads/feature_store/execution_strategy/engine/spark_engine.py +0 -316
- ads/feature_store/execution_strategy/execution_strategy.py +0 -113
- ads/feature_store/execution_strategy/execution_strategy_provider.py +0 -47
- ads/feature_store/execution_strategy/spark/__init__.py +0 -0
- ads/feature_store/execution_strategy/spark/spark_execution.py +0 -618
- ads/feature_store/feature.py +0 -192
- ads/feature_store/feature_group.py +0 -1494
- ads/feature_store/feature_group_expectation.py +0 -346
- ads/feature_store/feature_group_job.py +0 -602
- ads/feature_store/feature_lineage/__init__.py +0 -0
- ads/feature_store/feature_lineage/graphviz_service.py +0 -180
- ads/feature_store/feature_option_details.py +0 -50
- ads/feature_store/feature_statistics/__init__.py +0 -0
- ads/feature_store/feature_statistics/statistics_service.py +0 -99
- ads/feature_store/feature_store.py +0 -699
- ads/feature_store/feature_store_registrar.py +0 -518
- ads/feature_store/input_feature_detail.py +0 -149
- ads/feature_store/mixin/__init__.py +0 -4
- ads/feature_store/mixin/oci_feature_store.py +0 -145
- ads/feature_store/model_details.py +0 -73
- ads/feature_store/query/__init__.py +0 -0
- ads/feature_store/query/filter.py +0 -266
- ads/feature_store/query/generator/__init__.py +0 -0
- ads/feature_store/query/generator/query_generator.py +0 -298
- ads/feature_store/query/join.py +0 -161
- ads/feature_store/query/query.py +0 -403
- ads/feature_store/query/validator/__init__.py +0 -0
- ads/feature_store/query/validator/query_validator.py +0 -57
- ads/feature_store/response/__init__.py +0 -0
- ads/feature_store/response/response_builder.py +0 -68
- ads/feature_store/service/__init__.py +0 -0
- ads/feature_store/service/oci_dataset.py +0 -139
- ads/feature_store/service/oci_dataset_job.py +0 -199
- ads/feature_store/service/oci_entity.py +0 -125
- ads/feature_store/service/oci_feature_group.py +0 -164
- ads/feature_store/service/oci_feature_group_job.py +0 -214
- ads/feature_store/service/oci_feature_store.py +0 -182
- ads/feature_store/service/oci_lineage.py +0 -87
- ads/feature_store/service/oci_transformation.py +0 -104
- ads/feature_store/statistics/__init__.py +0 -0
- ads/feature_store/statistics/abs_feature_value.py +0 -49
- ads/feature_store/statistics/charts/__init__.py +0 -0
- ads/feature_store/statistics/charts/abstract_feature_plot.py +0 -37
- ads/feature_store/statistics/charts/box_plot.py +0 -148
- ads/feature_store/statistics/charts/frequency_distribution.py +0 -65
- ads/feature_store/statistics/charts/probability_distribution.py +0 -68
- ads/feature_store/statistics/charts/top_k_frequent_elements.py +0 -98
- ads/feature_store/statistics/feature_stat.py +0 -126
- ads/feature_store/statistics/generic_feature_value.py +0 -33
- ads/feature_store/statistics/statistics.py +0 -41
- ads/feature_store/statistics_config.py +0 -101
- ads/feature_store/templates/feature_store_template.yaml +0 -45
- ads/feature_store/transformation.py +0 -499
- ads/feature_store/validation_output.py +0 -57
- ads/hpo/__init__.py +0 -9
- ads/hpo/_imports.py +0 -91
- ads/hpo/ads_search_space.py +0 -439
- ads/hpo/distributions.py +0 -325
- ads/hpo/objective.py +0 -280
- ads/hpo/search_cv.py +0 -1657
- ads/hpo/stopping_criterion.py +0 -75
- ads/hpo/tuner_artifact.py +0 -413
- ads/hpo/utils.py +0 -91
- ads/hpo/validation.py +0 -140
- ads/hpo/visualization/__init__.py +0 -5
- ads/hpo/visualization/_contour.py +0 -23
- ads/hpo/visualization/_edf.py +0 -20
- ads/hpo/visualization/_intermediate_values.py +0 -21
- ads/hpo/visualization/_optimization_history.py +0 -25
- ads/hpo/visualization/_parallel_coordinate.py +0 -169
- ads/hpo/visualization/_param_importances.py +0 -26
- ads/jobs/__init__.py +0 -53
- ads/jobs/ads_job.py +0 -663
- ads/jobs/builders/__init__.py +0 -5
- ads/jobs/builders/base.py +0 -156
- ads/jobs/builders/infrastructure/__init__.py +0 -6
- ads/jobs/builders/infrastructure/base.py +0 -165
- ads/jobs/builders/infrastructure/dataflow.py +0 -1252
- ads/jobs/builders/infrastructure/dsc_job.py +0 -1894
- ads/jobs/builders/infrastructure/dsc_job_runtime.py +0 -1233
- ads/jobs/builders/infrastructure/utils.py +0 -65
- ads/jobs/builders/runtimes/__init__.py +0 -5
- ads/jobs/builders/runtimes/artifact.py +0 -338
- ads/jobs/builders/runtimes/base.py +0 -325
- ads/jobs/builders/runtimes/container_runtime.py +0 -242
- ads/jobs/builders/runtimes/python_runtime.py +0 -1016
- ads/jobs/builders/runtimes/pytorch_runtime.py +0 -204
- ads/jobs/cli.py +0 -104
- ads/jobs/env_var_parser.py +0 -131
- ads/jobs/extension.py +0 -160
- ads/jobs/schema/__init__.py +0 -5
- ads/jobs/schema/infrastructure_schema.json +0 -116
- ads/jobs/schema/job_schema.json +0 -42
- ads/jobs/schema/runtime_schema.json +0 -183
- ads/jobs/schema/validator.py +0 -141
- ads/jobs/serializer.py +0 -296
- ads/jobs/templates/__init__.py +0 -5
- ads/jobs/templates/container.py +0 -6
- ads/jobs/templates/driver_notebook.py +0 -177
- ads/jobs/templates/driver_oci.py +0 -500
- ads/jobs/templates/driver_python.py +0 -48
- ads/jobs/templates/driver_pytorch.py +0 -852
- ads/jobs/templates/driver_utils.py +0 -615
- ads/jobs/templates/hostname_from_env.c +0 -55
- ads/jobs/templates/oci_metrics.py +0 -181
- ads/jobs/utils.py +0 -104
- ads/llm/__init__.py +0 -28
- ads/llm/autogen/__init__.py +0 -2
- ads/llm/autogen/constants.py +0 -15
- ads/llm/autogen/reports/__init__.py +0 -2
- ads/llm/autogen/reports/base.py +0 -67
- ads/llm/autogen/reports/data.py +0 -103
- ads/llm/autogen/reports/session.py +0 -526
- ads/llm/autogen/reports/templates/chat_box.html +0 -13
- ads/llm/autogen/reports/templates/chat_box_lt.html +0 -5
- ads/llm/autogen/reports/templates/chat_box_rt.html +0 -6
- ads/llm/autogen/reports/utils.py +0 -56
- ads/llm/autogen/v02/__init__.py +0 -4
- ads/llm/autogen/v02/client.py +0 -295
- ads/llm/autogen/v02/log_handlers/__init__.py +0 -2
- ads/llm/autogen/v02/log_handlers/oci_file_handler.py +0 -83
- ads/llm/autogen/v02/loggers/__init__.py +0 -6
- ads/llm/autogen/v02/loggers/metric_logger.py +0 -320
- ads/llm/autogen/v02/loggers/session_logger.py +0 -580
- ads/llm/autogen/v02/loggers/utils.py +0 -86
- ads/llm/autogen/v02/runtime_logging.py +0 -163
- ads/llm/chain.py +0 -268
- ads/llm/chat_template.py +0 -31
- ads/llm/deploy.py +0 -63
- ads/llm/guardrails/__init__.py +0 -5
- ads/llm/guardrails/base.py +0 -442
- ads/llm/guardrails/huggingface.py +0 -44
- ads/llm/langchain/__init__.py +0 -5
- ads/llm/langchain/plugins/__init__.py +0 -5
- ads/llm/langchain/plugins/chat_models/__init__.py +0 -5
- ads/llm/langchain/plugins/chat_models/oci_data_science.py +0 -1027
- ads/llm/langchain/plugins/embeddings/__init__.py +0 -4
- ads/llm/langchain/plugins/embeddings/oci_data_science_model_deployment_endpoint.py +0 -184
- ads/llm/langchain/plugins/llms/__init__.py +0 -5
- ads/llm/langchain/plugins/llms/oci_data_science_model_deployment_endpoint.py +0 -979
- ads/llm/requirements.txt +0 -3
- ads/llm/serialize.py +0 -219
- ads/llm/serializers/__init__.py +0 -0
- ads/llm/serializers/retrieval_qa.py +0 -153
- ads/llm/serializers/runnable_parallel.py +0 -27
- ads/llm/templates/score_chain.jinja2 +0 -155
- ads/llm/templates/tool_chat_template_hermes.jinja +0 -130
- ads/llm/templates/tool_chat_template_mistral_parallel.jinja +0 -94
- ads/model/__init__.py +0 -52
- ads/model/artifact.py +0 -573
- ads/model/artifact_downloader.py +0 -254
- ads/model/artifact_uploader.py +0 -267
- ads/model/base_properties.py +0 -238
- ads/model/common/.model-ignore +0 -66
- ads/model/common/__init__.py +0 -5
- ads/model/common/utils.py +0 -142
- ads/model/datascience_model.py +0 -2635
- ads/model/deployment/__init__.py +0 -20
- ads/model/deployment/common/__init__.py +0 -5
- ads/model/deployment/common/utils.py +0 -308
- ads/model/deployment/model_deployer.py +0 -466
- ads/model/deployment/model_deployment.py +0 -1846
- ads/model/deployment/model_deployment_infrastructure.py +0 -671
- ads/model/deployment/model_deployment_properties.py +0 -493
- ads/model/deployment/model_deployment_runtime.py +0 -838
- ads/model/extractor/__init__.py +0 -5
- ads/model/extractor/automl_extractor.py +0 -74
- ads/model/extractor/embedding_onnx_extractor.py +0 -80
- ads/model/extractor/huggingface_extractor.py +0 -88
- ads/model/extractor/keras_extractor.py +0 -84
- ads/model/extractor/lightgbm_extractor.py +0 -93
- ads/model/extractor/model_info_extractor.py +0 -114
- ads/model/extractor/model_info_extractor_factory.py +0 -105
- ads/model/extractor/pytorch_extractor.py +0 -87
- ads/model/extractor/sklearn_extractor.py +0 -112
- ads/model/extractor/spark_extractor.py +0 -89
- ads/model/extractor/tensorflow_extractor.py +0 -85
- ads/model/extractor/xgboost_extractor.py +0 -94
- ads/model/framework/__init__.py +0 -5
- ads/model/framework/automl_model.py +0 -178
- ads/model/framework/embedding_onnx_model.py +0 -438
- ads/model/framework/huggingface_model.py +0 -399
- ads/model/framework/lightgbm_model.py +0 -266
- ads/model/framework/pytorch_model.py +0 -266
- ads/model/framework/sklearn_model.py +0 -250
- ads/model/framework/spark_model.py +0 -326
- ads/model/framework/tensorflow_model.py +0 -254
- ads/model/framework/xgboost_model.py +0 -258
- ads/model/generic_model.py +0 -3518
- ads/model/model_artifact_boilerplate/README.md +0 -381
- ads/model/model_artifact_boilerplate/__init__.py +0 -5
- ads/model/model_artifact_boilerplate/artifact_introspection_test/__init__.py +0 -5
- ads/model/model_artifact_boilerplate/artifact_introspection_test/model_artifact_validate.py +0 -427
- ads/model/model_artifact_boilerplate/artifact_introspection_test/requirements.txt +0 -2
- ads/model/model_artifact_boilerplate/runtime.yaml +0 -7
- ads/model/model_artifact_boilerplate/score.py +0 -61
- ads/model/model_file_description_schema.json +0 -68
- ads/model/model_introspect.py +0 -331
- ads/model/model_metadata.py +0 -1810
- ads/model/model_metadata_mixin.py +0 -460
- ads/model/model_properties.py +0 -63
- ads/model/model_version_set.py +0 -739
- ads/model/runtime/__init__.py +0 -5
- ads/model/runtime/env_info.py +0 -306
- ads/model/runtime/model_deployment_details.py +0 -37
- ads/model/runtime/model_provenance_details.py +0 -58
- ads/model/runtime/runtime_info.py +0 -81
- ads/model/runtime/schemas/inference_env_info_schema.yaml +0 -16
- ads/model/runtime/schemas/model_provenance_schema.yaml +0 -36
- ads/model/runtime/schemas/training_env_info_schema.yaml +0 -16
- ads/model/runtime/utils.py +0 -201
- ads/model/serde/__init__.py +0 -5
- ads/model/serde/common.py +0 -40
- ads/model/serde/model_input.py +0 -547
- ads/model/serde/model_serializer.py +0 -1184
- ads/model/service/__init__.py +0 -5
- ads/model/service/oci_datascience_model.py +0 -1076
- ads/model/service/oci_datascience_model_deployment.py +0 -500
- ads/model/service/oci_datascience_model_version_set.py +0 -176
- ads/model/transformer/__init__.py +0 -5
- ads/model/transformer/onnx_transformer.py +0 -324
- ads/mysqldb/__init__.py +0 -5
- ads/mysqldb/mysql_db.py +0 -227
- ads/opctl/__init__.py +0 -18
- ads/opctl/anomaly_detection.py +0 -11
- ads/opctl/backend/__init__.py +0 -5
- ads/opctl/backend/ads_dataflow.py +0 -353
- ads/opctl/backend/ads_ml_job.py +0 -710
- ads/opctl/backend/ads_ml_pipeline.py +0 -164
- ads/opctl/backend/ads_model_deployment.py +0 -209
- ads/opctl/backend/base.py +0 -146
- ads/opctl/backend/local.py +0 -1053
- ads/opctl/backend/marketplace/__init__.py +0 -9
- ads/opctl/backend/marketplace/helm_helper.py +0 -173
- ads/opctl/backend/marketplace/local_marketplace.py +0 -271
- ads/opctl/backend/marketplace/marketplace_backend_runner.py +0 -71
- ads/opctl/backend/marketplace/marketplace_operator_interface.py +0 -44
- ads/opctl/backend/marketplace/marketplace_operator_runner.py +0 -24
- ads/opctl/backend/marketplace/marketplace_utils.py +0 -212
- ads/opctl/backend/marketplace/models/__init__.py +0 -5
- ads/opctl/backend/marketplace/models/bearer_token.py +0 -94
- ads/opctl/backend/marketplace/models/marketplace_type.py +0 -70
- ads/opctl/backend/marketplace/models/ocir_details.py +0 -56
- ads/opctl/backend/marketplace/prerequisite_checker.py +0 -238
- ads/opctl/cli.py +0 -707
- ads/opctl/cmds.py +0 -869
- ads/opctl/conda/__init__.py +0 -5
- ads/opctl/conda/cli.py +0 -193
- ads/opctl/conda/cmds.py +0 -749
- ads/opctl/conda/config.yaml +0 -34
- ads/opctl/conda/manifest_template.yaml +0 -13
- ads/opctl/conda/multipart_uploader.py +0 -188
- ads/opctl/conda/pack.py +0 -89
- ads/opctl/config/__init__.py +0 -5
- ads/opctl/config/base.py +0 -57
- ads/opctl/config/diagnostics/__init__.py +0 -5
- ads/opctl/config/diagnostics/distributed/default_requirements_config.yaml +0 -62
- ads/opctl/config/merger.py +0 -255
- ads/opctl/config/resolver.py +0 -297
- ads/opctl/config/utils.py +0 -79
- ads/opctl/config/validator.py +0 -17
- ads/opctl/config/versioner.py +0 -68
- ads/opctl/config/yaml_parsers/__init__.py +0 -7
- ads/opctl/config/yaml_parsers/base.py +0 -58
- ads/opctl/config/yaml_parsers/distributed/__init__.py +0 -7
- ads/opctl/config/yaml_parsers/distributed/yaml_parser.py +0 -201
- ads/opctl/constants.py +0 -66
- ads/opctl/decorator/__init__.py +0 -5
- ads/opctl/decorator/common.py +0 -129
- ads/opctl/diagnostics/__init__.py +0 -5
- ads/opctl/diagnostics/__main__.py +0 -25
- ads/opctl/diagnostics/check_distributed_job_requirements.py +0 -212
- ads/opctl/diagnostics/check_requirements.py +0 -144
- ads/opctl/diagnostics/requirement_exception.py +0 -9
- ads/opctl/distributed/README.md +0 -109
- ads/opctl/distributed/__init__.py +0 -5
- ads/opctl/distributed/certificates.py +0 -32
- ads/opctl/distributed/cli.py +0 -207
- ads/opctl/distributed/cmds.py +0 -731
- ads/opctl/distributed/common/__init__.py +0 -5
- ads/opctl/distributed/common/abstract_cluster_provider.py +0 -449
- ads/opctl/distributed/common/abstract_framework_spec_builder.py +0 -88
- ads/opctl/distributed/common/cluster_config_helper.py +0 -103
- ads/opctl/distributed/common/cluster_provider_factory.py +0 -21
- ads/opctl/distributed/common/cluster_runner.py +0 -54
- ads/opctl/distributed/common/framework_factory.py +0 -29
- ads/opctl/docker/Dockerfile.job +0 -103
- ads/opctl/docker/Dockerfile.job.arm +0 -107
- ads/opctl/docker/Dockerfile.job.gpu +0 -175
- ads/opctl/docker/base-env.yaml +0 -13
- ads/opctl/docker/cuda.repo +0 -6
- ads/opctl/docker/operator/.dockerignore +0 -0
- ads/opctl/docker/operator/Dockerfile +0 -41
- ads/opctl/docker/operator/Dockerfile.gpu +0 -85
- ads/opctl/docker/operator/cuda.repo +0 -6
- ads/opctl/docker/operator/environment.yaml +0 -8
- ads/opctl/forecast.py +0 -11
- ads/opctl/index.yaml +0 -3
- ads/opctl/model/__init__.py +0 -5
- ads/opctl/model/cli.py +0 -65
- ads/opctl/model/cmds.py +0 -73
- ads/opctl/operator/README.md +0 -4
- ads/opctl/operator/__init__.py +0 -31
- ads/opctl/operator/cli.py +0 -344
- ads/opctl/operator/cmd.py +0 -596
- ads/opctl/operator/common/__init__.py +0 -5
- ads/opctl/operator/common/backend_factory.py +0 -460
- ads/opctl/operator/common/const.py +0 -27
- ads/opctl/operator/common/data/synthetic.csv +0 -16001
- ads/opctl/operator/common/dictionary_merger.py +0 -148
- ads/opctl/operator/common/errors.py +0 -42
- ads/opctl/operator/common/operator_config.py +0 -99
- ads/opctl/operator/common/operator_loader.py +0 -811
- ads/opctl/operator/common/operator_schema.yaml +0 -130
- ads/opctl/operator/common/operator_yaml_generator.py +0 -152
- ads/opctl/operator/common/utils.py +0 -208
- ads/opctl/operator/lowcode/__init__.py +0 -5
- ads/opctl/operator/lowcode/anomaly/MLoperator +0 -16
- ads/opctl/operator/lowcode/anomaly/README.md +0 -207
- ads/opctl/operator/lowcode/anomaly/__init__.py +0 -5
- ads/opctl/operator/lowcode/anomaly/__main__.py +0 -103
- ads/opctl/operator/lowcode/anomaly/cmd.py +0 -35
- ads/opctl/operator/lowcode/anomaly/const.py +0 -167
- ads/opctl/operator/lowcode/anomaly/environment.yaml +0 -10
- ads/opctl/operator/lowcode/anomaly/model/__init__.py +0 -5
- ads/opctl/operator/lowcode/anomaly/model/anomaly_dataset.py +0 -146
- ads/opctl/operator/lowcode/anomaly/model/anomaly_merlion.py +0 -162
- ads/opctl/operator/lowcode/anomaly/model/automlx.py +0 -99
- ads/opctl/operator/lowcode/anomaly/model/autots.py +0 -115
- ads/opctl/operator/lowcode/anomaly/model/base_model.py +0 -404
- ads/opctl/operator/lowcode/anomaly/model/factory.py +0 -110
- ads/opctl/operator/lowcode/anomaly/model/isolationforest.py +0 -78
- ads/opctl/operator/lowcode/anomaly/model/oneclasssvm.py +0 -78
- ads/opctl/operator/lowcode/anomaly/model/randomcutforest.py +0 -120
- ads/opctl/operator/lowcode/anomaly/model/tods.py +0 -119
- ads/opctl/operator/lowcode/anomaly/operator_config.py +0 -127
- ads/opctl/operator/lowcode/anomaly/schema.yaml +0 -401
- ads/opctl/operator/lowcode/anomaly/utils.py +0 -88
- ads/opctl/operator/lowcode/common/__init__.py +0 -5
- ads/opctl/operator/lowcode/common/const.py +0 -10
- ads/opctl/operator/lowcode/common/data.py +0 -116
- ads/opctl/operator/lowcode/common/errors.py +0 -47
- ads/opctl/operator/lowcode/common/transformations.py +0 -296
- ads/opctl/operator/lowcode/common/utils.py +0 -293
- ads/opctl/operator/lowcode/feature_store_marketplace/MLoperator +0 -13
- ads/opctl/operator/lowcode/feature_store_marketplace/README.md +0 -30
- ads/opctl/operator/lowcode/feature_store_marketplace/__init__.py +0 -5
- ads/opctl/operator/lowcode/feature_store_marketplace/__main__.py +0 -116
- ads/opctl/operator/lowcode/feature_store_marketplace/cmd.py +0 -85
- ads/opctl/operator/lowcode/feature_store_marketplace/const.py +0 -15
- ads/opctl/operator/lowcode/feature_store_marketplace/environment.yaml +0 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/models/__init__.py +0 -4
- ads/opctl/operator/lowcode/feature_store_marketplace/models/apigw_config.py +0 -32
- ads/opctl/operator/lowcode/feature_store_marketplace/models/db_config.py +0 -43
- ads/opctl/operator/lowcode/feature_store_marketplace/models/mysql_config.py +0 -120
- ads/opctl/operator/lowcode/feature_store_marketplace/models/serializable_yaml_model.py +0 -34
- ads/opctl/operator/lowcode/feature_store_marketplace/operator_utils.py +0 -386
- ads/opctl/operator/lowcode/feature_store_marketplace/schema.yaml +0 -160
- ads/opctl/operator/lowcode/forecast/MLoperator +0 -25
- ads/opctl/operator/lowcode/forecast/README.md +0 -209
- ads/opctl/operator/lowcode/forecast/__init__.py +0 -5
- ads/opctl/operator/lowcode/forecast/__main__.py +0 -89
- ads/opctl/operator/lowcode/forecast/cmd.py +0 -40
- ads/opctl/operator/lowcode/forecast/const.py +0 -92
- ads/opctl/operator/lowcode/forecast/environment.yaml +0 -20
- ads/opctl/operator/lowcode/forecast/errors.py +0 -26
- ads/opctl/operator/lowcode/forecast/model/__init__.py +0 -5
- ads/opctl/operator/lowcode/forecast/model/arima.py +0 -279
- ads/opctl/operator/lowcode/forecast/model/automlx.py +0 -542
- ads/opctl/operator/lowcode/forecast/model/autots.py +0 -312
- ads/opctl/operator/lowcode/forecast/model/base_model.py +0 -863
- ads/opctl/operator/lowcode/forecast/model/factory.py +0 -106
- ads/opctl/operator/lowcode/forecast/model/forecast_datasets.py +0 -492
- ads/opctl/operator/lowcode/forecast/model/ml_forecast.py +0 -243
- ads/opctl/operator/lowcode/forecast/model/neuralprophet.py +0 -486
- ads/opctl/operator/lowcode/forecast/model/prophet.py +0 -445
- ads/opctl/operator/lowcode/forecast/model_evaluator.py +0 -244
- ads/opctl/operator/lowcode/forecast/operator_config.py +0 -234
- ads/opctl/operator/lowcode/forecast/schema.yaml +0 -506
- ads/opctl/operator/lowcode/forecast/utils.py +0 -413
- ads/opctl/operator/lowcode/forecast/whatifserve/__init__.py +0 -7
- ads/opctl/operator/lowcode/forecast/whatifserve/deployment_manager.py +0 -285
- ads/opctl/operator/lowcode/forecast/whatifserve/score.py +0 -246
- ads/opctl/operator/lowcode/pii/MLoperator +0 -17
- ads/opctl/operator/lowcode/pii/README.md +0 -208
- ads/opctl/operator/lowcode/pii/__init__.py +0 -5
- ads/opctl/operator/lowcode/pii/__main__.py +0 -78
- ads/opctl/operator/lowcode/pii/cmd.py +0 -39
- ads/opctl/operator/lowcode/pii/constant.py +0 -84
- ads/opctl/operator/lowcode/pii/environment.yaml +0 -17
- ads/opctl/operator/lowcode/pii/errors.py +0 -27
- ads/opctl/operator/lowcode/pii/model/__init__.py +0 -5
- ads/opctl/operator/lowcode/pii/model/factory.py +0 -82
- ads/opctl/operator/lowcode/pii/model/guardrails.py +0 -167
- ads/opctl/operator/lowcode/pii/model/pii.py +0 -145
- ads/opctl/operator/lowcode/pii/model/processor/__init__.py +0 -34
- ads/opctl/operator/lowcode/pii/model/processor/email_replacer.py +0 -34
- ads/opctl/operator/lowcode/pii/model/processor/mbi_replacer.py +0 -35
- ads/opctl/operator/lowcode/pii/model/processor/name_replacer.py +0 -225
- ads/opctl/operator/lowcode/pii/model/processor/number_replacer.py +0 -73
- ads/opctl/operator/lowcode/pii/model/processor/remover.py +0 -26
- ads/opctl/operator/lowcode/pii/model/report.py +0 -487
- ads/opctl/operator/lowcode/pii/operator_config.py +0 -95
- ads/opctl/operator/lowcode/pii/schema.yaml +0 -108
- ads/opctl/operator/lowcode/pii/utils.py +0 -43
- ads/opctl/operator/lowcode/recommender/MLoperator +0 -16
- ads/opctl/operator/lowcode/recommender/README.md +0 -206
- ads/opctl/operator/lowcode/recommender/__init__.py +0 -5
- ads/opctl/operator/lowcode/recommender/__main__.py +0 -82
- ads/opctl/operator/lowcode/recommender/cmd.py +0 -33
- ads/opctl/operator/lowcode/recommender/constant.py +0 -30
- ads/opctl/operator/lowcode/recommender/environment.yaml +0 -11
- ads/opctl/operator/lowcode/recommender/model/base_model.py +0 -212
- ads/opctl/operator/lowcode/recommender/model/factory.py +0 -56
- ads/opctl/operator/lowcode/recommender/model/recommender_dataset.py +0 -25
- ads/opctl/operator/lowcode/recommender/model/svd.py +0 -106
- ads/opctl/operator/lowcode/recommender/operator_config.py +0 -81
- ads/opctl/operator/lowcode/recommender/schema.yaml +0 -265
- ads/opctl/operator/lowcode/recommender/utils.py +0 -13
- ads/opctl/operator/runtime/__init__.py +0 -5
- ads/opctl/operator/runtime/const.py +0 -17
- ads/opctl/operator/runtime/container_runtime_schema.yaml +0 -50
- ads/opctl/operator/runtime/marketplace_runtime.py +0 -50
- ads/opctl/operator/runtime/python_marketplace_runtime_schema.yaml +0 -21
- ads/opctl/operator/runtime/python_runtime_schema.yaml +0 -21
- ads/opctl/operator/runtime/runtime.py +0 -115
- ads/opctl/schema.yaml.yml +0 -36
- ads/opctl/script.py +0 -40
- ads/opctl/spark/__init__.py +0 -5
- ads/opctl/spark/cli.py +0 -43
- ads/opctl/spark/cmds.py +0 -147
- ads/opctl/templates/diagnostic_report_template.jinja2 +0 -102
- ads/opctl/utils.py +0 -344
- ads/oracledb/__init__.py +0 -5
- ads/oracledb/oracle_db.py +0 -346
- ads/pipeline/__init__.py +0 -39
- ads/pipeline/ads_pipeline.py +0 -2279
- ads/pipeline/ads_pipeline_run.py +0 -772
- ads/pipeline/ads_pipeline_step.py +0 -605
- ads/pipeline/builders/__init__.py +0 -5
- ads/pipeline/builders/infrastructure/__init__.py +0 -5
- ads/pipeline/builders/infrastructure/custom_script.py +0 -32
- ads/pipeline/cli.py +0 -119
- ads/pipeline/extension.py +0 -291
- ads/pipeline/schema/__init__.py +0 -5
- ads/pipeline/schema/cs_step_schema.json +0 -35
- ads/pipeline/schema/ml_step_schema.json +0 -31
- ads/pipeline/schema/pipeline_schema.json +0 -71
- ads/pipeline/visualizer/__init__.py +0 -5
- ads/pipeline/visualizer/base.py +0 -570
- ads/pipeline/visualizer/graph_renderer.py +0 -272
- ads/pipeline/visualizer/text_renderer.py +0 -84
- ads/secrets/__init__.py +0 -11
- ads/secrets/adb.py +0 -386
- ads/secrets/auth_token.py +0 -86
- ads/secrets/big_data_service.py +0 -365
- ads/secrets/mysqldb.py +0 -149
- ads/secrets/oracledb.py +0 -160
- ads/secrets/secrets.py +0 -407
- ads/telemetry/__init__.py +0 -7
- ads/telemetry/base.py +0 -69
- ads/telemetry/client.py +0 -125
- ads/telemetry/telemetry.py +0 -257
- ads/templates/dataflow_pyspark.jinja2 +0 -13
- ads/templates/dataflow_sparksql.jinja2 +0 -22
- ads/templates/func.jinja2 +0 -20
- ads/templates/schemas/openapi.json +0 -1740
- ads/templates/score-pkl.jinja2 +0 -173
- ads/templates/score.jinja2 +0 -322
- ads/templates/score_embedding_onnx.jinja2 +0 -202
- ads/templates/score_generic.jinja2 +0 -165
- ads/templates/score_huggingface_pipeline.jinja2 +0 -217
- ads/templates/score_lightgbm.jinja2 +0 -185
- ads/templates/score_onnx.jinja2 +0 -407
- ads/templates/score_onnx_new.jinja2 +0 -473
- ads/templates/score_oracle_automl.jinja2 +0 -185
- ads/templates/score_pyspark.jinja2 +0 -154
- ads/templates/score_pytorch.jinja2 +0 -219
- ads/templates/score_scikit-learn.jinja2 +0 -184
- ads/templates/score_tensorflow.jinja2 +0 -184
- ads/templates/score_xgboost.jinja2 +0 -178
- ads/text_dataset/__init__.py +0 -5
- ads/text_dataset/backends.py +0 -211
- ads/text_dataset/dataset.py +0 -445
- ads/text_dataset/extractor.py +0 -207
- ads/text_dataset/options.py +0 -53
- ads/text_dataset/udfs.py +0 -22
- ads/text_dataset/utils.py +0 -49
- ads/type_discovery/__init__.py +0 -9
- ads/type_discovery/abstract_detector.py +0 -21
- ads/type_discovery/constant_detector.py +0 -41
- ads/type_discovery/continuous_detector.py +0 -54
- ads/type_discovery/credit_card_detector.py +0 -99
- ads/type_discovery/datetime_detector.py +0 -92
- ads/type_discovery/discrete_detector.py +0 -118
- ads/type_discovery/document_detector.py +0 -146
- ads/type_discovery/ip_detector.py +0 -68
- ads/type_discovery/latlon_detector.py +0 -90
- ads/type_discovery/phone_number_detector.py +0 -63
- ads/type_discovery/type_discovery_driver.py +0 -87
- ads/type_discovery/typed_feature.py +0 -594
- ads/type_discovery/unknown_detector.py +0 -41
- ads/type_discovery/zipcode_detector.py +0 -48
- ads/vault/__init__.py +0 -7
- ads/vault/vault.py +0 -237
- oracle_ads-2.13.8.dist-info/RECORD +0 -858
- {oracle_ads-2.13.8.dist-info → oracle_ads-2.13.9rc0.dist-info}/licenses/LICENSE.txt +0 -0
File without changes
|
@@ -1,375 +0,0 @@
|
|
1
|
-
#!/usr/bin/env python
|
2
|
-
# -*- coding: utf-8; -*-
|
3
|
-
|
4
|
-
# Copyright (c) 2023 Oracle and/or its affiliates.
|
5
|
-
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
|
6
|
-
|
7
|
-
import logging
|
8
|
-
|
9
|
-
from ads.common.decorator.runtime_dependency import OptionalDependency
|
10
|
-
from ads.feature_store.common.enums import BatchIngestionMode
|
11
|
-
from ads.feature_store.execution_strategy.engine.spark_engine import SparkEngine
|
12
|
-
|
13
|
-
try:
|
14
|
-
from delta.tables import *
|
15
|
-
except ModuleNotFoundError:
|
16
|
-
raise ModuleNotFoundError(
|
17
|
-
f"The `delta` module was not found. Please run `pip install "
|
18
|
-
f"{OptionalDependency.SPARK}` to install delta and spark."
|
19
|
-
)
|
20
|
-
except Exception as e:
|
21
|
-
raise
|
22
|
-
|
23
|
-
logger = logging.getLogger(__name__)
|
24
|
-
|
25
|
-
|
26
|
-
class DeltaLakeService:
|
27
|
-
target_delta_table_alias = "target_delta_table"
|
28
|
-
source_delta_table_alias = "source_delta_table"
|
29
|
-
DELTA_SCHEMA_EVOLUTION_OPTIONS = ["mergeSchema", "overwriteSchema"]
|
30
|
-
|
31
|
-
def __init__(self, spark_session: SparkSession):
|
32
|
-
self._spark_session = spark_session
|
33
|
-
self.spark_engine = SparkEngine(spark_session=self._spark_session)
|
34
|
-
|
35
|
-
def write_dataframe_to_delta_lake(
|
36
|
-
self,
|
37
|
-
dataflow_output,
|
38
|
-
target_table_name,
|
39
|
-
delta_table_primary_key,
|
40
|
-
partition_keys,
|
41
|
-
ingestion_mode,
|
42
|
-
raw_schema,
|
43
|
-
feature_options=None,
|
44
|
-
):
|
45
|
-
"""Writes the given data flow output to the Delta table.
|
46
|
-
|
47
|
-
Args:
|
48
|
-
dataflow_output (DataFrame): The data frame that needs to be written to the Delta table.
|
49
|
-
target_table_name (str): The name of the target Delta table.
|
50
|
-
delta_table_primary_key (List[dict]): The list of primary keys for the target Delta table.
|
51
|
-
partition_keys(List[dict]): The List of partition Keys.
|
52
|
-
ingestion_mode (str): The ingestion mode for the data load.
|
53
|
-
raw_schema (StructType): The schema of the raw data being ingested.
|
54
|
-
feature_options (Dict[str, Union[str, int, float, bool]]): Optional. The dictionary containing feature options.
|
55
|
-
|
56
|
-
Returns:
|
57
|
-
None.
|
58
|
-
"""
|
59
|
-
logger.info(f"target table name {target_table_name}")
|
60
|
-
|
61
|
-
if (
|
62
|
-
self.spark_engine.is_delta_table_exists(target_table_name)
|
63
|
-
and ingestion_mode.upper() == BatchIngestionMode.UPSERT.value
|
64
|
-
):
|
65
|
-
logger.info(f"Upsert ops for target table {target_table_name} begin")
|
66
|
-
|
67
|
-
if raw_schema is not None:
|
68
|
-
# Get the source and target table columns
|
69
|
-
source_table_columns = raw_schema.names
|
70
|
-
target_table_columns = [
|
71
|
-
column_details.get("name")
|
72
|
-
for column_details in self.spark_engine.get_columns_from_table(
|
73
|
-
target_table_name
|
74
|
-
)
|
75
|
-
]
|
76
|
-
|
77
|
-
logger.info(f"source table columns {source_table_columns}")
|
78
|
-
logger.info(f"target table columns {target_table_columns}")
|
79
|
-
|
80
|
-
if all(
|
81
|
-
feature in target_table_columns for feature in source_table_columns
|
82
|
-
):
|
83
|
-
logger.info(
|
84
|
-
f"execute upsert for select columns {source_table_columns}"
|
85
|
-
)
|
86
|
-
|
87
|
-
self.__execute_delta_merge_insert_update(
|
88
|
-
delta_table_primary_key,
|
89
|
-
target_table_name,
|
90
|
-
dataflow_output,
|
91
|
-
source_table_columns,
|
92
|
-
feature_options,
|
93
|
-
)
|
94
|
-
else:
|
95
|
-
logger.info(
|
96
|
-
f"execute upsert for all columns {source_table_columns}"
|
97
|
-
)
|
98
|
-
self.__execute_delta_merge_insert_update_all(
|
99
|
-
delta_table_primary_key,
|
100
|
-
target_table_name,
|
101
|
-
dataflow_output,
|
102
|
-
feature_options,
|
103
|
-
)
|
104
|
-
else:
|
105
|
-
self.__execute_delta_merge_insert_update_all(
|
106
|
-
delta_table_primary_key,
|
107
|
-
target_table_name,
|
108
|
-
dataflow_output,
|
109
|
-
feature_options,
|
110
|
-
)
|
111
|
-
logger.info(f"Upsert ops for target table {target_table_name} ended")
|
112
|
-
else:
|
113
|
-
self.save_delta_dataframe(
|
114
|
-
dataflow_output,
|
115
|
-
ingestion_mode,
|
116
|
-
target_table_name,
|
117
|
-
feature_options,
|
118
|
-
partition_keys,
|
119
|
-
)
|
120
|
-
|
121
|
-
def __execute_delta_merge_insert_update(
|
122
|
-
self,
|
123
|
-
primary_keys,
|
124
|
-
target_table_name,
|
125
|
-
source_dataframe,
|
126
|
-
source_table_columns,
|
127
|
-
feature_options,
|
128
|
-
):
|
129
|
-
"""Executes a Delta merge, insert, or update operation based on the given parameters.
|
130
|
-
|
131
|
-
Parameters
|
132
|
-
----------
|
133
|
-
primary_keys
|
134
|
-
A list of primary key column names used for the merge operation.
|
135
|
-
target_table_name
|
136
|
-
The name of the target Delta table.
|
137
|
-
source_dataframe
|
138
|
-
The DataFrame representing the source data for the merge operation.
|
139
|
-
source_table_columns
|
140
|
-
A list of column names for the source table.
|
141
|
-
feature_options
|
142
|
-
A dictionary containing feature options.
|
143
|
-
"""
|
144
|
-
|
145
|
-
# Enable the schema evolution
|
146
|
-
self.__enable_schema_evolution(feature_options)
|
147
|
-
|
148
|
-
target_delta_table = DeltaTable.forName(self._spark_session, target_table_name)
|
149
|
-
source_dataframe.registerTempTable(self.source_delta_table_alias)
|
150
|
-
|
151
|
-
insert_update_set = self.__get_insert_update_query_expression(
|
152
|
-
source_table_columns, self.source_delta_table_alias
|
153
|
-
)
|
154
|
-
|
155
|
-
on_condition = self.__get_delta_table_on_condition(
|
156
|
-
self.target_delta_table_alias, self.source_delta_table_alias, primary_keys
|
157
|
-
)
|
158
|
-
|
159
|
-
return (
|
160
|
-
target_delta_table.alias(self.target_delta_table_alias)
|
161
|
-
.merge(
|
162
|
-
source_dataframe.alias(self.source_delta_table_alias), f"{on_condition}"
|
163
|
-
)
|
164
|
-
.whenMatchedUpdate(set=insert_update_set)
|
165
|
-
.whenNotMatchedInsert(values=insert_update_set)
|
166
|
-
.execute()
|
167
|
-
)
|
168
|
-
|
169
|
-
def __execute_delta_merge_insert_update_all(
|
170
|
-
self, primary_keys, target_table_name, dataframe, feature_options=None
|
171
|
-
):
|
172
|
-
"""Perform a merge operation on Delta tables to update and insert rows into the target table. This method
|
173
|
-
merges all columns from the source table, irrespective of whether they exist in the target table.
|
174
|
-
|
175
|
-
Args:
|
176
|
-
primary_keys (List[dict]): A dictionary containing the primary keys for the target Delta table. The dictionary
|
177
|
-
should have a single key 'items', which maps to a list of dictionaries containing the names of the
|
178
|
-
primary key columns.
|
179
|
-
target_table_name (str): The name of the target Delta table.
|
180
|
-
dataframe (DataFrame): The DataFrame containing the data to merge into the target Delta table.
|
181
|
-
feature_options (dict): A dictionary containing feature options.
|
182
|
-
|
183
|
-
Returns:
|
184
|
-
None
|
185
|
-
"""
|
186
|
-
# Enable the schema
|
187
|
-
self.__enable_schema_evolution(feature_options)
|
188
|
-
target_delta_table = DeltaTable.forName(self._spark_session, target_table_name)
|
189
|
-
on_condition = self.__get_delta_table_on_condition(
|
190
|
-
self.target_delta_table_alias, self.source_delta_table_alias, primary_keys
|
191
|
-
)
|
192
|
-
|
193
|
-
return (
|
194
|
-
target_delta_table.alias(self.target_delta_table_alias)
|
195
|
-
.merge(dataframe.alias(self.source_delta_table_alias), f"{on_condition}")
|
196
|
-
.whenMatchedUpdateAll()
|
197
|
-
.whenNotMatchedInsertAll()
|
198
|
-
.execute()
|
199
|
-
)
|
200
|
-
|
201
|
-
def save_delta_dataframe(
|
202
|
-
self,
|
203
|
-
dataframe,
|
204
|
-
dataframe_ingestion_mode,
|
205
|
-
table_name,
|
206
|
-
feature_options=None,
|
207
|
-
partition_keys=None,
|
208
|
-
):
|
209
|
-
"""
|
210
|
-
Saves a DataFrame to a Delta table with the specified options.
|
211
|
-
|
212
|
-
Args:
|
213
|
-
dataframe (pandas.DataFrame): The DataFrame to save.
|
214
|
-
dataframe_ingestion_mode (str): The mode to use when ingesting the DataFrame.
|
215
|
-
table_name (str): The name of the Delta table to save the DataFrame to.
|
216
|
-
feature_options (dict): Optional feature options to use when saving the DataFrame.
|
217
|
-
|
218
|
-
"""
|
219
|
-
delta_partition_keys = []
|
220
|
-
|
221
|
-
if partition_keys:
|
222
|
-
partition_keys_items = partition_keys["items"]
|
223
|
-
if partition_keys_items:
|
224
|
-
delta_partition_keys = [
|
225
|
-
partition_key.get("name") for partition_key in partition_keys_items
|
226
|
-
]
|
227
|
-
|
228
|
-
if feature_options and feature_options.get("featureOptionWriteConfigDetails"):
|
229
|
-
feature_delta_write_option_config = feature_options.get(
|
230
|
-
"featureOptionWriteConfigDetails"
|
231
|
-
)
|
232
|
-
|
233
|
-
logger.info(
|
234
|
-
f"feature options write config details: {feature_delta_write_option_config}"
|
235
|
-
)
|
236
|
-
|
237
|
-
dataframe.write.format("delta").options(
|
238
|
-
**self.get_delta_write_config(feature_delta_write_option_config)
|
239
|
-
).mode(dataframe_ingestion_mode).partitionBy(
|
240
|
-
delta_partition_keys
|
241
|
-
).saveAsTable(
|
242
|
-
table_name
|
243
|
-
)
|
244
|
-
else:
|
245
|
-
dataframe.write.format("delta").mode(dataframe_ingestion_mode).partitionBy(
|
246
|
-
delta_partition_keys
|
247
|
-
).saveAsTable(table_name)
|
248
|
-
|
249
|
-
def get_delta_write_config(self, feature_delta_write_option_config):
|
250
|
-
"""Returns a dictionary containing delta schema configuration options based on a given dictionary of feature
|
251
|
-
delta write options.
|
252
|
-
|
253
|
-
Parameters
|
254
|
-
----------
|
255
|
-
feature_delta_write_option_config
|
256
|
-
A dictionary containing feature delta write options.
|
257
|
-
|
258
|
-
Returns
|
259
|
-
-------
|
260
|
-
A dictionary containing delta schema configuration options.
|
261
|
-
"""
|
262
|
-
delta_schema_config = {}
|
263
|
-
|
264
|
-
if feature_delta_write_option_config:
|
265
|
-
for key in self.DELTA_SCHEMA_EVOLUTION_OPTIONS:
|
266
|
-
if (
|
267
|
-
key in feature_delta_write_option_config
|
268
|
-
and feature_delta_write_option_config[key] is not None
|
269
|
-
):
|
270
|
-
delta_schema_config[key] = str(
|
271
|
-
feature_delta_write_option_config[key]
|
272
|
-
)
|
273
|
-
|
274
|
-
return delta_schema_config
|
275
|
-
|
276
|
-
def __enable_schema_evolution(self, feature_options):
|
277
|
-
"""Enables schema evolution for Delta tables based on the given feature options.
|
278
|
-
|
279
|
-
Parameters
|
280
|
-
----------
|
281
|
-
feature_options
|
282
|
-
A dictionary containing feature options.
|
283
|
-
|
284
|
-
Returns
|
285
|
-
-------
|
286
|
-
A dictionary containing delta schema configuration options
|
287
|
-
"""
|
288
|
-
|
289
|
-
if feature_options and feature_options.get("featureOptionWriteConfigDetails"):
|
290
|
-
# enable auto merge schema for the spark session
|
291
|
-
self._spark_session.conf.set(
|
292
|
-
"spark.databricks.delta.schema.autoMerge.enabled", "true"
|
293
|
-
)
|
294
|
-
|
295
|
-
@staticmethod
|
296
|
-
def __get_delta_table_on_condition(
|
297
|
-
target_delta_table, source_delta_table, primary_keys
|
298
|
-
):
|
299
|
-
"""Returns the ON condition for the merge operation between target_delta_table and source_delta_table,
|
300
|
-
based on the primary keys defined in primary_keys.
|
301
|
-
|
302
|
-
Parameters
|
303
|
-
----------
|
304
|
-
target_delta_table
|
305
|
-
the name of the target delta table.
|
306
|
-
source_delta_table
|
307
|
-
the name of the source delta table.
|
308
|
-
primary_keys
|
309
|
-
primary key information of the table.
|
310
|
-
|
311
|
-
Returns
|
312
|
-
--------
|
313
|
-
str
|
314
|
-
The ON condition for the merge operation.
|
315
|
-
"""
|
316
|
-
primary_key_items = primary_keys["items"]
|
317
|
-
output = " AND ".join(
|
318
|
-
f"{target_delta_table}.{pk['name']} = {source_delta_table}.{pk['name']}"
|
319
|
-
for pk in primary_key_items
|
320
|
-
)
|
321
|
-
logger.info(f"Primary key on condition: {output}")
|
322
|
-
|
323
|
-
return output
|
324
|
-
|
325
|
-
@staticmethod
|
326
|
-
def __get_insert_update_query_expression(feature_data_source_columns, table_name):
|
327
|
-
"""Generates an insert/update query expression to merge data from a source dataframe to a target Delta table.
|
328
|
-
|
329
|
-
Args:
|
330
|
-
feature_data_source_columns (list): List of columns from the source dataframe.
|
331
|
-
table_name (str): Name of the target Delta table.
|
332
|
-
|
333
|
-
Returns:
|
334
|
-
dict: A dictionary containing the update set expressions for each feature column.
|
335
|
-
|
336
|
-
"""
|
337
|
-
feature_data_update_set = {}
|
338
|
-
|
339
|
-
for feature_column in feature_data_source_columns:
|
340
|
-
target_column_field = str(table_name) + "." + feature_column
|
341
|
-
feature_data_update_set[feature_column] = target_column_field
|
342
|
-
|
343
|
-
logger.info(f"get_insert_update_query_expression {feature_data_update_set}")
|
344
|
-
return feature_data_update_set
|
345
|
-
|
346
|
-
def write_stream_dataframe_to_delta_lake(
|
347
|
-
self,
|
348
|
-
stream_dataframe,
|
349
|
-
target_table,
|
350
|
-
output_mode,
|
351
|
-
query_name,
|
352
|
-
await_termination,
|
353
|
-
timeout,
|
354
|
-
checkpoint_dir,
|
355
|
-
feature_option_details,
|
356
|
-
):
|
357
|
-
if query_name is None:
|
358
|
-
query_name = "insert_stream_" + target_table.split(".")[1]
|
359
|
-
|
360
|
-
query = (
|
361
|
-
stream_dataframe.writeStream.outputMode(output_mode)
|
362
|
-
.format("delta")
|
363
|
-
.option(
|
364
|
-
"checkpointLocation",
|
365
|
-
checkpoint_dir,
|
366
|
-
)
|
367
|
-
.options(**self.get_delta_write_config(feature_option_details))
|
368
|
-
.queryName(query_name)
|
369
|
-
.toTable(target_table)
|
370
|
-
)
|
371
|
-
|
372
|
-
if await_termination:
|
373
|
-
query.awaitTermination(timeout)
|
374
|
-
|
375
|
-
return query
|
File without changes
|
@@ -1,316 +0,0 @@
|
|
1
|
-
#!/usr/bin/env python
|
2
|
-
# -*- coding: utf-8; -*-
|
3
|
-
|
4
|
-
# Copyright (c) 2023 Oracle and/or its affiliates.
|
5
|
-
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
|
6
|
-
|
7
|
-
import logging
|
8
|
-
from datetime import datetime
|
9
|
-
|
10
|
-
from ads.common.decorator.runtime_dependency import OptionalDependency
|
11
|
-
|
12
|
-
try:
|
13
|
-
from pyspark.sql import SparkSession
|
14
|
-
except ModuleNotFoundError:
|
15
|
-
raise ModuleNotFoundError(
|
16
|
-
f"The `pyspark` module was not found. Please run `pip install "
|
17
|
-
f"{OptionalDependency.SPARK}`."
|
18
|
-
)
|
19
|
-
except Exception as e:
|
20
|
-
raise
|
21
|
-
from typing import List, Dict
|
22
|
-
|
23
|
-
from ads.feature_store.common.utils.feature_schema_mapper import (
|
24
|
-
map_spark_type_to_feature_type,
|
25
|
-
)
|
26
|
-
|
27
|
-
from ads.feature_store.common.enums import DataFrameType
|
28
|
-
from ads.feature_store.common.spark_session_singleton import SparkSessionSingleton
|
29
|
-
|
30
|
-
logger = logging.getLogger(__name__)
|
31
|
-
|
32
|
-
|
33
|
-
class SparkEngine:
|
34
|
-
def __init__(self, metastore_id: str = None, spark_session: SparkSession = None):
|
35
|
-
if spark_session:
|
36
|
-
self.spark = spark_session
|
37
|
-
else:
|
38
|
-
self.spark = SparkSessionSingleton(metastore_id).get_spark_session()
|
39
|
-
|
40
|
-
self.managed_table_location = (
|
41
|
-
SparkSessionSingleton().get_managed_table_location()
|
42
|
-
)
|
43
|
-
|
44
|
-
def get_time_version_data(
|
45
|
-
self,
|
46
|
-
delta_table_name: str,
|
47
|
-
version_number: int = None,
|
48
|
-
timestamp: datetime = None,
|
49
|
-
):
|
50
|
-
split_db_name = delta_table_name.split(".")
|
51
|
-
|
52
|
-
# Get the Delta table path
|
53
|
-
delta_table_path = (
|
54
|
-
f"{self.managed_table_location}/{split_db_name[0].lower()}.db/{split_db_name[1]}"
|
55
|
-
if self.managed_table_location
|
56
|
-
else self._get_delta_table_path(delta_table_name)
|
57
|
-
)
|
58
|
-
|
59
|
-
# Set read options based on version_number and timestamp
|
60
|
-
read_options = {}
|
61
|
-
if version_number is not None:
|
62
|
-
read_options["versionAsOf"] = version_number
|
63
|
-
if timestamp:
|
64
|
-
read_options["timestampAsOf"] = timestamp
|
65
|
-
|
66
|
-
# Load the data from the Delta table using specified read options
|
67
|
-
df = self._read_delta_table(delta_table_path, read_options)
|
68
|
-
return df
|
69
|
-
|
70
|
-
def _get_delta_table_path(self, delta_table_name: str) -> str:
|
71
|
-
"""
|
72
|
-
Get the path of the Delta table using DESCRIBE EXTENDED SQL command.
|
73
|
-
|
74
|
-
Args:
|
75
|
-
delta_table_name (str): The name of the Delta table.
|
76
|
-
|
77
|
-
Returns:
|
78
|
-
str: The path of the Delta table.
|
79
|
-
"""
|
80
|
-
delta_table_path = (
|
81
|
-
self.spark.sql(f"DESCRIBE EXTENDED {delta_table_name}")
|
82
|
-
.filter("col_name = 'Location'")
|
83
|
-
.collect()[0][1]
|
84
|
-
)
|
85
|
-
return delta_table_path
|
86
|
-
|
87
|
-
def _read_delta_table(self, delta_table_path: str, read_options: Dict):
|
88
|
-
"""
|
89
|
-
Read the Delta table using specified read options.
|
90
|
-
|
91
|
-
Args:
|
92
|
-
delta_table_path (str): The path of the Delta table.
|
93
|
-
read_options (dict): Dictionary of read options for Delta table.
|
94
|
-
|
95
|
-
Returns:
|
96
|
-
DataFrame: The loaded DataFrame from the Delta table.
|
97
|
-
"""
|
98
|
-
df = (
|
99
|
-
self.spark.read.format("delta")
|
100
|
-
.options(**read_options)
|
101
|
-
.load(delta_table_path)
|
102
|
-
)
|
103
|
-
return df
|
104
|
-
|
105
|
-
def sql(
|
106
|
-
self,
|
107
|
-
query: str,
|
108
|
-
dataframe_type: DataFrameType = DataFrameType.SPARK,
|
109
|
-
is_online: bool = False,
|
110
|
-
):
|
111
|
-
"""Execute SQL command on the offline or online feature store database
|
112
|
-
|
113
|
-
Arguments
|
114
|
-
query: The SQL query to execute.
|
115
|
-
dataframe_type: The type of the returned dataframe. Defaults to "default".
|
116
|
-
is_online: Set to true to execute the query against the online feature store.
|
117
|
-
Defaults to False.
|
118
|
-
|
119
|
-
Returns
|
120
|
-
`DataFrame`: DataFrame depending on the chosen type.
|
121
|
-
"""
|
122
|
-
if is_online:
|
123
|
-
raise ValueError("Online query is not supported.")
|
124
|
-
|
125
|
-
response_spark_df = self.spark.sql(query)
|
126
|
-
response_df = (
|
127
|
-
response_spark_df.toPandas()
|
128
|
-
if dataframe_type == DataFrameType.PANDAS
|
129
|
-
else response_spark_df
|
130
|
-
)
|
131
|
-
|
132
|
-
return response_df
|
133
|
-
|
134
|
-
def is_database_exists(self, database):
|
135
|
-
"""Checks whether the database exists or not.
|
136
|
-
|
137
|
-
Args:
|
138
|
-
database: A string specifying the name of the database.
|
139
|
-
|
140
|
-
Returns:
|
141
|
-
bool: True if the database exists, False otherwise.
|
142
|
-
"""
|
143
|
-
databases = self.spark.catalog.listDatabases()
|
144
|
-
|
145
|
-
return any(db.name == database for db in databases)
|
146
|
-
|
147
|
-
def is_delta_table_exists(self, table_name) -> bool:
|
148
|
-
"""Checks whether the delta table exists or not.
|
149
|
-
|
150
|
-
Args:
|
151
|
-
table_name: A string specifying the name of the table.
|
152
|
-
|
153
|
-
Returns:
|
154
|
-
bool: True if the Delta table exists, False otherwise.
|
155
|
-
"""
|
156
|
-
table_exist = False
|
157
|
-
|
158
|
-
try:
|
159
|
-
# Check if spark can read the table
|
160
|
-
self.spark.read.table(table_name)
|
161
|
-
table_exist = True
|
162
|
-
|
163
|
-
except:
|
164
|
-
pass
|
165
|
-
|
166
|
-
return table_exist
|
167
|
-
|
168
|
-
def get_tables_from_database(self, database):
|
169
|
-
"""Get a list of tables in the specified database using Spark SQL.
|
170
|
-
|
171
|
-
Args:
|
172
|
-
database: A string specifying the name of the database.
|
173
|
-
|
174
|
-
Returns:
|
175
|
-
List: A list of strings containing the names of the tables in the database.
|
176
|
-
"""
|
177
|
-
permanent_tables = None
|
178
|
-
|
179
|
-
try:
|
180
|
-
tables_list = self.spark.catalog.listTables(database)
|
181
|
-
|
182
|
-
# tables_list contains temporary tables also, so we need to filter it.
|
183
|
-
permanent_tables = [table for table in tables_list if not table.isTemporary]
|
184
|
-
except Exception as e:
|
185
|
-
logger.error("Error: The database does not exist. ", e)
|
186
|
-
|
187
|
-
return permanent_tables
|
188
|
-
|
189
|
-
def get_output_columns_from_table_or_dataframe(
|
190
|
-
self, table_name: str = None, dataframe=None
|
191
|
-
):
|
192
|
-
"""Returns the column(features) along with type from the given table.
|
193
|
-
|
194
|
-
Args:
|
195
|
-
table_name(str): A string specifying the name of table name for which columns should be returned.
|
196
|
-
dataframe: Dataframe containing the transformed dataframe.
|
197
|
-
|
198
|
-
Returns:
|
199
|
-
List[{"name": "<feature_name>","featureType": "<feature_type>"}]
|
200
|
-
Returns the List of dictionary of column with name and type from the given table.
|
201
|
-
|
202
|
-
"""
|
203
|
-
if table_name is None and dataframe is None:
|
204
|
-
raise ValueError(
|
205
|
-
"Either 'table_name' or 'dataframe' must be provided to retrieve output columns."
|
206
|
-
)
|
207
|
-
|
208
|
-
if dataframe is not None:
|
209
|
-
feature_data_target = dataframe
|
210
|
-
else:
|
211
|
-
feature_data_target = self.spark.sql(f"SELECT * FROM {table_name} LIMIT 1")
|
212
|
-
|
213
|
-
target_table_columns = []
|
214
|
-
|
215
|
-
for field in feature_data_target.schema.fields:
|
216
|
-
target_table_columns.append(
|
217
|
-
{
|
218
|
-
"name": field.name,
|
219
|
-
"featureType": map_spark_type_to_feature_type(field.dataType).value,
|
220
|
-
}
|
221
|
-
)
|
222
|
-
return target_table_columns
|
223
|
-
|
224
|
-
def convert_from_pandas_to_spark_dataframe(self, dataframe):
|
225
|
-
"""Converts a pandas DataFrame to an Apache Spark DataFrame.
|
226
|
-
|
227
|
-
Args:
|
228
|
-
dataframe (pandas.DataFrame): The pandas DataFrame to convert.
|
229
|
-
|
230
|
-
Returns:
|
231
|
-
pyspark.sql.DataFrame: The converted Apache Spark DataFrame.
|
232
|
-
"""
|
233
|
-
return self.spark.createDataFrame(dataframe)
|
234
|
-
|
235
|
-
def delete_spark_table(self, table_name: str):
|
236
|
-
"""
|
237
|
-
Delete the specified Spark table from the Spark session.
|
238
|
-
|
239
|
-
Args:
|
240
|
-
table_name (str): The full name of the table to delete.
|
241
|
-
|
242
|
-
Returns:
|
243
|
-
None
|
244
|
-
"""
|
245
|
-
|
246
|
-
# Construct SQL queries to drop the table (if it exists)
|
247
|
-
drop_table_query = f"DROP TABLE IF EXISTS {table_name}"
|
248
|
-
logger.info("Deleting the table with query: ", drop_table_query)
|
249
|
-
self.spark.sql(drop_table_query)
|
250
|
-
|
251
|
-
def delete_spark_database(self, database_name: str):
|
252
|
-
"""
|
253
|
-
Delete the specified Spark database from the Spark session.
|
254
|
-
|
255
|
-
Args:
|
256
|
-
database_name (str): The name of the database to delete.
|
257
|
-
|
258
|
-
Returns:
|
259
|
-
None
|
260
|
-
"""
|
261
|
-
# Construct SQL queries to drop the database (if it exists)
|
262
|
-
drop_database_query = f"DROP DATABASE IF EXISTS {database_name}"
|
263
|
-
self.spark.sql(drop_database_query)
|
264
|
-
|
265
|
-
def remove_table_and_database(self, database: str, table: str) -> None:
|
266
|
-
"""
|
267
|
-
Remove the specified Spark table and its database (if it exists) from the current Spark session.
|
268
|
-
|
269
|
-
Args:
|
270
|
-
database (str): The name of the database containing the table to remove.
|
271
|
-
table (str): The name of the table to remove.
|
272
|
-
|
273
|
-
Returns:
|
274
|
-
None.
|
275
|
-
|
276
|
-
Raises:
|
277
|
-
None.
|
278
|
-
|
279
|
-
This method first checks if the specified database exists in the current Spark session by calling the
|
280
|
-
`is_database_exists()` method. If the database exists, it deletes the specified table from the database
|
281
|
-
by calling the `delete_spark_table()` method.
|
282
|
-
|
283
|
-
Next, the method checks if there are any tables left in the database by calling the `get_tables_from_database()` method.
|
284
|
-
If the method returns a list of tables, it checks if the list is empty, and if so, it deletes the database
|
285
|
-
by calling the `delete_spark_database()` method.
|
286
|
-
|
287
|
-
If the `get_tables_from_database()` method returns `None`, no action is taken, and the method simply returns.
|
288
|
-
|
289
|
-
If the specified database does not exist in the current Spark session, the method simply returns without doing anything.
|
290
|
-
"""
|
291
|
-
if not self.is_database_exists(database):
|
292
|
-
return
|
293
|
-
|
294
|
-
table_name = f"{database}.{table}"
|
295
|
-
self.delete_spark_table(table_name)
|
296
|
-
|
297
|
-
tables_list = self.get_tables_from_database(database)
|
298
|
-
if tables_list is not None and len(tables_list) == 0:
|
299
|
-
self.delete_spark_database(database)
|
300
|
-
|
301
|
-
def create_database(self, database: str) -> None:
|
302
|
-
"""
|
303
|
-
Creates a database in Spark if it does not already exist.
|
304
|
-
|
305
|
-
Args:
|
306
|
-
database (str): The name of the database to create.
|
307
|
-
|
308
|
-
Returns:
|
309
|
-
None.
|
310
|
-
|
311
|
-
"""
|
312
|
-
# Construct a SQL query to create the database if it does not exist
|
313
|
-
create_database_query = f"CREATE DATABASE IF NOT EXISTS {database}"
|
314
|
-
|
315
|
-
# Use the `spark.sql()` method to execute the SQL query
|
316
|
-
self.spark.sql(create_database_query)
|