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,1708 +1,1708 @@
1
- """
2
- Unpublished work.
3
- Copyright (c) 2021 by Teradata Corporation. All rights reserved.
4
- TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
5
-
6
- Primary Owner: pradeep.garre@teradata.com
7
- Secondary Owner: PankajVinod.Purandare@teradata.com
8
-
9
- This file implements several classes for representing the input, output and other
10
- arguments of analytic functions. These are used by IN-DB SQLE analytic framework
11
- for parsing and storing the JSON details of each argument of each function.
12
- File implements classes for following:
13
- * Analytic Function Argument Base
14
- * Analytic Function Input Argument
15
- * Analytic Function Output Argument
16
- * Analytic Function Other Argument
17
- """
18
- from teradataml.analytics.json_parser import PartitionKind
19
- from teradataml.utils.dtypes import _Dtypes
20
- from teradataml.utils.validators import _Validators
21
- from teradataml.common.messages import Messages, MessageCodes
22
- from teradataml.common.exceptions import TeradataMlException
23
- from teradataml.common.utils import UtilFuncs
24
- from teradataml.analytics.json_parser import UAFJsonFields as SJF
25
- from teradataml.dataframe.dataframe import TDSeries, TDMatrix, TDAnalyticResult, TDGenSeries
26
-
27
-
28
- class _DependentArgument:
29
- """
30
- Class to hold the information about dependent argument.
31
- """
32
- def __init__(self, sql_name, type, operator, right_operand):
33
- """
34
- DESCRIPTION:
35
- Constructor for the class.
36
-
37
- PARAMETERS:
38
- sql_name:
39
- Required Argument.
40
- Specifies the name of the dependent argument in SQL.
41
- Types: str
42
-
43
- type:
44
- Required Argument.
45
- Specifies the type of the dependent argument. Dependent argument
46
- type can be input_tables or arguments or output_tables.
47
- Types: str
48
-
49
- operator:
50
- Required Argument.
51
- Specifies the comparision operators for dependent argument.
52
- Types: str
53
-
54
- right_operand:
55
- Required Argument.
56
- Specifies the value to be used for comparing the dependent argument
57
- using 'operator'.
58
- Types: str
59
- """
60
- self.sql_name = sql_name
61
- self.operator = operator
62
- self.right_operand = right_operand
63
- self.type = type
64
-
65
- def is_required(self, arg_value):
66
- """
67
- DESCRIPTION:
68
- Check if argument is required or not based on the value of dependent argument.
69
-
70
- PARAMETERS:
71
- arg_value:
72
- Required Argument.
73
- Specifies the value of dependent argument passed by the user.
74
- Types: str or int or bool or float or list
75
-
76
- RETURNS:
77
- bool
78
-
79
- RAISES:
80
- None
81
-
82
- EXAMPLES:
83
- _DependentArgument("MethodType", "arguments", "=", "EQUAL-WIDTH").is_required("EQUAL-WIDTH")
84
- """
85
- if self.operator == "=":
86
- return arg_value == self.right_operand
87
- elif self.operator == ">=":
88
- return arg_value >= self.right_operand
89
- elif self.operator == ">":
90
- return arg_value > self.right_operand
91
- elif self.operator == "<=":
92
- return arg_value <= self.right_operand
93
- elif self.operator == "<":
94
- return arg_value < self.right_operand
95
- elif self.operator == "IN":
96
- return arg_value in self.right_operand
97
- elif self.operator == "NOT IN":
98
- return arg_value not in self.right_operand
99
- else:
100
- msg_code = MessageCodes.EXECUTION_FAILED
101
- raise TeradataMlException(
102
- Messages.get_message(msg_code,
103
- "parse the dependent argument '{}'".format(self.sql_name),
104
- "Operator '{}' is not implemented".format(self.operator)),
105
- msg_code)
106
-
107
-
108
- class _AnlyFuncArgumentBase(object):
109
- """
110
- Class to hold the basic/common information about all the arguments.
111
- """
112
- def __init__(self, sql_name, is_required, sql_description, lang_description, lang_name, use_in_r):
113
- """
114
- DESCRIPTION:
115
- Constructor for the class.
116
-
117
- PARAMETERS:
118
- sql_name:
119
- Required Argument.
120
- Specifies the name of the argument in SQL.
121
- Types: str
122
-
123
- is_required:
124
- Required Argument.
125
- Specifies whether the argument is required or not.
126
- Types: bool
127
-
128
- sql_description:
129
- Required Argument.
130
- Specifies the description of argument in SQL.
131
- Types: str
132
-
133
- lang_description:
134
- Required Argument.
135
- Specifies the description of the argument, which needs to be exposed
136
- to user.
137
- Types: str
138
-
139
- lang_name:
140
- Required Argument.
141
- Specifies the name of the argument to be exposed to user.
142
- Types: str
143
-
144
- use_in_r:
145
- Required Argument.
146
- Specifies whether argument should be used in client or not.
147
- Types: bool
148
- """
149
- self.__sql_name = sql_name
150
- self.__is_required = is_required
151
- self.__sql_description = sql_description
152
- self.__description = lang_description
153
- self.__name = lang_name
154
- self.__use_in_r = use_in_r
155
-
156
- awu_matrix = []
157
- awu_matrix.append(["sql_name", sql_name, False, (str,), True])
158
- awu_matrix.append(["is_required", is_required, False, (bool,)])
159
- awu_matrix.append(["sql_description", sql_description, False, (str,), True])
160
- awu_matrix.append(["lang_description", lang_description, False, (str,), True])
161
- awu_matrix.append(["lang_name", lang_name, False, (str,), True])
162
- awu_matrix.append(["use_in_r", use_in_r, False, (bool,)])
163
-
164
- # Validate argument types.
165
- _Validators._validate_function_arguments(awu_matrix)
166
- self.is_empty_value_allowed = lambda: True
167
- self.is_output_column = lambda: False
168
- self.get_r_default_value = lambda: None
169
-
170
- # Getters
171
- def get_sql_name(self):
172
- """
173
- DESCRIPTION:
174
- Get SQL name of the argument.
175
-
176
- RETURNS:
177
- str
178
-
179
- RAISES:
180
- None
181
-
182
- EXAMPLES:
183
- # Get the argument name used in SQL Query.
184
- from teradataml.analytics.json_parser.argument import _AnlyFuncArgumentBase
185
- argument_base = _AnlyFuncArgumentBase("sql_name", True, "SQL Description", "Python Description", "name", True)
186
- argument_base.get_sql_name()
187
- """
188
- return self.__sql_name
189
-
190
- def is_required(self):
191
- """
192
- DESCRIPTION:
193
- Check if argument is required or not.
194
-
195
- RETURNS:
196
- bool
197
-
198
- RAISES:
199
- None
200
-
201
- EXAMPLES:
202
- # Check whether the argument is a mandatory or not for Analytic function.
203
- from teradataml.analytics.json_parser.argument import _AnlyFuncArgumentBase
204
- argument_base = _AnlyFuncArgumentBase("sql_name", True, "SQL Description", "Python Description", "name", True)
205
- if argument_base.is_required():
206
- print("Required")
207
- """
208
- return self.__is_required
209
-
210
- def get_sql_description(self):
211
- """
212
- DESCRIPTION:
213
- Get SQL description of the argument.
214
-
215
- RETURNS:
216
- str
217
-
218
- RAISES:
219
- None
220
-
221
- EXAMPLES:
222
- # Get the description of the argument with respect to SQL.
223
- from teradataml.analytics.json_parser.argument import _AnlyFuncArgumentBase
224
- argument_base = _AnlyFuncArgumentBase("sql_name", True, "SQL Description", "Python Description", "name", True)
225
- argument_base.get_sql_description()
226
- """
227
- return self.__sql_description
228
-
229
- def get_lang_description(self):
230
- """
231
- DESCRIPTION:
232
- Get client specific description name of the argument.
233
-
234
- RETURNS:
235
- str
236
-
237
- RAISES:
238
- None
239
-
240
- EXAMPLES:
241
- # Get the description of the argument with respect to Python.
242
- from teradataml.analytics.json_parser.argument import _AnlyFuncArgumentBase
243
- argument_base = _AnlyFuncArgumentBase("sql_name", True, "SQL Description", "Python Description", "name", True)
244
- argument_base.get_lang_description()
245
- """
246
- return self.__description
247
-
248
- def get_lang_name(self):
249
- """
250
- DESCRIPTION:
251
- Get client specific name of the argument.
252
-
253
- RETURNS:
254
- str
255
-
256
- RAISES:
257
- None
258
-
259
- EXAMPLES:
260
- # Get the argument name, which is exposed to user.
261
- from teradataml.analytics.json_parser.argument import _AnlyFuncArgumentBase
262
- argument_base = _AnlyFuncArgumentBase("sql_name", True, "SQL Description", "Python Description", "name", True)
263
- argument_base.get_lang_name()
264
- """
265
- return self.__name
266
-
267
- def use_in_r(self):
268
- """
269
- DESCRIPTION:
270
- Check if argument should be used in client function or not.
271
-
272
- RETURNS:
273
- str
274
-
275
- RAISES:
276
- None
277
-
278
- EXAMPLES:
279
- # Check whether argument is used in R or not.
280
- from teradataml.analytics.json_parser.argument import _AnlyFuncArgumentBase
281
- argument_base = _AnlyFuncArgumentBase("sql_name", True, "SQL Description", "Python Description", "name", True)
282
- if argument_base.use_in_r():
283
- print("Yes")
284
- """
285
- return self.__use_in_r
286
-
287
-
288
- class _AnlyFuncInput(_AnlyFuncArgumentBase):
289
- """
290
- Class to hold the information about input argument.
291
- """
292
-
293
- def __init__(self,
294
- sql_name,
295
- is_required,
296
- sql_description,
297
- lang_description,
298
- lang_name,
299
- use_in_r,
300
- r_order_num,
301
- datatype="TABLE_NAME",
302
- required_input_kind=None,
303
- partition_by_one=False,
304
- partition_by_one_inclusive=False,
305
- is_ordered=False,
306
- is_local_ordered=False,
307
- hash_by_key=False,
308
- allows_lists=False,
309
- r_formula_usage=False,
310
- alternate_sql_name=None):
311
- """
312
- Constructor for generating an object of Analytic Function Argument from
313
- JSON for arguments accepting input table.
314
-
315
- PARAMETERS:
316
- sql_name:
317
- Required Argument.
318
- Specifies the name of the argument in SQL.
319
- Types: str
320
-
321
- is_required:
322
- Required Argument.
323
- Specifies whether the argument is required or not.
324
- Types: bool
325
-
326
- sql_description:
327
- Required Argument.
328
- Specifies the description of argument in SQL.
329
- Types: str
330
-
331
- lang_description:
332
- Required Argument.
333
- Specifies the description of the argument, which needs to be exposed
334
- to user.
335
- Types: str
336
-
337
- lang_name:
338
- Required Argument.
339
- Specifies the name of the argument to be exposed to user.
340
- Types: str
341
-
342
- use_in_r:
343
- Required Argument.
344
- Specifies whether argument should be used in client or not.
345
- Types: bool
346
-
347
- r_order_num:
348
- Required Argument.
349
- Specifies the ordering sequence of the argument for R function call.
350
- Types: integer
351
-
352
- datatype:
353
- Optional Argument.
354
- Specifies the datatype for output table.
355
- Permitted Values: table_name, table_alias
356
- Default Value: table_name
357
- Types: str
358
-
359
- required_input_kind:
360
- Optional Argument.
361
- Specifies the kind of input.
362
- Permitted Values: partition_by_key, partition_by_any, or dimension
363
- Default Value: None
364
- Types: str or list of str
365
-
366
- partition_by_one:
367
- Optional Argument.
368
- Specifies that for partition_by_key input kind, the key should be
369
- "Partition by 1". If this argument is set to true and
370
- "partition_by_one_inclusive" is set to False, the function only accepts
371
- "Partition by 1" but not "Partition by key".
372
- Default Value: False
373
- Types: bool
374
-
375
- partition_by_one_inclusive:
376
- Optional Argument.
377
- Specifies that for partition_by_key input kind, the function accepts both
378
- "Partition by 1" and "Partition by key". This argument can be set to True
379
- only if "required_input_kind" has partition_by_key, partition_by_any.
380
- Default Value: False
381
- Types: bool
382
-
383
- is_ordered:
384
- Optional Argument.
385
- Specifies that the table must be input with an "Order by" clause.
386
- Default Value: False
387
- Types: bool
388
-
389
- is_local_ordered:
390
- Optional Argument.
391
- Specifies whether the table supports LOCAL ORDER BY clause or not.
392
- Default Value: False
393
- Types: bool
394
-
395
- hash_by_key:
396
- Optional Argument.
397
- Specifies whether data is grouped according to the HASH BY clause.
398
- Default Value: False
399
- Types: bool
400
-
401
- allow_lists:
402
- Optional Argument.
403
- Specifies whether the argument accepts list of values. If false, the
404
- argument can only accept a single value.
405
- Default Value: False
406
- Types: bool
407
-
408
- r_formula_usage:
409
- Optional Argument.
410
- Specifies if the argument contains a formula.
411
- Default Value: False
412
- Types: bool
413
-
414
- alternate_sql_name:
415
- Optional Argument.
416
- Specifies alternate names for the argument.
417
- Default Value: None
418
- Types: str or list of str
419
- """
420
-
421
- # Call Abstract class constructor
422
- super().__init__(sql_name, is_required, sql_description, lang_description,
423
- lang_name,
424
- use_in_r)
425
-
426
- # Process other parameters of input table argument.
427
- self.__required_input_kind = required_input_kind
428
- self.__partition_by_one = partition_by_one
429
- self.__partition_by_one_inclusive = partition_by_one_inclusive
430
- self.__is_ordered = is_ordered
431
- self.__is_local_ordered = is_local_ordered
432
- self.__hash_by_key = hash_by_key
433
- self.__datatype = datatype
434
- self.__allows_lists = allows_lists
435
- self.__r_formula_usage = r_formula_usage
436
- self.__r_order_num = r_order_num
437
- self.__alternate_sql_name = alternate_sql_name
438
-
439
- # Create argument information matrix to do parameter checking
440
- self.__arg_info_matrix = []
441
- required_input_kind_permitted_values = ["PartitionByKey", "PartitionByAny", "Dimension"]
442
- self.__arg_info_matrix.append(
443
- ["required_input_kind", self.__required_input_kind, True, (list, str), True,
444
- required_input_kind_permitted_values])
445
- self.__arg_info_matrix.append(
446
- ["partition_by_one", self.__partition_by_one, True, (bool)])
447
- self.__arg_info_matrix.append(
448
- ["partition_by_one_inclusive", self.__partition_by_one_inclusive, True, (bool)])
449
- self.__arg_info_matrix.append(["is_ordered", self.__is_ordered, True, (bool)])
450
- self.__arg_info_matrix.append(["is_local_ordered", self.__is_local_ordered, True, (bool)])
451
- self.__arg_info_matrix.append(["hash_by_key", self.__hash_by_key, True, (bool)])
452
- self.__arg_info_matrix.append(
453
- ["datatype", self.__datatype, False, (str), True, ["table_name", "table_alias"]])
454
- self.__arg_info_matrix.append(["r_order_num", self.__r_order_num, False, (int), True])
455
- self.__arg_info_matrix.append(["allows_lists", self.__allows_lists, True, (bool)])
456
- self.__arg_info_matrix.append(["alternate_sql_name", self.__alternate_sql_name, True, (list, str)])
457
- self.__arg_info_matrix.append(["r_formula_usage", self.__r_formula_usage, True, (bool)])
458
- # Perform the function validations
459
- self.__validate()
460
- self.get_default_value = lambda: None
461
- self.get_permitted_values = lambda: None
462
- self._only_partition_by_one = lambda: \
463
- self.__partition_by_one and not self.__partition_by_one_inclusive
464
-
465
- def __validate(self):
466
- """
467
- DESCRIPTION:
468
- Function to validate arguments, which verifies missing arguments,
469
- input argument.
470
- """
471
- # Validate argument types.
472
- _Validators._validate_function_arguments(self.__arg_info_matrix)
473
-
474
- # Getters.
475
- def get_required_input_kind(self):
476
- """
477
- DESCRIPTION:
478
- Function to get the required_input_kind argument.
479
- """
480
- return self.__required_input_kind
481
-
482
- def get_python_type(self):
483
- """
484
- DESCRIPTION:
485
- Function to get the python type of argument.
486
- """
487
- from teradataml.dataframe.dataframe import DataFrame
488
- return DataFrame
489
-
490
- def is_reference_function_acceptable(self):
491
- """
492
- DESCRIPTION:
493
- Function to check if argument accepts reference function name or not.
494
- """
495
- return self.get_lang_name().lower() in ("object", "modeldata")
496
-
497
- def is_partition_by_one(self):
498
- """
499
- DESCRIPTION:
500
- Function to check whether partition_by_one is True or False.
501
- """
502
- return self.__partition_by_one
503
-
504
- def is_partition_by_one_inclusive(self):
505
- """
506
- DESCRIPTION:
507
- Function to check whether partition_by_one_inclusive is True or False.
508
- """
509
- return self.__partition_by_one_inclusive
510
-
511
- def is_ordered(self):
512
- """
513
- DESCRIPTION:
514
- Function to check whether input table has an order by clause.
515
- """
516
- return self.__is_ordered
517
-
518
- def is_local_ordered(self):
519
- """
520
- DESCRIPTION:
521
- Check whether input supports LOCAL ORDER BY clause or not.
522
- """
523
- return self.__is_local_ordered
524
-
525
- def hash_by_key(self):
526
- """
527
- DESCRIPTION:
528
- Check whether input supports HASH BY KEY clause or not.
529
- """
530
- return self.__hash_by_key
531
-
532
- def get_data_type(self):
533
- """
534
- DESCRIPTION:
535
- Function to get the datatype of the argument.
536
- """
537
- return self.__datatype
538
-
539
- def allows_lists(self):
540
- """
541
- DESCRIPTION:
542
- Function to check if argument accepts lists or not.
543
- """
544
- return self.__allows_lists
545
-
546
- def get_r_formula_usage(self):
547
- """
548
- DESCRIPTION:
549
- Function to check if argument is part of a formula or not.
550
- """
551
- return self.__r_formula_usage
552
-
553
- def get_r_order_number(self):
554
- """
555
- DESCRIPTION:
556
- Function to get the order number of the argument.
557
- """
558
- return self.__r_order_num
559
-
560
- def get_alternate_sql_name(self):
561
- """
562
- DESCRIPTION:
563
- Function to get the alternate SQL name of the argument.
564
- """
565
- return self.__alternate_sql_name
566
-
567
- def _get_partition_column_required_kind(self):
568
- """
569
- DESCRIPTION:
570
- Function to determine if the input table is partitioned by a column or ANY or 1
571
- or data distribution is DIMENSION. This function follows below steps and derives
572
- partition column kind.
573
- * The input_table is partitioned by a key, if requireInputKind == PartitionByKey
574
- and partitionByOne == False.
575
- * The input_table is partitioned by 1/key, if requireInputKind == PartitionByKey,
576
- partitionByOneInclusive == True and partitionByOne == True.
577
- * The input_table is partitioned by 1 only, if partitionByOneInclusive == False
578
- and partitionByOne=true.
579
- * The input_table is partitioned by ANY/key, if requireInputKind == PartitionByKey
580
- and requireInputKind == PartitionByAny.
581
- * The input_table is partitioned by ANY only, if requireInputKind == PartitionByAny.
582
- * The input_table is distributed by either DIMENSION or partitioned by key, if
583
- requireInputKind == PartitionByKey and requireInputKind == DIMENSION.
584
- * The input_table is distributed by either DIMENSION or partitioned by ANY/key, if
585
- requireInputKind == PartitionByKey and requireInputKind == PartitionByAny and
586
- requireInputKind == DIMENSION.
587
-
588
- RAISES:
589
- None
590
-
591
- RETURNS:
592
- enum of type teradataml.analytics.json_parser.PartitionKind
593
-
594
- EXAMPLES:
595
- self._get_partition_column_required_kind()
596
- """
597
- is_partition_by_key, is_partition_by_any, is_partition_by_one, is_dimension = [False]*4
598
-
599
- # Input table is partitioned by 1 ONLY when partitionByOneInclusive is false and
600
- # partitionByOne is true.
601
- if self.__partition_by_one and not self.__partition_by_one_inclusive:
602
- is_partition_by_one = True
603
- else:
604
- for input_kind in self.__required_input_kind:
605
- if input_kind == "Dimension":
606
- is_dimension = True
607
- # If requiredInputKind has PartitionByKey and partitionByOneInclusive and
608
- # partitionByOne is True then input table is partitioned by 1 or Key.
609
- # Else input table is partitioned by Key Only.
610
- elif input_kind == "PartitionByKey":
611
- if self.__partition_by_one_inclusive and self.__partition_by_one:
612
- is_partition_by_one = True
613
- is_partition_by_key = True
614
- else:
615
- is_partition_by_key = True
616
- elif input_kind == "PartitionByAny":
617
- is_partition_by_any = True
618
-
619
- if is_dimension:
620
- if is_partition_by_key and is_partition_by_any:
621
- return PartitionKind.DIMENSIONKEYANY
622
- elif is_partition_by_key and not is_partition_by_any:
623
- return PartitionKind.DIMENSIONKEY
624
- else:
625
- return PartitionKind.DIMENSION
626
- else:
627
- if is_partition_by_key and not is_partition_by_any and not is_partition_by_one:
628
- return PartitionKind.KEY
629
- elif is_partition_by_key and is_partition_by_any:
630
- return PartitionKind.ANY
631
- elif not is_partition_by_key and is_partition_by_any:
632
- return PartitionKind.ANYONLY
633
- elif is_partition_by_one and is_partition_by_key:
634
- return PartitionKind.ONE
635
- elif is_partition_by_one and is_partition_by_key:
636
- return PartitionKind.ONEONLY
637
-
638
- def _get_default_partition_column_kind(self):
639
- """ Returns the default Parition Type based on requiredInputKind parameter in json file. """
640
- required_column_kind = UtilFuncs._as_list(self.__required_input_kind)[0]
641
-
642
- if required_column_kind == "PartitionByAny":
643
- return PartitionKind.ANY
644
- elif required_column_kind == "Dimension":
645
- return PartitionKind.DIMENSION
646
- elif required_column_kind == "PartitionByOne":
647
- return PartitionKind.ONE
648
- else:
649
- return None
650
-
651
- '''
652
- @staticmethod
653
- def _get_default_partition_by_value(partition_kind):
654
- """
655
- DESCRIPTION:
656
- Function to get the default value for partition column kind.
657
-
658
- PARAMETERS:
659
- partition_kind:
660
- Required Argument.
661
- Specifies input table partition type.
662
-
663
- RAISES:
664
- None
665
-
666
- RETURNS:
667
- str OR int
668
-
669
- EXAMPLES:
670
- self._get_default_partition_by_value(PartitionKind.KEY)
671
- """
672
- if partition_kind == PartitionKind.KEY or partition_kind == PartitionKind.DIMENSIONKEY:
673
- return None
674
- elif partition_kind == PartitionKind.ONE or partition_kind == PartitionKind.ONEONLY:
675
- return 1
676
- elif partition_kind == PartitionKind.ANY or partition_kind == PartitionKind.ANYONLY or \
677
- partition_kind == PartitionKind.DIMENSIONKEYANY:
678
- return "ANY"
679
- '''
680
-
681
- def _only_partition_by_any(self):
682
- """
683
- DESCRIPTION:
684
- Check partition column supports only Partition By Any.
685
-
686
- RAISES:
687
- None
688
-
689
- RETURNS:
690
- bool
691
-
692
- EXAMPLES:
693
- self._only_partition_by_any()
694
- """
695
- if isinstance(self.__required_input_kind, str):
696
- return self.__required_input_kind == "PartitionByAny"
697
- return self.__required_input_kind == ["PartitionByAny"]
698
-
699
-
700
- class _AnlyFuncOutput(_AnlyFuncArgumentBase):
701
- """
702
- Class to hold the information about output argument.
703
- """
704
-
705
- def __init__(self,
706
- sql_name,
707
- is_required,
708
- sql_description,
709
- lang_description,
710
- lang_name,
711
- use_in_r,
712
- r_order_num,
713
- datatype="TABLE_NAME",
714
- is_output_table=True,
715
- allows_lists=False,
716
- output_schema=None,
717
- alternate_sql_name=None,
718
- support_volatility=False,
719
- is_required_dependent_argument=None):
720
- """
721
- Constructor for generating an object of Analytic Function Argument from
722
- JSON for arguments accepting output table information.
723
-
724
- PARAMETERS:
725
- sql_name:
726
- Required Argument.
727
- Specifies the name of the argument in SQL.
728
- Types: str
729
-
730
- is_required:
731
- Required Argument.
732
- Specifies whether the argument is required or not.
733
- Types: bool
734
-
735
- sql_description:
736
- Required Argument.
737
- Specifies the description of argument in SQL.
738
- Types: str
739
-
740
- lang_description:
741
- Required Argument.
742
- Specifies the description of the argument, which needs to be exposed
743
- to user.
744
- Types: str
745
-
746
- lang_name:
747
- Required Argument.
748
- Specifies the name of the argument to be exposed to user.
749
- Types: str
750
-
751
- use_in_r:
752
- Required Argument.
753
- Specifies whether argument should be used in client or not.
754
- Types: bool
755
-
756
- r_order_num:
757
- Required Argument.
758
- Specifies the ordering sequence of the argument for R function call.
759
- Types: integer
760
-
761
- datatype:
762
- Optional Argument.
763
- Specifies the datatype for output table.
764
- Permitted Values: table_name, table_alias
765
- Default Value: table_name
766
- Types: str
767
-
768
- is_output_table:
769
- Optional Argument.
770
- Specifies whether the argument clause has an output table name.
771
- Default Value: True
772
- Types: bool
773
-
774
- allow_lists:
775
- Optional Argument.
776
- Specifies whether the argument accepts list of values. If false, the
777
- argument can only accept a single value.
778
- Default Value: False
779
- Types: bool
780
-
781
- output_schema:
782
- Optional Argument.
783
- Specifies the output schema of the function.
784
- Default Value: None
785
- Types: str
786
-
787
- alternate_sql_name:
788
- Optional Argument.
789
- Specifies alternate names for the argument.
790
- Default Value: None
791
- Types: str or list of str
792
-
793
- support_volatility:
794
- Optional Argument.
795
- Specifies whether the output table support VOLATILE table or not.
796
- Default Value: False
797
- Types: bool
798
- """
799
-
800
- # Call super class constructor to initialize basic parameters.
801
- super().__init__(sql_name, is_required, sql_description, lang_description,
802
- lang_name,
803
- use_in_r)
804
-
805
- self.__r_order_num = r_order_num
806
- self.__allows_lists = allows_lists
807
- self.__output_schema = output_schema
808
- self.__alternate_sql_name = alternate_sql_name
809
- self.__is_output_table = is_output_table
810
- self.__datatype = datatype
811
- self.__support_volatility = support_volatility
812
- # Create argument information matrix to do parameter checking
813
- self.__arg_info_matrix = []
814
- self.__arg_info_matrix.append(["r_order_num", self.__r_order_num, False, int, True])
815
- self.__arg_info_matrix.append(["allows_lists", self.__allows_lists, True, bool])
816
- self.__arg_info_matrix.append(["output_schema", self.__output_schema, True, str, True])
817
- self.__arg_info_matrix.append(["alternate_sql_name", self.__alternate_sql_name, True, (list, str)])
818
- self.__arg_info_matrix.append(["is_output_table", self.__is_output_table, True, bool])
819
- self.__arg_info_matrix.append(
820
- ["datatype", self.__datatype, True, str, True, ["table_name", "table_alias"]])
821
- self.__arg_info_matrix.append(["support_volatility", self.__support_volatility, True, bool])
822
- self.__arg_info_matrix.append(
823
- ["is_required_dependent_argument", is_required_dependent_argument, True, _DependentArgument])
824
-
825
- # Perform the function validations
826
- self.__validate()
827
- self.is_volatility_supported = lambda : self.__support_volatility
828
- self.get_is_required_dependent_argument = lambda : is_required_dependent_argument
829
-
830
- def __validate(self):
831
- """
832
- DESCRIPTION:
833
- Function to validate arguments, which verifies missing arguments,
834
- input argument.
835
- """
836
- # Validate argument types.
837
- _Validators._validate_function_arguments(self.__arg_info_matrix)
838
-
839
- # Getters
840
- def get_data_type(self):
841
- """
842
- DESCRIPTION:
843
- Function to get the datatype of the argument.
844
- """
845
- return self.__datatype
846
-
847
- def is_output_table(self):
848
- """
849
- DESCRIPTION:
850
- Function to check if argument represents output table or not.
851
- """
852
- return self.__is_output_table
853
-
854
- def get_r_order_number(self):
855
- """
856
- DESCRIPTION:
857
- Function to get the order number of the argument.
858
- """
859
- return self.__r_order_num
860
-
861
- def allows_lists(self):
862
- """
863
- DESCRIPTION:
864
- Function to check if argument accepts lists or not.
865
- """
866
- return self.__allows_lists
867
-
868
- def get_output_schema(self):
869
- """
870
- DESCRIPTION:
871
- Function to get the output schema of the argument.
872
- """
873
- return self.__output_schema
874
-
875
- def get_alternate_sql_name(self):
876
- """
877
- DESCRIPTION:
878
- Function to get the alternate SQL name of the argument.
879
- """
880
- return self.__alternate_sql_name
881
-
882
-
883
- class _AnlyFuncArgument(_AnlyFuncArgumentBase):
884
- """
885
- Class to hold the information about analytic function argument.
886
- """
887
-
888
- def __init__(self,
889
- sql_name,
890
- is_required,
891
- sql_description,
892
- lang_description,
893
- lang_name,
894
- use_in_r,
895
- r_order_num,
896
- datatype,
897
- default_value=None,
898
- permitted_values=None,
899
- lower_bound=None,
900
- lower_bound_type=None,
901
- upper_bound=None,
902
- upper_bound_type=None,
903
- allow_nan=False,
904
- required_length=0,
905
- match_length_of_argument=None,
906
- allows_lists=False,
907
- allow_padding=False,
908
- r_formula_usage=False,
909
- r_default_value=None,
910
- target_table=None,
911
- target_table_lang_name=None,
912
- check_duplicate=False,
913
- allowed_types=None,
914
- allowed_type_groups=None,
915
- is_output_column=False,
916
- alternate_sql_name=None):
917
- """
918
- Constructor for generating an object of Analytic Function Argument from
919
- JSON for other arguments.
920
-
921
- PARAMETERS:
922
- sql_name:
923
- Required Argument.
924
- Specifies the name of the argument in SQL.
925
- Types: str
926
-
927
- is_required:
928
- Required Argument.
929
- Specifies whether the argument is required or not.
930
- Types: bool
931
-
932
- sql_description:
933
- Required Argument.
934
- Specifies the description of argument in SQL.
935
- Types: str
936
-
937
- lang_description:
938
- Required Argument.
939
- Specifies the description of the argument, which needs to be exposed
940
- to user.
941
- Types: str
942
-
943
- lang_name:
944
- Required Argument.
945
- Specifies the name of the argument to be exposed to user.
946
- Types: str
947
-
948
- use_in_r:
949
- Required Argument.
950
- Specifies whether argument should be used in client or not.
951
- Types: bool
952
-
953
- r_order_num:
954
- Required Argument.
955
- Specifies the ordering sequence of the argument.
956
- Types: integer
957
-
958
- datatype:
959
- Required Argument.
960
- Specifies the datatype for argument.
961
- Types: str OR list of str
962
-
963
- default_value:
964
- Optional Argument.
965
- Specifies the default value for argument.
966
- Types: str OR int OR float OR bool
967
-
968
- permitted_values:
969
- Optional Argument.
970
- Specified the permitted values for argument.
971
- Types: list OR str OR float OR int
972
-
973
- lower_bound:
974
- Optional Argument.
975
- Specifies the lower bound value for argument.
976
- Types: int OR float
977
-
978
- lower_bound_type:
979
- Optional Argument.
980
- Specifies whether "lower_bound" is inclusive or exclusive.
981
- Permitted Values: INCLUSIVE, EXCLUSIVE
982
- Types: str
983
-
984
- upper_bound:
985
- Optional Argument.
986
- Specifies the upper bound value for argument.
987
- Types: int OR float
988
-
989
- upper_bound_type:
990
- Optional Argument.
991
- Specifies whether "upper_bound" is inclusive or exclusive.
992
- Permitted Values: INCLUSIVE, EXCLUSIVE
993
- Types: str
994
-
995
- allow_nan:
996
- Optional Argument.
997
- Specifies whether argument accepts None or not.
998
- Default Value: False
999
- Types: bool
1000
-
1001
- allows_lists:
1002
- Optional Argument.
1003
- Specifies whether argument accepts a list of values or not.
1004
- Default Value: False
1005
- Types: bool
1006
-
1007
- match_length_of_argument:
1008
- Optional Argument.
1009
- Specifies whether length of "allow_lists" should be checked or not.
1010
- Default Value: False
1011
- Types: bool
1012
-
1013
- required_length:
1014
- Optional Argument.
1015
- Specifies if the list must be the same length as the list specified
1016
- in argument clause.
1017
- Default Value: 0
1018
- Types: int
1019
-
1020
- allow_padding:
1021
- Optional Argument.
1022
- Specifies whether to add padding to argument or not. When set to True,
1023
- user submitted value will be padded into a list equal to the required
1024
- length.
1025
- Default Value: False
1026
- Types: bool
1027
-
1028
- r_formula_usage:
1029
- Optional Argument.
1030
- Specifies whether argument is part of formula.
1031
- Default Value: False
1032
- Types: bool
1033
-
1034
- r_default_value:
1035
- Optional Argument.
1036
- Specifies the default value of the argument.
1037
- Types: str OR int OR float
1038
-
1039
- target_table:
1040
- Optional Argument.
1041
- Specifies the name of the input table that the input column
1042
- should be found in (Only applicable for datatype COLUMNS or COLUMN_NAMES)
1043
- Types: str OR list of str
1044
-
1045
- target_table_lang_name:
1046
- Optional Argument.
1047
- Specifies the lang name of the input table that the input column
1048
- should be found in (Only applicable for datatype COLUMNS or COLUMN_NAMES)
1049
- Types: str
1050
-
1051
- check_duplicate:
1052
- Optional Argument.
1053
- Specifies whether duplicate columns should be checked in input
1054
- or not (Only applicable for datatype COLUMNS or COLUMN_NAMES).
1055
- Default Value: False
1056
- Types: bool
1057
-
1058
- allowed_types:
1059
- Optional Argument.
1060
- Specifies SQL types that are allowed (Only applicable for datatype
1061
- COLUMNS or COLUMN_NAMES).
1062
- Types: str OR list of str
1063
-
1064
- allowed_type_groups:
1065
- Optional Argument.
1066
- Species the group of SQL types that are allowed.
1067
- * NUMERIC for all numeric types.
1068
- * STRING for all char/varchar types.
1069
- * GROUPTYPE for any type except double or float.
1070
- Types: list of str
1071
-
1072
- is_output_column:
1073
- Optional Argument.
1074
- Specifies whether argument is output column or not.
1075
- Default Value: False
1076
- Types: bool
1077
-
1078
- alternate_sql_name:
1079
- Optional Argument.
1080
- Specifies alternate names for the argument.
1081
- Types: str or list of str
1082
- """
1083
-
1084
- # Call super class constructor to initialize basic parameters.
1085
- super().__init__(sql_name, is_required, sql_description, lang_description, lang_name, use_in_r)
1086
-
1087
- # Initialize rest of the parameters for the Arguments class.
1088
- self.__default_value = default_value
1089
- self.__permitted_values = permitted_values
1090
- self.__lower_bound = lower_bound
1091
- self.__lower_bound_type = lower_bound_type
1092
- self.__upper_bound = upper_bound
1093
- self.__upper_bound_type = upper_bound_type
1094
- self.__allow_nan = allow_nan
1095
- self.__required_length = required_length
1096
- self.__match_length_of_argument = match_length_of_argument
1097
- self.__datatype = datatype
1098
- self.__allows_lists = allows_lists
1099
- self.__allow_padding = allow_padding
1100
- self.__r_formula_usage = r_formula_usage
1101
- self.__r_default_value = r_default_value
1102
- self.__target_table = target_table
1103
- self.__target_table_lang_name = target_table_lang_name
1104
- self.__check_duplicate = check_duplicate
1105
- self.__allowed_types = allowed_types
1106
- self.__allowed_type_groups = allowed_type_groups
1107
- self.__r_order_num = r_order_num
1108
- self.__is_output_column = is_output_column
1109
- self.__alternate_sql_name = alternate_sql_name
1110
-
1111
- awu_matrix = []
1112
- awu_matrix.append(["r_order_num", r_order_num, False, int])
1113
- awu_matrix.append(["datatype", datatype, False, (list, str), True])
1114
- awu_matrix.append(["default_value", default_value, True, (int, str, bool, float)])
1115
- awu_matrix.append(["permitted_values", permitted_values, True, (list, str, int, float)])
1116
- awu_matrix.append(["lower_bound", lower_bound, True, (int, float)])
1117
- awu_matrix.append(["lower_bound_type", lower_bound_type, True, str, True, ["INCLUSIVE", "EXCLUSIVE"]])
1118
- awu_matrix.append(["upper_bound", upper_bound, True, (int, float)])
1119
- awu_matrix.append(["upper_bound_type", upper_bound_type, True, str, True, ["INCLUSIVE", "EXCLUSIVE"]])
1120
- awu_matrix.append(["allow_nan", allow_nan, True, bool])
1121
- awu_matrix.append(["allows_lists", allows_lists, True, bool])
1122
- awu_matrix.append(["match_length_of_argument", match_length_of_argument, True, bool])
1123
- awu_matrix.append(["required_length", required_length, True, int])
1124
- awu_matrix.append(["allow_padding", allow_padding, True, bool])
1125
- awu_matrix.append(["r_formula_usage", r_formula_usage, True, bool])
1126
- awu_matrix.append(["r_default_value", r_default_value, True, (int, float, str)])
1127
- awu_matrix.append(["target_table", target_table, True, (list, str)])
1128
- awu_matrix.append(["target_table_lang_name", target_table_lang_name, True, str])
1129
- awu_matrix.append(["check_duplicate", check_duplicate, True, bool])
1130
- awu_matrix.append(["allowed_types", allowed_types, True, (list, str)])
1131
- awu_matrix.append(["allowed_type_groups", allowed_type_groups, True, (list, str)])
1132
- awu_matrix.append(["is_output_column", is_output_column, True, bool])
1133
- awu_matrix.append(["alternate_sql_name", alternate_sql_name, True, (list, str)])
1134
-
1135
- # Validate argument types.
1136
- _Validators._validate_function_arguments(awu_matrix)
1137
-
1138
- # Validate lower bound is greater than upper bound.
1139
- # _validate_argument_range validates whether lower bound is less than upper bound
1140
- # or not if argument is None.
1141
- _Validators._validate_argument_range(
1142
- arg_name="dummy", arg=None, lbound=self.__lower_bound, ubound=self.__upper_bound)
1143
-
1144
- # Getters.
1145
- self.get_r_order_number = lambda: self.__r_order_num
1146
- self.get_data_type = lambda: self.__datatype
1147
- self.get_default_value = lambda: self.__default_value
1148
- self.get_permitted_values = lambda: self.__permitted_values
1149
- self.get_lower_bound = lambda: self.__lower_bound
1150
- self.get_lower_bound_type = lambda: self.__lower_bound_type
1151
- self.get_upper_bound = lambda: self.__upper_bound
1152
- self.get_upper_bound_type = lambda: self.__upper_bound_type
1153
- self.is_nan_allowed = lambda: self.__allow_nan
1154
- self.get_required_length = lambda: self.__required_length
1155
- self.get_match_length_of_argument = lambda: self.__match_length_of_argument
1156
- self.is_lists_allowed = lambda: self.__allows_lists
1157
- self.is_padding_required = lambda: self.__allow_padding
1158
- self.is_argument_a_formula = lambda: self.__r_formula_usage
1159
- self.get_r_default_value = lambda: self.__r_default_value
1160
- self.get_target_table = lambda: self.__target_table
1161
- self.get_target_table_lang_name = lambda: self.__target_table_lang_name
1162
- self.check_duplicate = lambda: self.__check_duplicate
1163
- self.get_allowed_types = lambda: self.__allowed_types
1164
- self.get_allowed_type_groups = lambda: self.__allowed_type_groups
1165
- self.is_output_column = lambda: self.__is_output_column
1166
- self.get_alternate_sql_name = lambda: self.__alternate_sql_name
1167
- self.is_empty_value_allowed = lambda: not self.is_column_argument()
1168
-
1169
- def get_python_type(self):
1170
- """
1171
- DESCRIPTION:
1172
- Get equivalent Python type for the JSON datatype for an argument.
1173
-
1174
- PARAMETERS:
1175
- None
1176
-
1177
- RETURNS:
1178
- type.
1179
-
1180
- RAISES:
1181
- None
1182
-
1183
- EXAMPLES:
1184
- self.get_python_type(arg1="string", arg2="db", arg3=2)
1185
- """
1186
- py_types = tuple()
1187
-
1188
- # If multiple datatype's allowed, return the tuple of all allowed python types.
1189
- if isinstance(self.__datatype, list):
1190
- for td_type in self.__datatype:
1191
- py_type = _Dtypes._anly_json_type_to_python_type(td_type)
1192
-
1193
- # If py_type is not a tuple, convert to a tuple.
1194
- py_types = py_types + ((py_type, ) if not isinstance(py_type, tuple) else py_type)
1195
- else:
1196
- py_type = _Dtypes._anly_json_type_to_python_type(self.__datatype)
1197
- py_types = py_type if isinstance(py_type, tuple) else (py_type, )
1198
-
1199
- # If lists are allowed, add list type also.
1200
- if self.__allows_lists and (list not in py_types):
1201
- py_types = py_types + (list, )
1202
-
1203
- return py_types
1204
-
1205
- def is_column_argument(self):
1206
- """
1207
- DESCRIPTION:
1208
- Function checks if the argument accepts column as input or not.
1209
-
1210
- PARAMETERS:
1211
- None
1212
-
1213
- RETURNS:
1214
- bool
1215
-
1216
- RAISES:
1217
- None
1218
-
1219
- EXAMPLES:
1220
- self.is_column_argument()
1221
- """
1222
- # __datatype can be either string or list.
1223
- if isinstance(self.__datatype, list):
1224
- datatype = (datatype.lower() for datatype in self.__datatype)
1225
- else:
1226
- datatype = self.__datatype.lower()
1227
- return "column" in datatype
1228
-
1229
-
1230
- class _AnlyFuncArgumentBaseUAF(object):
1231
- """ Class to hold the basic/common information about all the arguments."""
1232
- def __init__(self, data_type, description, lang_name, is_required=False):
1233
- """
1234
- DESCRIPTION:
1235
- Constructor for the class.
1236
-
1237
- PARAMETERS:
1238
- data_type:
1239
- Required Argument.
1240
- Specifies the data type an argument can accept.
1241
- Type: str
1242
-
1243
- description:
1244
- Required Argument.
1245
- Specifies the argument description.
1246
- Type: str or List
1247
-
1248
- lang_name:
1249
- Required Argument.
1250
- Specifies the name of the argument to be exposed to user.
1251
- Type: str
1252
-
1253
- is_required:
1254
- Optional Argument.
1255
- Specifies whether the argument is required or not.
1256
- Default Value: False
1257
- Types: bool
1258
-
1259
- """
1260
- self.__data_type = data_type
1261
- self.__description = description
1262
- self.__lang_name = lang_name
1263
- self.__is_required = is_required
1264
-
1265
- # Getters
1266
- self.get_data_type = lambda: self.__data_type
1267
- self.get_description = lambda: self.__description
1268
- self.get_lang_name = lambda: self.__lang_name
1269
- self.is_required = lambda: self.__is_required
1270
- self.is_empty_value_allowed = lambda: True
1271
- self.is_output_column = lambda: False
1272
- self.get_r_default_value = lambda: None
1273
-
1274
- # Validation
1275
- self.__arg_info_matrix = []
1276
- self.__arg_info_matrix.append(["type", self.__data_type, False, (list, str), True])
1277
- self.__arg_info_matrix.append(["description", self.__description, False, (list, str)])
1278
- self.__arg_info_matrix.append(["lang_name", self.__lang_name, False, str])
1279
- self.__arg_info_matrix.append(["optional", self.__is_required, True, bool])
1280
-
1281
- _Validators._validate_function_arguments(self.__arg_info_matrix)
1282
- self.is_empty_value_allowed = lambda: True
1283
- self.is_output_column = lambda: False
1284
- self.get_permitted_values = lambda: None
1285
-
1286
- # Combining list to string.
1287
- self.__description = ''.join(description)
1288
-
1289
- def is_column_argument(self):
1290
- """
1291
- DESCRIPTION:
1292
- Function checks if the argument accepts column as input or not.
1293
-
1294
- PARAMETERS:
1295
- None
1296
-
1297
- RETURNS:
1298
- bool
1299
-
1300
- RAISES:
1301
- None
1302
-
1303
- EXAMPLES:
1304
- self.is_column_argument()
1305
- """
1306
- # __datatype can be either string or list.
1307
- if isinstance(self.__data_type, list):
1308
- datatype = (datatype.lower() for datatype in self.__data_type)
1309
- else:
1310
- datatype = self.__data_type.lower()
1311
- return "column" in datatype
1312
-
1313
- def get_python_type(self):
1314
- """
1315
- DESCRIPTION:
1316
- Get equivalent Python type for the JSON datatype for an argument.
1317
-
1318
- PARAMETERS:
1319
- None
1320
-
1321
- RETURNS:
1322
- type.
1323
-
1324
- RAISES:
1325
- None
1326
-
1327
- EXAMPLES:
1328
- self.get_python_type(arg1="string", arg2="db", arg3=2)
1329
- """
1330
- py_types = tuple()
1331
- supp_data_types = UtilFuncs._as_list(self.__data_type)
1332
- # If multiple datatype's allowed, return the tuple of all allowed Python types.
1333
- for td_type in supp_data_types:
1334
- py_type = _Dtypes._anly_json_type_to_python_type(td_type)
1335
-
1336
- # If py_type is not a tuple, convert to a tuple.
1337
- py_types = py_types + ((py_type,) if not isinstance(py_type, tuple) else py_type)
1338
-
1339
- # If lists are allowed, add list type also.
1340
- if self.is_lists_allowed() and (list not in py_types):
1341
- py_types = py_types + (list,)
1342
- return py_types
1343
-
1344
- def set_is_required(self, value):
1345
- """
1346
- DESCRIPTION:
1347
- Setter function to set if argument is required or not.
1348
-
1349
- RETURNS:
1350
- None
1351
-
1352
- RAISES:
1353
- None
1354
-
1355
- EXAMPLES:
1356
- self.set_is_required(True)
1357
- """
1358
- self.__is_required = value
1359
-
1360
-
1361
- class _AnlyFuncInputUAF(_AnlyFuncArgumentBaseUAF):
1362
- """ Class to hold the information about input argument of UAF."""
1363
- def __init__(self, data_type, description, lang_name, is_required=False):
1364
- """
1365
- DESCRIPTION:
1366
- Constructor for the class.
1367
-
1368
- PARAMETERS:
1369
- data_type:
1370
- Required Argument.
1371
- Specifies the data type an input argument can accept.
1372
- Type: str
1373
-
1374
- description:
1375
- Required Argument.
1376
- Specifies the input argument description.
1377
- Type: Str or List
1378
-
1379
- lang_name:
1380
- Required Argument.
1381
- Specifies the name of the argument to be exposed to user.
1382
- Type: str
1383
-
1384
- is_required:
1385
- Optional Argument.
1386
- Specifies whether the argument is required or not.
1387
- Default Value: False
1388
- Type: bool
1389
- """
1390
-
1391
- # Call Abstract class constructor
1392
- super().__init__(data_type, description, lang_name, is_required)
1393
- self.get_default_value = lambda: None
1394
- self.is_lists_allowed = lambda: False
1395
-
1396
-
1397
- class _AnlyFuncOutputUAF(_AnlyFuncArgumentBaseUAF):
1398
- """ Class to hold the information about output argument of UAF."""
1399
- def __init__(self, data_type, description, lang_name, layer_name,
1400
- primary_layer=False, result_table_column_types=None, is_required=False):
1401
- """
1402
- DESCRIPTION:
1403
- Constructor for the class.
1404
-
1405
- PARAMETERS:
1406
- description:
1407
- Required Argument.
1408
- Specifies the output argument description.
1409
- Type: str or List
1410
-
1411
- data_type:
1412
- Required Argument.
1413
- Specifies data type an output argument can accept.
1414
- Type: str
1415
-
1416
- lang_name:
1417
- Required Argument.
1418
- Specifies the name of the argument to be exposed to user.
1419
- Type: str
1420
-
1421
- primary_layer:
1422
- Optional Argument.
1423
- Specifies whether the layer is primary or not.
1424
- Default Value: False
1425
- Type: bool
1426
-
1427
- layer_name:
1428
- Required Argument.
1429
- Specifies the name of the output layer.
1430
- Type:str
1431
-
1432
- result_table_column_types:
1433
- Optional Argument
1434
- Specifies the column types for the result table.
1435
- Type: List or str
1436
-
1437
- is_required:
1438
- Optional Argument.
1439
- Specifies whether the argument is required or not.
1440
- Default Value: False
1441
- Type: bool
1442
- """
1443
-
1444
- # Call Abstract class constructor
1445
- super().__init__(data_type, description, lang_name, is_required)
1446
- # Process other parameters of output table argument.
1447
- self.__result_table_column_types = result_table_column_types
1448
- self.__primary_layer = primary_layer
1449
- self.__layer_name = layer_name
1450
-
1451
- # Getters
1452
- self.get_result_table_column_types = lambda: self.__result_table_column_types
1453
- self.get_primary_layer = lambda : self.__primary_layer
1454
- self.get_layer_name = lambda : self.__layer_name
1455
-
1456
- # Validation
1457
- self.__arg_info_matrix = []
1458
- self.__arg_info_matrix.append(["result_table_column_types", self.__result_table_column_types, True, (list, str)])
1459
- self.__arg_info_matrix.append(["primary_layer", self.__primary_layer, True, bool])
1460
- self.__arg_info_matrix.append(["layer_name", self.__layer_name, False, str])
1461
- _Validators._validate_function_arguments(self.__arg_info_matrix)
1462
-
1463
-
1464
- class _AnlyFuncArgumentUAF(_AnlyFuncArgumentBaseUAF):
1465
- """Class to hold the information about the other function parameters."""
1466
-
1467
- def __init__(self, data_type, description, name, is_required=False, permitted_values=None,
1468
- lower_bound=None, upper_bound=None, lower_bound_type=None, upper_bound_type=None,
1469
- check_duplicates=False, list_type=None, allow_nan=None, lang_name=None,
1470
- default_value=None, required_length=0, nested_param_list=None,
1471
- is_nested=False, parent=None, has_nested=False):
1472
- """
1473
- DESCRIPTION:
1474
- Constructor for the class.
1475
-
1476
- PARAMETERS:
1477
- description:
1478
- Required Argument.
1479
- Specifies the argument description.
1480
- Type: str or List
1481
-
1482
- name:
1483
- Required Argument.
1484
- Specifies the SQL name of the argument.
1485
- Type: str
1486
-
1487
- data_type:
1488
- Required Argument.
1489
- Specifies the data type for the argument.
1490
- Type: str
1491
-
1492
- is_required:
1493
- Optional Argument.
1494
- Specifies whether the argument is required or not.
1495
- Default Value: False
1496
- Types: bool
1497
-
1498
- permitted_values:
1499
- Optional Argument.
1500
- Specifies the permitted values for the particular argument.
1501
- Type: List
1502
-
1503
- lower_bound:
1504
- Optional Argument.
1505
- Specifies the lower bound for the particular argument.
1506
- Type: int or float
1507
-
1508
- upper_bound:
1509
- Optional Argument.
1510
- Specifies the upper bound for the particular argument.
1511
- Type: int or float
1512
-
1513
- lower_bound_type:
1514
- Optional Argument.
1515
- Specifies whether the lower bound is inclusive or not.
1516
- Type: str
1517
-
1518
- upper_bound_type:
1519
- Optional Argument.
1520
- Specifies whether the upper bound is inclusive or not.
1521
- Type: str
1522
-
1523
- check_duplicates:
1524
- Optional Argument
1525
- Specifies if the argument checks for duplicate values.
1526
- Type: bool
1527
-
1528
- list_type:
1529
- Optional Argument.
1530
- Specifies the type of the list in the argument.
1531
- Type: str
1532
-
1533
- allow_nan:
1534
- Required Argument.
1535
- Specifies whether nan values are allowed or not.
1536
- Type: bool
1537
-
1538
- is_required:
1539
- Optional Argument.
1540
- Specifies whether the argument is required or not .
1541
- Type: bool
1542
-
1543
- lang_name:
1544
- Optional Argument.
1545
- Specifies the name of the argument to be exposed to user.
1546
- Type: str
1547
-
1548
- default_value:
1549
- Optional Argument.
1550
- Specifies the default value of the particular argument.
1551
- Type: int or str or float
1552
-
1553
- required_length:
1554
- Optional Argument.
1555
- Specifies if the list must be the same length as the list specified
1556
- in argument clause.
1557
- Types: int
1558
-
1559
- nested_params_json:
1560
- Optional Argument.
1561
- Specifies the json object for nested_params argument.
1562
- Type: List
1563
-
1564
- is_nested:
1565
- Optional Argument.
1566
- Specifies whether the argument is a nested argument or not.
1567
- Default Value: False
1568
- Type: bool
1569
-
1570
- parent:
1571
- Optional Argument.
1572
- Specifies the name of the parent incase of nested argument.
1573
- Default Value: None
1574
- Type: str or None
1575
-
1576
- has_nested:
1577
- Optional Argument.
1578
- Specifies whether the argument has nested_params or not.
1579
- Default Value:False
1580
- Type: bool
1581
-
1582
- """
1583
- # Call Abstract class constructor
1584
- super().__init__(data_type, description, lang_name, is_required)
1585
-
1586
- # Process other parameters of arguments.
1587
- self.__name = name
1588
- self.__data_type = self.get_data_type()
1589
- self.__permitted_values = permitted_values
1590
- self.__default_value = default_value
1591
- self.__r_default_value = None
1592
- self.__allow_nan = allow_nan
1593
- self.__lower_bound = lower_bound
1594
- self.__upper_bound = upper_bound
1595
- self.__lower_bound_type = lower_bound_type
1596
- self.__upper_bound_type = upper_bound_type
1597
- self.__check_duplicates = check_duplicates
1598
- self.__required_length = required_length
1599
- self.__parent = parent
1600
- self.__is_nested = is_nested
1601
- self.__has_nested = has_nested
1602
- self.__allows_lists = False
1603
- self.__match_length_of_arguments = False
1604
-
1605
- # Creating a list for nested params
1606
- self.__nested_param_list = nested_param_list
1607
-
1608
- # Getters
1609
- self.get_name = lambda: self.__name
1610
- self.get_data_type = lambda: self.__data_type
1611
- self.get_permitted_values = lambda: self.__permitted_values
1612
- self.get_default_value = lambda: self.__default_value
1613
- self.get_r_default_value = lambda: self.__r_default_value
1614
- self.is_nan_allowed = lambda: self.__allow_nan
1615
- self.get_parent = lambda: self.__parent
1616
- self.get_lower_bound = lambda: self.__lower_bound
1617
- self.get_upper_bound = lambda: self.__upper_bound
1618
- self.get_lower_bound_type = lambda: self.__lower_bound_type
1619
- self.get_upper_bound_type = lambda: self.__upper_bound_type
1620
- self.get_check_duplicates = lambda: self.__check_duplicates
1621
- self.get_required_length = lambda: self.__required_length
1622
- self.get_nested_param_list = lambda: self.__nested_param_list
1623
- self.get_is_nested = lambda: self.__is_nested
1624
- self.get_has_nested = lambda: self.__has_nested
1625
- self.is_lists_allowed = lambda: self.__allows_lists
1626
- self.get_match_length_of_arguments = lambda: self.__match_length_of_arguments
1627
-
1628
- # In order to make it similar to variables of SQLE functions if the data_type is list
1629
- # we are setting allows_list=True and data_type to the data_type of the list elements.
1630
- if self.get_data_type() == "list":
1631
- self.__allows_lists = True
1632
- self.__data_type = list_type
1633
-
1634
- # Validation
1635
- self.__arg_info_matrix = []
1636
- self.__arg_info_matrix.append(["name", self.__name, True, str])
1637
- self.__arg_info_matrix.append(["permitted_values", self.__permitted_values, True, list])
1638
- self.__arg_info_matrix.append(["default_value", self.__default_value, True, (int, str, float, bool, list)])
1639
- self.__arg_info_matrix.append(["r_default_value", self.__r_default_value, True, (int, str, float, bool, list)])
1640
- self.__arg_info_matrix.append(["allow_nan", self.__allow_nan, True, bool])
1641
- self.__arg_info_matrix.append(["lower_bound", self.__lower_bound, True, (int, float)])
1642
- self.__arg_info_matrix.append(["upper_bound", self.__upper_bound, True, (int, float)])
1643
- self.__arg_info_matrix.append(["lower_bound_type", self.__lower_bound_type, True, str])
1644
- self.__arg_info_matrix.append(["upper_bound_type", self.__upper_bound_type, True, str])
1645
- self.__arg_info_matrix.append(["check_duplicates", self.__check_duplicates, True, bool])
1646
- self.__arg_info_matrix.append(["list_size", self.__required_length, True, (int, str)])
1647
-
1648
- _Validators._validate_function_arguments(self.__arg_info_matrix)
1649
-
1650
- # Validate whether lower bound is less than upper bound.
1651
- _Validators._validate_argument_range(arg_name="dummy", arg=None, lbound=self.__lower_bound,
1652
- ubound=self.__upper_bound)
1653
- # Validate whether lower_bound and lower_bound_type are mutually inclusive.
1654
- _Validators._validate_mutually_inclusive_arguments(lower_bound, "lower_bound", lower_bound_type, "lower_bound_type")
1655
- # Validate whether upper_bound and upper_bound_type are mutually inclusive.
1656
- _Validators._validate_mutually_inclusive_arguments(upper_bound, "upper_bound", upper_bound_type, "upper_bound_type")
1657
-
1658
- # In order to make it similar to variables of SQLE functions, if get_required_length specifies
1659
- # a value we set match_length_of_arguments which will validate the length of the arguments
1660
- if not isinstance(self.__required_length, str) and self.get_required_length() > 0:
1661
- self.__match_length_of_arguments = True
1662
-
1663
- # If the argument is an int type and permitted values are 0 and 1, then we should consider it as boolean.
1664
- if "INTEGER" in self.__data_type.upper() and self.__permitted_values is not None\
1665
- and set(self.__permitted_values) == {0, 1}:
1666
- self.__data_type = "BOOLEAN"
1667
- self.__permitted_values = None
1668
- self.set_is_required(False)
1669
- if self.__default_value is not None:
1670
- self.__default_value = bool(self.__default_value)
1671
- else:
1672
- self.__r_default_value = False
1673
-
1674
- def get_python_type(self):
1675
- """
1676
- DESCRIPTION:
1677
- Get equivalent Python type for the JSON datatype for an argument.
1678
-
1679
- PARAMETERS:
1680
- None
1681
-
1682
- RETURNS:
1683
- type.
1684
-
1685
- RAISES:
1686
- None
1687
-
1688
- EXAMPLES:
1689
- self.get_python_type(arg1="string", arg2="db", arg3=2)
1690
- """
1691
- py_types = tuple()
1692
-
1693
- # If multiple datatype's allowed, return the tuple of all allowed python types.
1694
- if isinstance(self.__data_type, list):
1695
- for td_type in self.__data_type:
1696
- py_type = _Dtypes._anly_json_type_to_python_type(td_type)
1697
-
1698
- # If py_type is not a tuple, convert to a tuple.
1699
- py_types = py_types + ((py_type,) if not isinstance(py_type, tuple) else py_type)
1700
- else:
1701
- py_type = _Dtypes._anly_json_type_to_python_type(self.__data_type)
1702
- py_types = py_type if isinstance(py_type, tuple) else (py_type,)
1703
-
1704
- # If lists are allowed, add list type also.
1705
- if self.__allows_lists and (list not in py_types):
1706
- py_types = py_types + (list,)
1707
-
1
+ """
2
+ Unpublished work.
3
+ Copyright (c) 2021 by Teradata Corporation. All rights reserved.
4
+ TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
5
+
6
+ Primary Owner: pradeep.garre@teradata.com
7
+ Secondary Owner: PankajVinod.Purandare@teradata.com
8
+
9
+ This file implements several classes for representing the input, output and other
10
+ arguments of analytic functions. These are used by IN-DB SQLE analytic framework
11
+ for parsing and storing the JSON details of each argument of each function.
12
+ File implements classes for following:
13
+ * Analytic Function Argument Base
14
+ * Analytic Function Input Argument
15
+ * Analytic Function Output Argument
16
+ * Analytic Function Other Argument
17
+ """
18
+ from teradataml.analytics.json_parser import PartitionKind
19
+ from teradataml.utils.dtypes import _Dtypes
20
+ from teradataml.utils.validators import _Validators
21
+ from teradataml.common.messages import Messages, MessageCodes
22
+ from teradataml.common.exceptions import TeradataMlException
23
+ from teradataml.common.utils import UtilFuncs
24
+ from teradataml.analytics.json_parser import UAFJsonFields as SJF
25
+ from teradataml.dataframe.dataframe import TDSeries, TDMatrix, TDAnalyticResult, TDGenSeries
26
+
27
+
28
+ class _DependentArgument:
29
+ """
30
+ Class to hold the information about dependent argument.
31
+ """
32
+ def __init__(self, sql_name, type, operator, right_operand):
33
+ """
34
+ DESCRIPTION:
35
+ Constructor for the class.
36
+
37
+ PARAMETERS:
38
+ sql_name:
39
+ Required Argument.
40
+ Specifies the name of the dependent argument in SQL.
41
+ Types: str
42
+
43
+ type:
44
+ Required Argument.
45
+ Specifies the type of the dependent argument. Dependent argument
46
+ type can be input_tables or arguments or output_tables.
47
+ Types: str
48
+
49
+ operator:
50
+ Required Argument.
51
+ Specifies the comparision operators for dependent argument.
52
+ Types: str
53
+
54
+ right_operand:
55
+ Required Argument.
56
+ Specifies the value to be used for comparing the dependent argument
57
+ using 'operator'.
58
+ Types: str
59
+ """
60
+ self.sql_name = sql_name
61
+ self.operator = operator
62
+ self.right_operand = right_operand
63
+ self.type = type
64
+
65
+ def is_required(self, arg_value):
66
+ """
67
+ DESCRIPTION:
68
+ Check if argument is required or not based on the value of dependent argument.
69
+
70
+ PARAMETERS:
71
+ arg_value:
72
+ Required Argument.
73
+ Specifies the value of dependent argument passed by the user.
74
+ Types: str or int or bool or float or list
75
+
76
+ RETURNS:
77
+ bool
78
+
79
+ RAISES:
80
+ None
81
+
82
+ EXAMPLES:
83
+ _DependentArgument("MethodType", "arguments", "=", "EQUAL-WIDTH").is_required("EQUAL-WIDTH")
84
+ """
85
+ if self.operator == "=":
86
+ return arg_value == self.right_operand
87
+ elif self.operator == ">=":
88
+ return arg_value >= self.right_operand
89
+ elif self.operator == ">":
90
+ return arg_value > self.right_operand
91
+ elif self.operator == "<=":
92
+ return arg_value <= self.right_operand
93
+ elif self.operator == "<":
94
+ return arg_value < self.right_operand
95
+ elif self.operator == "IN":
96
+ return arg_value in self.right_operand
97
+ elif self.operator == "NOT IN":
98
+ return arg_value not in self.right_operand
99
+ else:
100
+ msg_code = MessageCodes.EXECUTION_FAILED
101
+ raise TeradataMlException(
102
+ Messages.get_message(msg_code,
103
+ "parse the dependent argument '{}'".format(self.sql_name),
104
+ "Operator '{}' is not implemented".format(self.operator)),
105
+ msg_code)
106
+
107
+
108
+ class _AnlyFuncArgumentBase(object):
109
+ """
110
+ Class to hold the basic/common information about all the arguments.
111
+ """
112
+ def __init__(self, sql_name, is_required, sql_description, lang_description, lang_name, use_in_r):
113
+ """
114
+ DESCRIPTION:
115
+ Constructor for the class.
116
+
117
+ PARAMETERS:
118
+ sql_name:
119
+ Required Argument.
120
+ Specifies the name of the argument in SQL.
121
+ Types: str
122
+
123
+ is_required:
124
+ Required Argument.
125
+ Specifies whether the argument is required or not.
126
+ Types: bool
127
+
128
+ sql_description:
129
+ Required Argument.
130
+ Specifies the description of argument in SQL.
131
+ Types: str
132
+
133
+ lang_description:
134
+ Required Argument.
135
+ Specifies the description of the argument, which needs to be exposed
136
+ to user.
137
+ Types: str
138
+
139
+ lang_name:
140
+ Required Argument.
141
+ Specifies the name of the argument to be exposed to user.
142
+ Types: str
143
+
144
+ use_in_r:
145
+ Required Argument.
146
+ Specifies whether argument should be used in client or not.
147
+ Types: bool
148
+ """
149
+ self.__sql_name = sql_name
150
+ self.__is_required = is_required
151
+ self.__sql_description = sql_description
152
+ self.__description = lang_description
153
+ self.__name = lang_name
154
+ self.__use_in_r = use_in_r
155
+
156
+ awu_matrix = []
157
+ awu_matrix.append(["sql_name", sql_name, False, (str,), True])
158
+ awu_matrix.append(["is_required", is_required, False, (bool,)])
159
+ awu_matrix.append(["sql_description", sql_description, False, (str,), True])
160
+ awu_matrix.append(["lang_description", lang_description, False, (str,), True])
161
+ awu_matrix.append(["lang_name", lang_name, False, (str,), True])
162
+ awu_matrix.append(["use_in_r", use_in_r, False, (bool,)])
163
+
164
+ # Validate argument types.
165
+ _Validators._validate_function_arguments(awu_matrix)
166
+ self.is_empty_value_allowed = lambda: True
167
+ self.is_output_column = lambda: False
168
+ self.get_r_default_value = lambda: None
169
+
170
+ # Getters
171
+ def get_sql_name(self):
172
+ """
173
+ DESCRIPTION:
174
+ Get SQL name of the argument.
175
+
176
+ RETURNS:
177
+ str
178
+
179
+ RAISES:
180
+ None
181
+
182
+ EXAMPLES:
183
+ # Get the argument name used in SQL Query.
184
+ from teradataml.analytics.json_parser.argument import _AnlyFuncArgumentBase
185
+ argument_base = _AnlyFuncArgumentBase("sql_name", True, "SQL Description", "Python Description", "name", True)
186
+ argument_base.get_sql_name()
187
+ """
188
+ return self.__sql_name
189
+
190
+ def is_required(self):
191
+ """
192
+ DESCRIPTION:
193
+ Check if argument is required or not.
194
+
195
+ RETURNS:
196
+ bool
197
+
198
+ RAISES:
199
+ None
200
+
201
+ EXAMPLES:
202
+ # Check whether the argument is a mandatory or not for Analytic function.
203
+ from teradataml.analytics.json_parser.argument import _AnlyFuncArgumentBase
204
+ argument_base = _AnlyFuncArgumentBase("sql_name", True, "SQL Description", "Python Description", "name", True)
205
+ if argument_base.is_required():
206
+ print("Required")
207
+ """
208
+ return self.__is_required
209
+
210
+ def get_sql_description(self):
211
+ """
212
+ DESCRIPTION:
213
+ Get SQL description of the argument.
214
+
215
+ RETURNS:
216
+ str
217
+
218
+ RAISES:
219
+ None
220
+
221
+ EXAMPLES:
222
+ # Get the description of the argument with respect to SQL.
223
+ from teradataml.analytics.json_parser.argument import _AnlyFuncArgumentBase
224
+ argument_base = _AnlyFuncArgumentBase("sql_name", True, "SQL Description", "Python Description", "name", True)
225
+ argument_base.get_sql_description()
226
+ """
227
+ return self.__sql_description
228
+
229
+ def get_lang_description(self):
230
+ """
231
+ DESCRIPTION:
232
+ Get client specific description name of the argument.
233
+
234
+ RETURNS:
235
+ str
236
+
237
+ RAISES:
238
+ None
239
+
240
+ EXAMPLES:
241
+ # Get the description of the argument with respect to Python.
242
+ from teradataml.analytics.json_parser.argument import _AnlyFuncArgumentBase
243
+ argument_base = _AnlyFuncArgumentBase("sql_name", True, "SQL Description", "Python Description", "name", True)
244
+ argument_base.get_lang_description()
245
+ """
246
+ return self.__description
247
+
248
+ def get_lang_name(self):
249
+ """
250
+ DESCRIPTION:
251
+ Get client specific name of the argument.
252
+
253
+ RETURNS:
254
+ str
255
+
256
+ RAISES:
257
+ None
258
+
259
+ EXAMPLES:
260
+ # Get the argument name, which is exposed to user.
261
+ from teradataml.analytics.json_parser.argument import _AnlyFuncArgumentBase
262
+ argument_base = _AnlyFuncArgumentBase("sql_name", True, "SQL Description", "Python Description", "name", True)
263
+ argument_base.get_lang_name()
264
+ """
265
+ return self.__name
266
+
267
+ def use_in_r(self):
268
+ """
269
+ DESCRIPTION:
270
+ Check if argument should be used in client function or not.
271
+
272
+ RETURNS:
273
+ str
274
+
275
+ RAISES:
276
+ None
277
+
278
+ EXAMPLES:
279
+ # Check whether argument is used in R or not.
280
+ from teradataml.analytics.json_parser.argument import _AnlyFuncArgumentBase
281
+ argument_base = _AnlyFuncArgumentBase("sql_name", True, "SQL Description", "Python Description", "name", True)
282
+ if argument_base.use_in_r():
283
+ print("Yes")
284
+ """
285
+ return self.__use_in_r
286
+
287
+
288
+ class _AnlyFuncInput(_AnlyFuncArgumentBase):
289
+ """
290
+ Class to hold the information about input argument.
291
+ """
292
+
293
+ def __init__(self,
294
+ sql_name,
295
+ is_required,
296
+ sql_description,
297
+ lang_description,
298
+ lang_name,
299
+ use_in_r,
300
+ r_order_num,
301
+ datatype="TABLE_NAME",
302
+ required_input_kind=None,
303
+ partition_by_one=False,
304
+ partition_by_one_inclusive=False,
305
+ is_ordered=False,
306
+ is_local_ordered=False,
307
+ hash_by_key=False,
308
+ allows_lists=False,
309
+ r_formula_usage=False,
310
+ alternate_sql_name=None):
311
+ """
312
+ Constructor for generating an object of Analytic Function Argument from
313
+ JSON for arguments accepting input table.
314
+
315
+ PARAMETERS:
316
+ sql_name:
317
+ Required Argument.
318
+ Specifies the name of the argument in SQL.
319
+ Types: str
320
+
321
+ is_required:
322
+ Required Argument.
323
+ Specifies whether the argument is required or not.
324
+ Types: bool
325
+
326
+ sql_description:
327
+ Required Argument.
328
+ Specifies the description of argument in SQL.
329
+ Types: str
330
+
331
+ lang_description:
332
+ Required Argument.
333
+ Specifies the description of the argument, which needs to be exposed
334
+ to user.
335
+ Types: str
336
+
337
+ lang_name:
338
+ Required Argument.
339
+ Specifies the name of the argument to be exposed to user.
340
+ Types: str
341
+
342
+ use_in_r:
343
+ Required Argument.
344
+ Specifies whether argument should be used in client or not.
345
+ Types: bool
346
+
347
+ r_order_num:
348
+ Required Argument.
349
+ Specifies the ordering sequence of the argument for R function call.
350
+ Types: integer
351
+
352
+ datatype:
353
+ Optional Argument.
354
+ Specifies the datatype for output table.
355
+ Permitted Values: table_name, table_alias
356
+ Default Value: table_name
357
+ Types: str
358
+
359
+ required_input_kind:
360
+ Optional Argument.
361
+ Specifies the kind of input.
362
+ Permitted Values: partition_by_key, partition_by_any, or dimension
363
+ Default Value: None
364
+ Types: str or list of str
365
+
366
+ partition_by_one:
367
+ Optional Argument.
368
+ Specifies that for partition_by_key input kind, the key should be
369
+ "Partition by 1". If this argument is set to true and
370
+ "partition_by_one_inclusive" is set to False, the function only accepts
371
+ "Partition by 1" but not "Partition by key".
372
+ Default Value: False
373
+ Types: bool
374
+
375
+ partition_by_one_inclusive:
376
+ Optional Argument.
377
+ Specifies that for partition_by_key input kind, the function accepts both
378
+ "Partition by 1" and "Partition by key". This argument can be set to True
379
+ only if "required_input_kind" has partition_by_key, partition_by_any.
380
+ Default Value: False
381
+ Types: bool
382
+
383
+ is_ordered:
384
+ Optional Argument.
385
+ Specifies that the table must be input with an "Order by" clause.
386
+ Default Value: False
387
+ Types: bool
388
+
389
+ is_local_ordered:
390
+ Optional Argument.
391
+ Specifies whether the table supports LOCAL ORDER BY clause or not.
392
+ Default Value: False
393
+ Types: bool
394
+
395
+ hash_by_key:
396
+ Optional Argument.
397
+ Specifies whether data is grouped according to the HASH BY clause.
398
+ Default Value: False
399
+ Types: bool
400
+
401
+ allow_lists:
402
+ Optional Argument.
403
+ Specifies whether the argument accepts list of values. If false, the
404
+ argument can only accept a single value.
405
+ Default Value: False
406
+ Types: bool
407
+
408
+ r_formula_usage:
409
+ Optional Argument.
410
+ Specifies if the argument contains a formula.
411
+ Default Value: False
412
+ Types: bool
413
+
414
+ alternate_sql_name:
415
+ Optional Argument.
416
+ Specifies alternate names for the argument.
417
+ Default Value: None
418
+ Types: str or list of str
419
+ """
420
+
421
+ # Call Abstract class constructor
422
+ super().__init__(sql_name, is_required, sql_description, lang_description,
423
+ lang_name,
424
+ use_in_r)
425
+
426
+ # Process other parameters of input table argument.
427
+ self.__required_input_kind = required_input_kind
428
+ self.__partition_by_one = partition_by_one
429
+ self.__partition_by_one_inclusive = partition_by_one_inclusive
430
+ self.__is_ordered = is_ordered
431
+ self.__is_local_ordered = is_local_ordered
432
+ self.__hash_by_key = hash_by_key
433
+ self.__datatype = datatype
434
+ self.__allows_lists = allows_lists
435
+ self.__r_formula_usage = r_formula_usage
436
+ self.__r_order_num = r_order_num
437
+ self.__alternate_sql_name = alternate_sql_name
438
+
439
+ # Create argument information matrix to do parameter checking
440
+ self.__arg_info_matrix = []
441
+ required_input_kind_permitted_values = ["PartitionByKey", "PartitionByAny", "Dimension"]
442
+ self.__arg_info_matrix.append(
443
+ ["required_input_kind", self.__required_input_kind, True, (list, str), True,
444
+ required_input_kind_permitted_values])
445
+ self.__arg_info_matrix.append(
446
+ ["partition_by_one", self.__partition_by_one, True, (bool)])
447
+ self.__arg_info_matrix.append(
448
+ ["partition_by_one_inclusive", self.__partition_by_one_inclusive, True, (bool)])
449
+ self.__arg_info_matrix.append(["is_ordered", self.__is_ordered, True, (bool)])
450
+ self.__arg_info_matrix.append(["is_local_ordered", self.__is_local_ordered, True, (bool)])
451
+ self.__arg_info_matrix.append(["hash_by_key", self.__hash_by_key, True, (bool)])
452
+ self.__arg_info_matrix.append(
453
+ ["datatype", self.__datatype, False, (str), True, ["table_name", "table_alias"]])
454
+ self.__arg_info_matrix.append(["r_order_num", self.__r_order_num, False, (int), True])
455
+ self.__arg_info_matrix.append(["allows_lists", self.__allows_lists, True, (bool)])
456
+ self.__arg_info_matrix.append(["alternate_sql_name", self.__alternate_sql_name, True, (list, str)])
457
+ self.__arg_info_matrix.append(["r_formula_usage", self.__r_formula_usage, True, (bool)])
458
+ # Perform the function validations
459
+ self.__validate()
460
+ self.get_default_value = lambda: None
461
+ self.get_permitted_values = lambda: None
462
+ self._only_partition_by_one = lambda: \
463
+ self.__partition_by_one and not self.__partition_by_one_inclusive
464
+
465
+ def __validate(self):
466
+ """
467
+ DESCRIPTION:
468
+ Function to validate arguments, which verifies missing arguments,
469
+ input argument.
470
+ """
471
+ # Validate argument types.
472
+ _Validators._validate_function_arguments(self.__arg_info_matrix)
473
+
474
+ # Getters.
475
+ def get_required_input_kind(self):
476
+ """
477
+ DESCRIPTION:
478
+ Function to get the required_input_kind argument.
479
+ """
480
+ return self.__required_input_kind
481
+
482
+ def get_python_type(self):
483
+ """
484
+ DESCRIPTION:
485
+ Function to get the python type of argument.
486
+ """
487
+ from teradataml.dataframe.dataframe import DataFrame
488
+ return DataFrame
489
+
490
+ def is_reference_function_acceptable(self):
491
+ """
492
+ DESCRIPTION:
493
+ Function to check if argument accepts reference function name or not.
494
+ """
495
+ return self.get_lang_name().lower() in ("object", "modeldata")
496
+
497
+ def is_partition_by_one(self):
498
+ """
499
+ DESCRIPTION:
500
+ Function to check whether partition_by_one is True or False.
501
+ """
502
+ return self.__partition_by_one
503
+
504
+ def is_partition_by_one_inclusive(self):
505
+ """
506
+ DESCRIPTION:
507
+ Function to check whether partition_by_one_inclusive is True or False.
508
+ """
509
+ return self.__partition_by_one_inclusive
510
+
511
+ def is_ordered(self):
512
+ """
513
+ DESCRIPTION:
514
+ Function to check whether input table has an order by clause.
515
+ """
516
+ return self.__is_ordered
517
+
518
+ def is_local_ordered(self):
519
+ """
520
+ DESCRIPTION:
521
+ Check whether input supports LOCAL ORDER BY clause or not.
522
+ """
523
+ return self.__is_local_ordered
524
+
525
+ def hash_by_key(self):
526
+ """
527
+ DESCRIPTION:
528
+ Check whether input supports HASH BY KEY clause or not.
529
+ """
530
+ return self.__hash_by_key
531
+
532
+ def get_data_type(self):
533
+ """
534
+ DESCRIPTION:
535
+ Function to get the datatype of the argument.
536
+ """
537
+ return self.__datatype
538
+
539
+ def allows_lists(self):
540
+ """
541
+ DESCRIPTION:
542
+ Function to check if argument accepts lists or not.
543
+ """
544
+ return self.__allows_lists
545
+
546
+ def get_r_formula_usage(self):
547
+ """
548
+ DESCRIPTION:
549
+ Function to check if argument is part of a formula or not.
550
+ """
551
+ return self.__r_formula_usage
552
+
553
+ def get_r_order_number(self):
554
+ """
555
+ DESCRIPTION:
556
+ Function to get the order number of the argument.
557
+ """
558
+ return self.__r_order_num
559
+
560
+ def get_alternate_sql_name(self):
561
+ """
562
+ DESCRIPTION:
563
+ Function to get the alternate SQL name of the argument.
564
+ """
565
+ return self.__alternate_sql_name
566
+
567
+ def _get_partition_column_required_kind(self):
568
+ """
569
+ DESCRIPTION:
570
+ Function to determine if the input table is partitioned by a column or ANY or 1
571
+ or data distribution is DIMENSION. This function follows below steps and derives
572
+ partition column kind.
573
+ * The input_table is partitioned by a key, if requireInputKind == PartitionByKey
574
+ and partitionByOne == False.
575
+ * The input_table is partitioned by 1/key, if requireInputKind == PartitionByKey,
576
+ partitionByOneInclusive == True and partitionByOne == True.
577
+ * The input_table is partitioned by 1 only, if partitionByOneInclusive == False
578
+ and partitionByOne=true.
579
+ * The input_table is partitioned by ANY/key, if requireInputKind == PartitionByKey
580
+ and requireInputKind == PartitionByAny.
581
+ * The input_table is partitioned by ANY only, if requireInputKind == PartitionByAny.
582
+ * The input_table is distributed by either DIMENSION or partitioned by key, if
583
+ requireInputKind == PartitionByKey and requireInputKind == DIMENSION.
584
+ * The input_table is distributed by either DIMENSION or partitioned by ANY/key, if
585
+ requireInputKind == PartitionByKey and requireInputKind == PartitionByAny and
586
+ requireInputKind == DIMENSION.
587
+
588
+ RAISES:
589
+ None
590
+
591
+ RETURNS:
592
+ enum of type teradataml.analytics.json_parser.PartitionKind
593
+
594
+ EXAMPLES:
595
+ self._get_partition_column_required_kind()
596
+ """
597
+ is_partition_by_key, is_partition_by_any, is_partition_by_one, is_dimension = [False]*4
598
+
599
+ # Input table is partitioned by 1 ONLY when partitionByOneInclusive is false and
600
+ # partitionByOne is true.
601
+ if self.__partition_by_one and not self.__partition_by_one_inclusive:
602
+ is_partition_by_one = True
603
+ else:
604
+ for input_kind in self.__required_input_kind:
605
+ if input_kind == "Dimension":
606
+ is_dimension = True
607
+ # If requiredInputKind has PartitionByKey and partitionByOneInclusive and
608
+ # partitionByOne is True then input table is partitioned by 1 or Key.
609
+ # Else input table is partitioned by Key Only.
610
+ elif input_kind == "PartitionByKey":
611
+ if self.__partition_by_one_inclusive and self.__partition_by_one:
612
+ is_partition_by_one = True
613
+ is_partition_by_key = True
614
+ else:
615
+ is_partition_by_key = True
616
+ elif input_kind == "PartitionByAny":
617
+ is_partition_by_any = True
618
+
619
+ if is_dimension:
620
+ if is_partition_by_key and is_partition_by_any:
621
+ return PartitionKind.DIMENSIONKEYANY
622
+ elif is_partition_by_key and not is_partition_by_any:
623
+ return PartitionKind.DIMENSIONKEY
624
+ else:
625
+ return PartitionKind.DIMENSION
626
+ else:
627
+ if is_partition_by_key and not is_partition_by_any and not is_partition_by_one:
628
+ return PartitionKind.KEY
629
+ elif is_partition_by_key and is_partition_by_any:
630
+ return PartitionKind.ANY
631
+ elif not is_partition_by_key and is_partition_by_any:
632
+ return PartitionKind.ANYONLY
633
+ elif is_partition_by_one and is_partition_by_key:
634
+ return PartitionKind.ONE
635
+ elif is_partition_by_one and is_partition_by_key:
636
+ return PartitionKind.ONEONLY
637
+
638
+ def _get_default_partition_column_kind(self):
639
+ """ Returns the default Parition Type based on requiredInputKind parameter in json file. """
640
+ required_column_kind = UtilFuncs._as_list(self.__required_input_kind)[0]
641
+
642
+ if required_column_kind == "PartitionByAny":
643
+ return PartitionKind.ANY
644
+ elif required_column_kind == "Dimension":
645
+ return PartitionKind.DIMENSION
646
+ elif required_column_kind == "PartitionByOne":
647
+ return PartitionKind.ONE
648
+ else:
649
+ return None
650
+
651
+ '''
652
+ @staticmethod
653
+ def _get_default_partition_by_value(partition_kind):
654
+ """
655
+ DESCRIPTION:
656
+ Function to get the default value for partition column kind.
657
+
658
+ PARAMETERS:
659
+ partition_kind:
660
+ Required Argument.
661
+ Specifies input table partition type.
662
+
663
+ RAISES:
664
+ None
665
+
666
+ RETURNS:
667
+ str OR int
668
+
669
+ EXAMPLES:
670
+ self._get_default_partition_by_value(PartitionKind.KEY)
671
+ """
672
+ if partition_kind == PartitionKind.KEY or partition_kind == PartitionKind.DIMENSIONKEY:
673
+ return None
674
+ elif partition_kind == PartitionKind.ONE or partition_kind == PartitionKind.ONEONLY:
675
+ return 1
676
+ elif partition_kind == PartitionKind.ANY or partition_kind == PartitionKind.ANYONLY or \
677
+ partition_kind == PartitionKind.DIMENSIONKEYANY:
678
+ return "ANY"
679
+ '''
680
+
681
+ def _only_partition_by_any(self):
682
+ """
683
+ DESCRIPTION:
684
+ Check partition column supports only Partition By Any.
685
+
686
+ RAISES:
687
+ None
688
+
689
+ RETURNS:
690
+ bool
691
+
692
+ EXAMPLES:
693
+ self._only_partition_by_any()
694
+ """
695
+ if isinstance(self.__required_input_kind, str):
696
+ return self.__required_input_kind == "PartitionByAny"
697
+ return self.__required_input_kind == ["PartitionByAny"]
698
+
699
+
700
+ class _AnlyFuncOutput(_AnlyFuncArgumentBase):
701
+ """
702
+ Class to hold the information about output argument.
703
+ """
704
+
705
+ def __init__(self,
706
+ sql_name,
707
+ is_required,
708
+ sql_description,
709
+ lang_description,
710
+ lang_name,
711
+ use_in_r,
712
+ r_order_num,
713
+ datatype="TABLE_NAME",
714
+ is_output_table=True,
715
+ allows_lists=False,
716
+ output_schema=None,
717
+ alternate_sql_name=None,
718
+ support_volatility=False,
719
+ is_required_dependent_argument=None):
720
+ """
721
+ Constructor for generating an object of Analytic Function Argument from
722
+ JSON for arguments accepting output table information.
723
+
724
+ PARAMETERS:
725
+ sql_name:
726
+ Required Argument.
727
+ Specifies the name of the argument in SQL.
728
+ Types: str
729
+
730
+ is_required:
731
+ Required Argument.
732
+ Specifies whether the argument is required or not.
733
+ Types: bool
734
+
735
+ sql_description:
736
+ Required Argument.
737
+ Specifies the description of argument in SQL.
738
+ Types: str
739
+
740
+ lang_description:
741
+ Required Argument.
742
+ Specifies the description of the argument, which needs to be exposed
743
+ to user.
744
+ Types: str
745
+
746
+ lang_name:
747
+ Required Argument.
748
+ Specifies the name of the argument to be exposed to user.
749
+ Types: str
750
+
751
+ use_in_r:
752
+ Required Argument.
753
+ Specifies whether argument should be used in client or not.
754
+ Types: bool
755
+
756
+ r_order_num:
757
+ Required Argument.
758
+ Specifies the ordering sequence of the argument for R function call.
759
+ Types: integer
760
+
761
+ datatype:
762
+ Optional Argument.
763
+ Specifies the datatype for output table.
764
+ Permitted Values: table_name, table_alias
765
+ Default Value: table_name
766
+ Types: str
767
+
768
+ is_output_table:
769
+ Optional Argument.
770
+ Specifies whether the argument clause has an output table name.
771
+ Default Value: True
772
+ Types: bool
773
+
774
+ allow_lists:
775
+ Optional Argument.
776
+ Specifies whether the argument accepts list of values. If false, the
777
+ argument can only accept a single value.
778
+ Default Value: False
779
+ Types: bool
780
+
781
+ output_schema:
782
+ Optional Argument.
783
+ Specifies the output schema of the function.
784
+ Default Value: None
785
+ Types: str
786
+
787
+ alternate_sql_name:
788
+ Optional Argument.
789
+ Specifies alternate names for the argument.
790
+ Default Value: None
791
+ Types: str or list of str
792
+
793
+ support_volatility:
794
+ Optional Argument.
795
+ Specifies whether the output table support VOLATILE table or not.
796
+ Default Value: False
797
+ Types: bool
798
+ """
799
+
800
+ # Call super class constructor to initialize basic parameters.
801
+ super().__init__(sql_name, is_required, sql_description, lang_description,
802
+ lang_name,
803
+ use_in_r)
804
+
805
+ self.__r_order_num = r_order_num
806
+ self.__allows_lists = allows_lists
807
+ self.__output_schema = output_schema
808
+ self.__alternate_sql_name = alternate_sql_name
809
+ self.__is_output_table = is_output_table
810
+ self.__datatype = datatype
811
+ self.__support_volatility = support_volatility
812
+ # Create argument information matrix to do parameter checking
813
+ self.__arg_info_matrix = []
814
+ self.__arg_info_matrix.append(["r_order_num", self.__r_order_num, False, int, True])
815
+ self.__arg_info_matrix.append(["allows_lists", self.__allows_lists, True, bool])
816
+ self.__arg_info_matrix.append(["output_schema", self.__output_schema, True, str, True])
817
+ self.__arg_info_matrix.append(["alternate_sql_name", self.__alternate_sql_name, True, (list, str)])
818
+ self.__arg_info_matrix.append(["is_output_table", self.__is_output_table, True, bool])
819
+ self.__arg_info_matrix.append(
820
+ ["datatype", self.__datatype, True, str, True, ["table_name", "table_alias"]])
821
+ self.__arg_info_matrix.append(["support_volatility", self.__support_volatility, True, bool])
822
+ self.__arg_info_matrix.append(
823
+ ["is_required_dependent_argument", is_required_dependent_argument, True, _DependentArgument])
824
+
825
+ # Perform the function validations
826
+ self.__validate()
827
+ self.is_volatility_supported = lambda : self.__support_volatility
828
+ self.get_is_required_dependent_argument = lambda : is_required_dependent_argument
829
+
830
+ def __validate(self):
831
+ """
832
+ DESCRIPTION:
833
+ Function to validate arguments, which verifies missing arguments,
834
+ input argument.
835
+ """
836
+ # Validate argument types.
837
+ _Validators._validate_function_arguments(self.__arg_info_matrix)
838
+
839
+ # Getters
840
+ def get_data_type(self):
841
+ """
842
+ DESCRIPTION:
843
+ Function to get the datatype of the argument.
844
+ """
845
+ return self.__datatype
846
+
847
+ def is_output_table(self):
848
+ """
849
+ DESCRIPTION:
850
+ Function to check if argument represents output table or not.
851
+ """
852
+ return self.__is_output_table
853
+
854
+ def get_r_order_number(self):
855
+ """
856
+ DESCRIPTION:
857
+ Function to get the order number of the argument.
858
+ """
859
+ return self.__r_order_num
860
+
861
+ def allows_lists(self):
862
+ """
863
+ DESCRIPTION:
864
+ Function to check if argument accepts lists or not.
865
+ """
866
+ return self.__allows_lists
867
+
868
+ def get_output_schema(self):
869
+ """
870
+ DESCRIPTION:
871
+ Function to get the output schema of the argument.
872
+ """
873
+ return self.__output_schema
874
+
875
+ def get_alternate_sql_name(self):
876
+ """
877
+ DESCRIPTION:
878
+ Function to get the alternate SQL name of the argument.
879
+ """
880
+ return self.__alternate_sql_name
881
+
882
+
883
+ class _AnlyFuncArgument(_AnlyFuncArgumentBase):
884
+ """
885
+ Class to hold the information about analytic function argument.
886
+ """
887
+
888
+ def __init__(self,
889
+ sql_name,
890
+ is_required,
891
+ sql_description,
892
+ lang_description,
893
+ lang_name,
894
+ use_in_r,
895
+ r_order_num,
896
+ datatype,
897
+ default_value=None,
898
+ permitted_values=None,
899
+ lower_bound=None,
900
+ lower_bound_type=None,
901
+ upper_bound=None,
902
+ upper_bound_type=None,
903
+ allow_nan=False,
904
+ required_length=0,
905
+ match_length_of_argument=None,
906
+ allows_lists=False,
907
+ allow_padding=False,
908
+ r_formula_usage=False,
909
+ r_default_value=None,
910
+ target_table=None,
911
+ target_table_lang_name=None,
912
+ check_duplicate=False,
913
+ allowed_types=None,
914
+ allowed_type_groups=None,
915
+ is_output_column=False,
916
+ alternate_sql_name=None):
917
+ """
918
+ Constructor for generating an object of Analytic Function Argument from
919
+ JSON for other arguments.
920
+
921
+ PARAMETERS:
922
+ sql_name:
923
+ Required Argument.
924
+ Specifies the name of the argument in SQL.
925
+ Types: str
926
+
927
+ is_required:
928
+ Required Argument.
929
+ Specifies whether the argument is required or not.
930
+ Types: bool
931
+
932
+ sql_description:
933
+ Required Argument.
934
+ Specifies the description of argument in SQL.
935
+ Types: str
936
+
937
+ lang_description:
938
+ Required Argument.
939
+ Specifies the description of the argument, which needs to be exposed
940
+ to user.
941
+ Types: str
942
+
943
+ lang_name:
944
+ Required Argument.
945
+ Specifies the name of the argument to be exposed to user.
946
+ Types: str
947
+
948
+ use_in_r:
949
+ Required Argument.
950
+ Specifies whether argument should be used in client or not.
951
+ Types: bool
952
+
953
+ r_order_num:
954
+ Required Argument.
955
+ Specifies the ordering sequence of the argument.
956
+ Types: integer
957
+
958
+ datatype:
959
+ Required Argument.
960
+ Specifies the datatype for argument.
961
+ Types: str OR list of str
962
+
963
+ default_value:
964
+ Optional Argument.
965
+ Specifies the default value for argument.
966
+ Types: str OR int OR float OR bool
967
+
968
+ permitted_values:
969
+ Optional Argument.
970
+ Specified the permitted values for argument.
971
+ Types: list OR str OR float OR int
972
+
973
+ lower_bound:
974
+ Optional Argument.
975
+ Specifies the lower bound value for argument.
976
+ Types: int OR float
977
+
978
+ lower_bound_type:
979
+ Optional Argument.
980
+ Specifies whether "lower_bound" is inclusive or exclusive.
981
+ Permitted Values: INCLUSIVE, EXCLUSIVE
982
+ Types: str
983
+
984
+ upper_bound:
985
+ Optional Argument.
986
+ Specifies the upper bound value for argument.
987
+ Types: int OR float
988
+
989
+ upper_bound_type:
990
+ Optional Argument.
991
+ Specifies whether "upper_bound" is inclusive or exclusive.
992
+ Permitted Values: INCLUSIVE, EXCLUSIVE
993
+ Types: str
994
+
995
+ allow_nan:
996
+ Optional Argument.
997
+ Specifies whether argument accepts None or not.
998
+ Default Value: False
999
+ Types: bool
1000
+
1001
+ allows_lists:
1002
+ Optional Argument.
1003
+ Specifies whether argument accepts a list of values or not.
1004
+ Default Value: False
1005
+ Types: bool
1006
+
1007
+ match_length_of_argument:
1008
+ Optional Argument.
1009
+ Specifies whether length of "allow_lists" should be checked or not.
1010
+ Default Value: False
1011
+ Types: bool
1012
+
1013
+ required_length:
1014
+ Optional Argument.
1015
+ Specifies if the list must be the same length as the list specified
1016
+ in argument clause.
1017
+ Default Value: 0
1018
+ Types: int
1019
+
1020
+ allow_padding:
1021
+ Optional Argument.
1022
+ Specifies whether to add padding to argument or not. When set to True,
1023
+ user submitted value will be padded into a list equal to the required
1024
+ length.
1025
+ Default Value: False
1026
+ Types: bool
1027
+
1028
+ r_formula_usage:
1029
+ Optional Argument.
1030
+ Specifies whether argument is part of formula.
1031
+ Default Value: False
1032
+ Types: bool
1033
+
1034
+ r_default_value:
1035
+ Optional Argument.
1036
+ Specifies the default value of the argument.
1037
+ Types: str OR int OR float
1038
+
1039
+ target_table:
1040
+ Optional Argument.
1041
+ Specifies the name of the input table that the input column
1042
+ should be found in (Only applicable for datatype COLUMNS or COLUMN_NAMES)
1043
+ Types: str OR list of str
1044
+
1045
+ target_table_lang_name:
1046
+ Optional Argument.
1047
+ Specifies the lang name of the input table that the input column
1048
+ should be found in (Only applicable for datatype COLUMNS or COLUMN_NAMES)
1049
+ Types: str
1050
+
1051
+ check_duplicate:
1052
+ Optional Argument.
1053
+ Specifies whether duplicate columns should be checked in input
1054
+ or not (Only applicable for datatype COLUMNS or COLUMN_NAMES).
1055
+ Default Value: False
1056
+ Types: bool
1057
+
1058
+ allowed_types:
1059
+ Optional Argument.
1060
+ Specifies SQL types that are allowed (Only applicable for datatype
1061
+ COLUMNS or COLUMN_NAMES).
1062
+ Types: str OR list of str
1063
+
1064
+ allowed_type_groups:
1065
+ Optional Argument.
1066
+ Species the group of SQL types that are allowed.
1067
+ * NUMERIC for all numeric types.
1068
+ * STRING for all char/varchar types.
1069
+ * GROUPTYPE for any type except double or float.
1070
+ Types: list of str
1071
+
1072
+ is_output_column:
1073
+ Optional Argument.
1074
+ Specifies whether argument is output column or not.
1075
+ Default Value: False
1076
+ Types: bool
1077
+
1078
+ alternate_sql_name:
1079
+ Optional Argument.
1080
+ Specifies alternate names for the argument.
1081
+ Types: str or list of str
1082
+ """
1083
+
1084
+ # Call super class constructor to initialize basic parameters.
1085
+ super().__init__(sql_name, is_required, sql_description, lang_description, lang_name, use_in_r)
1086
+
1087
+ # Initialize rest of the parameters for the Arguments class.
1088
+ self.__default_value = default_value
1089
+ self.__permitted_values = permitted_values
1090
+ self.__lower_bound = lower_bound
1091
+ self.__lower_bound_type = lower_bound_type
1092
+ self.__upper_bound = upper_bound
1093
+ self.__upper_bound_type = upper_bound_type
1094
+ self.__allow_nan = allow_nan
1095
+ self.__required_length = required_length
1096
+ self.__match_length_of_argument = match_length_of_argument
1097
+ self.__datatype = datatype
1098
+ self.__allows_lists = allows_lists
1099
+ self.__allow_padding = allow_padding
1100
+ self.__r_formula_usage = r_formula_usage
1101
+ self.__r_default_value = r_default_value
1102
+ self.__target_table = target_table
1103
+ self.__target_table_lang_name = target_table_lang_name
1104
+ self.__check_duplicate = check_duplicate
1105
+ self.__allowed_types = allowed_types
1106
+ self.__allowed_type_groups = allowed_type_groups
1107
+ self.__r_order_num = r_order_num
1108
+ self.__is_output_column = is_output_column
1109
+ self.__alternate_sql_name = alternate_sql_name
1110
+
1111
+ awu_matrix = []
1112
+ awu_matrix.append(["r_order_num", r_order_num, False, int])
1113
+ awu_matrix.append(["datatype", datatype, False, (list, str), True])
1114
+ awu_matrix.append(["default_value", default_value, True, (int, str, bool, float)])
1115
+ awu_matrix.append(["permitted_values", permitted_values, True, (list, str, int, float)])
1116
+ awu_matrix.append(["lower_bound", lower_bound, True, (int, float)])
1117
+ awu_matrix.append(["lower_bound_type", lower_bound_type, True, str, True, ["INCLUSIVE", "EXCLUSIVE"]])
1118
+ awu_matrix.append(["upper_bound", upper_bound, True, (int, float)])
1119
+ awu_matrix.append(["upper_bound_type", upper_bound_type, True, str, True, ["INCLUSIVE", "EXCLUSIVE"]])
1120
+ awu_matrix.append(["allow_nan", allow_nan, True, bool])
1121
+ awu_matrix.append(["allows_lists", allows_lists, True, bool])
1122
+ awu_matrix.append(["match_length_of_argument", match_length_of_argument, True, bool])
1123
+ awu_matrix.append(["required_length", required_length, True, int])
1124
+ awu_matrix.append(["allow_padding", allow_padding, True, bool])
1125
+ awu_matrix.append(["r_formula_usage", r_formula_usage, True, bool])
1126
+ awu_matrix.append(["r_default_value", r_default_value, True, (int, float, str)])
1127
+ awu_matrix.append(["target_table", target_table, True, (list, str)])
1128
+ awu_matrix.append(["target_table_lang_name", target_table_lang_name, True, str])
1129
+ awu_matrix.append(["check_duplicate", check_duplicate, True, bool])
1130
+ awu_matrix.append(["allowed_types", allowed_types, True, (list, str)])
1131
+ awu_matrix.append(["allowed_type_groups", allowed_type_groups, True, (list, str)])
1132
+ awu_matrix.append(["is_output_column", is_output_column, True, bool])
1133
+ awu_matrix.append(["alternate_sql_name", alternate_sql_name, True, (list, str)])
1134
+
1135
+ # Validate argument types.
1136
+ _Validators._validate_function_arguments(awu_matrix)
1137
+
1138
+ # Validate lower bound is greater than upper bound.
1139
+ # _validate_argument_range validates whether lower bound is less than upper bound
1140
+ # or not if argument is None.
1141
+ _Validators._validate_argument_range(
1142
+ arg_name="dummy", arg=None, lbound=self.__lower_bound, ubound=self.__upper_bound)
1143
+
1144
+ # Getters.
1145
+ self.get_r_order_number = lambda: self.__r_order_num
1146
+ self.get_data_type = lambda: self.__datatype
1147
+ self.get_default_value = lambda: self.__default_value
1148
+ self.get_permitted_values = lambda: self.__permitted_values
1149
+ self.get_lower_bound = lambda: self.__lower_bound
1150
+ self.get_lower_bound_type = lambda: self.__lower_bound_type
1151
+ self.get_upper_bound = lambda: self.__upper_bound
1152
+ self.get_upper_bound_type = lambda: self.__upper_bound_type
1153
+ self.is_nan_allowed = lambda: self.__allow_nan
1154
+ self.get_required_length = lambda: self.__required_length
1155
+ self.get_match_length_of_argument = lambda: self.__match_length_of_argument
1156
+ self.is_lists_allowed = lambda: self.__allows_lists
1157
+ self.is_padding_required = lambda: self.__allow_padding
1158
+ self.is_argument_a_formula = lambda: self.__r_formula_usage
1159
+ self.get_r_default_value = lambda: self.__r_default_value
1160
+ self.get_target_table = lambda: self.__target_table
1161
+ self.get_target_table_lang_name = lambda: self.__target_table_lang_name
1162
+ self.check_duplicate = lambda: self.__check_duplicate
1163
+ self.get_allowed_types = lambda: self.__allowed_types
1164
+ self.get_allowed_type_groups = lambda: self.__allowed_type_groups
1165
+ self.is_output_column = lambda: self.__is_output_column
1166
+ self.get_alternate_sql_name = lambda: self.__alternate_sql_name
1167
+ self.is_empty_value_allowed = lambda: not self.is_column_argument()
1168
+
1169
+ def get_python_type(self):
1170
+ """
1171
+ DESCRIPTION:
1172
+ Get equivalent Python type for the JSON datatype for an argument.
1173
+
1174
+ PARAMETERS:
1175
+ None
1176
+
1177
+ RETURNS:
1178
+ type.
1179
+
1180
+ RAISES:
1181
+ None
1182
+
1183
+ EXAMPLES:
1184
+ self.get_python_type(arg1="string", arg2="db", arg3=2)
1185
+ """
1186
+ py_types = tuple()
1187
+
1188
+ # If multiple datatype's allowed, return the tuple of all allowed python types.
1189
+ if isinstance(self.__datatype, list):
1190
+ for td_type in self.__datatype:
1191
+ py_type = _Dtypes._anly_json_type_to_python_type(td_type)
1192
+
1193
+ # If py_type is not a tuple, convert to a tuple.
1194
+ py_types = py_types + ((py_type, ) if not isinstance(py_type, tuple) else py_type)
1195
+ else:
1196
+ py_type = _Dtypes._anly_json_type_to_python_type(self.__datatype)
1197
+ py_types = py_type if isinstance(py_type, tuple) else (py_type, )
1198
+
1199
+ # If lists are allowed, add list type also.
1200
+ if self.__allows_lists and (list not in py_types):
1201
+ py_types = py_types + (list, )
1202
+
1203
+ return py_types
1204
+
1205
+ def is_column_argument(self):
1206
+ """
1207
+ DESCRIPTION:
1208
+ Function checks if the argument accepts column as input or not.
1209
+
1210
+ PARAMETERS:
1211
+ None
1212
+
1213
+ RETURNS:
1214
+ bool
1215
+
1216
+ RAISES:
1217
+ None
1218
+
1219
+ EXAMPLES:
1220
+ self.is_column_argument()
1221
+ """
1222
+ # __datatype can be either string or list.
1223
+ if isinstance(self.__datatype, list):
1224
+ datatype = (datatype.lower() for datatype in self.__datatype)
1225
+ else:
1226
+ datatype = self.__datatype.lower()
1227
+ return "column" in datatype
1228
+
1229
+
1230
+ class _AnlyFuncArgumentBaseUAF(object):
1231
+ """ Class to hold the basic/common information about all the arguments."""
1232
+ def __init__(self, data_type, description, lang_name, is_required=False):
1233
+ """
1234
+ DESCRIPTION:
1235
+ Constructor for the class.
1236
+
1237
+ PARAMETERS:
1238
+ data_type:
1239
+ Required Argument.
1240
+ Specifies the data type an argument can accept.
1241
+ Type: str
1242
+
1243
+ description:
1244
+ Required Argument.
1245
+ Specifies the argument description.
1246
+ Type: str or List
1247
+
1248
+ lang_name:
1249
+ Required Argument.
1250
+ Specifies the name of the argument to be exposed to user.
1251
+ Type: str
1252
+
1253
+ is_required:
1254
+ Optional Argument.
1255
+ Specifies whether the argument is required or not.
1256
+ Default Value: False
1257
+ Types: bool
1258
+
1259
+ """
1260
+ self.__data_type = data_type
1261
+ self.__description = description
1262
+ self.__lang_name = lang_name
1263
+ self.__is_required = is_required
1264
+
1265
+ # Getters
1266
+ self.get_data_type = lambda: self.__data_type
1267
+ self.get_description = lambda: self.__description
1268
+ self.get_lang_name = lambda: self.__lang_name
1269
+ self.is_required = lambda: self.__is_required
1270
+ self.is_empty_value_allowed = lambda: True
1271
+ self.is_output_column = lambda: False
1272
+ self.get_r_default_value = lambda: None
1273
+
1274
+ # Validation
1275
+ self.__arg_info_matrix = []
1276
+ self.__arg_info_matrix.append(["type", self.__data_type, False, (list, str), True])
1277
+ self.__arg_info_matrix.append(["description", self.__description, False, (list, str)])
1278
+ self.__arg_info_matrix.append(["lang_name", self.__lang_name, False, str])
1279
+ self.__arg_info_matrix.append(["optional", self.__is_required, True, bool])
1280
+
1281
+ _Validators._validate_function_arguments(self.__arg_info_matrix)
1282
+ self.is_empty_value_allowed = lambda: True
1283
+ self.is_output_column = lambda: False
1284
+ self.get_permitted_values = lambda: None
1285
+
1286
+ # Combining list to string.
1287
+ self.__description = ''.join(description)
1288
+
1289
+ def is_column_argument(self):
1290
+ """
1291
+ DESCRIPTION:
1292
+ Function checks if the argument accepts column as input or not.
1293
+
1294
+ PARAMETERS:
1295
+ None
1296
+
1297
+ RETURNS:
1298
+ bool
1299
+
1300
+ RAISES:
1301
+ None
1302
+
1303
+ EXAMPLES:
1304
+ self.is_column_argument()
1305
+ """
1306
+ # __datatype can be either string or list.
1307
+ if isinstance(self.__data_type, list):
1308
+ datatype = (datatype.lower() for datatype in self.__data_type)
1309
+ else:
1310
+ datatype = self.__data_type.lower()
1311
+ return "column" in datatype
1312
+
1313
+ def get_python_type(self):
1314
+ """
1315
+ DESCRIPTION:
1316
+ Get equivalent Python type for the JSON datatype for an argument.
1317
+
1318
+ PARAMETERS:
1319
+ None
1320
+
1321
+ RETURNS:
1322
+ type.
1323
+
1324
+ RAISES:
1325
+ None
1326
+
1327
+ EXAMPLES:
1328
+ self.get_python_type(arg1="string", arg2="db", arg3=2)
1329
+ """
1330
+ py_types = tuple()
1331
+ supp_data_types = UtilFuncs._as_list(self.__data_type)
1332
+ # If multiple datatype's allowed, return the tuple of all allowed Python types.
1333
+ for td_type in supp_data_types:
1334
+ py_type = _Dtypes._anly_json_type_to_python_type(td_type)
1335
+
1336
+ # If py_type is not a tuple, convert to a tuple.
1337
+ py_types = py_types + ((py_type,) if not isinstance(py_type, tuple) else py_type)
1338
+
1339
+ # If lists are allowed, add list type also.
1340
+ if self.is_lists_allowed() and (list not in py_types):
1341
+ py_types = py_types + (list,)
1342
+ return py_types
1343
+
1344
+ def set_is_required(self, value):
1345
+ """
1346
+ DESCRIPTION:
1347
+ Setter function to set if argument is required or not.
1348
+
1349
+ RETURNS:
1350
+ None
1351
+
1352
+ RAISES:
1353
+ None
1354
+
1355
+ EXAMPLES:
1356
+ self.set_is_required(True)
1357
+ """
1358
+ self.__is_required = value
1359
+
1360
+
1361
+ class _AnlyFuncInputUAF(_AnlyFuncArgumentBaseUAF):
1362
+ """ Class to hold the information about input argument of UAF."""
1363
+ def __init__(self, data_type, description, lang_name, is_required=False):
1364
+ """
1365
+ DESCRIPTION:
1366
+ Constructor for the class.
1367
+
1368
+ PARAMETERS:
1369
+ data_type:
1370
+ Required Argument.
1371
+ Specifies the data type an input argument can accept.
1372
+ Type: str
1373
+
1374
+ description:
1375
+ Required Argument.
1376
+ Specifies the input argument description.
1377
+ Type: Str or List
1378
+
1379
+ lang_name:
1380
+ Required Argument.
1381
+ Specifies the name of the argument to be exposed to user.
1382
+ Type: str
1383
+
1384
+ is_required:
1385
+ Optional Argument.
1386
+ Specifies whether the argument is required or not.
1387
+ Default Value: False
1388
+ Type: bool
1389
+ """
1390
+
1391
+ # Call Abstract class constructor
1392
+ super().__init__(data_type, description, lang_name, is_required)
1393
+ self.get_default_value = lambda: None
1394
+ self.is_lists_allowed = lambda: False
1395
+
1396
+
1397
+ class _AnlyFuncOutputUAF(_AnlyFuncArgumentBaseUAF):
1398
+ """ Class to hold the information about output argument of UAF."""
1399
+ def __init__(self, data_type, description, lang_name, layer_name,
1400
+ primary_layer=False, result_table_column_types=None, is_required=False):
1401
+ """
1402
+ DESCRIPTION:
1403
+ Constructor for the class.
1404
+
1405
+ PARAMETERS:
1406
+ description:
1407
+ Required Argument.
1408
+ Specifies the output argument description.
1409
+ Type: str or List
1410
+
1411
+ data_type:
1412
+ Required Argument.
1413
+ Specifies data type an output argument can accept.
1414
+ Type: str
1415
+
1416
+ lang_name:
1417
+ Required Argument.
1418
+ Specifies the name of the argument to be exposed to user.
1419
+ Type: str
1420
+
1421
+ primary_layer:
1422
+ Optional Argument.
1423
+ Specifies whether the layer is primary or not.
1424
+ Default Value: False
1425
+ Type: bool
1426
+
1427
+ layer_name:
1428
+ Required Argument.
1429
+ Specifies the name of the output layer.
1430
+ Type:str
1431
+
1432
+ result_table_column_types:
1433
+ Optional Argument
1434
+ Specifies the column types for the result table.
1435
+ Type: List or str
1436
+
1437
+ is_required:
1438
+ Optional Argument.
1439
+ Specifies whether the argument is required or not.
1440
+ Default Value: False
1441
+ Type: bool
1442
+ """
1443
+
1444
+ # Call Abstract class constructor
1445
+ super().__init__(data_type, description, lang_name, is_required)
1446
+ # Process other parameters of output table argument.
1447
+ self.__result_table_column_types = result_table_column_types
1448
+ self.__primary_layer = primary_layer
1449
+ self.__layer_name = layer_name
1450
+
1451
+ # Getters
1452
+ self.get_result_table_column_types = lambda: self.__result_table_column_types
1453
+ self.get_primary_layer = lambda : self.__primary_layer
1454
+ self.get_layer_name = lambda : self.__layer_name
1455
+
1456
+ # Validation
1457
+ self.__arg_info_matrix = []
1458
+ self.__arg_info_matrix.append(["result_table_column_types", self.__result_table_column_types, True, (list, str)])
1459
+ self.__arg_info_matrix.append(["primary_layer", self.__primary_layer, True, bool])
1460
+ self.__arg_info_matrix.append(["layer_name", self.__layer_name, False, str])
1461
+ _Validators._validate_function_arguments(self.__arg_info_matrix)
1462
+
1463
+
1464
+ class _AnlyFuncArgumentUAF(_AnlyFuncArgumentBaseUAF):
1465
+ """Class to hold the information about the other function parameters."""
1466
+
1467
+ def __init__(self, data_type, description, name, is_required=False, permitted_values=None,
1468
+ lower_bound=None, upper_bound=None, lower_bound_type=None, upper_bound_type=None,
1469
+ check_duplicates=False, list_type=None, allow_nan=None, lang_name=None,
1470
+ default_value=None, required_length=0, nested_param_list=None,
1471
+ is_nested=False, parent=None, has_nested=False):
1472
+ """
1473
+ DESCRIPTION:
1474
+ Constructor for the class.
1475
+
1476
+ PARAMETERS:
1477
+ description:
1478
+ Required Argument.
1479
+ Specifies the argument description.
1480
+ Type: str or List
1481
+
1482
+ name:
1483
+ Required Argument.
1484
+ Specifies the SQL name of the argument.
1485
+ Type: str
1486
+
1487
+ data_type:
1488
+ Required Argument.
1489
+ Specifies the data type for the argument.
1490
+ Type: str
1491
+
1492
+ is_required:
1493
+ Optional Argument.
1494
+ Specifies whether the argument is required or not.
1495
+ Default Value: False
1496
+ Types: bool
1497
+
1498
+ permitted_values:
1499
+ Optional Argument.
1500
+ Specifies the permitted values for the particular argument.
1501
+ Type: List
1502
+
1503
+ lower_bound:
1504
+ Optional Argument.
1505
+ Specifies the lower bound for the particular argument.
1506
+ Type: int or float
1507
+
1508
+ upper_bound:
1509
+ Optional Argument.
1510
+ Specifies the upper bound for the particular argument.
1511
+ Type: int or float
1512
+
1513
+ lower_bound_type:
1514
+ Optional Argument.
1515
+ Specifies whether the lower bound is inclusive or not.
1516
+ Type: str
1517
+
1518
+ upper_bound_type:
1519
+ Optional Argument.
1520
+ Specifies whether the upper bound is inclusive or not.
1521
+ Type: str
1522
+
1523
+ check_duplicates:
1524
+ Optional Argument
1525
+ Specifies if the argument checks for duplicate values.
1526
+ Type: bool
1527
+
1528
+ list_type:
1529
+ Optional Argument.
1530
+ Specifies the type of the list in the argument.
1531
+ Type: str
1532
+
1533
+ allow_nan:
1534
+ Required Argument.
1535
+ Specifies whether nan values are allowed or not.
1536
+ Type: bool
1537
+
1538
+ is_required:
1539
+ Optional Argument.
1540
+ Specifies whether the argument is required or not .
1541
+ Type: bool
1542
+
1543
+ lang_name:
1544
+ Optional Argument.
1545
+ Specifies the name of the argument to be exposed to user.
1546
+ Type: str
1547
+
1548
+ default_value:
1549
+ Optional Argument.
1550
+ Specifies the default value of the particular argument.
1551
+ Type: int or str or float
1552
+
1553
+ required_length:
1554
+ Optional Argument.
1555
+ Specifies if the list must be the same length as the list specified
1556
+ in argument clause.
1557
+ Types: int
1558
+
1559
+ nested_params_json:
1560
+ Optional Argument.
1561
+ Specifies the json object for nested_params argument.
1562
+ Type: List
1563
+
1564
+ is_nested:
1565
+ Optional Argument.
1566
+ Specifies whether the argument is a nested argument or not.
1567
+ Default Value: False
1568
+ Type: bool
1569
+
1570
+ parent:
1571
+ Optional Argument.
1572
+ Specifies the name of the parent incase of nested argument.
1573
+ Default Value: None
1574
+ Type: str or None
1575
+
1576
+ has_nested:
1577
+ Optional Argument.
1578
+ Specifies whether the argument has nested_params or not.
1579
+ Default Value:False
1580
+ Type: bool
1581
+
1582
+ """
1583
+ # Call Abstract class constructor
1584
+ super().__init__(data_type, description, lang_name, is_required)
1585
+
1586
+ # Process other parameters of arguments.
1587
+ self.__name = name
1588
+ self.__data_type = self.get_data_type()
1589
+ self.__permitted_values = permitted_values
1590
+ self.__default_value = default_value
1591
+ self.__r_default_value = None
1592
+ self.__allow_nan = allow_nan
1593
+ self.__lower_bound = lower_bound
1594
+ self.__upper_bound = upper_bound
1595
+ self.__lower_bound_type = lower_bound_type
1596
+ self.__upper_bound_type = upper_bound_type
1597
+ self.__check_duplicates = check_duplicates
1598
+ self.__required_length = required_length
1599
+ self.__parent = parent
1600
+ self.__is_nested = is_nested
1601
+ self.__has_nested = has_nested
1602
+ self.__allows_lists = False
1603
+ self.__match_length_of_arguments = False
1604
+
1605
+ # Creating a list for nested params
1606
+ self.__nested_param_list = nested_param_list
1607
+
1608
+ # Getters
1609
+ self.get_name = lambda: self.__name
1610
+ self.get_data_type = lambda: self.__data_type
1611
+ self.get_permitted_values = lambda: self.__permitted_values
1612
+ self.get_default_value = lambda: self.__default_value
1613
+ self.get_r_default_value = lambda: self.__r_default_value
1614
+ self.is_nan_allowed = lambda: self.__allow_nan
1615
+ self.get_parent = lambda: self.__parent
1616
+ self.get_lower_bound = lambda: self.__lower_bound
1617
+ self.get_upper_bound = lambda: self.__upper_bound
1618
+ self.get_lower_bound_type = lambda: self.__lower_bound_type
1619
+ self.get_upper_bound_type = lambda: self.__upper_bound_type
1620
+ self.get_check_duplicates = lambda: self.__check_duplicates
1621
+ self.get_required_length = lambda: self.__required_length
1622
+ self.get_nested_param_list = lambda: self.__nested_param_list
1623
+ self.get_is_nested = lambda: self.__is_nested
1624
+ self.get_has_nested = lambda: self.__has_nested
1625
+ self.is_lists_allowed = lambda: self.__allows_lists
1626
+ self.get_match_length_of_arguments = lambda: self.__match_length_of_arguments
1627
+
1628
+ # In order to make it similar to variables of SQLE functions if the data_type is list
1629
+ # we are setting allows_list=True and data_type to the data_type of the list elements.
1630
+ if self.get_data_type() == "list":
1631
+ self.__allows_lists = True
1632
+ self.__data_type = list_type
1633
+
1634
+ # Validation
1635
+ self.__arg_info_matrix = []
1636
+ self.__arg_info_matrix.append(["name", self.__name, True, str])
1637
+ self.__arg_info_matrix.append(["permitted_values", self.__permitted_values, True, list])
1638
+ self.__arg_info_matrix.append(["default_value", self.__default_value, True, (int, str, float, bool, list)])
1639
+ self.__arg_info_matrix.append(["r_default_value", self.__r_default_value, True, (int, str, float, bool, list)])
1640
+ self.__arg_info_matrix.append(["allow_nan", self.__allow_nan, True, bool])
1641
+ self.__arg_info_matrix.append(["lower_bound", self.__lower_bound, True, (int, float)])
1642
+ self.__arg_info_matrix.append(["upper_bound", self.__upper_bound, True, (int, float)])
1643
+ self.__arg_info_matrix.append(["lower_bound_type", self.__lower_bound_type, True, str])
1644
+ self.__arg_info_matrix.append(["upper_bound_type", self.__upper_bound_type, True, str])
1645
+ self.__arg_info_matrix.append(["check_duplicates", self.__check_duplicates, True, bool])
1646
+ self.__arg_info_matrix.append(["list_size", self.__required_length, True, (int, str)])
1647
+
1648
+ _Validators._validate_function_arguments(self.__arg_info_matrix)
1649
+
1650
+ # Validate whether lower bound is less than upper bound.
1651
+ _Validators._validate_argument_range(arg_name="dummy", arg=None, lbound=self.__lower_bound,
1652
+ ubound=self.__upper_bound)
1653
+ # Validate whether lower_bound and lower_bound_type are mutually inclusive.
1654
+ _Validators._validate_mutually_inclusive_arguments(lower_bound, "lower_bound", lower_bound_type, "lower_bound_type")
1655
+ # Validate whether upper_bound and upper_bound_type are mutually inclusive.
1656
+ _Validators._validate_mutually_inclusive_arguments(upper_bound, "upper_bound", upper_bound_type, "upper_bound_type")
1657
+
1658
+ # In order to make it similar to variables of SQLE functions, if get_required_length specifies
1659
+ # a value we set match_length_of_arguments which will validate the length of the arguments
1660
+ if not isinstance(self.__required_length, str) and self.get_required_length() > 0:
1661
+ self.__match_length_of_arguments = True
1662
+
1663
+ # If the argument is an int type and permitted values are 0 and 1, then we should consider it as boolean.
1664
+ if "INTEGER" in self.__data_type.upper() and self.__permitted_values is not None\
1665
+ and set(self.__permitted_values) == {0, 1}:
1666
+ self.__data_type = "BOOLEAN"
1667
+ self.__permitted_values = None
1668
+ self.set_is_required(False)
1669
+ if self.__default_value is not None:
1670
+ self.__default_value = bool(self.__default_value)
1671
+ else:
1672
+ self.__r_default_value = False
1673
+
1674
+ def get_python_type(self):
1675
+ """
1676
+ DESCRIPTION:
1677
+ Get equivalent Python type for the JSON datatype for an argument.
1678
+
1679
+ PARAMETERS:
1680
+ None
1681
+
1682
+ RETURNS:
1683
+ type.
1684
+
1685
+ RAISES:
1686
+ None
1687
+
1688
+ EXAMPLES:
1689
+ self.get_python_type(arg1="string", arg2="db", arg3=2)
1690
+ """
1691
+ py_types = tuple()
1692
+
1693
+ # If multiple datatype's allowed, return the tuple of all allowed python types.
1694
+ if isinstance(self.__data_type, list):
1695
+ for td_type in self.__data_type:
1696
+ py_type = _Dtypes._anly_json_type_to_python_type(td_type)
1697
+
1698
+ # If py_type is not a tuple, convert to a tuple.
1699
+ py_types = py_types + ((py_type,) if not isinstance(py_type, tuple) else py_type)
1700
+ else:
1701
+ py_type = _Dtypes._anly_json_type_to_python_type(self.__data_type)
1702
+ py_types = py_type if isinstance(py_type, tuple) else (py_type,)
1703
+
1704
+ # If lists are allowed, add list type also.
1705
+ if self.__allows_lists and (list not in py_types):
1706
+ py_types = py_types + (list,)
1707
+
1708
1708
  return py_types