teradataml 17.20.0.6__py3-none-any.whl → 20.0.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (432) hide show
  1. teradataml/LICENSE-3RD-PARTY.pdf +0 -0
  2. teradataml/LICENSE.pdf +0 -0
  3. teradataml/README.md +238 -1
  4. teradataml/__init__.py +13 -3
  5. teradataml/_version.py +1 -1
  6. teradataml/analytics/Transformations.py +4 -4
  7. teradataml/analytics/__init__.py +0 -2
  8. teradataml/analytics/analytic_function_executor.py +3 -0
  9. teradataml/analytics/json_parser/utils.py +13 -12
  10. teradataml/analytics/sqle/DecisionTreePredict.py +15 -30
  11. teradataml/analytics/sqle/NaiveBayesPredict.py +11 -20
  12. teradataml/analytics/sqle/__init__.py +0 -13
  13. teradataml/analytics/utils.py +1 -0
  14. teradataml/analytics/valib.py +3 -0
  15. teradataml/automl/__init__.py +1628 -0
  16. teradataml/automl/custom_json_utils.py +1270 -0
  17. teradataml/automl/data_preparation.py +993 -0
  18. teradataml/automl/data_transformation.py +727 -0
  19. teradataml/automl/feature_engineering.py +1648 -0
  20. teradataml/automl/feature_exploration.py +547 -0
  21. teradataml/automl/model_evaluation.py +163 -0
  22. teradataml/automl/model_training.py +887 -0
  23. teradataml/catalog/__init__.py +0 -2
  24. teradataml/catalog/byom.py +49 -6
  25. teradataml/catalog/function_argument_mapper.py +0 -2
  26. teradataml/catalog/model_cataloging_utils.py +2 -1021
  27. teradataml/common/aed_utils.py +6 -2
  28. teradataml/common/constants.py +50 -58
  29. teradataml/common/deprecations.py +160 -0
  30. teradataml/common/garbagecollector.py +61 -104
  31. teradataml/common/messagecodes.py +27 -36
  32. teradataml/common/messages.py +11 -15
  33. teradataml/common/utils.py +205 -287
  34. teradataml/common/wrapper_utils.py +1 -110
  35. teradataml/context/context.py +150 -78
  36. teradataml/data/bank_churn.csv +10001 -0
  37. teradataml/data/bmi.csv +501 -0
  38. teradataml/data/docs/sqle/docs_17_10/BincodeFit.py +3 -3
  39. teradataml/data/docs/sqle/docs_17_10/BincodeTransform.py +6 -5
  40. teradataml/data/docs/sqle/docs_17_10/Fit.py +1 -1
  41. teradataml/data/docs/sqle/docs_17_10/OneHotEncodingTransform.py +1 -1
  42. teradataml/data/docs/sqle/docs_17_10/OutlierFilterTransform.py +1 -1
  43. teradataml/data/docs/sqle/docs_17_10/PolynomialFeaturesTransform.py +2 -2
  44. teradataml/data/docs/sqle/docs_17_10/RowNormalizeTransform.py +2 -1
  45. teradataml/data/docs/sqle/docs_17_10/ScaleTransform.py +1 -0
  46. teradataml/data/docs/sqle/docs_17_10/SimpleImputeTransform.py +1 -1
  47. teradataml/data/docs/sqle/docs_17_10/Transform.py +2 -1
  48. teradataml/data/docs/sqle/docs_17_20/BincodeFit.py +3 -3
  49. teradataml/data/docs/sqle/docs_17_20/BincodeTransform.py +6 -5
  50. teradataml/data/docs/sqle/docs_17_20/Fit.py +1 -1
  51. teradataml/data/docs/sqle/docs_17_20/GLM.py +1 -1
  52. teradataml/data/docs/sqle/docs_17_20/GLMPredictPerSegment.py +9 -10
  53. teradataml/data/docs/sqle/docs_17_20/KMeansPredict.py +3 -2
  54. teradataml/data/docs/sqle/docs_17_20/NaiveBayesTextClassifierPredict.py +16 -15
  55. teradataml/data/docs/sqle/docs_17_20/NaiveBayesTextClassifierTrainer.py +2 -2
  56. teradataml/data/docs/sqle/docs_17_20/NonLinearCombineFit.py +2 -2
  57. teradataml/data/docs/sqle/docs_17_20/NonLinearCombineTransform.py +8 -8
  58. teradataml/data/docs/sqle/docs_17_20/OneClassSVMPredict.py +21 -20
  59. teradataml/data/docs/sqle/docs_17_20/OneHotEncodingTransform.py +1 -1
  60. teradataml/data/docs/sqle/docs_17_20/OutlierFilterTransform.py +8 -3
  61. teradataml/data/docs/sqle/docs_17_20/PolynomialFeaturesTransform.py +6 -5
  62. teradataml/data/docs/sqle/docs_17_20/RandomProjectionTransform.py +6 -6
  63. teradataml/data/docs/sqle/docs_17_20/RowNormalizeTransform.py +2 -1
  64. teradataml/data/docs/sqle/docs_17_20/SVM.py +1 -1
  65. teradataml/data/docs/sqle/docs_17_20/SVMPredict.py +16 -16
  66. teradataml/data/docs/sqle/docs_17_20/ScaleTransform.py +1 -0
  67. teradataml/data/docs/sqle/docs_17_20/SimpleImputeTransform.py +3 -2
  68. teradataml/data/docs/sqle/docs_17_20/TDDecisionForestPredict.py +4 -4
  69. teradataml/data/docs/sqle/docs_17_20/TDGLMPredict.py +19 -19
  70. teradataml/data/docs/sqle/docs_17_20/TargetEncodingTransform.py +5 -4
  71. teradataml/data/docs/sqle/docs_17_20/Transform.py +2 -2
  72. teradataml/data/docs/sqle/docs_17_20/XGBoostPredict.py +9 -9
  73. teradataml/data/fish.csv +160 -0
  74. teradataml/data/glass_types.csv +215 -0
  75. teradataml/data/insurance.csv +1 -1
  76. teradataml/data/iris_data.csv +151 -0
  77. teradataml/data/jsons/sqle/17.10/TD_FunctionTransform.json +1 -0
  78. teradataml/data/jsons/sqle/17.10/TD_OneHotEncodingTransform.json +1 -0
  79. teradataml/data/jsons/sqle/17.10/TD_OutlierFilterTransform.json +1 -0
  80. teradataml/data/jsons/sqle/17.10/TD_PolynomialFeaturesTransform.json +1 -0
  81. teradataml/data/jsons/sqle/17.10/TD_RowNormalizeTransform.json +1 -0
  82. teradataml/data/jsons/sqle/17.10/TD_ScaleTransform.json +1 -0
  83. teradataml/data/jsons/sqle/17.10/TD_SimpleImputeTransform.json +1 -0
  84. teradataml/data/load_example_data.py +3 -0
  85. teradataml/data/multi_model_classification.csv +401 -0
  86. teradataml/data/multi_model_regression.csv +401 -0
  87. teradataml/data/openml_example.json +63 -0
  88. teradataml/data/scripts/deploy_script.py +65 -0
  89. teradataml/data/scripts/mapper.R +20 -0
  90. teradataml/data/scripts/sklearn/__init__.py +0 -0
  91. teradataml/data/scripts/sklearn/sklearn_fit.py +175 -0
  92. teradataml/data/scripts/sklearn/sklearn_fit_predict.py +135 -0
  93. teradataml/data/scripts/sklearn/sklearn_function.template +113 -0
  94. teradataml/data/scripts/sklearn/sklearn_model_selection_split.py +158 -0
  95. teradataml/data/scripts/sklearn/sklearn_neighbors.py +152 -0
  96. teradataml/data/scripts/sklearn/sklearn_score.py +128 -0
  97. teradataml/data/scripts/sklearn/sklearn_transform.py +179 -0
  98. teradataml/data/templates/open_source_ml.json +9 -0
  99. teradataml/data/teradataml_example.json +73 -1
  100. teradataml/data/test_classification.csv +101 -0
  101. teradataml/data/test_prediction.csv +101 -0
  102. teradataml/data/test_regression.csv +101 -0
  103. teradataml/data/train_multiclass.csv +101 -0
  104. teradataml/data/train_regression.csv +101 -0
  105. teradataml/data/train_regression_multiple_labels.csv +101 -0
  106. teradataml/data/wine_data.csv +1600 -0
  107. teradataml/dataframe/copy_to.py +79 -13
  108. teradataml/dataframe/data_transfer.py +8 -0
  109. teradataml/dataframe/dataframe.py +910 -311
  110. teradataml/dataframe/dataframe_utils.py +102 -5
  111. teradataml/dataframe/fastload.py +11 -3
  112. teradataml/dataframe/setop.py +15 -2
  113. teradataml/dataframe/sql.py +3735 -77
  114. teradataml/dataframe/sql_function_parameters.py +56 -5
  115. teradataml/dataframe/vantage_function_types.py +45 -1
  116. teradataml/dataframe/window.py +30 -29
  117. teradataml/dbutils/dbutils.py +18 -1
  118. teradataml/geospatial/geodataframe.py +18 -7
  119. teradataml/geospatial/geodataframecolumn.py +5 -0
  120. teradataml/hyperparameter_tuner/optimizer.py +910 -120
  121. teradataml/hyperparameter_tuner/utils.py +131 -37
  122. teradataml/lib/aed_0_1.dll +0 -0
  123. teradataml/lib/libaed_0_1.dylib +0 -0
  124. teradataml/lib/libaed_0_1.so +0 -0
  125. teradataml/libaed_0_1.dylib +0 -0
  126. teradataml/libaed_0_1.so +0 -0
  127. teradataml/opensource/__init__.py +1 -0
  128. teradataml/opensource/sklearn/__init__.py +1 -0
  129. teradataml/opensource/sklearn/_class.py +255 -0
  130. teradataml/opensource/sklearn/_sklearn_wrapper.py +1668 -0
  131. teradataml/opensource/sklearn/_wrapper_utils.py +268 -0
  132. teradataml/opensource/sklearn/constants.py +54 -0
  133. teradataml/options/__init__.py +3 -6
  134. teradataml/options/configure.py +21 -20
  135. teradataml/scriptmgmt/UserEnv.py +61 -5
  136. teradataml/scriptmgmt/lls_utils.py +135 -53
  137. teradataml/table_operators/Apply.py +38 -6
  138. teradataml/table_operators/Script.py +45 -308
  139. teradataml/table_operators/TableOperator.py +182 -591
  140. teradataml/table_operators/__init__.py +0 -1
  141. teradataml/table_operators/table_operator_util.py +32 -40
  142. teradataml/utils/validators.py +127 -3
  143. {teradataml-17.20.0.6.dist-info → teradataml-20.0.0.0.dist-info}/METADATA +243 -3
  144. {teradataml-17.20.0.6.dist-info → teradataml-20.0.0.0.dist-info}/RECORD +147 -391
  145. teradataml/analytics/mle/AdaBoost.py +0 -651
  146. teradataml/analytics/mle/AdaBoostPredict.py +0 -564
  147. teradataml/analytics/mle/Antiselect.py +0 -342
  148. teradataml/analytics/mle/Arima.py +0 -641
  149. teradataml/analytics/mle/ArimaPredict.py +0 -477
  150. teradataml/analytics/mle/Attribution.py +0 -1070
  151. teradataml/analytics/mle/Betweenness.py +0 -658
  152. teradataml/analytics/mle/Burst.py +0 -711
  153. teradataml/analytics/mle/CCM.py +0 -600
  154. teradataml/analytics/mle/CCMPrepare.py +0 -324
  155. teradataml/analytics/mle/CFilter.py +0 -460
  156. teradataml/analytics/mle/ChangePointDetection.py +0 -572
  157. teradataml/analytics/mle/ChangePointDetectionRT.py +0 -477
  158. teradataml/analytics/mle/Closeness.py +0 -737
  159. teradataml/analytics/mle/ConfusionMatrix.py +0 -420
  160. teradataml/analytics/mle/Correlation.py +0 -477
  161. teradataml/analytics/mle/Correlation2.py +0 -573
  162. teradataml/analytics/mle/CoxHazardRatio.py +0 -679
  163. teradataml/analytics/mle/CoxPH.py +0 -556
  164. teradataml/analytics/mle/CoxSurvival.py +0 -478
  165. teradataml/analytics/mle/CumulativeMovAvg.py +0 -363
  166. teradataml/analytics/mle/DTW.py +0 -623
  167. teradataml/analytics/mle/DWT.py +0 -564
  168. teradataml/analytics/mle/DWT2D.py +0 -599
  169. teradataml/analytics/mle/DecisionForest.py +0 -716
  170. teradataml/analytics/mle/DecisionForestEvaluator.py +0 -363
  171. teradataml/analytics/mle/DecisionForestPredict.py +0 -561
  172. teradataml/analytics/mle/DecisionTree.py +0 -830
  173. teradataml/analytics/mle/DecisionTreePredict.py +0 -528
  174. teradataml/analytics/mle/ExponentialMovAvg.py +0 -418
  175. teradataml/analytics/mle/FMeasure.py +0 -402
  176. teradataml/analytics/mle/FPGrowth.py +0 -734
  177. teradataml/analytics/mle/FrequentPaths.py +0 -695
  178. teradataml/analytics/mle/GLM.py +0 -558
  179. teradataml/analytics/mle/GLML1L2.py +0 -547
  180. teradataml/analytics/mle/GLML1L2Predict.py +0 -519
  181. teradataml/analytics/mle/GLMPredict.py +0 -529
  182. teradataml/analytics/mle/HMMDecoder.py +0 -945
  183. teradataml/analytics/mle/HMMEvaluator.py +0 -901
  184. teradataml/analytics/mle/HMMSupervised.py +0 -521
  185. teradataml/analytics/mle/HMMUnsupervised.py +0 -572
  186. teradataml/analytics/mle/Histogram.py +0 -561
  187. teradataml/analytics/mle/IDWT.py +0 -476
  188. teradataml/analytics/mle/IDWT2D.py +0 -493
  189. teradataml/analytics/mle/IdentityMatch.py +0 -763
  190. teradataml/analytics/mle/Interpolator.py +0 -918
  191. teradataml/analytics/mle/KMeans.py +0 -485
  192. teradataml/analytics/mle/KNN.py +0 -627
  193. teradataml/analytics/mle/KNNRecommender.py +0 -488
  194. teradataml/analytics/mle/KNNRecommenderPredict.py +0 -581
  195. teradataml/analytics/mle/LAR.py +0 -439
  196. teradataml/analytics/mle/LARPredict.py +0 -478
  197. teradataml/analytics/mle/LDA.py +0 -548
  198. teradataml/analytics/mle/LDAInference.py +0 -492
  199. teradataml/analytics/mle/LDATopicSummary.py +0 -464
  200. teradataml/analytics/mle/LevenshteinDistance.py +0 -450
  201. teradataml/analytics/mle/LinReg.py +0 -433
  202. teradataml/analytics/mle/LinRegPredict.py +0 -438
  203. teradataml/analytics/mle/MinHash.py +0 -544
  204. teradataml/analytics/mle/Modularity.py +0 -587
  205. teradataml/analytics/mle/NEREvaluator.py +0 -410
  206. teradataml/analytics/mle/NERExtractor.py +0 -595
  207. teradataml/analytics/mle/NERTrainer.py +0 -458
  208. teradataml/analytics/mle/NGrams.py +0 -570
  209. teradataml/analytics/mle/NPath.py +0 -634
  210. teradataml/analytics/mle/NTree.py +0 -549
  211. teradataml/analytics/mle/NaiveBayes.py +0 -462
  212. teradataml/analytics/mle/NaiveBayesPredict.py +0 -513
  213. teradataml/analytics/mle/NaiveBayesTextClassifier.py +0 -607
  214. teradataml/analytics/mle/NaiveBayesTextClassifier2.py +0 -531
  215. teradataml/analytics/mle/NaiveBayesTextClassifierPredict.py +0 -799
  216. teradataml/analytics/mle/NamedEntityFinder.py +0 -529
  217. teradataml/analytics/mle/NamedEntityFinderEvaluator.py +0 -414
  218. teradataml/analytics/mle/NamedEntityFinderTrainer.py +0 -396
  219. teradataml/analytics/mle/POSTagger.py +0 -417
  220. teradataml/analytics/mle/Pack.py +0 -411
  221. teradataml/analytics/mle/PageRank.py +0 -535
  222. teradataml/analytics/mle/PathAnalyzer.py +0 -426
  223. teradataml/analytics/mle/PathGenerator.py +0 -367
  224. teradataml/analytics/mle/PathStart.py +0 -464
  225. teradataml/analytics/mle/PathSummarizer.py +0 -470
  226. teradataml/analytics/mle/Pivot.py +0 -471
  227. teradataml/analytics/mle/ROC.py +0 -425
  228. teradataml/analytics/mle/RandomSample.py +0 -637
  229. teradataml/analytics/mle/RandomWalkSample.py +0 -490
  230. teradataml/analytics/mle/SAX.py +0 -779
  231. teradataml/analytics/mle/SVMDense.py +0 -677
  232. teradataml/analytics/mle/SVMDensePredict.py +0 -536
  233. teradataml/analytics/mle/SVMDenseSummary.py +0 -437
  234. teradataml/analytics/mle/SVMSparse.py +0 -557
  235. teradataml/analytics/mle/SVMSparsePredict.py +0 -553
  236. teradataml/analytics/mle/SVMSparseSummary.py +0 -435
  237. teradataml/analytics/mle/Sampling.py +0 -549
  238. teradataml/analytics/mle/Scale.py +0 -565
  239. teradataml/analytics/mle/ScaleByPartition.py +0 -496
  240. teradataml/analytics/mle/ScaleMap.py +0 -378
  241. teradataml/analytics/mle/ScaleSummary.py +0 -320
  242. teradataml/analytics/mle/SentenceExtractor.py +0 -363
  243. teradataml/analytics/mle/SentimentEvaluator.py +0 -432
  244. teradataml/analytics/mle/SentimentExtractor.py +0 -578
  245. teradataml/analytics/mle/SentimentTrainer.py +0 -405
  246. teradataml/analytics/mle/SeriesSplitter.py +0 -641
  247. teradataml/analytics/mle/Sessionize.py +0 -475
  248. teradataml/analytics/mle/SimpleMovAvg.py +0 -397
  249. teradataml/analytics/mle/StringSimilarity.py +0 -425
  250. teradataml/analytics/mle/TF.py +0 -389
  251. teradataml/analytics/mle/TFIDF.py +0 -504
  252. teradataml/analytics/mle/TextChunker.py +0 -414
  253. teradataml/analytics/mle/TextClassifier.py +0 -399
  254. teradataml/analytics/mle/TextClassifierEvaluator.py +0 -413
  255. teradataml/analytics/mle/TextClassifierTrainer.py +0 -565
  256. teradataml/analytics/mle/TextMorph.py +0 -494
  257. teradataml/analytics/mle/TextParser.py +0 -623
  258. teradataml/analytics/mle/TextTagger.py +0 -530
  259. teradataml/analytics/mle/TextTokenizer.py +0 -502
  260. teradataml/analytics/mle/UnivariateStatistics.py +0 -488
  261. teradataml/analytics/mle/Unpack.py +0 -526
  262. teradataml/analytics/mle/Unpivot.py +0 -438
  263. teradataml/analytics/mle/VarMax.py +0 -776
  264. teradataml/analytics/mle/VectorDistance.py +0 -762
  265. teradataml/analytics/mle/WeightedMovAvg.py +0 -400
  266. teradataml/analytics/mle/XGBoost.py +0 -842
  267. teradataml/analytics/mle/XGBoostPredict.py +0 -627
  268. teradataml/analytics/mle/__init__.py +0 -123
  269. teradataml/analytics/mle/json/adaboost_mle.json +0 -135
  270. teradataml/analytics/mle/json/adaboostpredict_mle.json +0 -85
  271. teradataml/analytics/mle/json/antiselect_mle.json +0 -34
  272. teradataml/analytics/mle/json/antiselect_mle_mle.json +0 -34
  273. teradataml/analytics/mle/json/arima_mle.json +0 -172
  274. teradataml/analytics/mle/json/arimapredict_mle.json +0 -52
  275. teradataml/analytics/mle/json/attribution_mle_mle.json +0 -143
  276. teradataml/analytics/mle/json/betweenness_mle.json +0 -97
  277. teradataml/analytics/mle/json/burst_mle.json +0 -140
  278. teradataml/analytics/mle/json/ccm_mle.json +0 -124
  279. teradataml/analytics/mle/json/ccmprepare_mle.json +0 -14
  280. teradataml/analytics/mle/json/cfilter_mle.json +0 -93
  281. teradataml/analytics/mle/json/changepointdetection_mle.json +0 -92
  282. teradataml/analytics/mle/json/changepointdetectionrt_mle.json +0 -78
  283. teradataml/analytics/mle/json/closeness_mle.json +0 -104
  284. teradataml/analytics/mle/json/confusionmatrix_mle.json +0 -79
  285. teradataml/analytics/mle/json/correlation_mle.json +0 -86
  286. teradataml/analytics/mle/json/correlationreduce_mle.json +0 -49
  287. teradataml/analytics/mle/json/coxhazardratio_mle.json +0 -89
  288. teradataml/analytics/mle/json/coxph_mle.json +0 -98
  289. teradataml/analytics/mle/json/coxsurvival_mle.json +0 -79
  290. teradataml/analytics/mle/json/cumulativemovavg_mle.json +0 -34
  291. teradataml/analytics/mle/json/decisionforest_mle.json +0 -167
  292. teradataml/analytics/mle/json/decisionforestevaluator_mle.json +0 -33
  293. teradataml/analytics/mle/json/decisionforestpredict_mle_mle.json +0 -74
  294. teradataml/analytics/mle/json/decisiontree_mle.json +0 -194
  295. teradataml/analytics/mle/json/decisiontreepredict_mle_mle.json +0 -86
  296. teradataml/analytics/mle/json/dtw_mle.json +0 -97
  297. teradataml/analytics/mle/json/dwt2d_mle.json +0 -116
  298. teradataml/analytics/mle/json/dwt_mle.json +0 -101
  299. teradataml/analytics/mle/json/exponentialmovavg_mle.json +0 -55
  300. teradataml/analytics/mle/json/fmeasure_mle.json +0 -58
  301. teradataml/analytics/mle/json/fpgrowth_mle.json +0 -159
  302. teradataml/analytics/mle/json/frequentpaths_mle.json +0 -129
  303. teradataml/analytics/mle/json/glm_mle.json +0 -111
  304. teradataml/analytics/mle/json/glml1l2_mle.json +0 -106
  305. teradataml/analytics/mle/json/glml1l2predict_mle.json +0 -57
  306. teradataml/analytics/mle/json/glmpredict_mle_mle.json +0 -74
  307. teradataml/analytics/mle/json/histogram_mle.json +0 -100
  308. teradataml/analytics/mle/json/hmmdecoder_mle.json +0 -192
  309. teradataml/analytics/mle/json/hmmevaluator_mle.json +0 -206
  310. teradataml/analytics/mle/json/hmmsupervised_mle.json +0 -91
  311. teradataml/analytics/mle/json/hmmunsupervised_mle.json +0 -114
  312. teradataml/analytics/mle/json/identitymatch_mle.json +0 -88
  313. teradataml/analytics/mle/json/idwt2d_mle.json +0 -73
  314. teradataml/analytics/mle/json/idwt_mle.json +0 -66
  315. teradataml/analytics/mle/json/interpolator_mle.json +0 -151
  316. teradataml/analytics/mle/json/kmeans_mle.json +0 -97
  317. teradataml/analytics/mle/json/knn_mle.json +0 -141
  318. teradataml/analytics/mle/json/knnrecommender_mle.json +0 -111
  319. teradataml/analytics/mle/json/knnrecommenderpredict_mle.json +0 -75
  320. teradataml/analytics/mle/json/lar_mle.json +0 -78
  321. teradataml/analytics/mle/json/larpredict_mle.json +0 -69
  322. teradataml/analytics/mle/json/lda_mle.json +0 -130
  323. teradataml/analytics/mle/json/ldainference_mle.json +0 -78
  324. teradataml/analytics/mle/json/ldatopicsummary_mle.json +0 -64
  325. teradataml/analytics/mle/json/levenshteindistance_mle.json +0 -92
  326. teradataml/analytics/mle/json/linreg_mle.json +0 -42
  327. teradataml/analytics/mle/json/linregpredict_mle.json +0 -56
  328. teradataml/analytics/mle/json/minhash_mle.json +0 -113
  329. teradataml/analytics/mle/json/modularity_mle.json +0 -91
  330. teradataml/analytics/mle/json/naivebayespredict_mle_mle.json +0 -85
  331. teradataml/analytics/mle/json/naivebayesreduce_mle.json +0 -52
  332. teradataml/analytics/mle/json/naivebayestextclassifierpredict_mle_mle.json +0 -147
  333. teradataml/analytics/mle/json/naivebayestextclassifiertrainer2_mle.json +0 -108
  334. teradataml/analytics/mle/json/naivebayestextclassifiertrainer_mle.json +0 -102
  335. teradataml/analytics/mle/json/namedentityfinder_mle.json +0 -84
  336. teradataml/analytics/mle/json/namedentityfinderevaluatorreduce_mle.json +0 -43
  337. teradataml/analytics/mle/json/namedentityfindertrainer_mle.json +0 -64
  338. teradataml/analytics/mle/json/nerevaluator_mle.json +0 -54
  339. teradataml/analytics/mle/json/nerextractor_mle.json +0 -87
  340. teradataml/analytics/mle/json/nertrainer_mle.json +0 -89
  341. teradataml/analytics/mle/json/ngrams_mle.json +0 -137
  342. teradataml/analytics/mle/json/ngramsplitter_mle_mle.json +0 -137
  343. teradataml/analytics/mle/json/npath@coprocessor_mle.json +0 -73
  344. teradataml/analytics/mle/json/ntree@coprocessor_mle.json +0 -123
  345. teradataml/analytics/mle/json/pack_mle.json +0 -58
  346. teradataml/analytics/mle/json/pack_mle_mle.json +0 -58
  347. teradataml/analytics/mle/json/pagerank_mle.json +0 -81
  348. teradataml/analytics/mle/json/pathanalyzer_mle.json +0 -63
  349. teradataml/analytics/mle/json/pathgenerator_mle.json +0 -40
  350. teradataml/analytics/mle/json/pathstart_mle.json +0 -62
  351. teradataml/analytics/mle/json/pathsummarizer_mle.json +0 -72
  352. teradataml/analytics/mle/json/pivoting_mle.json +0 -71
  353. teradataml/analytics/mle/json/postagger_mle.json +0 -51
  354. teradataml/analytics/mle/json/randomsample_mle.json +0 -131
  355. teradataml/analytics/mle/json/randomwalksample_mle.json +0 -85
  356. teradataml/analytics/mle/json/roc_mle.json +0 -73
  357. teradataml/analytics/mle/json/sampling_mle.json +0 -75
  358. teradataml/analytics/mle/json/sax_mle.json +0 -154
  359. teradataml/analytics/mle/json/scale_mle.json +0 -93
  360. teradataml/analytics/mle/json/scalebypartition_mle.json +0 -89
  361. teradataml/analytics/mle/json/scalemap_mle.json +0 -44
  362. teradataml/analytics/mle/json/scalesummary_mle.json +0 -14
  363. teradataml/analytics/mle/json/sentenceextractor_mle.json +0 -41
  364. teradataml/analytics/mle/json/sentimentevaluator_mle.json +0 -43
  365. teradataml/analytics/mle/json/sentimentextractor_mle.json +0 -100
  366. teradataml/analytics/mle/json/sentimenttrainer_mle.json +0 -68
  367. teradataml/analytics/mle/json/seriessplitter_mle.json +0 -133
  368. teradataml/analytics/mle/json/sessionize_mle_mle.json +0 -62
  369. teradataml/analytics/mle/json/simplemovavg_mle.json +0 -48
  370. teradataml/analytics/mle/json/stringsimilarity_mle.json +0 -50
  371. teradataml/analytics/mle/json/stringsimilarity_mle_mle.json +0 -50
  372. teradataml/analytics/mle/json/svmdense_mle.json +0 -165
  373. teradataml/analytics/mle/json/svmdensepredict_mle.json +0 -95
  374. teradataml/analytics/mle/json/svmdensesummary_mle.json +0 -58
  375. teradataml/analytics/mle/json/svmsparse_mle.json +0 -148
  376. teradataml/analytics/mle/json/svmsparsepredict_mle_mle.json +0 -103
  377. teradataml/analytics/mle/json/svmsparsesummary_mle.json +0 -57
  378. teradataml/analytics/mle/json/textchunker_mle.json +0 -40
  379. teradataml/analytics/mle/json/textclassifier_mle.json +0 -51
  380. teradataml/analytics/mle/json/textclassifierevaluator_mle.json +0 -43
  381. teradataml/analytics/mle/json/textclassifiertrainer_mle.json +0 -103
  382. teradataml/analytics/mle/json/textmorph_mle.json +0 -63
  383. teradataml/analytics/mle/json/textparser_mle.json +0 -166
  384. teradataml/analytics/mle/json/texttagger_mle.json +0 -81
  385. teradataml/analytics/mle/json/texttokenizer_mle.json +0 -91
  386. teradataml/analytics/mle/json/tf_mle.json +0 -33
  387. teradataml/analytics/mle/json/tfidf_mle.json +0 -34
  388. teradataml/analytics/mle/json/univariatestatistics_mle.json +0 -81
  389. teradataml/analytics/mle/json/unpack_mle.json +0 -91
  390. teradataml/analytics/mle/json/unpack_mle_mle.json +0 -91
  391. teradataml/analytics/mle/json/unpivoting_mle.json +0 -63
  392. teradataml/analytics/mle/json/varmax_mle.json +0 -176
  393. teradataml/analytics/mle/json/vectordistance_mle.json +0 -179
  394. teradataml/analytics/mle/json/weightedmovavg_mle.json +0 -48
  395. teradataml/analytics/mle/json/xgboost_mle.json +0 -178
  396. teradataml/analytics/mle/json/xgboostpredict_mle.json +0 -104
  397. teradataml/analytics/sqle/Antiselect.py +0 -321
  398. teradataml/analytics/sqle/Attribution.py +0 -603
  399. teradataml/analytics/sqle/DecisionForestPredict.py +0 -408
  400. teradataml/analytics/sqle/GLMPredict.py +0 -430
  401. teradataml/analytics/sqle/MovingAverage.py +0 -543
  402. teradataml/analytics/sqle/NGramSplitter.py +0 -548
  403. teradataml/analytics/sqle/NPath.py +0 -632
  404. teradataml/analytics/sqle/NaiveBayesTextClassifierPredict.py +0 -515
  405. teradataml/analytics/sqle/Pack.py +0 -388
  406. teradataml/analytics/sqle/SVMSparsePredict.py +0 -464
  407. teradataml/analytics/sqle/Sessionize.py +0 -390
  408. teradataml/analytics/sqle/StringSimilarity.py +0 -400
  409. teradataml/analytics/sqle/Unpack.py +0 -503
  410. teradataml/analytics/sqle/json/antiselect_sqle.json +0 -21
  411. teradataml/analytics/sqle/json/attribution_sqle.json +0 -92
  412. teradataml/analytics/sqle/json/decisionforestpredict_sqle.json +0 -48
  413. teradataml/analytics/sqle/json/glmpredict_sqle.json +0 -48
  414. teradataml/analytics/sqle/json/h2opredict_sqle.json +0 -63
  415. teradataml/analytics/sqle/json/movingaverage_sqle.json +0 -58
  416. teradataml/analytics/sqle/json/naivebayestextclassifierpredict_sqle.json +0 -76
  417. teradataml/analytics/sqle/json/ngramsplitter_sqle.json +0 -126
  418. teradataml/analytics/sqle/json/npath_sqle.json +0 -67
  419. teradataml/analytics/sqle/json/pack_sqle.json +0 -47
  420. teradataml/analytics/sqle/json/pmmlpredict_sqle.json +0 -55
  421. teradataml/analytics/sqle/json/sessionize_sqle.json +0 -43
  422. teradataml/analytics/sqle/json/stringsimilarity_sqle.json +0 -39
  423. teradataml/analytics/sqle/json/svmsparsepredict_sqle.json +0 -74
  424. teradataml/analytics/sqle/json/unpack_sqle.json +0 -80
  425. teradataml/catalog/model_cataloging.py +0 -980
  426. teradataml/config/mlengine_alias_definitions_v1.0 +0 -118
  427. teradataml/config/mlengine_alias_definitions_v1.1 +0 -127
  428. teradataml/config/mlengine_alias_definitions_v1.3 +0 -129
  429. teradataml/table_operators/sandbox_container_util.py +0 -643
  430. {teradataml-17.20.0.6.dist-info → teradataml-20.0.0.0.dist-info}/WHEEL +0 -0
  431. {teradataml-17.20.0.6.dist-info → teradataml-20.0.0.0.dist-info}/top_level.txt +0 -0
  432. {teradataml-17.20.0.6.dist-info → teradataml-20.0.0.0.dist-info}/zip-safe +0 -0
