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