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