@@ -1,643 +0,0 @@
1
- import os
2
- import warnings
3
- from teradataml.common.constants import TeradataConstants
4
- from teradataml.common.exceptions import TeradataMlException
5
- from teradataml.common.garbagecollector import GarbageCollector
6
- from teradataml.common.messages import Messages
7
- from teradataml.common.messagecodes import MessageCodes
8
- from teradataml.utils.validators import _Validators
9
- from teradataml.options.configure import configure
10
-
11
- def setup_sandbox_env(sandbox_image_location=None, sandbox_image_name=None,
12
- container_id=None, timeout=5000):
13
- """
14
- DESCRIPTION:
15
- Function to either load sandbox image and start a new docker container by passing
16
- the "sandbox_image_location" and "sandbox_image_name" or
17
- start an existing container using the argument "container_id".
18
- Note:
19
- 1. Teradata recommends to run this function once before running
20
- test_script() method of Script.
21
- 2. Sandbox image loading on user's system is skipped if the image is already
22
- loaded.
23
- 3. There can be only one container started from within teradataml at any given
24
- point.
25
- 4. At the end of the session image loaded / container started by the function
26
- will be cleaned up.
27
- 5. If the user wishes to manually cleanup image / container started by the
28
- function, they can use cleanup_sandbox_env().
29
- 6. User should be careful while providing "sandbox_image_location" and
30
- "sandbox_image_name". If an incorrect "sandbox_image_name" is provided that
31
- does not match with the name / tag of the image to be loaded then:
32
- a. The image will not be loaded. User should re-run the function with
33
- correct "sandbox_image_name".
34
- b. If the user's system already has an image with the image name / tag
35
- same as the image specified in "sandbox_image_location" then the new image
36
- will be loaded and it might replace the old image.
37
-
38
- PARAMETERS:
39
- sandbox_image_location:
40
- Optional Argument.
41
- Specifies the path to the sandbox image on user's system.
42
- Types: str
43
- Notes:
44
- 1. For location to download sandbox image refer teradataml User Guide.
45
- 2. After loading the image, a container will be created and started.
46
- 3. "sandbox_image_location" and "sandbox_image_name" must be
47
- specified together.
48
-
49
- sandbox_image_name:
50
- Optional Argument.
51
- Specifies the name of the sandbox image that was used for generating the image.
52
- This will be used for starting a container.
53
- Types: str
54
- Note:
55
- 1. "sandbox_image_location" and "sandbox_image_name" must be
56
- specified together.
57
- 2. If the "sandbox_image_name" is incorrect then the image will not be
58
- loaded.
59
-
60
- container_id:
61
- Optional Argument. Required if "sandbox_image_location" and
62
- "sandbox_image_name" are not specified.
63
- Specifies id of an existing docker container.
64
- Types: str
65
- Note:
66
- User should be careful while specifying this argument.
67
- If this argument is specified to start the container then this container
68
- will be cleaned up at the end of the session.
69
-
70
- timeout:
71
- Optional Argument.
72
- Specifies timeout value for docker API calls. This is particularly useful
73
- while loading large sandbox images. User should increase the "timeout" value
74
- if image loading fails because of timeout.
75
- Default Value: 5000
76
- Types: int
77
-
78
- RETURNS:
79
- None.
80
-
81
- RAISES:
82
- Warning, docker.errors.APIError, docker.errors.NotFound, TeradataMlException,
83
- Exception.
84
-
85
- EXAMPLES:
86
- >>> from teradataml.table_operators.sandbox_container_util import setup_sandbox_env
87
- # Example 1: Load the image from the location specified in "sandbox_image_location"
88
- # argument and start a container.
89
- # This is useful when the user wants to setup sandbox environment with a new image.
90
- >>> setup_sandbox_env(sandbox_image_location='/tmp/stosandbox.tar.gz',
91
- sandbox_image_name='stosandbox:1.0')
92
- Loading image from /tmp/stosandbox.tar.gz. It may take few minutes.
93
- Image loaded successfully.
94
- Container c1dd4d4b722cc54b643ab2bdc57540a3a3e6db98c299defc672227de97d2c345
95
- started successfully.
96
-
97
- # Example 2: Start an existing container specified in "container_id" argument.
98
- # This is useful when the user wants to run user script in an existing container.
99
- >>> setup_sandbox_env(container_id='3fadb1e8bac3')
100
- Container 3fadb1e8bac3 started successfully.
101
- """
102
- # Check for docker module.
103
- __check_docker_module()
104
-
105
- awu_matrix_test = []
106
- awu_matrix_test.append((["sandbox_image_location", sandbox_image_location, True,
107
- (str), True]))
108
- awu_matrix_test.append((["sandbox_image_name", sandbox_image_name, True,
109
- (str), True]))
110
- awu_matrix_test.append((["container_id", container_id, True, (str), True]))
111
- awu_matrix_test.append((["timeout", timeout, True, (int), True]))
112
-
113
- _Validators._validate_function_arguments(awu_matrix_test)
114
- _Validators._validate_positive_int(timeout, "timeout")
115
-
116
- if all([sandbox_image_location is None, sandbox_image_name is None, container_id is None])\
117
- or (any([sandbox_image_location, sandbox_image_name]) and container_id):
118
- message = Messages.get_message(MessageCodes.EITHER_THIS_OR_THAT_ARGUMENT,
119
- "sandbox_image_location and sandbox_image_name",
120
- "container_id")
121
- raise TeradataMlException(message, MessageCodes.EITHER_THIS_OR_THAT_ARGUMENT)
122
-
123
- if configure._container_started_by_teradataml:
124
- message = Messages.get_message(MessageCodes.CONTAINER_STARTED_BY_TERADATAML_EXISTS)
125
- raise TeradataMlException(message,
126
- MessageCodes.CONTAINER_STARTED_BY_TERADATAML_EXISTS)
127
-
128
- if sandbox_image_location and sandbox_image_name is None:
129
- message = Messages.get_message(MessageCodes.DEPENDENT_ARG_MISSING,
130
- "sandbox_image_name", "sandbox_image_location")
131
- raise TeradataMlException(message, MessageCodes.DEPENDENT_ARG_MISSING)
132
-
133
- if sandbox_image_name and sandbox_image_location is None:
134
- message = Messages.get_message(MessageCodes.DEPENDENT_ARG_MISSING,
135
- "sandbox_image_location", "sandbox_image_name")
136
- raise TeradataMlException(message, MessageCodes.DEPENDENT_ARG_MISSING)
137
-
138
- import docker
139
- client = docker.APIClient(timeout=timeout)
140
-
141
- # Check if the image with the tag is present then only start the container.
142
- # Give a message to the user that image with <tag> is already present,
143
- # starting only the container. Container started---container_id.
144
- # If the image is not present then load the image.
145
-
146
- # Variable for image name/tag returned by __load_docker_image().
147
- image_tag = None
148
- if sandbox_image_location is not None:
149
- list_image = client.images(name=sandbox_image_name)
150
- if not list_image:
151
- # Load sandbox image if the image is not present.
152
- image_tag = __load_docker_image(sandbox_image_location, timeout)
153
- else:
154
- # Skip loading image if it is already present.
155
- warnings.warn(Messages.get_message(MessageCodes.SANDBOX_SKIP_IMAGE_LOAD).
156
- format(sandbox_image_name))
157
-
158
- # This check is required in case the user wants to start a container from an
159
- # existing image.
160
- if sandbox_image_name:
161
- # Check if sandbox image exists on the system.
162
- if not client.images(sandbox_image_name, quiet=True):
163
- try:
164
- # Remove image if incorrect "sandbox_image_name" is provided by the
165
- # user.
166
- if image_tag is not None:
167
- __remove_docker_image(client, image_tag)
168
- finally:
169
- message = \
170
- Messages.get_message(
171
- MessageCodes.SANDBOX_CONTAINER_CAN_NOT_BE_STARTED,
172
- "sandbox_image_name")
173
- raise TeradataMlException(message,
174
- MessageCodes.SANDBOX_CONTAINER_CAN_NOT_BE_STARTED)
175
- else:
176
- # Start container if "sandbox_image_name" matches with the loaded image.
177
- try:
178
- print("Starting a container for {} image.".format(sandbox_image_name))
179
- # Start container.
180
- client, container, container_id = \
181
- __start_docker_container(sandbox_image_name=sandbox_image_name,
182
- client=client)
183
- print("Container {} started successfully.".format(container_id))
184
-
185
- configure._container_started_by_teradataml = container_id
186
- configure.sandbox_container_id = container_id
187
- if image_tag is not None:
188
- # Add container_id|sandbox_image_name to GC
189
- gc_entry = "{0}|{1}".format(container_id, sandbox_image_name)
190
- # Set configuration parameter _container_started_by_teradataml to
191
- # actual container_id and image name if image is loaded by
192
- # teradataml prior to starting the container.
193
- configure._container_started_by_teradataml = gc_entry
194
- else:
195
- # Add only container_id to GC when image is not loaded from
196
- # teradataml.
197
- gc_entry = container_id
198
- GarbageCollector. \
199
- _add_to_garbagecollector(gc_entry, TeradataConstants.CONTAINER)
200
-
201
- except Exception as err:
202
- raise err
203
-
204
- # Start an existing container.
205
- elif container_id is not None:
206
- import docker
207
-
208
- try:
209
- container_status=client.inspect_container(container_id)['State']['Status']
210
- client, container, container_id = \
211
- __start_docker_container(client=client, container_id=container_id,
212
- container_status=container_status)
213
- # Check status after starting the container.
214
- container_status = client.inspect_container(container_id)['State']['Status']
215
- if container_status == 'running':
216
- print("Container {} started successfully.".format(container_id))
217
- # Add container_id to GC
218
- GarbageCollector._add_to_garbagecollector(container_id,
219
- TeradataConstants.CONTAINER)
220
-
221
- # Set configuration parameters sandbox_container_id and
222
- # _container_started_by_teradataml to actual container_id to indicate that
223
- # a container exists.
224
- configure.sandbox_container_id = container_id
225
- configure._container_started_by_teradataml = container_id
226
-
227
- except Exception as err:
228
- raise err
229
-
230
- client.close()
231
-
232
- def __start_docker_container(sandbox_image_name=None, client=None, container_status=None,
233
- container_id=None):
234
- """
235
- DESCRIPTION:
236
- Function to start a sandbox container.
237
-
238
- PARAMETERS:
239
- sandbox_image_name:
240
- Required Argument.
241
- Specifies the name of the sandbox image.
242
- Types: str
243
-
244
- client:
245
- Required Argument.
246
- Specifies the object of class 'docker.api.client.APIClient' for communicating
247
- with Docker Engine API.
248
- Types: Object of class 'docker.api.client.APIClient'
249
-
250
- container_status:
251
- Optional Argument.
252
- Specifies the status of container specified in "container_id" argument.
253
- Types: str
254
-
255
- container_id:
256
- Optional Argument.
257
- Specifies the id of an existing docker container.
258
- Types: str
259
-
260
- RETURNS:
261
- Client required to communicate to the docker daemon, container object and
262
- container id.
263
-
264
- RAISES:
265
- docker.errors.APIError, docker.errors.NotFound, Exception.
266
-
267
- EXAMPLES:
268
- >>> __start_docker_container(sandbox_image_name='stosandbox:1.0', client=client,
269
- container_status='paused', container_id='7efsdjkjk')
270
- """
271
- # Check if 'docker' module is present.
272
- __check_docker_module()
273
-
274
- import docker
275
-
276
- # Create and start container.
277
- if sandbox_image_name is not None:
278
- try:
279
- # Create container.
280
- container = client.create_container(sandbox_image_name,
281
- stdin_open=True,
282
- tty=True,
283
- detach=True)
284
- # Find container id.
285
- container_id = container.get('Id')
286
- # Start container.
287
- client.start(container_id)
288
- return client, container, container_id
289
- except Exception as err:
290
- raise err
291
- else:
292
- # Start an existing container.
293
- if container_status and container_id:
294
- try:
295
- if container_status == 'paused':
296
- client.unpause(container_id)
297
- elif container_status == 'exited':
298
- client.start(container_id)
299
- container = client.containers(filters={"id":container_id})
300
- return client, container, container_id
301
- except Exception as err:
302
- raise err
303
-
304
- def __load_docker_image(sandbox_image_location, timeout):
305
- """
306
- DESCRIPTION:
307
- Function to load a docker image.
308
-
309
- PARAMETERS:
310
- sandbox_image_location
311
- Required Argument.
312
- Specifies the path to sandbox image on user's system.
313
- Types: str
314
-
315
- timeout:
316
- Required Argument.
317
- Specifies timeout value for docker API calls. This is particularly useful
318
- while loading large sandbox images. User should increase the "timeout" value
319
- if image loading fails because of timeout.
320
- Types: int
321
-
322
- RETURNS:
323
- str (image tag).
324
-
325
- RAISES:
326
- docker.errors.APIError, Exception.
327
-
328
- EXAMPLES:
329
- >>> __load_docker_image(sandbox_image_location='/tmp/stosandbox.tar.gz',
330
- timeout=3000)
331
-
332
- """
333
- # Check if 'docker' module is present.
334
- __check_docker_module()
335
-
336
- import docker
337
-
338
- # Check if file exists.
339
- _Validators._validate_file_exists(sandbox_image_location)
340
-
341
- client = docker.from_env(timeout=timeout)
342
-
343
- # Load image from user provided location.
344
- try:
345
- msg = "Loading image from {0}. It may take few minutes."
346
- print(msg.format(sandbox_image_location))
347
- with open(sandbox_image_location, 'rb') as f:
348
- image_obj = client.images.load(f)
349
- # Get the image tag of loaded image.
350
- image_tag = image_obj.pop().tags[0]
351
- print("Image loaded successfully.")
352
- return image_tag
353
- except Exception as err:
354
- raise err
355
-
356
- def __remove_docker_image(client, sandbox_image_name):
357
- """
358
- DESCRIPTION:
359
- Function to remove a docker image.
360
-
361
- PARAMETERS:
362
- client:
363
- Required Argument.
364
- Specifies the object of class 'docker.api.client.APIClient' for communicating
365
- with Docker Engine API.
366
- Types: Object of class 'docker.api.client.APIClient'
367
-
368
- sandbox_image_name
369
- Required Argument.
370
- Specifies the name of the sandbox image to be removed.
371
- Types: str
372
-
373
- RETURNS:
374
- None.
375
-
376
- RAISES:
377
- Exception.
378
-
379
- EXAMPLES:
380
- >>> __remove_docker_image(client=client,
381
- sandbox_image_name='stosandbox:1.0')
382
-
383
- """
384
- # Check if 'docker' module is present.
385
- __check_docker_module()
386
-
387
- import docker
388
- try:
389
- # Remove sandbox image.
390
- client.remove_image(sandbox_image_name)
391
- except Exception as err:
392
- raise err
393
-
394
- def cleanup_sandbox_env():
395
- """
396
- DESCRIPTION:
397
- Function to clean up sandbox environment setup by teradataml. Function will
398
- remove the image and/or container used to setup the sandbox environment
399
- using setup_sandbox_env().
400
-
401
- PARAMETERS:
402
- None.
403
-
404
- RETURNS:
405
- None.
406
-
407
- RAISES:
408
- None.
409
-
410
- EXAMPLES:
411
- >>> from teradataml.table_operators.sandbox_container_util import *
412
- # Example 1: Setup sandbox environment using the setup_sandbox_env()
413
- # and clean it up using cleanup_sandbox_env() function.
414
- # This cleans up image and container created by
415
- # setup_sandbox_env().
416
- >>> setup_sandbox_env(sandbox_image_location='/tmp/stosandbox.tar.gz',
417
- sandbox_image_name='stosandbox:1.0')
418
- Loading image from /tmp/stosandbox.tar.gz. It may take few minutes.
419
- Image loaded successfully.
420
- Container c1dd4d4b722cc54b643ab2bdc57540a3a3e6db98c299defc672227de97d2c345
421
- started successfully.
422
- >>> cleanup_sandbox_env()
423
- Removed container: c1dd4d4b722cc54b643ab2bdc57540a3a3e6db98c299defc672227de97d2c345
424
- Removed image: stosandbox:1.0
425
-
426
- # Example 2: Set configure.sandbox_container_id manually then run
427
- # setup_sandbox_env() and clean it up using cleanup_sandbox_env()
428
- # function. This only cleans up image and container created
429
- # by setup_sandbox_env() and does not cleanup the container
430
- # specified in 'configure.sandbox_container_id'.
431
- >>> configure.sandbox_container_id = 'container_id_set_by_user'
432
- >>> setup_sandbox_env(sandbox_image_location='/tmp/stosandbox.tar.gz',
433
- sandbox_image_name='stosandbox:1.0')
434
- Loading image from /tmp/stosandbox.tar.gz. It may take few minutes.
435
- Image loaded successfully.
436
- Container c1dd4d4b722cc54b643ab2bdc57540a3a3e6db98c299defc672227de97d2c345
437
- started successfully.
438
- >>> cleanup_sandbox_env()
439
- Removed container: c1dd4d4b722cc54b643ab2bdc57540a3a3e6db98c299defc672227de97d2c345
440
- Removed image: stosandbox:1.0
441
- """
442
- # Check of 'docker' module is present.
443
- __check_docker_module()
444
-
445
- import docker
446
-
447
- sandbox_env_object = configure._container_started_by_teradataml
448
- if not sandbox_env_object:
449
- print("No container started using \"setup_sandbox_env()\". Nothing to clean up.")
450
- else:
451
- GarbageCollector._GarbageCollector__delete_docker_sandbox_env(sandbox_env_object)
452
- GarbageCollector._GarbageCollector__delete_object_from_gc_list(sandbox_env_object,
453
- TeradataConstants.CONTAINER)
454
- container_record = str(GarbageCollector._GarbageCollector__version) + "," + str(os.getpid()) + "," \
455
- + str(TeradataConstants.CONTAINER.value) + "," + sandbox_env_object
456
- # Remove the entry for container id and/or image name from GC,
457
- # after it has been deleted.
458
- GarbageCollector._GarbageCollector__deleterow(container_record)
459
- res = sandbox_env_object.split("|")
460
- print("Removed container: {0}\n".format(res[0]))
461
- if len(res) == 2:
462
- client = docker.APIClient()
463
- image_present = client.images(name=res[1])
464
- if not image_present:
465
- print("Removed image: {0}".format(res[1]))
466
-
467
- def copy_files_from_container(files_to_copy, container_id=None):
468
- """
469
- DESCRIPTION:
470
- Function to copy file(s) from container specified by "container_id" or container
471
- indicated by 'configure.sandbox_container_id' to local filesystem.
472
- Notes:
473
- 1. Files will be copied to a directory in .teradataml directory under
474
- user's home directory.
475
- 2. User is responsible for cleaning up this directory.
476
-
477
- PARAMETERS:
478
- files_to_copy:
479
- Required Argument.
480
- Specifies the filename(s) to be copied from container.
481
- Type: str OR list of Strings (str)
482
- Note:
483
- Files should be in "/home/tdatuser" inside the container.
484
-
485
- container_id:
486
- Optional Argument.
487
- Specifies the container from which files are to be copied.
488
- If not specified, then files are copied from container in
489
- 'configure.sandbox_container_id'.
490
- Types: str
491
-
492
- RETURNS:
493
- None.
494
-
495
- RAISES:
496
- docker.errors.APIError, TeradataMlException, Exception.
497
-
498
- EXAMPLES:
499
- # Copy files from "/home/tdatuser" inside container started by teradataml to
500
- local host.
501
- >>> from teradataml.table_operators.sandbox_container_util import copy_files_from_container
502
- import copy_files_from_container
503
-
504
- >>> copy_files_from_container(files_to_copy="file1.txt")
505
- Files copied to: /<user's home directory>/.teradataml/files_from_container_210110_193943
506
-
507
- >>> copy_files_from_container(files_to_copy=["output/file1.txt", "file2.txt"])
508
- Files copied to: /<user's home directory>/.teradataml/files_from_container_210110_193943
509
-
510
- """
511
- awu_matrix_copy=[]
512
- awu_matrix_copy.append((["files_to_copy", files_to_copy, False, (str, list), True]))
513
- awu_matrix_copy.append((["container_id", container_id, True, (str), True]))
514
-
515
- # Validate missing arguments.
516
- _Validators._validate_missing_required_arguments(awu_matrix_copy)
517
-
518
- # Validate argument types.
519
- _Validators._validate_function_arguments(awu_matrix_copy)
520
-
521
- if isinstance(files_to_copy, str):
522
- files_to_copy = [files_to_copy]
523
-
524
- if len(files_to_copy) == 0 \
525
- or any(file in "None" for file in files_to_copy):
526
- raise ValueError(
527
- Messages.get_message(MessageCodes.LIST_SELECT_NONE_OR_EMPTY,
528
- 'files_to_copy'))
529
-
530
- # Check if 'docker' module is present.
531
- __check_docker_module()
532
-
533
- import docker
534
-
535
- client = docker.APIClient()
536
- # User must either provide container_id or make sure configure.sandbox_container_id
537
- # is set.
538
- if all([container_id is None, configure.sandbox_container_id is None]):
539
- message = Messages.get_message(MessageCodes.SPECIFY_AT_LEAST_ONE_ARG,
540
- "container_id", "set configure.sandbox_container_id")
541
- raise TeradataMlException(message, MessageCodes.SPECIFY_AT_LEAST_ONE_ARG)
542
-
543
- # If container_id is None then copy files from container indicated by
544
- # configure.sandbox_container_id.
545
- if container_id is None:
546
- container_id = configure.sandbox_container_id
547
- # Check status of container.
548
- container_status = client.inspect_container(container_id)['State']['Status']
549
- # Copy files if container is running.
550
- if container_status == 'running':
551
- # Create a directory under .teradataml.
552
- import datetime, os, shutil
553
- base_destination = GarbageCollector._get_temp_dir_name()
554
- basename = "files_from_container"
555
- suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
556
- dest_dir = "{}_{}".format(basename, suffix)
557
- destination = os.path.join(base_destination, dest_dir)
558
- try:
559
- os.makedirs(os.path.join(base_destination, basename))
560
- except OSError:
561
- pass
562
-
563
- from io import BytesIO
564
- import tarfile
565
-
566
- # Copy files from container.
567
- try:
568
- successful_files = set()
569
- failed_files = dict()
570
- for fname in files_to_copy:
571
- cmd = client.exec_create(container_id, 'ls {}'.format(fname))
572
- cmd_output = client.exec_start(cmd, demux=True)
573
-
574
- # Inspect the output for success or failure.
575
- inspect_out = client.exec_inspect(cmd)
576
-
577
- # Extract the exit code.
578
- exit_code = inspect_out['ExitCode']
579
- executor_error = ""
580
-
581
- # Check the exit code for success.
582
- if exit_code == 0:
583
- file_list = cmd_output[0].decode().split()
584
- for file in file_list:
585
- strm, status = client.get_archive(container_id, "/home/tdatuser/{}".format(file))
586
- data_obj = BytesIO(b"".join(b for b in strm))
587
- tar = tarfile.open(fileobj=data_obj, mode='r')
588
- try:
589
- tar.extract(member=file, path=destination)
590
- successful_files.add(file)
591
- finally:
592
- data_obj.close()
593
- tar.close()
594
- elif exit_code == 2:
595
- if cmd_output[1] is not None:
596
- executor_error = cmd_output[1].decode()
597
- failed_files[fname] = executor_error
598
-
599
- if len(successful_files):
600
- print("\nThe following file(s) copied SUCCESSFULLY to: {}".format(destination))
601
- for successful_file in successful_files:
602
- print(successful_file)
603
- if len(failed_files):
604
- print("\nFailed to copy following files from container:")
605
- for failed_file, reason in failed_files.items():
606
- print(failed_file, "\nReason:\n", reason)
607
- message = Messages.get_message(
608
- MessageCodes.SANDBOX_CONTAINER_ERROR).format("Failed to copy file(s)")
609
- raise TeradataMlException(message, MessageCodes.SANDBOX_CONTAINER_ERROR)
610
-
611
- except docker.errors.APIError as exp:
612
- raise exp
613
- except TeradataMlException:
614
- raise
615
- except Exception as exp:
616
- raise TeradataMlException(
617
- Messages.get_message(MessageCodes.SANDBOX_CONTAINER_ERROR).format(str(exp)),
618
- MessageCodes.SANDBOX_CONTAINER_ERROR)
619
- else:
620
- raise TeradataMlException(
621
- Messages.get_message(MessageCodes.SANDBOX_CONTAINER_NOT_RUNNING).
622
- format(container_id), MessageCodes.SANDBOX_CONTAINER_NOT_RUNNING)
623
-
624
- def __check_docker_module():
625
- """
626
- DESCRIPTION:
627
- Function to check the presence of docker python module.
628
-
629
- PARAMETERS:
630
- None.
631
-
632
- RETURNS:
633
- None.
634
-
635
- RAISES:
636
- TeradataMlException
637
-
638
- EXAMPLES:
639
- __check_docker_module()
640
- """
641
- import inspect
642
- # Validate argument types.
643
- _Validators._validate_module_presence('docker', inspect.stack()[1][3])