teradataml 17.20.0.7__py3-none-any.whl → 20.0.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of teradataml might be problematic. Click here for more details.
- teradataml/LICENSE-3RD-PARTY.pdf +0 -0
- teradataml/LICENSE.pdf +0 -0
- teradataml/README.md +1864 -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 +2013 -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 +804 -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 +1628 -0
- teradataml/automl/custom_json_utils.py +1270 -0
- teradataml/automl/data_preparation.py +993 -0
- teradataml/automl/data_transformation.py +727 -0
- teradataml/automl/feature_engineering.py +1648 -0
- teradataml/automl/feature_exploration.py +547 -0
- teradataml/automl/model_evaluation.py +163 -0
- teradataml/automl/model_training.py +887 -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/pkce_client.py +481 -481
- teradataml/common/aed_utils.py +6 -2
- teradataml/common/bulk_exposed_utils.py +111 -111
- teradataml/common/constants.py +1433 -1441
- teradataml/common/deprecations.py +160 -0
- teradataml/common/exceptions.py +73 -73
- teradataml/common/formula.py +742 -742
- teradataml/common/garbagecollector.py +592 -635
- teradataml/common/messagecodes.py +422 -431
- teradataml/common/messages.py +227 -231
- teradataml/common/sqlbundle.py +693 -693
- teradataml/common/td_coltype_code_to_tdtype.py +48 -48
- teradataml/common/utils.py +2418 -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 +1071 -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/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_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/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/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/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 +132 -132
- teradataml/data/docs/sqle/docs_17_10/OneHotEncodingTransform.py +103 -103
- teradataml/data/docs/sqle/docs_17_10/OutlierFilterFit.py +165 -165
- teradataml/data/docs/sqle/docs_17_10/OutlierFilterTransform.py +101 -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 +126 -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 +243 -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 +160 -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 +380 -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 +123 -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 +204 -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 +117 -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 +225 -225
- teradataml/data/docs/sqle/docs_17_20/OneHotEncodingTransform.py +115 -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 +163 -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 +202 -202
- teradataml/data/docs/sqle/docs_17_20/SVMSparsePredict.py +152 -152
- teradataml/data/docs/sqle/docs_17_20/ScaleFit.py +197 -197
- teradataml/data/docs/sqle/docs_17_20/ScaleTransform.py +110 -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 +171 -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 +353 -353
- teradataml/data/docs/sqle/docs_17_20/XGBoostPredict.py +275 -275
- teradataml/data/docs/sqle/docs_17_20/ZTest.py +155 -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 +29 -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/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/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 +76 -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 +186 -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 +431 -431
- teradataml/data/jsons/sqle/17.20/TD_GLMPREDICT.json +125 -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 +91 -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 +211 -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 +101 -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 +177 -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 +124 -124
- teradataml/data/jsons/sqle/17.20/TD_ScaleFit.json +156 -156
- teradataml/data/jsons/sqle/17.20/TD_ScaleTransform.json +70 -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 +312 -312
- teradataml/data/jsons/sqle/17.20/TD_XGBoostPredict.json +182 -182
- teradataml/data/jsons/sqle/17.20/TD_ZTest.json +170 -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 +17 -17
- 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/openml_example.json +63 -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_example.json +23 -23
- teradataml/data/scale_housing.csv +11 -11
- teradataml/data/scale_housing_test.csv +6 -6
- 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 +65 -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 +175 -0
- teradataml/data/scripts/sklearn/sklearn_fit_predict.py +135 -0
- teradataml/data/scripts/sklearn/sklearn_function.template +113 -0
- teradataml/data/scripts/sklearn/sklearn_model_selection_split.py +158 -0
- teradataml/data/scripts/sklearn/sklearn_neighbors.py +152 -0
- teradataml/data/scripts/sklearn/sklearn_score.py +128 -0
- teradataml/data/scripts/sklearn/sklearn_transform.py +179 -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 +73 -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/dataframe/copy_to.py +1764 -1698
- teradataml/dataframe/data_transfer.py +2753 -2745
- teradataml/dataframe/dataframe.py +17545 -16946
- teradataml/dataframe/dataframe_utils.py +1837 -1740
- teradataml/dataframe/fastload.py +611 -603
- teradataml/dataframe/indexer.py +424 -424
- teradataml/dataframe/setop.py +1179 -1166
- teradataml/dataframe/sql.py +10090 -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 +1668 -0
- teradataml/opensource/sklearn/_wrapper_utils.py +268 -0
- teradataml/opensource/sklearn/constants.py +54 -0
- teradataml/options/__init__.py +121 -124
- teradataml/options/configure.py +337 -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 +3788 -3761
- teradataml/scriptmgmt/__init__.py +3 -3
- teradataml/scriptmgmt/lls_utils.py +1616 -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 +1719 -1982
- teradataml/table_operators/TableOperator.py +1207 -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 +2239 -2115
- {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.0.dist-info}/METADATA +270 -41
- teradataml-20.0.0.0.dist-info/RECORD +1038 -0
- {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.0.dist-info}/WHEEL +1 -1
- {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.0.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.0.dist-info}/top_level.txt +0 -0
|
@@ -1,481 +1,481 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Unpublished work.
|
|
3
|
-
Copyright (c) 2023 by Teradata Corporation. All rights reserved.
|
|
4
|
-
TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
|
|
5
|
-
|
|
6
|
-
Primary Owner: pradeep.garre@teradata.com
|
|
7
|
-
Secondary Owner: PankajVinod.Purandare@teradata.com
|
|
8
|
-
|
|
9
|
-
This file implements PKCE client.
|
|
10
|
-
"""
|
|
11
|
-
import base64
|
|
12
|
-
import hashlib
|
|
13
|
-
import re
|
|
14
|
-
import requests
|
|
15
|
-
import secrets
|
|
16
|
-
import webbrowser
|
|
17
|
-
from teradataml import configure
|
|
18
|
-
from teradataml.utils.validators import _Validators
|
|
19
|
-
from time import time, sleep
|
|
20
|
-
from urllib.parse import parse_qs, urlparse
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class _PKCEClient:
|
|
24
|
-
"""
|
|
25
|
-
Proof Key for Code Exchange Client to get the Authorization code from any server which implements
|
|
26
|
-
OAuth 2.0 for providing the access to clients.
|
|
27
|
-
"""
|
|
28
|
-
|
|
29
|
-
def __init__(self, base_url, client_id, redirect_url="http://localhost:4200/callback", timeout=30):
|
|
30
|
-
"""
|
|
31
|
-
DESCRIPTION:
|
|
32
|
-
Constructor to initiate OAuth work flow.
|
|
33
|
-
|
|
34
|
-
PARAMETERS:
|
|
35
|
-
base_url:
|
|
36
|
-
Required Argument.
|
|
37
|
-
Specifies the base URL of OAuth Server.
|
|
38
|
-
Types: str
|
|
39
|
-
|
|
40
|
-
client_id:
|
|
41
|
-
Required Argument.
|
|
42
|
-
Specifies the client id of OAuth Server. One should get the client id from OAuth server.
|
|
43
|
-
Types: str
|
|
44
|
-
|
|
45
|
-
redirect_url:
|
|
46
|
-
Optional Argument.
|
|
47
|
-
Specifies the redirect URL in OAuth workflow. The URL will be used by Auth server
|
|
48
|
-
to post the details. Then the application receives these details and stores it for
|
|
49
|
-
future use. teradataml never uses this URL to redirect instead this is for Auth server.
|
|
50
|
-
Default Values: http://localhost:4200/callback
|
|
51
|
-
Types: str
|
|
52
|
-
|
|
53
|
-
timeout:
|
|
54
|
-
Optional Argument.
|
|
55
|
-
Specifies the timeout in seconds for HTTP Request.
|
|
56
|
-
Default Value: 30
|
|
57
|
-
Types: int or float
|
|
58
|
-
|
|
59
|
-
RETURNS:
|
|
60
|
-
Instance of _PKCEClient.
|
|
61
|
-
|
|
62
|
-
RAISES:
|
|
63
|
-
None
|
|
64
|
-
|
|
65
|
-
EXAMPLES :
|
|
66
|
-
>>> _PKCEClient("client_id", "base_url")
|
|
67
|
-
"""
|
|
68
|
-
import httpx
|
|
69
|
-
|
|
70
|
-
# Provided by caller
|
|
71
|
-
self.__base_url = base_url
|
|
72
|
-
self.__client_id = client_id
|
|
73
|
-
|
|
74
|
-
self.__session = httpx.Client(timeout=timeout)
|
|
75
|
-
self.__redirect_url = redirect_url
|
|
76
|
-
self.oauth_end_point = None
|
|
77
|
-
self.__open_id_configuration_resource = "/auth/.well-known/openid-configuration"
|
|
78
|
-
|
|
79
|
-
# Set the username label.
|
|
80
|
-
self.__username_label = configure._pf_token_username_label
|
|
81
|
-
self.__password_label = configure._pf_token_password_label
|
|
82
|
-
|
|
83
|
-
self.__html_form_headers = {"Content-Type": "application/x-www-form-urlencoded",
|
|
84
|
-
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}
|
|
85
|
-
|
|
86
|
-
def _get_token_data(self, username=None, password=None, refresh_token=None, **kwargs):
|
|
87
|
-
"""
|
|
88
|
-
DESCRIPTION:
|
|
89
|
-
Function to fetch the Authentication token details from credentials.
|
|
90
|
-
|
|
91
|
-
PARAMETERS:
|
|
92
|
-
username:
|
|
93
|
-
Optional Argument.
|
|
94
|
-
Specifies the Username for which token is requested for.
|
|
95
|
-
Types: str
|
|
96
|
-
|
|
97
|
-
password:
|
|
98
|
-
Optional Argument.
|
|
99
|
-
Specifies the password for "username" for which token is requested for.
|
|
100
|
-
Types: str
|
|
101
|
-
|
|
102
|
-
refresh_token:
|
|
103
|
-
Optional Argument.
|
|
104
|
-
Specifies the refresh token.
|
|
105
|
-
Note:
|
|
106
|
-
Either "username"/"password" or "refresh_token" is mandatory.
|
|
107
|
-
Types: str
|
|
108
|
-
|
|
109
|
-
kwargs:
|
|
110
|
-
Optional Argument.
|
|
111
|
-
Specifies keyword arguments. Reserved for MFA.
|
|
112
|
-
|
|
113
|
-
RETURNS:
|
|
114
|
-
dict.
|
|
115
|
-
|
|
116
|
-
RAISES:
|
|
117
|
-
None
|
|
118
|
-
|
|
119
|
-
EXAMPLES :
|
|
120
|
-
>>> _PKCEClient("client_id", "base_url")._get_token_data("user", "password")
|
|
121
|
-
>>> _PKCEClient("client_id", "base_url")._get_token_data(refresh_token=configure._refresh_token)
|
|
122
|
-
"""
|
|
123
|
-
# Either refresh_token or (username and password) is mandatory.
|
|
124
|
-
_Validators._validate_mutually_exclusive_arguments(
|
|
125
|
-
username, "username/password", refresh_token, "refresh_token")
|
|
126
|
-
|
|
127
|
-
if refresh_token is not None:
|
|
128
|
-
# Retrieve the end point if it is not available.
|
|
129
|
-
if configure._oauth_end_point is None:
|
|
130
|
-
open_id_config = self.__get_openid_config()
|
|
131
|
-
configure._oauth_end_point = open_id_config["token_endpoint"]
|
|
132
|
-
|
|
133
|
-
# Prepare the payload for getting the token from refresh token.
|
|
134
|
-
params = {
|
|
135
|
-
"grant_type": "refresh_token",
|
|
136
|
-
"client_id": self.__client_id,
|
|
137
|
-
"refresh_token": refresh_token
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
response = self.__session.post(
|
|
141
|
-
url=configure._oauth_end_point,
|
|
142
|
-
headers=self.__html_form_headers,
|
|
143
|
-
data=params,
|
|
144
|
-
)
|
|
145
|
-
|
|
146
|
-
# Check the status. If response is not 200, raise error.
|
|
147
|
-
_Validators._validate_http_response(response, 200, "get the token from refresh token")
|
|
148
|
-
|
|
149
|
-
return response.json()
|
|
150
|
-
|
|
151
|
-
else:
|
|
152
|
-
# Get the OPEN ID Configuration.
|
|
153
|
-
open_id_config = self.__get_openid_config()
|
|
154
|
-
self.oauth_end_point = open_id_config["token_endpoint"]
|
|
155
|
-
|
|
156
|
-
# Create code verifier.
|
|
157
|
-
code_verifier = secrets.token_urlsafe(96)[:128]
|
|
158
|
-
|
|
159
|
-
# Create code challenge from code verifier.
|
|
160
|
-
hashed_verifier: bytes = hashlib.sha256(code_verifier.encode("ascii")).digest()
|
|
161
|
-
b64encoded_hashed_verifier = base64.urlsafe_b64encode(hashed_verifier)
|
|
162
|
-
code_challenge: str = b64encoded_hashed_verifier.decode("ascii")
|
|
163
|
-
# (remove '=' padding)
|
|
164
|
-
code_challenge = code_challenge[:-1]
|
|
165
|
-
|
|
166
|
-
# Get the login page & relevant data.
|
|
167
|
-
action_url = self.__get_login_page_action_url(open_id_config["authorization_endpoint"], code_challenge)
|
|
168
|
-
|
|
169
|
-
# Submit login info and get code
|
|
170
|
-
code = self.__get_authorization_code(action_url, username, password, **kwargs)
|
|
171
|
-
|
|
172
|
-
# Exchange code for token.
|
|
173
|
-
token_data = self.__get_jwt_token_with_code(open_id_config["token_endpoint"], code, code_verifier)
|
|
174
|
-
|
|
175
|
-
return token_data
|
|
176
|
-
|
|
177
|
-
def __get_openid_config(self):
|
|
178
|
-
"""
|
|
179
|
-
DESCRIPTION:
|
|
180
|
-
Internal function to fetch the OPEN ID Configuration.
|
|
181
|
-
|
|
182
|
-
PARAMETERS:
|
|
183
|
-
None
|
|
184
|
-
|
|
185
|
-
RETURNS:
|
|
186
|
-
dict
|
|
187
|
-
|
|
188
|
-
RAISES:
|
|
189
|
-
None
|
|
190
|
-
"""
|
|
191
|
-
response = self.__session.get("{}{}".format(self.__base_url, self.__open_id_configuration_resource))
|
|
192
|
-
|
|
193
|
-
# Check the status. If response is not 200, raise error.
|
|
194
|
-
_Validators._validate_http_response(response, 200, "get the configuration")
|
|
195
|
-
|
|
196
|
-
return response.json()
|
|
197
|
-
|
|
198
|
-
def __get_login_page_action_url(self, auth_url, code_challenge):
|
|
199
|
-
"""
|
|
200
|
-
DESCRIPTION:
|
|
201
|
-
Internal function to get the login URL to post the credentials.
|
|
202
|
-
|
|
203
|
-
PARAMETERS:
|
|
204
|
-
auth_url:
|
|
205
|
-
Required Argument.
|
|
206
|
-
Specifies the Authentication URL.
|
|
207
|
-
Types: str
|
|
208
|
-
|
|
209
|
-
code_challenge:
|
|
210
|
-
Required Argument.
|
|
211
|
-
Specifies the Code Challenge to sent to Authentication URL.
|
|
212
|
-
Types: str
|
|
213
|
-
|
|
214
|
-
RETURNS:
|
|
215
|
-
str
|
|
216
|
-
|
|
217
|
-
RAISES:
|
|
218
|
-
TeradataMlException
|
|
219
|
-
"""
|
|
220
|
-
# Fetch the html login page.
|
|
221
|
-
# Send the Code Challenge along with client id and redirect URL.
|
|
222
|
-
# The response will be a HTML code which contains URL to post the
|
|
223
|
-
# username and password.
|
|
224
|
-
response = self.__session.get(
|
|
225
|
-
url=auth_url,
|
|
226
|
-
params={
|
|
227
|
-
"response_type": "code",
|
|
228
|
-
"code_challenge": code_challenge,
|
|
229
|
-
"code_challenge_method": "S256",
|
|
230
|
-
"client_id": self.__client_id,
|
|
231
|
-
"redirect_uri": self.__redirect_url,
|
|
232
|
-
"scope": "openid",
|
|
233
|
-
}
|
|
234
|
-
)
|
|
235
|
-
|
|
236
|
-
# Check the status. If response is not 200, raise error.
|
|
237
|
-
_Validators._validate_http_response(response, 200, "get the login details")
|
|
238
|
-
|
|
239
|
-
login_page = response.text
|
|
240
|
-
|
|
241
|
-
# Parse the html page using regex to find Form Action URL
|
|
242
|
-
return re.search(r'\s+action="([^"]+)"', login_page).group(1)
|
|
243
|
-
|
|
244
|
-
def __get_authorization_code(self, action_url, username, password, **kwargs):
|
|
245
|
-
"""
|
|
246
|
-
DESCRIPTION:
|
|
247
|
-
Internal function to get the Authorization code using the credentials.
|
|
248
|
-
Note that response is not JWT code. It is an Authorization code and
|
|
249
|
-
using the Authorization code, Access code(JWT Token) is retrieved.
|
|
250
|
-
|
|
251
|
-
PARAMETERS:
|
|
252
|
-
action_url:
|
|
253
|
-
Required Parameter.
|
|
254
|
-
Specifies the Authorization URL to which username and password to be posted.
|
|
255
|
-
Types: str
|
|
256
|
-
|
|
257
|
-
username:
|
|
258
|
-
Required Argument.
|
|
259
|
-
Specifies the Username for which token is requested for.
|
|
260
|
-
Types: str
|
|
261
|
-
|
|
262
|
-
password:
|
|
263
|
-
Required Argument.
|
|
264
|
-
Specifies the password for "username" for which token is requested for.
|
|
265
|
-
Types: str
|
|
266
|
-
|
|
267
|
-
kwargs:
|
|
268
|
-
Optional Argument.
|
|
269
|
-
Specifies keyword arguments. Reserved for MFA.
|
|
270
|
-
|
|
271
|
-
RETURNS:
|
|
272
|
-
Authorization token, str.
|
|
273
|
-
|
|
274
|
-
RAISES:
|
|
275
|
-
None
|
|
276
|
-
|
|
277
|
-
EXAMPLES :
|
|
278
|
-
>>> _PKCEClient("client_id", "base_url").__get_authorization_code("http://some.client", "user", "password")
|
|
279
|
-
"""
|
|
280
|
-
data = {self.__username_label: username, self.__password_label: password}
|
|
281
|
-
|
|
282
|
-
# Update the data with kwargs if it has any data.
|
|
283
|
-
if kwargs:
|
|
284
|
-
data = data.update(kwargs)
|
|
285
|
-
|
|
286
|
-
response = self.__session.post(
|
|
287
|
-
url="{}{}".format(self.__base_url, action_url),
|
|
288
|
-
headers=self.__html_form_headers,
|
|
289
|
-
data=data
|
|
290
|
-
)
|
|
291
|
-
|
|
292
|
-
# We expect a 302 (redirect) response at this point
|
|
293
|
-
_Validators._validate_http_response(response, 302, "get the Authorization code")
|
|
294
|
-
|
|
295
|
-
# Extract the code from the location header (e.g. "http://localhost?code=xyz")
|
|
296
|
-
location_url = response.headers["location"]
|
|
297
|
-
parsed_url = urlparse(location_url)
|
|
298
|
-
return parse_qs(parsed_url.query)["code"][0]
|
|
299
|
-
|
|
300
|
-
def __get_jwt_token_with_code(self, token_url, code, code_verifier):
|
|
301
|
-
|
|
302
|
-
# Request token data using code and code_verifier
|
|
303
|
-
# Again submit the form with Authorization code recieved from
|
|
304
|
-
# __get_authorization_code along with form headers.
|
|
305
|
-
|
|
306
|
-
response = self.__session.post(
|
|
307
|
-
url=token_url,
|
|
308
|
-
headers=self.__html_form_headers,
|
|
309
|
-
data={
|
|
310
|
-
"grant_type": "authorization_code",
|
|
311
|
-
"client_id": self.__client_id,
|
|
312
|
-
"code_verifier": code_verifier,
|
|
313
|
-
"code": code,
|
|
314
|
-
"redirect_uri": self.__redirect_url
|
|
315
|
-
}
|
|
316
|
-
)
|
|
317
|
-
|
|
318
|
-
# We expect a 200 (redirect) response at this point
|
|
319
|
-
_Validators._validate_http_response(response, 200, "get the JWT Token")
|
|
320
|
-
|
|
321
|
-
return response.json()
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
class _DAWorkflow:
|
|
325
|
-
"""
|
|
326
|
-
Get the Authorization code from any server which support Device Authorization.
|
|
327
|
-
"""
|
|
328
|
-
def __init__(self, base_url, client_id):
|
|
329
|
-
"""
|
|
330
|
-
DESCRIPTION:
|
|
331
|
-
Constructor to initiate Device Authentication work flow.
|
|
332
|
-
|
|
333
|
-
PARAMETERS:
|
|
334
|
-
base_url:
|
|
335
|
-
Required Argument.
|
|
336
|
-
Specifies the base URL of OAuth Server.
|
|
337
|
-
Types: str
|
|
338
|
-
|
|
339
|
-
client_id:
|
|
340
|
-
Required Argument.
|
|
341
|
-
Specifies the client id of OAuth Server. One should get the client id from OAuth server.
|
|
342
|
-
Types: str
|
|
343
|
-
|
|
344
|
-
RETURNS:
|
|
345
|
-
Instance of _DAWorkflow.
|
|
346
|
-
|
|
347
|
-
RAISES:
|
|
348
|
-
None
|
|
349
|
-
|
|
350
|
-
EXAMPLES :
|
|
351
|
-
>>> _DAWorkflow("base_url", "client_id")
|
|
352
|
-
"""
|
|
353
|
-
self.__base_url = base_url
|
|
354
|
-
self.__client_id = client_id
|
|
355
|
-
|
|
356
|
-
self.device_auth_end_point = None
|
|
357
|
-
self.__token_endpoint = None
|
|
358
|
-
self.__open_id_configuration_resource = "/auth/.well-known/openid-configuration"
|
|
359
|
-
|
|
360
|
-
def _get_token_data(self):
|
|
361
|
-
"""
|
|
362
|
-
DESCRIPTION:
|
|
363
|
-
Function to fetch the Authentication token.
|
|
364
|
-
|
|
365
|
-
PARAMETERS:
|
|
366
|
-
None.
|
|
367
|
-
|
|
368
|
-
RETURNS:
|
|
369
|
-
dict.
|
|
370
|
-
|
|
371
|
-
RAISES:
|
|
372
|
-
None
|
|
373
|
-
|
|
374
|
-
EXAMPLES :
|
|
375
|
-
>>> _DAWorkflow("base_url", "client_id")._get_token_data()
|
|
376
|
-
"""
|
|
377
|
-
# Get the Device endpoint and token endpoint.
|
|
378
|
-
openid_cfg = self.__get_openid_config()
|
|
379
|
-
self.device_auth_end_point = openid_cfg["device_authorization_endpoint"]
|
|
380
|
-
self.__token_endpoint = openid_cfg["token_endpoint"]
|
|
381
|
-
|
|
382
|
-
# Get the device metadata.
|
|
383
|
-
device_cfg = self.__get_device_config()
|
|
384
|
-
|
|
385
|
-
# Get the Access token data.
|
|
386
|
-
token_data = self.__get_access_token_data(device_cfg)
|
|
387
|
-
return token_data
|
|
388
|
-
|
|
389
|
-
def __get_openid_config(self):
|
|
390
|
-
"""
|
|
391
|
-
DESCRIPTION:
|
|
392
|
-
Internal function to fetch the OPEN ID Configuration.
|
|
393
|
-
|
|
394
|
-
PARAMETERS:
|
|
395
|
-
None.
|
|
396
|
-
|
|
397
|
-
RETURNS:
|
|
398
|
-
dict.
|
|
399
|
-
|
|
400
|
-
RAISES:
|
|
401
|
-
TeradataMlException.
|
|
402
|
-
"""
|
|
403
|
-
# Fetch the metadata to get the DA details.
|
|
404
|
-
metadata_response = requests.get(
|
|
405
|
-
url="{}{}".format(self.__base_url, self.__open_id_configuration_resource))
|
|
406
|
-
|
|
407
|
-
# Check the status. If response is not 200, raise error.
|
|
408
|
-
_Validators._validate_http_response(metadata_response, 200, "get the configuration")
|
|
409
|
-
|
|
410
|
-
return metadata_response.json()
|
|
411
|
-
|
|
412
|
-
def __get_device_config(self):
|
|
413
|
-
"""
|
|
414
|
-
DESCRIPTION:
|
|
415
|
-
Internal function to fetch the device Configuration.
|
|
416
|
-
|
|
417
|
-
PARAMETERS:
|
|
418
|
-
None.
|
|
419
|
-
|
|
420
|
-
RETURNS:
|
|
421
|
-
dict.
|
|
422
|
-
|
|
423
|
-
RAISES:
|
|
424
|
-
TeradataMlException.
|
|
425
|
-
"""
|
|
426
|
-
device_cfg = requests.post(
|
|
427
|
-
url=self.device_auth_end_point,
|
|
428
|
-
data={'client_id': self.__client_id})
|
|
429
|
-
|
|
430
|
-
# Check the status. If response is not 200, raise error.
|
|
431
|
-
_Validators._validate_http_response(device_cfg, 200, "get the device metadata")
|
|
432
|
-
|
|
433
|
-
return device_cfg.json()
|
|
434
|
-
|
|
435
|
-
def __get_access_token_data(self, device_cfg):
|
|
436
|
-
"""
|
|
437
|
-
DESCRIPTION:
|
|
438
|
-
Internal function to fetch the Access token data.
|
|
439
|
-
|
|
440
|
-
PARAMETERS:
|
|
441
|
-
None.
|
|
442
|
-
|
|
443
|
-
RETURNS:
|
|
444
|
-
dict.
|
|
445
|
-
|
|
446
|
-
RAISES:
|
|
447
|
-
TeradataMlException.
|
|
448
|
-
"""
|
|
449
|
-
# Open the browser.
|
|
450
|
-
verification_uri = device_cfg['verification_uri_complete']
|
|
451
|
-
print("Opening the browser with URL - {}".format(verification_uri))
|
|
452
|
-
|
|
453
|
-
if webbrowser.open(verification_uri):
|
|
454
|
-
print("\nOpened a session in browser. Authenticate yourself in the browser. "
|
|
455
|
-
"In case if not able to access the opened session in browser, "
|
|
456
|
-
"Open a session in any browser on any machine using URL - {}".format(verification_uri))
|
|
457
|
-
else:
|
|
458
|
-
print("\nCould not open the browser. Open a session in browser on any machine using URL - {}"
|
|
459
|
-
" Authenticate yourself in the browser.".format(verification_uri))
|
|
460
|
-
|
|
461
|
-
# Get the maximum time for polling the token endpoint.
|
|
462
|
-
max_wait = time() + device_cfg['expires_in']
|
|
463
|
-
token_data = {
|
|
464
|
-
'client_id': self.__client_id,
|
|
465
|
-
'grant_type': 'urn:ietf:params:oauth:grant-type:device_code',
|
|
466
|
-
'device_code': device_cfg['device_code']
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
# Poll the token endpoint at the specified interval for an access token.
|
|
470
|
-
while time() < max_wait:
|
|
471
|
-
poll_response = requests.post(
|
|
472
|
-
url=self.__token_endpoint,
|
|
473
|
-
data=token_data)
|
|
474
|
-
|
|
475
|
-
if poll_response.status_code == 200:
|
|
476
|
-
return poll_response.json()
|
|
477
|
-
else:
|
|
478
|
-
sleep(device_cfg['interval'])
|
|
479
|
-
|
|
480
|
-
# We expect response at this point
|
|
481
|
-
_Validators._validate_http_response(poll_response, 200, "get the access Token")
|
|
1
|
+
"""
|
|
2
|
+
Unpublished work.
|
|
3
|
+
Copyright (c) 2023 by Teradata Corporation. All rights reserved.
|
|
4
|
+
TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
|
|
5
|
+
|
|
6
|
+
Primary Owner: pradeep.garre@teradata.com
|
|
7
|
+
Secondary Owner: PankajVinod.Purandare@teradata.com
|
|
8
|
+
|
|
9
|
+
This file implements PKCE client.
|
|
10
|
+
"""
|
|
11
|
+
import base64
|
|
12
|
+
import hashlib
|
|
13
|
+
import re
|
|
14
|
+
import requests
|
|
15
|
+
import secrets
|
|
16
|
+
import webbrowser
|
|
17
|
+
from teradataml import configure
|
|
18
|
+
from teradataml.utils.validators import _Validators
|
|
19
|
+
from time import time, sleep
|
|
20
|
+
from urllib.parse import parse_qs, urlparse
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class _PKCEClient:
|
|
24
|
+
"""
|
|
25
|
+
Proof Key for Code Exchange Client to get the Authorization code from any server which implements
|
|
26
|
+
OAuth 2.0 for providing the access to clients.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
def __init__(self, base_url, client_id, redirect_url="http://localhost:4200/callback", timeout=30):
|
|
30
|
+
"""
|
|
31
|
+
DESCRIPTION:
|
|
32
|
+
Constructor to initiate OAuth work flow.
|
|
33
|
+
|
|
34
|
+
PARAMETERS:
|
|
35
|
+
base_url:
|
|
36
|
+
Required Argument.
|
|
37
|
+
Specifies the base URL of OAuth Server.
|
|
38
|
+
Types: str
|
|
39
|
+
|
|
40
|
+
client_id:
|
|
41
|
+
Required Argument.
|
|
42
|
+
Specifies the client id of OAuth Server. One should get the client id from OAuth server.
|
|
43
|
+
Types: str
|
|
44
|
+
|
|
45
|
+
redirect_url:
|
|
46
|
+
Optional Argument.
|
|
47
|
+
Specifies the redirect URL in OAuth workflow. The URL will be used by Auth server
|
|
48
|
+
to post the details. Then the application receives these details and stores it for
|
|
49
|
+
future use. teradataml never uses this URL to redirect instead this is for Auth server.
|
|
50
|
+
Default Values: http://localhost:4200/callback
|
|
51
|
+
Types: str
|
|
52
|
+
|
|
53
|
+
timeout:
|
|
54
|
+
Optional Argument.
|
|
55
|
+
Specifies the timeout in seconds for HTTP Request.
|
|
56
|
+
Default Value: 30
|
|
57
|
+
Types: int or float
|
|
58
|
+
|
|
59
|
+
RETURNS:
|
|
60
|
+
Instance of _PKCEClient.
|
|
61
|
+
|
|
62
|
+
RAISES:
|
|
63
|
+
None
|
|
64
|
+
|
|
65
|
+
EXAMPLES :
|
|
66
|
+
>>> _PKCEClient("client_id", "base_url")
|
|
67
|
+
"""
|
|
68
|
+
import httpx
|
|
69
|
+
|
|
70
|
+
# Provided by caller
|
|
71
|
+
self.__base_url = base_url
|
|
72
|
+
self.__client_id = client_id
|
|
73
|
+
|
|
74
|
+
self.__session = httpx.Client(timeout=timeout)
|
|
75
|
+
self.__redirect_url = redirect_url
|
|
76
|
+
self.oauth_end_point = None
|
|
77
|
+
self.__open_id_configuration_resource = "/auth/.well-known/openid-configuration"
|
|
78
|
+
|
|
79
|
+
# Set the username label.
|
|
80
|
+
self.__username_label = configure._pf_token_username_label
|
|
81
|
+
self.__password_label = configure._pf_token_password_label
|
|
82
|
+
|
|
83
|
+
self.__html_form_headers = {"Content-Type": "application/x-www-form-urlencoded",
|
|
84
|
+
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}
|
|
85
|
+
|
|
86
|
+
def _get_token_data(self, username=None, password=None, refresh_token=None, **kwargs):
|
|
87
|
+
"""
|
|
88
|
+
DESCRIPTION:
|
|
89
|
+
Function to fetch the Authentication token details from credentials.
|
|
90
|
+
|
|
91
|
+
PARAMETERS:
|
|
92
|
+
username:
|
|
93
|
+
Optional Argument.
|
|
94
|
+
Specifies the Username for which token is requested for.
|
|
95
|
+
Types: str
|
|
96
|
+
|
|
97
|
+
password:
|
|
98
|
+
Optional Argument.
|
|
99
|
+
Specifies the password for "username" for which token is requested for.
|
|
100
|
+
Types: str
|
|
101
|
+
|
|
102
|
+
refresh_token:
|
|
103
|
+
Optional Argument.
|
|
104
|
+
Specifies the refresh token.
|
|
105
|
+
Note:
|
|
106
|
+
Either "username"/"password" or "refresh_token" is mandatory.
|
|
107
|
+
Types: str
|
|
108
|
+
|
|
109
|
+
kwargs:
|
|
110
|
+
Optional Argument.
|
|
111
|
+
Specifies keyword arguments. Reserved for MFA.
|
|
112
|
+
|
|
113
|
+
RETURNS:
|
|
114
|
+
dict.
|
|
115
|
+
|
|
116
|
+
RAISES:
|
|
117
|
+
None
|
|
118
|
+
|
|
119
|
+
EXAMPLES :
|
|
120
|
+
>>> _PKCEClient("client_id", "base_url")._get_token_data("user", "password")
|
|
121
|
+
>>> _PKCEClient("client_id", "base_url")._get_token_data(refresh_token=configure._refresh_token)
|
|
122
|
+
"""
|
|
123
|
+
# Either refresh_token or (username and password) is mandatory.
|
|
124
|
+
_Validators._validate_mutually_exclusive_arguments(
|
|
125
|
+
username, "username/password", refresh_token, "refresh_token")
|
|
126
|
+
|
|
127
|
+
if refresh_token is not None:
|
|
128
|
+
# Retrieve the end point if it is not available.
|
|
129
|
+
if configure._oauth_end_point is None:
|
|
130
|
+
open_id_config = self.__get_openid_config()
|
|
131
|
+
configure._oauth_end_point = open_id_config["token_endpoint"]
|
|
132
|
+
|
|
133
|
+
# Prepare the payload for getting the token from refresh token.
|
|
134
|
+
params = {
|
|
135
|
+
"grant_type": "refresh_token",
|
|
136
|
+
"client_id": self.__client_id,
|
|
137
|
+
"refresh_token": refresh_token
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
response = self.__session.post(
|
|
141
|
+
url=configure._oauth_end_point,
|
|
142
|
+
headers=self.__html_form_headers,
|
|
143
|
+
data=params,
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
# Check the status. If response is not 200, raise error.
|
|
147
|
+
_Validators._validate_http_response(response, 200, "get the token from refresh token")
|
|
148
|
+
|
|
149
|
+
return response.json()
|
|
150
|
+
|
|
151
|
+
else:
|
|
152
|
+
# Get the OPEN ID Configuration.
|
|
153
|
+
open_id_config = self.__get_openid_config()
|
|
154
|
+
self.oauth_end_point = open_id_config["token_endpoint"]
|
|
155
|
+
|
|
156
|
+
# Create code verifier.
|
|
157
|
+
code_verifier = secrets.token_urlsafe(96)[:128]
|
|
158
|
+
|
|
159
|
+
# Create code challenge from code verifier.
|
|
160
|
+
hashed_verifier: bytes = hashlib.sha256(code_verifier.encode("ascii")).digest()
|
|
161
|
+
b64encoded_hashed_verifier = base64.urlsafe_b64encode(hashed_verifier)
|
|
162
|
+
code_challenge: str = b64encoded_hashed_verifier.decode("ascii")
|
|
163
|
+
# (remove '=' padding)
|
|
164
|
+
code_challenge = code_challenge[:-1]
|
|
165
|
+
|
|
166
|
+
# Get the login page & relevant data.
|
|
167
|
+
action_url = self.__get_login_page_action_url(open_id_config["authorization_endpoint"], code_challenge)
|
|
168
|
+
|
|
169
|
+
# Submit login info and get code
|
|
170
|
+
code = self.__get_authorization_code(action_url, username, password, **kwargs)
|
|
171
|
+
|
|
172
|
+
# Exchange code for token.
|
|
173
|
+
token_data = self.__get_jwt_token_with_code(open_id_config["token_endpoint"], code, code_verifier)
|
|
174
|
+
|
|
175
|
+
return token_data
|
|
176
|
+
|
|
177
|
+
def __get_openid_config(self):
|
|
178
|
+
"""
|
|
179
|
+
DESCRIPTION:
|
|
180
|
+
Internal function to fetch the OPEN ID Configuration.
|
|
181
|
+
|
|
182
|
+
PARAMETERS:
|
|
183
|
+
None
|
|
184
|
+
|
|
185
|
+
RETURNS:
|
|
186
|
+
dict
|
|
187
|
+
|
|
188
|
+
RAISES:
|
|
189
|
+
None
|
|
190
|
+
"""
|
|
191
|
+
response = self.__session.get("{}{}".format(self.__base_url, self.__open_id_configuration_resource))
|
|
192
|
+
|
|
193
|
+
# Check the status. If response is not 200, raise error.
|
|
194
|
+
_Validators._validate_http_response(response, 200, "get the configuration")
|
|
195
|
+
|
|
196
|
+
return response.json()
|
|
197
|
+
|
|
198
|
+
def __get_login_page_action_url(self, auth_url, code_challenge):
|
|
199
|
+
"""
|
|
200
|
+
DESCRIPTION:
|
|
201
|
+
Internal function to get the login URL to post the credentials.
|
|
202
|
+
|
|
203
|
+
PARAMETERS:
|
|
204
|
+
auth_url:
|
|
205
|
+
Required Argument.
|
|
206
|
+
Specifies the Authentication URL.
|
|
207
|
+
Types: str
|
|
208
|
+
|
|
209
|
+
code_challenge:
|
|
210
|
+
Required Argument.
|
|
211
|
+
Specifies the Code Challenge to sent to Authentication URL.
|
|
212
|
+
Types: str
|
|
213
|
+
|
|
214
|
+
RETURNS:
|
|
215
|
+
str
|
|
216
|
+
|
|
217
|
+
RAISES:
|
|
218
|
+
TeradataMlException
|
|
219
|
+
"""
|
|
220
|
+
# Fetch the html login page.
|
|
221
|
+
# Send the Code Challenge along with client id and redirect URL.
|
|
222
|
+
# The response will be a HTML code which contains URL to post the
|
|
223
|
+
# username and password.
|
|
224
|
+
response = self.__session.get(
|
|
225
|
+
url=auth_url,
|
|
226
|
+
params={
|
|
227
|
+
"response_type": "code",
|
|
228
|
+
"code_challenge": code_challenge,
|
|
229
|
+
"code_challenge_method": "S256",
|
|
230
|
+
"client_id": self.__client_id,
|
|
231
|
+
"redirect_uri": self.__redirect_url,
|
|
232
|
+
"scope": "openid",
|
|
233
|
+
}
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
# Check the status. If response is not 200, raise error.
|
|
237
|
+
_Validators._validate_http_response(response, 200, "get the login details")
|
|
238
|
+
|
|
239
|
+
login_page = response.text
|
|
240
|
+
|
|
241
|
+
# Parse the html page using regex to find Form Action URL
|
|
242
|
+
return re.search(r'\s+action="([^"]+)"', login_page).group(1)
|
|
243
|
+
|
|
244
|
+
def __get_authorization_code(self, action_url, username, password, **kwargs):
|
|
245
|
+
"""
|
|
246
|
+
DESCRIPTION:
|
|
247
|
+
Internal function to get the Authorization code using the credentials.
|
|
248
|
+
Note that response is not JWT code. It is an Authorization code and
|
|
249
|
+
using the Authorization code, Access code(JWT Token) is retrieved.
|
|
250
|
+
|
|
251
|
+
PARAMETERS:
|
|
252
|
+
action_url:
|
|
253
|
+
Required Parameter.
|
|
254
|
+
Specifies the Authorization URL to which username and password to be posted.
|
|
255
|
+
Types: str
|
|
256
|
+
|
|
257
|
+
username:
|
|
258
|
+
Required Argument.
|
|
259
|
+
Specifies the Username for which token is requested for.
|
|
260
|
+
Types: str
|
|
261
|
+
|
|
262
|
+
password:
|
|
263
|
+
Required Argument.
|
|
264
|
+
Specifies the password for "username" for which token is requested for.
|
|
265
|
+
Types: str
|
|
266
|
+
|
|
267
|
+
kwargs:
|
|
268
|
+
Optional Argument.
|
|
269
|
+
Specifies keyword arguments. Reserved for MFA.
|
|
270
|
+
|
|
271
|
+
RETURNS:
|
|
272
|
+
Authorization token, str.
|
|
273
|
+
|
|
274
|
+
RAISES:
|
|
275
|
+
None
|
|
276
|
+
|
|
277
|
+
EXAMPLES :
|
|
278
|
+
>>> _PKCEClient("client_id", "base_url").__get_authorization_code("http://some.client", "user", "password")
|
|
279
|
+
"""
|
|
280
|
+
data = {self.__username_label: username, self.__password_label: password}
|
|
281
|
+
|
|
282
|
+
# Update the data with kwargs if it has any data.
|
|
283
|
+
if kwargs:
|
|
284
|
+
data = data.update(kwargs)
|
|
285
|
+
|
|
286
|
+
response = self.__session.post(
|
|
287
|
+
url="{}{}".format(self.__base_url, action_url),
|
|
288
|
+
headers=self.__html_form_headers,
|
|
289
|
+
data=data
|
|
290
|
+
)
|
|
291
|
+
|
|
292
|
+
# We expect a 302 (redirect) response at this point
|
|
293
|
+
_Validators._validate_http_response(response, 302, "get the Authorization code")
|
|
294
|
+
|
|
295
|
+
# Extract the code from the location header (e.g. "http://localhost?code=xyz")
|
|
296
|
+
location_url = response.headers["location"]
|
|
297
|
+
parsed_url = urlparse(location_url)
|
|
298
|
+
return parse_qs(parsed_url.query)["code"][0]
|
|
299
|
+
|
|
300
|
+
def __get_jwt_token_with_code(self, token_url, code, code_verifier):
|
|
301
|
+
|
|
302
|
+
# Request token data using code and code_verifier
|
|
303
|
+
# Again submit the form with Authorization code recieved from
|
|
304
|
+
# __get_authorization_code along with form headers.
|
|
305
|
+
|
|
306
|
+
response = self.__session.post(
|
|
307
|
+
url=token_url,
|
|
308
|
+
headers=self.__html_form_headers,
|
|
309
|
+
data={
|
|
310
|
+
"grant_type": "authorization_code",
|
|
311
|
+
"client_id": self.__client_id,
|
|
312
|
+
"code_verifier": code_verifier,
|
|
313
|
+
"code": code,
|
|
314
|
+
"redirect_uri": self.__redirect_url
|
|
315
|
+
}
|
|
316
|
+
)
|
|
317
|
+
|
|
318
|
+
# We expect a 200 (redirect) response at this point
|
|
319
|
+
_Validators._validate_http_response(response, 200, "get the JWT Token")
|
|
320
|
+
|
|
321
|
+
return response.json()
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
class _DAWorkflow:
|
|
325
|
+
"""
|
|
326
|
+
Get the Authorization code from any server which support Device Authorization.
|
|
327
|
+
"""
|
|
328
|
+
def __init__(self, base_url, client_id):
|
|
329
|
+
"""
|
|
330
|
+
DESCRIPTION:
|
|
331
|
+
Constructor to initiate Device Authentication work flow.
|
|
332
|
+
|
|
333
|
+
PARAMETERS:
|
|
334
|
+
base_url:
|
|
335
|
+
Required Argument.
|
|
336
|
+
Specifies the base URL of OAuth Server.
|
|
337
|
+
Types: str
|
|
338
|
+
|
|
339
|
+
client_id:
|
|
340
|
+
Required Argument.
|
|
341
|
+
Specifies the client id of OAuth Server. One should get the client id from OAuth server.
|
|
342
|
+
Types: str
|
|
343
|
+
|
|
344
|
+
RETURNS:
|
|
345
|
+
Instance of _DAWorkflow.
|
|
346
|
+
|
|
347
|
+
RAISES:
|
|
348
|
+
None
|
|
349
|
+
|
|
350
|
+
EXAMPLES :
|
|
351
|
+
>>> _DAWorkflow("base_url", "client_id")
|
|
352
|
+
"""
|
|
353
|
+
self.__base_url = base_url
|
|
354
|
+
self.__client_id = client_id
|
|
355
|
+
|
|
356
|
+
self.device_auth_end_point = None
|
|
357
|
+
self.__token_endpoint = None
|
|
358
|
+
self.__open_id_configuration_resource = "/auth/.well-known/openid-configuration"
|
|
359
|
+
|
|
360
|
+
def _get_token_data(self):
|
|
361
|
+
"""
|
|
362
|
+
DESCRIPTION:
|
|
363
|
+
Function to fetch the Authentication token.
|
|
364
|
+
|
|
365
|
+
PARAMETERS:
|
|
366
|
+
None.
|
|
367
|
+
|
|
368
|
+
RETURNS:
|
|
369
|
+
dict.
|
|
370
|
+
|
|
371
|
+
RAISES:
|
|
372
|
+
None
|
|
373
|
+
|
|
374
|
+
EXAMPLES :
|
|
375
|
+
>>> _DAWorkflow("base_url", "client_id")._get_token_data()
|
|
376
|
+
"""
|
|
377
|
+
# Get the Device endpoint and token endpoint.
|
|
378
|
+
openid_cfg = self.__get_openid_config()
|
|
379
|
+
self.device_auth_end_point = openid_cfg["device_authorization_endpoint"]
|
|
380
|
+
self.__token_endpoint = openid_cfg["token_endpoint"]
|
|
381
|
+
|
|
382
|
+
# Get the device metadata.
|
|
383
|
+
device_cfg = self.__get_device_config()
|
|
384
|
+
|
|
385
|
+
# Get the Access token data.
|
|
386
|
+
token_data = self.__get_access_token_data(device_cfg)
|
|
387
|
+
return token_data
|
|
388
|
+
|
|
389
|
+
def __get_openid_config(self):
|
|
390
|
+
"""
|
|
391
|
+
DESCRIPTION:
|
|
392
|
+
Internal function to fetch the OPEN ID Configuration.
|
|
393
|
+
|
|
394
|
+
PARAMETERS:
|
|
395
|
+
None.
|
|
396
|
+
|
|
397
|
+
RETURNS:
|
|
398
|
+
dict.
|
|
399
|
+
|
|
400
|
+
RAISES:
|
|
401
|
+
TeradataMlException.
|
|
402
|
+
"""
|
|
403
|
+
# Fetch the metadata to get the DA details.
|
|
404
|
+
metadata_response = requests.get(
|
|
405
|
+
url="{}{}".format(self.__base_url, self.__open_id_configuration_resource))
|
|
406
|
+
|
|
407
|
+
# Check the status. If response is not 200, raise error.
|
|
408
|
+
_Validators._validate_http_response(metadata_response, 200, "get the configuration")
|
|
409
|
+
|
|
410
|
+
return metadata_response.json()
|
|
411
|
+
|
|
412
|
+
def __get_device_config(self):
|
|
413
|
+
"""
|
|
414
|
+
DESCRIPTION:
|
|
415
|
+
Internal function to fetch the device Configuration.
|
|
416
|
+
|
|
417
|
+
PARAMETERS:
|
|
418
|
+
None.
|
|
419
|
+
|
|
420
|
+
RETURNS:
|
|
421
|
+
dict.
|
|
422
|
+
|
|
423
|
+
RAISES:
|
|
424
|
+
TeradataMlException.
|
|
425
|
+
"""
|
|
426
|
+
device_cfg = requests.post(
|
|
427
|
+
url=self.device_auth_end_point,
|
|
428
|
+
data={'client_id': self.__client_id})
|
|
429
|
+
|
|
430
|
+
# Check the status. If response is not 200, raise error.
|
|
431
|
+
_Validators._validate_http_response(device_cfg, 200, "get the device metadata")
|
|
432
|
+
|
|
433
|
+
return device_cfg.json()
|
|
434
|
+
|
|
435
|
+
def __get_access_token_data(self, device_cfg):
|
|
436
|
+
"""
|
|
437
|
+
DESCRIPTION:
|
|
438
|
+
Internal function to fetch the Access token data.
|
|
439
|
+
|
|
440
|
+
PARAMETERS:
|
|
441
|
+
None.
|
|
442
|
+
|
|
443
|
+
RETURNS:
|
|
444
|
+
dict.
|
|
445
|
+
|
|
446
|
+
RAISES:
|
|
447
|
+
TeradataMlException.
|
|
448
|
+
"""
|
|
449
|
+
# Open the browser.
|
|
450
|
+
verification_uri = device_cfg['verification_uri_complete']
|
|
451
|
+
print("Opening the browser with URL - {}".format(verification_uri))
|
|
452
|
+
|
|
453
|
+
if webbrowser.open(verification_uri):
|
|
454
|
+
print("\nOpened a session in browser. Authenticate yourself in the browser. "
|
|
455
|
+
"In case if not able to access the opened session in browser, "
|
|
456
|
+
"Open a session in any browser on any machine using URL - {}".format(verification_uri))
|
|
457
|
+
else:
|
|
458
|
+
print("\nCould not open the browser. Open a session in browser on any machine using URL - {}"
|
|
459
|
+
" Authenticate yourself in the browser.".format(verification_uri))
|
|
460
|
+
|
|
461
|
+
# Get the maximum time for polling the token endpoint.
|
|
462
|
+
max_wait = time() + device_cfg['expires_in']
|
|
463
|
+
token_data = {
|
|
464
|
+
'client_id': self.__client_id,
|
|
465
|
+
'grant_type': 'urn:ietf:params:oauth:grant-type:device_code',
|
|
466
|
+
'device_code': device_cfg['device_code']
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
# Poll the token endpoint at the specified interval for an access token.
|
|
470
|
+
while time() < max_wait:
|
|
471
|
+
poll_response = requests.post(
|
|
472
|
+
url=self.__token_endpoint,
|
|
473
|
+
data=token_data)
|
|
474
|
+
|
|
475
|
+
if poll_response.status_code == 200:
|
|
476
|
+
return poll_response.json()
|
|
477
|
+
else:
|
|
478
|
+
sleep(device_cfg['interval'])
|
|
479
|
+
|
|
480
|
+
# We expect response at this point
|
|
481
|
+
_Validators._validate_http_response(poll_response, 200, "get the access Token")
|