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.
Files changed (857) hide show
  1. {oracle_ads-2.13.7.dist-info → oracle_ads-2.13.9rc0.dist-info}/METADATA +151 -151
  2. oracle_ads-2.13.9rc0.dist-info/RECORD +9 -0
  3. {oracle_ads-2.13.7.dist-info → oracle_ads-2.13.9rc0.dist-info}/WHEEL +2 -1
  4. {oracle_ads-2.13.7.dist-info → oracle_ads-2.13.9rc0.dist-info}/entry_points.txt +1 -2
  5. oracle_ads-2.13.9rc0.dist-info/top_level.txt +1 -0
  6. ads/aqua/__init__.py +0 -40
  7. ads/aqua/app.py +0 -506
  8. ads/aqua/cli.py +0 -96
  9. ads/aqua/client/__init__.py +0 -3
  10. ads/aqua/client/client.py +0 -836
  11. ads/aqua/client/openai_client.py +0 -305
  12. ads/aqua/common/__init__.py +0 -5
  13. ads/aqua/common/decorator.py +0 -125
  14. ads/aqua/common/entities.py +0 -266
  15. ads/aqua/common/enums.py +0 -122
  16. ads/aqua/common/errors.py +0 -109
  17. ads/aqua/common/utils.py +0 -1285
  18. ads/aqua/config/__init__.py +0 -4
  19. ads/aqua/config/container_config.py +0 -248
  20. ads/aqua/config/evaluation/__init__.py +0 -4
  21. ads/aqua/config/evaluation/evaluation_service_config.py +0 -147
  22. ads/aqua/config/utils/__init__.py +0 -4
  23. ads/aqua/config/utils/serializer.py +0 -339
  24. ads/aqua/constants.py +0 -114
  25. ads/aqua/data.py +0 -14
  26. ads/aqua/dummy_data/icon.txt +0 -1
  27. ads/aqua/dummy_data/oci_model_deployments.json +0 -56
  28. ads/aqua/dummy_data/oci_models.json +0 -1
  29. ads/aqua/dummy_data/readme.md +0 -26
  30. ads/aqua/evaluation/__init__.py +0 -8
  31. ads/aqua/evaluation/constants.py +0 -53
  32. ads/aqua/evaluation/entities.py +0 -186
  33. ads/aqua/evaluation/errors.py +0 -70
  34. ads/aqua/evaluation/evaluation.py +0 -1814
  35. ads/aqua/extension/__init__.py +0 -42
  36. ads/aqua/extension/aqua_ws_msg_handler.py +0 -76
  37. ads/aqua/extension/base_handler.py +0 -90
  38. ads/aqua/extension/common_handler.py +0 -121
  39. ads/aqua/extension/common_ws_msg_handler.py +0 -36
  40. ads/aqua/extension/deployment_handler.py +0 -298
  41. ads/aqua/extension/deployment_ws_msg_handler.py +0 -54
  42. ads/aqua/extension/errors.py +0 -30
  43. ads/aqua/extension/evaluation_handler.py +0 -129
  44. ads/aqua/extension/evaluation_ws_msg_handler.py +0 -61
  45. ads/aqua/extension/finetune_handler.py +0 -96
  46. ads/aqua/extension/model_handler.py +0 -390
  47. ads/aqua/extension/models/__init__.py +0 -0
  48. ads/aqua/extension/models/ws_models.py +0 -145
  49. ads/aqua/extension/models_ws_msg_handler.py +0 -50
  50. ads/aqua/extension/ui_handler.py +0 -282
  51. ads/aqua/extension/ui_websocket_handler.py +0 -130
  52. ads/aqua/extension/utils.py +0 -133
  53. ads/aqua/finetuning/__init__.py +0 -7
  54. ads/aqua/finetuning/constants.py +0 -23
  55. ads/aqua/finetuning/entities.py +0 -181
  56. ads/aqua/finetuning/finetuning.py +0 -731
  57. ads/aqua/model/__init__.py +0 -8
  58. ads/aqua/model/constants.py +0 -60
  59. ads/aqua/model/entities.py +0 -306
  60. ads/aqua/model/enums.py +0 -30
  61. ads/aqua/model/model.py +0 -2079
  62. ads/aqua/modeldeployment/__init__.py +0 -8
  63. ads/aqua/modeldeployment/constants.py +0 -10
  64. ads/aqua/modeldeployment/deployment.py +0 -1324
  65. ads/aqua/modeldeployment/entities.py +0 -653
  66. ads/aqua/modeldeployment/inference.py +0 -74
  67. ads/aqua/modeldeployment/utils.py +0 -543
  68. ads/aqua/resources/gpu_shapes_index.json +0 -94
  69. ads/aqua/server/__init__.py +0 -4
  70. ads/aqua/server/__main__.py +0 -24
  71. ads/aqua/server/app.py +0 -47
  72. ads/aqua/server/aqua_spec.yml +0 -1291
  73. ads/aqua/training/__init__.py +0 -4
  74. ads/aqua/training/exceptions.py +0 -476
  75. ads/aqua/ui.py +0 -499
  76. ads/automl/__init__.py +0 -9
  77. ads/automl/driver.py +0 -330
  78. ads/automl/provider.py +0 -975
  79. ads/bds/__init__.py +0 -5
  80. ads/bds/auth.py +0 -127
  81. ads/bds/big_data_service.py +0 -255
  82. ads/catalog/__init__.py +0 -19
  83. ads/catalog/model.py +0 -1576
  84. ads/catalog/notebook.py +0 -461
  85. ads/catalog/project.py +0 -468
  86. ads/catalog/summary.py +0 -178
  87. ads/common/__init__.py +0 -11
  88. ads/common/analyzer.py +0 -65
  89. ads/common/artifact/.model-ignore +0 -63
  90. ads/common/artifact/__init__.py +0 -10
  91. ads/common/auth.py +0 -1122
  92. ads/common/card_identifier.py +0 -83
  93. ads/common/config.py +0 -647
  94. ads/common/data.py +0 -165
  95. ads/common/decorator/__init__.py +0 -9
  96. ads/common/decorator/argument_to_case.py +0 -88
  97. ads/common/decorator/deprecate.py +0 -69
  98. ads/common/decorator/require_nonempty_arg.py +0 -65
  99. ads/common/decorator/runtime_dependency.py +0 -178
  100. ads/common/decorator/threaded.py +0 -97
  101. ads/common/decorator/utils.py +0 -35
  102. ads/common/dsc_file_system.py +0 -303
  103. ads/common/error.py +0 -14
  104. ads/common/extended_enum.py +0 -81
  105. ads/common/function/__init__.py +0 -5
  106. ads/common/function/fn_util.py +0 -142
  107. ads/common/function/func_conf.yaml +0 -25
  108. ads/common/ipython.py +0 -76
  109. ads/common/model.py +0 -679
  110. ads/common/model_artifact.py +0 -1759
  111. ads/common/model_artifact_schema.json +0 -107
  112. ads/common/model_export_util.py +0 -664
  113. ads/common/model_metadata.py +0 -24
  114. ads/common/object_storage_details.py +0 -296
  115. ads/common/oci_client.py +0 -175
  116. ads/common/oci_datascience.py +0 -46
  117. ads/common/oci_logging.py +0 -1144
  118. ads/common/oci_mixin.py +0 -957
  119. ads/common/oci_resource.py +0 -136
  120. ads/common/serializer.py +0 -559
  121. ads/common/utils.py +0 -1852
  122. ads/common/word_lists.py +0 -1491
  123. ads/common/work_request.py +0 -189
  124. ads/data_labeling/__init__.py +0 -13
  125. ads/data_labeling/boundingbox.py +0 -253
  126. ads/data_labeling/constants.py +0 -47
  127. ads/data_labeling/data_labeling_service.py +0 -244
  128. ads/data_labeling/interface/__init__.py +0 -5
  129. ads/data_labeling/interface/loader.py +0 -16
  130. ads/data_labeling/interface/parser.py +0 -16
  131. ads/data_labeling/interface/reader.py +0 -23
  132. ads/data_labeling/loader/__init__.py +0 -5
  133. ads/data_labeling/loader/file_loader.py +0 -241
  134. ads/data_labeling/metadata.py +0 -110
  135. ads/data_labeling/mixin/__init__.py +0 -5
  136. ads/data_labeling/mixin/data_labeling.py +0 -232
  137. ads/data_labeling/ner.py +0 -129
  138. ads/data_labeling/parser/__init__.py +0 -5
  139. ads/data_labeling/parser/dls_record_parser.py +0 -388
  140. ads/data_labeling/parser/export_metadata_parser.py +0 -94
  141. ads/data_labeling/parser/export_record_parser.py +0 -473
  142. ads/data_labeling/reader/__init__.py +0 -5
  143. ads/data_labeling/reader/dataset_reader.py +0 -574
  144. ads/data_labeling/reader/dls_record_reader.py +0 -121
  145. ads/data_labeling/reader/export_record_reader.py +0 -62
  146. ads/data_labeling/reader/jsonl_reader.py +0 -75
  147. ads/data_labeling/reader/metadata_reader.py +0 -203
  148. ads/data_labeling/reader/record_reader.py +0 -263
  149. ads/data_labeling/record.py +0 -52
  150. ads/data_labeling/visualizer/__init__.py +0 -5
  151. ads/data_labeling/visualizer/image_visualizer.py +0 -525
  152. ads/data_labeling/visualizer/text_visualizer.py +0 -357
  153. ads/database/__init__.py +0 -5
  154. ads/database/connection.py +0 -338
  155. ads/dataset/__init__.py +0 -10
  156. ads/dataset/capabilities.md +0 -51
  157. ads/dataset/classification_dataset.py +0 -339
  158. ads/dataset/correlation.py +0 -226
  159. ads/dataset/correlation_plot.py +0 -563
  160. ads/dataset/dask_series.py +0 -173
  161. ads/dataset/dataframe_transformer.py +0 -110
  162. ads/dataset/dataset.py +0 -1979
  163. ads/dataset/dataset_browser.py +0 -360
  164. ads/dataset/dataset_with_target.py +0 -995
  165. ads/dataset/exception.py +0 -25
  166. ads/dataset/factory.py +0 -987
  167. ads/dataset/feature_engineering_transformer.py +0 -35
  168. ads/dataset/feature_selection.py +0 -107
  169. ads/dataset/forecasting_dataset.py +0 -26
  170. ads/dataset/helper.py +0 -1450
  171. ads/dataset/label_encoder.py +0 -99
  172. ads/dataset/mixin/__init__.py +0 -5
  173. ads/dataset/mixin/dataset_accessor.py +0 -134
  174. ads/dataset/pipeline.py +0 -58
  175. ads/dataset/plot.py +0 -710
  176. ads/dataset/progress.py +0 -86
  177. ads/dataset/recommendation.py +0 -297
  178. ads/dataset/recommendation_transformer.py +0 -502
  179. ads/dataset/regression_dataset.py +0 -14
  180. ads/dataset/sampled_dataset.py +0 -1050
  181. ads/dataset/target.py +0 -98
  182. ads/dataset/timeseries.py +0 -18
  183. ads/dbmixin/__init__.py +0 -5
  184. ads/dbmixin/db_pandas_accessor.py +0 -153
  185. ads/environment/__init__.py +0 -9
  186. ads/environment/ml_runtime.py +0 -66
  187. ads/evaluations/README.md +0 -14
  188. ads/evaluations/__init__.py +0 -109
  189. ads/evaluations/evaluation_plot.py +0 -983
  190. ads/evaluations/evaluator.py +0 -1334
  191. ads/evaluations/statistical_metrics.py +0 -543
  192. ads/experiments/__init__.py +0 -9
  193. ads/experiments/capabilities.md +0 -0
  194. ads/explanations/__init__.py +0 -21
  195. ads/explanations/base_explainer.py +0 -142
  196. ads/explanations/capabilities.md +0 -83
  197. ads/explanations/explainer.py +0 -190
  198. ads/explanations/mlx_global_explainer.py +0 -1050
  199. ads/explanations/mlx_interface.py +0 -386
  200. ads/explanations/mlx_local_explainer.py +0 -287
  201. ads/explanations/mlx_whatif_explainer.py +0 -201
  202. ads/feature_engineering/__init__.py +0 -20
  203. ads/feature_engineering/accessor/__init__.py +0 -5
  204. ads/feature_engineering/accessor/dataframe_accessor.py +0 -535
  205. ads/feature_engineering/accessor/mixin/__init__.py +0 -5
  206. ads/feature_engineering/accessor/mixin/correlation.py +0 -166
  207. ads/feature_engineering/accessor/mixin/eda_mixin.py +0 -266
  208. ads/feature_engineering/accessor/mixin/eda_mixin_series.py +0 -85
  209. ads/feature_engineering/accessor/mixin/feature_types_mixin.py +0 -211
  210. ads/feature_engineering/accessor/mixin/utils.py +0 -65
  211. ads/feature_engineering/accessor/series_accessor.py +0 -431
  212. ads/feature_engineering/adsimage/__init__.py +0 -5
  213. ads/feature_engineering/adsimage/image.py +0 -192
  214. ads/feature_engineering/adsimage/image_reader.py +0 -170
  215. ads/feature_engineering/adsimage/interface/__init__.py +0 -5
  216. ads/feature_engineering/adsimage/interface/reader.py +0 -19
  217. ads/feature_engineering/adsstring/__init__.py +0 -7
  218. ads/feature_engineering/adsstring/oci_language/__init__.py +0 -8
  219. ads/feature_engineering/adsstring/string/__init__.py +0 -8
  220. ads/feature_engineering/data_schema.json +0 -57
  221. ads/feature_engineering/dataset/__init__.py +0 -5
  222. ads/feature_engineering/dataset/zip_code_data.py +0 -42062
  223. ads/feature_engineering/exceptions.py +0 -40
  224. ads/feature_engineering/feature_type/__init__.py +0 -133
  225. ads/feature_engineering/feature_type/address.py +0 -184
  226. ads/feature_engineering/feature_type/adsstring/__init__.py +0 -5
  227. ads/feature_engineering/feature_type/adsstring/common_regex_mixin.py +0 -164
  228. ads/feature_engineering/feature_type/adsstring/oci_language.py +0 -93
  229. ads/feature_engineering/feature_type/adsstring/parsers/__init__.py +0 -5
  230. ads/feature_engineering/feature_type/adsstring/parsers/base.py +0 -47
  231. ads/feature_engineering/feature_type/adsstring/parsers/nltk_parser.py +0 -96
  232. ads/feature_engineering/feature_type/adsstring/parsers/spacy_parser.py +0 -221
  233. ads/feature_engineering/feature_type/adsstring/string.py +0 -258
  234. ads/feature_engineering/feature_type/base.py +0 -58
  235. ads/feature_engineering/feature_type/boolean.py +0 -183
  236. ads/feature_engineering/feature_type/category.py +0 -146
  237. ads/feature_engineering/feature_type/constant.py +0 -137
  238. ads/feature_engineering/feature_type/continuous.py +0 -151
  239. ads/feature_engineering/feature_type/creditcard.py +0 -314
  240. ads/feature_engineering/feature_type/datetime.py +0 -190
  241. ads/feature_engineering/feature_type/discrete.py +0 -134
  242. ads/feature_engineering/feature_type/document.py +0 -43
  243. ads/feature_engineering/feature_type/gis.py +0 -251
  244. ads/feature_engineering/feature_type/handler/__init__.py +0 -5
  245. ads/feature_engineering/feature_type/handler/feature_validator.py +0 -524
  246. ads/feature_engineering/feature_type/handler/feature_warning.py +0 -319
  247. ads/feature_engineering/feature_type/handler/warnings.py +0 -128
  248. ads/feature_engineering/feature_type/integer.py +0 -142
  249. ads/feature_engineering/feature_type/ip_address.py +0 -144
  250. ads/feature_engineering/feature_type/ip_address_v4.py +0 -138
  251. ads/feature_engineering/feature_type/ip_address_v6.py +0 -138
  252. ads/feature_engineering/feature_type/lat_long.py +0 -256
  253. ads/feature_engineering/feature_type/object.py +0 -43
  254. ads/feature_engineering/feature_type/ordinal.py +0 -132
  255. ads/feature_engineering/feature_type/phone_number.py +0 -135
  256. ads/feature_engineering/feature_type/string.py +0 -171
  257. ads/feature_engineering/feature_type/text.py +0 -93
  258. ads/feature_engineering/feature_type/unknown.py +0 -43
  259. ads/feature_engineering/feature_type/zip_code.py +0 -164
  260. ads/feature_engineering/feature_type_manager.py +0 -406
  261. ads/feature_engineering/schema.py +0 -795
  262. ads/feature_engineering/utils.py +0 -245
  263. ads/feature_store/.readthedocs.yaml +0 -19
  264. ads/feature_store/README.md +0 -65
  265. ads/feature_store/__init__.py +0 -9
  266. ads/feature_store/common/__init__.py +0 -0
  267. ads/feature_store/common/enums.py +0 -339
  268. ads/feature_store/common/exceptions.py +0 -18
  269. ads/feature_store/common/spark_session_singleton.py +0 -125
  270. ads/feature_store/common/utils/__init__.py +0 -0
  271. ads/feature_store/common/utils/base64_encoder_decoder.py +0 -72
  272. ads/feature_store/common/utils/feature_schema_mapper.py +0 -283
  273. ads/feature_store/common/utils/transformation_utils.py +0 -82
  274. ads/feature_store/common/utils/utility.py +0 -403
  275. ads/feature_store/data_validation/__init__.py +0 -0
  276. ads/feature_store/data_validation/great_expectation.py +0 -129
  277. ads/feature_store/dataset.py +0 -1230
  278. ads/feature_store/dataset_job.py +0 -530
  279. ads/feature_store/docs/Dockerfile +0 -7
  280. ads/feature_store/docs/Makefile +0 -44
  281. ads/feature_store/docs/conf.py +0 -28
  282. ads/feature_store/docs/requirements.txt +0 -14
  283. ads/feature_store/docs/source/ads.feature_store.query.rst +0 -20
  284. ads/feature_store/docs/source/cicd.rst +0 -137
  285. ads/feature_store/docs/source/conf.py +0 -86
  286. ads/feature_store/docs/source/data_versioning.rst +0 -33
  287. ads/feature_store/docs/source/dataset.rst +0 -388
  288. ads/feature_store/docs/source/dataset_job.rst +0 -27
  289. ads/feature_store/docs/source/demo.rst +0 -70
  290. ads/feature_store/docs/source/entity.rst +0 -78
  291. ads/feature_store/docs/source/feature_group.rst +0 -624
  292. ads/feature_store/docs/source/feature_group_job.rst +0 -29
  293. ads/feature_store/docs/source/feature_store.rst +0 -122
  294. ads/feature_store/docs/source/feature_store_class.rst +0 -123
  295. ads/feature_store/docs/source/feature_validation.rst +0 -66
  296. ads/feature_store/docs/source/figures/cicd.png +0 -0
  297. ads/feature_store/docs/source/figures/data_validation.png +0 -0
  298. ads/feature_store/docs/source/figures/data_versioning.png +0 -0
  299. ads/feature_store/docs/source/figures/dataset.gif +0 -0
  300. ads/feature_store/docs/source/figures/dataset.png +0 -0
  301. ads/feature_store/docs/source/figures/dataset_lineage.png +0 -0
  302. ads/feature_store/docs/source/figures/dataset_statistics.png +0 -0
  303. ads/feature_store/docs/source/figures/dataset_statistics_viz.png +0 -0
  304. ads/feature_store/docs/source/figures/dataset_validation_results.png +0 -0
  305. ads/feature_store/docs/source/figures/dataset_validation_summary.png +0 -0
  306. ads/feature_store/docs/source/figures/drift_monitoring.png +0 -0
  307. ads/feature_store/docs/source/figures/entity.png +0 -0
  308. ads/feature_store/docs/source/figures/feature_group.png +0 -0
  309. ads/feature_store/docs/source/figures/feature_group_lineage.png +0 -0
  310. ads/feature_store/docs/source/figures/feature_group_statistics_viz.png +0 -0
  311. ads/feature_store/docs/source/figures/feature_store_deployment.png +0 -0
  312. ads/feature_store/docs/source/figures/feature_store_overview.png +0 -0
  313. ads/feature_store/docs/source/figures/featuregroup.gif +0 -0
  314. ads/feature_store/docs/source/figures/lineage_d1.png +0 -0
  315. ads/feature_store/docs/source/figures/lineage_d2.png +0 -0
  316. ads/feature_store/docs/source/figures/lineage_fg.png +0 -0
  317. ads/feature_store/docs/source/figures/logo-dark-mode.png +0 -0
  318. ads/feature_store/docs/source/figures/logo-light-mode.png +0 -0
  319. ads/feature_store/docs/source/figures/overview.png +0 -0
  320. ads/feature_store/docs/source/figures/resource_manager.png +0 -0
  321. ads/feature_store/docs/source/figures/resource_manager_feature_store_stack.png +0 -0
  322. ads/feature_store/docs/source/figures/resource_manager_home.png +0 -0
  323. ads/feature_store/docs/source/figures/stats_1.png +0 -0
  324. ads/feature_store/docs/source/figures/stats_2.png +0 -0
  325. ads/feature_store/docs/source/figures/stats_d.png +0 -0
  326. ads/feature_store/docs/source/figures/stats_fg.png +0 -0
  327. ads/feature_store/docs/source/figures/transformation.png +0 -0
  328. ads/feature_store/docs/source/figures/transformations.gif +0 -0
  329. ads/feature_store/docs/source/figures/validation.png +0 -0
  330. ads/feature_store/docs/source/figures/validation_fg.png +0 -0
  331. ads/feature_store/docs/source/figures/validation_results.png +0 -0
  332. ads/feature_store/docs/source/figures/validation_summary.png +0 -0
  333. ads/feature_store/docs/source/index.rst +0 -81
  334. ads/feature_store/docs/source/module.rst +0 -8
  335. ads/feature_store/docs/source/notebook.rst +0 -94
  336. ads/feature_store/docs/source/overview.rst +0 -47
  337. ads/feature_store/docs/source/quickstart.rst +0 -176
  338. ads/feature_store/docs/source/release_notes.rst +0 -194
  339. ads/feature_store/docs/source/setup_feature_store.rst +0 -81
  340. ads/feature_store/docs/source/statistics.rst +0 -58
  341. ads/feature_store/docs/source/transformation.rst +0 -199
  342. ads/feature_store/docs/source/ui.rst +0 -65
  343. ads/feature_store/docs/source/user_guides.setup.feature_store_operator.rst +0 -66
  344. ads/feature_store/docs/source/user_guides.setup.helm_chart.rst +0 -192
  345. ads/feature_store/docs/source/user_guides.setup.terraform.rst +0 -338
  346. ads/feature_store/entity.py +0 -718
  347. ads/feature_store/execution_strategy/__init__.py +0 -0
  348. ads/feature_store/execution_strategy/delta_lake/__init__.py +0 -0
  349. ads/feature_store/execution_strategy/delta_lake/delta_lake_service.py +0 -375
  350. ads/feature_store/execution_strategy/engine/__init__.py +0 -0
  351. ads/feature_store/execution_strategy/engine/spark_engine.py +0 -316
  352. ads/feature_store/execution_strategy/execution_strategy.py +0 -113
  353. ads/feature_store/execution_strategy/execution_strategy_provider.py +0 -47
  354. ads/feature_store/execution_strategy/spark/__init__.py +0 -0
  355. ads/feature_store/execution_strategy/spark/spark_execution.py +0 -618
  356. ads/feature_store/feature.py +0 -192
  357. ads/feature_store/feature_group.py +0 -1494
  358. ads/feature_store/feature_group_expectation.py +0 -346
  359. ads/feature_store/feature_group_job.py +0 -602
  360. ads/feature_store/feature_lineage/__init__.py +0 -0
  361. ads/feature_store/feature_lineage/graphviz_service.py +0 -180
  362. ads/feature_store/feature_option_details.py +0 -50
  363. ads/feature_store/feature_statistics/__init__.py +0 -0
  364. ads/feature_store/feature_statistics/statistics_service.py +0 -99
  365. ads/feature_store/feature_store.py +0 -699
  366. ads/feature_store/feature_store_registrar.py +0 -518
  367. ads/feature_store/input_feature_detail.py +0 -149
  368. ads/feature_store/mixin/__init__.py +0 -4
  369. ads/feature_store/mixin/oci_feature_store.py +0 -145
  370. ads/feature_store/model_details.py +0 -73
  371. ads/feature_store/query/__init__.py +0 -0
  372. ads/feature_store/query/filter.py +0 -266
  373. ads/feature_store/query/generator/__init__.py +0 -0
  374. ads/feature_store/query/generator/query_generator.py +0 -298
  375. ads/feature_store/query/join.py +0 -161
  376. ads/feature_store/query/query.py +0 -403
  377. ads/feature_store/query/validator/__init__.py +0 -0
  378. ads/feature_store/query/validator/query_validator.py +0 -57
  379. ads/feature_store/response/__init__.py +0 -0
  380. ads/feature_store/response/response_builder.py +0 -68
  381. ads/feature_store/service/__init__.py +0 -0
  382. ads/feature_store/service/oci_dataset.py +0 -139
  383. ads/feature_store/service/oci_dataset_job.py +0 -199
  384. ads/feature_store/service/oci_entity.py +0 -125
  385. ads/feature_store/service/oci_feature_group.py +0 -164
  386. ads/feature_store/service/oci_feature_group_job.py +0 -214
  387. ads/feature_store/service/oci_feature_store.py +0 -182
  388. ads/feature_store/service/oci_lineage.py +0 -87
  389. ads/feature_store/service/oci_transformation.py +0 -104
  390. ads/feature_store/statistics/__init__.py +0 -0
  391. ads/feature_store/statistics/abs_feature_value.py +0 -49
  392. ads/feature_store/statistics/charts/__init__.py +0 -0
  393. ads/feature_store/statistics/charts/abstract_feature_plot.py +0 -37
  394. ads/feature_store/statistics/charts/box_plot.py +0 -148
  395. ads/feature_store/statistics/charts/frequency_distribution.py +0 -65
  396. ads/feature_store/statistics/charts/probability_distribution.py +0 -68
  397. ads/feature_store/statistics/charts/top_k_frequent_elements.py +0 -98
  398. ads/feature_store/statistics/feature_stat.py +0 -126
  399. ads/feature_store/statistics/generic_feature_value.py +0 -33
  400. ads/feature_store/statistics/statistics.py +0 -41
  401. ads/feature_store/statistics_config.py +0 -101
  402. ads/feature_store/templates/feature_store_template.yaml +0 -45
  403. ads/feature_store/transformation.py +0 -499
  404. ads/feature_store/validation_output.py +0 -57
  405. ads/hpo/__init__.py +0 -9
  406. ads/hpo/_imports.py +0 -91
  407. ads/hpo/ads_search_space.py +0 -439
  408. ads/hpo/distributions.py +0 -325
  409. ads/hpo/objective.py +0 -280
  410. ads/hpo/search_cv.py +0 -1657
  411. ads/hpo/stopping_criterion.py +0 -75
  412. ads/hpo/tuner_artifact.py +0 -413
  413. ads/hpo/utils.py +0 -91
  414. ads/hpo/validation.py +0 -140
  415. ads/hpo/visualization/__init__.py +0 -5
  416. ads/hpo/visualization/_contour.py +0 -23
  417. ads/hpo/visualization/_edf.py +0 -20
  418. ads/hpo/visualization/_intermediate_values.py +0 -21
  419. ads/hpo/visualization/_optimization_history.py +0 -25
  420. ads/hpo/visualization/_parallel_coordinate.py +0 -169
  421. ads/hpo/visualization/_param_importances.py +0 -26
  422. ads/jobs/__init__.py +0 -53
  423. ads/jobs/ads_job.py +0 -663
  424. ads/jobs/builders/__init__.py +0 -5
  425. ads/jobs/builders/base.py +0 -156
  426. ads/jobs/builders/infrastructure/__init__.py +0 -6
  427. ads/jobs/builders/infrastructure/base.py +0 -165
  428. ads/jobs/builders/infrastructure/dataflow.py +0 -1252
  429. ads/jobs/builders/infrastructure/dsc_job.py +0 -1894
  430. ads/jobs/builders/infrastructure/dsc_job_runtime.py +0 -1233
  431. ads/jobs/builders/infrastructure/utils.py +0 -65
  432. ads/jobs/builders/runtimes/__init__.py +0 -5
  433. ads/jobs/builders/runtimes/artifact.py +0 -338
  434. ads/jobs/builders/runtimes/base.py +0 -325
  435. ads/jobs/builders/runtimes/container_runtime.py +0 -242
  436. ads/jobs/builders/runtimes/python_runtime.py +0 -1016
  437. ads/jobs/builders/runtimes/pytorch_runtime.py +0 -204
  438. ads/jobs/cli.py +0 -104
  439. ads/jobs/env_var_parser.py +0 -131
  440. ads/jobs/extension.py +0 -160
  441. ads/jobs/schema/__init__.py +0 -5
  442. ads/jobs/schema/infrastructure_schema.json +0 -116
  443. ads/jobs/schema/job_schema.json +0 -42
  444. ads/jobs/schema/runtime_schema.json +0 -183
  445. ads/jobs/schema/validator.py +0 -141
  446. ads/jobs/serializer.py +0 -296
  447. ads/jobs/templates/__init__.py +0 -5
  448. ads/jobs/templates/container.py +0 -6
  449. ads/jobs/templates/driver_notebook.py +0 -177
  450. ads/jobs/templates/driver_oci.py +0 -500
  451. ads/jobs/templates/driver_python.py +0 -48
  452. ads/jobs/templates/driver_pytorch.py +0 -852
  453. ads/jobs/templates/driver_utils.py +0 -615
  454. ads/jobs/templates/hostname_from_env.c +0 -55
  455. ads/jobs/templates/oci_metrics.py +0 -181
  456. ads/jobs/utils.py +0 -104
  457. ads/llm/__init__.py +0 -28
  458. ads/llm/autogen/__init__.py +0 -2
  459. ads/llm/autogen/constants.py +0 -15
  460. ads/llm/autogen/reports/__init__.py +0 -2
  461. ads/llm/autogen/reports/base.py +0 -67
  462. ads/llm/autogen/reports/data.py +0 -103
  463. ads/llm/autogen/reports/session.py +0 -526
  464. ads/llm/autogen/reports/templates/chat_box.html +0 -13
  465. ads/llm/autogen/reports/templates/chat_box_lt.html +0 -5
  466. ads/llm/autogen/reports/templates/chat_box_rt.html +0 -6
  467. ads/llm/autogen/reports/utils.py +0 -56
  468. ads/llm/autogen/v02/__init__.py +0 -4
  469. ads/llm/autogen/v02/client.py +0 -295
  470. ads/llm/autogen/v02/log_handlers/__init__.py +0 -2
  471. ads/llm/autogen/v02/log_handlers/oci_file_handler.py +0 -83
  472. ads/llm/autogen/v02/loggers/__init__.py +0 -6
  473. ads/llm/autogen/v02/loggers/metric_logger.py +0 -320
  474. ads/llm/autogen/v02/loggers/session_logger.py +0 -580
  475. ads/llm/autogen/v02/loggers/utils.py +0 -86
  476. ads/llm/autogen/v02/runtime_logging.py +0 -163
  477. ads/llm/chain.py +0 -268
  478. ads/llm/chat_template.py +0 -31
  479. ads/llm/deploy.py +0 -63
  480. ads/llm/guardrails/__init__.py +0 -5
  481. ads/llm/guardrails/base.py +0 -442
  482. ads/llm/guardrails/huggingface.py +0 -44
  483. ads/llm/langchain/__init__.py +0 -5
  484. ads/llm/langchain/plugins/__init__.py +0 -5
  485. ads/llm/langchain/plugins/chat_models/__init__.py +0 -5
  486. ads/llm/langchain/plugins/chat_models/oci_data_science.py +0 -1027
  487. ads/llm/langchain/plugins/embeddings/__init__.py +0 -4
  488. ads/llm/langchain/plugins/embeddings/oci_data_science_model_deployment_endpoint.py +0 -184
  489. ads/llm/langchain/plugins/llms/__init__.py +0 -5
  490. ads/llm/langchain/plugins/llms/oci_data_science_model_deployment_endpoint.py +0 -979
  491. ads/llm/requirements.txt +0 -3
  492. ads/llm/serialize.py +0 -219
  493. ads/llm/serializers/__init__.py +0 -0
  494. ads/llm/serializers/retrieval_qa.py +0 -153
  495. ads/llm/serializers/runnable_parallel.py +0 -27
  496. ads/llm/templates/score_chain.jinja2 +0 -155
  497. ads/llm/templates/tool_chat_template_hermes.jinja +0 -130
  498. ads/llm/templates/tool_chat_template_mistral_parallel.jinja +0 -94
  499. ads/model/__init__.py +0 -52
  500. ads/model/artifact.py +0 -573
  501. ads/model/artifact_downloader.py +0 -254
  502. ads/model/artifact_uploader.py +0 -267
  503. ads/model/base_properties.py +0 -238
  504. ads/model/common/.model-ignore +0 -66
  505. ads/model/common/__init__.py +0 -5
  506. ads/model/common/utils.py +0 -142
  507. ads/model/datascience_model.py +0 -2635
  508. ads/model/deployment/__init__.py +0 -20
  509. ads/model/deployment/common/__init__.py +0 -5
  510. ads/model/deployment/common/utils.py +0 -308
  511. ads/model/deployment/model_deployer.py +0 -466
  512. ads/model/deployment/model_deployment.py +0 -1846
  513. ads/model/deployment/model_deployment_infrastructure.py +0 -671
  514. ads/model/deployment/model_deployment_properties.py +0 -493
  515. ads/model/deployment/model_deployment_runtime.py +0 -838
  516. ads/model/extractor/__init__.py +0 -5
  517. ads/model/extractor/automl_extractor.py +0 -74
  518. ads/model/extractor/embedding_onnx_extractor.py +0 -80
  519. ads/model/extractor/huggingface_extractor.py +0 -88
  520. ads/model/extractor/keras_extractor.py +0 -84
  521. ads/model/extractor/lightgbm_extractor.py +0 -93
  522. ads/model/extractor/model_info_extractor.py +0 -114
  523. ads/model/extractor/model_info_extractor_factory.py +0 -105
  524. ads/model/extractor/pytorch_extractor.py +0 -87
  525. ads/model/extractor/sklearn_extractor.py +0 -112
  526. ads/model/extractor/spark_extractor.py +0 -89
  527. ads/model/extractor/tensorflow_extractor.py +0 -85
  528. ads/model/extractor/xgboost_extractor.py +0 -94
  529. ads/model/framework/__init__.py +0 -5
  530. ads/model/framework/automl_model.py +0 -178
  531. ads/model/framework/embedding_onnx_model.py +0 -438
  532. ads/model/framework/huggingface_model.py +0 -399
  533. ads/model/framework/lightgbm_model.py +0 -266
  534. ads/model/framework/pytorch_model.py +0 -266
  535. ads/model/framework/sklearn_model.py +0 -250
  536. ads/model/framework/spark_model.py +0 -326
  537. ads/model/framework/tensorflow_model.py +0 -254
  538. ads/model/framework/xgboost_model.py +0 -258
  539. ads/model/generic_model.py +0 -3518
  540. ads/model/model_artifact_boilerplate/README.md +0 -381
  541. ads/model/model_artifact_boilerplate/__init__.py +0 -5
  542. ads/model/model_artifact_boilerplate/artifact_introspection_test/__init__.py +0 -5
  543. ads/model/model_artifact_boilerplate/artifact_introspection_test/model_artifact_validate.py +0 -427
  544. ads/model/model_artifact_boilerplate/artifact_introspection_test/requirements.txt +0 -2
  545. ads/model/model_artifact_boilerplate/runtime.yaml +0 -7
  546. ads/model/model_artifact_boilerplate/score.py +0 -61
  547. ads/model/model_file_description_schema.json +0 -68
  548. ads/model/model_introspect.py +0 -331
  549. ads/model/model_metadata.py +0 -1810
  550. ads/model/model_metadata_mixin.py +0 -460
  551. ads/model/model_properties.py +0 -63
  552. ads/model/model_version_set.py +0 -739
  553. ads/model/runtime/__init__.py +0 -5
  554. ads/model/runtime/env_info.py +0 -306
  555. ads/model/runtime/model_deployment_details.py +0 -37
  556. ads/model/runtime/model_provenance_details.py +0 -58
  557. ads/model/runtime/runtime_info.py +0 -81
  558. ads/model/runtime/schemas/inference_env_info_schema.yaml +0 -16
  559. ads/model/runtime/schemas/model_provenance_schema.yaml +0 -36
  560. ads/model/runtime/schemas/training_env_info_schema.yaml +0 -16
  561. ads/model/runtime/utils.py +0 -201
  562. ads/model/serde/__init__.py +0 -5
  563. ads/model/serde/common.py +0 -40
  564. ads/model/serde/model_input.py +0 -547
  565. ads/model/serde/model_serializer.py +0 -1184
  566. ads/model/service/__init__.py +0 -5
  567. ads/model/service/oci_datascience_model.py +0 -1076
  568. ads/model/service/oci_datascience_model_deployment.py +0 -500
  569. ads/model/service/oci_datascience_model_version_set.py +0 -176
  570. ads/model/transformer/__init__.py +0 -5
  571. ads/model/transformer/onnx_transformer.py +0 -324
  572. ads/mysqldb/__init__.py +0 -5
  573. ads/mysqldb/mysql_db.py +0 -227
  574. ads/opctl/__init__.py +0 -18
  575. ads/opctl/anomaly_detection.py +0 -11
  576. ads/opctl/backend/__init__.py +0 -5
  577. ads/opctl/backend/ads_dataflow.py +0 -353
  578. ads/opctl/backend/ads_ml_job.py +0 -710
  579. ads/opctl/backend/ads_ml_pipeline.py +0 -164
  580. ads/opctl/backend/ads_model_deployment.py +0 -209
  581. ads/opctl/backend/base.py +0 -146
  582. ads/opctl/backend/local.py +0 -1053
  583. ads/opctl/backend/marketplace/__init__.py +0 -9
  584. ads/opctl/backend/marketplace/helm_helper.py +0 -173
  585. ads/opctl/backend/marketplace/local_marketplace.py +0 -271
  586. ads/opctl/backend/marketplace/marketplace_backend_runner.py +0 -71
  587. ads/opctl/backend/marketplace/marketplace_operator_interface.py +0 -44
  588. ads/opctl/backend/marketplace/marketplace_operator_runner.py +0 -24
  589. ads/opctl/backend/marketplace/marketplace_utils.py +0 -212
  590. ads/opctl/backend/marketplace/models/__init__.py +0 -5
  591. ads/opctl/backend/marketplace/models/bearer_token.py +0 -94
  592. ads/opctl/backend/marketplace/models/marketplace_type.py +0 -70
  593. ads/opctl/backend/marketplace/models/ocir_details.py +0 -56
  594. ads/opctl/backend/marketplace/prerequisite_checker.py +0 -238
  595. ads/opctl/cli.py +0 -707
  596. ads/opctl/cmds.py +0 -869
  597. ads/opctl/conda/__init__.py +0 -5
  598. ads/opctl/conda/cli.py +0 -193
  599. ads/opctl/conda/cmds.py +0 -749
  600. ads/opctl/conda/config.yaml +0 -34
  601. ads/opctl/conda/manifest_template.yaml +0 -13
  602. ads/opctl/conda/multipart_uploader.py +0 -188
  603. ads/opctl/conda/pack.py +0 -89
  604. ads/opctl/config/__init__.py +0 -5
  605. ads/opctl/config/base.py +0 -57
  606. ads/opctl/config/diagnostics/__init__.py +0 -5
  607. ads/opctl/config/diagnostics/distributed/default_requirements_config.yaml +0 -62
  608. ads/opctl/config/merger.py +0 -255
  609. ads/opctl/config/resolver.py +0 -297
  610. ads/opctl/config/utils.py +0 -79
  611. ads/opctl/config/validator.py +0 -17
  612. ads/opctl/config/versioner.py +0 -68
  613. ads/opctl/config/yaml_parsers/__init__.py +0 -7
  614. ads/opctl/config/yaml_parsers/base.py +0 -58
  615. ads/opctl/config/yaml_parsers/distributed/__init__.py +0 -7
  616. ads/opctl/config/yaml_parsers/distributed/yaml_parser.py +0 -201
  617. ads/opctl/constants.py +0 -66
  618. ads/opctl/decorator/__init__.py +0 -5
  619. ads/opctl/decorator/common.py +0 -129
  620. ads/opctl/diagnostics/__init__.py +0 -5
  621. ads/opctl/diagnostics/__main__.py +0 -25
  622. ads/opctl/diagnostics/check_distributed_job_requirements.py +0 -212
  623. ads/opctl/diagnostics/check_requirements.py +0 -144
  624. ads/opctl/diagnostics/requirement_exception.py +0 -9
  625. ads/opctl/distributed/README.md +0 -109
  626. ads/opctl/distributed/__init__.py +0 -5
  627. ads/opctl/distributed/certificates.py +0 -32
  628. ads/opctl/distributed/cli.py +0 -207
  629. ads/opctl/distributed/cmds.py +0 -731
  630. ads/opctl/distributed/common/__init__.py +0 -5
  631. ads/opctl/distributed/common/abstract_cluster_provider.py +0 -449
  632. ads/opctl/distributed/common/abstract_framework_spec_builder.py +0 -88
  633. ads/opctl/distributed/common/cluster_config_helper.py +0 -103
  634. ads/opctl/distributed/common/cluster_provider_factory.py +0 -21
  635. ads/opctl/distributed/common/cluster_runner.py +0 -54
  636. ads/opctl/distributed/common/framework_factory.py +0 -29
  637. ads/opctl/docker/Dockerfile.job +0 -103
  638. ads/opctl/docker/Dockerfile.job.arm +0 -107
  639. ads/opctl/docker/Dockerfile.job.gpu +0 -175
  640. ads/opctl/docker/base-env.yaml +0 -13
  641. ads/opctl/docker/cuda.repo +0 -6
  642. ads/opctl/docker/operator/.dockerignore +0 -0
  643. ads/opctl/docker/operator/Dockerfile +0 -41
  644. ads/opctl/docker/operator/Dockerfile.gpu +0 -85
  645. ads/opctl/docker/operator/cuda.repo +0 -6
  646. ads/opctl/docker/operator/environment.yaml +0 -8
  647. ads/opctl/forecast.py +0 -11
  648. ads/opctl/index.yaml +0 -3
  649. ads/opctl/model/__init__.py +0 -5
  650. ads/opctl/model/cli.py +0 -65
  651. ads/opctl/model/cmds.py +0 -73
  652. ads/opctl/operator/README.md +0 -4
  653. ads/opctl/operator/__init__.py +0 -31
  654. ads/opctl/operator/cli.py +0 -344
  655. ads/opctl/operator/cmd.py +0 -596
  656. ads/opctl/operator/common/__init__.py +0 -5
  657. ads/opctl/operator/common/backend_factory.py +0 -460
  658. ads/opctl/operator/common/const.py +0 -27
  659. ads/opctl/operator/common/data/synthetic.csv +0 -16001
  660. ads/opctl/operator/common/dictionary_merger.py +0 -148
  661. ads/opctl/operator/common/errors.py +0 -42
  662. ads/opctl/operator/common/operator_config.py +0 -99
  663. ads/opctl/operator/common/operator_loader.py +0 -811
  664. ads/opctl/operator/common/operator_schema.yaml +0 -130
  665. ads/opctl/operator/common/operator_yaml_generator.py +0 -152
  666. ads/opctl/operator/common/utils.py +0 -208
  667. ads/opctl/operator/lowcode/__init__.py +0 -5
  668. ads/opctl/operator/lowcode/anomaly/MLoperator +0 -16
  669. ads/opctl/operator/lowcode/anomaly/README.md +0 -207
  670. ads/opctl/operator/lowcode/anomaly/__init__.py +0 -5
  671. ads/opctl/operator/lowcode/anomaly/__main__.py +0 -103
  672. ads/opctl/operator/lowcode/anomaly/cmd.py +0 -35
  673. ads/opctl/operator/lowcode/anomaly/const.py +0 -167
  674. ads/opctl/operator/lowcode/anomaly/environment.yaml +0 -10
  675. ads/opctl/operator/lowcode/anomaly/model/__init__.py +0 -5
  676. ads/opctl/operator/lowcode/anomaly/model/anomaly_dataset.py +0 -146
  677. ads/opctl/operator/lowcode/anomaly/model/anomaly_merlion.py +0 -162
  678. ads/opctl/operator/lowcode/anomaly/model/automlx.py +0 -99
  679. ads/opctl/operator/lowcode/anomaly/model/autots.py +0 -115
  680. ads/opctl/operator/lowcode/anomaly/model/base_model.py +0 -404
  681. ads/opctl/operator/lowcode/anomaly/model/factory.py +0 -110
  682. ads/opctl/operator/lowcode/anomaly/model/isolationforest.py +0 -78
  683. ads/opctl/operator/lowcode/anomaly/model/oneclasssvm.py +0 -78
  684. ads/opctl/operator/lowcode/anomaly/model/randomcutforest.py +0 -120
  685. ads/opctl/operator/lowcode/anomaly/model/tods.py +0 -119
  686. ads/opctl/operator/lowcode/anomaly/operator_config.py +0 -127
  687. ads/opctl/operator/lowcode/anomaly/schema.yaml +0 -401
  688. ads/opctl/operator/lowcode/anomaly/utils.py +0 -88
  689. ads/opctl/operator/lowcode/common/__init__.py +0 -5
  690. ads/opctl/operator/lowcode/common/const.py +0 -10
  691. ads/opctl/operator/lowcode/common/data.py +0 -116
  692. ads/opctl/operator/lowcode/common/errors.py +0 -47
  693. ads/opctl/operator/lowcode/common/transformations.py +0 -296
  694. ads/opctl/operator/lowcode/common/utils.py +0 -293
  695. ads/opctl/operator/lowcode/feature_store_marketplace/MLoperator +0 -13
  696. ads/opctl/operator/lowcode/feature_store_marketplace/README.md +0 -30
  697. ads/opctl/operator/lowcode/feature_store_marketplace/__init__.py +0 -5
  698. ads/opctl/operator/lowcode/feature_store_marketplace/__main__.py +0 -116
  699. ads/opctl/operator/lowcode/feature_store_marketplace/cmd.py +0 -85
  700. ads/opctl/operator/lowcode/feature_store_marketplace/const.py +0 -15
  701. ads/opctl/operator/lowcode/feature_store_marketplace/environment.yaml +0 -0
  702. ads/opctl/operator/lowcode/feature_store_marketplace/models/__init__.py +0 -4
  703. ads/opctl/operator/lowcode/feature_store_marketplace/models/apigw_config.py +0 -32
  704. ads/opctl/operator/lowcode/feature_store_marketplace/models/db_config.py +0 -43
  705. ads/opctl/operator/lowcode/feature_store_marketplace/models/mysql_config.py +0 -120
  706. ads/opctl/operator/lowcode/feature_store_marketplace/models/serializable_yaml_model.py +0 -34
  707. ads/opctl/operator/lowcode/feature_store_marketplace/operator_utils.py +0 -386
  708. ads/opctl/operator/lowcode/feature_store_marketplace/schema.yaml +0 -160
  709. ads/opctl/operator/lowcode/forecast/MLoperator +0 -25
  710. ads/opctl/operator/lowcode/forecast/README.md +0 -209
  711. ads/opctl/operator/lowcode/forecast/__init__.py +0 -5
  712. ads/opctl/operator/lowcode/forecast/__main__.py +0 -89
  713. ads/opctl/operator/lowcode/forecast/cmd.py +0 -40
  714. ads/opctl/operator/lowcode/forecast/const.py +0 -92
  715. ads/opctl/operator/lowcode/forecast/environment.yaml +0 -20
  716. ads/opctl/operator/lowcode/forecast/errors.py +0 -26
  717. ads/opctl/operator/lowcode/forecast/model/__init__.py +0 -5
  718. ads/opctl/operator/lowcode/forecast/model/arima.py +0 -279
  719. ads/opctl/operator/lowcode/forecast/model/automlx.py +0 -542
  720. ads/opctl/operator/lowcode/forecast/model/autots.py +0 -312
  721. ads/opctl/operator/lowcode/forecast/model/base_model.py +0 -863
  722. ads/opctl/operator/lowcode/forecast/model/factory.py +0 -106
  723. ads/opctl/operator/lowcode/forecast/model/forecast_datasets.py +0 -492
  724. ads/opctl/operator/lowcode/forecast/model/ml_forecast.py +0 -243
  725. ads/opctl/operator/lowcode/forecast/model/neuralprophet.py +0 -486
  726. ads/opctl/operator/lowcode/forecast/model/prophet.py +0 -445
  727. ads/opctl/operator/lowcode/forecast/model_evaluator.py +0 -244
  728. ads/opctl/operator/lowcode/forecast/operator_config.py +0 -234
  729. ads/opctl/operator/lowcode/forecast/schema.yaml +0 -506
  730. ads/opctl/operator/lowcode/forecast/utils.py +0 -413
  731. ads/opctl/operator/lowcode/forecast/whatifserve/__init__.py +0 -7
  732. ads/opctl/operator/lowcode/forecast/whatifserve/deployment_manager.py +0 -285
  733. ads/opctl/operator/lowcode/forecast/whatifserve/score.py +0 -246
  734. ads/opctl/operator/lowcode/pii/MLoperator +0 -17
  735. ads/opctl/operator/lowcode/pii/README.md +0 -208
  736. ads/opctl/operator/lowcode/pii/__init__.py +0 -5
  737. ads/opctl/operator/lowcode/pii/__main__.py +0 -78
  738. ads/opctl/operator/lowcode/pii/cmd.py +0 -39
  739. ads/opctl/operator/lowcode/pii/constant.py +0 -84
  740. ads/opctl/operator/lowcode/pii/environment.yaml +0 -17
  741. ads/opctl/operator/lowcode/pii/errors.py +0 -27
  742. ads/opctl/operator/lowcode/pii/model/__init__.py +0 -5
  743. ads/opctl/operator/lowcode/pii/model/factory.py +0 -82
  744. ads/opctl/operator/lowcode/pii/model/guardrails.py +0 -167
  745. ads/opctl/operator/lowcode/pii/model/pii.py +0 -145
  746. ads/opctl/operator/lowcode/pii/model/processor/__init__.py +0 -34
  747. ads/opctl/operator/lowcode/pii/model/processor/email_replacer.py +0 -34
  748. ads/opctl/operator/lowcode/pii/model/processor/mbi_replacer.py +0 -35
  749. ads/opctl/operator/lowcode/pii/model/processor/name_replacer.py +0 -225
  750. ads/opctl/operator/lowcode/pii/model/processor/number_replacer.py +0 -73
  751. ads/opctl/operator/lowcode/pii/model/processor/remover.py +0 -26
  752. ads/opctl/operator/lowcode/pii/model/report.py +0 -487
  753. ads/opctl/operator/lowcode/pii/operator_config.py +0 -95
  754. ads/opctl/operator/lowcode/pii/schema.yaml +0 -108
  755. ads/opctl/operator/lowcode/pii/utils.py +0 -43
  756. ads/opctl/operator/lowcode/recommender/MLoperator +0 -16
  757. ads/opctl/operator/lowcode/recommender/README.md +0 -206
  758. ads/opctl/operator/lowcode/recommender/__init__.py +0 -5
  759. ads/opctl/operator/lowcode/recommender/__main__.py +0 -82
  760. ads/opctl/operator/lowcode/recommender/cmd.py +0 -33
  761. ads/opctl/operator/lowcode/recommender/constant.py +0 -30
  762. ads/opctl/operator/lowcode/recommender/environment.yaml +0 -11
  763. ads/opctl/operator/lowcode/recommender/model/base_model.py +0 -212
  764. ads/opctl/operator/lowcode/recommender/model/factory.py +0 -56
  765. ads/opctl/operator/lowcode/recommender/model/recommender_dataset.py +0 -25
  766. ads/opctl/operator/lowcode/recommender/model/svd.py +0 -106
  767. ads/opctl/operator/lowcode/recommender/operator_config.py +0 -81
  768. ads/opctl/operator/lowcode/recommender/schema.yaml +0 -265
  769. ads/opctl/operator/lowcode/recommender/utils.py +0 -13
  770. ads/opctl/operator/runtime/__init__.py +0 -5
  771. ads/opctl/operator/runtime/const.py +0 -17
  772. ads/opctl/operator/runtime/container_runtime_schema.yaml +0 -50
  773. ads/opctl/operator/runtime/marketplace_runtime.py +0 -50
  774. ads/opctl/operator/runtime/python_marketplace_runtime_schema.yaml +0 -21
  775. ads/opctl/operator/runtime/python_runtime_schema.yaml +0 -21
  776. ads/opctl/operator/runtime/runtime.py +0 -115
  777. ads/opctl/schema.yaml.yml +0 -36
  778. ads/opctl/script.py +0 -40
  779. ads/opctl/spark/__init__.py +0 -5
  780. ads/opctl/spark/cli.py +0 -43
  781. ads/opctl/spark/cmds.py +0 -147
  782. ads/opctl/templates/diagnostic_report_template.jinja2 +0 -102
  783. ads/opctl/utils.py +0 -344
  784. ads/oracledb/__init__.py +0 -5
  785. ads/oracledb/oracle_db.py +0 -346
  786. ads/pipeline/__init__.py +0 -39
  787. ads/pipeline/ads_pipeline.py +0 -2279
  788. ads/pipeline/ads_pipeline_run.py +0 -772
  789. ads/pipeline/ads_pipeline_step.py +0 -605
  790. ads/pipeline/builders/__init__.py +0 -5
  791. ads/pipeline/builders/infrastructure/__init__.py +0 -5
  792. ads/pipeline/builders/infrastructure/custom_script.py +0 -32
  793. ads/pipeline/cli.py +0 -119
  794. ads/pipeline/extension.py +0 -291
  795. ads/pipeline/schema/__init__.py +0 -5
  796. ads/pipeline/schema/cs_step_schema.json +0 -35
  797. ads/pipeline/schema/ml_step_schema.json +0 -31
  798. ads/pipeline/schema/pipeline_schema.json +0 -71
  799. ads/pipeline/visualizer/__init__.py +0 -5
  800. ads/pipeline/visualizer/base.py +0 -570
  801. ads/pipeline/visualizer/graph_renderer.py +0 -272
  802. ads/pipeline/visualizer/text_renderer.py +0 -84
  803. ads/secrets/__init__.py +0 -11
  804. ads/secrets/adb.py +0 -386
  805. ads/secrets/auth_token.py +0 -86
  806. ads/secrets/big_data_service.py +0 -365
  807. ads/secrets/mysqldb.py +0 -149
  808. ads/secrets/oracledb.py +0 -160
  809. ads/secrets/secrets.py +0 -407
  810. ads/telemetry/__init__.py +0 -7
  811. ads/telemetry/base.py +0 -69
  812. ads/telemetry/client.py +0 -125
  813. ads/telemetry/telemetry.py +0 -257
  814. ads/templates/dataflow_pyspark.jinja2 +0 -13
  815. ads/templates/dataflow_sparksql.jinja2 +0 -22
  816. ads/templates/func.jinja2 +0 -20
  817. ads/templates/schemas/openapi.json +0 -1740
  818. ads/templates/score-pkl.jinja2 +0 -173
  819. ads/templates/score.jinja2 +0 -322
  820. ads/templates/score_embedding_onnx.jinja2 +0 -202
  821. ads/templates/score_generic.jinja2 +0 -165
  822. ads/templates/score_huggingface_pipeline.jinja2 +0 -217
  823. ads/templates/score_lightgbm.jinja2 +0 -185
  824. ads/templates/score_onnx.jinja2 +0 -407
  825. ads/templates/score_onnx_new.jinja2 +0 -473
  826. ads/templates/score_oracle_automl.jinja2 +0 -185
  827. ads/templates/score_pyspark.jinja2 +0 -154
  828. ads/templates/score_pytorch.jinja2 +0 -219
  829. ads/templates/score_scikit-learn.jinja2 +0 -184
  830. ads/templates/score_tensorflow.jinja2 +0 -184
  831. ads/templates/score_xgboost.jinja2 +0 -178
  832. ads/text_dataset/__init__.py +0 -5
  833. ads/text_dataset/backends.py +0 -211
  834. ads/text_dataset/dataset.py +0 -445
  835. ads/text_dataset/extractor.py +0 -207
  836. ads/text_dataset/options.py +0 -53
  837. ads/text_dataset/udfs.py +0 -22
  838. ads/text_dataset/utils.py +0 -49
  839. ads/type_discovery/__init__.py +0 -9
  840. ads/type_discovery/abstract_detector.py +0 -21
  841. ads/type_discovery/constant_detector.py +0 -41
  842. ads/type_discovery/continuous_detector.py +0 -54
  843. ads/type_discovery/credit_card_detector.py +0 -99
  844. ads/type_discovery/datetime_detector.py +0 -92
  845. ads/type_discovery/discrete_detector.py +0 -118
  846. ads/type_discovery/document_detector.py +0 -146
  847. ads/type_discovery/ip_detector.py +0 -68
  848. ads/type_discovery/latlon_detector.py +0 -90
  849. ads/type_discovery/phone_number_detector.py +0 -63
  850. ads/type_discovery/type_discovery_driver.py +0 -87
  851. ads/type_discovery/typed_feature.py +0 -594
  852. ads/type_discovery/unknown_detector.py +0 -41
  853. ads/type_discovery/zipcode_detector.py +0 -48
  854. ads/vault/__init__.py +0 -7
  855. ads/vault/vault.py +0 -237
  856. oracle_ads-2.13.7.dist-info/RECORD +0 -858
  857. {oracle_ads-2.13.7.dist-info → oracle_ads-2.13.9rc0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -1,1494 +0,0 @@
1
- #!/usr/bin/env python
2
- # -*- coding: utf-8; -*-
3
-
4
- # Copyright (c) 2023, 2024 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 json
8
- import logging
9
- from copy import deepcopy
10
- from datetime import datetime
11
- from typing import Dict, List, Optional, Union
12
-
13
- import pandas as pd
14
- from great_expectations.core import ExpectationSuite
15
-
16
- from ads import deprecated
17
- from ads.common import utils
18
- from ads.common.decorator.runtime_dependency import OptionalDependency
19
- from ads.common.oci_mixin import OCIModelMixin
20
- from ads.feature_store.common.enums import (
21
- ExpectationType,
22
- EntityType,
23
- StreamingIngestionMode,
24
- BatchIngestionMode,
25
- )
26
- from ads.feature_store.common.exceptions import (
27
- NotMaterializedError,
28
- )
29
- from ads.feature_store.common.utils.base64_encoder_decoder import Base64EncoderDecoder
30
- from ads.feature_store.common.utils.utility import (
31
- get_metastore_id,
32
- get_execution_engine_type,
33
- validate_delta_format_parameters,
34
- get_schema_from_df,
35
- convert_expectation_suite_to_expectation,
36
- )
37
- from ads.feature_store.execution_strategy.engine.spark_engine import SparkEngine
38
- from ads.feature_store.execution_strategy.execution_strategy_provider import (
39
- OciExecutionStrategyProvider,
40
- ExecutionEngine,
41
- )
42
- from ads.feature_store.feature import Feature
43
- from ads.feature_store.feature_group_expectation import Expectation
44
- from ads.feature_store.feature_group_job import FeatureGroupJob
45
- from ads.feature_store.feature_option_details import FeatureOptionDetails
46
- from ads.feature_store.input_feature_detail import FeatureDetail, FeatureType
47
- from ads.feature_store.query.filter import Filter, Logic
48
- from ads.feature_store.query.query import Query
49
- from ads.feature_store.service.oci_feature_group import OCIFeatureGroup
50
- from ads.feature_store.service.oci_feature_group_job import OCIFeatureGroupJob
51
- from ads.feature_store.service.oci_lineage import OCILineage
52
- from ads.feature_store.statistics.statistics import Statistics
53
- from ads.feature_store.statistics_config import StatisticsConfig
54
- from ads.feature_store.validation_output import ValidationOutput
55
-
56
- from ads.jobs.builders.base import Builder
57
- from ads.feature_store.feature_lineage.graphviz_service import (
58
- GraphService,
59
- GraphOrientation,
60
- )
61
-
62
- try:
63
- from pyspark.sql import DataFrame
64
- except ModuleNotFoundError:
65
- raise ModuleNotFoundError(
66
- f"The `pyspark` module was not found. Please run `pip install "
67
- f"{OptionalDependency.SPARK}`."
68
- )
69
- except Exception as e:
70
- raise
71
-
72
- logger = logging.getLogger(__name__)
73
-
74
-
75
- class FeatureGroup(Builder):
76
- """ Represents a FeatureGroup Resource.
77
-
78
- Methods
79
- -------
80
- create(self, **kwargs) -> "FeatureGroup"
81
- Creates feature group resource.
82
- delete(self) -> "FeatureGroup":
83
- Removes feature group resource.
84
- to_dict(self) -> dict
85
- Serializes feature group to a dictionary.
86
- from_id(cls, id: str) -> "Transformation"
87
- Gets an existing feature group resource by id.
88
- list(cls, compartment_id: str = None, **kwargs) -> List["FeatureGroup"]
89
- Lists feature groups resources in a given compartment.
90
- list_df(cls, compartment_id: str = None, **kwargs) -> "pandas.DataFrame"
91
- Lists feature groups resources as a pandas dataframe.
92
- with_description(self, description: str) -> "FeatureGroup"
93
- Sets the description.
94
- with_compartment_id(self, compartment_id: str) -> "FeatureGroup"
95
- Sets the compartment ID.
96
- with_feature_store_id(self, feature_store_id: str) -> "FeatureGroup"
97
- Sets the feature store ID.
98
- with_name(self, name: str) -> "FeatureGroup"
99
- Sets the name.
100
- with_entity_id(self, entity_id: str) -> "FeatureGroup"
101
- Sets the entity id.
102
- with_input_feature_details(self, **schema_details: Dict[str, str]) -> "FeatureGroup"
103
- Sets the raw input feature details for the feature group.
104
- with_statistics_config(self, statistics_config: Union[StatisticsConfig, bool]) -> "FeatureGroup"
105
- Sets the statistics config details
106
-
107
- Examples
108
- --------
109
- >>> from ads.feature_store import feature_group
110
- >>> import oci
111
- >>> import os
112
- >>> input_feature_detail = [FeatureDetail("cc_num").with_feature_type(FeatureType.STRING).with_order_number(1)]
113
- >>> feature_group = feature_group.FeatureGroup()
114
- >>> .with_description("feature group description")
115
- >>> .with_compartment_id(os.environ["PROJECT_COMPARTMENT_OCID"])
116
- >>> .with_name("FeatureGroup")
117
- >>> .with_entity_id("<entity_id>") \
118
- >>> .with_feature_store_id("<feature_store_id>") \
119
- >>> .with_primary_keys(["key1", "key2"]) \
120
- >>> .with_input_feature_details(input_feature_detail) \
121
- >>> .with_statistics_config(StatisticsConfig(True,columns=["column1","column2"]))
122
- >>> feature_group.create()
123
- """
124
-
125
- _PREFIX = "featuregroup_resource"
126
-
127
- CONST_ID = "id"
128
- CONST_COMPARTMENT_ID = "compartmentId"
129
- CONST_NAME = "name"
130
- CONST_DESCRIPTION = "description"
131
- CONST_FEATURE_STORE_ID = "featureStoreId"
132
- CONST_ENTITY_ID = "entityId"
133
- CONST_ITEMS = "items"
134
- CONST_PRIMARY_KEYS = "primaryKeys"
135
- CONST_PARTITION_KEYS = "partitionKeys"
136
- CONST_EXPECTATION_DETAILS = "expectationDetails"
137
- CONST_INPUT_FEATURE_DETAILS = "inputFeatureDetails"
138
- CONST_OUTPUT_FEATURE_DETAILS = "outputFeatureDetails"
139
- CONST_FREEFORM_TAG = "freeformTags"
140
- CONST_DEFINED_TAG = "definedTags"
141
- CONST_TRANSFORMATION_ID = "transformationId"
142
- CONST_STATISTICS_CONFIG = "statisticsConfig"
143
- CONST_LIFECYCLE_STATE = "lifecycleState"
144
- CONST_LAST_JOB_ID = "jobId"
145
- CONST_INFER_SCHEMA = "isInferSchema"
146
- CONST_TRANSFORMATION_KWARGS = "transformationParameters"
147
-
148
- attribute_map = {
149
- CONST_ID: "id",
150
- CONST_COMPARTMENT_ID: "compartment_id",
151
- CONST_NAME: "name",
152
- CONST_DESCRIPTION: "description",
153
- CONST_FEATURE_STORE_ID: "feature_store_id",
154
- CONST_ENTITY_ID: "entity_id",
155
- CONST_PRIMARY_KEYS: "primary_keys",
156
- CONST_EXPECTATION_DETAILS: "expectation_details",
157
- CONST_ITEMS: "items",
158
- CONST_INPUT_FEATURE_DETAILS: "input_feature_details",
159
- CONST_FREEFORM_TAG: "freeform_tags",
160
- CONST_DEFINED_TAG: "defined_tags",
161
- CONST_TRANSFORMATION_ID: "transformation_id",
162
- CONST_LIFECYCLE_STATE: "lifecycle_state",
163
- CONST_OUTPUT_FEATURE_DETAILS: "output_feature_details",
164
- CONST_STATISTICS_CONFIG: "statistics_config",
165
- CONST_INFER_SCHEMA: "is_infer_schema",
166
- CONST_PARTITION_KEYS: "partition_keys",
167
- CONST_TRANSFORMATION_KWARGS: "transformation_parameters",
168
- }
169
-
170
- def __init__(self, spec: Dict = None, **kwargs) -> None:
171
- """Initializes FeatureGroup Resource.
172
-
173
- Parameters
174
- ----------
175
- spec: (Dict, optional). Defaults to None.
176
- Object specification.
177
-
178
- kwargs: Dict
179
- Specification as keyword arguments.
180
- If 'spec' contains the same key as the one in kwargs,
181
- the value from kwargs will be used.
182
- """
183
- super().__init__(spec=spec, **deepcopy(kwargs))
184
- # Specify oci FeatureGroup instance
185
- self.feature_group_job = None
186
- self._spark_engine = None
187
- self.oci_feature_group: OCIFeatureGroup = self._to_oci_feature_group(**kwargs)
188
- self.dsc_job = OCIFeatureGroupJob()
189
- self.lineage = OCILineage(**kwargs)
190
-
191
- def _to_oci_feature_group(self, **kwargs):
192
- """Creates an `OCIFeatureGroup` instance from the `FeatureGroup`.
193
-
194
- kwargs
195
- Additional kwargs arguments.
196
- Can be any attribute that `oci.feature_group.models.FeatureGroup` accepts.
197
-
198
- Returns
199
- -------
200
- OCIFeatureGroup
201
- The instance of the OCIFeatureGroup.
202
- """
203
-
204
- fs_spec = {}
205
-
206
- for infra_attr, dsc_attr in self.attribute_map.items():
207
- value = self.get_spec(infra_attr)
208
- fs_spec[dsc_attr] = value
209
- fs_spec.update(**kwargs)
210
- return OCIFeatureGroup(**fs_spec)
211
-
212
- @property
213
- def spark_engine(self):
214
- if not self._spark_engine:
215
- self._spark_engine = SparkEngine(get_metastore_id(self.feature_store_id))
216
- return self._spark_engine
217
-
218
- @property
219
- def kind(self) -> str:
220
- """The kind of the object as showing in a YAML."""
221
- return "FeatureGroup"
222
-
223
- @property
224
- def compartment_id(self) -> str:
225
- return self.get_spec(self.CONST_COMPARTMENT_ID)
226
-
227
- @compartment_id.setter
228
- def compartment_id(self, value: str):
229
- self.with_compartment_id(value)
230
-
231
- def with_compartment_id(self, compartment_id: str) -> "FeatureGroup":
232
- """Sets the compartment_id.
233
-
234
- Parameters
235
- ----------
236
- compartment_id: str
237
- The compartment_id.
238
-
239
- Returns
240
- -------
241
- FeatureGroup
242
- The FeatureGroup instance (self)
243
- """
244
- return self.set_spec(self.CONST_COMPARTMENT_ID, compartment_id)
245
-
246
- @property
247
- def name(self) -> str:
248
- return self.get_spec(self.CONST_NAME)
249
-
250
- @name.setter
251
- def name(self, name: str):
252
- self.with_name(name)
253
-
254
- def with_name(self, name: str) -> "FeatureGroup":
255
- """Sets the name.
256
-
257
- Parameters
258
- ----------
259
- name: str
260
- The name of feature group.
261
-
262
- Returns
263
- -------
264
- FeatureGroup
265
- The FeatureGroup instance (self)
266
- """
267
- return self.set_spec(self.CONST_NAME, name)
268
-
269
- @property
270
- def id(self) -> str:
271
- """The id of the feature group.
272
-
273
- Returns
274
- -------
275
- str
276
- The id of the feature group.
277
- """
278
- return self.get_spec(self.CONST_ID)
279
-
280
- def with_id(self, id: str) -> "FeatureGroup":
281
- return self.set_spec(self.CONST_ID, id)
282
-
283
- @property
284
- def description(self) -> str:
285
- return self.get_spec(self.CONST_DESCRIPTION)
286
-
287
- @description.setter
288
- def description(self, value: str):
289
- self.with_description(value)
290
-
291
- def with_description(self, description: str) -> "FeatureGroup":
292
- """Sets the description.
293
-
294
- Parameters
295
- ----------
296
- description: str
297
- The description of the feature group.
298
-
299
- Returns
300
- -------
301
- FeatureGroup
302
- The FeatureGroup instance (self)
303
- """
304
- return self.set_spec(self.CONST_DESCRIPTION, description)
305
-
306
- @property
307
- def primary_keys(self) -> List[str]:
308
- return self.get_spec(self.CONST_PRIMARY_KEYS)
309
-
310
- @primary_keys.setter
311
- def primary_keys(self, value: List[str]):
312
- self.with_primary_keys(value)
313
-
314
- def with_primary_keys(self, primary_keys: List[str]) -> "FeatureGroup":
315
- """Sets the primary keys of the feature group.
316
-
317
- Parameters
318
- ----------
319
- primary_keys: str
320
- The description of the feature group.
321
-
322
- Returns
323
- -------
324
- FeatureGroup
325
- The FeatureGroup instance (self)
326
- """
327
- return self.set_spec(
328
- self.CONST_PRIMARY_KEYS,
329
- {
330
- self.CONST_ITEMS: [
331
- {self.CONST_NAME: primary_key} for primary_key in primary_keys or []
332
- ]
333
- },
334
- )
335
-
336
- @property
337
- def transformation_kwargs(self) -> str:
338
- return self.get_spec(self.CONST_TRANSFORMATION_KWARGS)
339
-
340
- @transformation_kwargs.setter
341
- def transformation_kwargs(self, value: Dict):
342
- self.with_transformation_kwargs(value)
343
-
344
- def with_transformation_kwargs(
345
- self, transformation_kwargs: Dict = ()
346
- ) -> "FeatureGroup":
347
- """Sets the primary keys of the feature group.
348
-
349
- Parameters
350
- ----------
351
- transformation_kwargs: Dict
352
- Dictionary containing the transformation arguments.
353
-
354
- Returns
355
- -------
356
- FeatureGroup
357
- The FeatureGroup instance (self)
358
- """
359
- return self.set_spec(
360
- self.CONST_TRANSFORMATION_KWARGS,
361
- Base64EncoderDecoder.encode(json.dumps(transformation_kwargs or {})),
362
- )
363
-
364
- @property
365
- def partition_keys(self) -> List[str]:
366
- return self.get_spec(self.CONST_PARTITION_KEYS)
367
-
368
- @partition_keys.setter
369
- def partition_keys(self, value: List[str]):
370
- self.with_partition_keys(value)
371
-
372
- def with_partition_keys(self, partition_keys: List[str]) -> "FeatureGroup":
373
- """Sets the partition keys of the feature group.
374
-
375
- Parameters
376
- ----------
377
- partition_keys: List[str]
378
- The List of partition keys for the feature group.
379
-
380
- Returns
381
- -------
382
- FeatureGroup
383
- The FeatureGroup instance (self)
384
- """
385
- return self.set_spec(
386
- self.CONST_PARTITION_KEYS,
387
- {
388
- self.CONST_ITEMS: [
389
- {self.CONST_NAME: partition_key}
390
- for partition_key in partition_keys or []
391
- ]
392
- },
393
- )
394
-
395
- @property
396
- def feature_store_id(self) -> str:
397
- return self.get_spec(self.CONST_FEATURE_STORE_ID)
398
-
399
- @feature_store_id.setter
400
- def feature_store_id(self, value: str):
401
- self.with_feature_store_id(value)
402
-
403
- def with_feature_store_id(self, feature_store_id: str) -> "FeatureGroup":
404
- """Sets the feature_store_id.
405
-
406
- Parameters
407
- ----------
408
- feature_store_id: str
409
- The feature_store_id.
410
-
411
- Returns
412
- -------
413
- FeatureGroup
414
- The FeatureGroup instance (self)
415
- """
416
- return self.set_spec(self.CONST_FEATURE_STORE_ID, feature_store_id)
417
-
418
- @property
419
- def transformation_id(self) -> str:
420
- return self.get_spec(self.CONST_TRANSFORMATION_ID)
421
-
422
- @transformation_id.setter
423
- def transformation_id(self, value: str):
424
- self.with_feature_store_id(value)
425
-
426
- def with_transformation_id(self, transformation_id: str) -> "FeatureGroup":
427
- """Sets the transformation_id.
428
-
429
- Parameters
430
- ----------
431
- transformation_id: str
432
- The transformation_id.
433
-
434
- Returns
435
- -------
436
- FeatureGroup
437
- The FeatureGroup instance (self)
438
- """
439
-
440
- # Initialize the empty dictionary as transformation arguemnts if not specified
441
- if not self.transformation_kwargs:
442
- self.with_transformation_kwargs()
443
-
444
- return self.set_spec(self.CONST_TRANSFORMATION_ID, transformation_id)
445
-
446
- def _with_lifecycle_state(self, lifecycle_state: str) -> "FeatureGroup":
447
- """Sets the lifecycle_state.
448
-
449
- Parameters
450
- ----------
451
- lifecycle_state: str
452
- The lifecycle_state.
453
-
454
- Returns
455
- -------
456
- FeatureGroup
457
- The FeatureGroup instance (self)
458
- """
459
- return self.set_spec(self.CONST_LIFECYCLE_STATE, lifecycle_state)
460
-
461
- @property
462
- def entity_id(self) -> str:
463
- return self.get_spec(self.CONST_ENTITY_ID)
464
-
465
- @entity_id.setter
466
- def entity_id(self, value: str):
467
- self.with_entity_id(value)
468
-
469
- def with_entity_id(self, entity_id: str) -> "FeatureGroup":
470
- """Sets the entity_id.
471
-
472
- Parameters
473
- ----------
474
- entity_id: str
475
- The entity_id.
476
-
477
- Returns
478
- -------
479
- FeatureGroup
480
- The FeatureGroup instance (self)
481
- """
482
- return self.set_spec(self.CONST_ENTITY_ID, entity_id)
483
-
484
- @property
485
- def expectation_details(self) -> "Expectation":
486
- """The expectation details of the feature group.
487
-
488
- Returns
489
- -------
490
- list
491
- The step details of the feature group.
492
- """
493
- return self.get_spec(self.CONST_EXPECTATION_DETAILS)
494
-
495
- def with_expectation_suite(
496
- self, expectation_suite: ExpectationSuite, expectation_type: ExpectationType
497
- ) -> "FeatureGroup":
498
- """Sets the expectation details for the feature group.
499
-
500
- Parameters
501
- ----------
502
- expectation_suite: ExpectationSuite
503
- A list of rules in the feature store.
504
- expectation_type: ExpectationType
505
- Type of the expectation.
506
-
507
- Returns
508
- -------
509
- FeatureGroup
510
- The FeatureGroup instance (self).
511
- """
512
- return self.set_spec(
513
- self.CONST_EXPECTATION_DETAILS,
514
- convert_expectation_suite_to_expectation(
515
- expectation_suite, expectation_type
516
- ).to_dict(),
517
- )
518
-
519
- @property
520
- def input_feature_details(self) -> list:
521
- return self.get_spec(self.CONST_INPUT_FEATURE_DETAILS)
522
-
523
- @input_feature_details.setter
524
- def input_feature_details(self, input_feature_details: List[FeatureDetail]):
525
- self.with_input_feature_details(input_feature_details)
526
-
527
- def with_input_feature_details(
528
- self, input_feature_details: List[FeatureDetail]
529
- ) -> "FeatureGroup":
530
- """Sets the input feature details.
531
-
532
- Parameters
533
- ----------
534
- input_feature_details: List[FeatureDetail]
535
- The input_feature_details for the Feature Group.
536
- Returns
537
- -------
538
- FeatureGroup
539
- The FeatureGroup instance (self)
540
- """
541
- if not self.is_infer_schema:
542
- self.with_is_infer_schema(False)
543
- return self.set_spec(
544
- self.CONST_INPUT_FEATURE_DETAILS,
545
- [feature_details.to_dict() for feature_details in input_feature_details],
546
- )
547
-
548
- def with_schema_details_from_dataframe(
549
- self, data_frame: Union[DataFrame, pd.DataFrame]
550
- ) -> "FeatureGroup":
551
- if not self.feature_store_id:
552
- raise ValueError(
553
- "FeatureStore id must be set before calling `with_schema_details_from_dataframe`"
554
- )
555
-
556
- schema_details = get_schema_from_df(data_frame, self.feature_store_id)
557
- feature_details = []
558
-
559
- for schema_detail in schema_details:
560
- feature_details.append(FeatureDetail(**schema_detail))
561
- self.with_is_infer_schema(True)
562
- return self.with_input_feature_details(feature_details)
563
-
564
- def _with_features(self, features: List[Feature]):
565
- """Sets the output_features.
566
-
567
- Parameters
568
- ----------
569
- features: List[Feature]
570
- The features for the Feature Group.
571
- Returns
572
- -------
573
- FeatureGroup
574
- The FeatureGroup instance (self)
575
- """
576
- return self.set_spec(
577
- self.CONST_OUTPUT_FEATURE_DETAILS,
578
- {self.CONST_ITEMS: [feature.to_dict() for feature in features]},
579
- )
580
-
581
- @property
582
- def statistics_config(self) -> "StatisticsConfig":
583
- """The statistics config deatils of the feature group.
584
-
585
- Returns
586
- -------
587
- list
588
- The step details of the feature group.
589
- """
590
- return self.get_spec(self.CONST_STATISTICS_CONFIG)
591
-
592
- @statistics_config.setter
593
- def statistics_config(self, statistics_config: Union[StatisticsConfig, bool]):
594
- self.with_statistics_config(statistics_config)
595
-
596
- def with_statistics_config(
597
- self, statistics_config: Union[StatisticsConfig, bool]
598
- ) -> "FeatureGroup":
599
- """Sets the expectation details for the feature group.
600
-
601
- Parameters
602
- ----------
603
- statistics_config: StatisticsConfig
604
- statistics config
605
-
606
- Returns
607
- -------
608
- FeatureGroup
609
- The FeatureGroup instance (self).
610
- """
611
- if isinstance(statistics_config, StatisticsConfig):
612
- statistics_config_in = statistics_config
613
- elif isinstance(statistics_config, bool):
614
- statistics_config_in = StatisticsConfig(statistics_config)
615
- else:
616
- raise TypeError(
617
- "The argument `statistics_config` has to be of type `StatisticsConfig` or `bool`, "
618
- "but is of type: `{}`".format(type(statistics_config))
619
- )
620
- return self.set_spec(
621
- self.CONST_STATISTICS_CONFIG, statistics_config_in.to_dict()
622
- )
623
-
624
- @property
625
- def features(self) -> List[Feature]:
626
- return [
627
- Feature(**feature_dict)
628
- for feature_dict in self.get_spec(self.CONST_OUTPUT_FEATURE_DETAILS)[
629
- self.CONST_ITEMS
630
- ]
631
- or []
632
- ]
633
-
634
- def with_job_id(self, feature_group_job_id: str) -> "FeatureGroup":
635
- """Sets the job_id for the last running job.
636
-
637
- Parameters
638
- ----------
639
- feature_group_job_id: str
640
- FeatureGroup job id.
641
- Returns
642
- -------
643
- FeatureGroup
644
- The FeatureGroup instance (self)
645
- """
646
- return self.set_spec(self.CONST_LAST_JOB_ID, feature_group_job_id)
647
-
648
- @property
649
- def is_infer_schema(self) -> bool:
650
- return self.get_spec(self.CONST_INFER_SCHEMA)
651
-
652
- @is_infer_schema.setter
653
- def is_infer_schema(self, value: bool):
654
- self.with_is_infer_schema(value)
655
-
656
- def with_is_infer_schema(self, is_infer_schema: bool) -> "FeatureGroup":
657
- """Sets the job_id for the last running job.
658
-
659
- Parameters
660
- ----------
661
- is_infer_schema: bool
662
- Infer Schema or not.
663
- Returns
664
- -------
665
- FeatureGroup
666
- The FeatureGroup instance (self)
667
- """
668
- return self.set_spec(self.CONST_INFER_SCHEMA, is_infer_schema)
669
-
670
- def target_delta_table(self):
671
- """
672
- Returns the fully-qualified name of the target table for storing delta data.
673
-
674
- The name of the target table is constructed by concatenating the entity ID
675
- and the name of the table, separated by a dot. The resulting string has the
676
- format 'entity_id.table_name'.
677
-
678
- Returns:
679
- str: The fully-qualified name of the target delta table.
680
- """
681
- target_table = f"{self.entity_id}.{self.name}"
682
- return target_table
683
-
684
- @property
685
- def job_id(self) -> str:
686
- return self.get_spec(self.CONST_LAST_JOB_ID)
687
-
688
- def create(self, **kwargs) -> "FeatureGroup":
689
- """Creates feature group resource.
690
-
691
- !!! note "Lazy"
692
- This method is lazy and does not persist any metadata or feature data in the
693
- feature store on its own. To persist the feature group and save feature data
694
- along the metadata in the feature store, call the `materialise()` method with a
695
- DataFrame or with a Datasource.
696
-
697
- Parameters
698
- ----------
699
- kwargs
700
- Additional kwargs arguments.
701
- Can be any attribute that `feature_store.models.FeatureGroup` accepts.
702
-
703
- Returns
704
- -------
705
- FeatureGroup
706
- The FeatureGroup instance (self)
707
-
708
- Raises
709
- ------
710
- ValueError
711
- If compartment id not provided.
712
- """
713
- self.compartment_id = OCIModelMixin.check_compartment_id(self.compartment_id)
714
-
715
- if not self.feature_store_id:
716
- raise ValueError("FeatureStore id must be provided.")
717
-
718
- if not self.entity_id:
719
- raise ValueError("Entity id must be provided.")
720
-
721
- if not self.name:
722
- self.name = self._random_display_name()
723
-
724
- if self.statistics_config is None:
725
- self.statistics_config = StatisticsConfig()
726
-
727
- payload = deepcopy(self._spec)
728
- payload.pop("id", None)
729
- logger.debug(f"Creating a feature group resource with payload {payload}")
730
-
731
- # Create feature group
732
- logger.info("Saving feature group.")
733
- self.oci_feature_group = self._to_oci_feature_group(**kwargs).create()
734
- self.with_id(self.oci_feature_group.id)
735
- return self
736
-
737
- def get_features(self) -> List[Feature]:
738
- """
739
- Returns all the features in the feature group.
740
-
741
- Returns:
742
- List[Feature]
743
- """
744
-
745
- return self.features
746
-
747
- def get_features_df(self) -> "pd.DataFrame":
748
- """
749
- Returns all the features as pandas dataframe.
750
-
751
- Returns:
752
- pandas.DataFrame
753
- """
754
- records = []
755
- for feature in self.features:
756
- records.append(
757
- {
758
- "name": feature.feature_name,
759
- "type": feature.feature_type,
760
- }
761
- )
762
- return pd.DataFrame.from_records(records)
763
-
764
- def get_input_features_df(self) -> "pd.DataFrame":
765
- """
766
- Returns all the input features details as pandas dataframe.
767
-
768
- Returns:
769
- pandas.DataFrame
770
- """
771
- records = []
772
- for input_feature in self.input_feature_details:
773
- records.append(
774
- {
775
- "name": input_feature.get("name"),
776
- "type": input_feature.get("featureType"),
777
- "order_number": input_feature.get("orderNumber"),
778
- "is_event_timestamp": input_feature.get("isEventTimestamp"),
779
- "event_timestamp_format": input_feature.get("eventTimestampFormat"),
780
- }
781
- )
782
- return pd.DataFrame.from_records(records)
783
-
784
- def update(self, **kwargs) -> "FeatureGroup":
785
- """Updates FeatureGroup in the feature store.
786
-
787
- Parameters
788
- ----------
789
- kwargs
790
- Additional kwargs arguments.
791
- Can be any attribute that `feature_store.models.FeatureGroup` accepts.
792
-
793
- Returns
794
- -------
795
- FeatureGroup
796
- The FeatureGroup instance (self).
797
- """
798
-
799
- if not self.id:
800
- raise ValueError(
801
- "FeatureGroup needs to be saved to the feature store before it can be updated."
802
- )
803
-
804
- self.oci_feature_group = self._to_oci_feature_group(**kwargs).update()
805
- return self
806
-
807
- def _update_from_oci_feature_group_model(
808
- self, oci_feature_group: OCIFeatureGroup
809
- ) -> "FeatureGroup":
810
- """Update the properties from an OCIFeatureGroup object.
811
-
812
- Parameters
813
- ----------
814
- oci_feature_group: OCIFeatureGroup
815
- An instance of OCIFeatureGroup.
816
-
817
- Returns
818
- -------
819
- FeatureGroup
820
- The FeatureGroup instance (self).
821
- """
822
-
823
- # Update the main properties
824
- self.oci_feature_group = oci_feature_group
825
- feature_group_details = oci_feature_group.to_dict()
826
-
827
- for infra_attr, dsc_attr in self.attribute_map.items():
828
- if infra_attr in feature_group_details:
829
- if infra_attr == self.CONST_OUTPUT_FEATURE_DETAILS:
830
- # May not need if we fix the backend and add feature_group_id to the output_feature
831
- features_list = []
832
- for output_feature in feature_group_details[infra_attr]["items"]:
833
- output_feature["featureGroupId"] = feature_group_details[
834
- self.CONST_ID
835
- ]
836
- features_list.append(output_feature)
837
-
838
- value = {self.CONST_ITEMS: features_list}
839
- else:
840
- value = feature_group_details[infra_attr]
841
-
842
- self.set_spec(infra_attr, value)
843
-
844
- return self
845
-
846
- def _build_feature_group_job(
847
- self,
848
- ingestion_mode,
849
- from_timestamp: str = None,
850
- to_timestamp: str = None,
851
- feature_option_details=None,
852
- ):
853
- feature_group_job = (
854
- FeatureGroupJob()
855
- .with_feature_group_id(self.id)
856
- .with_compartment_id(self.compartment_id)
857
- .with_ingestion_mode(ingestion_mode)
858
- .with_time_from(from_timestamp)
859
- .with_time_to(to_timestamp)
860
- )
861
-
862
- if feature_option_details:
863
- feature_group_job = feature_group_job.with_feature_option_details(
864
- feature_option_details
865
- )
866
-
867
- return feature_group_job
868
-
869
- def materialise(
870
- self,
871
- input_dataframe: Union[DataFrame, pd.DataFrame],
872
- ingestion_mode: BatchIngestionMode = BatchIngestionMode.OVERWRITE,
873
- from_timestamp: str = None,
874
- to_timestamp: str = None,
875
- feature_option_details: FeatureOptionDetails = None,
876
- ):
877
- """
878
- Executes a feature group job to materialize feature data into the feature store.
879
-
880
- Args:
881
- input_dataframe. A pandas/spark DataFrame containing the input data for the feature group job.
882
- ingestion_mode: Optional. An instance of the IngestionMode enum indicating how to ingest the data into the feature store.
883
- from_timestamp: Optional. A string representing the lower bound of the time range of data to include in the job.
884
- to_timestamp: Optional. A string representing the upper bound of the time range of data to include in the job.
885
- feature_option_details: Optional. An instance of the FeatureOptionDetails class containing feature options.
886
-
887
- Returns:
888
- None. This method does not return anything.
889
-
890
- Raises:
891
- Any exceptions thrown by the underlying execution strategy or feature store.
892
-
893
- """
894
-
895
- # Create Feature Definition Job and persist it
896
- feature_group_job = self._build_feature_group_job(
897
- ingestion_mode=ingestion_mode,
898
- from_timestamp=from_timestamp,
899
- to_timestamp=to_timestamp,
900
- feature_option_details=feature_option_details,
901
- )
902
-
903
- # Create the Job
904
- feature_group_job.create()
905
- # Update the feature group with corresponding job so that user can see the details about the job
906
- self.with_job_id(feature_group_job.id)
907
-
908
- feature_group_execution_strategy = (
909
- OciExecutionStrategyProvider.provide_execution_strategy(
910
- execution_engine=get_execution_engine_type(input_dataframe),
911
- metastore_id=get_metastore_id(self.feature_store_id),
912
- )
913
- )
914
-
915
- feature_group_execution_strategy.ingest_feature_definition(
916
- self, feature_group_job, input_dataframe
917
- )
918
-
919
- def materialise_stream(
920
- self,
921
- input_dataframe: Union[DataFrame],
922
- checkpoint_dir: str,
923
- query_name: Optional[str] = None,
924
- ingestion_mode: StreamingIngestionMode = StreamingIngestionMode.APPEND,
925
- await_termination: Optional[bool] = False,
926
- timeout: Optional[int] = None,
927
- feature_option_details: FeatureOptionDetails = None,
928
- ):
929
- """Ingest a Spark Structured Streaming Dataframe to the feature store.
930
-
931
- This method creates a long running Spark Streaming Query, you can control the
932
- termination of the query through the arguments.
933
-
934
- It is possible to stop the returned query with the `.stop()` and check its
935
- status with `.isActive`.
936
-
937
- !!! warning "Engine Support"
938
- **Spark only**
939
-
940
- Stream ingestion using Pandas/Python as engine is currently not supported.
941
- Python/Pandas has no notion of streaming.
942
-
943
- !!! warning "Data Validation Support"
944
- `materialise_stream` does not perform any data validation using Great Expectations
945
- even when a expectation suite is attached.
946
-
947
- # Arguments
948
- input_dataframe: Features in Streaming Dataframe to be saved.
949
- query_name: It is possible to optionally specify a name for the query to
950
- make it easier to recognise in the Spark UI. Defaults to `None`.
951
- ingestion_mode: Specifies how data of a streaming DataFrame/Dataset is
952
- written to a streaming sink. (1) `"append"`: Only the new rows in the
953
- streaming DataFrame/Dataset will be written to the sink. (2)
954
- `"complete"`: All the rows in the streaming DataFrame/Dataset will be
955
- written to the sink every time there is some update. (3) `"update"`:
956
- only the rows that were updated in the streaming DataFrame/Dataset will
957
- be written to the sink every time there are some updates.
958
- If the query doesn’t contain aggregations, it will be equivalent to
959
- append mode. Defaults to `"append"`.
960
- await_termination: Waits for the termination of this query, either by
961
- query.stop() or by an exception. If the query has terminated with an
962
- exception, then the exception will be thrown. If timeout is set, it
963
- returns whether the query has terminated or not within the timeout
964
- seconds. Defaults to `False`.
965
- timeout: Only relevant in combination with `await_termination=True`.
966
- Defaults to `None`.
967
- checkpoint_dir: Checkpoint directory location. This will be used to as a reference to
968
- from where to resume the streaming job.
969
-
970
- # Returns
971
- `StreamingQuery`: Spark Structured Streaming Query object.
972
- """
973
-
974
- # Create Feature Definition Job and persist it
975
- feature_group_job = self._build_feature_group_job(
976
- ingestion_mode=ingestion_mode,
977
- feature_option_details=feature_option_details,
978
- )
979
-
980
- # Create the Job
981
- feature_group_job.create()
982
-
983
- # Update the feature group with corresponding job so that user can see the details about the job
984
- self.with_job_id(feature_group_job.id)
985
-
986
- feature_group_execution_strategy = (
987
- OciExecutionStrategyProvider.provide_execution_strategy(
988
- execution_engine=get_execution_engine_type(input_dataframe),
989
- metastore_id=get_metastore_id(self.feature_store_id),
990
- )
991
- )
992
-
993
- return feature_group_execution_strategy.ingest_feature_definition_stream(
994
- self,
995
- feature_group_job,
996
- input_dataframe,
997
- query_name,
998
- await_termination,
999
- timeout,
1000
- checkpoint_dir,
1001
- )
1002
-
1003
- def get_last_job(self) -> "FeatureGroupJob":
1004
- """Gets the Job details for the last running job.
1005
-
1006
- Returns:
1007
- FeatureGroupJob
1008
- """
1009
-
1010
- if not self.id:
1011
- raise ValueError(
1012
- "FeatureGroup needs to be saved to the feature store before getting associated jobs."
1013
- )
1014
-
1015
- if not self.job_id:
1016
- fg_job = FeatureGroupJob.list(
1017
- feature_group_id=self.id,
1018
- compartment_id=self.compartment_id,
1019
- sort_by="timeCreated",
1020
- limit="1",
1021
- )
1022
- if not fg_job:
1023
- raise ValueError(
1024
- "Unable to retrieve the associated last job. Please make sure you materialized the data."
1025
- )
1026
- self.with_job_id(fg_job[0].id)
1027
- return fg_job[0]
1028
- return FeatureGroupJob.from_id(self.job_id)
1029
-
1030
- def select(self, features: Optional[List[str]] = ()) -> Query:
1031
- """
1032
- Selects a subset of features from the feature group and returns a Query object that can be used to view the
1033
- resulting dataframe.
1034
-
1035
- Args:
1036
- features (Optional[List[str]], optional): A list of feature names to be selected. Defaults to [].
1037
-
1038
- Returns:
1039
- Query: A Query object that includes the selected features from the feature group.
1040
- """
1041
- self.check_resource_materialization()
1042
-
1043
- if features:
1044
- self.__validate_features_exist(features)
1045
-
1046
- return Query(
1047
- left_feature_group=self,
1048
- left_features=features,
1049
- feature_store_id=self.feature_store_id,
1050
- entity_id=self.entity_id,
1051
- )
1052
-
1053
- def delete(self):
1054
- """Removes FeatureGroup Resource.
1055
- Returns
1056
- -------
1057
- None
1058
- """
1059
- # Create Feature Definition Job and persist it
1060
- feature_group_job = self._build_feature_group_job(BatchIngestionMode.DEFAULT)
1061
-
1062
- # Create the Job
1063
- feature_group_job.create()
1064
- feature_group_execution_strategy = (
1065
- OciExecutionStrategyProvider.provide_execution_strategy(
1066
- execution_engine=ExecutionEngine.SPARK,
1067
- metastore_id=get_metastore_id(self.feature_store_id),
1068
- )
1069
- )
1070
-
1071
- feature_group_execution_strategy.delete_feature_definition(
1072
- self, feature_group_job
1073
- )
1074
-
1075
- def filter(self, f: Union[Filter, Logic]):
1076
- """Apply filter to the feature group.
1077
-
1078
- Selects all features and returns the resulting `Query` with the applied filter.
1079
-
1080
- ```python
1081
- fg.filter((fg.feature1 == 1) | (fg.feature2 >= 2))
1082
- ```
1083
-
1084
- # Arguments
1085
- f: Filter object.
1086
-
1087
- # Returns
1088
- `Query`. The query object with the applied filter.
1089
- """
1090
- return self.select().filter(f)
1091
-
1092
- @deprecated(details="preview functionality is deprecated. Please use as_of.")
1093
- def preview(
1094
- self,
1095
- row_count: int = 10,
1096
- version_number: int = None,
1097
- timestamp: datetime = None,
1098
- ):
1099
- """preview the feature definition and return the response in dataframe.
1100
-
1101
- Parameters
1102
- ----------
1103
- timestamp: datetime
1104
- commit date time to preview in format yyyy-MM-dd or yyyy-MM-dd HH:mm:ss
1105
- commit date time is maintained for every ingestion commit using delta lake
1106
- version_number: int
1107
- commit version number for the preview. Version numbers are automatically versioned for every ingestion
1108
- commit using delta lake
1109
- row_count: int
1110
- preview row count
1111
-
1112
- Returns
1113
- -------
1114
- spark dataframe
1115
- The preview result in spark dataframe
1116
- """
1117
- self.check_resource_materialization()
1118
-
1119
- validate_delta_format_parameters(timestamp, version_number)
1120
- target_table = self.target_delta_table()
1121
-
1122
- if version_number is not None:
1123
- logger.warning("Time travel queries are not supported in current version")
1124
-
1125
- sql_query = f"select * from {target_table} LIMIT {row_count}"
1126
-
1127
- return self.spark_engine.sql(sql_query)
1128
-
1129
- def as_of(
1130
- self,
1131
- version_number: int = None,
1132
- commit_timestamp: datetime = None,
1133
- ):
1134
- """preview the feature definition and return the response in dataframe.
1135
-
1136
- Parameters
1137
- ----------
1138
- commit_timestamp: datetime
1139
- commit date time to preview in format yyyy-MM-dd or yyyy-MM-dd HH:mm:ss
1140
- commit date time is maintained for every ingestion commit using delta lake
1141
- version_number: int
1142
- commit version number for the preview. Version numbers are automatically versioned for every ingestion
1143
- commit using delta lake
1144
-
1145
- Returns
1146
- -------
1147
- spark dataframe
1148
- The preview result in spark dataframe
1149
- """
1150
- self.check_resource_materialization()
1151
-
1152
- validate_delta_format_parameters(commit_timestamp, version_number)
1153
- target_table = self.target_delta_table()
1154
-
1155
- return self.spark_engine.get_time_version_data(
1156
- target_table, version_number, commit_timestamp
1157
- )
1158
-
1159
- def profile(self):
1160
- """get the profile information for feature definition and return the response in dataframe.
1161
-
1162
- Returns
1163
- -------
1164
- spark dataframe
1165
- The profile result in spark dataframe
1166
- """
1167
- self.check_resource_materialization()
1168
-
1169
- sql_query = f"DESCRIBE DETAIL {self.target_delta_table()}"
1170
-
1171
- return self.spark_engine.sql(sql_query)
1172
-
1173
- def restore(self, version_number: int = None, timestamp: datetime = None):
1174
- """restore the feature definition and return the response in dataframe.
1175
-
1176
- Parameters
1177
- ----------
1178
- timestamp: datetime
1179
- commit date time to restore in format yyyy-MM-dd or yyyy-MM-dd HH:mm:ss.
1180
- commit date time is maintained for every ingestion commit using delta lake
1181
- version_number: int
1182
- commit version number to restore. Version numbers are automatically versioned for every ingestion
1183
- commit using delta lake
1184
- Returns
1185
- -------
1186
- spark dataframe
1187
- The restore output as spark dataframe
1188
- """
1189
- self.check_resource_materialization()
1190
-
1191
- validate_delta_format_parameters(timestamp, version_number, True)
1192
- target_table = self.target_delta_table()
1193
- if version_number is not None:
1194
- sql_query = (
1195
- f"RESTORE TABLE {target_table} TO VERSION AS OF {version_number}"
1196
- )
1197
- else:
1198
- sql_query = f"RESTORE TABLE {target_table} TO TIMESTAMP AS OF {timestamp}"
1199
-
1200
- restore_output = self.spark_engine.sql(sql_query)
1201
-
1202
- feature_group_execution_strategy = (
1203
- OciExecutionStrategyProvider.provide_execution_strategy(
1204
- execution_engine=ExecutionEngine.SPARK,
1205
- metastore_id=get_metastore_id(self.feature_store_id),
1206
- )
1207
- )
1208
-
1209
- feature_group_execution_strategy.update_feature_definition_features(
1210
- self, target_table
1211
- )
1212
-
1213
- return restore_output
1214
-
1215
- def check_resource_materialization(self):
1216
- """Checks whether the target Delta table for this resource has been materialized in Spark.
1217
- If the target Delta table doesn't exist, raises a NotMaterializedError with the type and name of this resource.
1218
- """
1219
- if not self.spark_engine.is_delta_table_exists(self.target_delta_table()):
1220
- raise NotMaterializedError(self.type, self.name)
1221
-
1222
- def history(self):
1223
- """get the feature definition commit history.
1224
-
1225
- Returns
1226
- -------
1227
- spark dataframe
1228
- The history output as spark dataframe
1229
- """
1230
- target_table = self.target_delta_table()
1231
- sql_query = f"DESCRIBE HISTORY {target_table}"
1232
- return self.spark_engine.sql(sql_query)
1233
-
1234
- @classmethod
1235
- def list_df(cls, compartment_id: str = None, **kwargs) -> "pd.DataFrame":
1236
- """Lists FeatureGroup resources in a given compartment.
1237
-
1238
- Parameters
1239
- ----------
1240
- compartment_id: (str, optional). Defaults to `None`.
1241
- The compartment OCID.
1242
- kwargs
1243
- Additional keyword arguments for filtering models.
1244
-
1245
- Returns
1246
- -------
1247
- pandas.DataFrame
1248
- The list of the FeatureGroup resources in a pandas dataframe format.
1249
- """
1250
- records = []
1251
- for oci_feature_group in OCIFeatureGroup.list_resource(
1252
- compartment_id, **kwargs
1253
- ):
1254
- oci_feature_group: OCIFeatureGroup = oci_feature_group
1255
- records.append(oci_feature_group.to_df_record())
1256
-
1257
- return pd.DataFrame.from_records(records)
1258
-
1259
- @classmethod
1260
- def list(cls, compartment_id: str = None, **kwargs) -> List["FeatureGroup"]:
1261
- """Lists FeatureGroup Resources in a given compartment.
1262
-
1263
- Parameters
1264
- ----------
1265
- compartment_id: (str, optional). Defaults to `None`.
1266
- The compartment OCID.
1267
- kwargs
1268
- Additional keyword arguments for filtering FeatureGroup.
1269
-
1270
- Returns
1271
- -------
1272
- List[FeatureGroup]
1273
- The list of the FeatureGroup Resources.
1274
- """
1275
- return [
1276
- cls()._update_from_oci_feature_group_model(oci_feature_group)
1277
- for oci_feature_group in OCIFeatureGroup.list_resource(
1278
- compartment_id, **kwargs
1279
- )
1280
- ]
1281
-
1282
- @classmethod
1283
- def from_id(cls, id: str) -> "FeatureGroup":
1284
- """Gets an existing feature group resource by Id.
1285
-
1286
- Parameters
1287
- ----------
1288
- id: str
1289
- The feature group id.
1290
-
1291
- Returns
1292
- -------
1293
- FeatureGroup
1294
- An instance of FeatureGroup resource.
1295
- """
1296
- return cls()._update_from_oci_feature_group_model(OCIFeatureGroup.from_id(id))
1297
-
1298
- def _random_display_name(self):
1299
- """Generates a random display name."""
1300
- return f"{self._PREFIX}-{utils.get_random_name_for_resource()}"
1301
-
1302
- def to_dict(self) -> Dict:
1303
- """Serializes feature group to a dictionary.
1304
-
1305
- Returns
1306
- -------
1307
- dict
1308
- The feature group resource serialized as a dictionary.
1309
- """
1310
-
1311
- spec = deepcopy(self._spec)
1312
- for key, value in spec.items():
1313
- if hasattr(value, "to_dict"):
1314
- value = value.to_dict()
1315
- spec[key] = value
1316
-
1317
- return {
1318
- "kind": self.kind,
1319
- "type": self.type,
1320
- "spec": utils.batch_convert_case(spec, "camel"),
1321
- }
1322
-
1323
- def __repr__(self) -> str:
1324
- """Displays the object as YAML."""
1325
- return self.to_yaml()
1326
-
1327
- def show(self, rankdir: str = GraphOrientation.LEFT_RIGHT) -> None:
1328
- """
1329
- Show the lineage tree for the feature_group instance.
1330
-
1331
- Raises:
1332
- ValueError: If lineage graph cannot be plotted due to missing lineage information.
1333
- """
1334
- lineage = self.lineage.from_id(self.id)
1335
- if lineage:
1336
- GraphService.view_lineage(lineage.data, EntityType.FEATURE_GROUP, rankdir)
1337
- else:
1338
- raise ValueError(
1339
- f"Can't get lineage information for Feature group id {self.id}"
1340
- )
1341
-
1342
- def __validate_features_exist(self, features: List[str]) -> None:
1343
- """
1344
- Validates whether each feature in the input list is present in the output features list.
1345
-
1346
- Args:
1347
- features (List[str]): A list of feature names to validate.
1348
-
1349
- Raises:
1350
- ValueError: If any feature in the input list is not present in the output features list.
1351
- """
1352
- # Get a list of output feature names
1353
- output_feature_names = [
1354
- output_feature.feature_name for output_feature in self.features
1355
- ]
1356
-
1357
- # Initialize an empty list to store non-existing features
1358
- non_existing_features = []
1359
-
1360
- # Check if each feature in the input list is present in the output features list
1361
- for feature in features:
1362
- if feature not in output_feature_names:
1363
- non_existing_features.append(feature)
1364
-
1365
- # If there are any non-existing features, raise a ValueError
1366
- if len(non_existing_features) != 0:
1367
- raise ValueError(
1368
- f"Features {non_existing_features} are not defined in the feature group."
1369
- )
1370
-
1371
- def get_feature(self, name: str):
1372
- """Retrieve a `Feature` object from the schema of the feature group.
1373
-
1374
- There are several ways to access features of a feature group:
1375
-
1376
- ```python
1377
- fg.feature1
1378
- fg.get_feature("feature1")
1379
- ```
1380
-
1381
- Args:
1382
- name (str): [description]
1383
-
1384
- Returns:
1385
- [type]: [description]
1386
- """
1387
- try:
1388
- return self.__getitem__(name)
1389
- except KeyError:
1390
- raise ValueError(f"'FeatureGroup' object has no feature called '{name}'.")
1391
-
1392
- def _get_job_id(self, job_id: str = None) -> str:
1393
- """
1394
- Helper function to determine the job ID based on the given input or the last run job.
1395
-
1396
- Args:
1397
- job_id (str): Job ID provided by the user.
1398
-
1399
- Returns:
1400
- str: Job ID to be used.
1401
- """
1402
- if job_id is not None:
1403
- return job_id
1404
-
1405
- if self.job_id is None:
1406
- raise ValueError(
1407
- "Unable to retrieve the last job. Please provide the job ID and make sure you materialized the data."
1408
- )
1409
-
1410
- return self.job_id
1411
-
1412
- def get_statistics(self, job_id: str = None) -> "Statistics":
1413
- """Retrieve Statistics object for the job with job_id
1414
- if job_id is not specified the last run job will be considered.
1415
- Args:
1416
- job_id (str): [job id of the job for which the statistics need to be calculated]
1417
-
1418
- Returns:
1419
- [type]: [Statistics]
1420
- """
1421
-
1422
- if not self.id:
1423
- raise ValueError(
1424
- "FeatureGroup needs to be saved to the feature store before retrieving the statistics"
1425
- )
1426
-
1427
- stat_job_id = job_id if job_id is not None else self.get_last_job().id
1428
-
1429
- # TODO: take the one in memory or will list down job ids and find the latest
1430
- fg_job = FeatureGroupJob.from_id(stat_job_id)
1431
- if self.id != fg_job.feature_group_id:
1432
- raise ValueError(
1433
- "The specified job id does not belong to this feature group"
1434
- )
1435
- output_details = fg_job.job_output_details
1436
- feature_statistics = (
1437
- output_details.get("featureStatistics") if output_details else None
1438
- )
1439
- stat_version = output_details.get("version") if output_details else None
1440
- version = stat_version if stat_version is not None else 1
1441
-
1442
- return Statistics(feature_statistics, version)
1443
-
1444
- def get_validation_output(self, job_id: str = None) -> "ValidationOutput":
1445
- """Retrieve validation report for the job with job_id
1446
- if job_id is not specified the last run job will be considered.
1447
- Args:
1448
- job_id (str): [job id of the job for which the validation report need to be retrieved]
1449
-
1450
- Returns:
1451
- ValidationOutput
1452
- """
1453
-
1454
- if not self.id:
1455
- raise ValueError(
1456
- "FeatureGroup needs to be saved to the feature store before retrieving the validation report"
1457
- )
1458
-
1459
- validation_job_id = job_id if job_id is not None else self.get_last_job().id
1460
-
1461
- # Retrieve the validation output JSON from data_flow_batch_execution_output.
1462
- fg_job = FeatureGroupJob.from_id(validation_job_id)
1463
- output_details = fg_job.job_output_details
1464
- validation_output = (
1465
- output_details.get("validationOutput") if output_details else None
1466
- )
1467
-
1468
- return ValidationOutput(validation_output)
1469
-
1470
- def __getattr__(self, name):
1471
- try:
1472
- return self.__getitem__(name)
1473
- except KeyError:
1474
- raise AttributeError(
1475
- f"'FeatureGroup' object has no attribute '{name}'. "
1476
- "If you are trying to access a feature, fall back on "
1477
- "using the `get_feature` method."
1478
- )
1479
-
1480
- def __getitem__(self, name):
1481
- if not isinstance(name, str):
1482
- raise TypeError(
1483
- f"Expected type `str`, got `{type(name)}`. "
1484
- "Features are accessible by name."
1485
- )
1486
- feature = [
1487
- feature
1488
- for feature in self.__getattribute__("features")
1489
- if feature.feature_name == name
1490
- ]
1491
- if len(feature) == 1:
1492
- return feature[0]
1493
- else:
1494
- raise KeyError(f"'FeatureGroup' object has no feature called '{name}'.")