teradataml 17.20.0.7__py3-none-any.whl → 20.0.0.0__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.

Potentially problematic release.


This version of teradataml might be problematic. Click here for more details.

Files changed (1285) hide show
  1. teradataml/LICENSE-3RD-PARTY.pdf +0 -0
  2. teradataml/LICENSE.pdf +0 -0
  3. teradataml/README.md +1864 -1640
  4. teradataml/__init__.py +70 -60
  5. teradataml/_version.py +11 -11
  6. teradataml/analytics/Transformations.py +2995 -2995
  7. teradataml/analytics/__init__.py +81 -83
  8. teradataml/analytics/analytic_function_executor.py +2013 -2010
  9. teradataml/analytics/analytic_query_generator.py +958 -958
  10. teradataml/analytics/byom/H2OPredict.py +514 -514
  11. teradataml/analytics/byom/PMMLPredict.py +437 -437
  12. teradataml/analytics/byom/__init__.py +14 -14
  13. teradataml/analytics/json_parser/__init__.py +130 -130
  14. teradataml/analytics/json_parser/analytic_functions_argument.py +1707 -1707
  15. teradataml/analytics/json_parser/json_store.py +191 -191
  16. teradataml/analytics/json_parser/metadata.py +1637 -1637
  17. teradataml/analytics/json_parser/utils.py +804 -803
  18. teradataml/analytics/meta_class.py +196 -196
  19. teradataml/analytics/sqle/DecisionTreePredict.py +455 -470
  20. teradataml/analytics/sqle/NaiveBayesPredict.py +419 -428
  21. teradataml/analytics/sqle/__init__.py +97 -110
  22. teradataml/analytics/sqle/json/decisiontreepredict_sqle.json +78 -78
  23. teradataml/analytics/sqle/json/naivebayespredict_sqle.json +62 -62
  24. teradataml/analytics/table_operator/__init__.py +10 -10
  25. teradataml/analytics/uaf/__init__.py +63 -63
  26. teradataml/analytics/utils.py +693 -692
  27. teradataml/analytics/valib.py +1603 -1600
  28. teradataml/automl/__init__.py +1628 -0
  29. teradataml/automl/custom_json_utils.py +1270 -0
  30. teradataml/automl/data_preparation.py +993 -0
  31. teradataml/automl/data_transformation.py +727 -0
  32. teradataml/automl/feature_engineering.py +1648 -0
  33. teradataml/automl/feature_exploration.py +547 -0
  34. teradataml/automl/model_evaluation.py +163 -0
  35. teradataml/automl/model_training.py +887 -0
  36. teradataml/catalog/__init__.py +1 -3
  37. teradataml/catalog/byom.py +1759 -1716
  38. teradataml/catalog/function_argument_mapper.py +859 -861
  39. teradataml/catalog/model_cataloging_utils.py +491 -1510
  40. teradataml/clients/pkce_client.py +481 -481
  41. teradataml/common/aed_utils.py +6 -2
  42. teradataml/common/bulk_exposed_utils.py +111 -111
  43. teradataml/common/constants.py +1433 -1441
  44. teradataml/common/deprecations.py +160 -0
  45. teradataml/common/exceptions.py +73 -73
  46. teradataml/common/formula.py +742 -742
  47. teradataml/common/garbagecollector.py +592 -635
  48. teradataml/common/messagecodes.py +422 -431
  49. teradataml/common/messages.py +227 -231
  50. teradataml/common/sqlbundle.py +693 -693
  51. teradataml/common/td_coltype_code_to_tdtype.py +48 -48
  52. teradataml/common/utils.py +2418 -2500
  53. teradataml/common/warnings.py +25 -25
  54. teradataml/common/wrapper_utils.py +1 -110
  55. teradataml/config/dummy_file1.cfg +4 -4
  56. teradataml/config/dummy_file2.cfg +2 -2
  57. teradataml/config/sqlengine_alias_definitions_v1.0 +13 -13
  58. teradataml/config/sqlengine_alias_definitions_v1.1 +19 -19
  59. teradataml/config/sqlengine_alias_definitions_v1.3 +18 -18
  60. teradataml/context/aed_context.py +217 -217
  61. teradataml/context/context.py +1071 -999
  62. teradataml/data/A_loan.csv +19 -19
  63. teradataml/data/BINARY_REALS_LEFT.csv +11 -11
  64. teradataml/data/BINARY_REALS_RIGHT.csv +11 -11
  65. teradataml/data/B_loan.csv +49 -49
  66. teradataml/data/BuoyData2.csv +17 -17
  67. teradataml/data/CONVOLVE2_COMPLEX_LEFT.csv +5 -5
  68. teradataml/data/CONVOLVE2_COMPLEX_RIGHT.csv +5 -5
  69. teradataml/data/Convolve2RealsLeft.csv +5 -5
  70. teradataml/data/Convolve2RealsRight.csv +5 -5
  71. teradataml/data/Convolve2ValidLeft.csv +11 -11
  72. teradataml/data/Convolve2ValidRight.csv +11 -11
  73. teradataml/data/DFFTConv_Real_8_8.csv +65 -65
  74. teradataml/data/Orders1_12mf.csv +24 -24
  75. teradataml/data/Pi_loan.csv +7 -7
  76. teradataml/data/SMOOTHED_DATA.csv +7 -7
  77. teradataml/data/TestDFFT8.csv +9 -9
  78. teradataml/data/TestRiver.csv +109 -109
  79. teradataml/data/Traindata.csv +28 -28
  80. teradataml/data/acf.csv +17 -17
  81. teradataml/data/adaboost_example.json +34 -34
  82. teradataml/data/adaboostpredict_example.json +24 -24
  83. teradataml/data/additional_table.csv +10 -10
  84. teradataml/data/admissions_test.csv +21 -21
  85. teradataml/data/admissions_train.csv +41 -41
  86. teradataml/data/admissions_train_nulls.csv +41 -41
  87. teradataml/data/ageandheight.csv +13 -13
  88. teradataml/data/ageandpressure.csv +31 -31
  89. teradataml/data/antiselect_example.json +36 -36
  90. teradataml/data/antiselect_input.csv +8 -8
  91. teradataml/data/antiselect_input_mixed_case.csv +8 -8
  92. teradataml/data/applicant_external.csv +6 -6
  93. teradataml/data/applicant_reference.csv +6 -6
  94. teradataml/data/arima_example.json +9 -9
  95. teradataml/data/assortedtext_input.csv +8 -8
  96. teradataml/data/attribution_example.json +33 -33
  97. teradataml/data/attribution_sample_table.csv +27 -27
  98. teradataml/data/attribution_sample_table1.csv +6 -6
  99. teradataml/data/attribution_sample_table2.csv +11 -11
  100. teradataml/data/bank_churn.csv +10001 -0
  101. teradataml/data/bank_web_clicks1.csv +42 -42
  102. teradataml/data/bank_web_clicks2.csv +91 -91
  103. teradataml/data/bank_web_url.csv +85 -85
  104. teradataml/data/barrier.csv +2 -2
  105. teradataml/data/barrier_new.csv +3 -3
  106. teradataml/data/betweenness_example.json +13 -13
  107. teradataml/data/bin_breaks.csv +8 -8
  108. teradataml/data/bin_fit_ip.csv +3 -3
  109. teradataml/data/binary_complex_left.csv +11 -11
  110. teradataml/data/binary_complex_right.csv +11 -11
  111. teradataml/data/binary_matrix_complex_left.csv +21 -21
  112. teradataml/data/binary_matrix_complex_right.csv +21 -21
  113. teradataml/data/binary_matrix_real_left.csv +21 -21
  114. teradataml/data/binary_matrix_real_right.csv +21 -21
  115. teradataml/data/blood2ageandweight.csv +26 -26
  116. teradataml/data/bmi.csv +501 -0
  117. teradataml/data/boston.csv +507 -507
  118. teradataml/data/buoydata_mix.csv +11 -11
  119. teradataml/data/burst_data.csv +5 -5
  120. teradataml/data/burst_example.json +20 -20
  121. teradataml/data/byom_example.json +17 -17
  122. teradataml/data/bytes_table.csv +3 -3
  123. teradataml/data/cal_housing_ex_raw.csv +70 -70
  124. teradataml/data/callers.csv +7 -7
  125. teradataml/data/calls.csv +10 -10
  126. teradataml/data/cars_hist.csv +33 -33
  127. teradataml/data/cat_table.csv +24 -24
  128. teradataml/data/ccm_example.json +31 -31
  129. teradataml/data/ccm_input.csv +91 -91
  130. teradataml/data/ccm_input2.csv +13 -13
  131. teradataml/data/ccmexample.csv +101 -101
  132. teradataml/data/ccmprepare_example.json +8 -8
  133. teradataml/data/ccmprepare_input.csv +91 -91
  134. teradataml/data/cfilter_example.json +12 -12
  135. teradataml/data/changepointdetection_example.json +18 -18
  136. teradataml/data/changepointdetectionrt_example.json +8 -8
  137. teradataml/data/chi_sq.csv +2 -2
  138. teradataml/data/churn_data.csv +14 -14
  139. teradataml/data/churn_emission.csv +35 -35
  140. teradataml/data/churn_initial.csv +3 -3
  141. teradataml/data/churn_state_transition.csv +5 -5
  142. teradataml/data/citedges_2.csv +745 -745
  143. teradataml/data/citvertices_2.csv +1210 -1210
  144. teradataml/data/clicks2.csv +16 -16
  145. teradataml/data/clickstream.csv +12 -12
  146. teradataml/data/clickstream1.csv +11 -11
  147. teradataml/data/closeness_example.json +15 -15
  148. teradataml/data/complaints.csv +21 -21
  149. teradataml/data/complaints_mini.csv +3 -3
  150. teradataml/data/complaints_testtoken.csv +224 -224
  151. teradataml/data/complaints_tokens_test.csv +353 -353
  152. teradataml/data/complaints_traintoken.csv +472 -472
  153. teradataml/data/computers_category.csv +1001 -1001
  154. teradataml/data/computers_test1.csv +1252 -1252
  155. teradataml/data/computers_train1.csv +5009 -5009
  156. teradataml/data/computers_train1_clustered.csv +5009 -5009
  157. teradataml/data/confusionmatrix_example.json +9 -9
  158. teradataml/data/conversion_event_table.csv +3 -3
  159. teradataml/data/corr_input.csv +17 -17
  160. teradataml/data/correlation_example.json +11 -11
  161. teradataml/data/coxhazardratio_example.json +39 -39
  162. teradataml/data/coxph_example.json +15 -15
  163. teradataml/data/coxsurvival_example.json +28 -28
  164. teradataml/data/cpt.csv +41 -41
  165. teradataml/data/credit_ex_merged.csv +45 -45
  166. teradataml/data/customer_loyalty.csv +301 -301
  167. teradataml/data/customer_loyalty_newseq.csv +31 -31
  168. teradataml/data/dataframe_example.json +146 -146
  169. teradataml/data/decisionforest_example.json +37 -37
  170. teradataml/data/decisionforestpredict_example.json +38 -38
  171. teradataml/data/decisiontree_example.json +21 -21
  172. teradataml/data/decisiontreepredict_example.json +45 -45
  173. teradataml/data/dfft2_size4_real.csv +17 -17
  174. teradataml/data/dfft2_test_matrix16.csv +17 -17
  175. teradataml/data/dfft2conv_real_4_4.csv +65 -65
  176. teradataml/data/diabetes.csv +443 -443
  177. teradataml/data/diabetes_test.csv +89 -89
  178. teradataml/data/dict_table.csv +5 -5
  179. teradataml/data/docperterm_table.csv +4 -4
  180. teradataml/data/docs/__init__.py +1 -1
  181. teradataml/data/docs/byom/docs/DataRobotPredict.py +180 -180
  182. teradataml/data/docs/byom/docs/DataikuPredict.py +177 -177
  183. teradataml/data/docs/byom/docs/H2OPredict.py +324 -324
  184. teradataml/data/docs/byom/docs/ONNXPredict.py +283 -283
  185. teradataml/data/docs/byom/docs/PMMLPredict.py +277 -277
  186. teradataml/data/docs/sqle/docs_17_10/Antiselect.py +82 -82
  187. teradataml/data/docs/sqle/docs_17_10/Attribution.py +199 -199
  188. teradataml/data/docs/sqle/docs_17_10/BincodeFit.py +171 -171
  189. teradataml/data/docs/sqle/docs_17_10/BincodeTransform.py +131 -130
  190. teradataml/data/docs/sqle/docs_17_10/CategoricalSummary.py +86 -86
  191. teradataml/data/docs/sqle/docs_17_10/ChiSq.py +90 -90
  192. teradataml/data/docs/sqle/docs_17_10/ColumnSummary.py +85 -85
  193. teradataml/data/docs/sqle/docs_17_10/ConvertTo.py +95 -95
  194. teradataml/data/docs/sqle/docs_17_10/DecisionForestPredict.py +139 -139
  195. teradataml/data/docs/sqle/docs_17_10/DecisionTreePredict.py +151 -151
  196. teradataml/data/docs/sqle/docs_17_10/FTest.py +160 -160
  197. teradataml/data/docs/sqle/docs_17_10/FillRowId.py +82 -82
  198. teradataml/data/docs/sqle/docs_17_10/Fit.py +87 -87
  199. teradataml/data/docs/sqle/docs_17_10/GLMPredict.py +144 -144
  200. teradataml/data/docs/sqle/docs_17_10/GetRowsWithMissingValues.py +84 -84
  201. teradataml/data/docs/sqle/docs_17_10/GetRowsWithoutMissingValues.py +81 -81
  202. teradataml/data/docs/sqle/docs_17_10/Histogram.py +164 -164
  203. teradataml/data/docs/sqle/docs_17_10/MovingAverage.py +134 -134
  204. teradataml/data/docs/sqle/docs_17_10/NGramSplitter.py +208 -208
  205. teradataml/data/docs/sqle/docs_17_10/NPath.py +265 -265
  206. teradataml/data/docs/sqle/docs_17_10/NaiveBayesPredict.py +116 -116
  207. teradataml/data/docs/sqle/docs_17_10/NaiveBayesTextClassifierPredict.py +176 -176
  208. teradataml/data/docs/sqle/docs_17_10/NumApply.py +147 -147
  209. teradataml/data/docs/sqle/docs_17_10/OneHotEncodingFit.py +132 -132
  210. teradataml/data/docs/sqle/docs_17_10/OneHotEncodingTransform.py +103 -103
  211. teradataml/data/docs/sqle/docs_17_10/OutlierFilterFit.py +165 -165
  212. teradataml/data/docs/sqle/docs_17_10/OutlierFilterTransform.py +101 -101
  213. teradataml/data/docs/sqle/docs_17_10/Pack.py +128 -128
  214. teradataml/data/docs/sqle/docs_17_10/PolynomialFeaturesFit.py +111 -111
  215. teradataml/data/docs/sqle/docs_17_10/PolynomialFeaturesTransform.py +102 -102
  216. teradataml/data/docs/sqle/docs_17_10/QQNorm.py +104 -104
  217. teradataml/data/docs/sqle/docs_17_10/RoundColumns.py +109 -109
  218. teradataml/data/docs/sqle/docs_17_10/RowNormalizeFit.py +117 -117
  219. teradataml/data/docs/sqle/docs_17_10/RowNormalizeTransform.py +99 -98
  220. teradataml/data/docs/sqle/docs_17_10/SVMSparsePredict.py +152 -152
  221. teradataml/data/docs/sqle/docs_17_10/ScaleFit.py +197 -197
  222. teradataml/data/docs/sqle/docs_17_10/ScaleTransform.py +99 -98
  223. teradataml/data/docs/sqle/docs_17_10/Sessionize.py +113 -113
  224. teradataml/data/docs/sqle/docs_17_10/SimpleImputeFit.py +116 -116
  225. teradataml/data/docs/sqle/docs_17_10/SimpleImputeTransform.py +98 -98
  226. teradataml/data/docs/sqle/docs_17_10/StrApply.py +187 -187
  227. teradataml/data/docs/sqle/docs_17_10/StringSimilarity.py +145 -145
  228. teradataml/data/docs/sqle/docs_17_10/Transform.py +105 -104
  229. teradataml/data/docs/sqle/docs_17_10/UnivariateStatistics.py +141 -141
  230. teradataml/data/docs/sqle/docs_17_10/Unpack.py +214 -214
  231. teradataml/data/docs/sqle/docs_17_10/WhichMax.py +83 -83
  232. teradataml/data/docs/sqle/docs_17_10/WhichMin.py +83 -83
  233. teradataml/data/docs/sqle/docs_17_10/ZTest.py +155 -155
  234. teradataml/data/docs/sqle/docs_17_20/ANOVA.py +126 -126
  235. teradataml/data/docs/sqle/docs_17_20/Antiselect.py +82 -82
  236. teradataml/data/docs/sqle/docs_17_20/Attribution.py +200 -200
  237. teradataml/data/docs/sqle/docs_17_20/BincodeFit.py +171 -171
  238. teradataml/data/docs/sqle/docs_17_20/BincodeTransform.py +139 -138
  239. teradataml/data/docs/sqle/docs_17_20/CategoricalSummary.py +86 -86
  240. teradataml/data/docs/sqle/docs_17_20/ChiSq.py +90 -90
  241. teradataml/data/docs/sqle/docs_17_20/ClassificationEvaluator.py +166 -166
  242. teradataml/data/docs/sqle/docs_17_20/ColumnSummary.py +85 -85
  243. teradataml/data/docs/sqle/docs_17_20/ColumnTransformer.py +243 -243
  244. teradataml/data/docs/sqle/docs_17_20/ConvertTo.py +113 -113
  245. teradataml/data/docs/sqle/docs_17_20/DecisionForest.py +279 -279
  246. teradataml/data/docs/sqle/docs_17_20/DecisionForestPredict.py +144 -144
  247. teradataml/data/docs/sqle/docs_17_20/DecisionTreePredict.py +135 -135
  248. teradataml/data/docs/sqle/docs_17_20/FTest.py +160 -160
  249. teradataml/data/docs/sqle/docs_17_20/FillRowId.py +82 -82
  250. teradataml/data/docs/sqle/docs_17_20/Fit.py +87 -87
  251. teradataml/data/docs/sqle/docs_17_20/GLM.py +380 -380
  252. teradataml/data/docs/sqle/docs_17_20/GLMPerSegment.py +414 -414
  253. teradataml/data/docs/sqle/docs_17_20/GLMPredict.py +144 -144
  254. teradataml/data/docs/sqle/docs_17_20/GLMPredictPerSegment.py +233 -234
  255. teradataml/data/docs/sqle/docs_17_20/GetFutileColumns.py +123 -123
  256. teradataml/data/docs/sqle/docs_17_20/GetRowsWithMissingValues.py +108 -108
  257. teradataml/data/docs/sqle/docs_17_20/GetRowsWithoutMissingValues.py +105 -105
  258. teradataml/data/docs/sqle/docs_17_20/Histogram.py +223 -223
  259. teradataml/data/docs/sqle/docs_17_20/KMeans.py +204 -204
  260. teradataml/data/docs/sqle/docs_17_20/KMeansPredict.py +144 -143
  261. teradataml/data/docs/sqle/docs_17_20/KNN.py +214 -214
  262. teradataml/data/docs/sqle/docs_17_20/MovingAverage.py +134 -134
  263. teradataml/data/docs/sqle/docs_17_20/NGramSplitter.py +208 -208
  264. teradataml/data/docs/sqle/docs_17_20/NPath.py +265 -265
  265. teradataml/data/docs/sqle/docs_17_20/NaiveBayesPredict.py +116 -116
  266. teradataml/data/docs/sqle/docs_17_20/NaiveBayesTextClassifierPredict.py +177 -176
  267. teradataml/data/docs/sqle/docs_17_20/NaiveBayesTextClassifierTrainer.py +126 -126
  268. teradataml/data/docs/sqle/docs_17_20/NonLinearCombineFit.py +117 -117
  269. teradataml/data/docs/sqle/docs_17_20/NonLinearCombineTransform.py +112 -112
  270. teradataml/data/docs/sqle/docs_17_20/NumApply.py +147 -147
  271. teradataml/data/docs/sqle/docs_17_20/OneClassSVM.py +307 -307
  272. teradataml/data/docs/sqle/docs_17_20/OneClassSVMPredict.py +185 -184
  273. teradataml/data/docs/sqle/docs_17_20/OneHotEncodingFit.py +225 -225
  274. teradataml/data/docs/sqle/docs_17_20/OneHotEncodingTransform.py +115 -115
  275. teradataml/data/docs/sqle/docs_17_20/OrdinalEncodingFit.py +219 -219
  276. teradataml/data/docs/sqle/docs_17_20/OrdinalEncodingTransform.py +127 -127
  277. teradataml/data/docs/sqle/docs_17_20/OutlierFilterFit.py +189 -189
  278. teradataml/data/docs/sqle/docs_17_20/OutlierFilterTransform.py +117 -112
  279. teradataml/data/docs/sqle/docs_17_20/Pack.py +128 -128
  280. teradataml/data/docs/sqle/docs_17_20/PolynomialFeaturesFit.py +111 -111
  281. teradataml/data/docs/sqle/docs_17_20/PolynomialFeaturesTransform.py +112 -111
  282. teradataml/data/docs/sqle/docs_17_20/QQNorm.py +104 -104
  283. teradataml/data/docs/sqle/docs_17_20/ROC.py +163 -163
  284. teradataml/data/docs/sqle/docs_17_20/RandomProjectionFit.py +154 -154
  285. teradataml/data/docs/sqle/docs_17_20/RandomProjectionMinComponents.py +106 -106
  286. teradataml/data/docs/sqle/docs_17_20/RandomProjectionTransform.py +120 -120
  287. teradataml/data/docs/sqle/docs_17_20/RegressionEvaluator.py +211 -211
  288. teradataml/data/docs/sqle/docs_17_20/RoundColumns.py +108 -108
  289. teradataml/data/docs/sqle/docs_17_20/RowNormalizeFit.py +117 -117
  290. teradataml/data/docs/sqle/docs_17_20/RowNormalizeTransform.py +111 -110
  291. teradataml/data/docs/sqle/docs_17_20/SVM.py +413 -413
  292. teradataml/data/docs/sqle/docs_17_20/SVMPredict.py +202 -202
  293. teradataml/data/docs/sqle/docs_17_20/SVMSparsePredict.py +152 -152
  294. teradataml/data/docs/sqle/docs_17_20/ScaleFit.py +197 -197
  295. teradataml/data/docs/sqle/docs_17_20/ScaleTransform.py +110 -109
  296. teradataml/data/docs/sqle/docs_17_20/SentimentExtractor.py +206 -206
  297. teradataml/data/docs/sqle/docs_17_20/Sessionize.py +113 -113
  298. teradataml/data/docs/sqle/docs_17_20/Silhouette.py +152 -152
  299. teradataml/data/docs/sqle/docs_17_20/SimpleImputeFit.py +116 -116
  300. teradataml/data/docs/sqle/docs_17_20/SimpleImputeTransform.py +109 -108
  301. teradataml/data/docs/sqle/docs_17_20/StrApply.py +187 -187
  302. teradataml/data/docs/sqle/docs_17_20/StringSimilarity.py +145 -145
  303. teradataml/data/docs/sqle/docs_17_20/TDDecisionForestPredict.py +207 -207
  304. teradataml/data/docs/sqle/docs_17_20/TDGLMPredict.py +171 -171
  305. teradataml/data/docs/sqle/docs_17_20/TargetEncodingFit.py +266 -266
  306. teradataml/data/docs/sqle/docs_17_20/TargetEncodingTransform.py +141 -140
  307. teradataml/data/docs/sqle/docs_17_20/TextParser.py +172 -172
  308. teradataml/data/docs/sqle/docs_17_20/TrainTestSplit.py +159 -159
  309. teradataml/data/docs/sqle/docs_17_20/Transform.py +123 -123
  310. teradataml/data/docs/sqle/docs_17_20/UnivariateStatistics.py +141 -141
  311. teradataml/data/docs/sqle/docs_17_20/Unpack.py +214 -214
  312. teradataml/data/docs/sqle/docs_17_20/VectorDistance.py +168 -168
  313. teradataml/data/docs/sqle/docs_17_20/WhichMax.py +83 -83
  314. teradataml/data/docs/sqle/docs_17_20/WhichMin.py +83 -83
  315. teradataml/data/docs/sqle/docs_17_20/WordEmbeddings.py +236 -236
  316. teradataml/data/docs/sqle/docs_17_20/XGBoost.py +353 -353
  317. teradataml/data/docs/sqle/docs_17_20/XGBoostPredict.py +275 -275
  318. teradataml/data/docs/sqle/docs_17_20/ZTest.py +155 -155
  319. teradataml/data/docs/tableoperator/docs_17_00/ReadNOS.py +429 -429
  320. teradataml/data/docs/tableoperator/docs_17_05/ReadNOS.py +429 -429
  321. teradataml/data/docs/tableoperator/docs_17_05/WriteNOS.py +347 -347
  322. teradataml/data/docs/tableoperator/docs_17_10/ReadNOS.py +428 -428
  323. teradataml/data/docs/tableoperator/docs_17_10/WriteNOS.py +347 -347
  324. teradataml/data/docs/tableoperator/docs_17_20/ReadNOS.py +439 -439
  325. teradataml/data/docs/tableoperator/docs_17_20/WriteNOS.py +386 -386
  326. teradataml/data/docs/uaf/docs_17_20/ACF.py +195 -195
  327. teradataml/data/docs/uaf/docs_17_20/ArimaEstimate.py +369 -369
  328. teradataml/data/docs/uaf/docs_17_20/ArimaForecast.py +142 -142
  329. teradataml/data/docs/uaf/docs_17_20/ArimaValidate.py +159 -159
  330. teradataml/data/docs/uaf/docs_17_20/BinaryMatrixOp.py +247 -247
  331. teradataml/data/docs/uaf/docs_17_20/BinarySeriesOp.py +252 -252
  332. teradataml/data/docs/uaf/docs_17_20/BreuschGodfrey.py +177 -177
  333. teradataml/data/docs/uaf/docs_17_20/BreuschPaganGodfrey.py +174 -174
  334. teradataml/data/docs/uaf/docs_17_20/Convolve.py +226 -226
  335. teradataml/data/docs/uaf/docs_17_20/Convolve2.py +214 -214
  336. teradataml/data/docs/uaf/docs_17_20/CumulPeriodogram.py +183 -183
  337. teradataml/data/docs/uaf/docs_17_20/DFFT.py +203 -203
  338. teradataml/data/docs/uaf/docs_17_20/DFFT2.py +216 -216
  339. teradataml/data/docs/uaf/docs_17_20/DFFT2Conv.py +215 -215
  340. teradataml/data/docs/uaf/docs_17_20/DFFTConv.py +191 -191
  341. teradataml/data/docs/uaf/docs_17_20/DTW.py +179 -179
  342. teradataml/data/docs/uaf/docs_17_20/DickeyFuller.py +144 -144
  343. teradataml/data/docs/uaf/docs_17_20/DurbinWatson.py +183 -183
  344. teradataml/data/docs/uaf/docs_17_20/ExtractResults.py +184 -184
  345. teradataml/data/docs/uaf/docs_17_20/FitMetrics.py +172 -172
  346. teradataml/data/docs/uaf/docs_17_20/GenseriesFormula.py +205 -205
  347. teradataml/data/docs/uaf/docs_17_20/GenseriesSinusoids.py +142 -142
  348. teradataml/data/docs/uaf/docs_17_20/HoltWintersForecaster.py +258 -258
  349. teradataml/data/docs/uaf/docs_17_20/IDFFT.py +164 -164
  350. teradataml/data/docs/uaf/docs_17_20/IDFFT2.py +198 -198
  351. teradataml/data/docs/uaf/docs_17_20/InputValidator.py +120 -120
  352. teradataml/data/docs/uaf/docs_17_20/LineSpec.py +155 -155
  353. teradataml/data/docs/uaf/docs_17_20/LinearRegr.py +214 -214
  354. teradataml/data/docs/uaf/docs_17_20/MAMean.py +173 -173
  355. teradataml/data/docs/uaf/docs_17_20/MInfo.py +133 -133
  356. teradataml/data/docs/uaf/docs_17_20/MatrixMultiply.py +135 -135
  357. teradataml/data/docs/uaf/docs_17_20/MultivarRegr.py +190 -190
  358. teradataml/data/docs/uaf/docs_17_20/PACF.py +158 -158
  359. teradataml/data/docs/uaf/docs_17_20/Portman.py +216 -216
  360. teradataml/data/docs/uaf/docs_17_20/PowerTransform.py +154 -154
  361. teradataml/data/docs/uaf/docs_17_20/Resample.py +228 -228
  362. teradataml/data/docs/uaf/docs_17_20/SInfo.py +122 -122
  363. teradataml/data/docs/uaf/docs_17_20/SeasonalNormalize.py +165 -165
  364. teradataml/data/docs/uaf/docs_17_20/SelectionCriteria.py +173 -173
  365. teradataml/data/docs/uaf/docs_17_20/SignifPeriodicities.py +170 -170
  366. teradataml/data/docs/uaf/docs_17_20/SignifResidmean.py +163 -163
  367. teradataml/data/docs/uaf/docs_17_20/SimpleExp.py +179 -179
  368. teradataml/data/docs/uaf/docs_17_20/Smoothma.py +207 -207
  369. teradataml/data/docs/uaf/docs_17_20/TrackingOp.py +150 -150
  370. teradataml/data/docs/uaf/docs_17_20/UNDIFF.py +171 -171
  371. teradataml/data/docs/uaf/docs_17_20/Unnormalize.py +201 -201
  372. teradataml/data/docs/uaf/docs_17_20/WhitesGeneral.py +169 -169
  373. teradataml/data/dtw_example.json +17 -17
  374. teradataml/data/dtw_t1.csv +11 -11
  375. teradataml/data/dtw_t2.csv +4 -4
  376. teradataml/data/dwt2d_example.json +15 -15
  377. teradataml/data/dwt_example.json +14 -14
  378. teradataml/data/dwt_filter_dim.csv +5 -5
  379. teradataml/data/emission.csv +9 -9
  380. teradataml/data/emp_table_by_dept.csv +19 -19
  381. teradataml/data/employee_info.csv +4 -4
  382. teradataml/data/employee_table.csv +6 -6
  383. teradataml/data/excluding_event_table.csv +2 -2
  384. teradataml/data/finance_data.csv +6 -6
  385. teradataml/data/finance_data2.csv +61 -61
  386. teradataml/data/finance_data3.csv +93 -93
  387. teradataml/data/fish.csv +160 -0
  388. teradataml/data/fm_blood2ageandweight.csv +26 -26
  389. teradataml/data/fmeasure_example.json +11 -11
  390. teradataml/data/followers_leaders.csv +10 -10
  391. teradataml/data/fpgrowth_example.json +12 -12
  392. teradataml/data/frequentpaths_example.json +29 -29
  393. teradataml/data/friends.csv +9 -9
  394. teradataml/data/fs_input.csv +33 -33
  395. teradataml/data/fs_input1.csv +33 -33
  396. teradataml/data/genData.csv +513 -513
  397. teradataml/data/geodataframe_example.json +39 -39
  398. teradataml/data/glass_types.csv +215 -0
  399. teradataml/data/glm_admissions_model.csv +12 -12
  400. teradataml/data/glm_example.json +29 -29
  401. teradataml/data/glml1l2_example.json +28 -28
  402. teradataml/data/glml1l2predict_example.json +54 -54
  403. teradataml/data/glmpredict_example.json +54 -54
  404. teradataml/data/gq_t1.csv +21 -21
  405. teradataml/data/hconvolve_complex_right.csv +5 -5
  406. teradataml/data/hconvolve_complex_rightmulti.csv +5 -5
  407. teradataml/data/histogram_example.json +11 -11
  408. teradataml/data/hmmdecoder_example.json +78 -78
  409. teradataml/data/hmmevaluator_example.json +24 -24
  410. teradataml/data/hmmsupervised_example.json +10 -10
  411. teradataml/data/hmmunsupervised_example.json +7 -7
  412. teradataml/data/house_values.csv +12 -12
  413. teradataml/data/house_values2.csv +13 -13
  414. teradataml/data/housing_cat.csv +7 -7
  415. teradataml/data/housing_data.csv +9 -9
  416. teradataml/data/housing_test.csv +47 -47
  417. teradataml/data/housing_test_binary.csv +47 -47
  418. teradataml/data/housing_train.csv +493 -493
  419. teradataml/data/housing_train_attribute.csv +4 -4
  420. teradataml/data/housing_train_binary.csv +437 -437
  421. teradataml/data/housing_train_parameter.csv +2 -2
  422. teradataml/data/housing_train_response.csv +493 -493
  423. teradataml/data/ibm_stock.csv +370 -370
  424. teradataml/data/ibm_stock1.csv +370 -370
  425. teradataml/data/identitymatch_example.json +21 -21
  426. teradataml/data/idf_table.csv +4 -4
  427. teradataml/data/impressions.csv +101 -101
  428. teradataml/data/inflation.csv +21 -21
  429. teradataml/data/initial.csv +3 -3
  430. teradataml/data/insect_sprays.csv +12 -12
  431. teradataml/data/insurance.csv +1339 -1339
  432. teradataml/data/interpolator_example.json +12 -12
  433. teradataml/data/iris_altinput.csv +481 -481
  434. teradataml/data/iris_attribute_output.csv +8 -8
  435. teradataml/data/iris_attribute_test.csv +121 -121
  436. teradataml/data/iris_attribute_train.csv +481 -481
  437. teradataml/data/iris_category_expect_predict.csv +31 -31
  438. teradataml/data/iris_data.csv +151 -0
  439. teradataml/data/iris_input.csv +151 -151
  440. teradataml/data/iris_response_train.csv +121 -121
  441. teradataml/data/iris_test.csv +31 -31
  442. teradataml/data/iris_train.csv +121 -121
  443. teradataml/data/join_table1.csv +4 -4
  444. teradataml/data/join_table2.csv +4 -4
  445. teradataml/data/jsons/anly_function_name.json +6 -6
  446. teradataml/data/jsons/byom/dataikupredict.json +147 -147
  447. teradataml/data/jsons/byom/datarobotpredict.json +146 -146
  448. teradataml/data/jsons/byom/h2opredict.json +194 -194
  449. teradataml/data/jsons/byom/onnxpredict.json +186 -186
  450. teradataml/data/jsons/byom/pmmlpredict.json +146 -146
  451. teradataml/data/jsons/paired_functions.json +435 -435
  452. teradataml/data/jsons/sqle/16.20/Antiselect.json +56 -56
  453. teradataml/data/jsons/sqle/16.20/Attribution.json +249 -249
  454. teradataml/data/jsons/sqle/16.20/DecisionForestPredict.json +156 -156
  455. teradataml/data/jsons/sqle/16.20/DecisionTreePredict.json +170 -170
  456. teradataml/data/jsons/sqle/16.20/GLMPredict.json +122 -122
  457. teradataml/data/jsons/sqle/16.20/MovingAverage.json +367 -367
  458. teradataml/data/jsons/sqle/16.20/NGramSplitter.json +239 -239
  459. teradataml/data/jsons/sqle/16.20/NaiveBayesPredict.json +136 -136
  460. teradataml/data/jsons/sqle/16.20/NaiveBayesTextClassifierPredict.json +235 -235
  461. teradataml/data/jsons/sqle/16.20/Pack.json +98 -98
  462. teradataml/data/jsons/sqle/16.20/SVMSparsePredict.json +162 -162
  463. teradataml/data/jsons/sqle/16.20/Sessionize.json +105 -105
  464. teradataml/data/jsons/sqle/16.20/StringSimilarity.json +86 -86
  465. teradataml/data/jsons/sqle/16.20/Unpack.json +166 -166
  466. teradataml/data/jsons/sqle/16.20/nPath.json +269 -269
  467. teradataml/data/jsons/sqle/17.00/Antiselect.json +56 -56
  468. teradataml/data/jsons/sqle/17.00/Attribution.json +249 -249
  469. teradataml/data/jsons/sqle/17.00/DecisionForestPredict.json +156 -156
  470. teradataml/data/jsons/sqle/17.00/DecisionTreePredict.json +170 -170
  471. teradataml/data/jsons/sqle/17.00/GLMPredict.json +122 -122
  472. teradataml/data/jsons/sqle/17.00/MovingAverage.json +367 -367
  473. teradataml/data/jsons/sqle/17.00/NGramSplitter.json +239 -239
  474. teradataml/data/jsons/sqle/17.00/NaiveBayesPredict.json +136 -136
  475. teradataml/data/jsons/sqle/17.00/NaiveBayesTextClassifierPredict.json +235 -235
  476. teradataml/data/jsons/sqle/17.00/Pack.json +98 -98
  477. teradataml/data/jsons/sqle/17.00/SVMSparsePredict.json +162 -162
  478. teradataml/data/jsons/sqle/17.00/Sessionize.json +105 -105
  479. teradataml/data/jsons/sqle/17.00/StringSimilarity.json +86 -86
  480. teradataml/data/jsons/sqle/17.00/Unpack.json +166 -166
  481. teradataml/data/jsons/sqle/17.00/nPath.json +269 -269
  482. teradataml/data/jsons/sqle/17.05/Antiselect.json +56 -56
  483. teradataml/data/jsons/sqle/17.05/Attribution.json +249 -249
  484. teradataml/data/jsons/sqle/17.05/DecisionForestPredict.json +156 -156
  485. teradataml/data/jsons/sqle/17.05/DecisionTreePredict.json +170 -170
  486. teradataml/data/jsons/sqle/17.05/GLMPredict.json +122 -122
  487. teradataml/data/jsons/sqle/17.05/MovingAverage.json +367 -367
  488. teradataml/data/jsons/sqle/17.05/NGramSplitter.json +239 -239
  489. teradataml/data/jsons/sqle/17.05/NaiveBayesPredict.json +136 -136
  490. teradataml/data/jsons/sqle/17.05/NaiveBayesTextClassifierPredict.json +235 -235
  491. teradataml/data/jsons/sqle/17.05/Pack.json +98 -98
  492. teradataml/data/jsons/sqle/17.05/SVMSparsePredict.json +162 -162
  493. teradataml/data/jsons/sqle/17.05/Sessionize.json +105 -105
  494. teradataml/data/jsons/sqle/17.05/StringSimilarity.json +86 -86
  495. teradataml/data/jsons/sqle/17.05/Unpack.json +166 -166
  496. teradataml/data/jsons/sqle/17.05/nPath.json +269 -269
  497. teradataml/data/jsons/sqle/17.10/Antiselect.json +56 -56
  498. teradataml/data/jsons/sqle/17.10/Attribution.json +249 -249
  499. teradataml/data/jsons/sqle/17.10/DecisionForestPredict.json +185 -185
  500. teradataml/data/jsons/sqle/17.10/DecisionTreePredict.json +171 -171
  501. teradataml/data/jsons/sqle/17.10/GLMPredict.json +151 -151
  502. teradataml/data/jsons/sqle/17.10/MovingAverage.json +368 -368
  503. teradataml/data/jsons/sqle/17.10/NGramSplitter.json +239 -239
  504. teradataml/data/jsons/sqle/17.10/NaiveBayesPredict.json +149 -149
  505. teradataml/data/jsons/sqle/17.10/NaiveBayesTextClassifierPredict.json +288 -288
  506. teradataml/data/jsons/sqle/17.10/Pack.json +133 -133
  507. teradataml/data/jsons/sqle/17.10/SVMSparsePredict.json +193 -193
  508. teradataml/data/jsons/sqle/17.10/Sessionize.json +105 -105
  509. teradataml/data/jsons/sqle/17.10/StringSimilarity.json +86 -86
  510. teradataml/data/jsons/sqle/17.10/TD_BinCodeFit.json +239 -239
  511. teradataml/data/jsons/sqle/17.10/TD_BinCodeTransform.json +70 -70
  512. teradataml/data/jsons/sqle/17.10/TD_CategoricalSummary.json +53 -53
  513. teradataml/data/jsons/sqle/17.10/TD_Chisq.json +67 -67
  514. teradataml/data/jsons/sqle/17.10/TD_ColumnSummary.json +53 -53
  515. teradataml/data/jsons/sqle/17.10/TD_ConvertTo.json +68 -68
  516. teradataml/data/jsons/sqle/17.10/TD_FTest.json +187 -187
  517. teradataml/data/jsons/sqle/17.10/TD_FillRowID.json +51 -51
  518. teradataml/data/jsons/sqle/17.10/TD_FunctionFit.json +46 -46
  519. teradataml/data/jsons/sqle/17.10/TD_FunctionTransform.json +72 -71
  520. teradataml/data/jsons/sqle/17.10/TD_GetRowsWithMissingValues.json +52 -52
  521. teradataml/data/jsons/sqle/17.10/TD_GetRowsWithoutMissingValues.json +52 -52
  522. teradataml/data/jsons/sqle/17.10/TD_Histogram.json +132 -132
  523. teradataml/data/jsons/sqle/17.10/TD_NumApply.json +147 -147
  524. teradataml/data/jsons/sqle/17.10/TD_OneHotEncodingFit.json +182 -182
  525. teradataml/data/jsons/sqle/17.10/TD_OneHotEncodingTransform.json +65 -64
  526. teradataml/data/jsons/sqle/17.10/TD_OutlierFilterFit.json +196 -196
  527. teradataml/data/jsons/sqle/17.10/TD_OutlierFilterTransform.json +48 -47
  528. teradataml/data/jsons/sqle/17.10/TD_PolynomialFeaturesFit.json +114 -114
  529. teradataml/data/jsons/sqle/17.10/TD_PolynomialFeaturesTransform.json +72 -71
  530. teradataml/data/jsons/sqle/17.10/TD_QQNorm.json +111 -111
  531. teradataml/data/jsons/sqle/17.10/TD_RoundColumns.json +93 -93
  532. teradataml/data/jsons/sqle/17.10/TD_RowNormalizeFit.json +127 -127
  533. teradataml/data/jsons/sqle/17.10/TD_RowNormalizeTransform.json +70 -69
  534. teradataml/data/jsons/sqle/17.10/TD_ScaleFit.json +156 -156
  535. teradataml/data/jsons/sqle/17.10/TD_ScaleTransform.json +70 -69
  536. teradataml/data/jsons/sqle/17.10/TD_SimpleImputeFit.json +147 -147
  537. teradataml/data/jsons/sqle/17.10/TD_SimpleImputeTransform.json +48 -47
  538. teradataml/data/jsons/sqle/17.10/TD_StrApply.json +240 -240
  539. teradataml/data/jsons/sqle/17.10/TD_UnivariateStatistics.json +118 -118
  540. teradataml/data/jsons/sqle/17.10/TD_WhichMax.json +52 -52
  541. teradataml/data/jsons/sqle/17.10/TD_WhichMin.json +52 -52
  542. teradataml/data/jsons/sqle/17.10/TD_ZTest.json +171 -171
  543. teradataml/data/jsons/sqle/17.10/Unpack.json +188 -188
  544. teradataml/data/jsons/sqle/17.10/nPath.json +269 -269
  545. teradataml/data/jsons/sqle/17.20/Antiselect.json +56 -56
  546. teradataml/data/jsons/sqle/17.20/Attribution.json +249 -249
  547. teradataml/data/jsons/sqle/17.20/DecisionForestPredict.json +185 -185
  548. teradataml/data/jsons/sqle/17.20/DecisionTreePredict.json +172 -172
  549. teradataml/data/jsons/sqle/17.20/GLMPredict.json +151 -151
  550. teradataml/data/jsons/sqle/17.20/MovingAverage.json +367 -367
  551. teradataml/data/jsons/sqle/17.20/NGramSplitter.json +239 -239
  552. teradataml/data/jsons/sqle/17.20/NaiveBayesPredict.json +149 -149
  553. teradataml/data/jsons/sqle/17.20/NaiveBayesTextClassifierPredict.json +287 -287
  554. teradataml/data/jsons/sqle/17.20/Pack.json +133 -133
  555. teradataml/data/jsons/sqle/17.20/SVMSparsePredict.json +192 -192
  556. teradataml/data/jsons/sqle/17.20/Sessionize.json +105 -105
  557. teradataml/data/jsons/sqle/17.20/StringSimilarity.json +86 -86
  558. teradataml/data/jsons/sqle/17.20/TD_ANOVA.json +76 -76
  559. teradataml/data/jsons/sqle/17.20/TD_BinCodeFit.json +239 -239
  560. teradataml/data/jsons/sqle/17.20/TD_BinCodeTransform.json +71 -71
  561. teradataml/data/jsons/sqle/17.20/TD_CategoricalSummary.json +53 -53
  562. teradataml/data/jsons/sqle/17.20/TD_Chisq.json +67 -67
  563. teradataml/data/jsons/sqle/17.20/TD_ClassificationEvaluator.json +145 -145
  564. teradataml/data/jsons/sqle/17.20/TD_ColumnSummary.json +53 -53
  565. teradataml/data/jsons/sqle/17.20/TD_ColumnTransformer.json +218 -218
  566. teradataml/data/jsons/sqle/17.20/TD_ConvertTo.json +92 -92
  567. teradataml/data/jsons/sqle/17.20/TD_DecisionForest.json +259 -259
  568. teradataml/data/jsons/sqle/17.20/TD_DecisionForestPredict.json +139 -139
  569. teradataml/data/jsons/sqle/17.20/TD_FTest.json +186 -186
  570. teradataml/data/jsons/sqle/17.20/TD_FillRowID.json +52 -52
  571. teradataml/data/jsons/sqle/17.20/TD_FunctionFit.json +46 -46
  572. teradataml/data/jsons/sqle/17.20/TD_FunctionTransform.json +72 -72
  573. teradataml/data/jsons/sqle/17.20/TD_GLM.json +431 -431
  574. teradataml/data/jsons/sqle/17.20/TD_GLMPREDICT.json +125 -125
  575. teradataml/data/jsons/sqle/17.20/TD_GLMPerSegment.json +411 -411
  576. teradataml/data/jsons/sqle/17.20/TD_GLMPredictPerSegment.json +146 -146
  577. teradataml/data/jsons/sqle/17.20/TD_GetFutileColumns.json +91 -91
  578. teradataml/data/jsons/sqle/17.20/TD_GetRowsWithMissingValues.json +76 -76
  579. teradataml/data/jsons/sqle/17.20/TD_GetRowsWithoutMissingValues.json +76 -76
  580. teradataml/data/jsons/sqle/17.20/TD_Histogram.json +152 -152
  581. teradataml/data/jsons/sqle/17.20/TD_KMeans.json +211 -211
  582. teradataml/data/jsons/sqle/17.20/TD_KMeansPredict.json +86 -86
  583. teradataml/data/jsons/sqle/17.20/TD_KNN.json +262 -262
  584. teradataml/data/jsons/sqle/17.20/TD_NaiveBayesTextClassifierTrainer.json +137 -137
  585. teradataml/data/jsons/sqle/17.20/TD_NonLinearCombineFit.json +101 -101
  586. teradataml/data/jsons/sqle/17.20/TD_NonLinearCombineTransform.json +71 -71
  587. teradataml/data/jsons/sqle/17.20/TD_NumApply.json +147 -147
  588. teradataml/data/jsons/sqle/17.20/TD_OneClassSVM.json +315 -315
  589. teradataml/data/jsons/sqle/17.20/TD_OneClassSVMPredict.json +123 -123
  590. teradataml/data/jsons/sqle/17.20/TD_OneHotEncodingFit.json +271 -271
  591. teradataml/data/jsons/sqle/17.20/TD_OneHotEncodingTransform.json +65 -65
  592. teradataml/data/jsons/sqle/17.20/TD_OrdinalEncodingFit.json +229 -229
  593. teradataml/data/jsons/sqle/17.20/TD_OrdinalEncodingTransform.json +75 -75
  594. teradataml/data/jsons/sqle/17.20/TD_OutlierFilterFit.json +217 -217
  595. teradataml/data/jsons/sqle/17.20/TD_OutlierFilterTransform.json +48 -48
  596. teradataml/data/jsons/sqle/17.20/TD_PolynomialFeaturesFit.json +114 -114
  597. teradataml/data/jsons/sqle/17.20/TD_PolynomialFeaturesTransform.json +72 -72
  598. teradataml/data/jsons/sqle/17.20/TD_QQNorm.json +111 -111
  599. teradataml/data/jsons/sqle/17.20/TD_ROC.json +177 -177
  600. teradataml/data/jsons/sqle/17.20/TD_RandomProjectionFit.json +178 -178
  601. teradataml/data/jsons/sqle/17.20/TD_RandomProjectionMinComponents.json +73 -73
  602. teradataml/data/jsons/sqle/17.20/TD_RandomProjectionTransform.json +74 -74
  603. teradataml/data/jsons/sqle/17.20/TD_RegressionEvaluator.json +137 -137
  604. teradataml/data/jsons/sqle/17.20/TD_RoundColumns.json +93 -93
  605. teradataml/data/jsons/sqle/17.20/TD_RowNormalizeFit.json +127 -127
  606. teradataml/data/jsons/sqle/17.20/TD_RowNormalizeTransform.json +70 -70
  607. teradataml/data/jsons/sqle/17.20/TD_SVM.json +389 -389
  608. teradataml/data/jsons/sqle/17.20/TD_SVMPredict.json +124 -124
  609. teradataml/data/jsons/sqle/17.20/TD_ScaleFit.json +156 -156
  610. teradataml/data/jsons/sqle/17.20/TD_ScaleTransform.json +70 -70
  611. teradataml/data/jsons/sqle/17.20/TD_SentimentExtractor.json +193 -193
  612. teradataml/data/jsons/sqle/17.20/TD_Silhouette.json +142 -142
  613. teradataml/data/jsons/sqle/17.20/TD_SimpleImputeFit.json +147 -147
  614. teradataml/data/jsons/sqle/17.20/TD_SimpleImputeTransform.json +48 -48
  615. teradataml/data/jsons/sqle/17.20/TD_StrApply.json +240 -240
  616. teradataml/data/jsons/sqle/17.20/TD_TargetEncodingFit.json +248 -248
  617. teradataml/data/jsons/sqle/17.20/TD_TargetEncodingTransform.json +75 -75
  618. teradataml/data/jsons/sqle/17.20/TD_TextParser.json +192 -192
  619. teradataml/data/jsons/sqle/17.20/TD_TrainTestSplit.json +142 -142
  620. teradataml/data/jsons/sqle/17.20/TD_UnivariateStatistics.json +117 -117
  621. teradataml/data/jsons/sqle/17.20/TD_VectorDistance.json +182 -182
  622. teradataml/data/jsons/sqle/17.20/TD_WhichMax.json +52 -52
  623. teradataml/data/jsons/sqle/17.20/TD_WhichMin.json +52 -52
  624. teradataml/data/jsons/sqle/17.20/TD_WordEmbeddings.json +241 -241
  625. teradataml/data/jsons/sqle/17.20/TD_XGBoost.json +312 -312
  626. teradataml/data/jsons/sqle/17.20/TD_XGBoostPredict.json +182 -182
  627. teradataml/data/jsons/sqle/17.20/TD_ZTest.json +170 -170
  628. teradataml/data/jsons/sqle/17.20/Unpack.json +188 -188
  629. teradataml/data/jsons/sqle/17.20/nPath.json +269 -269
  630. teradataml/data/jsons/tableoperator/17.00/read_nos.json +197 -197
  631. teradataml/data/jsons/tableoperator/17.05/read_nos.json +197 -197
  632. teradataml/data/jsons/tableoperator/17.05/write_nos.json +194 -194
  633. teradataml/data/jsons/tableoperator/17.10/read_nos.json +183 -183
  634. teradataml/data/jsons/tableoperator/17.10/write_nos.json +194 -194
  635. teradataml/data/jsons/tableoperator/17.20/read_nos.json +182 -182
  636. teradataml/data/jsons/tableoperator/17.20/write_nos.json +223 -223
  637. teradataml/data/jsons/uaf/17.20/TD_ACF.json +149 -149
  638. teradataml/data/jsons/uaf/17.20/TD_ARIMAESTIMATE.json +409 -409
  639. teradataml/data/jsons/uaf/17.20/TD_ARIMAFORECAST.json +79 -79
  640. teradataml/data/jsons/uaf/17.20/TD_ARIMAVALIDATE.json +151 -151
  641. teradataml/data/jsons/uaf/17.20/TD_BINARYMATRIXOP.json +109 -109
  642. teradataml/data/jsons/uaf/17.20/TD_BINARYSERIESOP.json +107 -107
  643. teradataml/data/jsons/uaf/17.20/TD_BREUSCH_GODFREY.json +87 -87
  644. teradataml/data/jsons/uaf/17.20/TD_BREUSCH_PAGAN_GODFREY.json +106 -106
  645. teradataml/data/jsons/uaf/17.20/TD_CONVOLVE.json +80 -80
  646. teradataml/data/jsons/uaf/17.20/TD_CONVOLVE2.json +67 -67
  647. teradataml/data/jsons/uaf/17.20/TD_CUMUL_PERIODOGRAM.json +91 -91
  648. teradataml/data/jsons/uaf/17.20/TD_DFFT.json +136 -136
  649. teradataml/data/jsons/uaf/17.20/TD_DFFT2.json +148 -148
  650. teradataml/data/jsons/uaf/17.20/TD_DFFT2CONV.json +108 -108
  651. teradataml/data/jsons/uaf/17.20/TD_DFFTCONV.json +109 -109
  652. teradataml/data/jsons/uaf/17.20/TD_DICKEY_FULLER.json +86 -86
  653. teradataml/data/jsons/uaf/17.20/TD_DIFF.json +91 -91
  654. teradataml/data/jsons/uaf/17.20/TD_DTW.json +116 -116
  655. teradataml/data/jsons/uaf/17.20/TD_DURBIN_WATSON.json +100 -100
  656. teradataml/data/jsons/uaf/17.20/TD_EXTRACT_RESULTS.json +38 -38
  657. teradataml/data/jsons/uaf/17.20/TD_FITMETRICS.json +100 -100
  658. teradataml/data/jsons/uaf/17.20/TD_GENSERIES4FORMULA.json +84 -84
  659. teradataml/data/jsons/uaf/17.20/TD_GENSERIES4SINUSOIDS.json +70 -70
  660. teradataml/data/jsons/uaf/17.20/TD_GOLDFELD_QUANDT.json +152 -152
  661. teradataml/data/jsons/uaf/17.20/TD_HOLT_WINTERS_FORECAST.json +313 -313
  662. teradataml/data/jsons/uaf/17.20/TD_IDFFT.json +57 -57
  663. teradataml/data/jsons/uaf/17.20/TD_IDFFT2.json +94 -94
  664. teradataml/data/jsons/uaf/17.20/TD_INPUTVALIDATOR.json +63 -63
  665. teradataml/data/jsons/uaf/17.20/TD_LINEAR_REGR.json +181 -181
  666. teradataml/data/jsons/uaf/17.20/TD_LINESPEC.json +102 -102
  667. teradataml/data/jsons/uaf/17.20/TD_MAMEAN.json +182 -182
  668. teradataml/data/jsons/uaf/17.20/TD_MATRIXMULTIPLY.json +67 -67
  669. teradataml/data/jsons/uaf/17.20/TD_MINFO.json +66 -66
  670. teradataml/data/jsons/uaf/17.20/TD_MULTIVAR_REGR.json +178 -178
  671. teradataml/data/jsons/uaf/17.20/TD_PACF.json +114 -114
  672. teradataml/data/jsons/uaf/17.20/TD_PORTMAN.json +118 -118
  673. teradataml/data/jsons/uaf/17.20/TD_POWERSPEC.json +175 -175
  674. teradataml/data/jsons/uaf/17.20/TD_POWERTRANSFORM.json +97 -97
  675. teradataml/data/jsons/uaf/17.20/TD_RESAMPLE.json +173 -173
  676. teradataml/data/jsons/uaf/17.20/TD_SEASONALNORMALIZE.json +136 -136
  677. teradataml/data/jsons/uaf/17.20/TD_SELECTION_CRITERIA.json +89 -89
  678. teradataml/data/jsons/uaf/17.20/TD_SIGNIF_PERIODICITIES.json +79 -79
  679. teradataml/data/jsons/uaf/17.20/TD_SIGNIF_RESIDMEAN.json +67 -67
  680. teradataml/data/jsons/uaf/17.20/TD_SIMPLEEXP.json +184 -184
  681. teradataml/data/jsons/uaf/17.20/TD_SINFO.json +57 -57
  682. teradataml/data/jsons/uaf/17.20/TD_SMOOTHMA.json +162 -162
  683. teradataml/data/jsons/uaf/17.20/TD_TRACKINGOP.json +100 -100
  684. teradataml/data/jsons/uaf/17.20/TD_UNDIFF.json +111 -111
  685. teradataml/data/jsons/uaf/17.20/TD_UNNORMALIZE.json +95 -95
  686. teradataml/data/jsons/uaf/17.20/TD_WHITES_GENERAL.json +77 -77
  687. teradataml/data/kmeans_example.json +17 -17
  688. teradataml/data/kmeans_us_arrests_data.csv +0 -0
  689. teradataml/data/knn_example.json +18 -18
  690. teradataml/data/knnrecommender_example.json +6 -6
  691. teradataml/data/knnrecommenderpredict_example.json +12 -12
  692. teradataml/data/lar_example.json +17 -17
  693. teradataml/data/larpredict_example.json +30 -30
  694. teradataml/data/lc_new_predictors.csv +5 -5
  695. teradataml/data/lc_new_reference.csv +9 -9
  696. teradataml/data/lda_example.json +8 -8
  697. teradataml/data/ldainference_example.json +14 -14
  698. teradataml/data/ldatopicsummary_example.json +8 -8
  699. teradataml/data/levendist_input.csv +13 -13
  700. teradataml/data/levenshteindistance_example.json +10 -10
  701. teradataml/data/linreg_example.json +9 -9
  702. teradataml/data/load_example_data.py +326 -323
  703. teradataml/data/loan_prediction.csv +295 -295
  704. teradataml/data/lungcancer.csv +138 -138
  705. teradataml/data/mappingdata.csv +12 -12
  706. teradataml/data/milk_timeseries.csv +157 -157
  707. teradataml/data/min_max_titanic.csv +4 -4
  708. teradataml/data/minhash_example.json +6 -6
  709. teradataml/data/ml_ratings.csv +7547 -7547
  710. teradataml/data/ml_ratings_10.csv +2445 -2445
  711. teradataml/data/model1_table.csv +5 -5
  712. teradataml/data/model2_table.csv +5 -5
  713. teradataml/data/models/iris_db_glm_model.pmml +56 -56
  714. teradataml/data/models/iris_db_xgb_model.pmml +4471 -4471
  715. teradataml/data/modularity_example.json +12 -12
  716. teradataml/data/movavg_example.json +7 -7
  717. teradataml/data/mtx1.csv +7 -7
  718. teradataml/data/mtx2.csv +13 -13
  719. teradataml/data/multi_model_classification.csv +401 -0
  720. teradataml/data/multi_model_regression.csv +401 -0
  721. teradataml/data/mvdfft8.csv +9 -9
  722. teradataml/data/naivebayes_example.json +9 -9
  723. teradataml/data/naivebayespredict_example.json +19 -19
  724. teradataml/data/naivebayestextclassifier2_example.json +6 -6
  725. teradataml/data/naivebayestextclassifier_example.json +8 -8
  726. teradataml/data/naivebayestextclassifierpredict_example.json +20 -20
  727. teradataml/data/name_Find_configure.csv +10 -10
  728. teradataml/data/namedentityfinder_example.json +14 -14
  729. teradataml/data/namedentityfinderevaluator_example.json +10 -10
  730. teradataml/data/namedentityfindertrainer_example.json +6 -6
  731. teradataml/data/nb_iris_input_test.csv +31 -31
  732. teradataml/data/nb_iris_input_train.csv +121 -121
  733. teradataml/data/nbp_iris_model.csv +13 -13
  734. teradataml/data/ner_extractor_text.csv +2 -2
  735. teradataml/data/ner_sports_test2.csv +29 -29
  736. teradataml/data/ner_sports_train.csv +501 -501
  737. teradataml/data/nerevaluator_example.json +5 -5
  738. teradataml/data/nerextractor_example.json +18 -18
  739. teradataml/data/nermem_sports_test.csv +17 -17
  740. teradataml/data/nermem_sports_train.csv +50 -50
  741. teradataml/data/nertrainer_example.json +6 -6
  742. teradataml/data/ngrams_example.json +6 -6
  743. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Aggregate Functions using SQLAlchemy.ipynb +1455 -1455
  744. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Arithmetic Functions Using SQLAlchemy.ipynb +1993 -1993
  745. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Bit-Byte Manipulation Functions using SQLAlchemy.ipynb +1492 -1492
  746. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Built-in functions using SQLAlchemy.ipynb +536 -536
  747. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Regular Expressions Using SQLAlchemy.ipynb +570 -570
  748. teradataml/data/notebooks/sqlalchemy/Teradata Vantage String Functions Using SQLAlchemy.ipynb +2559 -2559
  749. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Window Aggregate Functions using SQLAlchemy.ipynb +2911 -2911
  750. teradataml/data/notebooks/sqlalchemy/Using Generic SQLAlchemy ClauseElements teradataml DataFrame assign method.ipynb +698 -698
  751. teradataml/data/notebooks/sqlalchemy/teradataml filtering using SQLAlchemy ClauseElements.ipynb +784 -784
  752. teradataml/data/npath_example.json +23 -23
  753. teradataml/data/ntree_example.json +14 -14
  754. teradataml/data/numeric_strings.csv +4 -4
  755. teradataml/data/numerics.csv +4 -4
  756. teradataml/data/ocean_buoy.csv +17 -17
  757. teradataml/data/ocean_buoy2.csv +17 -17
  758. teradataml/data/ocean_buoys.csv +27 -27
  759. teradataml/data/ocean_buoys2.csv +10 -10
  760. teradataml/data/ocean_buoys_nonpti.csv +28 -28
  761. teradataml/data/ocean_buoys_seq.csv +29 -29
  762. teradataml/data/openml_example.json +63 -0
  763. teradataml/data/optional_event_table.csv +4 -4
  764. teradataml/data/orders1.csv +11 -11
  765. teradataml/data/orders1_12.csv +12 -12
  766. teradataml/data/orders_ex.csv +4 -4
  767. teradataml/data/pack_example.json +8 -8
  768. teradataml/data/package_tracking.csv +19 -19
  769. teradataml/data/package_tracking_pti.csv +18 -18
  770. teradataml/data/pagerank_example.json +13 -13
  771. teradataml/data/paragraphs_input.csv +6 -6
  772. teradataml/data/pathanalyzer_example.json +7 -7
  773. teradataml/data/pathgenerator_example.json +7 -7
  774. teradataml/data/phrases.csv +7 -7
  775. teradataml/data/pivot_example.json +8 -8
  776. teradataml/data/pivot_input.csv +22 -22
  777. teradataml/data/playerRating.csv +31 -31
  778. teradataml/data/postagger_example.json +6 -6
  779. teradataml/data/posttagger_output.csv +44 -44
  780. teradataml/data/production_data.csv +16 -16
  781. teradataml/data/production_data2.csv +7 -7
  782. teradataml/data/randomsample_example.json +31 -31
  783. teradataml/data/randomwalksample_example.json +8 -8
  784. teradataml/data/rank_table.csv +6 -6
  785. teradataml/data/ref_mobile_data.csv +4 -4
  786. teradataml/data/ref_mobile_data_dense.csv +2 -2
  787. teradataml/data/ref_url.csv +17 -17
  788. teradataml/data/restaurant_reviews.csv +7 -7
  789. teradataml/data/river_data.csv +145 -145
  790. teradataml/data/roc_example.json +7 -7
  791. teradataml/data/roc_input.csv +101 -101
  792. teradataml/data/rule_inputs.csv +6 -6
  793. teradataml/data/rule_table.csv +2 -2
  794. teradataml/data/sales.csv +7 -7
  795. teradataml/data/sales_transaction.csv +501 -501
  796. teradataml/data/salesdata.csv +342 -342
  797. teradataml/data/sample_cities.csv +2 -2
  798. teradataml/data/sample_shapes.csv +10 -10
  799. teradataml/data/sample_streets.csv +2 -2
  800. teradataml/data/sampling_example.json +15 -15
  801. teradataml/data/sax_example.json +8 -8
  802. teradataml/data/scale_example.json +23 -23
  803. teradataml/data/scale_housing.csv +11 -11
  804. teradataml/data/scale_housing_test.csv +6 -6
  805. teradataml/data/scale_stat.csv +11 -11
  806. teradataml/data/scalebypartition_example.json +13 -13
  807. teradataml/data/scalemap_example.json +13 -13
  808. teradataml/data/scalesummary_example.json +12 -12
  809. teradataml/data/score_category.csv +101 -101
  810. teradataml/data/score_summary.csv +4 -4
  811. teradataml/data/script_example.json +9 -9
  812. teradataml/data/scripts/deploy_script.py +65 -0
  813. teradataml/data/scripts/mapper.R +20 -0
  814. teradataml/data/scripts/mapper.py +15 -15
  815. teradataml/data/scripts/mapper_replace.py +15 -15
  816. teradataml/data/scripts/sklearn/__init__.py +0 -0
  817. teradataml/data/scripts/sklearn/sklearn_fit.py +175 -0
  818. teradataml/data/scripts/sklearn/sklearn_fit_predict.py +135 -0
  819. teradataml/data/scripts/sklearn/sklearn_function.template +113 -0
  820. teradataml/data/scripts/sklearn/sklearn_model_selection_split.py +158 -0
  821. teradataml/data/scripts/sklearn/sklearn_neighbors.py +152 -0
  822. teradataml/data/scripts/sklearn/sklearn_score.py +128 -0
  823. teradataml/data/scripts/sklearn/sklearn_transform.py +179 -0
  824. teradataml/data/seeds.csv +10 -10
  825. teradataml/data/sentenceextractor_example.json +6 -6
  826. teradataml/data/sentiment_extract_input.csv +11 -11
  827. teradataml/data/sentiment_train.csv +16 -16
  828. teradataml/data/sentiment_word.csv +20 -20
  829. teradataml/data/sentiment_word_input.csv +19 -19
  830. teradataml/data/sentimentextractor_example.json +24 -24
  831. teradataml/data/sentimenttrainer_example.json +8 -8
  832. teradataml/data/sequence_table.csv +10 -10
  833. teradataml/data/seriessplitter_example.json +7 -7
  834. teradataml/data/sessionize_example.json +17 -17
  835. teradataml/data/sessionize_table.csv +116 -116
  836. teradataml/data/setop_test1.csv +24 -24
  837. teradataml/data/setop_test2.csv +22 -22
  838. teradataml/data/soc_nw_edges.csv +10 -10
  839. teradataml/data/soc_nw_vertices.csv +7 -7
  840. teradataml/data/souvenir_timeseries.csv +167 -167
  841. teradataml/data/sparse_iris_attribute.csv +5 -5
  842. teradataml/data/sparse_iris_test.csv +121 -121
  843. teradataml/data/sparse_iris_train.csv +601 -601
  844. teradataml/data/star1.csv +6 -6
  845. teradataml/data/state_transition.csv +5 -5
  846. teradataml/data/stock_data.csv +53 -53
  847. teradataml/data/stock_movement.csv +11 -11
  848. teradataml/data/stock_vol.csv +76 -76
  849. teradataml/data/stop_words.csv +8 -8
  850. teradataml/data/store_sales.csv +37 -37
  851. teradataml/data/stringsimilarity_example.json +7 -7
  852. teradataml/data/strsimilarity_input.csv +13 -13
  853. teradataml/data/students.csv +101 -101
  854. teradataml/data/svm_iris_input_test.csv +121 -121
  855. teradataml/data/svm_iris_input_train.csv +481 -481
  856. teradataml/data/svm_iris_model.csv +7 -7
  857. teradataml/data/svmdense_example.json +9 -9
  858. teradataml/data/svmdensepredict_example.json +18 -18
  859. teradataml/data/svmsparse_example.json +7 -7
  860. teradataml/data/svmsparsepredict_example.json +13 -13
  861. teradataml/data/svmsparsesummary_example.json +7 -7
  862. teradataml/data/target_mobile_data.csv +13 -13
  863. teradataml/data/target_mobile_data_dense.csv +5 -5
  864. teradataml/data/templatedata.csv +1201 -1201
  865. teradataml/data/templates/open_source_ml.json +9 -0
  866. teradataml/data/teradataml_example.json +73 -1
  867. teradataml/data/test_classification.csv +101 -0
  868. teradataml/data/test_loan_prediction.csv +53 -53
  869. teradataml/data/test_pacf_12.csv +37 -37
  870. teradataml/data/test_prediction.csv +101 -0
  871. teradataml/data/test_regression.csv +101 -0
  872. teradataml/data/test_river2.csv +109 -109
  873. teradataml/data/text_inputs.csv +6 -6
  874. teradataml/data/textchunker_example.json +7 -7
  875. teradataml/data/textclassifier_example.json +6 -6
  876. teradataml/data/textclassifier_input.csv +7 -7
  877. teradataml/data/textclassifiertrainer_example.json +6 -6
  878. teradataml/data/textmorph_example.json +5 -5
  879. teradataml/data/textparser_example.json +15 -15
  880. teradataml/data/texttagger_example.json +11 -11
  881. teradataml/data/texttokenizer_example.json +6 -6
  882. teradataml/data/texttrainer_input.csv +11 -11
  883. teradataml/data/tf_example.json +6 -6
  884. teradataml/data/tfidf_example.json +13 -13
  885. teradataml/data/tfidf_input1.csv +201 -201
  886. teradataml/data/tfidf_train.csv +6 -6
  887. teradataml/data/time_table1.csv +535 -535
  888. teradataml/data/time_table2.csv +14 -14
  889. teradataml/data/timeseriesdata.csv +1601 -1601
  890. teradataml/data/timeseriesdatasetsd4.csv +105 -105
  891. teradataml/data/titanic.csv +892 -892
  892. teradataml/data/token_table.csv +696 -696
  893. teradataml/data/train_multiclass.csv +101 -0
  894. teradataml/data/train_regression.csv +101 -0
  895. teradataml/data/train_regression_multiple_labels.csv +101 -0
  896. teradataml/data/train_tracking.csv +27 -27
  897. teradataml/data/transformation_table.csv +5 -5
  898. teradataml/data/transformation_table_new.csv +1 -1
  899. teradataml/data/tv_spots.csv +16 -16
  900. teradataml/data/twod_climate_data.csv +117 -117
  901. teradataml/data/uaf_example.json +475 -475
  902. teradataml/data/univariatestatistics_example.json +8 -8
  903. teradataml/data/unpack_example.json +9 -9
  904. teradataml/data/unpivot_example.json +9 -9
  905. teradataml/data/unpivot_input.csv +8 -8
  906. teradataml/data/us_air_pass.csv +36 -36
  907. teradataml/data/us_population.csv +624 -624
  908. teradataml/data/us_states_shapes.csv +52 -52
  909. teradataml/data/varmax_example.json +17 -17
  910. teradataml/data/vectordistance_example.json +25 -25
  911. teradataml/data/ville_climatedata.csv +121 -121
  912. teradataml/data/ville_tempdata.csv +12 -12
  913. teradataml/data/ville_tempdata1.csv +12 -12
  914. teradataml/data/ville_temperature.csv +11 -11
  915. teradataml/data/waveletTable.csv +1605 -1605
  916. teradataml/data/waveletTable2.csv +1605 -1605
  917. teradataml/data/weightedmovavg_example.json +8 -8
  918. teradataml/data/wft_testing.csv +5 -5
  919. teradataml/data/wine_data.csv +1600 -0
  920. teradataml/data/word_embed_input_table1.csv +5 -5
  921. teradataml/data/word_embed_input_table2.csv +4 -4
  922. teradataml/data/word_embed_model.csv +22 -22
  923. teradataml/data/words_input.csv +13 -13
  924. teradataml/data/xconvolve_complex_left.csv +6 -6
  925. teradataml/data/xconvolve_complex_leftmulti.csv +6 -6
  926. teradataml/data/xgboost_example.json +35 -35
  927. teradataml/data/xgboostpredict_example.json +31 -31
  928. teradataml/dataframe/copy_to.py +1764 -1698
  929. teradataml/dataframe/data_transfer.py +2753 -2745
  930. teradataml/dataframe/dataframe.py +17545 -16946
  931. teradataml/dataframe/dataframe_utils.py +1837 -1740
  932. teradataml/dataframe/fastload.py +611 -603
  933. teradataml/dataframe/indexer.py +424 -424
  934. teradataml/dataframe/setop.py +1179 -1166
  935. teradataml/dataframe/sql.py +10090 -6432
  936. teradataml/dataframe/sql_function_parameters.py +439 -388
  937. teradataml/dataframe/sql_functions.py +652 -652
  938. teradataml/dataframe/sql_interfaces.py +220 -220
  939. teradataml/dataframe/vantage_function_types.py +674 -630
  940. teradataml/dataframe/window.py +693 -692
  941. teradataml/dbutils/__init__.py +3 -3
  942. teradataml/dbutils/dbutils.py +1167 -1150
  943. teradataml/dbutils/filemgr.py +267 -267
  944. teradataml/gen_ai/__init__.py +2 -2
  945. teradataml/gen_ai/convAI.py +472 -472
  946. teradataml/geospatial/__init__.py +3 -3
  947. teradataml/geospatial/geodataframe.py +1105 -1094
  948. teradataml/geospatial/geodataframecolumn.py +392 -387
  949. teradataml/geospatial/geometry_types.py +925 -925
  950. teradataml/hyperparameter_tuner/__init__.py +1 -1
  951. teradataml/hyperparameter_tuner/optimizer.py +3783 -2993
  952. teradataml/hyperparameter_tuner/utils.py +281 -187
  953. teradataml/lib/aed_0_1.dll +0 -0
  954. teradataml/lib/libaed_0_1.dylib +0 -0
  955. teradataml/lib/libaed_0_1.so +0 -0
  956. teradataml/libaed_0_1.dylib +0 -0
  957. teradataml/libaed_0_1.so +0 -0
  958. teradataml/opensource/__init__.py +1 -0
  959. teradataml/opensource/sklearn/__init__.py +1 -0
  960. teradataml/opensource/sklearn/_class.py +255 -0
  961. teradataml/opensource/sklearn/_sklearn_wrapper.py +1668 -0
  962. teradataml/opensource/sklearn/_wrapper_utils.py +268 -0
  963. teradataml/opensource/sklearn/constants.py +54 -0
  964. teradataml/options/__init__.py +121 -124
  965. teradataml/options/configure.py +337 -336
  966. teradataml/options/display.py +176 -176
  967. teradataml/plot/__init__.py +2 -2
  968. teradataml/plot/axis.py +1388 -1388
  969. teradataml/plot/constants.py +15 -15
  970. teradataml/plot/figure.py +398 -398
  971. teradataml/plot/plot.py +760 -760
  972. teradataml/plot/query_generator.py +83 -83
  973. teradataml/plot/subplot.py +216 -216
  974. teradataml/scriptmgmt/UserEnv.py +3788 -3761
  975. teradataml/scriptmgmt/__init__.py +3 -3
  976. teradataml/scriptmgmt/lls_utils.py +1616 -1604
  977. teradataml/series/series.py +532 -532
  978. teradataml/series/series_utils.py +71 -71
  979. teradataml/table_operators/Apply.py +949 -917
  980. teradataml/table_operators/Script.py +1719 -1982
  981. teradataml/table_operators/TableOperator.py +1207 -1616
  982. teradataml/table_operators/__init__.py +2 -3
  983. teradataml/table_operators/apply_query_generator.py +262 -262
  984. teradataml/table_operators/query_generator.py +507 -507
  985. teradataml/table_operators/table_operator_query_generator.py +460 -460
  986. teradataml/table_operators/table_operator_util.py +631 -639
  987. teradataml/table_operators/templates/dataframe_apply.template +184 -184
  988. teradataml/table_operators/templates/dataframe_map.template +176 -176
  989. teradataml/table_operators/templates/script_executor.template +170 -170
  990. teradataml/utils/dtypes.py +684 -684
  991. teradataml/utils/internal_buffer.py +84 -84
  992. teradataml/utils/print_versions.py +205 -205
  993. teradataml/utils/utils.py +410 -410
  994. teradataml/utils/validators.py +2239 -2115
  995. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.0.dist-info}/METADATA +270 -41
  996. teradataml-20.0.0.0.dist-info/RECORD +1038 -0
  997. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.0.dist-info}/WHEEL +1 -1
  998. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.0.dist-info}/zip-safe +1 -1
  999. teradataml/analytics/mle/AdaBoost.py +0 -651
  1000. teradataml/analytics/mle/AdaBoostPredict.py +0 -564
  1001. teradataml/analytics/mle/Antiselect.py +0 -342
  1002. teradataml/analytics/mle/Arima.py +0 -641
  1003. teradataml/analytics/mle/ArimaPredict.py +0 -477
  1004. teradataml/analytics/mle/Attribution.py +0 -1070
  1005. teradataml/analytics/mle/Betweenness.py +0 -658
  1006. teradataml/analytics/mle/Burst.py +0 -711
  1007. teradataml/analytics/mle/CCM.py +0 -600
  1008. teradataml/analytics/mle/CCMPrepare.py +0 -324
  1009. teradataml/analytics/mle/CFilter.py +0 -460
  1010. teradataml/analytics/mle/ChangePointDetection.py +0 -572
  1011. teradataml/analytics/mle/ChangePointDetectionRT.py +0 -477
  1012. teradataml/analytics/mle/Closeness.py +0 -737
  1013. teradataml/analytics/mle/ConfusionMatrix.py +0 -420
  1014. teradataml/analytics/mle/Correlation.py +0 -477
  1015. teradataml/analytics/mle/Correlation2.py +0 -573
  1016. teradataml/analytics/mle/CoxHazardRatio.py +0 -679
  1017. teradataml/analytics/mle/CoxPH.py +0 -556
  1018. teradataml/analytics/mle/CoxSurvival.py +0 -478
  1019. teradataml/analytics/mle/CumulativeMovAvg.py +0 -363
  1020. teradataml/analytics/mle/DTW.py +0 -623
  1021. teradataml/analytics/mle/DWT.py +0 -564
  1022. teradataml/analytics/mle/DWT2D.py +0 -599
  1023. teradataml/analytics/mle/DecisionForest.py +0 -716
  1024. teradataml/analytics/mle/DecisionForestEvaluator.py +0 -363
  1025. teradataml/analytics/mle/DecisionForestPredict.py +0 -561
  1026. teradataml/analytics/mle/DecisionTree.py +0 -830
  1027. teradataml/analytics/mle/DecisionTreePredict.py +0 -528
  1028. teradataml/analytics/mle/ExponentialMovAvg.py +0 -418
  1029. teradataml/analytics/mle/FMeasure.py +0 -402
  1030. teradataml/analytics/mle/FPGrowth.py +0 -734
  1031. teradataml/analytics/mle/FrequentPaths.py +0 -695
  1032. teradataml/analytics/mle/GLM.py +0 -558
  1033. teradataml/analytics/mle/GLML1L2.py +0 -547
  1034. teradataml/analytics/mle/GLML1L2Predict.py +0 -519
  1035. teradataml/analytics/mle/GLMPredict.py +0 -529
  1036. teradataml/analytics/mle/HMMDecoder.py +0 -945
  1037. teradataml/analytics/mle/HMMEvaluator.py +0 -901
  1038. teradataml/analytics/mle/HMMSupervised.py +0 -521
  1039. teradataml/analytics/mle/HMMUnsupervised.py +0 -572
  1040. teradataml/analytics/mle/Histogram.py +0 -561
  1041. teradataml/analytics/mle/IDWT.py +0 -476
  1042. teradataml/analytics/mle/IDWT2D.py +0 -493
  1043. teradataml/analytics/mle/IdentityMatch.py +0 -763
  1044. teradataml/analytics/mle/Interpolator.py +0 -918
  1045. teradataml/analytics/mle/KMeans.py +0 -485
  1046. teradataml/analytics/mle/KNN.py +0 -627
  1047. teradataml/analytics/mle/KNNRecommender.py +0 -488
  1048. teradataml/analytics/mle/KNNRecommenderPredict.py +0 -581
  1049. teradataml/analytics/mle/LAR.py +0 -439
  1050. teradataml/analytics/mle/LARPredict.py +0 -478
  1051. teradataml/analytics/mle/LDA.py +0 -548
  1052. teradataml/analytics/mle/LDAInference.py +0 -492
  1053. teradataml/analytics/mle/LDATopicSummary.py +0 -464
  1054. teradataml/analytics/mle/LevenshteinDistance.py +0 -450
  1055. teradataml/analytics/mle/LinReg.py +0 -433
  1056. teradataml/analytics/mle/LinRegPredict.py +0 -438
  1057. teradataml/analytics/mle/MinHash.py +0 -544
  1058. teradataml/analytics/mle/Modularity.py +0 -587
  1059. teradataml/analytics/mle/NEREvaluator.py +0 -410
  1060. teradataml/analytics/mle/NERExtractor.py +0 -595
  1061. teradataml/analytics/mle/NERTrainer.py +0 -458
  1062. teradataml/analytics/mle/NGrams.py +0 -570
  1063. teradataml/analytics/mle/NPath.py +0 -634
  1064. teradataml/analytics/mle/NTree.py +0 -549
  1065. teradataml/analytics/mle/NaiveBayes.py +0 -462
  1066. teradataml/analytics/mle/NaiveBayesPredict.py +0 -513
  1067. teradataml/analytics/mle/NaiveBayesTextClassifier.py +0 -607
  1068. teradataml/analytics/mle/NaiveBayesTextClassifier2.py +0 -531
  1069. teradataml/analytics/mle/NaiveBayesTextClassifierPredict.py +0 -799
  1070. teradataml/analytics/mle/NamedEntityFinder.py +0 -529
  1071. teradataml/analytics/mle/NamedEntityFinderEvaluator.py +0 -414
  1072. teradataml/analytics/mle/NamedEntityFinderTrainer.py +0 -396
  1073. teradataml/analytics/mle/POSTagger.py +0 -417
  1074. teradataml/analytics/mle/Pack.py +0 -411
  1075. teradataml/analytics/mle/PageRank.py +0 -535
  1076. teradataml/analytics/mle/PathAnalyzer.py +0 -426
  1077. teradataml/analytics/mle/PathGenerator.py +0 -367
  1078. teradataml/analytics/mle/PathStart.py +0 -464
  1079. teradataml/analytics/mle/PathSummarizer.py +0 -470
  1080. teradataml/analytics/mle/Pivot.py +0 -471
  1081. teradataml/analytics/mle/ROC.py +0 -425
  1082. teradataml/analytics/mle/RandomSample.py +0 -637
  1083. teradataml/analytics/mle/RandomWalkSample.py +0 -490
  1084. teradataml/analytics/mle/SAX.py +0 -779
  1085. teradataml/analytics/mle/SVMDense.py +0 -677
  1086. teradataml/analytics/mle/SVMDensePredict.py +0 -536
  1087. teradataml/analytics/mle/SVMDenseSummary.py +0 -437
  1088. teradataml/analytics/mle/SVMSparse.py +0 -557
  1089. teradataml/analytics/mle/SVMSparsePredict.py +0 -553
  1090. teradataml/analytics/mle/SVMSparseSummary.py +0 -435
  1091. teradataml/analytics/mle/Sampling.py +0 -549
  1092. teradataml/analytics/mle/Scale.py +0 -565
  1093. teradataml/analytics/mle/ScaleByPartition.py +0 -496
  1094. teradataml/analytics/mle/ScaleMap.py +0 -378
  1095. teradataml/analytics/mle/ScaleSummary.py +0 -320
  1096. teradataml/analytics/mle/SentenceExtractor.py +0 -363
  1097. teradataml/analytics/mle/SentimentEvaluator.py +0 -432
  1098. teradataml/analytics/mle/SentimentExtractor.py +0 -578
  1099. teradataml/analytics/mle/SentimentTrainer.py +0 -405
  1100. teradataml/analytics/mle/SeriesSplitter.py +0 -641
  1101. teradataml/analytics/mle/Sessionize.py +0 -475
  1102. teradataml/analytics/mle/SimpleMovAvg.py +0 -397
  1103. teradataml/analytics/mle/StringSimilarity.py +0 -425
  1104. teradataml/analytics/mle/TF.py +0 -389
  1105. teradataml/analytics/mle/TFIDF.py +0 -504
  1106. teradataml/analytics/mle/TextChunker.py +0 -414
  1107. teradataml/analytics/mle/TextClassifier.py +0 -399
  1108. teradataml/analytics/mle/TextClassifierEvaluator.py +0 -413
  1109. teradataml/analytics/mle/TextClassifierTrainer.py +0 -565
  1110. teradataml/analytics/mle/TextMorph.py +0 -494
  1111. teradataml/analytics/mle/TextParser.py +0 -623
  1112. teradataml/analytics/mle/TextTagger.py +0 -530
  1113. teradataml/analytics/mle/TextTokenizer.py +0 -502
  1114. teradataml/analytics/mle/UnivariateStatistics.py +0 -488
  1115. teradataml/analytics/mle/Unpack.py +0 -526
  1116. teradataml/analytics/mle/Unpivot.py +0 -438
  1117. teradataml/analytics/mle/VarMax.py +0 -776
  1118. teradataml/analytics/mle/VectorDistance.py +0 -762
  1119. teradataml/analytics/mle/WeightedMovAvg.py +0 -400
  1120. teradataml/analytics/mle/XGBoost.py +0 -842
  1121. teradataml/analytics/mle/XGBoostPredict.py +0 -627
  1122. teradataml/analytics/mle/__init__.py +0 -123
  1123. teradataml/analytics/mle/json/adaboost_mle.json +0 -135
  1124. teradataml/analytics/mle/json/adaboostpredict_mle.json +0 -85
  1125. teradataml/analytics/mle/json/antiselect_mle.json +0 -34
  1126. teradataml/analytics/mle/json/antiselect_mle_mle.json +0 -34
  1127. teradataml/analytics/mle/json/arima_mle.json +0 -172
  1128. teradataml/analytics/mle/json/arimapredict_mle.json +0 -52
  1129. teradataml/analytics/mle/json/attribution_mle_mle.json +0 -143
  1130. teradataml/analytics/mle/json/betweenness_mle.json +0 -97
  1131. teradataml/analytics/mle/json/burst_mle.json +0 -140
  1132. teradataml/analytics/mle/json/ccm_mle.json +0 -124
  1133. teradataml/analytics/mle/json/ccmprepare_mle.json +0 -14
  1134. teradataml/analytics/mle/json/cfilter_mle.json +0 -93
  1135. teradataml/analytics/mle/json/changepointdetection_mle.json +0 -92
  1136. teradataml/analytics/mle/json/changepointdetectionrt_mle.json +0 -78
  1137. teradataml/analytics/mle/json/closeness_mle.json +0 -104
  1138. teradataml/analytics/mle/json/confusionmatrix_mle.json +0 -79
  1139. teradataml/analytics/mle/json/correlation_mle.json +0 -86
  1140. teradataml/analytics/mle/json/correlationreduce_mle.json +0 -49
  1141. teradataml/analytics/mle/json/coxhazardratio_mle.json +0 -89
  1142. teradataml/analytics/mle/json/coxph_mle.json +0 -98
  1143. teradataml/analytics/mle/json/coxsurvival_mle.json +0 -79
  1144. teradataml/analytics/mle/json/cumulativemovavg_mle.json +0 -34
  1145. teradataml/analytics/mle/json/decisionforest_mle.json +0 -167
  1146. teradataml/analytics/mle/json/decisionforestevaluator_mle.json +0 -33
  1147. teradataml/analytics/mle/json/decisionforestpredict_mle_mle.json +0 -74
  1148. teradataml/analytics/mle/json/decisiontree_mle.json +0 -194
  1149. teradataml/analytics/mle/json/decisiontreepredict_mle_mle.json +0 -86
  1150. teradataml/analytics/mle/json/dtw_mle.json +0 -97
  1151. teradataml/analytics/mle/json/dwt2d_mle.json +0 -116
  1152. teradataml/analytics/mle/json/dwt_mle.json +0 -101
  1153. teradataml/analytics/mle/json/exponentialmovavg_mle.json +0 -55
  1154. teradataml/analytics/mle/json/fmeasure_mle.json +0 -58
  1155. teradataml/analytics/mle/json/fpgrowth_mle.json +0 -159
  1156. teradataml/analytics/mle/json/frequentpaths_mle.json +0 -129
  1157. teradataml/analytics/mle/json/glm_mle.json +0 -111
  1158. teradataml/analytics/mle/json/glml1l2_mle.json +0 -106
  1159. teradataml/analytics/mle/json/glml1l2predict_mle.json +0 -57
  1160. teradataml/analytics/mle/json/glmpredict_mle_mle.json +0 -74
  1161. teradataml/analytics/mle/json/histogram_mle.json +0 -100
  1162. teradataml/analytics/mle/json/hmmdecoder_mle.json +0 -192
  1163. teradataml/analytics/mle/json/hmmevaluator_mle.json +0 -206
  1164. teradataml/analytics/mle/json/hmmsupervised_mle.json +0 -91
  1165. teradataml/analytics/mle/json/hmmunsupervised_mle.json +0 -114
  1166. teradataml/analytics/mle/json/identitymatch_mle.json +0 -88
  1167. teradataml/analytics/mle/json/idwt2d_mle.json +0 -73
  1168. teradataml/analytics/mle/json/idwt_mle.json +0 -66
  1169. teradataml/analytics/mle/json/interpolator_mle.json +0 -151
  1170. teradataml/analytics/mle/json/kmeans_mle.json +0 -97
  1171. teradataml/analytics/mle/json/knn_mle.json +0 -141
  1172. teradataml/analytics/mle/json/knnrecommender_mle.json +0 -111
  1173. teradataml/analytics/mle/json/knnrecommenderpredict_mle.json +0 -75
  1174. teradataml/analytics/mle/json/lar_mle.json +0 -78
  1175. teradataml/analytics/mle/json/larpredict_mle.json +0 -69
  1176. teradataml/analytics/mle/json/lda_mle.json +0 -130
  1177. teradataml/analytics/mle/json/ldainference_mle.json +0 -78
  1178. teradataml/analytics/mle/json/ldatopicsummary_mle.json +0 -64
  1179. teradataml/analytics/mle/json/levenshteindistance_mle.json +0 -92
  1180. teradataml/analytics/mle/json/linreg_mle.json +0 -42
  1181. teradataml/analytics/mle/json/linregpredict_mle.json +0 -56
  1182. teradataml/analytics/mle/json/minhash_mle.json +0 -113
  1183. teradataml/analytics/mle/json/modularity_mle.json +0 -91
  1184. teradataml/analytics/mle/json/naivebayespredict_mle_mle.json +0 -85
  1185. teradataml/analytics/mle/json/naivebayesreduce_mle.json +0 -52
  1186. teradataml/analytics/mle/json/naivebayestextclassifierpredict_mle_mle.json +0 -147
  1187. teradataml/analytics/mle/json/naivebayestextclassifiertrainer2_mle.json +0 -108
  1188. teradataml/analytics/mle/json/naivebayestextclassifiertrainer_mle.json +0 -102
  1189. teradataml/analytics/mle/json/namedentityfinder_mle.json +0 -84
  1190. teradataml/analytics/mle/json/namedentityfinderevaluatorreduce_mle.json +0 -43
  1191. teradataml/analytics/mle/json/namedentityfindertrainer_mle.json +0 -64
  1192. teradataml/analytics/mle/json/nerevaluator_mle.json +0 -54
  1193. teradataml/analytics/mle/json/nerextractor_mle.json +0 -87
  1194. teradataml/analytics/mle/json/nertrainer_mle.json +0 -89
  1195. teradataml/analytics/mle/json/ngrams_mle.json +0 -137
  1196. teradataml/analytics/mle/json/ngramsplitter_mle_mle.json +0 -137
  1197. teradataml/analytics/mle/json/npath@coprocessor_mle.json +0 -73
  1198. teradataml/analytics/mle/json/ntree@coprocessor_mle.json +0 -123
  1199. teradataml/analytics/mle/json/pack_mle.json +0 -58
  1200. teradataml/analytics/mle/json/pack_mle_mle.json +0 -58
  1201. teradataml/analytics/mle/json/pagerank_mle.json +0 -81
  1202. teradataml/analytics/mle/json/pathanalyzer_mle.json +0 -63
  1203. teradataml/analytics/mle/json/pathgenerator_mle.json +0 -40
  1204. teradataml/analytics/mle/json/pathstart_mle.json +0 -62
  1205. teradataml/analytics/mle/json/pathsummarizer_mle.json +0 -72
  1206. teradataml/analytics/mle/json/pivoting_mle.json +0 -71
  1207. teradataml/analytics/mle/json/postagger_mle.json +0 -51
  1208. teradataml/analytics/mle/json/randomsample_mle.json +0 -131
  1209. teradataml/analytics/mle/json/randomwalksample_mle.json +0 -85
  1210. teradataml/analytics/mle/json/roc_mle.json +0 -73
  1211. teradataml/analytics/mle/json/sampling_mle.json +0 -75
  1212. teradataml/analytics/mle/json/sax_mle.json +0 -154
  1213. teradataml/analytics/mle/json/scale_mle.json +0 -93
  1214. teradataml/analytics/mle/json/scalebypartition_mle.json +0 -89
  1215. teradataml/analytics/mle/json/scalemap_mle.json +0 -44
  1216. teradataml/analytics/mle/json/scalesummary_mle.json +0 -14
  1217. teradataml/analytics/mle/json/sentenceextractor_mle.json +0 -41
  1218. teradataml/analytics/mle/json/sentimentevaluator_mle.json +0 -43
  1219. teradataml/analytics/mle/json/sentimentextractor_mle.json +0 -100
  1220. teradataml/analytics/mle/json/sentimenttrainer_mle.json +0 -68
  1221. teradataml/analytics/mle/json/seriessplitter_mle.json +0 -133
  1222. teradataml/analytics/mle/json/sessionize_mle_mle.json +0 -62
  1223. teradataml/analytics/mle/json/simplemovavg_mle.json +0 -48
  1224. teradataml/analytics/mle/json/stringsimilarity_mle.json +0 -50
  1225. teradataml/analytics/mle/json/stringsimilarity_mle_mle.json +0 -50
  1226. teradataml/analytics/mle/json/svmdense_mle.json +0 -165
  1227. teradataml/analytics/mle/json/svmdensepredict_mle.json +0 -95
  1228. teradataml/analytics/mle/json/svmdensesummary_mle.json +0 -58
  1229. teradataml/analytics/mle/json/svmsparse_mle.json +0 -148
  1230. teradataml/analytics/mle/json/svmsparsepredict_mle_mle.json +0 -103
  1231. teradataml/analytics/mle/json/svmsparsesummary_mle.json +0 -57
  1232. teradataml/analytics/mle/json/textchunker_mle.json +0 -40
  1233. teradataml/analytics/mle/json/textclassifier_mle.json +0 -51
  1234. teradataml/analytics/mle/json/textclassifierevaluator_mle.json +0 -43
  1235. teradataml/analytics/mle/json/textclassifiertrainer_mle.json +0 -103
  1236. teradataml/analytics/mle/json/textmorph_mle.json +0 -63
  1237. teradataml/analytics/mle/json/textparser_mle.json +0 -166
  1238. teradataml/analytics/mle/json/texttagger_mle.json +0 -81
  1239. teradataml/analytics/mle/json/texttokenizer_mle.json +0 -91
  1240. teradataml/analytics/mle/json/tf_mle.json +0 -33
  1241. teradataml/analytics/mle/json/tfidf_mle.json +0 -34
  1242. teradataml/analytics/mle/json/univariatestatistics_mle.json +0 -81
  1243. teradataml/analytics/mle/json/unpack_mle.json +0 -91
  1244. teradataml/analytics/mle/json/unpack_mle_mle.json +0 -91
  1245. teradataml/analytics/mle/json/unpivoting_mle.json +0 -63
  1246. teradataml/analytics/mle/json/varmax_mle.json +0 -176
  1247. teradataml/analytics/mle/json/vectordistance_mle.json +0 -179
  1248. teradataml/analytics/mle/json/weightedmovavg_mle.json +0 -48
  1249. teradataml/analytics/mle/json/xgboost_mle.json +0 -178
  1250. teradataml/analytics/mle/json/xgboostpredict_mle.json +0 -104
  1251. teradataml/analytics/sqle/Antiselect.py +0 -321
  1252. teradataml/analytics/sqle/Attribution.py +0 -603
  1253. teradataml/analytics/sqle/DecisionForestPredict.py +0 -408
  1254. teradataml/analytics/sqle/GLMPredict.py +0 -430
  1255. teradataml/analytics/sqle/MovingAverage.py +0 -543
  1256. teradataml/analytics/sqle/NGramSplitter.py +0 -548
  1257. teradataml/analytics/sqle/NPath.py +0 -632
  1258. teradataml/analytics/sqle/NaiveBayesTextClassifierPredict.py +0 -515
  1259. teradataml/analytics/sqle/Pack.py +0 -388
  1260. teradataml/analytics/sqle/SVMSparsePredict.py +0 -464
  1261. teradataml/analytics/sqle/Sessionize.py +0 -390
  1262. teradataml/analytics/sqle/StringSimilarity.py +0 -400
  1263. teradataml/analytics/sqle/Unpack.py +0 -503
  1264. teradataml/analytics/sqle/json/antiselect_sqle.json +0 -21
  1265. teradataml/analytics/sqle/json/attribution_sqle.json +0 -92
  1266. teradataml/analytics/sqle/json/decisionforestpredict_sqle.json +0 -48
  1267. teradataml/analytics/sqle/json/glmpredict_sqle.json +0 -48
  1268. teradataml/analytics/sqle/json/h2opredict_sqle.json +0 -63
  1269. teradataml/analytics/sqle/json/movingaverage_sqle.json +0 -58
  1270. teradataml/analytics/sqle/json/naivebayestextclassifierpredict_sqle.json +0 -76
  1271. teradataml/analytics/sqle/json/ngramsplitter_sqle.json +0 -126
  1272. teradataml/analytics/sqle/json/npath_sqle.json +0 -67
  1273. teradataml/analytics/sqle/json/pack_sqle.json +0 -47
  1274. teradataml/analytics/sqle/json/pmmlpredict_sqle.json +0 -55
  1275. teradataml/analytics/sqle/json/sessionize_sqle.json +0 -43
  1276. teradataml/analytics/sqle/json/stringsimilarity_sqle.json +0 -39
  1277. teradataml/analytics/sqle/json/svmsparsepredict_sqle.json +0 -74
  1278. teradataml/analytics/sqle/json/unpack_sqle.json +0 -80
  1279. teradataml/catalog/model_cataloging.py +0 -980
  1280. teradataml/config/mlengine_alias_definitions_v1.0 +0 -118
  1281. teradataml/config/mlengine_alias_definitions_v1.1 +0 -127
  1282. teradataml/config/mlengine_alias_definitions_v1.3 +0 -129
  1283. teradataml/table_operators/sandbox_container_util.py +0 -643
  1284. teradataml-17.20.0.7.dist-info/RECORD +0 -1280
  1285. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.0.dist-info}/top_level.txt +0 -0
