oracle-ads 2.13.7__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.7.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.7.dist-info → oracle_ads-2.13.9rc0.dist-info}/WHEEL +2 -1
- {oracle_ads-2.13.7.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 -2079
- 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.7.dist-info/RECORD +0 -858
- {oracle_ads-2.13.7.dist-info → oracle_ads-2.13.9rc0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -1,1252 +0,0 @@
|
|
1
|
-
#!/usr/bin/env python
|
2
|
-
# -*- coding: utf-8; -*-
|
3
|
-
|
4
|
-
# Copyright (c) 2021, 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 copy
|
8
|
-
import datetime
|
9
|
-
import io
|
10
|
-
import json
|
11
|
-
import logging
|
12
|
-
import os
|
13
|
-
import time
|
14
|
-
import urllib.parse
|
15
|
-
from typing import Any, Dict, List, Optional
|
16
|
-
|
17
|
-
import fsspec
|
18
|
-
import oci.data_flow
|
19
|
-
import oci.util as oci_util
|
20
|
-
import yaml
|
21
|
-
from ads.common import utils
|
22
|
-
from ads.common.auth import default_signer
|
23
|
-
from ads.common.decorator.utils import class_or_instance_method
|
24
|
-
from ads.common.oci_client import OCIClientFactory
|
25
|
-
from ads.common.oci_mixin import OCIModelMixin
|
26
|
-
from ads.common.utils import batch_convert_case, camel_to_snake
|
27
|
-
from ads.jobs.builders.infrastructure.base import Infrastructure, RunInstance
|
28
|
-
from ads.jobs.builders.infrastructure.utils import normalize_config
|
29
|
-
from ads.jobs.builders.runtimes.python_runtime import DataFlowRuntime
|
30
|
-
from ads.model.runtime.env_info import InferenceEnvInfo
|
31
|
-
from oci.data_flow.models import CreateApplicationDetails, CreateRunDetails
|
32
|
-
from tqdm import tqdm
|
33
|
-
|
34
|
-
from ads.config import NB_SESSION_COMPARTMENT_OCID, NB_SESSION_OCID
|
35
|
-
|
36
|
-
logger = logging.getLogger(__name__)
|
37
|
-
|
38
|
-
CONDA_PACK_SUFFIX = "#conda"
|
39
|
-
SLEEP_INTERVAL = 3
|
40
|
-
|
41
|
-
DEFAULT_LANGUAGE = "PYTHON"
|
42
|
-
DEFAULT_SPARK_VERSION = "3.2.1"
|
43
|
-
DEFAULT_NUM_EXECUTORS = 1
|
44
|
-
DEFAULT_SHAPE = "VM.Standard.E3.Flex"
|
45
|
-
DATAFLOW_SHAPE_FAMILY = [
|
46
|
-
"Standard.E3",
|
47
|
-
"Standard.E4",
|
48
|
-
"Standard3",
|
49
|
-
"Standard.A1",
|
50
|
-
"Standard2",
|
51
|
-
]
|
52
|
-
|
53
|
-
|
54
|
-
def conda_pack_name_to_dataflow_config(conda_uri):
|
55
|
-
return {
|
56
|
-
"spark.archives": conda_uri + CONDA_PACK_SUFFIX,
|
57
|
-
"dataflow.auth": "resource_principal",
|
58
|
-
}
|
59
|
-
|
60
|
-
|
61
|
-
def _env_variables_to_dataflow_config(
|
62
|
-
env_vars: Dict[str, str] = None
|
63
|
-
) -> Dict[str, str]:
|
64
|
-
"""Prepares environment variables for the application.
|
65
|
-
Similar environment variables will be setup for the driver and executor.
|
66
|
-
|
67
|
-
Parameters
|
68
|
-
----------
|
69
|
-
env_vars: (Dict[str, str], optional). Defaults to `None`
|
70
|
-
The dictionary with SRC env variables.
|
71
|
-
Example: {"env1": "value1"}
|
72
|
-
|
73
|
-
Returns
|
74
|
-
-------
|
75
|
-
Dict[str, str]
|
76
|
-
Dictionary with pre populated environment variables.
|
77
|
-
Example: {"spark.executorEnv.env1": "value1", "spark.driverEnv.env1": "value1"}
|
78
|
-
"""
|
79
|
-
if not env_vars:
|
80
|
-
return {}
|
81
|
-
|
82
|
-
result = {}
|
83
|
-
for level in ("spark.executorEnv", "spark.driverEnv"):
|
84
|
-
for env_name, env_value in env_vars.items():
|
85
|
-
result[f"{level}.{env_name}"] = env_value
|
86
|
-
|
87
|
-
return result
|
88
|
-
|
89
|
-
|
90
|
-
class DataFlowApp(OCIModelMixin, oci.data_flow.models.Application):
|
91
|
-
@classmethod
|
92
|
-
def init_client(cls, **kwargs) -> oci.data_flow.data_flow_client.DataFlowClient:
|
93
|
-
return cls._init_client(
|
94
|
-
client=oci.data_flow.data_flow_client.DataFlowClient, **kwargs
|
95
|
-
)
|
96
|
-
|
97
|
-
@property
|
98
|
-
def client(self) -> oci.data_flow.data_flow_client.DataFlowClient:
|
99
|
-
return super().client
|
100
|
-
|
101
|
-
def create(self) -> "DataFlowApp":
|
102
|
-
"""
|
103
|
-
Create a Data Flow application.
|
104
|
-
|
105
|
-
Returns
|
106
|
-
-------
|
107
|
-
DataFlowApp
|
108
|
-
a DataFlowApp instance
|
109
|
-
|
110
|
-
"""
|
111
|
-
resp = self.client.create_application(
|
112
|
-
self.to_oci_model(CreateApplicationDetails)
|
113
|
-
)
|
114
|
-
logger.debug(f"Created a DataFlow Application {resp.data}")
|
115
|
-
for k, v in json.loads(repr(resp.data)).items():
|
116
|
-
setattr(self, k, v)
|
117
|
-
return self
|
118
|
-
|
119
|
-
def delete(self) -> None:
|
120
|
-
"""
|
121
|
-
Delete a Data Flow application.
|
122
|
-
|
123
|
-
Returns
|
124
|
-
-------
|
125
|
-
None
|
126
|
-
"""
|
127
|
-
self.application = self.client.delete_application(self.id)
|
128
|
-
self.lifecycle_state = oci.data_flow.models.Application.LIFECYCLE_STATE_DELETED
|
129
|
-
|
130
|
-
def __repr__(self) -> str:
|
131
|
-
"""Displays the object as YAML."""
|
132
|
-
return self.to_yaml()
|
133
|
-
|
134
|
-
def to_yaml(self) -> str:
|
135
|
-
"""Serializes the object into YAML string.
|
136
|
-
|
137
|
-
Returns
|
138
|
-
-------
|
139
|
-
str
|
140
|
-
YAML stored in a string.
|
141
|
-
"""
|
142
|
-
return yaml.safe_dump(self.to_dict())
|
143
|
-
|
144
|
-
|
145
|
-
class DataFlowRun(OCIModelMixin, oci.data_flow.models.Run, RunInstance):
|
146
|
-
_DETAILS_LINK = (
|
147
|
-
"https://console.{region}.oraclecloud.com/data-flow/runs/details/{id}"
|
148
|
-
)
|
149
|
-
|
150
|
-
TERMINATED_STATES = [
|
151
|
-
oci.data_flow.models.Run.LIFECYCLE_STATE_CANCELED,
|
152
|
-
oci.data_flow.models.Run.LIFECYCLE_STATE_FAILED,
|
153
|
-
oci.data_flow.models.Run.LIFECYCLE_STATE_SUCCEEDED,
|
154
|
-
]
|
155
|
-
|
156
|
-
@classmethod
|
157
|
-
def init_client(cls, **kwargs) -> oci.data_flow.data_flow_client.DataFlowClient:
|
158
|
-
return cls._init_client(
|
159
|
-
client=oci.data_flow.data_flow_client.DataFlowClient, **kwargs
|
160
|
-
)
|
161
|
-
|
162
|
-
@property
|
163
|
-
def client(self) -> oci.data_flow.data_flow_client.DataFlowClient:
|
164
|
-
return super().client
|
165
|
-
|
166
|
-
def create(self) -> "DataFlowRun":
|
167
|
-
"""
|
168
|
-
Create a Data Flow run.
|
169
|
-
|
170
|
-
Returns
|
171
|
-
-------
|
172
|
-
DataFlowRun
|
173
|
-
a DataFlowRun instance
|
174
|
-
"""
|
175
|
-
resp = self.client.create_run(self.to_oci_model(CreateRunDetails))
|
176
|
-
logger.debug(f"Created a DataFlow Run {resp.data}")
|
177
|
-
for k, v in json.loads(repr(resp.data)).items():
|
178
|
-
setattr(self, k, v)
|
179
|
-
return self
|
180
|
-
|
181
|
-
@property
|
182
|
-
def status(self) -> str:
|
183
|
-
"""
|
184
|
-
Show status (lifecycle state) of a run.
|
185
|
-
|
186
|
-
Returns
|
187
|
-
-------
|
188
|
-
str
|
189
|
-
status of the run
|
190
|
-
"""
|
191
|
-
if self.id:
|
192
|
-
resp = self.client.get_run(self.id)
|
193
|
-
self.lifecycle_state = resp.data.lifecycle_state
|
194
|
-
return self.lifecycle_state
|
195
|
-
|
196
|
-
@property
|
197
|
-
def logs(self) -> "DataFlowLogs":
|
198
|
-
"""
|
199
|
-
Show logs from a run.
|
200
|
-
There are three types of logs: application log, driver log and executor log,
|
201
|
-
each with stdout and stderr separately.
|
202
|
-
To access each type of logs,
|
203
|
-
>>> dfr.logs.application.stdout
|
204
|
-
>>> dfr.logs.driver.stderr
|
205
|
-
|
206
|
-
Returns
|
207
|
-
-------
|
208
|
-
DataFlowLogs
|
209
|
-
an instance of DataFlowLogs
|
210
|
-
"""
|
211
|
-
return DataFlowLogs(run_id=self.id)
|
212
|
-
|
213
|
-
def wait(self, interval: int = SLEEP_INTERVAL) -> "DataFlowRun":
|
214
|
-
"""
|
215
|
-
Wait for a run to terminate.
|
216
|
-
|
217
|
-
Parameters
|
218
|
-
----------
|
219
|
-
interval: int, optional
|
220
|
-
interval to wait before probing again
|
221
|
-
|
222
|
-
Returns
|
223
|
-
-------
|
224
|
-
DataFlowRun
|
225
|
-
a DataFlowRun instance
|
226
|
-
"""
|
227
|
-
current = self.status
|
228
|
-
timestamp = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")
|
229
|
-
logger.info(f"{timestamp} - {self.status}")
|
230
|
-
print(f"{timestamp} - {self.status}")
|
231
|
-
while current not in self.TERMINATED_STATES:
|
232
|
-
time.sleep(interval)
|
233
|
-
if self.status != current:
|
234
|
-
timestamp = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")
|
235
|
-
logger.info(f"{timestamp} - {self.status}")
|
236
|
-
print(f"{timestamp} - {self.status}")
|
237
|
-
current = self.status
|
238
|
-
return self
|
239
|
-
|
240
|
-
def watch(self, interval: int = SLEEP_INTERVAL) -> "DataFlowRun":
|
241
|
-
"""This is an alias of `wait()` method. It waits for a run to terminate.
|
242
|
-
|
243
|
-
Parameters
|
244
|
-
----------
|
245
|
-
interval: int, optional
|
246
|
-
interval to wait before probing again
|
247
|
-
|
248
|
-
Returns
|
249
|
-
-------
|
250
|
-
DataFlowRun
|
251
|
-
a DataFlowRun instance
|
252
|
-
"""
|
253
|
-
logger.info(
|
254
|
-
"This is an alias of `wait`. Logs are available after run completes."
|
255
|
-
)
|
256
|
-
return self.wait(interval=interval)
|
257
|
-
|
258
|
-
def to_yaml(self) -> str:
|
259
|
-
"""Serializes the object into YAML string.
|
260
|
-
|
261
|
-
Returns
|
262
|
-
-------
|
263
|
-
str
|
264
|
-
YAML stored in a string.
|
265
|
-
"""
|
266
|
-
run = self.to_dict()
|
267
|
-
run["lifecycleState"] = self.status
|
268
|
-
return yaml.safe_dump(run)
|
269
|
-
|
270
|
-
def delete(self) -> "DataFlowRun":
|
271
|
-
"""
|
272
|
-
Cancel and delete a Data Flow run if it is not yet terminated.
|
273
|
-
Will be executed asynchronously.
|
274
|
-
|
275
|
-
Returns
|
276
|
-
-------
|
277
|
-
self
|
278
|
-
The dataflow run instance.
|
279
|
-
"""
|
280
|
-
if self.status not in self.TERMINATED_STATES:
|
281
|
-
self.client.delete_run(self.id)
|
282
|
-
self.lifecycle_state = oci.data_flow.models.Run.LIFECYCLE_STATE_CANCELING
|
283
|
-
|
284
|
-
return self
|
285
|
-
|
286
|
-
def cancel(self) -> "DataFlowRun":
|
287
|
-
"""Cancel a Data Flow run if it is not yet terminated.
|
288
|
-
Will be executed synchronously.
|
289
|
-
|
290
|
-
Returns
|
291
|
-
-------
|
292
|
-
self
|
293
|
-
The dataflow run instance.
|
294
|
-
"""
|
295
|
-
self.delete()
|
296
|
-
self.wait()
|
297
|
-
return self
|
298
|
-
|
299
|
-
|
300
|
-
class _Log:
|
301
|
-
def __init__(self, run_id, src_type, output_type):
|
302
|
-
self.run_id = run_id
|
303
|
-
self.src_type = src_type
|
304
|
-
self.output_type = output_type
|
305
|
-
self._cache = None
|
306
|
-
|
307
|
-
@property
|
308
|
-
def client(self):
|
309
|
-
return OCIClientFactory(**default_signer()).dataflow
|
310
|
-
|
311
|
-
def _get_logs(self, n=None, reverse=False):
|
312
|
-
if not self._cache:
|
313
|
-
logs = self.client.list_run_logs(self.run_id).data
|
314
|
-
lines = []
|
315
|
-
for log in logs:
|
316
|
-
if log.type == self.output_type and self.src_type == log.source:
|
317
|
-
lines.extend(
|
318
|
-
self.client.get_run_log(self.run_id, log.name)
|
319
|
-
.data.text.lstrip("\x00")
|
320
|
-
.rstrip("\n")
|
321
|
-
.splitlines()
|
322
|
-
)
|
323
|
-
self._cache = lines
|
324
|
-
if n and reverse:
|
325
|
-
return "\n".join(self._cache[-n:])
|
326
|
-
elif n and not reverse:
|
327
|
-
return "\n".join(self._cache[:n])
|
328
|
-
else:
|
329
|
-
return "\n".join(self._cache)
|
330
|
-
|
331
|
-
def __repr__(self):
|
332
|
-
return self._get_logs()
|
333
|
-
|
334
|
-
def head(self, n=None):
|
335
|
-
return self._get_logs(n=n)
|
336
|
-
|
337
|
-
def tail(self, n=None):
|
338
|
-
return self._get_logs(n=n, reverse=True)
|
339
|
-
|
340
|
-
def download(self, path):
|
341
|
-
with open(path, mode="w") as f:
|
342
|
-
f.write(self._get_logs())
|
343
|
-
|
344
|
-
|
345
|
-
class _DataFlowLog:
|
346
|
-
def __init__(self, run_id, src_type):
|
347
|
-
self.run_id = run_id
|
348
|
-
self.src_type = src_type
|
349
|
-
|
350
|
-
@property
|
351
|
-
def stdout(self):
|
352
|
-
return _Log(self.run_id, self.src_type, "STDOUT")
|
353
|
-
|
354
|
-
@property
|
355
|
-
def stderr(self):
|
356
|
-
return _Log(self.run_id, self.src_type, "STDERR")
|
357
|
-
|
358
|
-
|
359
|
-
class DataFlowLogs:
|
360
|
-
def __init__(self, run_id):
|
361
|
-
self.run_id = run_id
|
362
|
-
|
363
|
-
@property
|
364
|
-
def application(self):
|
365
|
-
return _DataFlowLog(run_id=self.run_id, src_type="APPLICATION")
|
366
|
-
|
367
|
-
@property
|
368
|
-
def driver(self):
|
369
|
-
return _DataFlowLog(run_id=self.run_id, src_type="DRIVER")
|
370
|
-
|
371
|
-
@property
|
372
|
-
def executor(self):
|
373
|
-
return _DataFlowLog(run_id=self.run_id, src_type="EXECUTOR")
|
374
|
-
|
375
|
-
|
376
|
-
class DataFlow(Infrastructure):
|
377
|
-
CONST_COMPARTMENT_ID = "compartment_id"
|
378
|
-
CONST_CONFIG = "configuration"
|
379
|
-
CONST_EXECUTE = "execute"
|
380
|
-
CONST_DRIVER_SHAPE = "driver_shape"
|
381
|
-
CONST_EXECUTOR_SHAPE = "executor_shape"
|
382
|
-
CONST_LANGUAGE = "language"
|
383
|
-
CONST_METASTORE_ID = "metastore_id"
|
384
|
-
CONST_BUCKET_URI = "logs_bucket_uri"
|
385
|
-
CONST_NUM_EXECUTORS = "num_executors"
|
386
|
-
CONST_SPARK_VERSION = "spark_version"
|
387
|
-
CONST_WAREHOUSE_BUCKET_URI = "warehouse_bucket_uri"
|
388
|
-
CONST_DRIVER_SHAPE_CONFIG = "driver_shape_config"
|
389
|
-
CONST_EXECUTOR_SHAPE_CONFIG = "executor_shape_config"
|
390
|
-
CONST_MEMORY_IN_GBS = "memory_in_gbs"
|
391
|
-
CONST_OCPUS = "ocpus"
|
392
|
-
CONST_ID = "id"
|
393
|
-
CONST_PRIVATE_ENDPOINT_ID = "private_endpoint_id"
|
394
|
-
CONST_POOL_ID = "pool_id"
|
395
|
-
CONST_FREEFORM_TAGS = "freeform_tags"
|
396
|
-
CONST_DEFINED_TAGS = "defined_tags"
|
397
|
-
|
398
|
-
attribute_map = {
|
399
|
-
CONST_COMPARTMENT_ID: "compartmentId",
|
400
|
-
CONST_CONFIG: CONST_CONFIG,
|
401
|
-
CONST_EXECUTE: CONST_EXECUTE,
|
402
|
-
CONST_DRIVER_SHAPE: "driverShape",
|
403
|
-
CONST_EXECUTOR_SHAPE: "executorShape",
|
404
|
-
CONST_METASTORE_ID: "metastoreId",
|
405
|
-
CONST_BUCKET_URI: "logsBucketUri",
|
406
|
-
CONST_NUM_EXECUTORS: "numExecutors",
|
407
|
-
CONST_SPARK_VERSION: "sparkVersion",
|
408
|
-
CONST_WAREHOUSE_BUCKET_URI: "warehouseBucketUri",
|
409
|
-
CONST_DRIVER_SHAPE_CONFIG: "driverShapeConfig",
|
410
|
-
CONST_EXECUTOR_SHAPE_CONFIG: "executorShapeConfig",
|
411
|
-
CONST_MEMORY_IN_GBS: "memoryInGBs",
|
412
|
-
CONST_OCPUS: CONST_OCPUS,
|
413
|
-
CONST_ID: CONST_ID,
|
414
|
-
CONST_PRIVATE_ENDPOINT_ID: "privateEndpointId",
|
415
|
-
CONST_POOL_ID: "poolId",
|
416
|
-
CONST_FREEFORM_TAGS: "freeformTags",
|
417
|
-
CONST_DEFINED_TAGS: "definedTags",
|
418
|
-
}
|
419
|
-
|
420
|
-
def __init__(self, spec: dict = None, **kwargs):
|
421
|
-
defaults = self._load_default_properties()
|
422
|
-
spec = self._standardize_spec(spec)
|
423
|
-
kwargs = self._standardize_spec(kwargs)
|
424
|
-
if spec is None:
|
425
|
-
super(DataFlow, self).__init__(defaults, **kwargs)
|
426
|
-
else:
|
427
|
-
spec = {
|
428
|
-
k: v
|
429
|
-
for k, v in spec.items()
|
430
|
-
if (
|
431
|
-
f"with_{camel_to_snake(k)}" in self.__dir__()
|
432
|
-
or (k == "defined_tags" or "freeform_tags")
|
433
|
-
)
|
434
|
-
and v is not None
|
435
|
-
}
|
436
|
-
defaults.update(spec)
|
437
|
-
super().__init__(defaults, **kwargs)
|
438
|
-
|
439
|
-
self.df_app = DataFlowApp(**self._spec)
|
440
|
-
self.runtime = None
|
441
|
-
self._name = None
|
442
|
-
|
443
|
-
def _load_default_properties(self) -> Dict:
|
444
|
-
"""
|
445
|
-
Load default properties from environment variables, notebook session, etc.
|
446
|
-
|
447
|
-
Returns
|
448
|
-
-------
|
449
|
-
dict
|
450
|
-
a dictionary of default properties
|
451
|
-
"""
|
452
|
-
defaults = {}
|
453
|
-
if NB_SESSION_COMPARTMENT_OCID:
|
454
|
-
defaults[self.CONST_COMPARTMENT_ID] = NB_SESSION_COMPARTMENT_OCID
|
455
|
-
if NB_SESSION_OCID:
|
456
|
-
dsc_client = OCIClientFactory(**default_signer()).data_science
|
457
|
-
try:
|
458
|
-
nb_session = dsc_client.get_notebook_session(NB_SESSION_OCID).data
|
459
|
-
nb_config = nb_session.notebook_session_configuration_details
|
460
|
-
|
461
|
-
defaults[self.CONST_DRIVER_SHAPE] = nb_config.shape
|
462
|
-
logger.debug(f"Set driver shape to {nb_config.shape}")
|
463
|
-
|
464
|
-
defaults[self.CONST_EXECUTOR_SHAPE] = nb_config.shape
|
465
|
-
logger.debug(f"Set executor shape to {nb_config.shape}")
|
466
|
-
|
467
|
-
if nb_config.notebook_session_shape_config_details:
|
468
|
-
notebook_shape_config_details = oci_util.to_dict(
|
469
|
-
nb_config.notebook_session_shape_config_details
|
470
|
-
)
|
471
|
-
|
472
|
-
defaults[self.CONST_DRIVER_SHAPE_CONFIG] = copy.deepcopy(
|
473
|
-
notebook_shape_config_details
|
474
|
-
)
|
475
|
-
logger.debug(
|
476
|
-
f"Set driver shape config to {nb_config.notebook_session_shape_config_details}"
|
477
|
-
)
|
478
|
-
|
479
|
-
defaults[self.CONST_EXECUTOR_SHAPE_CONFIG] = copy.deepcopy(
|
480
|
-
notebook_shape_config_details
|
481
|
-
)
|
482
|
-
logger.debug(
|
483
|
-
f"Set executor shape config to {nb_config.notebook_session_shape_config_details}"
|
484
|
-
)
|
485
|
-
|
486
|
-
except Exception as e:
|
487
|
-
logger.warning(
|
488
|
-
f"Error fetching details about Notebook session: {os.environ['NB_SESSION_OCID']}. {e}"
|
489
|
-
)
|
490
|
-
|
491
|
-
defaults["language"] = DEFAULT_LANGUAGE
|
492
|
-
defaults["spark_version"] = DEFAULT_SPARK_VERSION
|
493
|
-
defaults["num_executors"] = DEFAULT_NUM_EXECUTORS
|
494
|
-
|
495
|
-
logger.debug(f"Set spark version to be {defaults['spark_version']}")
|
496
|
-
logger.debug(f"Set number of executors to be {defaults['num_executors']}")
|
497
|
-
|
498
|
-
return defaults
|
499
|
-
|
500
|
-
@property
|
501
|
-
def name(self) -> str:
|
502
|
-
"""Display name of the job"""
|
503
|
-
return self._name
|
504
|
-
|
505
|
-
@name.setter
|
506
|
-
def name(self, value: str):
|
507
|
-
"""Sets the display name of the job
|
508
|
-
|
509
|
-
Parameters
|
510
|
-
----------
|
511
|
-
value : str
|
512
|
-
The display name of the job
|
513
|
-
"""
|
514
|
-
if self.df_app:
|
515
|
-
self.df_app.display_name = value
|
516
|
-
self._name = value
|
517
|
-
|
518
|
-
@property
|
519
|
-
def job_id(self) -> Optional[str]:
|
520
|
-
"""The OCID of the job"""
|
521
|
-
return self.get_spec("id")
|
522
|
-
|
523
|
-
def with_compartment_id(self, id: str) -> "DataFlow":
|
524
|
-
"""
|
525
|
-
Set compartment id for a Data Flow job.
|
526
|
-
|
527
|
-
Parameters
|
528
|
-
----------
|
529
|
-
id: str
|
530
|
-
compartment id
|
531
|
-
|
532
|
-
Returns
|
533
|
-
-------
|
534
|
-
DataFlow
|
535
|
-
the Data Flow instance itself
|
536
|
-
"""
|
537
|
-
return self.set_spec(self.CONST_COMPARTMENT_ID, id)
|
538
|
-
|
539
|
-
def with_configuration(self, configs: dict) -> "DataFlow":
|
540
|
-
"""
|
541
|
-
Set configuration for a Data Flow job.
|
542
|
-
|
543
|
-
Parameters
|
544
|
-
----------
|
545
|
-
configs: dict
|
546
|
-
dictionary of configurations
|
547
|
-
|
548
|
-
Returns
|
549
|
-
-------
|
550
|
-
DataFlow
|
551
|
-
the Data Flow instance itself
|
552
|
-
"""
|
553
|
-
return self.set_spec(self.CONST_CONFIG, configs)
|
554
|
-
|
555
|
-
def with_execute(self, exec: str) -> "DataFlow":
|
556
|
-
"""
|
557
|
-
Set command for spark-submit.
|
558
|
-
|
559
|
-
Parameters
|
560
|
-
----------
|
561
|
-
exec: str
|
562
|
-
str of commands
|
563
|
-
|
564
|
-
Returns
|
565
|
-
-------
|
566
|
-
DataFlow
|
567
|
-
the Data Flow instance itself
|
568
|
-
"""
|
569
|
-
return self.set_spec(self.CONST_EXECUTE, exec)
|
570
|
-
|
571
|
-
def with_driver_shape(self, shape: str) -> "DataFlow":
|
572
|
-
"""
|
573
|
-
Set driver shape for a Data Flow job.
|
574
|
-
|
575
|
-
Parameters
|
576
|
-
----------
|
577
|
-
shape: str
|
578
|
-
driver shape
|
579
|
-
|
580
|
-
Returns
|
581
|
-
-------
|
582
|
-
DataFlow
|
583
|
-
the Data Flow instance itself
|
584
|
-
"""
|
585
|
-
return self.set_spec(self.CONST_DRIVER_SHAPE, shape)
|
586
|
-
|
587
|
-
def with_executor_shape(self, shape: str) -> "DataFlow":
|
588
|
-
"""
|
589
|
-
Set executor shape for a Data Flow job.
|
590
|
-
|
591
|
-
Parameters
|
592
|
-
----------
|
593
|
-
shape: str
|
594
|
-
executor shape
|
595
|
-
|
596
|
-
Returns
|
597
|
-
-------
|
598
|
-
DataFlow
|
599
|
-
the Data Flow instance itself
|
600
|
-
"""
|
601
|
-
return self.set_spec(self.CONST_EXECUTOR_SHAPE, shape)
|
602
|
-
|
603
|
-
def with_language(self, lang: str) -> "DataFlow":
|
604
|
-
"""
|
605
|
-
Set language for a Data Flow job.
|
606
|
-
|
607
|
-
Parameters
|
608
|
-
----------
|
609
|
-
lang: str
|
610
|
-
language for the job
|
611
|
-
|
612
|
-
Returns
|
613
|
-
-------
|
614
|
-
DataFlow
|
615
|
-
the Data Flow instance itself
|
616
|
-
"""
|
617
|
-
return self.set_spec(self.CONST_LANGUAGE, lang)
|
618
|
-
|
619
|
-
def with_metastore_id(self, id: str) -> "DataFlow":
|
620
|
-
"""
|
621
|
-
Set Hive metastore id for a Data Flow job.
|
622
|
-
|
623
|
-
Parameters
|
624
|
-
----------
|
625
|
-
id: str
|
626
|
-
metastore id
|
627
|
-
|
628
|
-
Returns
|
629
|
-
-------
|
630
|
-
DataFlow
|
631
|
-
the Data Flow instance itself
|
632
|
-
"""
|
633
|
-
|
634
|
-
return self.set_spec(self.CONST_METASTORE_ID, id)
|
635
|
-
|
636
|
-
def with_logs_bucket_uri(self, uri: str) -> "DataFlow":
|
637
|
-
"""
|
638
|
-
Set logs bucket uri for a Data Flow job.
|
639
|
-
|
640
|
-
Parameters
|
641
|
-
----------
|
642
|
-
uri: str
|
643
|
-
uri to logs bucket
|
644
|
-
|
645
|
-
Returns
|
646
|
-
-------
|
647
|
-
DataFlow
|
648
|
-
the Data Flow instance itself
|
649
|
-
"""
|
650
|
-
return self.set_spec(self.CONST_BUCKET_URI, uri)
|
651
|
-
|
652
|
-
def with_num_executors(self, n: int) -> "DataFlow":
|
653
|
-
"""
|
654
|
-
Set number of executors for a Data Flow job.
|
655
|
-
|
656
|
-
Parameters
|
657
|
-
----------
|
658
|
-
n: int
|
659
|
-
number of executors
|
660
|
-
|
661
|
-
Returns
|
662
|
-
-------
|
663
|
-
DataFlow
|
664
|
-
the Data Flow instance itself
|
665
|
-
"""
|
666
|
-
return self.set_spec(self.CONST_NUM_EXECUTORS, n)
|
667
|
-
|
668
|
-
def with_spark_version(self, ver: str) -> "DataFlow":
|
669
|
-
"""
|
670
|
-
Set spark version for a Data Flow job.
|
671
|
-
Currently supported versions are 2.4.4, 3.0.2 and 3.2.1
|
672
|
-
Documentation: https://docs.oracle.com/en-us/iaas/data-flow/using/dfs_getting_started.htm#before_you_begin
|
673
|
-
|
674
|
-
Parameters
|
675
|
-
----------
|
676
|
-
ver: str
|
677
|
-
spark version
|
678
|
-
|
679
|
-
Returns
|
680
|
-
-------
|
681
|
-
DataFlow
|
682
|
-
the Data Flow instance itself
|
683
|
-
"""
|
684
|
-
return self.set_spec(self.CONST_SPARK_VERSION, ver)
|
685
|
-
|
686
|
-
def with_warehouse_bucket_uri(self, uri: str) -> "DataFlow":
|
687
|
-
"""
|
688
|
-
Set warehouse bucket uri for a Data Flow job.
|
689
|
-
|
690
|
-
Parameters
|
691
|
-
----------
|
692
|
-
uri: str
|
693
|
-
uri to warehouse bucket
|
694
|
-
|
695
|
-
Returns
|
696
|
-
-------
|
697
|
-
DataFlow
|
698
|
-
the Data Flow instance itself
|
699
|
-
"""
|
700
|
-
return self.set_spec(self.CONST_WAREHOUSE_BUCKET_URI, uri)
|
701
|
-
|
702
|
-
def with_id(self, id: str) -> "DataFlow":
|
703
|
-
"""
|
704
|
-
Set id for a Data Flow job.
|
705
|
-
|
706
|
-
Parameters
|
707
|
-
----------
|
708
|
-
id: str
|
709
|
-
id of a job
|
710
|
-
|
711
|
-
Returns
|
712
|
-
-------
|
713
|
-
DataFlow
|
714
|
-
the Data Flow instance itself
|
715
|
-
"""
|
716
|
-
return self.set_spec(self.CONST_ID, id)
|
717
|
-
|
718
|
-
def with_driver_shape_config(
|
719
|
-
self, memory_in_gbs: float, ocpus: float, **kwargs: Dict[str, Any]
|
720
|
-
) -> "DataFlow":
|
721
|
-
"""
|
722
|
-
Sets the driver shape config details of Data Flow job infrastructure.
|
723
|
-
Specify only when a flex shape is selected.
|
724
|
-
For example `VM.Standard.E3.Flex` allows the memory_in_gbs and cpu count to be specified.
|
725
|
-
|
726
|
-
Parameters
|
727
|
-
----------
|
728
|
-
memory_in_gbs: float
|
729
|
-
The size of the memory in GBs.
|
730
|
-
ocpus: float
|
731
|
-
The OCPUs count.
|
732
|
-
kwargs
|
733
|
-
Additional keyword arguments.
|
734
|
-
|
735
|
-
Returns
|
736
|
-
-------
|
737
|
-
DataFlow
|
738
|
-
the Data Flow instance itself.
|
739
|
-
"""
|
740
|
-
return self.set_spec(
|
741
|
-
self.CONST_DRIVER_SHAPE_CONFIG,
|
742
|
-
{
|
743
|
-
self.CONST_OCPUS: ocpus,
|
744
|
-
self.CONST_MEMORY_IN_GBS: memory_in_gbs,
|
745
|
-
**kwargs,
|
746
|
-
},
|
747
|
-
)
|
748
|
-
|
749
|
-
def with_executor_shape_config(
|
750
|
-
self, memory_in_gbs: float, ocpus: float, **kwargs: Dict[str, Any]
|
751
|
-
) -> "DataFlow":
|
752
|
-
"""
|
753
|
-
Sets the executor shape config details of Data Flow job infrastructure.
|
754
|
-
Specify only when a flex shape is selected.
|
755
|
-
For example `VM.Standard.E3.Flex` allows the memory_in_gbs and cpu count to be specified.
|
756
|
-
|
757
|
-
Parameters
|
758
|
-
----------
|
759
|
-
memory_in_gbs: float
|
760
|
-
The size of the memory in GBs.
|
761
|
-
ocpus: float
|
762
|
-
The OCPUs count.
|
763
|
-
kwargs
|
764
|
-
Additional keyword arguments.
|
765
|
-
|
766
|
-
Returns
|
767
|
-
-------
|
768
|
-
DataFlow
|
769
|
-
the Data Flow instance itself.
|
770
|
-
"""
|
771
|
-
return self.set_spec(
|
772
|
-
self.CONST_EXECUTOR_SHAPE_CONFIG,
|
773
|
-
{
|
774
|
-
self.CONST_OCPUS: ocpus,
|
775
|
-
self.CONST_MEMORY_IN_GBS: memory_in_gbs,
|
776
|
-
**kwargs,
|
777
|
-
},
|
778
|
-
)
|
779
|
-
|
780
|
-
def with_private_endpoint_id(self, private_endpoint_id: str) -> "DataFlow":
|
781
|
-
"""
|
782
|
-
Set the private endpoint ID for a Data Flow job infrastructure.
|
783
|
-
|
784
|
-
Parameters
|
785
|
-
----------
|
786
|
-
private_endpoint_id: str
|
787
|
-
The OCID of a private endpoint.
|
788
|
-
|
789
|
-
Returns
|
790
|
-
-------
|
791
|
-
DataFlow
|
792
|
-
the Data Flow instance itself
|
793
|
-
"""
|
794
|
-
return self.set_spec(self.CONST_PRIVATE_ENDPOINT_ID, private_endpoint_id)
|
795
|
-
|
796
|
-
def with_freeform_tag(self, **kwargs) -> "DataFlow":
|
797
|
-
"""Sets freeform tags
|
798
|
-
|
799
|
-
Returns
|
800
|
-
-------
|
801
|
-
DataFlow
|
802
|
-
The DataFlow instance (self)
|
803
|
-
"""
|
804
|
-
return self.set_spec(self.CONST_FREEFORM_TAGS, kwargs)
|
805
|
-
|
806
|
-
def with_defined_tag(self, **kwargs) -> "DataFlow":
|
807
|
-
"""Sets defined tags
|
808
|
-
|
809
|
-
Returns
|
810
|
-
-------
|
811
|
-
DataFlow
|
812
|
-
The DataFlow instance (self)
|
813
|
-
"""
|
814
|
-
return self.set_spec(self.CONST_DEFINED_TAGS, kwargs)
|
815
|
-
|
816
|
-
def with_pool_id(self, pool_id: str) -> "DataFlow":
|
817
|
-
"""
|
818
|
-
Set the Data Flow Pool Id for a Data Flow job.
|
819
|
-
|
820
|
-
Parameters
|
821
|
-
----------
|
822
|
-
pool_id: str
|
823
|
-
The OCID of a Data Flow Pool.
|
824
|
-
|
825
|
-
Returns
|
826
|
-
-------
|
827
|
-
DataFlow
|
828
|
-
the Data Flow instance itself
|
829
|
-
"""
|
830
|
-
if not hasattr(CreateApplicationDetails, "pool_id"):
|
831
|
-
raise EnvironmentError(
|
832
|
-
"Data Flow Pool has not been supported in the current OCI SDK installed."
|
833
|
-
)
|
834
|
-
return self.set_spec(self.CONST_POOL_ID, pool_id)
|
835
|
-
|
836
|
-
def __getattr__(self, item):
|
837
|
-
if item == self.CONST_DEFINED_TAGS or item == self.CONST_FREEFORM_TAGS:
|
838
|
-
return self.get_spec(item)
|
839
|
-
elif (
|
840
|
-
f"with_{item}" in self.__dir__()
|
841
|
-
and item != "defined_tag"
|
842
|
-
and item != "freeform_tag"
|
843
|
-
):
|
844
|
-
return self.get_spec(item)
|
845
|
-
raise AttributeError(f"Attribute {item} not found.")
|
846
|
-
|
847
|
-
def create(self, runtime: DataFlowRuntime, **kwargs) -> "DataFlow":
|
848
|
-
"""
|
849
|
-
Create a Data Flow job given a runtime.
|
850
|
-
|
851
|
-
Parameters
|
852
|
-
----------
|
853
|
-
runtime
|
854
|
-
runtime to bind to the Data Flow job
|
855
|
-
kwargs
|
856
|
-
additional keyword arguments
|
857
|
-
|
858
|
-
Returns
|
859
|
-
-------
|
860
|
-
DataFlow
|
861
|
-
a Data Flow job instance
|
862
|
-
"""
|
863
|
-
if self.pool_id:
|
864
|
-
if not hasattr(CreateApplicationDetails, "pool_id"):
|
865
|
-
raise EnvironmentError(
|
866
|
-
"Data Flow Pool has not been supported in the current OCI SDK installed."
|
867
|
-
)
|
868
|
-
# Set default display_name if not specified - randomly generated easy to remember name
|
869
|
-
if not self.name:
|
870
|
-
self.name = utils.get_random_name_for_resource()
|
871
|
-
payload = copy.deepcopy(self._spec)
|
872
|
-
overwrite = kwargs.pop("overwrite", runtime.overwrite) or False
|
873
|
-
runtime.convert(overwrite=overwrite)
|
874
|
-
if not runtime.script_uri:
|
875
|
-
raise ValueError("script uri must be specified in runtime.")
|
876
|
-
if runtime.script_uri.split(":")[0] != "oci":
|
877
|
-
if runtime.script_bucket:
|
878
|
-
runtime.with_script_uri(
|
879
|
-
self._upload_file(
|
880
|
-
runtime.script_uri, runtime.script_bucket, overwrite
|
881
|
-
)
|
882
|
-
)
|
883
|
-
else:
|
884
|
-
raise ValueError(
|
885
|
-
"script bucket must be specified if script uri given is local."
|
886
|
-
)
|
887
|
-
if runtime.archive_uri and runtime.archive_uri.split(":")[0] != "oci":
|
888
|
-
if runtime.archive_bucket:
|
889
|
-
runtime.with_archive_uri(
|
890
|
-
self._upload_file(
|
891
|
-
runtime.archive_uri, runtime.archive_bucket, overwrite
|
892
|
-
)
|
893
|
-
)
|
894
|
-
else:
|
895
|
-
raise ValueError(
|
896
|
-
"archive bucket must be specified if archive uri given is local."
|
897
|
-
)
|
898
|
-
if runtime.conda:
|
899
|
-
conda_type = runtime.conda.get(runtime.CONST_CONDA_TYPE)
|
900
|
-
if conda_type == runtime.CONST_CONDA_TYPE_CUSTOM:
|
901
|
-
conda_uri = runtime.conda.get(runtime.CONST_CONDA_URI)
|
902
|
-
elif conda_type == runtime.CONST_CONDA_TYPE_SERVICE:
|
903
|
-
conda_slug = runtime.conda.get(runtime.CONST_CONDA_SLUG)
|
904
|
-
env_info = InferenceEnvInfo.from_slug(env_slug=conda_slug)
|
905
|
-
conda_uri = env_info.inference_env_path
|
906
|
-
# TODO: Re-visit if we can enable a global read policy
|
907
|
-
raise NotImplementedError(
|
908
|
-
"Service Conda Packs not yet supported. Please use a published pack."
|
909
|
-
)
|
910
|
-
else:
|
911
|
-
raise ValueError(f"Conda built type not understood: {conda_type}.")
|
912
|
-
runtime_config = runtime.configuration or dict()
|
913
|
-
runtime_config.update(conda_pack_name_to_dataflow_config(conda_uri))
|
914
|
-
runtime.with_configuration(runtime_config)
|
915
|
-
|
916
|
-
payload.update(
|
917
|
-
{
|
918
|
-
"display_name": self.name,
|
919
|
-
"file_uri": runtime.script_uri,
|
920
|
-
"freeform_tags": runtime.freeform_tags or self.freeform_tags,
|
921
|
-
"defined_tags": runtime.defined_tags or self.defined_tags,
|
922
|
-
"archive_uri": runtime.archive_uri,
|
923
|
-
"configuration": runtime.configuration,
|
924
|
-
}
|
925
|
-
)
|
926
|
-
if len(runtime.args) > 0:
|
927
|
-
payload["arguments"] = runtime.args
|
928
|
-
if not payload.get("compartment_id", None):
|
929
|
-
raise ValueError(
|
930
|
-
"Compartment id is required. Specify compartment id via 'with_compartment_id()'."
|
931
|
-
)
|
932
|
-
self._validate_shapes(payload)
|
933
|
-
payload.pop("id", None)
|
934
|
-
logger.debug(f"Creating a DataFlow Application with payload {payload}")
|
935
|
-
self.df_app = DataFlowApp(**payload).create()
|
936
|
-
self.with_id(self.df_app.id)
|
937
|
-
return self
|
938
|
-
|
939
|
-
@staticmethod
|
940
|
-
def _validate_shapes(payload: Dict):
|
941
|
-
if "executor_shape" not in payload:
|
942
|
-
payload["executor_shape"] = DEFAULT_SHAPE
|
943
|
-
if "driver_shape" not in payload:
|
944
|
-
payload["driver_shape"] = DEFAULT_SHAPE
|
945
|
-
executor_shape = payload["executor_shape"]
|
946
|
-
executor_shape_config = payload.get("executor_shape_config", {})
|
947
|
-
driver_shape = payload["driver_shape"]
|
948
|
-
driver_shape_config = payload.get("driver_shape_config", {})
|
949
|
-
same_shape_family = False
|
950
|
-
for shape in DATAFLOW_SHAPE_FAMILY:
|
951
|
-
if shape in executor_shape and shape in driver_shape:
|
952
|
-
same_shape_family = True
|
953
|
-
break
|
954
|
-
if not same_shape_family:
|
955
|
-
raise ValueError(
|
956
|
-
"`executor_shape` and `driver_shape` must be from the same shape family."
|
957
|
-
)
|
958
|
-
if (not executor_shape.endswith("Flex") and executor_shape_config) or (
|
959
|
-
not driver_shape.endswith("Flex") and driver_shape_config
|
960
|
-
):
|
961
|
-
raise ValueError(
|
962
|
-
"Shape config is not required for non flex shape from user end."
|
963
|
-
)
|
964
|
-
|
965
|
-
@staticmethod
|
966
|
-
def _upload_file(local_path, bucket, overwrite=False):
|
967
|
-
signer = default_signer()
|
968
|
-
os_client = OCIClientFactory(**signer).object_storage
|
969
|
-
namespace = os_client.get_namespace().data
|
970
|
-
parsed = urllib.parse.urlparse(bucket)
|
971
|
-
chunk_size = io.DEFAULT_BUFFER_SIZE
|
972
|
-
if parsed.scheme == "oci":
|
973
|
-
dst_path = os.path.join(bucket, os.path.basename(local_path))
|
974
|
-
else:
|
975
|
-
dst_path = f"oci://{bucket}@{namespace}/{os.path.basename(local_path)}"
|
976
|
-
logger.debug(f"Uploading {local_path} to {dst_path}")
|
977
|
-
with fsspec.open(dst_path, mode="wb", **signer) as fto:
|
978
|
-
file_system_clz = fsspec.get_filesystem_class(
|
979
|
-
urllib.parse.urlparse(local_path).scheme or "file"
|
980
|
-
)
|
981
|
-
file_size = file_system_clz().info(local_path)["size"]
|
982
|
-
|
983
|
-
if not overwrite:
|
984
|
-
remote_file_system_clz = fsspec.get_filesystem_class(
|
985
|
-
urllib.parse.urlparse(dst_path).scheme or "file"
|
986
|
-
)
|
987
|
-
remote_file_system = remote_file_system_clz(**default_signer())
|
988
|
-
if remote_file_system.exists(dst_path):
|
989
|
-
raise FileExistsError(
|
990
|
-
f"{dst_path} exists. Please use a new file name."
|
991
|
-
)
|
992
|
-
|
993
|
-
with fsspec.open(local_path, mode="rb", encoding=None) as fread:
|
994
|
-
with tqdm.wrapattr(
|
995
|
-
fread,
|
996
|
-
"read",
|
997
|
-
desc=f"Uploading file: {local_path} to {dst_path}",
|
998
|
-
total=file_size,
|
999
|
-
) as ffrom:
|
1000
|
-
while True:
|
1001
|
-
chunk = ffrom.read(chunk_size)
|
1002
|
-
if chunk:
|
1003
|
-
fto.write(chunk)
|
1004
|
-
else:
|
1005
|
-
break
|
1006
|
-
return dst_path
|
1007
|
-
|
1008
|
-
def run(
|
1009
|
-
self,
|
1010
|
-
name: str = None,
|
1011
|
-
args: List[str] = None,
|
1012
|
-
env_vars: Dict[str, str] = None,
|
1013
|
-
freeform_tags: Dict[str, str] = None,
|
1014
|
-
defined_tags: Dict[str, Dict[str, object]] = None,
|
1015
|
-
wait: bool = False,
|
1016
|
-
**kwargs,
|
1017
|
-
) -> DataFlowRun:
|
1018
|
-
"""
|
1019
|
-
Run a Data Flow job.
|
1020
|
-
|
1021
|
-
Parameters
|
1022
|
-
----------
|
1023
|
-
name: str, optional
|
1024
|
-
name of the run. If a name is not provided, a randomly generated easy to remember name
|
1025
|
-
with timestamp will be generated, like 'strange-spider-2022-08-17-23:55.02'.
|
1026
|
-
args: List[str], optional
|
1027
|
-
list of command line arguments
|
1028
|
-
env_vars: Dict[str, str], optional
|
1029
|
-
dictionary of environment variables (not used for data flow)
|
1030
|
-
freeform_tags: Dict[str, str], optional
|
1031
|
-
freeform tags
|
1032
|
-
defined_tags: Dict[str, Dict[str, object]], optional
|
1033
|
-
defined tags
|
1034
|
-
wait: bool, optional
|
1035
|
-
whether to wait for a run to terminate
|
1036
|
-
kwargs
|
1037
|
-
additional keyword arguments
|
1038
|
-
|
1039
|
-
Returns
|
1040
|
-
-------
|
1041
|
-
DataFlowRun
|
1042
|
-
a DataFlowRun instance
|
1043
|
-
"""
|
1044
|
-
payload = kwargs
|
1045
|
-
if "application_id" not in payload:
|
1046
|
-
payload["application_id"] = self.id
|
1047
|
-
if "compartment_id" not in payload:
|
1048
|
-
payload["compartment_id"] = self.get_spec("compartment_id")
|
1049
|
-
# Set default display_name if not specified - randomly generated easy to remember name generated
|
1050
|
-
payload["display_name"] = name if name else utils.get_random_name_for_resource()
|
1051
|
-
payload["arguments"] = args if args and len(args) > 0 else None
|
1052
|
-
payload["freeform_tags"] = freeform_tags or self.freeform_tags
|
1053
|
-
payload["defined_tags"] = defined_tags or self.defined_tags
|
1054
|
-
payload.pop("spark_version", None)
|
1055
|
-
logger.debug(f"Creating a DataFlow Run with payload {payload}")
|
1056
|
-
run = DataFlowRun(**payload).create()
|
1057
|
-
if wait:
|
1058
|
-
run.wait(kwargs.pop("interval", SLEEP_INTERVAL))
|
1059
|
-
return run
|
1060
|
-
|
1061
|
-
def run_list(self, **kwargs) -> List[DataFlowRun]:
|
1062
|
-
"""
|
1063
|
-
List runs associated with a Data Flow job.
|
1064
|
-
|
1065
|
-
Parameters
|
1066
|
-
----------
|
1067
|
-
kwargs
|
1068
|
-
additional arguments for filtering runs.
|
1069
|
-
|
1070
|
-
Returns
|
1071
|
-
-------
|
1072
|
-
List[DataFlowRun]
|
1073
|
-
list of DataFlowRun instances
|
1074
|
-
"""
|
1075
|
-
items = oci.pagination.list_call_get_all_results(
|
1076
|
-
self.df_app.client.list_runs,
|
1077
|
-
self.compartment_id,
|
1078
|
-
application_id=self.id,
|
1079
|
-
**kwargs,
|
1080
|
-
).data
|
1081
|
-
return [DataFlowRun.from_oci_model(item) for item in items]
|
1082
|
-
|
1083
|
-
def delete(self):
|
1084
|
-
"""
|
1085
|
-
Delete a Data Flow job and canceling associated runs.
|
1086
|
-
|
1087
|
-
Returns
|
1088
|
-
-------
|
1089
|
-
None
|
1090
|
-
"""
|
1091
|
-
runs = self.run_list()
|
1092
|
-
for run in runs:
|
1093
|
-
run.delete()
|
1094
|
-
self.df_app.delete()
|
1095
|
-
|
1096
|
-
@classmethod
|
1097
|
-
def from_id(cls, id: str) -> "DataFlow":
|
1098
|
-
"""
|
1099
|
-
Load a Data Flow job given an id.
|
1100
|
-
|
1101
|
-
Parameters
|
1102
|
-
----------
|
1103
|
-
id: str
|
1104
|
-
id of the Data Flow job to load
|
1105
|
-
|
1106
|
-
Returns
|
1107
|
-
-------
|
1108
|
-
DataFlow
|
1109
|
-
a Data Flow job instance
|
1110
|
-
"""
|
1111
|
-
payload = batch_convert_case(
|
1112
|
-
yaml.safe_load(repr(DataFlowApp.from_ocid(id))), "snake"
|
1113
|
-
)
|
1114
|
-
config = normalize_config(payload)
|
1115
|
-
name = config.pop("display_name")
|
1116
|
-
ins = cls(config)
|
1117
|
-
rt = DataFlowRuntime()
|
1118
|
-
for k, v in config.items():
|
1119
|
-
if hasattr(DataFlowRuntime, f"with_{k}"):
|
1120
|
-
getattr(rt, f"with_{k}")(v)
|
1121
|
-
ins.runtime = rt
|
1122
|
-
ins.name = name
|
1123
|
-
return ins
|
1124
|
-
|
1125
|
-
@classmethod
|
1126
|
-
def list_jobs(cls, compartment_id: str = None, **kwargs) -> List["DataFlow"]:
|
1127
|
-
"""
|
1128
|
-
List Data Flow jobs in a given compartment.
|
1129
|
-
|
1130
|
-
Parameters
|
1131
|
-
----------
|
1132
|
-
compartment_id: str
|
1133
|
-
id of that compartment
|
1134
|
-
kwargs
|
1135
|
-
additional keyword arguments for filtering jobs
|
1136
|
-
|
1137
|
-
Returns
|
1138
|
-
-------
|
1139
|
-
List[DataFlow]
|
1140
|
-
list of Data Flow jobs
|
1141
|
-
"""
|
1142
|
-
return [
|
1143
|
-
cls.from_id(job.id)
|
1144
|
-
for job in DataFlowApp.list_resource(compartment_id, **kwargs)
|
1145
|
-
]
|
1146
|
-
|
1147
|
-
def to_dict(self, **kwargs) -> dict:
|
1148
|
-
"""
|
1149
|
-
Serialize job to a dictionary.
|
1150
|
-
|
1151
|
-
Returns
|
1152
|
-
-------
|
1153
|
-
dict
|
1154
|
-
serialized job as a dictionary
|
1155
|
-
"""
|
1156
|
-
spec = self._convert_shape_config(copy.deepcopy(self._spec), "camel")
|
1157
|
-
return {
|
1158
|
-
"kind": self.kind,
|
1159
|
-
"type": self.type,
|
1160
|
-
"spec": batch_convert_case(spec, "camel"),
|
1161
|
-
}
|
1162
|
-
|
1163
|
-
@classmethod
|
1164
|
-
def from_dict(cls, config: dict) -> "DataFlow":
|
1165
|
-
"""
|
1166
|
-
Load a Data Flow job instance from a dictionary of configurations.
|
1167
|
-
|
1168
|
-
Parameters
|
1169
|
-
----------
|
1170
|
-
config: dict
|
1171
|
-
dictionary of configurations
|
1172
|
-
|
1173
|
-
Returns
|
1174
|
-
-------
|
1175
|
-
DataFlow
|
1176
|
-
a Data Flow job instance
|
1177
|
-
"""
|
1178
|
-
spec = cls._convert_shape_config(copy.deepcopy(config["spec"]), "snake")
|
1179
|
-
return cls(spec=batch_convert_case(spec, "snake"))
|
1180
|
-
|
1181
|
-
@class_or_instance_method
|
1182
|
-
def _convert_shape_config(cls, spec: Dict, to_format: str) -> Dict:
|
1183
|
-
"""Converts the format of shape config details from camel to snake, or vice versa.
|
1184
|
-
|
1185
|
-
Parameters
|
1186
|
-
----------
|
1187
|
-
spec: dict
|
1188
|
-
dictionary of specs
|
1189
|
-
to_format: str
|
1190
|
-
the format that's converted to
|
1191
|
-
|
1192
|
-
Returns
|
1193
|
-
-------
|
1194
|
-
Dict
|
1195
|
-
dictionary with converted shape config details
|
1196
|
-
"""
|
1197
|
-
shape_config_map = [
|
1198
|
-
cls.CONST_DRIVER_SHAPE_CONFIG,
|
1199
|
-
cls.CONST_EXECUTOR_SHAPE_CONFIG,
|
1200
|
-
cls.attribute_map[cls.CONST_DRIVER_SHAPE_CONFIG],
|
1201
|
-
cls.attribute_map[cls.CONST_EXECUTOR_SHAPE_CONFIG],
|
1202
|
-
]
|
1203
|
-
converted_map = {
|
1204
|
-
"camel": {
|
1205
|
-
cls.CONST_MEMORY_IN_GBS: cls.attribute_map[cls.CONST_MEMORY_IN_GBS],
|
1206
|
-
cls.CONST_OCPUS: cls.CONST_OCPUS,
|
1207
|
-
},
|
1208
|
-
"snake": {
|
1209
|
-
cls.attribute_map[cls.CONST_MEMORY_IN_GBS]: cls.CONST_MEMORY_IN_GBS,
|
1210
|
-
cls.CONST_OCPUS: cls.CONST_OCPUS,
|
1211
|
-
},
|
1212
|
-
}
|
1213
|
-
for shape_config in shape_config_map:
|
1214
|
-
shape_config_value = spec.pop(shape_config, {})
|
1215
|
-
if shape_config_value:
|
1216
|
-
temp_maps = {}
|
1217
|
-
for key, value in shape_config_value.items():
|
1218
|
-
converted_key = converted_map[to_format].get(key, None)
|
1219
|
-
if converted_key:
|
1220
|
-
temp_maps[converted_key] = value
|
1221
|
-
else:
|
1222
|
-
temp_maps[key] = value
|
1223
|
-
spec[shape_config] = copy.deepcopy(temp_maps)
|
1224
|
-
return spec
|
1225
|
-
|
1226
|
-
def to_yaml(self, **kwargs) -> str:
|
1227
|
-
"""Serializes the object into YAML string.
|
1228
|
-
|
1229
|
-
Returns
|
1230
|
-
-------
|
1231
|
-
str
|
1232
|
-
YAML stored in a string.
|
1233
|
-
"""
|
1234
|
-
return yaml.safe_dump(self.to_dict(**kwargs))
|
1235
|
-
|
1236
|
-
def init(self, **kwargs) -> "DataFlow":
|
1237
|
-
"""Initializes a starter specification for the DataFlow.
|
1238
|
-
|
1239
|
-
Returns
|
1240
|
-
-------
|
1241
|
-
DataFlow
|
1242
|
-
The DataFlow instance (self)
|
1243
|
-
"""
|
1244
|
-
return (
|
1245
|
-
self.build()
|
1246
|
-
.with_compartment_id(self.compartment_id or "{Provide a compartment OCID}")
|
1247
|
-
.with_language(self.language or DEFAULT_LANGUAGE)
|
1248
|
-
.with_spark_version(self.spark_version or DEFAULT_SPARK_VERSION)
|
1249
|
-
.with_num_executors(self.num_executors or DEFAULT_NUM_EXECUTORS)
|
1250
|
-
.with_driver_shape(self.driver_shape or DEFAULT_SHAPE)
|
1251
|
-
.with_executor_shape(self.executor_shape or DEFAULT_SHAPE)
|
1252
|
-
)
|