snowflake-ml-python 1.6.1__tar.gz → 1.6.2__tar.gz
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.
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/CHANGELOG.md +21 -2
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/PKG-INFO +23 -4
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/pyproject.toml +1 -1
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/telemetry.py +142 -20
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/identifier.py +48 -11
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/snowflake_env.py +23 -13
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/sql_identifier.py +1 -1
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/table_manager.py +19 -1
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/uri.py +2 -2
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/data/data_connector.py +33 -7
- snowflake_ml_python-1.6.2/snowflake/ml/data/torch_utils.py +68 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/dataset/dataset.py +1 -3
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/feature_store.py +41 -17
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/feature_view.py +2 -2
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/embedded_stage_fs.py +1 -1
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/fileset.py +1 -1
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/sfcfs.py +9 -3
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/model/model_version_impl.py +22 -7
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/ops/model_ops.py +39 -3
- snowflake_ml_python-1.6.2/snowflake/ml/model/_client/ops/service_ops.py +312 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/service/model_deployment_spec.py +4 -5
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +1 -2
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/sql/service.py +85 -18
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/server_image_builder.py +1 -1
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/snowservice/deploy.py +3 -3
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_model_composer/model_composer.py +2 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +3 -8
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/_utils.py +46 -14
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/catboost.py +17 -15
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/huggingface_pipeline.py +23 -15
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +15 -57
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/llm.py +4 -2
- snowflake_ml_python-1.6.2/snowflake/ml/model/_packager/model_handlers/model_objective_utils.py +116 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/sklearn.py +36 -24
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +119 -6
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/torchscript.py +2 -2
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/xgboost.py +48 -48
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta/model_meta.py +10 -7
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -8
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_packager.py +2 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/pytorch_handler.py +1 -1
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/utils.py +9 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/models/llm.py +3 -1
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/type_hints.py +9 -1
- snowflake_ml_python-1.6.2/snowflake/ml/modeling/_internal/constants.py +2 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +5 -5
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +9 -6
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/model_specifications.py +2 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/model_trainer.py +1 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +2 -2
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +5 -5
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +113 -160
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/affinity_propagation.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/birch.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/bisecting_k_means.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/dbscan.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/feature_agglomeration.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/k_means.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/mean_shift.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/optics.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/spectral_biclustering.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/spectral_clustering.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/spectral_coclustering.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/compose/column_transformer.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/compose/transformed_target_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/elliptic_envelope.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/empirical_covariance.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/graphical_lasso.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/ledoit_wolf.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/min_cov_det.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/oas.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/shrunk_covariance.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/dictionary_learning.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/factor_analysis.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/fast_ica.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/incremental_pca.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/kernel_pca.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/pca.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/sparse_pca.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/truncated_svd.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/bagging_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/bagging_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/isolation_forest.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/stacking_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/voting_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/voting_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/select_fdr.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/select_fpr.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/select_fwe.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/select_k_best.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/select_percentile.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/variance_threshold.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/impute/iterative_imputer.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/impute/knn_imputer.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/impute/missing_indicator.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_approximation/nystroem.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/ard_regression.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/elastic_net.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/gamma_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/huber_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/lars.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/lars_cv.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/lasso.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/lasso_cv.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/lasso_lars.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/linear_regression.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/logistic_regression.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/perceptron.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/poisson_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/ransac_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/ridge.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/ridge_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/ridge_cv.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/sgd_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/sgd_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/manifold/isomap.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/manifold/mds.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/manifold/spectral_embedding.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/manifold/tsne.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/mixture/gaussian_mixture.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/multiclass/output_code_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/naive_bayes/complement_nb.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/kernel_density.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/nearest_centroid.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neural_network/mlp_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neural_network/mlp_regressor.py +60 -21
- snowflake_ml_python-1.6.2/snowflake/ml/modeling/parameters/disable_model_tracer.py +5 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/pipeline/pipeline.py +1 -12
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/polynomial_features.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/semi_supervised/label_propagation.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/semi_supervised/label_spreading.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/svm/linear_svc.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/svm/linear_svr.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/svm/nu_svc.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/svm/nu_svr.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/svm/svc.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/svm/svr.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/tree/decision_tree_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/tree/decision_tree_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/tree/extra_tree_classifier.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/tree/extra_tree_regressor.py +60 -21
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/xgboost/xgb_classifier.py +63 -23
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/xgboost/xgb_regressor.py +63 -23
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +63 -23
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +63 -23
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/_manager/model_manager.py +4 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/model_registry.py +1 -1
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/registry.py +1 -2
- snowflake_ml_python-1.6.2/snowflake/ml/version.py +1 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake_ml_python.egg-info/PKG-INFO +23 -4
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake_ml_python.egg-info/SOURCES.txt +3 -1
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake_ml_python.egg-info/requires.txt +1 -1
- snowflake_ml_python-1.6.1/snowflake/ml/data/torch_dataset.py +0 -33
- snowflake_ml_python-1.6.1/snowflake/ml/model/_client/ops/service_ops.py +0 -121
- snowflake_ml_python-1.6.1/snowflake/ml/modeling/_internal/constants.py +0 -1
- snowflake_ml_python-1.6.1/snowflake/ml/version.py +0 -1
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/LICENSE.txt +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/README.md +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/setup.cfg +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/cortex/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/cortex/_classify_text.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/cortex/_complete.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/cortex/_extract_answer.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/cortex/_sentiment.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/cortex/_sse_client.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/cortex/_summarize.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/cortex/_translate.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/cortex/_util.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/container_services/image_registry/credential.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/container_services/image_registry/http_client.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/container_services/image_registry/imagelib.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/container_services/image_registry/registry_client.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/env.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/env_utils.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/file_utils.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/init_utils.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/migrator_utils.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/type_utils.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/formatting.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/import_utils.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/log_stream_processor.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/parallelize.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/result.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/retryable_http.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/session_token_manager.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/spcs_attribution_utils.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/data/data_ingestor.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/data/data_source.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/data/ingestor_utils.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/dataset/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/dataset/dataset_factory.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/dataset/dataset_metadata.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/dataset/dataset_reader.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/access_manager.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/entity.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/parquet_parser.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/snowfs.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/stage_fs.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/tf_dataset.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/torch_datapipe.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/lineage/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/lineage/lineage_node.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_api.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/model/model_impl.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/sql/_base.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/sql/model.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/sql/model_version.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/sql/stage.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/sql/tag.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/base_image_builder.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/client_image_builder.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/docker_context.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/gunicorn_run.sh +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/inference_server/main.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/templates/dockerfile_template +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/templates/image_build_job_spec_template +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/templates/kaniko_shell_script_template +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/snowservice/deploy_options.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/snowservice/instance_types.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/snowservice/templates/service_spec_template +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/snowservice/templates/service_spec_template_with_model +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/utils/constants.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/utils/snowservice_client.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/warehouse/deploy.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/warehouse/infer_template.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_env/model_env.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handler.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta/_core_requirements.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta/_packaging_requirements.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/base_handler.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/core.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/custom_model.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/deploy_platforms.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/model_signature.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/ml_runtime_implementations/ml_runtime_handlers.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/ml_runtime_implementations/ml_runtime_trainer.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/calibration/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/compose/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/framework/_utils.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/framework/base.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/impute/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/manifold/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/metrics/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/metrics/classification.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/metrics/correlation.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/metrics/covariance.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/metrics/ranking.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/metrics/regression.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/mixture/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/svm/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/tree/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/monitoring/monitor.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/monitoring/shap.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/__init__.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/_initial_schema.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/_schema.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/_schema_upgrade_plans.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/_schema_version_manager.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/utils/sparse.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/utils/sql_client.py +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
- {snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake_ml_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,26 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
-
## 1.6.
|
3
|
+
## 1.6.2 (TBD)
|
4
|
+
|
5
|
+
### Bug Fixes
|
6
|
+
|
7
|
+
- Modeling: Support XGBoost version that is larger than 2.
|
8
|
+
|
9
|
+
- Data: Fix multiple epoch iteration over `DataConnector.to_torch_datapipe()` DataPipes.
|
10
|
+
- Generic: Fix a bug that when an invalid name is provided to argument where fully qualified name is expected, it will
|
11
|
+
be parsed wrongly. Now it raises an exception correctly.
|
12
|
+
- Model Explainability: Handle explanations for multiclass XGBoost classification models
|
13
|
+
- Model Explainability: Workarounds and better error handling for XGB>2.1.0 not working with SHAP==0.42.1
|
14
|
+
|
15
|
+
### New Features
|
16
|
+
|
17
|
+
- Data: Add top-level exports for `DataConnector` and `DataSource` to `snowflake.ml.data`.
|
18
|
+
- Data: Add native batching support via `batch_size` and `drop_last_batch` arguments to `DataConnector.to_torch_dataset()`
|
19
|
+
- Feature Store: update_feature_view() supports taking feature view object as argument.
|
20
|
+
|
21
|
+
### Behavior Changes
|
22
|
+
|
23
|
+
## 1.6.1 (2024-08-12)
|
4
24
|
|
5
25
|
### Bug Fixes
|
6
26
|
|
@@ -17,7 +37,6 @@
|
|
17
37
|
### New Features
|
18
38
|
|
19
39
|
- Enable `set_params` to set the parameters of the underlying sklearn estimator, if the snowflake-ml model has been fit.
|
20
|
-
- Data: Add top-level exports for `DataConnector` and `DataSource` to `snowflake.ml.data`.
|
21
40
|
- Data: Add `snowflake.ml.data.ingestor_utils` module with utility functions helpful for `DataIngestor` implementations.
|
22
41
|
- Data: Add new `to_torch_dataset()` connector to `DataConnector` to replace deprecated DataPipe.
|
23
42
|
- Registry: Option to `enable_explainability` set to True by default for XGBoost, LightGBM and CatBoost as PuPr feature.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: snowflake-ml-python
|
3
|
-
Version: 1.6.
|
3
|
+
Version: 1.6.2
|
4
4
|
Summary: The machine learning client library that is used for interacting with Snowflake to build machine learning solutions.
|
5
5
|
Author-email: "Snowflake, Inc" <support@snowflake.com>
|
6
6
|
License:
|
@@ -253,7 +253,7 @@ Requires-Dist: snowflake-connector-python[pandas]<4,>=3.5.0
|
|
253
253
|
Requires-Dist: snowflake-snowpark-python<2,>=1.17.0
|
254
254
|
Requires-Dist: sqlparse<1,>=0.4
|
255
255
|
Requires-Dist: typing-extensions<5,>=4.1.0
|
256
|
-
Requires-Dist: xgboost<2,>=1.7.3
|
256
|
+
Requires-Dist: xgboost<2.1,>=1.7.3
|
257
257
|
Provides-Extra: all
|
258
258
|
Requires-Dist: catboost<2,>=1.2.0; extra == "all"
|
259
259
|
Requires-Dist: lightgbm<5,>=3.3.5; extra == "all"
|
@@ -373,7 +373,27 @@ be compatibility issues. Server-side functionality that `snowflake-ml-python` de
|
|
373
373
|
|
374
374
|
# Release History
|
375
375
|
|
376
|
-
## 1.6.
|
376
|
+
## 1.6.2 (TBD)
|
377
|
+
|
378
|
+
### Bug Fixes
|
379
|
+
|
380
|
+
- Modeling: Support XGBoost version that is larger than 2.
|
381
|
+
|
382
|
+
- Data: Fix multiple epoch iteration over `DataConnector.to_torch_datapipe()` DataPipes.
|
383
|
+
- Generic: Fix a bug that when an invalid name is provided to argument where fully qualified name is expected, it will
|
384
|
+
be parsed wrongly. Now it raises an exception correctly.
|
385
|
+
- Model Explainability: Handle explanations for multiclass XGBoost classification models
|
386
|
+
- Model Explainability: Workarounds and better error handling for XGB>2.1.0 not working with SHAP==0.42.1
|
387
|
+
|
388
|
+
### New Features
|
389
|
+
|
390
|
+
- Data: Add top-level exports for `DataConnector` and `DataSource` to `snowflake.ml.data`.
|
391
|
+
- Data: Add native batching support via `batch_size` and `drop_last_batch` arguments to `DataConnector.to_torch_dataset()`
|
392
|
+
- Feature Store: update_feature_view() supports taking feature view object as argument.
|
393
|
+
|
394
|
+
### Behavior Changes
|
395
|
+
|
396
|
+
## 1.6.1 (2024-08-12)
|
377
397
|
|
378
398
|
### Bug Fixes
|
379
399
|
|
@@ -390,7 +410,6 @@ be compatibility issues. Server-side functionality that `snowflake-ml-python` de
|
|
390
410
|
### New Features
|
391
411
|
|
392
412
|
- Enable `set_params` to set the parameters of the underlying sklearn estimator, if the snowflake-ml model has been fit.
|
393
|
-
- Data: Add top-level exports for `DataConnector` and `DataSource` to `snowflake.ml.data`.
|
394
413
|
- Data: Add `snowflake.ml.data.ingestor_utils` module with utility functions helpful for `DataIngestor` implementations.
|
395
414
|
- Data: Add new `to_torch_dataset()` connector to `DataConnector` to replace deprecated DataPipe.
|
396
415
|
- Registry: Option to `enable_explainability` set to True by default for XGBoost, LightGBM and CatBoost as PuPr feature.
|
@@ -8,7 +8,7 @@ description = "The machine learning client library that is used for interacting
|
|
8
8
|
classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: Other Environment", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Topic :: Database", "Topic :: Software Development", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Scientific/Engineering :: Information Analysis",]
|
9
9
|
requires-python = ">=3.8, <3.12"
|
10
10
|
dynamic = [ "version", "readme",]
|
11
|
-
dependencies = [ "absl-py>=0.15,<2", "anyio>=3.5.0,<4", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "fsspec[http]>=2022.11,<2024", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<2", "packaging>=20.9,<24", "pandas>=1.0.0,<3", "pyarrow", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "s3fs>=2022.11,<2024", "scikit-learn>=1.2.1,<1.4", "scipy>=1.9,<2", "snowflake-connector-python[pandas]>=3.5.0,<4", "snowflake-snowpark-python>=1.17.0,<2", "sqlparse>=0.4,<1", "typing-extensions>=4.1.0,<5", "xgboost>=1.7.3,<2",]
|
11
|
+
dependencies = [ "absl-py>=0.15,<2", "anyio>=3.5.0,<4", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "fsspec[http]>=2022.11,<2024", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<2", "packaging>=20.9,<24", "pandas>=1.0.0,<3", "pyarrow", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "s3fs>=2022.11,<2024", "scikit-learn>=1.2.1,<1.4", "scipy>=1.9,<2", "snowflake-connector-python[pandas]>=3.5.0,<4", "snowflake-snowpark-python>=1.17.0,<2", "sqlparse>=0.4,<1", "typing-extensions>=4.1.0,<5", "xgboost>=1.7.3,<2.1",]
|
12
12
|
[[project.authors]]
|
13
13
|
name = "Snowflake, Inc"
|
14
14
|
email = "support@snowflake.com"
|
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env python3
|
2
|
+
import contextvars
|
2
3
|
import enum
|
3
4
|
import functools
|
4
5
|
import inspect
|
@@ -12,6 +13,7 @@ from typing import (
|
|
12
13
|
List,
|
13
14
|
Mapping,
|
14
15
|
Optional,
|
16
|
+
Set,
|
15
17
|
Tuple,
|
16
18
|
TypeVar,
|
17
19
|
Union,
|
@@ -28,7 +30,7 @@ from snowflake.ml._internal.exceptions import (
|
|
28
30
|
exceptions as snowml_exceptions,
|
29
31
|
)
|
30
32
|
from snowflake.snowpark import dataframe, exceptions as snowpark_exceptions, session
|
31
|
-
from snowflake.snowpark._internal import utils
|
33
|
+
from snowflake.snowpark._internal import server_connection, utils
|
32
34
|
|
33
35
|
_log_counter = 0
|
34
36
|
_FLUSH_SIZE = 10
|
@@ -85,6 +87,122 @@ class TelemetryField(enum.Enum):
|
|
85
87
|
FUNC_CAT_USAGE = "usage"
|
86
88
|
|
87
89
|
|
90
|
+
class _TelemetrySourceType(enum.Enum):
|
91
|
+
# Automatically inferred telemetry/statement parameters
|
92
|
+
AUTO_TELEMETRY = "SNOWML_AUTO_TELEMETRY"
|
93
|
+
# Mixture of manual and automatic telemetry/statement parameters
|
94
|
+
AUGMENT_TELEMETRY = "SNOWML_AUGMENT_TELEMETRY"
|
95
|
+
|
96
|
+
|
97
|
+
_statement_params_context_var: contextvars.ContextVar[Dict[str, str]] = contextvars.ContextVar("statement_params")
|
98
|
+
|
99
|
+
|
100
|
+
class _StatementParamsPatchManager:
|
101
|
+
def __init__(self) -> None:
|
102
|
+
self._patch_cache: Set[server_connection.ServerConnection] = set()
|
103
|
+
self._context_var: contextvars.ContextVar[Dict[str, str]] = _statement_params_context_var
|
104
|
+
|
105
|
+
def apply_patches(self) -> None:
|
106
|
+
try:
|
107
|
+
# Apply patching to all active sessions in case of multiple
|
108
|
+
for sess in session._get_active_sessions():
|
109
|
+
# Check patch cache here to avoid unnecessary context switches
|
110
|
+
if self._get_target(sess) not in self._patch_cache:
|
111
|
+
self._patch_session(sess)
|
112
|
+
except snowpark_exceptions.SnowparkSessionException:
|
113
|
+
pass
|
114
|
+
|
115
|
+
def set_statement_params(self, statement_params: Dict[str, str]) -> None:
|
116
|
+
# Only set value if not already set in context
|
117
|
+
if not self._context_var.get({}):
|
118
|
+
self._context_var.set(statement_params)
|
119
|
+
|
120
|
+
def _get_target(self, session: session.Session) -> server_connection.ServerConnection:
|
121
|
+
return cast(server_connection.ServerConnection, session._conn)
|
122
|
+
|
123
|
+
def _patch_session(self, session: session.Session, throw_on_patch_fail: bool = False) -> None:
|
124
|
+
# Extract target
|
125
|
+
try:
|
126
|
+
target = self._get_target(session)
|
127
|
+
except AttributeError:
|
128
|
+
if throw_on_patch_fail:
|
129
|
+
raise
|
130
|
+
# TODO: Log a warning, this probably means there was a breaking change in Snowpark/SnowflakeConnection
|
131
|
+
return
|
132
|
+
|
133
|
+
# Check if session has already been patched
|
134
|
+
if target in self._patch_cache:
|
135
|
+
return
|
136
|
+
self._patch_cache.add(target)
|
137
|
+
|
138
|
+
functions = [
|
139
|
+
("execute_and_notify_query_listener", "_statement_params"),
|
140
|
+
("execute_async_and_notify_query_listener", "_statement_params"),
|
141
|
+
]
|
142
|
+
|
143
|
+
for func, param_name in functions:
|
144
|
+
try:
|
145
|
+
self._patch_with_statement_params(target, func, param_name=param_name)
|
146
|
+
except AttributeError:
|
147
|
+
if throw_on_patch_fail: # primarily used for testing
|
148
|
+
raise
|
149
|
+
# TODO: Log a warning, this probably means there was a breaking change in Snowpark/SnowflakeConnection
|
150
|
+
pass
|
151
|
+
|
152
|
+
def _patch_with_statement_params(
|
153
|
+
self, target: object, function_name: str, param_name: str = "statement_params"
|
154
|
+
) -> None:
|
155
|
+
func = getattr(target, function_name)
|
156
|
+
assert callable(func)
|
157
|
+
|
158
|
+
@functools.wraps(func)
|
159
|
+
def wrapper(*args: Any, **kwargs: Any) -> Any:
|
160
|
+
# Retrieve context level statement parameters
|
161
|
+
context_params = self._context_var.get(dict())
|
162
|
+
if not context_params:
|
163
|
+
# Exit early if not in SnowML (decorator) context
|
164
|
+
return func(*args, **kwargs)
|
165
|
+
|
166
|
+
# Extract any explicitly provided statement parameters
|
167
|
+
orig_kwargs = dict(kwargs)
|
168
|
+
in_params = kwargs.pop(param_name, None) or {}
|
169
|
+
|
170
|
+
# Inject a special flag to statement parameters so we can filter out these patched logs if necessary
|
171
|
+
# Calls that include SnowML telemetry are tagged with "SNOWML_AUGMENT_TELEMETRY"
|
172
|
+
# and calls without SnowML telemetry are tagged with "SNOWML_AUTO_TELEMETRY"
|
173
|
+
if TelemetryField.KEY_PROJECT.value in in_params:
|
174
|
+
context_params["snowml_telemetry_type"] = _TelemetrySourceType.AUGMENT_TELEMETRY.value
|
175
|
+
else:
|
176
|
+
context_params["snowml_telemetry_type"] = _TelemetrySourceType.AUTO_TELEMETRY.value
|
177
|
+
|
178
|
+
# Apply any explicitly provided statement parameters and result into function call
|
179
|
+
context_params.update(in_params)
|
180
|
+
kwargs[param_name] = context_params
|
181
|
+
|
182
|
+
try:
|
183
|
+
return func(*args, **kwargs)
|
184
|
+
except TypeError as e:
|
185
|
+
if str(e).endswith(f"unexpected keyword argument '{param_name}'"):
|
186
|
+
# TODO: Log warning that this patch is invalid
|
187
|
+
# Unwrap function for future invocations
|
188
|
+
setattr(target, function_name, func)
|
189
|
+
return func(*args, **orig_kwargs)
|
190
|
+
else:
|
191
|
+
raise
|
192
|
+
|
193
|
+
setattr(target, function_name, wrapper)
|
194
|
+
|
195
|
+
def __getstate__(self) -> Dict[str, Any]:
|
196
|
+
return {}
|
197
|
+
|
198
|
+
def __setstate__(self, state: Dict[str, Any]) -> None:
|
199
|
+
# unpickling does not call __init__ by default, do it manually here
|
200
|
+
self.__init__() # type: ignore[misc]
|
201
|
+
|
202
|
+
|
203
|
+
_patch_manager = _StatementParamsPatchManager()
|
204
|
+
|
205
|
+
|
88
206
|
def get_statement_params(
|
89
207
|
project: str, subproject: Optional[str] = None, class_name: Optional[str] = None
|
90
208
|
) -> Dict[str, Any]:
|
@@ -375,7 +493,18 @@ def send_api_usage_telemetry(
|
|
375
493
|
obj._statement_params = statement_params # type: ignore[assignment]
|
376
494
|
return obj
|
377
495
|
|
496
|
+
# Set up framework-level credit usage instrumentation
|
497
|
+
ctx = contextvars.copy_context()
|
498
|
+
_patch_manager.apply_patches()
|
499
|
+
|
500
|
+
# This function should be executed with ctx.run()
|
501
|
+
def execute_func_with_statement_params() -> _ReturnValue:
|
502
|
+
_patch_manager.set_statement_params(statement_params)
|
503
|
+
result = func(*args, **kwargs)
|
504
|
+
return update_stmt_params_if_snowpark_df(result, statement_params)
|
505
|
+
|
378
506
|
# prioritize `conn_attr_name` over the active session
|
507
|
+
telemetry_enabled = True
|
379
508
|
if conn_attr_name:
|
380
509
|
# raise AttributeError if conn attribute does not exist in `self`
|
381
510
|
conn = operator.attrgetter(conn_attr_name)(args[0])
|
@@ -387,22 +516,17 @@ def send_api_usage_telemetry(
|
|
387
516
|
else:
|
388
517
|
try:
|
389
518
|
active_session = next(iter(session._get_active_sessions()))
|
390
|
-
|
519
|
+
conn = active_session._conn._conn
|
520
|
+
telemetry_enabled = active_session.telemetry_enabled
|
391
521
|
except snowpark_exceptions.SnowparkSessionException:
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
conn = active_session._conn._conn
|
401
|
-
if (not active_session.telemetry_enabled) or (conn is None):
|
402
|
-
try:
|
403
|
-
return update_stmt_params_if_snowpark_df(func(*args, **kwargs), statement_params)
|
404
|
-
except snowml_exceptions.SnowflakeMLException as e:
|
405
|
-
raise e.original_exception from e
|
522
|
+
conn = None
|
523
|
+
|
524
|
+
if conn is None or not telemetry_enabled:
|
525
|
+
# Telemetry not enabled, just execute without our additional telemetry logic
|
526
|
+
try:
|
527
|
+
return ctx.run(execute_func_with_statement_params)
|
528
|
+
except snowml_exceptions.SnowflakeMLException as e:
|
529
|
+
raise e.original_exception from e
|
406
530
|
|
407
531
|
# TODO(hayu): [SNOW-750287] Optimize telemetry client to a singleton.
|
408
532
|
telemetry = _SourceTelemetryClient(conn=conn, project=project, subproject=subproject_name)
|
@@ -415,11 +539,11 @@ def send_api_usage_telemetry(
|
|
415
539
|
custom_tags=custom_tags,
|
416
540
|
)
|
417
541
|
try:
|
418
|
-
|
542
|
+
return ctx.run(execute_func_with_statement_params)
|
419
543
|
except Exception as e:
|
420
544
|
if not isinstance(e, snowml_exceptions.SnowflakeMLException):
|
421
545
|
# already handled via a nested decorated function
|
422
|
-
if
|
546
|
+
if getattr(e, "_snowflake_ml_handled", False):
|
423
547
|
raise e
|
424
548
|
if isinstance(e, snowpark_exceptions.SnowparkClientException):
|
425
549
|
me = snowml_exceptions.SnowflakeMLException(
|
@@ -438,8 +562,6 @@ def send_api_usage_telemetry(
|
|
438
562
|
raise me.original_exception from None
|
439
563
|
else:
|
440
564
|
raise me.original_exception from e
|
441
|
-
else:
|
442
|
-
return update_stmt_params_if_snowpark_df(res, statement_params)
|
443
565
|
finally:
|
444
566
|
telemetry.send_function_usage_telemetry(**telemetry_args)
|
445
567
|
global _log_counter
|
{snowflake_ml_python-1.6.1 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/identifier.py
RENAMED
@@ -10,9 +10,11 @@ SF_QUOTED_IDENTIFIER = '"(?:[^"]|"")*"'
|
|
10
10
|
_SF_IDENTIFIER = f"({_SF_UNQUOTED_CASE_INSENSITIVE_IDENTIFIER}|{SF_QUOTED_IDENTIFIER})"
|
11
11
|
SF_IDENTIFIER_RE = re.compile(_SF_IDENTIFIER)
|
12
12
|
_SF_SCHEMA_LEVEL_OBJECT = (
|
13
|
-
rf"(?:(?:(?P<db>{_SF_IDENTIFIER})\.)?(?P<schema>{_SF_IDENTIFIER})\.)?(?P<object>{_SF_IDENTIFIER})
|
13
|
+
rf"(?:(?:(?P<db>{_SF_IDENTIFIER})\.)?(?P<schema>{_SF_IDENTIFIER})\.)?(?P<object>{_SF_IDENTIFIER})"
|
14
14
|
)
|
15
|
+
_SF_STAGE_PATH = rf"{_SF_SCHEMA_LEVEL_OBJECT}(?P<path>.*)"
|
15
16
|
_SF_SCHEMA_LEVEL_OBJECT_RE = re.compile(_SF_SCHEMA_LEVEL_OBJECT)
|
17
|
+
_SF_STAGE_PATH_RE = re.compile(_SF_STAGE_PATH)
|
16
18
|
|
17
19
|
UNQUOTED_CASE_INSENSITIVE_RE = re.compile(f"^({_SF_UNQUOTED_CASE_INSENSITIVE_IDENTIFIER})$")
|
18
20
|
UNQUOTED_CASE_SENSITIVE_RE = re.compile(f"^({_SF_UNQUOTED_CASE_SENSITIVE_IDENTIFIER})$")
|
@@ -139,29 +141,61 @@ def rename_to_valid_snowflake_identifier(name: str) -> str:
|
|
139
141
|
|
140
142
|
|
141
143
|
def parse_schema_level_object_identifier(
|
144
|
+
object_name: str,
|
145
|
+
) -> Tuple[Union[str, Any], Union[str, Any], Union[str, Any]]:
|
146
|
+
"""Parse a string which starts with schema level object.
|
147
|
+
|
148
|
+
Args:
|
149
|
+
object_name: A string starts with a schema level object path, which is in the format
|
150
|
+
'<db>.<schema>.<object_name>'. Here, '<db>', '<schema>' and '<object_name>' are all snowflake identifiers.
|
151
|
+
|
152
|
+
Returns:
|
153
|
+
A tuple of 3 strings in the form of (db, schema, object_name).
|
154
|
+
|
155
|
+
Raises:
|
156
|
+
ValueError: If the id is invalid.
|
157
|
+
"""
|
158
|
+
res = _SF_SCHEMA_LEVEL_OBJECT_RE.fullmatch(object_name)
|
159
|
+
if not res:
|
160
|
+
raise ValueError(
|
161
|
+
"Invalid identifier because it does not follow the pattern. "
|
162
|
+
f"It should start with [[database.]schema.]object. Getting {object_name}"
|
163
|
+
)
|
164
|
+
return (
|
165
|
+
res.group("db"),
|
166
|
+
res.group("schema"),
|
167
|
+
res.group("object"),
|
168
|
+
)
|
169
|
+
|
170
|
+
|
171
|
+
def parse_snowflake_stage_path(
|
142
172
|
path: str,
|
143
173
|
) -> Tuple[Union[str, Any], Union[str, Any], Union[str, Any], Union[str, Any]]:
|
144
|
-
"""Parse a string which
|
174
|
+
"""Parse a string which represents a snowflake stage path.
|
145
175
|
|
146
176
|
Args:
|
147
|
-
path: A string starts with a schema level object path, which is in the format
|
148
|
-
Here, '<db>', '<schema>' and '<object_name>' are all snowflake
|
177
|
+
path: A string starts with a schema level object path, which is in the format
|
178
|
+
'<db>.<schema>.<object_name><path>'. Here, '<db>', '<schema>' and '<object_name>' are all snowflake
|
179
|
+
identifiers.
|
149
180
|
|
150
181
|
Returns:
|
151
|
-
A tuple of 4 strings in the form of (db, schema, object_name,
|
152
|
-
from the schema level object and '
|
182
|
+
A tuple of 4 strings in the form of (db, schema, object_name, path). 'db', 'schema', 'object_name' are parsed
|
183
|
+
from the schema level object and 'path' are all the content post to the object.
|
153
184
|
|
154
185
|
Raises:
|
155
186
|
ValueError: If the id is invalid.
|
156
187
|
"""
|
157
|
-
res =
|
188
|
+
res = _SF_STAGE_PATH_RE.fullmatch(path)
|
158
189
|
if not res:
|
159
|
-
raise ValueError(
|
190
|
+
raise ValueError(
|
191
|
+
"Invalid identifier because it does not follow the pattern. "
|
192
|
+
f"It should start with [[database.]schema.]object. Getting {path}"
|
193
|
+
)
|
160
194
|
return (
|
161
195
|
res.group("db"),
|
162
196
|
res.group("schema"),
|
163
197
|
res.group("object"),
|
164
|
-
res.group("
|
198
|
+
res.group("path"),
|
165
199
|
)
|
166
200
|
|
167
201
|
|
@@ -175,8 +209,11 @@ def is_fully_qualified_name(name: str) -> bool:
|
|
175
209
|
Returns:
|
176
210
|
bool: True if the name is fully qualified, False otherwise.
|
177
211
|
"""
|
178
|
-
|
179
|
-
|
212
|
+
try:
|
213
|
+
res = parse_schema_level_object_identifier(name)
|
214
|
+
return all(res)
|
215
|
+
except ValueError:
|
216
|
+
return False
|
180
217
|
|
181
218
|
|
182
219
|
def get_schema_level_object_identifier(
|
@@ -2,7 +2,7 @@ import enum
|
|
2
2
|
from typing import Any, Dict, Optional, TypedDict, cast
|
3
3
|
|
4
4
|
from packaging import version
|
5
|
-
from typing_extensions import Required
|
5
|
+
from typing_extensions import NotRequired, Required
|
6
6
|
|
7
7
|
from snowflake.ml._internal.utils import query_result_checker
|
8
8
|
from snowflake.snowpark import session
|
@@ -52,7 +52,7 @@ class SnowflakeCloudType(enum.Enum):
|
|
52
52
|
|
53
53
|
|
54
54
|
class SnowflakeRegion(TypedDict):
|
55
|
-
region_group:
|
55
|
+
region_group: NotRequired[str]
|
56
56
|
snowflake_region: Required[str]
|
57
57
|
cloud: Required[SnowflakeCloudType]
|
58
58
|
region: Required[str]
|
@@ -64,23 +64,33 @@ def get_regions(
|
|
64
64
|
) -> Dict[str, SnowflakeRegion]:
|
65
65
|
res = (
|
66
66
|
query_result_checker.SqlResultValidator(sess, "SHOW REGIONS", statement_params=statement_params)
|
67
|
-
.has_column("region_group")
|
68
67
|
.has_column("snowflake_region")
|
69
68
|
.has_column("cloud")
|
70
69
|
.has_column("region")
|
71
70
|
.has_column("display_name")
|
72
71
|
.validate()
|
73
72
|
)
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
73
|
+
res_dict = {}
|
74
|
+
for r in res:
|
75
|
+
if hasattr(r, "region_group") and r.region_group:
|
76
|
+
key = f"{r.region_group}.{r.snowflake_region}"
|
77
|
+
res_dict[key] = SnowflakeRegion(
|
78
|
+
region_group=r.region_group,
|
79
|
+
snowflake_region=r.snowflake_region,
|
80
|
+
cloud=SnowflakeCloudType.from_value(r.cloud),
|
81
|
+
region=r.region,
|
82
|
+
display_name=r.display_name,
|
83
|
+
)
|
84
|
+
else:
|
85
|
+
key = r.snowflake_region
|
86
|
+
res_dict[key] = SnowflakeRegion(
|
87
|
+
snowflake_region=r.snowflake_region,
|
88
|
+
cloud=SnowflakeCloudType.from_value(r.cloud),
|
89
|
+
region=r.region,
|
90
|
+
display_name=r.display_name,
|
91
|
+
)
|
92
|
+
|
93
|
+
return res_dict
|
84
94
|
|
85
95
|
|
86
96
|
def get_current_region_id(sess: session.Session, *, statement_params: Optional[Dict[str, Any]] = None) -> str:
|
@@ -84,7 +84,7 @@ def to_sql_identifiers(list_of_str: List[str], *, case_sensitive: bool = False)
|
|
84
84
|
def parse_fully_qualified_name(
|
85
85
|
name: str,
|
86
86
|
) -> Tuple[Optional[SqlIdentifier], Optional[SqlIdentifier], SqlIdentifier]:
|
87
|
-
db, schema, object
|
87
|
+
db, schema, object = identifier.parse_schema_level_object_identifier(name)
|
88
88
|
|
89
89
|
assert name is not None, f"Unable parse the input name `{name}` as fully qualified."
|
90
90
|
return (
|
@@ -1,7 +1,8 @@
|
|
1
1
|
from typing import Any, Dict, List, Optional, Tuple
|
2
2
|
|
3
3
|
from snowflake import snowpark
|
4
|
-
from snowflake.ml._internal.utils import formatting, query_result_checker
|
4
|
+
from snowflake.ml._internal.utils import formatting, identifier, query_result_checker
|
5
|
+
from snowflake.snowpark import types
|
5
6
|
|
6
7
|
"""Table_manager is a set of utils that helps create tables.
|
7
8
|
|
@@ -104,3 +105,20 @@ def get_table_schema(session: snowpark.Session, table_name: str, qualified_schem
|
|
104
105
|
for row in result:
|
105
106
|
schema_dict[row["name"]] = row["type"]
|
106
107
|
return schema_dict
|
108
|
+
|
109
|
+
|
110
|
+
def get_table_schema_types(
|
111
|
+
session: snowpark.Session,
|
112
|
+
database: str,
|
113
|
+
schema: str,
|
114
|
+
table_name: str,
|
115
|
+
) -> Dict[str, types.DataType]:
|
116
|
+
fully_qualified_table_name = identifier.get_schema_level_object_identifier(
|
117
|
+
db=database, schema=schema, object_name=table_name
|
118
|
+
)
|
119
|
+
struct_fields: List[types.StructField] = session.table(fully_qualified_table_name).schema.fields
|
120
|
+
|
121
|
+
schema_dict: Dict[str, types.DataType] = {}
|
122
|
+
for field in struct_fields:
|
123
|
+
schema_dict[field.name] = field.datatype
|
124
|
+
return schema_dict
|
@@ -53,7 +53,7 @@ def get_uri_scheme(uri: str) -> str:
|
|
53
53
|
def get_uri_from_snowflake_stage_path(stage_path: str) -> str:
|
54
54
|
"""Generates a URI from Snowflake stage path."""
|
55
55
|
assert stage_path.startswith("@")
|
56
|
-
(db, schema, stage, path) = identifier.
|
56
|
+
(db, schema, stage, path) = identifier.parse_snowflake_stage_path(
|
57
57
|
posixpath.normpath(identifier.remove_prefix(stage_path, "@"))
|
58
58
|
)
|
59
59
|
return urlunparse(
|
@@ -70,7 +70,7 @@ def get_uri_from_snowflake_stage_path(stage_path: str) -> str:
|
|
70
70
|
|
71
71
|
def get_stage_and_path(stage_path: str) -> Tuple[str, str]:
|
72
72
|
assert stage_path.startswith("@"), f"stage path should start with @, actual: {stage_path}"
|
73
|
-
(db, schema, stage, path) = identifier.
|
73
|
+
(db, schema, stage, path) = identifier.parse_snowflake_stage_path(
|
74
74
|
posixpath.normpath(identifier.remove_prefix(stage_path, "@"))
|
75
75
|
)
|
76
76
|
full_qualified_stage = "@" + identifier.get_schema_level_object_identifier(db, schema, stage)
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import os
|
1
2
|
from typing import TYPE_CHECKING, Any, Dict, Generator, List, Optional, Type, TypeVar
|
2
3
|
|
3
4
|
import numpy.typing as npt
|
@@ -7,6 +8,10 @@ from snowflake import snowpark
|
|
7
8
|
from snowflake.ml._internal import telemetry
|
8
9
|
from snowflake.ml.data import data_ingestor, data_source
|
9
10
|
from snowflake.ml.data._internal.arrow_ingestor import ArrowIngestor
|
11
|
+
from snowflake.ml.modeling._internal.constants import (
|
12
|
+
IN_ML_RUNTIME_ENV_VAR,
|
13
|
+
USE_OPTIMIZED_DATA_INGESTOR,
|
14
|
+
)
|
10
15
|
|
11
16
|
if TYPE_CHECKING:
|
12
17
|
import pandas as pd
|
@@ -142,32 +147,41 @@ class DataConnector:
|
|
142
147
|
Returns:
|
143
148
|
A Pytorch iterable datapipe that yield data.
|
144
149
|
"""
|
145
|
-
from
|
150
|
+
from snowflake.ml.data import torch_utils
|
146
151
|
|
147
|
-
return
|
148
|
-
self._ingestor
|
152
|
+
return torch_utils.TorchDataPipeWrapper(
|
153
|
+
self._ingestor, batch_size=batch_size, shuffle=shuffle, drop_last=drop_last_batch
|
149
154
|
)
|
150
155
|
|
151
156
|
@telemetry.send_api_usage_telemetry(
|
152
157
|
project=_PROJECT,
|
153
158
|
subproject_extractor=lambda self: type(self).__name__,
|
154
|
-
func_params_to_log=["shuffle"],
|
159
|
+
func_params_to_log=["batch_size", "shuffle", "drop_last_batch"],
|
155
160
|
)
|
156
|
-
def to_torch_dataset(
|
161
|
+
def to_torch_dataset(
|
162
|
+
self, *, batch_size: int = 1, shuffle: bool = False, drop_last_batch: bool = True
|
163
|
+
) -> "torch_data.IterableDataset": # type: ignore[type-arg]
|
157
164
|
"""Transform the Snowflake data into a PyTorch Iterable Dataset to be used with a DataLoader.
|
158
165
|
|
159
166
|
Return a PyTorch Dataset which iterates on rows of data.
|
160
167
|
|
161
168
|
Args:
|
169
|
+
batch_size: It specifies the size of each data batch which will be yielded in the result dataset.
|
170
|
+
Batching is pushed down to data ingestion level which may be more performant than DataLoader
|
171
|
+
batching.
|
162
172
|
shuffle: It specifies whether the data will be shuffled. If True, files will be shuffled, and
|
163
173
|
rows in each file will also be shuffled.
|
174
|
+
drop_last_batch: Whether the last batch of data should be dropped. If set to be true,
|
175
|
+
then the last batch will get dropped if its size is smaller than the given batch_size.
|
164
176
|
|
165
177
|
Returns:
|
166
178
|
A PyTorch Iterable Dataset that yields data.
|
167
179
|
"""
|
168
|
-
from snowflake.ml.data import
|
180
|
+
from snowflake.ml.data import torch_utils
|
169
181
|
|
170
|
-
return
|
182
|
+
return torch_utils.TorchDatasetWrapper(
|
183
|
+
self._ingestor, batch_size=batch_size, shuffle=shuffle, drop_last=drop_last_batch
|
184
|
+
)
|
171
185
|
|
172
186
|
@telemetry.send_api_usage_telemetry(
|
173
187
|
project=_PROJECT,
|
@@ -184,3 +198,15 @@ class DataConnector:
|
|
184
198
|
A Pandas DataFrame.
|
185
199
|
"""
|
186
200
|
return self._ingestor.to_pandas(limit)
|
201
|
+
|
202
|
+
|
203
|
+
# Switch to use Runtime's Data Ingester if running in ML runtime
|
204
|
+
# Fail silently if the data ingester is not found
|
205
|
+
if os.getenv(IN_ML_RUNTIME_ENV_VAR) and os.getenv(USE_OPTIMIZED_DATA_INGESTOR):
|
206
|
+
try:
|
207
|
+
from runtime_external_entities import get_ingester_class
|
208
|
+
|
209
|
+
DataConnector.DEFAULT_INGESTOR_CLASS = get_ingester_class()
|
210
|
+
except ImportError:
|
211
|
+
"""Runtime Default Ingester not found, ignore"""
|
212
|
+
pass
|