@@ -1,1604 +1,1616 @@
1
- """
2
- Copyright (c) 2020 by Teradata Corporation. All rights reserved.
3
- TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
4
-
5
- Primary Owner: Trupti.purohit@teradata.com
6
- Secondary Owner: Gouri.patwardhan@Teradata.com
7
-
8
- teradataml load library service wrappers.
9
- ----------
10
- All teradataml wrappers to provide interface to load library service stored procedures
11
- from Open Analytics Framework.
12
- """
13
- import concurrent.futures
14
- import functools
15
- import json
16
- import operator
17
- import os
18
-
19
- import pandas as pd
20
- import requests
21
-
22
- from json.decoder import JSONDecodeError
23
- from teradataml import configure
24
- from teradataml.context.context import _get_user
25
- from teradataml.common.constants import HTTPRequest, AsyncStatusColumns
26
- from teradataml.common.exceptions import TeradataMlException
27
- from teradataml.common.messages import Messages
28
- from teradataml.common.messagecodes import MessageCodes
29
- from teradataml.common.utils import UtilFuncs
30
- from teradataml.clients.pkce_client import _DAWorkflow
31
- from teradataml.utils.internal_buffer import _InternalBuffer
32
- from teradataml.scriptmgmt.UserEnv import UserEnv, _get_auth_token, \
33
- _process_ues_response, _get_ues_url, _AuthToken
34
- from teradataml.utils.validators import _Validators
35
- from time import time, sleep
36
- import warnings
37
- import webbrowser
38
- from urllib.parse import parse_qs, urlparse
39
- from teradataml.utils.utils import _async_run_id_info
40
-
41
-
42
- def list_base_envs():
43
- """
44
- DESCRIPTION:
45
- Lists the available Python OR R base environments versions configured in the
46
- Open Analytics Framework.
47
- Note:
48
- Function is not applicable for conda environments.
49
-
50
- PARAMETERS:
51
- None.
52
-
53
- RETURNS:
54
- Pandas DataFrame.
55
- If the operation is successful, function returns
56
- environment name, language and version of the language interpreter in a Pandas dataframe.
57
-
58
- RAISES:
59
- TeradataMlException.
60
-
61
- EXAMPLES:
62
- >>> from teradataml import list_base_envs
63
- >>> list_base_envs()
64
- base_name language version
65
- 0 python_3.7.13 Python 3.7.13
66
- 1 python_3.8.13 Python 3.8.13
67
- 2 python_3.9.13 Python 3.9.13
68
- 3 r_4.1.3 R 4.1.3
69
- 4 r_3.6.3 R 3.6.3
70
- 5 r_4.0.2 R 4.0.2
71
- >>>
72
- """
73
- try:
74
- response = UtilFuncs._http_request(_get_ues_url("base_environments"), headers=_get_auth_token())
75
-
76
- response = _process_ues_response(api_name="list_base_envs", response=response)
77
- data = response.json()
78
-
79
- # If no data, raise warning.
80
- if len(data) == 0:
81
- warnings.warn(Messages.get_message(MessageCodes.NO_ENVIRONMENT_FOUND, "Python/R base"))
82
- return
83
-
84
- # Create a pandas DataFrame from data.
85
- return pd.DataFrame.from_records(data)
86
-
87
- except (TeradataMlException, RuntimeError):
88
- raise
89
- except Exception as emsg:
90
- msg_code = MessageCodes.FUNC_EXECUTION_FAILED
91
- error_msg = Messages.get_message(msg_code, "list_base_envs", str(emsg))
92
- raise TeradataMlException(error_msg, msg_code)
93
-
94
-
95
- def list_user_envs(env_name=None, **kwargs):
96
- """
97
- DESCRIPTION:
98
- Lists the Python OR R environments created by the session user in
99
- Open Analytics Framework.
100
-
101
- PARAMETERS:
102
- env_name:
103
- Optional Argument.
104
- Specifies the string or regular expression to filter name of the environment.
105
- Types: str
106
-
107
- base_env:
108
- Optional Argument.
109
- Specifies the string or regular expression to filter the base Python environment.
110
- Types: str
111
-
112
- desc:
113
- Optional Argument.
114
- Specifies the string or regular expression to filter the description
115
- about the environment.
116
- Types: str
117
-
118
- case:
119
- Optional Argument.
120
- Specifies whether filtering operation should be case sensitive or not.
121
- Default Value: False
122
- Types: boolean
123
-
124
- conda_env:
125
- Optional Argument.
126
- Specifies the boolean value to filter the conda environment(s).
127
- When set to True, all conda environments are listed.
128
- When set to False, all non-conda environments are listed.
129
- If not specified, all user environments are listed.
130
- Types: bool
131
-
132
- regex:
133
- Optional Argument.
134
- Specifies whether string passed to "env_name", "base_env", and "desc"
135
- should be treated as regular expression or a literal.
136
- When set to True, string is considered as a regular expression pattern,
137
- otherwise treats it as literal string.
138
- Default Value: True
139
- Types: boolean
140
-
141
- flags:
142
- Optional Argument.
143
- Specifies flags to pass for regular expressions in filtering.
144
- For example
145
- re.IGNORECASE.
146
- Default Value: 0
147
- Types: int
148
-
149
- RETURNS:
150
- Pandas DataFrame.
151
- Function returns remote user environments and their details in a Pandas dataframe.
152
- Function will help user find environments created, version of Python language used
153
- in the environment and description of each environment if provided at the time of
154
- environment creation.
155
-
156
- RAISES:
157
- TeradataMlException.
158
-
159
- EXAMPLES:
160
- # Create example environments.
161
- >>> create_env('Fraud_Detection',
162
- ... 'python_3.7.13',
163
- ... 'Fraud detection through time matching')
164
- User environment 'Fraud_detection' created.
165
- >>> create_env('Lie_Detection',
166
- ... 'python_3.7.13',
167
- ... 'Lie detection through time matching')
168
- User environment 'Lie_Detection' created.
169
- >>> create_env('Lie_Detection_ML',
170
- ... 'python_3.8.13',
171
- ... 'Detect lie through machine learning.')
172
- User environment 'Lie_Detection_ML' created.
173
- >>> create_env('Sales_env',
174
- ... 'python_3.9.13',
175
- ... 'Sales team environment.')
176
- User environment 'Sales_env' created.
177
- >>> create_env('Customer_Trends',
178
- ... 'r_4.1.3',
179
- ... 'Analyse customer trends.')
180
- User environment 'Customer_Trends' created.
181
- >>> create_env('Carbon_Credits',
182
- ... 'r_3.6.3',
183
- ... 'Prediction of carbon credits consumption.')
184
- User environment 'Carbon_Credits' created.
185
- >>> create_env('Sales_cond_env',
186
- ... 'python_3.9',
187
- ... 'Sales team environment.',
188
- ... conda_env=True)
189
- Conda environment creation initiated
190
- User environment 'Sales_cond_env' created.
191
-
192
- # Example 1: List all available user environments.
193
- >>> list_user_envs()
194
- env_name env_description base_env_name language conda
195
- 0 Carbon_Credits Prediction of carbon credits consumption r_3.6.3 R False
196
- 1 Customer_Trends Analyse customer trends r_4.1.3 R False
197
- 2 Fraud_Detection Fraud detection through time matching python_3.7.13 Python False
198
- 3 Lie_Detection Lie detection through time matching python_3.7.13 Python False
199
- 4 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python False
200
- 5 Sales_env Sales team environment. python_3.9.13 Python False
201
- 6 Sales_cond_env Sales team environment. python_3.9 Python True
202
-
203
-
204
- # Example 2: List all user environments with environment name containing string
205
- # "Detection" and description that contains string "."(period).
206
- >>> list_user_envs(env_name="Detection", desc=".", regex=False)
207
- env_name env_description base_env_name language conda
208
- 2 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python False
209
- >>>
210
-
211
- # Example 3: List all user environments with description that contains string "lie"
212
- # and is case sensitive.
213
- >>> list_user_envs(desc="lie", case=True)
214
- env_name env_description base_env_name language conda
215
- 4 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python False
216
- >>>
217
-
218
- # Example 4: List all user environments with base environment version containing string
219
- # "3.".
220
- >>> list_user_envs(base_env="3.")
221
- env_name env_description base_env_name language conda
222
- 0 Carbon_Credits Prediction of carbon credits consumption r_3.6.3 R False
223
- 2 Fraud_Detection Fraud detection through time matching python_3.7.13 Python False
224
- 3 Lie_Detection Lie detection through time matching python_3.7.13 Python False
225
- 4 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python False
226
- 5 Sales_env Sales team environment. python_3.9.13 Python False
227
- 6 Sales_conda_env Sales team environment. python_3.9 Python True
228
-
229
- >>>
230
-
231
- # Example 5: List all user environments with environment name contains string "detection",
232
- # description containing string "fraud" and base environment containing string "3.7".
233
- >>> list_user_envs("detection", desc="fraud", base_env="3.7")
234
- env_name env_description base_env_name language conda
235
- 2 Fraud_Detection Fraud detection through time matching python_3.7.13 Python False
236
- >>>
237
-
238
- # Example 6: List all user environments with environment name that ends with "detection".
239
- >>> list_user_envs("detection$")
240
- env_name env_description base_env_name language conda
241
- 2 Fraud_Detection Fraud detection through time matching python_3.7.13 Python False
242
- 3 Lie_Detection Lie detection through time matching python_3.7.13 Python False
243
- >>>
244
-
245
- # Example 7: List all user environments with description that has either "lie" or "sale".
246
- # Use re.VERBOSE flag to add inline comment.
247
- >>> list_user_envs(desc="lie|sale # Search for lie or sale.", flags=re.VERBOSE)
248
- env_name env_description base_env_name language conda
249
- 3 Lie_Detection Lie detection through time matching python_3.7.13 Python False
250
- 4 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python False
251
- 5 Sales_env Sales team environment. python_3.9.13 Python False
252
- 6 Sales_conda_env Sales team environment. python_3.9 Python True
253
- >>>
254
-
255
- # Example 8: List all user environments where python 3 environment release version has
256
- # odd number. For e.g. python_3.7.x.
257
- >>> list_user_envs(base_env="\.\d*[13579]\.")
258
- env_name env_description base_env_name language
259
- 1 Customer_Trends Analyse customer trends r_4.1.3 R
260
- 2 Fraud_Detection Fraud detection through time matching python_3.7.13 Python
261
- 3 Lie_Detection Lie detection through time matching python_3.7.13 Python
262
- 5 Sales_env Sales team environment. python_3.9.13 Python
263
- >>>
264
-
265
- # Example 9: List all conda environments.
266
- >>> list_user_envs(conda_env=True)
267
- env_name env_description base_env_name language conda
268
- 6 Sales_conda_env Sales team environment. python_3.9 Python True
269
- >>>
270
- # Remove example environments.
271
- remove_env("Fraud_Detection")
272
- remove_env("Lie_Detection")
273
- remove_env("Lie_Detection_ML")
274
- remove_env("Sales_env")
275
- remove_env("Carbon_Credits")
276
- remove_env("Customer_Trends")
277
- remove_env("Sales_conda_env")
278
- """
279
- base_env = kwargs.pop("base_env", None)
280
- desc = kwargs.pop("desc", None)
281
- case = kwargs.pop("case", False)
282
- conda_env = kwargs.pop("conda_env", None)
283
-
284
- __arg_info_matrix = []
285
- __arg_info_matrix.append(["env_name", env_name, True, (str), True])
286
- __arg_info_matrix.append(["base_env", base_env, True, (str), True])
287
- __arg_info_matrix.append(["desc", desc, True, (str), True])
288
- __arg_info_matrix.append(["conda_env", conda_env, True, (bool)])
289
-
290
- # Validate arguments
291
- _Validators._validate_function_arguments(__arg_info_matrix)
292
-
293
- try:
294
- response = UtilFuncs._http_request(_get_ues_url(), headers=_get_auth_token())
295
- # Below condition is special case handeling when remove_all_envs() used by user, remove_all_envs()
296
- # removes all the envs which result in a status_code 404 and due to which warnings provided in
297
- # list_user_envs() not appears.
298
- if response.status_code == 404 and "No user environments found." in response.text:
299
- data = []
300
- else:
301
- response = _process_ues_response(api_name="list_user_envs", response=response)
302
- data = response.json()
303
-
304
- if len(data) > 0:
305
- unknown_label = "Unknown"
306
- # Check if environment is corrupted or not. If it is corrupted, alter the details.
307
- for base_env_details in data:
308
- if base_env_details["base_env_name"] == "*":
309
- base_env_details["base_env_name"] = unknown_label
310
- base_env_details["language"] = unknown_label
311
- base_env_details["env_description"] = "Environment is corrupted. Use remove_env() to remove environment."
312
-
313
- # Return result as Pandas dataframe.
314
- pandas_df = pd.DataFrame.from_records(data)
315
- # Filter based on arguments passed by user.
316
- exprs = []
317
- if env_name is not None:
318
- exprs.append(pandas_df.env_name.str.contains(pat=env_name, case=case, **kwargs))
319
- if base_env is not None:
320
- exprs.append(pandas_df.base_env_name.str.contains(pat=base_env, case=case, **kwargs))
321
- if desc is not None:
322
- exprs.append(pandas_df.env_description.str.contains(pat=desc, case=case, **kwargs))
323
- if conda_env is not None:
324
- exprs.append(pandas_df.conda==conda_env)
325
- pandas_df = pandas_df[functools.reduce(operator.and_, exprs)] if exprs else pandas_df
326
-
327
- # Return the DataFrame if not empty.
328
- if len(pandas_df) > 0:
329
- return pandas_df
330
-
331
- print("No user environment(s) found.")
332
- except (TeradataMlException, RuntimeError):
333
- raise
334
- except Exception as emsg:
335
- msg_code = MessageCodes.FUNC_EXECUTION_FAILED
336
- error_msg = Messages.get_message(msg_code, "list_user_envs", emsg)
337
- raise TeradataMlException(error_msg, msg_code)
338
-
339
-
340
- def __create_envs(template):
341
- """
342
- DESCRIPTION:
343
- Function creates remote environment(s) as per the specifications provided
344
- in template json file. Template file contains information about each env
345
- w.r.t. env name, base env name, env description, files/libs to be
346
- installed in env.
347
-
348
- PARAMETERS:
349
- template:
350
- Required Argument.
351
- Specifies the path to template json file to be used for
352
- env creation.
353
- Types: str
354
-
355
- RETURNS:
356
- None.
357
-
358
- RAISES:
359
- TeradataMlException.
360
-
361
- EXAMPLES:
362
- # Create environments.
363
- >>> __create_envs(template="create_env_template.json")
364
- """
365
- __arg_info_matrix = []
366
- __arg_info_matrix.append(["template", template, False, (str), True])
367
- # Validate argument.
368
- _Validators._validate_function_arguments(__arg_info_matrix)
369
-
370
- # Validate the file extension.
371
- _Validators._validate_file_extension(template, ['json'])
372
-
373
- # Validate existence of template file.
374
- _Validators._validate_file_exists(template)
375
-
376
- # Extract env specs from template file and
377
- # process request for each env one by one.
378
- create_env_specs = {}
379
- try:
380
- with open(template, 'r') as f:
381
- create_env_specs = json.load(f)
382
- except IOError:
383
- raise
384
- except JSONDecodeError as json_err:
385
- raise Exception("Failed to read template json file. {}".format(json_err))
386
-
387
- requested_envs = UtilFuncs._as_list(create_env_specs['env_specs'])
388
-
389
- last_successful_env = None
390
- for env_request in requested_envs:
391
- # Create env.
392
- env_name = env_request.get('env_name', None)
393
- conda_env = env_request.get('conda_env', False)
394
-
395
- if env_name:
396
- try:
397
- # Remove from dictionary and store the specifications
398
- # which are not required for env creation.
399
- files = env_request.pop('files', None)
400
- libs = env_request.pop('libs', None)
401
- libs_file_path = env_request.pop('libs_file_path', None)
402
-
403
- print("Creating environment '{}'...".format(env_name))
404
- create_env(**env_request)
405
-
406
- print("An empty environment '{}' is created.".format(env_name))
407
-
408
- env_handle = get_env(env_name)
409
-
410
- errored = False
411
- # Install files if requested any.
412
- if files:
413
- print("Installing files in environment '{}'...".format(env_name))
414
- try:
415
- if isinstance(files, str):
416
- files = [files]
417
-
418
- for file in files:
419
- if os.path.isfile(file):
420
- env_handle.install_file(file)
421
- elif os.path.isdir(file):
422
- __install_files(env_handle, file)
423
- print("File installation in environment '{}' - Completed.".format(env_name))
424
- except Exception as file_installation_failure:
425
- print("Failed to process file installation request for environment: '{}'".format(env_name))
426
- print(str(file_installation_failure))
427
- errored = errored or True
428
- pass
429
-
430
- # Install libraries if requested any.
431
- if libs or libs_file_path:
432
- print("Installing libraries in environment '{}'...".format(env_name))
433
- try:
434
- env_handle.install_lib(libs, libs_file_path)
435
- print("Libraries installation in environment '{}' - Completed.".format(env_name))
436
- except Exception as lib_installation_failure:
437
- print("Failed to process library installation request for environment: '{}'".format(env_name))
438
- print(str(lib_installation_failure))
439
- errored = errored or True
440
- pass
441
-
442
- # Print specifications of created env.
443
- if errored:
444
- print("Created environment '{}'.".format(env_name))
445
- print("Part of request is not successful. Address manually.")
446
- else:
447
- print("Created environment '{}' with specified requirements.".format(env_name))
448
- print(env_handle)
449
- last_successful_env = env_handle
450
- except Exception as env_creation_failure:
451
- print("Failed to process request for environment: '{}'".format(env_name))
452
- print(str(env_creation_failure))
453
- pass
454
- return last_successful_env
455
-
456
-
457
- def __get_default_base_env():
458
- """
459
- Function returns the latest python environment available with
460
- Open Analytics Framework.
461
- """
462
- try:
463
- base_envs = list_base_envs()
464
- python_versions = base_envs[base_envs.language == 'Python']['version']
465
- # Convert version strings to tuples of integers for comparison
466
- version_tuples = [tuple(map(int, version.split('.'))) for version in python_versions]
467
- # Find the latest version tuple using max() function
468
- latest_version_tuple = max(version_tuples)
469
- # Convert the latest version tuple back to a string
470
- latest_version = '.'.join(map(str, latest_version_tuple))
471
- return base_envs[base_envs.version == latest_version]['base_name'].to_list()[0]
472
- except Exception as base_env_err:
473
- raise Exception("Failed to obtain default base environment.", str(base_env_err.exception))
474
-
475
-
476
- def __install_files(env, directory):
477
- """
478
- Function to install files under given directory and
479
- all the subdirectories recursively.
480
- """
481
- for (dir_path, dir_names, file_names) in os.walk(directory):
482
- for file_name in file_names:
483
- env.install_file(os.path.join(dir_path, file_name))
484
-
485
-
486
- def create_env(env_name=None, base_env=None, desc=None, template=None, conda_env=False):
487
- """
488
- DESCRIPTION:
489
- Creates isolated remote user environment(s) in the Open Analytics
490
- Framework that include a specific Python or R language interpreter version.
491
- Available base Python or R environments can be found using list_base_envs()
492
- function. When "template" argument is provided, additionally, files/libs are
493
- installed if specified in template file. Out of provided specifications in
494
- template file, if any of the environment creation fails, failure message is
495
- printed on console and next environment creation is taken up.
496
-
497
- PARAMETERS:
498
- env_name:
499
- Required when "template" is not used, optional otherwise.
500
- Specifies the name of the environment to be created.
501
- Note:
502
- Either "env_name" or "template" argument must be specified.
503
- Types: str
504
-
505
- base_env:
506
- Optional Argument.
507
- Specifies the name of the base Python or R environment
508
- to be used to create remote user environment when "env_name"
509
- is provided. This argument is ignored when "template" is provided.
510
- Notes:
511
- * When "base_env" is not provided, highest Python
512
- base environment listed by list_base_envs() is used.
513
- * When creating a conda environment, user can pass any Python version
514
- supported by Anaconda to "base_env", irrespective of base environments
515
- listed with list_base_envs().
516
- Types: str
517
-
518
- desc:
519
- Optional Argument.
520
- Specifies description for the remote environment when "env_name"
521
- is provided. This argument is ignored when "template" is provided.
522
- Default value: "This env '<env_name>' is created with base env
523
- '<base_env>'."
524
- Types: str
525
-
526
- template:
527
- Required when "env_name" is not used, optional otherwise.
528
- Specifies the path to template json file containing details
529
- of the user environment(s) to be created. Using the template
530
- file one can create one or more user environments with same or
531
- different requirements. This template file can contain following
532
- information about the environments to be created:
533
- * Name of the environment. (Required)
534
- * Base Python version to be used. (Optional)
535
- * Description for the environment. (Optional)
536
- * Files or libraries to be installed in the environment. (Optional).
537
-
538
- Here is a sample example of the template file:
539
- {
540
- "env_specs" : [
541
- {
542
- "env_name" : "<name of the user environment_MUST_BE_SPECIFIED>",
543
- "base_env" : "<OPTIONAL_base_env>",
544
- "desc": "<OPTIONAL_env_description>",
545
- "libs": ["<OPTIONAL>", "<List_of_libs_to_be_installed>"] OR "<location_of_requirements.txt>"
546
- "files": ["<OPTIONAL>", "<full_path_the_file>", "<full_path_to_dir>"]
547
- },
548
- {
549
- "env_name" : "....",
550
- "base_env" : "...",
551
- "desc": "..",
552
- "libs": ..
553
- "files": ...
554
- },
555
- {
556
- ...
557
- },
558
- {
559
- ...
560
- }
561
- ]
562
- }
563
- Notes:
564
- * Either "template" or "env_name" argument must be specified.
565
- * Template file can contain details about single or multiple
566
- environments to be created. At least one is required.
567
- * Content of template file should adhere to the syntax mentioned
568
- above. Check example for more details.
569
- Types: str
570
-
571
- conda_env:
572
- Optional Argument.
573
- Specifies whether the environment to be created is a conda environment or not.
574
- When set to True, conda environment is created.
575
- Otherwise, non conda environment is created.
576
- Note:
577
- * Currently, only Python conda environment is supported.
578
- Default value: False
579
- Types: bool
580
-
581
-
582
- RETURNS:
583
- An object of class UserEnv representing the user environment.
584
- When template file provided with "template" has specifications for multiple
585
- environments, an object of class UserEnv representing last created environment
586
- is returned.
587
-
588
- RAISES:
589
- TeradataMlException.
590
-
591
- EXAMPLES:
592
- # List all available user environments.
593
- >>> list_base_envs()
594
- base_name language version
595
- 0 python_3.7.13 Python 3.7.13
596
- 1 python_3.8.13 Python 3.8.13
597
- 2 python_3.9.13 Python 3.9.13
598
- 3 python_3.10.5 Python 3.10.5
599
- 4 r_4.1 R 4.1.3
600
- 5 r_4.0 R 4.0.5
601
- 6 r_4.2 R 4.2.2
602
-
603
- # Example 1: Create a Python 3.7.13 environment with given name and description in the Vantage.
604
- >>> fraud_detection_env = create_env('Fraud_detection',
605
- ... 'python_3.7.13',
606
- ... 'Fraud detection through time matching')
607
- User environment 'Fraud_detection' created.
608
-
609
- # Example 2: Create a R 4.1.3 environment with given name and description in the Vantage.
610
- >>> fraud_detection_env = create_env('Carbon_Credits',
611
- ... 'r_4.1',
612
- ... 'Prediction of carbon credits consumption')
613
- User environment 'Carbon_Credits' created.
614
-
615
- # Example 3: Create multiple environments and install files/libraries
616
- # in those by providing specifications in template file.
617
-
618
- # Create a template json file.
619
- >>> import teradataml, os, json
620
- >>> tdml_data_path = os.path.join(os.path.dirname(teradataml.__file__), "data")
621
- ... python_base_env = "python_3.9.13"
622
- ... r_base_env = "r_4.1"
623
- ... env_specs = [
624
- ... {
625
- ... "env_name": "env_1",
626
- ... "base_env": python_base_env,
627
- ... "desc": "Desc for test env 1"
628
- ... },
629
- ... {
630
- ... "env_name": "env_2",
631
- ... "base_env": r_base_env,
632
- ... "libs": ["glm2", "stringi"]
633
- ... "files": [os.path.join(tdml_data_path, "load_example_data.py"),
634
- ... os.path.join(tdml_data_path, "scripts")]
635
- ... }
636
- ... ]
637
- ... json_data = {"env_specs": env_specs}
638
- ... with open("template.json", "w") as json_file:
639
- ... json.dump(json_data, json_file)
640
-
641
- # Create environments.
642
- >>> create_env(template="template.json")
643
- Creating environment 'env_1'...
644
- User environment 'env_1' created.
645
- An empty environment 'env_1' is created.
646
- Created environment 'env_1' with specified requirements.
647
- Environment Name: env_1
648
- Base Environment: python_3.9.13
649
- Description: Desc for test env 1
650
-
651
- Creating environment 'env_2'...
652
- User environment 'env_2' created.
653
- An empty environment 'env_2' is created.
654
- Installing files in environment 'env_2'...
655
- File 'load_example_data.py' installed successfully in the remote user environment 'env_2'.
656
- File 'mapper.py' installed successfully in the remote user environment 'env_2'.
657
- File 'mapper.R' installed successfully in the remote user environment 'env_2'.
658
- File 'mapper_replace.py' installed successfully in the remote user environment 'env_2'.
659
- File installation in environment 'env_2' - Completed.
660
- Created environment 'env_2' with specified requirements.
661
- Environment Name: env_2
662
- Base Environment: r_4.1
663
- Description: This env 'env_2' is created with base env 'r_4.1'.
664
-
665
-
666
- ############ Files installed in User Environment ############
667
-
668
- File Size Timestamp
669
- 0 mapper.py 547 2023-11-07T10:14:06Z
670
- 1 mapper.R 613 2023-11-07T10:14:09Z
671
- 2 load_example_data.py 14158 2023-11-07T10:14:03Z
672
- 3 mapper_replace.py 552 2023-11-07T10:14:12Z
673
-
674
-
675
- ############ Libraries installed in User Environment ############
676
-
677
- name version
678
- 0 KernSmooth 2.23-20
679
- 1 MASS 7.3-55
680
- 2 Matrix 1.4-0
681
- 3 base 4.1.3
682
- 4 boot 1.3-28
683
- 5 class 7.3-20
684
- 6 cluster 2.1.2
685
- 7 codetools 0.2-18
686
- 8 compiler 4.1.3
687
- 9 datasets 4.1.3
688
- 10 foreign 0.8-82
689
- 11 grDevices 4.1.3
690
- 12 graphics 4.1.3
691
- 13 grid 4.1.3
692
- 14 lattice 0.20-45
693
- 15 methods 4.1.3
694
- 16 mgcv 1.8-39
695
- 17 nlme 3.1-155
696
- 18 nnet 7.3-17
697
- 19 parallel 4.1.3
698
- 20 remotes 2.4.2
699
- 21 rpart 4.1.16
700
- 22 spatial 7.3-15
701
- 23 splines 4.1.3
702
- 24 stats 4.1.3
703
- 25 stats4 4.1.3
704
- 26 survival 3.2-13
705
- 27 tcltk 4.1.3
706
- 28 tools 4.1.3
707
- 29 utils 4.1.3
708
-
709
- # Example 4: Create a Conda Python 3.8 environment with given name and
710
- # description in the Vantage.
711
- >>> fraud_detection_env = create_env('Fraud_detection_conda',
712
- ... 'python_3.8',
713
- ... 'Fraud detection through time matching',
714
- conda_env=True)
715
- Conda environment creation initiated
716
- User environment 'Fraud_detection_conda' created.
717
- """
718
-
719
- # Either env_name or template can be used.
720
- # At least one is required.
721
- _Validators._validate_mutually_exclusive_arguments(env_name,
722
- "env_name",
723
- template,
724
- "template",
725
- skip_all_none_check=False)
726
- # When env_name is provided, proceed with the conventional way.
727
- if env_name is not None:
728
- __arg_info_matrix = []
729
- __arg_info_matrix.append(["env_name", env_name, False, (str), True])
730
- __arg_info_matrix.append(["base_env", base_env, True, (str), True])
731
- __arg_info_matrix.append(["desc", desc, True, (str)])
732
- __arg_info_matrix.append(["conda_env", conda_env, True, (bool)])
733
-
734
- # Validate arguments
735
- _Validators._validate_function_arguments(__arg_info_matrix, skip_empty_check=False)
736
-
737
- # Get the latest python base env in OpenAF, if base_env is not provided.
738
- # Note: By default python base env is obtained.
739
- if not base_env:
740
- base_env = __get_default_base_env()
741
- if not desc:
742
- desc = "This env '{}' is created with base env '{}'.".format(env_name, base_env)
743
- try:
744
- data = {"env_name": env_name,
745
- "env_description": desc,
746
- "base_env_name": base_env
747
- }
748
- response = UtilFuncs._http_request(
749
- _get_ues_url(conda_env=conda_env), HTTPRequest.POST, headers=_get_auth_token(), json=data)
750
-
751
- # UES reponse.
752
- resp = _process_ues_response(api_name="create_env", response=response)
753
-
754
- msg = "User environment '{}' created."
755
-
756
- if conda_env:
757
- print("Conda environment creation initiated")
758
- # Get claim_id.
759
- claim_id = response.json().get("claim_id", "")
760
- # Poll the claim_id status.
761
- __poll_claim_id_status(claim_id, "create_env")
762
- print(msg.format(env_name))
763
-
764
- # Return an instance of class UserEnv.
765
- return UserEnv(env_name, base_env, desc)
766
-
767
- except (TeradataMlException, RuntimeError):
768
- raise
769
-
770
- except Exception as emsg:
771
- msg_code = MessageCodes.FUNC_EXECUTION_FAILED
772
- error_msg = Messages.get_message(msg_code, "create_env", str(emsg))
773
- raise TeradataMlException(error_msg, msg_code)
774
-
775
- else:
776
- # When template is provided, proceed with recursive way.
777
- return __create_envs(template)
778
-
779
-
780
- def _async_run_status_open_af(claim_id):
781
- """
782
- DESCRIPTION:
783
- Internal function to get the status of a claim_id.
784
-
785
-
786
- PARAMETERS:
787
- claim_id:
788
- Required Argument.
789
- Specifies the unique identifier of the asynchronous process.
790
- Types: str
791
-
792
- RETURNS:
793
- list
794
-
795
- RAISES:
796
- None
797
-
798
- EXAMPLES:
799
- __get_claim_id_status('278381bf-e3b3-47ff-9ba5-c3b5d9007363')
800
- """
801
- # Get the claim id status.
802
- resp_data = __get_status(claim_id)
803
-
804
- desc = _async_run_id_info.get(claim_id, {}).get("description", "Unknown")
805
- get_details = lambda data: {AsyncStatusColumns.ADDITIONAL_DETAILS.value:
806
- data.pop("details", None),
807
- AsyncStatusColumns.STATUS.value:
808
- data.pop("stage", None),
809
- AsyncStatusColumns.TIMESTAMP.value:
810
- data.pop("timestamp", None),
811
- AsyncStatusColumns.RUN_ID.value:
812
- claim_id,
813
- AsyncStatusColumns.RUN_DESCRIPTION.value: desc}
814
-
815
- return [get_details(sub_step) for sub_step in resp_data]
816
-
817
-
818
- def __get_status(claim_id):
819
- """
820
- DESCRIPTION:
821
- Internal function to get the status of a claim_id using
822
- status API's REST call.
823
-
824
-
825
- PARAMETERS:
826
- claim_id:
827
- Required Argument.
828
- Specifies the unique identifier of the asynchronous process.
829
- Types: str
830
-
831
- RETURNS:
832
- list
833
-
834
- RAISES:
835
- None
836
-
837
- EXAMPLES:
838
- __get_status('278381bf-e3b3-47ff-9ba5-c3b5d9007363')
839
- """
840
- # Get the claim id status
841
- response = UtilFuncs._http_request(_get_ues_url(env_type="fm",
842
- claim_id=claim_id,
843
- api_name="status"),
844
- headers=_get_auth_token())
845
- return _process_ues_response(api_name="status",
846
- response=response).json()
847
-
848
-
849
- def remove_env(env_name, **kwargs):
850
- """
851
- DESCRIPTION:
852
- Removes the user's Python or R environment from the Open Analytics Framework.
853
- The remote user environments are created using create_env() function.
854
- Note:
855
- remove_env() should not be triggered on any of the environment if
856
- install_lib/uninstall_lib/update_lib is running on the corresponding
857
- environment.
858
-
859
- PARAMETERS:
860
- env_name:
861
- Required Argument.
862
- Specifies the name of the environment to be removed.
863
- Types: str
864
-
865
- **kwargs:
866
- asynchronous:
867
- Optional Argument.
868
- Specifies whether to remove environment synchronously or
869
- asynchronously. When set to True, environment will be removed
870
- asynchronously. Otherwise, the environment will be removed synchronously.
871
- Default Value: False
872
- Types: bool
873
-
874
-
875
- RETURNS:
876
- True, if the operation is synchronous, str otherwise.
877
-
878
- RAISES:
879
- TeradataMlException, RuntimeError.
880
-
881
- EXAMPLES:
882
- # Create a Python 3.7.13 environment with given name and description in the Vantage.
883
- >>> fraud_detection_env = create_env('Fraud_detection',
884
- ... 'python_3.7.13',
885
- ... 'Fraud detection through time matching')
886
- User environment 'Fraud_detection' created.
887
- >>>
888
- # Create a R 4.1.3 environment with given name and description in the Vantage.
889
- >>> fraud_detection_env = create_env('Carbon_Credits',
890
- ... 'r_4.1',
891
- ... 'Prediction of carbon credits consumption')
892
- User environment 'Carbon_Credits' created.
893
- >>>
894
- # Example 1: Remove Python environment asynchronously.
895
- >>> remove_env('Fraud_detection', asynchronous=True)
896
- Request to remove environment initiated successfully. Check the status using list_user_envs(). If environment is not removed, check the status of asynchronous call using async_run_status('ab34cac6-667a-49d7-bac8-d0456f372f6f') or get_env('Fraud_detection').status('ab34cac6-667a-49d7-bac8-d0456f372f6f')
897
- 'ab34cac6-667a-49d7-bac8-d0456f372f6f'
898
-
899
- >>>
900
- # Example 2: Remove R environment synchronously.
901
- >>> remove_env('Carbon_Credits')
902
- User environment 'Carbon_Credits' removed.
903
- True
904
- """
905
- __arg_info_matrix = []
906
- __arg_info_matrix.append(["env_name", env_name, False, (str), True])
907
-
908
- # Validate arguments
909
- _Validators._validate_function_arguments(__arg_info_matrix)
910
-
911
- status = __manage_envs(env_name=env_name, api_name="remove_env",
912
- **kwargs)
913
-
914
- return status
915
-
916
-
917
- def __manage_envs(env_name=None, api_name="remove_env", **kwargs):
918
- """
919
- Internal function to manage environment deletion synchronously or
920
- asynchronously.
921
-
922
- PARAMETERS:
923
- env_name:
924
- Optional Argument.
925
- Specifies the name of the environment to be removed.
926
- Types: str
927
-
928
- api_name:
929
- Optional Argument.
930
- Specifies the name of the API.
931
- Permitted Values: remove_env, remove_all_envs
932
- Default Value: remove_env
933
- Types: str
934
-
935
- kwargs:
936
- asynchronous:
937
- Optional Argument.
938
- Specifies whether to remove environment synchronously or
939
- asynchronously.
940
- Default Value: False
941
- Types: bool
942
-
943
- is_print:
944
- Optional Argument.
945
- Specifies whether to print the message or not.
946
- Default Value: True
947
- Types: bool
948
-
949
-
950
- RETURNS:
951
- True, if the operation is synchronous, str otherwise.
952
-
953
- RAISES:
954
- TeradatamlException.
955
-
956
- EXAMPLES:
957
- __manage_envs(env_name="test_env", api_name="remove_env", asynchronous=True)
958
- """
959
- asynchronous = kwargs.get("asynchronous", False)
960
- # In case of remove_all_envs(env_type="R") it was printing async msges
961
- # multiple times. To restrict that internally introduced is_print.
962
- is_print = kwargs.get("is_print", True)
963
-
964
- __arg_info_matrix = []
965
- __arg_info_matrix.append(["api_name", api_name, False, (str), True,
966
- ["remove_env", "remove_all_envs"]])
967
- __arg_info_matrix.append(["asynchronous", asynchronous, True, bool])
968
- __arg_info_matrix.append(["is_print", is_print, True, bool])
969
-
970
- # Argument validation.
971
- _Validators._validate_missing_required_arguments(__arg_info_matrix)
972
- _Validators._validate_function_arguments(__arg_info_matrix)
973
-
974
- try:
975
- # Get the ues url for corresponding API.
976
- ues_url = _get_ues_url(env_name=env_name) if api_name == "remove_env" \
977
- else _get_ues_url(remove_all_envs=True)
978
-
979
- response = UtilFuncs._http_request(ues_url, HTTPRequest.DELETE,
980
- headers=_get_auth_token())
981
-
982
- resp = _process_ues_response(api_name=api_name, response=response)
983
- claim_id = resp.json().get("claim_id", "")
984
-
985
- # If env removal is asynchronous, then print the msg for user with
986
- # the claim_id. Else, poll the status using __poll_claim_id_status().
987
- if asynchronous:
988
- if is_print:
989
- msg = "Request to remove environment initiated successfully. " \
990
- "Check the status using "
991
- if api_name == "remove_env":
992
- msg = "{2}list_user_envs(). If environment is not removed, " \
993
- "check the status of asynchronous call using" \
994
- " async_run_status('{1}') or get_env('{0}').status('{1}')".\
995
- format(env_name, claim_id, msg)
996
- else:
997
- msg = "{0}async_run_status('{1}')".format(msg, claim_id)
998
- print(msg)
999
- # End of 'is_print' condition.
1000
-
1001
- # Get the description as per the API.
1002
- desc = "Remove '{}' user environment.".format(env_name) \
1003
- if api_name == "remove_env" else "Removing all user environments."
1004
-
1005
- _async_run_id_info[claim_id] = {"mapped_func": _async_run_status_open_af,
1006
- "description": desc}
1007
- return claim_id
1008
- else:
1009
- # Poll the claim_id status.
1010
- __poll_claim_id_status(claim_id, api_name)
1011
- msg = "User environment '{}' removed.".format(env_name) \
1012
- if api_name == "remove_env" else \
1013
- "All user environment(s) removed."
1014
- print(msg)
1015
- return True
1016
-
1017
- except Exception as exc:
1018
- raise exc
1019
-
1020
-
1021
- def __poll_claim_id_status(claim_id, api_name="remove_env"):
1022
- """
1023
- Internal function to periodically poll and check the
1024
- status of a claim_id.
1025
-
1026
- PARAMETERS:
1027
- claim_id:
1028
- Required Argument.
1029
- Specifies the unique identifier of the asynchronous process.
1030
- Types: str
1031
-
1032
- api_name:
1033
- Optional Argument.
1034
- Specifies the name of the API.
1035
- Permitted Values: remove_env, remove_all_envs, create_env
1036
- Default Value: remove_env
1037
- Types: str
1038
-
1039
-
1040
-
1041
- RETURNS:
1042
- None.
1043
-
1044
- RAISES:
1045
- None.
1046
-
1047
- EXAMPLES:
1048
- __poll_claim_id_status('cf7245f0-e962-4451-addf-efa7e123998d')
1049
- """
1050
- while True:
1051
- sleep(2)
1052
-
1053
- # Poll the claim id to get the status.
1054
- resp_data = __get_status(claim_id)
1055
-
1056
- # Breaking condition -
1057
- # For create_env and remove_env: Check for the 'Finished' stage in the list of resp.
1058
- # For remove_all_envs: above cond. and No user envs condition should break it .
1059
- for data in resp_data:
1060
- if ("Finished" in data["stage"]) or \
1061
- (api_name in ["create_env", "remove_all_envs"] and "Errored" in data["stage"]):
1062
- return
1063
-
1064
-
1065
- def get_env(env_name):
1066
- """
1067
- DESCRIPTION:
1068
- Returns an object of class UserEnv which represents an existing remote user environment
1069
- created in the Open Analytics Framework. The user environment can be created using
1070
- create_env() function. This function is useful to get an object of existing user
1071
- environment. The object returned can be used to perform further operations such as
1072
- installing, removing files and libraries.
1073
-
1074
- PARAMETERS:
1075
- env_name:
1076
- Required Argument.
1077
- Specifies the name of the existing remote user environment.
1078
- Types: str
1079
-
1080
- RETURNS:
1081
- An object of class UserEnv representing the remote user environment.
1082
-
1083
- RAISES:
1084
- TeradataMlException.
1085
-
1086
- EXAMPLES:
1087
- # List available Python environments in the Vantage.
1088
- >>> list_base_envs()
1089
- base_name language version
1090
- 0 python_3.6.11 Python 3.6.11
1091
- 1 python_3.7.9 Python 3.7.9
1092
- 2 python_3.8.5 Python 3.8.5
1093
-
1094
- # Create a Python 3.8.5 environment with given name and description in the Vantage and
1095
- # get an object of class UserEnv.
1096
- #
1097
- >>> test_env = create_env('test_env', 'python_3.8.5', 'Fraud detection through time matching')
1098
- User environment 'test_env' created.
1099
-
1100
- # In a new terdataml session, user can use get_env() function to get an object pointing to
1101
- # existing user environment created in previous step so that further operations can be
1102
- # performed such as install files/libraries.
1103
- >>> test_env = get_env('test_env')
1104
- """
1105
- __arg_info_matrix = []
1106
- __arg_info_matrix.append(["env_name", env_name, False, (str), True])
1107
-
1108
- # Validate arguments
1109
- _Validators._validate_function_arguments(__arg_info_matrix)
1110
-
1111
- try:
1112
- # Get environments created by the current logged in user.
1113
- user_envs_df = list_user_envs()
1114
-
1115
- if env_name not in user_envs_df.env_name.values:
1116
- msg_code = MessageCodes.FUNC_EXECUTION_FAILED
1117
- error_msg = Messages.get_message(msg_code, "get_env()", "User environment '{}' not found."
1118
- " Use 'create_env()' function to create"
1119
- " user environment.".format(env_name))
1120
- raise TeradataMlException(error_msg, msg_code)
1121
-
1122
- # Get row matching the environment name.
1123
- userenv_row = user_envs_df[user_envs_df['env_name'] == env_name]
1124
-
1125
- if userenv_row.base_env_name.values[0] == "Unknown":
1126
- msg_code = MessageCodes.FUNC_EXECUTION_FAILED
1127
- error_msg = Messages.get_message(msg_code, "get_env()", "User environment '{}' is corrupted."
1128
- " Use 'remove_env()' function to remove"
1129
- " user environment.".format(env_name))
1130
- raise TeradataMlException(error_msg, msg_code)
1131
-
1132
- # Return an instance of class UserEnv.
1133
- return UserEnv(userenv_row.env_name.values[0],
1134
- userenv_row.base_env_name.values[0],
1135
- userenv_row.env_description.values[0])
1136
- except (TeradataMlException, RuntimeError) as tdemsg:
1137
- # TeradataMlException and RuntimeError are raised by list_user_envs.
1138
- # list_user_envs should be replaced with get_env in the error
1139
- # message for final users.
1140
- tdemsg.args = (tdemsg.args[0].replace("list_user_envs", "get_env"),)
1141
- raise tdemsg
1142
- except Exception as emsg:
1143
- msg_code = MessageCodes.FUNC_EXECUTION_FAILED
1144
- error_msg = Messages.get_message(msg_code, "get_env", emsg)
1145
- raise TeradataMlException(error_msg, msg_code)
1146
-
1147
-
1148
- def remove_all_envs(env_type=None, **kwargs):
1149
- """
1150
- DESCRIPTION:
1151
- Removes user environments from the Open Analytics Framework. Function allows user
1152
- to remove only Python user environments or only R user environments or all user
1153
- environments based on the value passed to argument "env_type".
1154
- Note:
1155
- * Do not execute remove_all_envs() if any of the library management functions(install_lib()
1156
- /uninstall_lib()/update_lib()) are being executed on any environment.
1157
-
1158
- PARAMETERS:
1159
- env_type:
1160
- Optional Argument.
1161
- Specifies the type of the user environment to be removed.
1162
- Permitted Values:
1163
- * 'PY' - Remove only Python user environments.
1164
- * 'R' - Remove only R user environments.
1165
- * None - Remove all (Python and R) user environments.
1166
- Default Value: None
1167
- Types: str
1168
-
1169
- kwargs:
1170
- asynchronous:
1171
- Optional Argument.
1172
- Specifies whether to remove environment synchronously or
1173
- asynchronously.
1174
- Default Value: False
1175
- Types: bool
1176
-
1177
-
1178
- RETURNS:
1179
- True when
1180
- * Operation is synchronous.
1181
- * Operation is asynchronous with "env_type".
1182
- str otherwise.
1183
-
1184
- RAISES:
1185
- TeradataMlException, RuntimeError.
1186
-
1187
- EXAMPLES:
1188
- # Example 1: Remove all the Python and R user environments.
1189
- >>> create_env('Lie_Detection_ML', 'python_3.8.13', 'Detect lie through machine learning.')
1190
- >>> create_env('Customer_Trends', 'r_4.1.3', 'Analyse customer trends.')
1191
- >>> list_user_envs()
1192
- env_name env_description base_env_name language
1193
- 0 Customer_Trends Analyse customer trends r_4.1.3 R
1194
- 1 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python
1195
-
1196
- >>> remove_all_envs()
1197
- All user environment(s) removed.
1198
- True
1199
-
1200
- >>> list_user_envs()
1201
- No user environment(s) found.
1202
-
1203
-
1204
- # Example 2: Remove all the Python user environments.
1205
- >>> create_env('Lie_Detection_ML', 'python_3.8.13', 'Detect lie through machine learning.')
1206
- >>> create_env('Customer_Trends', 'r_4.1.3', 'Analyse customer trends.')
1207
- >>> list_user_envs()
1208
- env_name env_description base_env_name language
1209
- 0 Customer_Trends Analyse customer trends r_4.1.3 R
1210
- 1 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python
1211
-
1212
- >>> remove_all_envs(env_type="PY")
1213
- User environment 'Lie_Detection_ML' removed.
1214
- All Python environment(s) removed.
1215
- True
1216
- >>> list_user_envs()
1217
- env_name env_description base_env_name language
1218
- 0 Customer_Trends Analyse customer trends r_4.1.3 R
1219
-
1220
-
1221
- # Example 3: Remove all the R user environments.
1222
- >>> create_env('Lie_Detection_ML', 'python_3.8.13', 'Detect lie through machine learning.')
1223
- >>> create_env('Customer_Trends', 'r_4.1.3', 'Analyse customer trends.')
1224
- >>> list_user_envs()
1225
- env_name env_description base_env_name language
1226
- 0 Customer_Trends Analyse customer trends r_4.1.3 R
1227
- 1 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python
1228
-
1229
- >>> remove_all_envs(env_type="R")
1230
- User environment 'Customer_Trends' removed.
1231
- All R environment(s) removed.
1232
- True
1233
- >>> list_user_envs()
1234
- env_name env_description base_env_name language
1235
- 0 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python
1236
-
1237
-
1238
- # Example 4: Remove all Python and R environments synchronously.
1239
- # Note: The example first removes all R environments synchronously,
1240
- # followed by Python environments.
1241
- >>> env1 = create_env("env1", "python_3.7.13", "Environment 1")
1242
- >>> env2 = create_env("env2", "python_3.7.13", "Environment 2")
1243
- >>> env3 = create_env("env3", "r_4.1", "Environment 3")
1244
- >>> env4 = create_env("env4", "r_4.1", "Environment 4")
1245
-
1246
- >>> list_user_envs()
1247
- env_name env_description base_env_name language
1248
- 0 env1 Environment 1 python_3.7.13 Python
1249
- 1 env2 Environment 2 python_3.7.13 Python
1250
- 2 env3 Environment 3 r_4.1 R
1251
- 3 env4 Environment 4 r_4.1 R
1252
-
1253
- # Remove all R environments.
1254
- >>> remove_all_envs(env_type="R")
1255
- User environment 'env3' removed.
1256
- User environment 'env4' removed.
1257
- All R environment(s) removed.
1258
- True
1259
- >>> list_user_envs()
1260
- env_name env_description base_env_name language
1261
- 0 env1 Environment 1 python_3.7.13 Python
1262
- 1 env2 Environment 2 python_3.7.13 Python
1263
-
1264
- # Try to remove R environments again.
1265
- >>> remove_all_envs(env_type="R")
1266
- No R user environment(s) found.
1267
- True
1268
-
1269
- # Remove all remaining Python environments.
1270
- >>> remove_all_envs()
1271
- All user environment(s) removed.
1272
- True
1273
-
1274
-
1275
- # Example 5: Remove all Python and R environments asynchronously.
1276
- # Note: The example first removes all R environments asynchronously,
1277
- # followed by Python environments.
1278
- >>> env1 = create_env("env1", "python_3.7.13", "Environment 1")
1279
- >>> env2 = create_env("env2", "python_3.7.13", "Environment 2")
1280
- >>> env3 = create_env("env3", "r_4.1", "Environment 3")
1281
- >>> env4 = create_env("env4", "r_4.1", "Environment 4")
1282
-
1283
- >>> list_user_envs()
1284
- env_name env_description base_env_name language
1285
- 0 env1 Environment 1 python_3.7.13 Python
1286
- 1 env2 Environment 2 python_3.7.13 Python
1287
- 2 env3 Environment 3 r_4.1 R
1288
- 3 env4 Environment 4 r_4.1 R
1289
-
1290
- # Remove all R environments asynchronously.
1291
- >>> remove_all_envs(env_type="R", asynchronous=True)
1292
- Request to remove environment initiated successfully. Check the status using async_run_status(['5c23f956-c89a-4d69-9f1e-6491bac9973f', '6ec9ecc9-9223-4d3f-92a0-9d1abc652aca'])
1293
- True
1294
- >>> list_user_envs()
1295
- env_name env_description base_env_name language
1296
- 0 env1 Environment 1 python_3.7.13 Python
1297
- 1 env2 Environment 2 python_3.7.13 Python
1298
-
1299
- # Remove all remaining Python environments asynchronously.
1300
- >>> remove_all_envs(asynchronous=True)
1301
- Request to remove environment initiated successfully. Check the status using async_run_status('7d86eb99-9ab3-4e0d-b4dd-8b5f1757b9c7')
1302
- '7d86eb99-9ab3-4e0d-b4dd-8b5f1757b9c7'
1303
-
1304
-
1305
- # Example 6: Remove all environments asynchronously.
1306
- >>> env1 = create_env("env1", "python_3.7.13", "Environment 1")
1307
- >>> env2 = create_env("env2", "python_3.7.13", "Environment 2")
1308
- >>> env3 = create_env("env3", "r_4.1", "Environment 3")
1309
- >>> env4 = create_env("env4", "r_4.1", "Environment 4")
1310
-
1311
- >>> list_user_envs()
1312
- env_name env_description base_env_name language
1313
- 0 env1 Environment 1 python_3.7.13 Python
1314
- 1 env2 Environment 2 python_3.7.13 Python
1315
- 2 env3 Environment 3 r_4.1 R
1316
- 3 env4 Environment 4 r_4.1 R
1317
-
1318
- # Remove all environments asynchronously.
1319
- >>> remove_all_envs(asynchronous=True)
1320
- Request to remove environment initiated successfully. Check the status using async_run_status('22f5d693-38d2-469e-b434-9f7246c7bbbb')
1321
- '22f5d693-38d2-469e-b434-9f7246c7bbbb'
1322
- """
1323
- __arg_info_matrix = []
1324
- __arg_info_matrix.append(["env_type", env_type, True, (str), True, ["PY", "R"]])
1325
-
1326
- # Validate arguments
1327
- _Validators._validate_function_arguments(__arg_info_matrix)
1328
- if env_type is None:
1329
- status = __manage_envs(api_name="remove_all_envs",
1330
- **kwargs)
1331
- return status
1332
- else:
1333
- return _remove_all_envs(env_type, **kwargs)
1334
-
1335
-
1336
- def _remove_all_envs(env_type, **kwargs):
1337
- """
1338
- DESCRIPTION:
1339
- Internal Function removes Python or R user environments.
1340
-
1341
- PARAMETERS:
1342
- env_type:
1343
- Required Argument.
1344
- Specifies the type of the user environment to be removed.
1345
- Permitted Values:
1346
- * 'PY' - Remove only Python user environments.
1347
- * 'R' - Remove only R user environments.
1348
- Types: str
1349
-
1350
- kwargs:
1351
- asynchronous:
1352
- Optional Argument.
1353
- Specifies whether to remove environment synchronously or
1354
- asynchronously.
1355
- Default Value: False
1356
- Types: bool
1357
-
1358
- is_print:
1359
- Optional Argument.
1360
- Specifies whether to print the message or not.
1361
- Default Value: True
1362
- Types: bool
1363
-
1364
-
1365
- RETURNS:
1366
- True, if the operation is successful.
1367
-
1368
- RAISES:
1369
- TeradataMlException, RuntimeError.
1370
-
1371
- EXAMPLES:
1372
- >>> _remove_all_envs(env_type="PY")
1373
- User environment 'Fraud_detection' removed.
1374
- User environment 'Sales' removed.
1375
- User environment 'Purchase' removed.
1376
- All Python environment(s) removed.
1377
- >>> _remove_all_envs(env_type="R")
1378
- User environment 'Fraud_detection' removed.
1379
- User environment 'Carbon_Credits' removed.
1380
- All R environment(s) removed.
1381
- >>> remove_all_envs(env_type="R", asynchronous=True)
1382
- Request to remove environment initiated successfully. Check status using async_run_status(['82cd24d6-1264-49f5-81e1-76e83e09c303'])
1383
- """
1384
- # Variable for the message on lines 1437 and 1444.
1385
- env_type_message = "Python"
1386
- if env_type.capitalize() == "Py":
1387
- env_type = ["Python", "python"]
1388
- else:
1389
- env_type = ["R"]
1390
- env_type_message = "R"
1391
- asynchronous = kwargs.get("asynchronous", False)
1392
-
1393
- try:
1394
- # Retrieve all user env data.
1395
- user_envs_df = list_user_envs()
1396
- user_envs_lang_df = user_envs_df[user_envs_df.language.isin(env_type)] if \
1397
- user_envs_df is not None else pd.DataFrame(index=[])
1398
-
1399
- claim_id_list = []
1400
- if not user_envs_lang_df.empty:
1401
- env_name = user_envs_lang_df["env_name"]
1402
- # Executing remove_env in multiple threads (max_workers set to 10).
1403
- with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:
1404
- # Execute remove_env for each env_name.
1405
- future_remove_env = {
1406
- executor.submit(remove_env, env,
1407
- asynchronous=asynchronous, is_print=False):
1408
- env for env in env_name}
1409
- # Get the result of all executions.
1410
- failed_envs = {}
1411
- for future in concurrent.futures.as_completed(future_remove_env):
1412
- env = future_remove_env[future]
1413
- try:
1414
- future_result = future.result()
1415
- # Populate the claim ids of all the envs that
1416
- # have been removed asynchronously.
1417
- if asynchronous:
1418
- claim_id_list.append(future_result)
1419
-
1420
- except (TeradataMlException, RuntimeError, Exception) as emsg:
1421
- # Catching exceptions by remove_env if occured in any thread.
1422
- failed_envs[env] = emsg
1423
-
1424
- # Negative case - Failed to remove env.
1425
- if len(failed_envs) > 0:
1426
- emsg = ""
1427
- for env, tdemsg in failed_envs.items():
1428
- emsg += "\nUser environment '{0}' failed to remove. Reason: {1}"\
1429
- .format(env, tdemsg.args[0])
1430
- msg_code = MessageCodes.FUNC_EXECUTION_FAILED
1431
- error_msg = Messages.get_message(msg_code, "remove_all_envs()", emsg)
1432
- raise TeradataMlException(error_msg, msg_code)
1433
-
1434
- # Positive case - Envs removed without any failure print msg
1435
- # as per sync or async removal.
1436
- if not asynchronous:
1437
- msg = "All {} environment(s) removed.".format(env_type_message)
1438
- else:
1439
- msg = "Request to remove environment initiated successfully. Check " \
1440
- "the status using " \
1441
- "async_run_status(['" + "', '".join(claim_id_list) + "'])"
1442
- print(msg)
1443
- elif user_envs_lang_df.empty and user_envs_df is not None:
1444
- print("No {} user environment(s) found.".format(env_type_message))
1445
- return True
1446
- except (TeradataMlException, RuntimeError) as tdemsg:
1447
- # TeradataMlException and RuntimeError are raised by list_user_envs.
1448
- # list_user_envs should be replaced with remove_all_envs in the error
1449
- # message for final users.
1450
- tdemsg.args = (tdemsg.args[0].replace("list_user_envs", "remove_all_envs"),)
1451
- raise tdemsg
1452
- except Exception as emsg:
1453
- msg_code = MessageCodes.FUNC_EXECUTION_FAILED
1454
- error_msg = Messages.get_message(msg_code, "remove_all_envs", emsg)
1455
- raise TeradataMlException(error_msg, msg_code)
1456
-
1457
-
1458
- def set_user_env(env):
1459
- """
1460
- DESCRIPTION:
1461
- Function allows to set the default user environment to be used for the Apply()
1462
- and DataFrame.apply() function execution.
1463
-
1464
- PARAMETERS:
1465
- env:
1466
- Required Argument.
1467
- Specifies the remote user environment name to set as default for the session.
1468
- Types: str OR Object of UserEnv
1469
-
1470
- RETURNS:
1471
- True, if the operation is successful.
1472
-
1473
- RAISES:
1474
- TeradataMlException, RuntimeError.
1475
-
1476
- EXAMPLES:
1477
- # Create remote user environment.
1478
- >>> env = create_env('testenv', 'python_3.7.9', 'Test environment')
1479
- User environment 'testenv' created.
1480
-
1481
- # Example 1: Set the environment 'testenv' as default environment.
1482
- >>> set_user_env('testenv')
1483
- Default environment is set to 'testenv'.
1484
- >>>
1485
-
1486
- # Example 2: Create an environment with name 'demo_env' and set it as default environment.
1487
- >>> set_user_env(get_env('test_env'))
1488
- User environment 'testenv' created.
1489
- Default environment is set to 'testenv'.
1490
- >>>
1491
- """
1492
- __arg_info_matrix = []
1493
- __arg_info_matrix.append(["env", env, False, (str, UserEnv), True])
1494
-
1495
- # Validate arguments
1496
- _Validators._validate_function_arguments(__arg_info_matrix)
1497
-
1498
- # Get the environment name.
1499
- env = get_env(env_name=env) if isinstance(env, str) else env
1500
-
1501
- configure._default_user_env = env
1502
- print("Default environment is set to '{}'.".format(env.env_name))
1503
-
1504
- return True
1505
-
1506
-
1507
- def get_user_env():
1508
- """
1509
- DESCRIPTION:
1510
- Function to get the default user environment set for the session.
1511
-
1512
- PARAMETERS:
1513
- None.
1514
-
1515
- RETURNS:
1516
- An object of UserEnv, if the operation is successful.
1517
-
1518
- RAISES:
1519
- TeradataMlException, RuntimeError.
1520
-
1521
- EXAMPLES:
1522
- # Create remote user environment.
1523
- >>> env = create_env('testenv', 'python_3.7.9', 'Test environment')
1524
- User environment 'testenv' created.
1525
- >>> set_user_env('testenv')
1526
- Default environment is set to 'testenv'.
1527
- >>>
1528
-
1529
- # Example 1: Get the default environment.
1530
- >>> env = get_user_env()
1531
- """
1532
- if configure._default_user_env is None:
1533
- print("Default environment is not set. Set default environment using set_user_env().")
1534
- return
1535
-
1536
- return configure._default_user_env
1537
-
1538
-
1539
- def set_auth_token(ues_url, client_id=None):
1540
- """
1541
- DESCRIPTION:
1542
- Function to set the Authentication token to connect to User Environment Service
1543
- in VantageCloud Lake.
1544
- Note:
1545
- User must have a privilage to login with a NULL password to use set_auth_token().
1546
- Please refer to GRANT LOGON section in Teradata Documentation for more details.
1547
-
1548
-
1549
- PARAMETERS:
1550
- ues_url:
1551
- Required Argument.
1552
- Specifies the URL for User Environment Service in VantageCloud Lake.
1553
- Types: str
1554
-
1555
- client_id:
1556
- Optional Argument.
1557
- Specifies the id of the application that requests the access token from
1558
- VantageCloud Lake.
1559
- Types: str
1560
-
1561
-
1562
- RETURNS:
1563
- True, if the operation is successful.
1564
-
1565
- RAISES:
1566
- TeradataMlException, RuntimeError.
1567
-
1568
- EXAMPLES:
1569
-
1570
- # Example 1: Set the Authentication token using default client_id.
1571
- >>> import getpass
1572
- >>> set_auth_token(ues_url=getpass.getpass("ues_url : "))
1573
-
1574
- # Example 2: Set the Authentication token by specifying the client_id.
1575
- >>> set_auth_token(ues_url=getpass.getpass("ues_url : "),
1576
- ... client_id=getpass.getpass("client_id : "))
1577
- """
1578
- __arg_info_matrix = []
1579
- __arg_info_matrix.append(["ues_url", ues_url, False, (str), True])
1580
- __arg_info_matrix.append(["client_id", client_id, True, (str), True])
1581
-
1582
- # Validate arguments.
1583
- _Validators._validate_function_arguments(__arg_info_matrix)
1584
-
1585
- # Extract the base URL from "ues_url".
1586
- url_parser = urlparse(ues_url)
1587
- base_url = "{}://{}".format(url_parser.scheme, url_parser.netloc)
1588
-
1589
- if client_id is None:
1590
- netloc = url_parser.netloc
1591
- client_id = "{}-oaf-device".format(netloc.split('.')[0])
1592
-
1593
- da_wf = _DAWorkflow(base_url, client_id)
1594
- token_data = da_wf._get_token_data()
1595
-
1596
- # Set Open AF parameters.
1597
- configure._oauth_client_id = client_id
1598
- configure.ues_url = ues_url
1599
- configure._oauth_end_point = da_wf.device_auth_end_point
1600
- configure._auth_token_expiry_time = time() + token_data["expires_in"] - 15
1601
- # Store the jwt token in internal class attribute.
1602
- _InternalBuffer.add(auth_token=_AuthToken(token=token_data["access_token"]))
1603
-
1604
- return True
1
+ """
2
+ Copyright (c) 2020 by Teradata Corporation. All rights reserved.
3
+ TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
4
+
5
+ Primary Owner: Trupti.purohit@teradata.com
6
+ Secondary Owner: Gouri.patwardhan@Teradata.com
7
+
8
+ teradataml load library service wrappers.
9
+ ----------
10
+ All teradataml wrappers to provide interface to load library service stored procedures
11
+ from Open Analytics Framework.
12
+ """
13
+ import concurrent.futures
14
+ import functools
15
+ import json
16
+ import operator
17
+ import os
18
+
19
+ import pandas as pd
20
+ import requests
21
+
22
+ from json.decoder import JSONDecodeError
23
+ from teradataml import configure
24
+ from teradataml.context.context import _get_user
25
+ from teradataml.common.constants import HTTPRequest, AsyncStatusColumns
26
+ from teradataml.common.exceptions import TeradataMlException
27
+ from teradataml.common.messages import Messages
28
+ from teradataml.common.messagecodes import MessageCodes
29
+ from teradataml.common.utils import UtilFuncs
30
+ from teradataml.clients.pkce_client import _DAWorkflow
31
+ from teradataml.utils.internal_buffer import _InternalBuffer
32
+ from teradataml.scriptmgmt.UserEnv import UserEnv, _get_auth_token, \
33
+ _process_ues_response, _get_ues_url, _AuthToken
34
+ from teradataml.utils.validators import _Validators
35
+ from time import time, sleep
36
+ import warnings
37
+ import webbrowser
38
+ from urllib.parse import parse_qs, urlparse
39
+ from teradataml.utils.utils import _async_run_id_info
40
+ from teradatasqlalchemy.telemetry.queryband import collect_queryband
41
+
42
+
43
+ @collect_queryband(queryband="LstBsEnv")
44
+ def list_base_envs():
45
+ """
46
+ DESCRIPTION:
47
+ Lists the available Python and R base environments versions configured in the
48
+ Open Analytics Framework.
49
+ Note:
50
+ Function is not applicable for conda environments.
51
+ User can use any Python version while creating conda environment as long as Anaconda supports it.
52
+
53
+ PARAMETERS:
54
+ None.
55
+
56
+ RETURNS:
57
+ Pandas DataFrame.
58
+ If the operation is successful, function returns
59
+ environment name, language and version of the language interpreter in a Pandas dataframe.
60
+
61
+ RAISES:
62
+ TeradataMlException.
63
+
64
+ EXAMPLES:
65
+ >>> from teradataml import list_base_envs
66
+ >>> list_base_envs()
67
+ base_name language version
68
+ 0 python_3.7.13 Python 3.7.13
69
+ 1 python_3.8.13 Python 3.8.13
70
+ 2 python_3.9.13 Python 3.9.13
71
+ 3 r_4.1.3 R 4.1.3
72
+ 4 r_3.6.3 R 3.6.3
73
+ 5 r_4.0.2 R 4.0.2
74
+ >>>
75
+ """
76
+ try:
77
+ response = UtilFuncs._http_request(_get_ues_url("base_environments"), headers=_get_auth_token())
78
+
79
+ response = _process_ues_response(api_name="list_base_envs", response=response)
80
+ data = response.json()
81
+
82
+ # If no data, raise warning.
83
+ if len(data) == 0:
84
+ warnings.warn(Messages.get_message(MessageCodes.NO_ENVIRONMENT_FOUND, "Python/R base"))
85
+ return
86
+
87
+ # Create a pandas DataFrame from data.
88
+ return pd.DataFrame.from_records(data)
89
+
90
+ except (TeradataMlException, RuntimeError):
91
+ raise
92
+ except Exception as emsg:
93
+ msg_code = MessageCodes.FUNC_EXECUTION_FAILED
94
+ error_msg = Messages.get_message(msg_code, "list_base_envs", str(emsg))
95
+ raise TeradataMlException(error_msg, msg_code)
96
+
97
+
98
+ @collect_queryband(queryband="LstUsrEnv")
99
+ def list_user_envs(env_name=None, **kwargs):
100
+ """
101
+ DESCRIPTION:
102
+ Lists the Python OR R environments created by the session user in
103
+ Open Analytics Framework.
104
+
105
+ PARAMETERS:
106
+ env_name:
107
+ Optional Argument.
108
+ Specifies the string or regular expression to filter name of the environment.
109
+ Types: str
110
+
111
+ base_env:
112
+ Optional Argument.
113
+ Specifies the string or regular expression to filter the base Python environment.
114
+ Types: str
115
+
116
+ desc:
117
+ Optional Argument.
118
+ Specifies the string or regular expression to filter the description
119
+ about the environment.
120
+ Types: str
121
+
122
+ case:
123
+ Optional Argument.
124
+ Specifies whether filtering operation should be case sensitive or not.
125
+ Default Value: False
126
+ Types: boolean
127
+
128
+ conda_env:
129
+ Optional Argument.
130
+ Specifies the boolean value to filter the conda environment(s).
131
+ When set to True, all conda environments are listed.
132
+ When set to False, all non-conda environments are listed.
133
+ If not specified, all user environments are listed.
134
+ Types: bool
135
+
136
+ regex:
137
+ Optional Argument.
138
+ Specifies whether string passed to "env_name", "base_env", and "desc"
139
+ should be treated as regular expression or a literal.
140
+ When set to True, string is considered as a regular expression pattern,
141
+ otherwise treats it as literal string.
142
+ Default Value: True
143
+ Types: boolean
144
+
145
+ flags:
146
+ Optional Argument.
147
+ Specifies flags to pass for regular expressions in filtering.
148
+ For example
149
+ re.IGNORECASE.
150
+ Default Value: 0
151
+ Types: int
152
+
153
+ RETURNS:
154
+ Pandas DataFrame.
155
+ Function returns remote user environments and their details in a Pandas dataframe.
156
+ Function will help user find environments created, version of Python language used
157
+ in the environment and description of each environment if provided at the time of
158
+ environment creation.
159
+
160
+ RAISES:
161
+ TeradataMlException.
162
+
163
+ EXAMPLES:
164
+ # Create example environments.
165
+ >>> create_env('Fraud_Detection',
166
+ ... 'python_3.7.13',
167
+ ... 'Fraud detection through time matching')
168
+ User environment 'Fraud_detection' created.
169
+ >>> create_env('Lie_Detection',
170
+ ... 'python_3.7.13',
171
+ ... 'Lie detection through time matching')
172
+ User environment 'Lie_Detection' created.
173
+ >>> create_env('Lie_Detection_ML',
174
+ ... 'python_3.8.13',
175
+ ... 'Detect lie through machine learning.')
176
+ User environment 'Lie_Detection_ML' created.
177
+ >>> create_env('Sales_env',
178
+ ... 'python_3.9.13',
179
+ ... 'Sales team environment.')
180
+ User environment 'Sales_env' created.
181
+ >>> create_env('Customer_Trends',
182
+ ... 'r_4.1.3',
183
+ ... 'Analyse customer trends.')
184
+ User environment 'Customer_Trends' created.
185
+ >>> create_env('Carbon_Credits',
186
+ ... 'r_3.6.3',
187
+ ... 'Prediction of carbon credits consumption.')
188
+ User environment 'Carbon_Credits' created.
189
+ >>> create_env('Sales_cond_env',
190
+ ... 'python_3.9',
191
+ ... 'Sales team environment.',
192
+ ... conda_env=True)
193
+ Conda environment creation initiated
194
+ User environment 'Sales_cond_env' created.
195
+
196
+ # Example 1: List all available user environments.
197
+ >>> list_user_envs()
198
+ env_name env_description base_env_name language conda
199
+ 0 Carbon_Credits Prediction of carbon credits consumption r_3.6.3 R False
200
+ 1 Customer_Trends Analyse customer trends r_4.1.3 R False
201
+ 2 Fraud_Detection Fraud detection through time matching python_3.7.13 Python False
202
+ 3 Lie_Detection Lie detection through time matching python_3.7.13 Python False
203
+ 4 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python False
204
+ 5 Sales_env Sales team environment. python_3.9.13 Python False
205
+ 6 Sales_cond_env Sales team environment. python_3.9 Python True
206
+
207
+
208
+ # Example 2: List all user environments with environment name containing string
209
+ # "Detection" and description that contains string "."(period).
210
+ >>> list_user_envs(env_name="Detection", desc=".", regex=False)
211
+ env_name env_description base_env_name language conda
212
+ 2 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python False
213
+ >>>
214
+
215
+ # Example 3: List all user environments with description that contains string "lie"
216
+ # and is case sensitive.
217
+ >>> list_user_envs(desc="lie", case=True)
218
+ env_name env_description base_env_name language conda
219
+ 4 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python False
220
+ >>>
221
+
222
+ # Example 4: List all user environments with base environment version containing string
223
+ # "3.".
224
+ >>> list_user_envs(base_env="3.")
225
+ env_name env_description base_env_name language conda
226
+ 0 Carbon_Credits Prediction of carbon credits consumption r_3.6.3 R False
227
+ 2 Fraud_Detection Fraud detection through time matching python_3.7.13 Python False
228
+ 3 Lie_Detection Lie detection through time matching python_3.7.13 Python False
229
+ 4 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python False
230
+ 5 Sales_env Sales team environment. python_3.9.13 Python False
231
+ 6 Sales_conda_env Sales team environment. python_3.9 Python True
232
+
233
+ >>>
234
+
235
+ # Example 5: List all user environments with environment name contains string "detection",
236
+ # description containing string "fraud" and base environment containing string "3.7".
237
+ >>> list_user_envs("detection", desc="fraud", base_env="3.7")
238
+ env_name env_description base_env_name language conda
239
+ 2 Fraud_Detection Fraud detection through time matching python_3.7.13 Python False
240
+ >>>
241
+
242
+ # Example 6: List all user environments with environment name that ends with "detection".
243
+ >>> list_user_envs("detection$")
244
+ env_name env_description base_env_name language conda
245
+ 2 Fraud_Detection Fraud detection through time matching python_3.7.13 Python False
246
+ 3 Lie_Detection Lie detection through time matching python_3.7.13 Python False
247
+ >>>
248
+
249
+ # Example 7: List all user environments with description that has either "lie" or "sale".
250
+ # Use re.VERBOSE flag to add inline comment.
251
+ >>> list_user_envs(desc="lie|sale # Search for lie or sale.", flags=re.VERBOSE)
252
+ env_name env_description base_env_name language conda
253
+ 3 Lie_Detection Lie detection through time matching python_3.7.13 Python False
254
+ 4 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python False
255
+ 5 Sales_env Sales team environment. python_3.9.13 Python False
256
+ 6 Sales_conda_env Sales team environment. python_3.9 Python True
257
+ >>>
258
+
259
+ # Example 8: List all user environments where python 3 environment release version has
260
+ # odd number. For e.g. python_3.7.x.
261
+ >>> list_user_envs(base_env="\.\d*[13579]\.")
262
+ env_name env_description base_env_name language
263
+ 1 Customer_Trends Analyse customer trends r_4.1.3 R
264
+ 2 Fraud_Detection Fraud detection through time matching python_3.7.13 Python
265
+ 3 Lie_Detection Lie detection through time matching python_3.7.13 Python
266
+ 5 Sales_env Sales team environment. python_3.9.13 Python
267
+ >>>
268
+
269
+ # Example 9: List all conda environments.
270
+ >>> list_user_envs(conda_env=True)
271
+ env_name env_description base_env_name language conda
272
+ 6 Sales_conda_env Sales team environment. python_3.9 Python True
273
+ >>>
274
+ # Remove example environments.
275
+ remove_env("Fraud_Detection")
276
+ remove_env("Lie_Detection")
277
+ remove_env("Lie_Detection_ML")
278
+ remove_env("Sales_env")
279
+ remove_env("Carbon_Credits")
280
+ remove_env("Customer_Trends")
281
+ remove_env("Sales_conda_env")
282
+ """
283
+ base_env = kwargs.pop("base_env", None)
284
+ desc = kwargs.pop("desc", None)
285
+ case = kwargs.pop("case", False)
286
+ conda_env = kwargs.pop("conda_env", None)
287
+
288
+ __arg_info_matrix = []
289
+ __arg_info_matrix.append(["env_name", env_name, True, (str), True])
290
+ __arg_info_matrix.append(["base_env", base_env, True, (str), True])
291
+ __arg_info_matrix.append(["desc", desc, True, (str), True])
292
+ __arg_info_matrix.append(["conda_env", conda_env, True, (bool)])
293
+
294
+ # Validate arguments
295
+ _Validators._validate_function_arguments(__arg_info_matrix)
296
+
297
+ try:
298
+ response = UtilFuncs._http_request(_get_ues_url(), headers=_get_auth_token())
299
+ # Below condition is special case handeling when remove_all_envs() used by user, remove_all_envs()
300
+ # removes all the envs which result in a status_code 404 and due to which warnings provided in
301
+ # list_user_envs() not appears.
302
+ if response.status_code == 404 and "No user environments found." in response.text:
303
+ data = []
304
+ else:
305
+ response = _process_ues_response(api_name="list_user_envs", response=response)
306
+ data = response.json()
307
+
308
+ if len(data) > 0:
309
+ unknown_label = "Unknown"
310
+ # Check if environment is corrupted or not. If it is corrupted, alter the details.
311
+ for base_env_details in data:
312
+ if base_env_details["base_env_name"] == "*":
313
+ base_env_details["base_env_name"] = unknown_label
314
+ base_env_details["language"] = unknown_label
315
+ base_env_details["env_description"] = "Environment is corrupted. Use remove_env() to remove environment."
316
+
317
+ # Return result as Pandas dataframe.
318
+ pandas_df = pd.DataFrame.from_records(data)
319
+ # Filter based on arguments passed by user.
320
+ exprs = []
321
+ if env_name is not None:
322
+ exprs.append(pandas_df.env_name.str.contains(pat=env_name, case=case, **kwargs))
323
+ if base_env is not None:
324
+ exprs.append(pandas_df.base_env_name.str.contains(pat=base_env, case=case, **kwargs))
325
+ if desc is not None:
326
+ exprs.append(pandas_df.env_description.str.contains(pat=desc, case=case, **kwargs))
327
+ if conda_env is not None:
328
+ exprs.append(pandas_df.conda == conda_env)
329
+
330
+ pandas_df = pandas_df[functools.reduce(operator.and_, exprs)] if exprs else pandas_df
331
+
332
+ # Return the DataFrame if not empty.
333
+ if len(pandas_df) > 0:
334
+ return pandas_df
335
+
336
+ print("No user environment(s) found.")
337
+ except (TeradataMlException, RuntimeError):
338
+ raise
339
+ except Exception as emsg:
340
+ msg_code = MessageCodes.FUNC_EXECUTION_FAILED
341
+ error_msg = Messages.get_message(msg_code, "list_user_envs", emsg)
342
+ raise TeradataMlException(error_msg, msg_code)
343
+
344
+
345
+ def __create_envs(template):
346
+ """
347
+ DESCRIPTION:
348
+ Function creates remote environment(s) as per the specifications provided
349
+ in template json file. Template file contains information about each env
350
+ w.r.t. env name, base env name, env description, files/libs to be
351
+ installed in env.
352
+
353
+ PARAMETERS:
354
+ template:
355
+ Required Argument.
356
+ Specifies the path to template json file to be used for
357
+ env creation.
358
+ Types: str
359
+
360
+ RETURNS:
361
+ None.
362
+
363
+ RAISES:
364
+ TeradataMlException.
365
+
366
+ EXAMPLES:
367
+ # Create environments.
368
+ >>> __create_envs(template="create_env_template.json")
369
+ """
370
+ __arg_info_matrix = []
371
+ __arg_info_matrix.append(["template", template, False, (str), True])
372
+ # Validate argument.
373
+ _Validators._validate_function_arguments(__arg_info_matrix)
374
+
375
+ # Validate the file extension.
376
+ _Validators._validate_file_extension(template, ['json'])
377
+
378
+ # Validate existence of template file.
379
+ _Validators._validate_file_exists(template)
380
+
381
+ # Extract env specs from template file and
382
+ # process request for each env one by one.
383
+ create_env_specs = {}
384
+ try:
385
+ with open(template, 'r') as f:
386
+ create_env_specs = json.load(f)
387
+ except IOError:
388
+ raise
389
+ except JSONDecodeError as json_err:
390
+ raise Exception("Failed to read template json file. {}".format(json_err))
391
+
392
+ requested_envs = UtilFuncs._as_list(create_env_specs['env_specs'])
393
+
394
+ last_successful_env = None
395
+ for env_request in requested_envs:
396
+ # Create env.
397
+ env_name = env_request.get('env_name', None)
398
+ conda_env = env_request.get('conda_env', False)
399
+
400
+ if env_name:
401
+ try:
402
+ # Remove from dictionary and store the specifications
403
+ # which are not required for env creation.
404
+ files = env_request.pop('files', None)
405
+ libs = env_request.pop('libs', None)
406
+ libs_file_path = env_request.pop('libs_file_path', None)
407
+
408
+ print("Creating environment '{}'...".format(env_name))
409
+ create_env(**env_request)
410
+
411
+ print("An empty environment '{}' is created.".format(env_name))
412
+
413
+ env_handle = get_env(env_name)
414
+
415
+ errored = False
416
+ # Install files if requested any.
417
+ if files:
418
+ print("Installing files in environment '{}'...".format(env_name))
419
+ try:
420
+ if isinstance(files, str):
421
+ files = [files]
422
+
423
+ for file in files:
424
+ if os.path.isfile(file):
425
+ env_handle.install_file(file)
426
+ elif os.path.isdir(file):
427
+ __install_files(env_handle, file)
428
+ print("File installation in environment '{}' - Completed.".format(env_name))
429
+ except Exception as file_installation_failure:
430
+ print("Failed to process file installation request for environment: '{}'".format(env_name))
431
+ print(str(file_installation_failure))
432
+ errored = errored or True
433
+ pass
434
+
435
+ # Install libraries if requested any.
436
+ if libs or libs_file_path:
437
+ print("Installing libraries in environment '{}'...".format(env_name))
438
+ try:
439
+ env_handle.install_lib(libs, libs_file_path)
440
+ print("Libraries installation in environment '{}' - Completed.".format(env_name))
441
+ except Exception as lib_installation_failure:
442
+ print("Failed to process library installation request for environment: '{}'".format(env_name))
443
+ print(str(lib_installation_failure))
444
+ errored = errored or True
445
+ pass
446
+
447
+ # Print specifications of created env.
448
+ if errored:
449
+ print("Created environment '{}'.".format(env_name))
450
+ print("Part of request is not successful. Address manually.")
451
+ else:
452
+ print("Created environment '{}' with specified requirements.".format(env_name))
453
+ print(env_handle)
454
+ last_successful_env = env_handle
455
+ except Exception as env_creation_failure:
456
+ print("Failed to process request for environment: '{}'".format(env_name))
457
+ print(str(env_creation_failure))
458
+ pass
459
+ return last_successful_env
460
+
461
+
462
+ def __get_default_base_env():
463
+ """
464
+ Function returns the latest python environment available with
465
+ Open Analytics Framework.
466
+ """
467
+ try:
468
+ base_envs = list_base_envs()
469
+ python_versions = base_envs[base_envs.language == 'Python']['version']
470
+ # Convert version strings to tuples of integers for comparison
471
+ version_tuples = [tuple(map(int, version.split('.'))) for version in python_versions]
472
+ # Find the latest version tuple using max() function
473
+ latest_version_tuple = max(version_tuples)
474
+ # Convert the latest version tuple back to a string
475
+ latest_version = '.'.join(map(str, latest_version_tuple))
476
+ return base_envs[base_envs.version == latest_version]['base_name'].to_list()[0]
477
+ except Exception as base_env_err:
478
+ raise Exception("Failed to obtain default base environment.", str(base_env_err.exception))
479
+
480
+
481
+ def __install_files(env, directory):
482
+ """
483
+ Function to install files under given directory and
484
+ all the subdirectories recursively.
485
+ """
486
+ for (dir_path, dir_names, file_names) in os.walk(directory):
487
+ for file_name in file_names:
488
+ env.install_file(os.path.join(dir_path, file_name))
489
+
490
+
491
+ @collect_queryband(queryband="CrtEnv")
492
+ def create_env(env_name=None, base_env=None, desc=None, template=None, conda_env=False):
493
+ """
494
+ DESCRIPTION:
495
+ Creates isolated remote user environment(s) in the Open Analytics
496
+ Framework that include a specific Python or R language interpreter version.
497
+ Available base Python or R environments can be found using list_base_envs()
498
+ function. When "template" argument is provided, additionally, files/libs are
499
+ installed if specified in template file. Out of provided specifications in
500
+ template file, if any of the environment creation fails, failure message is
501
+ printed on console and next environment creation is taken up.
502
+
503
+ PARAMETERS:
504
+ env_name:
505
+ Required when "template" is not used, optional otherwise.
506
+ Specifies the name of the environment to be created.
507
+ Note:
508
+ Either "env_name" or "template" argument must be specified.
509
+ Types: str
510
+
511
+ base_env:
512
+ Optional Argument.
513
+ Specifies the name of the base Python or R environment
514
+ to be used to create remote user environment when "env_name"
515
+ is provided. This argument is ignored when "template" is provided.
516
+ Notes:
517
+ * When "base_env" is not provided, highest Python
518
+ base environment listed by list_base_envs() is used.
519
+ * When creating a conda environment, user can pass any Python version
520
+ supported by Anaconda to "base_env", irrespective of base environments
521
+ listed with list_base_envs().
522
+ Types: str
523
+
524
+ desc:
525
+ Optional Argument.
526
+ Specifies description for the remote environment when "env_name"
527
+ is provided. This argument is ignored when "template" is provided.
528
+ Default value: "This env '<env_name>' is created with base env
529
+ '<base_env>'."
530
+ Types: str
531
+
532
+ template:
533
+ Required when "env_name" is not used, optional otherwise.
534
+ Specifies the path to template json file containing details
535
+ of the user environment(s) to be created. Using the template
536
+ file one can create one or more user environments with same or
537
+ different requirements. This template file can contain following
538
+ information about the environments to be created:
539
+ * Name of the environment. (Required)
540
+ * Base Python version to be used. (Optional)
541
+ * Description for the environment. (Optional)
542
+ * Files or libraries to be installed in the environment. (Optional).
543
+
544
+ Here is a sample example of the template file:
545
+ {
546
+ "env_specs" : [
547
+ {
548
+ "env_name" : "<name of the user environment_MUST_BE_SPECIFIED>",
549
+ "base_env" : "<OPTIONAL_base_env>",
550
+ "desc": "<OPTIONAL_env_description>",
551
+ "libs": ["<OPTIONAL>", "<List_of_libs_to_be_installed>"] OR "<location_of_requirements.txt>"
552
+ "files": ["<OPTIONAL>", "<full_path_the_file>", "<full_path_to_dir>"]
553
+ },
554
+ {
555
+ "env_name" : "....",
556
+ "base_env" : "...",
557
+ "desc": "..",
558
+ "libs": ..
559
+ "files": ...
560
+ },
561
+ {
562
+ ...
563
+ },
564
+ {
565
+ ...
566
+ }
567
+ ]
568
+ }
569
+ Notes:
570
+ * Either "template" or "env_name" argument must be specified.
571
+ * Template file can contain details about single or multiple
572
+ environments to be created. At least one is required.
573
+ * Content of template file should adhere to the syntax mentioned
574
+ above. Check example for more details.
575
+ Types: str
576
+
577
+ conda_env:
578
+ Optional Argument.
579
+ Specifies whether the environment to be created is a conda environment or not.
580
+ When set to True, conda environment is created.
581
+ Otherwise, non conda environment is created.
582
+ Note:
583
+ * Currently, only Python conda environment is supported.
584
+ Default value: False
585
+ Types: bool
586
+
587
+
588
+ RETURNS:
589
+ An object of class UserEnv representing the user environment.
590
+ When template file provided with "template" has specifications for multiple
591
+ environments, an object of class UserEnv representing last created environment
592
+ is returned.
593
+
594
+ RAISES:
595
+ TeradataMlException.
596
+
597
+ EXAMPLES:
598
+ # List all available user environments.
599
+ >>> list_base_envs()
600
+ base_name language version
601
+ 0 python_3.7.13 Python 3.7.13
602
+ 1 python_3.8.13 Python 3.8.13
603
+ 2 python_3.9.13 Python 3.9.13
604
+ 3 python_3.10.5 Python 3.10.5
605
+ 4 r_4.1 R 4.1.3
606
+ 5 r_4.0 R 4.0.5
607
+ 6 r_4.2 R 4.2.2
608
+
609
+ # Example 1: Create a Python 3.7.13 environment with given name and description in the Vantage.
610
+ >>> fraud_detection_env = create_env('Fraud_detection',
611
+ ... 'python_3.7.13',
612
+ ... 'Fraud detection through time matching')
613
+ User environment 'Fraud_detection' created.
614
+
615
+ # Example 2: Create a R 4.1.3 environment with given name and description in the Vantage.
616
+ >>> fraud_detection_env = create_env('Carbon_Credits',
617
+ ... 'r_4.1',
618
+ ... 'Prediction of carbon credits consumption')
619
+ User environment 'Carbon_Credits' created.
620
+
621
+ # Example 3: Create multiple environments and install files/libraries
622
+ # in those by providing specifications in template file.
623
+
624
+ # Create a template json file.
625
+ >>> import teradataml, os, json
626
+ >>> tdml_data_path = os.path.join(os.path.dirname(teradataml.__file__), "data")
627
+ ... python_base_env = "python_3.9.13"
628
+ ... r_base_env = "r_4.1"
629
+ ... env_specs = [
630
+ ... {
631
+ ... "env_name": "env_1",
632
+ ... "base_env": python_base_env,
633
+ ... "desc": "Desc for test env 1"
634
+ ... },
635
+ ... {
636
+ ... "env_name": "env_2",
637
+ ... "base_env": r_base_env,
638
+ ... "libs": ["glm2", "stringi"]
639
+ ... "files": [os.path.join(tdml_data_path, "load_example_data.py"),
640
+ ... os.path.join(tdml_data_path, "scripts")]
641
+ ... }
642
+ ... ]
643
+ ... json_data = {"env_specs": env_specs}
644
+ ... with open("template.json", "w") as json_file:
645
+ ... json.dump(json_data, json_file)
646
+
647
+ # Create environments.
648
+ >>> create_env(template="template.json")
649
+ Creating environment 'env_1'...
650
+ User environment 'env_1' created.
651
+ An empty environment 'env_1' is created.
652
+ Created environment 'env_1' with specified requirements.
653
+ Environment Name: env_1
654
+ Base Environment: python_3.9.13
655
+ Description: Desc for test env 1
656
+
657
+ Creating environment 'env_2'...
658
+ User environment 'env_2' created.
659
+ An empty environment 'env_2' is created.
660
+ Installing files in environment 'env_2'...
661
+ File 'load_example_data.py' installed successfully in the remote user environment 'env_2'.
662
+ File 'mapper.py' installed successfully in the remote user environment 'env_2'.
663
+ File 'mapper.R' installed successfully in the remote user environment 'env_2'.
664
+ File 'mapper_replace.py' installed successfully in the remote user environment 'env_2'.
665
+ File installation in environment 'env_2' - Completed.
666
+ Created environment 'env_2' with specified requirements.
667
+ Environment Name: env_2
668
+ Base Environment: r_4.1
669
+ Description: This env 'env_2' is created with base env 'r_4.1'.
670
+
671
+
672
+ ############ Files installed in User Environment ############
673
+
674
+ File Size Timestamp
675
+ 0 mapper.py 547 2023-11-07T10:14:06Z
676
+ 1 mapper.R 613 2023-11-07T10:14:09Z
677
+ 2 load_example_data.py 14158 2023-11-07T10:14:03Z
678
+ 3 mapper_replace.py 552 2023-11-07T10:14:12Z
679
+
680
+
681
+ ############ Libraries installed in User Environment ############
682
+
683
+ name version
684
+ 0 KernSmooth 2.23-20
685
+ 1 MASS 7.3-55
686
+ 2 Matrix 1.4-0
687
+ 3 base 4.1.3
688
+ 4 boot 1.3-28
689
+ 5 class 7.3-20
690
+ 6 cluster 2.1.2
691
+ 7 codetools 0.2-18
692
+ 8 compiler 4.1.3
693
+ 9 datasets 4.1.3
694
+ 10 foreign 0.8-82
695
+ 11 grDevices 4.1.3
696
+ 12 graphics 4.1.3
697
+ 13 grid 4.1.3
698
+ 14 lattice 0.20-45
699
+ 15 methods 4.1.3
700
+ 16 mgcv 1.8-39
701
+ 17 nlme 3.1-155
702
+ 18 nnet 7.3-17
703
+ 19 parallel 4.1.3
704
+ 20 remotes 2.4.2
705
+ 21 rpart 4.1.16
706
+ 22 spatial 7.3-15
707
+ 23 splines 4.1.3
708
+ 24 stats 4.1.3
709
+ 25 stats4 4.1.3
710
+ 26 survival 3.2-13
711
+ 27 tcltk 4.1.3
712
+ 28 tools 4.1.3
713
+ 29 utils 4.1.3
714
+
715
+ # Example 4: Create a Conda Python 3.8 environment with given name and
716
+ # description in the Vantage.
717
+ >>> fraud_detection_env = create_env('Fraud_detection_conda',
718
+ ... 'python_3.8',
719
+ ... 'Fraud detection through time matching',
720
+ conda_env=True)
721
+ Conda environment creation initiated
722
+ User environment 'Fraud_detection_conda' created.
723
+ """
724
+
725
+ # Either env_name or template can be used.
726
+ # At least one is required.
727
+ _Validators._validate_mutually_exclusive_arguments(env_name,
728
+ "env_name",
729
+ template,
730
+ "template",
731
+ skip_all_none_check=False)
732
+ # When env_name is provided, proceed with the conventional way.
733
+ if env_name is not None:
734
+ __arg_info_matrix = []
735
+ __arg_info_matrix.append(["env_name", env_name, False, (str), True])
736
+ __arg_info_matrix.append(["base_env", base_env, True, (str), True])
737
+ __arg_info_matrix.append(["desc", desc, True, (str)])
738
+ __arg_info_matrix.append(["conda_env", conda_env, True, (bool)])
739
+
740
+ # Validate arguments
741
+ _Validators._validate_function_arguments(__arg_info_matrix, skip_empty_check=False)
742
+
743
+ # Get the latest python base env in OpenAF, if base_env is not provided.
744
+ # Note: By default python base env is obtained.
745
+ if not base_env:
746
+ base_env = __get_default_base_env()
747
+ if not desc:
748
+ desc = "This env '{}' is created with base env '{}'.".format(env_name, base_env)
749
+ try:
750
+ data = {"env_name": env_name,
751
+ "env_description": desc,
752
+ "base_env_name": base_env
753
+ }
754
+ response = UtilFuncs._http_request(
755
+ _get_ues_url(conda_env=conda_env), HTTPRequest.POST, headers=_get_auth_token(), json=data)
756
+
757
+ # UES reponse.
758
+ resp = _process_ues_response(api_name="create_env", response=response)
759
+
760
+ msg = "User environment '{}' created."
761
+
762
+ if conda_env:
763
+ print("Conda environment creation initiated")
764
+ # Get claim_id.
765
+ claim_id = response.json().get("claim_id", "")
766
+ # Poll the claim_id status.
767
+ __poll_claim_id_status(claim_id, "create_env")
768
+ print(msg.format(env_name))
769
+
770
+ # Return an instance of class UserEnv.
771
+ return UserEnv(env_name, base_env, desc)
772
+
773
+ except (TeradataMlException, RuntimeError):
774
+ raise
775
+
776
+ except Exception as emsg:
777
+ msg_code = MessageCodes.FUNC_EXECUTION_FAILED
778
+ error_msg = Messages.get_message(msg_code, "create_env", str(emsg))
779
+ raise TeradataMlException(error_msg, msg_code)
780
+
781
+ else:
782
+ # When template is provided, proceed with recursive way.
783
+ return __create_envs(template)
784
+
785
+
786
+ def _async_run_status_open_af(claim_id):
787
+ """
788
+ DESCRIPTION:
789
+ Internal function to get the status of a claim_id.
790
+
791
+
792
+ PARAMETERS:
793
+ claim_id:
794
+ Required Argument.
795
+ Specifies the unique identifier of the asynchronous process.
796
+ Types: str
797
+
798
+ RETURNS:
799
+ list
800
+
801
+ RAISES:
802
+ None
803
+
804
+ EXAMPLES:
805
+ __get_claim_id_status('278381bf-e3b3-47ff-9ba5-c3b5d9007363')
806
+ """
807
+ # Get the claim id status.
808
+ resp_data = __get_status(claim_id)
809
+
810
+ desc = _async_run_id_info.get(claim_id, {}).get("description", "Unknown")
811
+ get_details = lambda data: {AsyncStatusColumns.ADDITIONAL_DETAILS.value:
812
+ data.pop("details", None),
813
+ AsyncStatusColumns.STATUS.value:
814
+ data.pop("stage", None),
815
+ AsyncStatusColumns.TIMESTAMP.value:
816
+ data.pop("timestamp", None),
817
+ AsyncStatusColumns.RUN_ID.value:
818
+ claim_id,
819
+ AsyncStatusColumns.RUN_DESCRIPTION.value: desc}
820
+
821
+ return [get_details(sub_step) for sub_step in resp_data]
822
+
823
+
824
+ def __get_status(claim_id):
825
+ """
826
+ DESCRIPTION:
827
+ Internal function to get the status of a claim_id using
828
+ status API's REST call.
829
+
830
+
831
+ PARAMETERS:
832
+ claim_id:
833
+ Required Argument.
834
+ Specifies the unique identifier of the asynchronous process.
835
+ Types: str
836
+
837
+ RETURNS:
838
+ list
839
+
840
+ RAISES:
841
+ None
842
+
843
+ EXAMPLES:
844
+ __get_status('278381bf-e3b3-47ff-9ba5-c3b5d9007363')
845
+ """
846
+ # Get the claim id status
847
+ response = UtilFuncs._http_request(_get_ues_url(env_type="fm",
848
+ claim_id=claim_id,
849
+ api_name="status"),
850
+ headers=_get_auth_token())
851
+ return _process_ues_response(api_name="status",
852
+ response=response).json()
853
+
854
+
855
+ @collect_queryband(queryband="RmEnv")
856
+ def remove_env(env_name, **kwargs):
857
+ """
858
+ DESCRIPTION:
859
+ Removes the user's Python or R environment from the Open Analytics Framework.
860
+ The remote user environments are created using create_env() function.
861
+ Note:
862
+ remove_env() should not be triggered on any of the environment if
863
+ install_lib/uninstall_lib/update_lib is running on the corresponding
864
+ environment.
865
+
866
+ PARAMETERS:
867
+ env_name:
868
+ Required Argument.
869
+ Specifies the name of the environment to be removed.
870
+ Types: str
871
+
872
+ **kwargs:
873
+ asynchronous:
874
+ Optional Argument.
875
+ Specifies whether to remove environment synchronously or
876
+ asynchronously. When set to True, environment will be removed
877
+ asynchronously. Otherwise, the environment will be removed synchronously.
878
+ Default Value: False
879
+ Types: bool
880
+
881
+
882
+ RETURNS:
883
+ True, if the operation is synchronous, str otherwise.
884
+
885
+ RAISES:
886
+ TeradataMlException, RuntimeError.
887
+
888
+ EXAMPLES:
889
+ # Create a Python 3.7.13 environment with given name and description in the Vantage.
890
+ >>> fraud_detection_env = create_env('Fraud_detection',
891
+ ... 'python_3.7.13',
892
+ ... 'Fraud detection through time matching')
893
+ User environment 'Fraud_detection' created.
894
+ >>>
895
+ # Create a R 4.1.3 environment with given name and description in the Vantage.
896
+ >>> fraud_detection_env = create_env('Carbon_Credits',
897
+ ... 'r_4.1',
898
+ ... 'Prediction of carbon credits consumption')
899
+ User environment 'Carbon_Credits' created.
900
+ >>>
901
+ # Example 1: Remove Python environment asynchronously.
902
+ >>> remove_env('Fraud_detection', asynchronous=True)
903
+ Request to remove environment initiated successfully. Check the status using list_user_envs(). If environment is not removed, check the status of asynchronous call using async_run_status('ab34cac6-667a-49d7-bac8-d0456f372f6f') or get_env('Fraud_detection').status('ab34cac6-667a-49d7-bac8-d0456f372f6f')
904
+ 'ab34cac6-667a-49d7-bac8-d0456f372f6f'
905
+
906
+ >>>
907
+ # Example 2: Remove R environment synchronously.
908
+ >>> remove_env('Carbon_Credits')
909
+ User environment 'Carbon_Credits' removed.
910
+ True
911
+ """
912
+ __arg_info_matrix = []
913
+ __arg_info_matrix.append(["env_name", env_name, False, (str), True])
914
+
915
+ # Validate arguments
916
+ _Validators._validate_function_arguments(__arg_info_matrix)
917
+
918
+ status = __manage_envs(env_name=env_name, api_name="remove_env",
919
+ **kwargs)
920
+
921
+ return status
922
+
923
+
924
+ def __manage_envs(env_name=None, api_name="remove_env", **kwargs):
925
+ """
926
+ Internal function to manage environment deletion synchronously or
927
+ asynchronously.
928
+
929
+ PARAMETERS:
930
+ env_name:
931
+ Optional Argument.
932
+ Specifies the name of the environment to be removed.
933
+ Types: str
934
+
935
+ api_name:
936
+ Optional Argument.
937
+ Specifies the name of the API.
938
+ Permitted Values: remove_env, remove_all_envs
939
+ Default Value: remove_env
940
+ Types: str
941
+
942
+ kwargs:
943
+ asynchronous:
944
+ Optional Argument.
945
+ Specifies whether to remove environment synchronously or
946
+ asynchronously.
947
+ Default Value: False
948
+ Types: bool
949
+
950
+ is_print:
951
+ Optional Argument.
952
+ Specifies whether to print the message or not.
953
+ Default Value: True
954
+ Types: bool
955
+
956
+
957
+ RETURNS:
958
+ True, if the operation is synchronous, str otherwise.
959
+
960
+ RAISES:
961
+ TeradatamlException.
962
+
963
+ EXAMPLES:
964
+ __manage_envs(env_name="test_env", api_name="remove_env", asynchronous=True)
965
+ """
966
+ asynchronous = kwargs.get("asynchronous", False)
967
+ # In case of remove_all_envs(env_type="R") it was printing async msges
968
+ # multiple times. To restrict that internally introduced is_print.
969
+ is_print = kwargs.get("is_print", True)
970
+
971
+ __arg_info_matrix = []
972
+ __arg_info_matrix.append(["api_name", api_name, False, (str), True,
973
+ ["remove_env", "remove_all_envs"]])
974
+ __arg_info_matrix.append(["asynchronous", asynchronous, True, bool])
975
+ __arg_info_matrix.append(["is_print", is_print, True, bool])
976
+
977
+ # Argument validation.
978
+ _Validators._validate_missing_required_arguments(__arg_info_matrix)
979
+ _Validators._validate_function_arguments(__arg_info_matrix)
980
+
981
+ try:
982
+ # Get the ues url for corresponding API.
983
+ ues_url = _get_ues_url(env_name=env_name, api_name=api_name) if api_name == "remove_env" \
984
+ else _get_ues_url(remove_all_envs=True, api_name=api_name)
985
+
986
+ response = UtilFuncs._http_request(ues_url, HTTPRequest.DELETE,
987
+ headers=_get_auth_token())
988
+
989
+ resp = _process_ues_response(api_name=api_name, response=response)
990
+ claim_id = resp.json().get("claim_id", "")
991
+
992
+ # If env removal is asynchronous, then print the msg for user with
993
+ # the claim_id. Else, poll the status using __poll_claim_id_status().
994
+ if asynchronous:
995
+ if is_print:
996
+ msg = "Request to remove environment initiated successfully. " \
997
+ "Check the status using "
998
+ if api_name == "remove_env":
999
+ msg = "{2}list_user_envs(). If environment is not removed, " \
1000
+ "check the status of asynchronous call using" \
1001
+ " async_run_status('{1}') or get_env('{0}').status('{1}')".\
1002
+ format(env_name, claim_id, msg)
1003
+ else:
1004
+ msg = "{0}async_run_status('{1}')".format(msg, claim_id)
1005
+ print(msg)
1006
+ # End of 'is_print' condition.
1007
+
1008
+ # Get the description as per the API.
1009
+ desc = "Remove '{}' user environment.".format(env_name) \
1010
+ if api_name == "remove_env" else "Removing all user environments."
1011
+
1012
+ _async_run_id_info[claim_id] = {"mapped_func": _async_run_status_open_af,
1013
+ "description": desc}
1014
+ return claim_id
1015
+ else:
1016
+ # Poll the claim_id status.
1017
+ __poll_claim_id_status(claim_id, api_name)
1018
+ msg = "User environment '{}' removed.".format(env_name) \
1019
+ if api_name == "remove_env" else \
1020
+ "All user environment(s) removed."
1021
+ print(msg)
1022
+ return True
1023
+
1024
+ except Exception as exc:
1025
+ raise exc
1026
+
1027
+
1028
+ def __poll_claim_id_status(claim_id, api_name="remove_env"):
1029
+ """
1030
+ Internal function to periodically poll and check the
1031
+ status of a claim_id.
1032
+
1033
+ PARAMETERS:
1034
+ claim_id:
1035
+ Required Argument.
1036
+ Specifies the unique identifier of the asynchronous process.
1037
+ Types: str
1038
+
1039
+ api_name:
1040
+ Optional Argument.
1041
+ Specifies the name of the API.
1042
+ Permitted Values: remove_env, remove_all_envs, create_env
1043
+ Default Value: remove_env
1044
+ Types: str
1045
+
1046
+
1047
+
1048
+ RETURNS:
1049
+ None.
1050
+
1051
+ RAISES:
1052
+ None.
1053
+
1054
+ EXAMPLES:
1055
+ __poll_claim_id_status('cf7245f0-e962-4451-addf-efa7e123998d')
1056
+ """
1057
+ while True:
1058
+ sleep(2)
1059
+
1060
+ # Poll the claim id to get the status.
1061
+ resp_data = __get_status(claim_id)
1062
+
1063
+ # Breaking condition -
1064
+ # For create_env and remove_env: Check for the 'Finished' stage in the list of resp.
1065
+ # For remove_all_envs: above cond. and No user envs condition should break it .
1066
+ for data in resp_data:
1067
+ if ("Finished" in data["stage"]) or \
1068
+ (api_name in ["create_env", "remove_all_envs"] and "Errored" in data["stage"]):
1069
+ return
1070
+
1071
+
1072
+ @collect_queryband(queryband="GtEnv")
1073
+ def get_env(env_name):
1074
+ """
1075
+ DESCRIPTION:
1076
+ Returns an object of class UserEnv which represents an existing remote user environment
1077
+ created in the Open Analytics Framework. The user environment can be created using
1078
+ create_env() function. This function is useful to get an object of existing user
1079
+ environment. The object returned can be used to perform further operations such as
1080
+ installing, removing files and libraries.
1081
+
1082
+ PARAMETERS:
1083
+ env_name:
1084
+ Required Argument.
1085
+ Specifies the name of the existing remote user environment.
1086
+ Types: str
1087
+
1088
+ RETURNS:
1089
+ An object of class UserEnv representing the remote user environment.
1090
+
1091
+ RAISES:
1092
+ TeradataMlException.
1093
+
1094
+ EXAMPLES:
1095
+ # List available Python environments in the Vantage.
1096
+ >>> list_base_envs()
1097
+ base_name language version
1098
+ 0 python_3.6.11 Python 3.6.11
1099
+ 1 python_3.7.9 Python 3.7.9
1100
+ 2 python_3.8.5 Python 3.8.5
1101
+
1102
+ # Create a Python 3.8.5 environment with given name and description in the Vantage and
1103
+ # get an object of class UserEnv.
1104
+ #
1105
+ >>> test_env = create_env('test_env', 'python_3.8.5', 'Fraud detection through time matching')
1106
+ User environment 'test_env' created.
1107
+
1108
+ # In a new terdataml session, user can use get_env() function to get an object pointing to
1109
+ # existing user environment created in previous step so that further operations can be
1110
+ # performed such as install files/libraries.
1111
+ >>> test_env = get_env('test_env')
1112
+ """
1113
+ __arg_info_matrix = []
1114
+ __arg_info_matrix.append(["env_name", env_name, False, (str), True])
1115
+
1116
+ # Validate arguments
1117
+ _Validators._validate_function_arguments(__arg_info_matrix)
1118
+
1119
+ try:
1120
+ # Get environments created by the current logged in user.
1121
+ user_envs_df = list_user_envs()
1122
+
1123
+ if env_name not in user_envs_df.env_name.values:
1124
+ msg_code = MessageCodes.FUNC_EXECUTION_FAILED
1125
+ error_msg = Messages.get_message(msg_code, "get_env()", "User environment '{}' not found."
1126
+ " Use 'create_env()' function to create"
1127
+ " user environment.".format(env_name))
1128
+ raise TeradataMlException(error_msg, msg_code)
1129
+
1130
+ # Get row matching the environment name.
1131
+ userenv_row = user_envs_df[user_envs_df['env_name'] == env_name]
1132
+
1133
+ if userenv_row.base_env_name.values[0] == "Unknown":
1134
+ msg_code = MessageCodes.FUNC_EXECUTION_FAILED
1135
+ error_msg = Messages.get_message(msg_code, "get_env()", "User environment '{}' is corrupted."
1136
+ " Use 'remove_env()' function to remove"
1137
+ " user environment.".format(env_name))
1138
+ raise TeradataMlException(error_msg, msg_code)
1139
+
1140
+ # Return an instance of class UserEnv.
1141
+ return UserEnv(userenv_row.env_name.values[0],
1142
+ userenv_row.base_env_name.values[0],
1143
+ userenv_row.env_description.values[0])
1144
+ except (TeradataMlException, RuntimeError) as tdemsg:
1145
+ # TeradataMlException and RuntimeError are raised by list_user_envs.
1146
+ # list_user_envs should be replaced with get_env in the error
1147
+ # message for final users.
1148
+ tdemsg.args = (tdemsg.args[0].replace("list_user_envs", "get_env"),)
1149
+ raise tdemsg
1150
+ except Exception as emsg:
1151
+ msg_code = MessageCodes.FUNC_EXECUTION_FAILED
1152
+ error_msg = Messages.get_message(msg_code, "get_env", emsg)
1153
+ raise TeradataMlException(error_msg, msg_code)
1154
+
1155
+
1156
+ @collect_queryband(queryband="RmAllEnvs")
1157
+ def remove_all_envs(env_type=None, **kwargs):
1158
+ """
1159
+ DESCRIPTION:
1160
+ Removes user environments from the Open Analytics Framework. Function allows user
1161
+ to remove only Python user environments or only R user environments or all user
1162
+ environments based on the value passed to argument "env_type".
1163
+ Note:
1164
+ * Do not execute remove_all_envs() if any of the library management functions(install_lib()
1165
+ /uninstall_lib()/update_lib()) are being executed on any environment.
1166
+
1167
+ PARAMETERS:
1168
+ env_type:
1169
+ Optional Argument.
1170
+ Specifies the type of the user environment to be removed.
1171
+ Permitted Values:
1172
+ * 'PY' - Remove only Python user environments.
1173
+ * 'R' - Remove only R user environments.
1174
+ * None - Remove all (Python and R) user environments.
1175
+ Default Value: None
1176
+ Types: str
1177
+
1178
+ kwargs:
1179
+ asynchronous:
1180
+ Optional Argument.
1181
+ Specifies whether to remove environment synchronously or
1182
+ asynchronously.
1183
+ Default Value: False
1184
+ Types: bool
1185
+
1186
+
1187
+ RETURNS:
1188
+ True when
1189
+ * Operation is synchronous.
1190
+ * Operation is asynchronous with "env_type".
1191
+ str otherwise.
1192
+
1193
+ RAISES:
1194
+ TeradataMlException, RuntimeError.
1195
+
1196
+ EXAMPLES:
1197
+ # Example 1: Remove all the Python and R user environments.
1198
+ >>> create_env('Lie_Detection_ML', 'python_3.8.13', 'Detect lie through machine learning.')
1199
+ >>> create_env('Customer_Trends', 'r_4.1.3', 'Analyse customer trends.')
1200
+ >>> list_user_envs()
1201
+ env_name env_description base_env_name language
1202
+ 0 Customer_Trends Analyse customer trends r_4.1.3 R
1203
+ 1 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python
1204
+
1205
+ >>> remove_all_envs()
1206
+ All user environment(s) removed.
1207
+ True
1208
+
1209
+ >>> list_user_envs()
1210
+ No user environment(s) found.
1211
+
1212
+
1213
+ # Example 2: Remove all the Python user environments.
1214
+ >>> create_env('Lie_Detection_ML', 'python_3.8.13', 'Detect lie through machine learning.')
1215
+ >>> create_env('Customer_Trends', 'r_4.1.3', 'Analyse customer trends.')
1216
+ >>> list_user_envs()
1217
+ env_name env_description base_env_name language
1218
+ 0 Customer_Trends Analyse customer trends r_4.1.3 R
1219
+ 1 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python
1220
+
1221
+ >>> remove_all_envs(env_type="PY")
1222
+ User environment 'Lie_Detection_ML' removed.
1223
+ All Python environment(s) removed.
1224
+ True
1225
+ >>> list_user_envs()
1226
+ env_name env_description base_env_name language
1227
+ 0 Customer_Trends Analyse customer trends r_4.1.3 R
1228
+
1229
+
1230
+ # Example 3: Remove all the R user environments.
1231
+ >>> create_env('Lie_Detection_ML', 'python_3.8.13', 'Detect lie through machine learning.')
1232
+ >>> create_env('Customer_Trends', 'r_4.1.3', 'Analyse customer trends.')
1233
+ >>> list_user_envs()
1234
+ env_name env_description base_env_name language
1235
+ 0 Customer_Trends Analyse customer trends r_4.1.3 R
1236
+ 1 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python
1237
+
1238
+ >>> remove_all_envs(env_type="R")
1239
+ User environment 'Customer_Trends' removed.
1240
+ All R environment(s) removed.
1241
+ True
1242
+ >>> list_user_envs()
1243
+ env_name env_description base_env_name language
1244
+ 0 Lie_Detection_ML Detect lie through machine learning. python_3.8.13 Python
1245
+
1246
+
1247
+ # Example 4: Remove all Python and R environments synchronously.
1248
+ # Note: The example first removes all R environments synchronously,
1249
+ # followed by Python environments.
1250
+ >>> env1 = create_env("env1", "python_3.7.13", "Environment 1")
1251
+ >>> env2 = create_env("env2", "python_3.7.13", "Environment 2")
1252
+ >>> env3 = create_env("env3", "r_4.1", "Environment 3")
1253
+ >>> env4 = create_env("env4", "r_4.1", "Environment 4")
1254
+
1255
+ >>> list_user_envs()
1256
+ env_name env_description base_env_name language
1257
+ 0 env1 Environment 1 python_3.7.13 Python
1258
+ 1 env2 Environment 2 python_3.7.13 Python
1259
+ 2 env3 Environment 3 r_4.1 R
1260
+ 3 env4 Environment 4 r_4.1 R
1261
+
1262
+ # Remove all R environments.
1263
+ >>> remove_all_envs(env_type="R")
1264
+ User environment 'env3' removed.
1265
+ User environment 'env4' removed.
1266
+ All R environment(s) removed.
1267
+ True
1268
+ >>> list_user_envs()
1269
+ env_name env_description base_env_name language
1270
+ 0 env1 Environment 1 python_3.7.13 Python
1271
+ 1 env2 Environment 2 python_3.7.13 Python
1272
+
1273
+ # Try to remove R environments again.
1274
+ >>> remove_all_envs(env_type="R")
1275
+ No R user environment(s) found.
1276
+ True
1277
+
1278
+ # Remove all remaining Python environments.
1279
+ >>> remove_all_envs()
1280
+ All user environment(s) removed.
1281
+ True
1282
+
1283
+
1284
+ # Example 5: Remove all Python and R environments asynchronously.
1285
+ # Note: The example first removes all R environments asynchronously,
1286
+ # followed by Python environments.
1287
+ >>> env1 = create_env("env1", "python_3.7.13", "Environment 1")
1288
+ >>> env2 = create_env("env2", "python_3.7.13", "Environment 2")
1289
+ >>> env3 = create_env("env3", "r_4.1", "Environment 3")
1290
+ >>> env4 = create_env("env4", "r_4.1", "Environment 4")
1291
+
1292
+ >>> list_user_envs()
1293
+ env_name env_description base_env_name language
1294
+ 0 env1 Environment 1 python_3.7.13 Python
1295
+ 1 env2 Environment 2 python_3.7.13 Python
1296
+ 2 env3 Environment 3 r_4.1 R
1297
+ 3 env4 Environment 4 r_4.1 R
1298
+
1299
+ # Remove all R environments asynchronously.
1300
+ >>> remove_all_envs(env_type="R", asynchronous=True)
1301
+ Request to remove environment initiated successfully. Check the status using async_run_status(['5c23f956-c89a-4d69-9f1e-6491bac9973f', '6ec9ecc9-9223-4d3f-92a0-9d1abc652aca'])
1302
+ True
1303
+ >>> list_user_envs()
1304
+ env_name env_description base_env_name language
1305
+ 0 env1 Environment 1 python_3.7.13 Python
1306
+ 1 env2 Environment 2 python_3.7.13 Python
1307
+
1308
+ # Remove all remaining Python environments asynchronously.
1309
+ >>> remove_all_envs(asynchronous=True)
1310
+ Request to remove environment initiated successfully. Check the status using async_run_status('7d86eb99-9ab3-4e0d-b4dd-8b5f1757b9c7')
1311
+ '7d86eb99-9ab3-4e0d-b4dd-8b5f1757b9c7'
1312
+
1313
+
1314
+ # Example 6: Remove all environments asynchronously.
1315
+ >>> env1 = create_env("env1", "python_3.7.13", "Environment 1")
1316
+ >>> env2 = create_env("env2", "python_3.7.13", "Environment 2")
1317
+ >>> env3 = create_env("env3", "r_4.1", "Environment 3")
1318
+ >>> env4 = create_env("env4", "r_4.1", "Environment 4")
1319
+
1320
+ >>> list_user_envs()
1321
+ env_name env_description base_env_name language
1322
+ 0 env1 Environment 1 python_3.7.13 Python
1323
+ 1 env2 Environment 2 python_3.7.13 Python
1324
+ 2 env3 Environment 3 r_4.1 R
1325
+ 3 env4 Environment 4 r_4.1 R
1326
+
1327
+ # Remove all environments asynchronously.
1328
+ >>> remove_all_envs(asynchronous=True)
1329
+ Request to remove environment initiated successfully. Check the status using async_run_status('22f5d693-38d2-469e-b434-9f7246c7bbbb')
1330
+ '22f5d693-38d2-469e-b434-9f7246c7bbbb'
1331
+ """
1332
+ __arg_info_matrix = []
1333
+ __arg_info_matrix.append(["env_type", env_type, True, (str), True, ["PY", "R"]])
1334
+
1335
+ # Validate arguments
1336
+ _Validators._validate_function_arguments(__arg_info_matrix)
1337
+ if env_type is None:
1338
+ status = __manage_envs(api_name="remove_all_envs",
1339
+ **kwargs)
1340
+ return status
1341
+ else:
1342
+ return _remove_all_envs(env_type, **kwargs)
1343
+
1344
+
1345
+ def _remove_all_envs(env_type, **kwargs):
1346
+ """
1347
+ DESCRIPTION:
1348
+ Internal Function removes Python or R user environments.
1349
+
1350
+ PARAMETERS:
1351
+ env_type:
1352
+ Required Argument.
1353
+ Specifies the type of the user environment to be removed.
1354
+ Permitted Values:
1355
+ * 'PY' - Remove only Python user environments.
1356
+ * 'R' - Remove only R user environments.
1357
+ Types: str
1358
+
1359
+ kwargs:
1360
+ asynchronous:
1361
+ Optional Argument.
1362
+ Specifies whether to remove environment synchronously or
1363
+ asynchronously.
1364
+ Default Value: False
1365
+ Types: bool
1366
+
1367
+ is_print:
1368
+ Optional Argument.
1369
+ Specifies whether to print the message or not.
1370
+ Default Value: True
1371
+ Types: bool
1372
+
1373
+
1374
+ RETURNS:
1375
+ True, if the operation is successful.
1376
+
1377
+ RAISES:
1378
+ TeradataMlException, RuntimeError.
1379
+
1380
+ EXAMPLES:
1381
+ >>> _remove_all_envs(env_type="PY")
1382
+ User environment 'Fraud_detection' removed.
1383
+ User environment 'Sales' removed.
1384
+ User environment 'Purchase' removed.
1385
+ All Python environment(s) removed.
1386
+ >>> _remove_all_envs(env_type="R")
1387
+ User environment 'Fraud_detection' removed.
1388
+ User environment 'Carbon_Credits' removed.
1389
+ All R environment(s) removed.
1390
+ >>> remove_all_envs(env_type="R", asynchronous=True)
1391
+ Request to remove environment initiated successfully. Check status using async_run_status(['82cd24d6-1264-49f5-81e1-76e83e09c303'])
1392
+ """
1393
+ # Variable for the message on lines 1437 and 1444.
1394
+ env_type_message = "Python"
1395
+ if env_type.capitalize() == "Py":
1396
+ env_type = ["Python", "python"]
1397
+ else:
1398
+ env_type = ["R"]
1399
+ env_type_message = "R"
1400
+ asynchronous = kwargs.get("asynchronous", False)
1401
+
1402
+ try:
1403
+ # Retrieve all user env data.
1404
+ user_envs_df = list_user_envs()
1405
+ user_envs_lang_df = user_envs_df[user_envs_df.language.isin(env_type)] if \
1406
+ user_envs_df is not None else pd.DataFrame(index=[])
1407
+
1408
+ claim_id_list = []
1409
+ if not user_envs_lang_df.empty:
1410
+ env_name = user_envs_lang_df["env_name"]
1411
+ # Executing remove_env in multiple threads (max_workers set to 10).
1412
+ with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:
1413
+ # Execute remove_env for each env_name.
1414
+ future_remove_env = {
1415
+ executor.submit(remove_env, env,
1416
+ asynchronous=asynchronous, is_print=False):
1417
+ env for env in env_name}
1418
+ # Get the result of all executions.
1419
+ failed_envs = {}
1420
+ for future in concurrent.futures.as_completed(future_remove_env):
1421
+ env = future_remove_env[future]
1422
+ try:
1423
+ future_result = future.result()
1424
+ # Populate the claim ids of all the envs that
1425
+ # have been removed asynchronously.
1426
+ if asynchronous:
1427
+ claim_id_list.append(future_result)
1428
+
1429
+ except (TeradataMlException, RuntimeError, Exception) as emsg:
1430
+ # Catching exceptions by remove_env if occured in any thread.
1431
+ failed_envs[env] = emsg
1432
+
1433
+ # Negative case - Failed to remove env.
1434
+ if len(failed_envs) > 0:
1435
+ emsg = ""
1436
+ for env, tdemsg in failed_envs.items():
1437
+ emsg += "\nUser environment '{0}' failed to remove. Reason: {1}"\
1438
+ .format(env, tdemsg.args[0])
1439
+ msg_code = MessageCodes.FUNC_EXECUTION_FAILED
1440
+ error_msg = Messages.get_message(msg_code, "remove_all_envs()", emsg)
1441
+ raise TeradataMlException(error_msg, msg_code)
1442
+
1443
+ # Positive case - Envs removed without any failure print msg
1444
+ # as per sync or async removal.
1445
+ if not asynchronous:
1446
+ msg = "All {} environment(s) removed.".format(env_type_message)
1447
+ else:
1448
+ msg = "Request to remove environment initiated successfully. Check " \
1449
+ "the status using " \
1450
+ "async_run_status(['" + "', '".join(claim_id_list) + "'])"
1451
+ print(msg)
1452
+ elif user_envs_lang_df.empty and user_envs_df is not None:
1453
+ print("No {} user environment(s) found.".format(env_type_message))
1454
+ return True
1455
+ except (TeradataMlException, RuntimeError) as tdemsg:
1456
+ # TeradataMlException and RuntimeError are raised by list_user_envs.
1457
+ # list_user_envs should be replaced with remove_all_envs in the error
1458
+ # message for final users.
1459
+ tdemsg.args = (tdemsg.args[0].replace("list_user_envs", "remove_all_envs"),)
1460
+ raise tdemsg
1461
+ except Exception as emsg:
1462
+ msg_code = MessageCodes.FUNC_EXECUTION_FAILED
1463
+ error_msg = Messages.get_message(msg_code, "remove_all_envs", emsg)
1464
+ raise TeradataMlException(error_msg, msg_code)
1465
+
1466
+
1467
+ @collect_queryband(queryband="StUsrEnv")
1468
+ def set_user_env(env):
1469
+ """
1470
+ DESCRIPTION:
1471
+ Function allows to set the default user environment to be used for the Apply()
1472
+ and DataFrame.apply() function execution.
1473
+
1474
+ PARAMETERS:
1475
+ env:
1476
+ Required Argument.
1477
+ Specifies the remote user environment name to set as default for the session.
1478
+ Types: str OR Object of UserEnv
1479
+
1480
+ RETURNS:
1481
+ True, if the operation is successful.
1482
+
1483
+ RAISES:
1484
+ TeradataMlException, RuntimeError.
1485
+
1486
+ EXAMPLES:
1487
+ # Create remote user environment.
1488
+ >>> env = create_env('testenv', 'python_3.7.9', 'Test environment')
1489
+ User environment 'testenv' created.
1490
+
1491
+ # Example 1: Set the environment 'testenv' as default environment.
1492
+ >>> set_user_env('testenv')
1493
+ Default environment is set to 'testenv'.
1494
+ >>>
1495
+
1496
+ # Example 2: Create an environment with name 'demo_env' and set it as default environment.
1497
+ >>> set_user_env(get_env('test_env'))
1498
+ User environment 'testenv' created.
1499
+ Default environment is set to 'testenv'.
1500
+ >>>
1501
+ """
1502
+ __arg_info_matrix = []
1503
+ __arg_info_matrix.append(["env", env, False, (str, UserEnv), True])
1504
+
1505
+ # Validate arguments
1506
+ _Validators._validate_function_arguments(__arg_info_matrix)
1507
+
1508
+ # Get the environment name.
1509
+ env = get_env(env_name=env) if isinstance(env, str) else env
1510
+
1511
+ configure._default_user_env = env
1512
+ print("Default environment is set to '{}'.".format(env.env_name))
1513
+
1514
+ return True
1515
+
1516
+
1517
+ @collect_queryband(queryband="GtUsrEnv")
1518
+ def get_user_env():
1519
+ """
1520
+ DESCRIPTION:
1521
+ Function to get the default user environment set for the session.
1522
+
1523
+ PARAMETERS:
1524
+ None.
1525
+
1526
+ RETURNS:
1527
+ An object of UserEnv, if the operation is successful.
1528
+
1529
+ RAISES:
1530
+ TeradataMlException, RuntimeError.
1531
+
1532
+ EXAMPLES:
1533
+ # Create remote user environment.
1534
+ >>> env = create_env('testenv', 'python_3.7.9', 'Test environment')
1535
+ User environment 'testenv' created.
1536
+ >>> set_user_env('testenv')
1537
+ Default environment is set to 'testenv'.
1538
+ >>>
1539
+
1540
+ # Example 1: Get the default environment.
1541
+ >>> env = get_user_env()
1542
+ """
1543
+ if configure._default_user_env is None:
1544
+ print("Default environment is not set. Set default environment using set_user_env().")
1545
+ return
1546
+
1547
+ return configure._default_user_env
1548
+
1549
+
1550
+ @collect_queryband(queryband="StAthTkn")
1551
+ def set_auth_token(ues_url, client_id=None):
1552
+ """
1553
+ DESCRIPTION:
1554
+ Function to set the Authentication token to connect to User Environment Service
1555
+ in VantageCloud Lake.
1556
+ Note:
1557
+ User must have a privilage to login with a NULL password to use set_auth_token().
1558
+ Please refer to GRANT LOGON section in Teradata Documentation for more details.
1559
+
1560
+
1561
+ PARAMETERS:
1562
+ ues_url:
1563
+ Required Argument.
1564
+ Specifies the URL for User Environment Service in VantageCloud Lake.
1565
+ Types: str
1566
+
1567
+ client_id:
1568
+ Optional Argument.
1569
+ Specifies the id of the application that requests the access token from
1570
+ VantageCloud Lake.
1571
+ Types: str
1572
+
1573
+
1574
+ RETURNS:
1575
+ True, if the operation is successful.
1576
+
1577
+ RAISES:
1578
+ TeradataMlException, RuntimeError.
1579
+
1580
+ EXAMPLES:
1581
+
1582
+ # Example 1: Set the Authentication token using default client_id.
1583
+ >>> import getpass
1584
+ >>> set_auth_token(ues_url=getpass.getpass("ues_url : "))
1585
+
1586
+ # Example 2: Set the Authentication token by specifying the client_id.
1587
+ >>> set_auth_token(ues_url=getpass.getpass("ues_url : "),
1588
+ ... client_id=getpass.getpass("client_id : "))
1589
+ """
1590
+ __arg_info_matrix = []
1591
+ __arg_info_matrix.append(["ues_url", ues_url, False, (str), True])
1592
+ __arg_info_matrix.append(["client_id", client_id, True, (str), True])
1593
+
1594
+ # Validate arguments.
1595
+ _Validators._validate_function_arguments(__arg_info_matrix)
1596
+
1597
+ # Extract the base URL from "ues_url".
1598
+ url_parser = urlparse(ues_url)
1599
+ base_url = "{}://{}".format(url_parser.scheme, url_parser.netloc)
1600
+
1601
+ if client_id is None:
1602
+ netloc = url_parser.netloc
1603
+ client_id = "{}-oaf-device".format(netloc.split('.')[0])
1604
+
1605
+ da_wf = _DAWorkflow(base_url, client_id)
1606
+ token_data = da_wf._get_token_data()
1607
+
1608
+ # Set Open AF parameters.
1609
+ configure._oauth_client_id = client_id
1610
+ configure.ues_url = ues_url
1611
+ configure._oauth_end_point = da_wf.device_auth_end_point
1612
+ configure._auth_token_expiry_time = time() + token_data["expires_in"] - 15
1613
+ # Store the jwt token in internal class attribute.
1614
+ _InternalBuffer.add(auth_token=_AuthToken(token=token_data["access_token"]))
1615
+
1616
+ return True