snowflake-ml-python 1.6.0__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.0 → snowflake_ml_python-1.6.2}/CHANGELOG.md +53 -1
- {snowflake_ml_python-1.6.0/snowflake_ml_python.egg-info → snowflake_ml_python-1.6.2}/PKG-INFO +55 -3
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/pyproject.toml +1 -1
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/cortex/_complete.py +7 -33
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/env_utils.py +11 -5
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +4 -1
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/telemetry.py +156 -20
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/identifier.py +48 -11
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/pkg_version_utils.py +8 -22
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/snowflake_env.py +23 -13
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/sql_identifier.py +1 -1
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/table_manager.py +19 -1
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/uri.py +2 -2
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/data/_internal/arrow_ingestor.py +66 -10
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/data/data_connector.py +88 -9
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/data/data_ingestor.py +18 -1
- {snowflake_ml_python-1.6.0/snowflake/ml/data/_internal → snowflake_ml_python-1.6.2/snowflake/ml/data}/ingestor_utils.py +5 -1
- snowflake_ml_python-1.6.2/snowflake/ml/data/torch_utils.py +68 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/dataset/dataset.py +1 -3
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/dataset/dataset_metadata.py +3 -1
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/dataset/dataset_reader.py +9 -3
- snowflake_ml_python-1.6.2/snowflake/ml/feature_store/examples/airline_features/entities.py +16 -0
- snowflake_ml_python-1.6.2/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +31 -0
- snowflake_ml_python-1.6.2/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +42 -0
- snowflake_ml_python-1.6.2/snowflake/ml/feature_store/examples/airline_features/source.yaml +7 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +10 -4
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +6 -0
- snowflake_ml_python-1.6.2/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +7 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/example_helper.py +69 -31
- snowflake_ml_python-1.6.2/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +12 -0
- snowflake_ml_python-1.6.0/snowflake/ml/feature_store/examples/new_york_taxi_features/features/dropoff_features.py → snowflake_ml_python-1.6.2/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +14 -9
- snowflake_ml_python-1.6.2/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +36 -0
- snowflake_ml_python-1.6.2/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +9 -0
- snowflake_ml_python-1.6.2/snowflake/ml/feature_store/examples/source_data/airline.yaml +4 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +1 -1
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +3 -3
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +13 -6
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +8 -5
- snowflake_ml_python-1.6.2/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +8 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/feature_store.py +100 -41
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/feature_view.py +149 -5
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/embedded_stage_fs.py +1 -1
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/fileset.py +1 -1
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/sfcfs.py +9 -3
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/model/model_impl.py +11 -2
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/model/model_version_impl.py +186 -20
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/ops/model_ops.py +144 -30
- snowflake_ml_python-1.6.2/snowflake/ml/model/_client/ops/service_ops.py +312 -0
- snowflake_ml_python-1.6.2/snowflake/ml/model/_client/service/model_deployment_spec.py +94 -0
- snowflake_ml_python-1.6.2/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +30 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/sql/model_version.py +13 -4
- snowflake_ml_python-1.6.2/snowflake/ml/model/_client/sql/service.py +196 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/server_image_builder.py +1 -1
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/snowservice/deploy.py +3 -3
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_model_composer/model_composer.py +5 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +13 -10
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +3 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_env/model_env.py +7 -2
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/_base.py +29 -12
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/_utils.py +46 -14
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/catboost.py +25 -16
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/custom.py +6 -2
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/huggingface_pipeline.py +32 -20
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +23 -56
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/llm.py +11 -5
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/mlflow.py +8 -3
- snowflake_ml_python-1.6.2/snowflake/ml/model/_packager/model_handlers/model_objective_utils.py +116 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/pytorch.py +8 -3
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +8 -3
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/sklearn.py +99 -4
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +123 -5
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +9 -4
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/torchscript.py +10 -5
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers/xgboost.py +56 -47
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta/model_meta.py +35 -2
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +11 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_packager.py +4 -1
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +4 -2
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/pytorch_handler.py +1 -1
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/utils.py +9 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/models/llm.py +3 -1
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/type_hints.py +10 -4
- snowflake_ml_python-1.6.2/snowflake/ml/modeling/_internal/constants.py +2 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +5 -5
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +9 -6
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/model_specifications.py +2 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/model_trainer.py +1 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +2 -2
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +5 -5
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +113 -160
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/affinity_propagation.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/birch.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/bisecting_k_means.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/dbscan.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/feature_agglomeration.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/k_means.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/mean_shift.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/optics.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/spectral_biclustering.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/spectral_clustering.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/spectral_coclustering.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/compose/column_transformer.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/compose/transformed_target_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/elliptic_envelope.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/empirical_covariance.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/graphical_lasso.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/ledoit_wolf.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/min_cov_det.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/oas.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/shrunk_covariance.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/dictionary_learning.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/factor_analysis.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/fast_ica.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/incremental_pca.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/kernel_pca.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/pca.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/sparse_pca.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/truncated_svd.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/bagging_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/bagging_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/isolation_forest.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/stacking_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/voting_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/voting_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/select_fdr.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/select_fpr.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/select_fwe.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/select_k_best.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/select_percentile.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/variance_threshold.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/framework/base.py +28 -19
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/impute/iterative_imputer.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/impute/knn_imputer.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/impute/missing_indicator.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_approximation/nystroem.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/ard_regression.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/elastic_net.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/gamma_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/huber_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/lars.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/lars_cv.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/lasso.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/lasso_cv.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/lasso_lars.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/linear_regression.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/logistic_regression.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/perceptron.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/poisson_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/ransac_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/ridge.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/ridge_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/ridge_cv.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/sgd_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/sgd_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/manifold/isomap.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/manifold/mds.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/manifold/spectral_embedding.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/manifold/tsne.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/mixture/gaussian_mixture.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/multiclass/output_code_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/naive_bayes/complement_nb.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/kernel_density.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/nearest_centroid.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neural_network/mlp_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → 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.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/pipeline/pipeline.py +4 -12
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/polynomial_features.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/semi_supervised/label_propagation.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/semi_supervised/label_spreading.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/svm/linear_svc.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/svm/linear_svr.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/svm/nu_svc.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/svm/nu_svr.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/svm/svc.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/svm/svr.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/tree/decision_tree_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/tree/decision_tree_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/tree/extra_tree_classifier.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/tree/extra_tree_regressor.py +60 -21
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/xgboost/xgb_classifier.py +63 -23
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/xgboost/xgb_regressor.py +63 -23
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +63 -23
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +63 -23
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/_manager/model_manager.py +20 -2
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/model_registry.py +1 -1
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/registry.py +1 -2
- snowflake_ml_python-1.6.2/snowflake/ml/utils/sql_client.py +22 -0
- snowflake_ml_python-1.6.2/snowflake/ml/version.py +1 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2/snowflake_ml_python.egg-info}/PKG-INFO +55 -3
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake_ml_python.egg-info/SOURCES.txt +16 -3
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake_ml_python.egg-info/requires.txt +1 -1
- snowflake_ml_python-1.6.0/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -4
- snowflake_ml_python-1.6.0/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -12
- snowflake_ml_python-1.6.0/snowflake/ml/feature_store/examples/new_york_taxi_features/features/pickup_features.py +0 -58
- snowflake_ml_python-1.6.0/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -5
- snowflake_ml_python-1.6.0/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -5
- snowflake_ml_python-1.6.0/snowflake/ml/modeling/_internal/constants.py +0 -1
- snowflake_ml_python-1.6.0/snowflake/ml/version.py +0 -1
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/LICENSE.txt +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/README.md +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/setup.cfg +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/cortex/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/cortex/_classify_text.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/cortex/_extract_answer.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/cortex/_sentiment.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/cortex/_sse_client.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/cortex/_summarize.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/cortex/_translate.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/cortex/_util.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/container_services/image_registry/credential.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/container_services/image_registry/http_client.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/container_services/image_registry/imagelib.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/container_services/image_registry/registry_client.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/env.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/file_utils.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/init_utils.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/migrator_utils.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/type_utils.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/formatting.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/import_utils.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/log_stream_processor.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/parallelize.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/result.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/retryable_http.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/session_token_manager.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/spcs_attribution_utils.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/data/data_source.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/dataset/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/dataset/dataset_factory.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/access_manager.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/entity.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/parquet_parser.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/snowfs.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/stage_fs.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/tf_dataset.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/fileset/torch_datapipe.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/lineage/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/lineage/lineage_node.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_api.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/sql/_base.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/sql/model.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/sql/stage.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_client/sql/tag.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/base_image_builder.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/client_image_builder.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/docker_context.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/gunicorn_run.sh +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/inference_server/main.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/image_builds/templates/dockerfile_template +0 -0
- {snowflake_ml_python-1.6.0 → 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.0 → 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.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/snowservice/deploy_options.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/snowservice/instance_types.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/snowservice/templates/service_spec_template +0 -0
- {snowflake_ml_python-1.6.0 → 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.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/utils/constants.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/utils/snowservice_client.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/warehouse/deploy.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_deploy_client/warehouse/infer_template.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
- {snowflake_ml_python-1.6.0 → 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.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handler.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta/_core_requirements.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta/_packaging_requirements.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/base_handler.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/core.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/custom_model.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/deploy_platforms.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/model_signature.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/ml_runtime_implementations/ml_runtime_handlers.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/ml_runtime_implementations/ml_runtime_trainer.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/calibration/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/cluster/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/compose/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/covariance/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/framework/_utils.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/impute/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/manifold/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/metrics/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/metrics/classification.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/metrics/correlation.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/metrics/covariance.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/metrics/ranking.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/metrics/regression.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/mixture/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/svm/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/tree/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/monitoring/monitor.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/monitoring/shap.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/__init__.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/_initial_schema.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/_schema.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/_schema_upgrade_plans.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/registry/_schema_version_manager.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake/ml/utils/sparse.py +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
- {snowflake_ml_python-1.6.0 → snowflake_ml_python-1.6.2}/snowflake_ml_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,50 @@
|
|
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)
|
24
|
+
|
25
|
+
### Bug Fixes
|
26
|
+
|
27
|
+
- Feature Store: Support large metadata blob when generating dataset
|
28
|
+
- Feature Store: Added a hidden knob in FeatureView as kargs for setting customized
|
29
|
+
refresh_mode
|
30
|
+
- Registry: Fix an error message in Model Version `run` when `function_name` is not mentioned and model has multiple
|
31
|
+
target methods.
|
32
|
+
- Cortex inference: snowflake.cortex.Complete now only uses the REST API for streaming and the use_rest_api_experimental
|
33
|
+
is no longer needed.
|
34
|
+
- Feature Store: Add a new API: FeatureView.list_columns() which list all column information.
|
35
|
+
- Data: Fix `DataFrame` ingestion with `ArrowIngestor`.
|
36
|
+
|
37
|
+
### New Features
|
38
|
+
|
39
|
+
- Enable `set_params` to set the parameters of the underlying sklearn estimator, if the snowflake-ml model has been fit.
|
40
|
+
- Data: Add `snowflake.ml.data.ingestor_utils` module with utility functions helpful for `DataIngestor` implementations.
|
41
|
+
- Data: Add new `to_torch_dataset()` connector to `DataConnector` to replace deprecated DataPipe.
|
42
|
+
- Registry: Option to `enable_explainability` set to True by default for XGBoost, LightGBM and CatBoost as PuPr feature.
|
43
|
+
- Registry: Option to `enable_explainability` when registering SHAP supported sklearn models.
|
44
|
+
|
45
|
+
### Behavior Changes
|
46
|
+
|
47
|
+
## 1.6.0 (2024-07-29)
|
4
48
|
|
5
49
|
### Bug Fixes
|
6
50
|
|
@@ -29,6 +73,14 @@
|
|
29
73
|
distributed_hpo_trainer.ENABLE_EFFICIENT_MEMORY_USAGE = False
|
30
74
|
`
|
31
75
|
- Registry: Option to `enable_explainability` when registering LightGBM models as a pre-PuPr feature.
|
76
|
+
- Data: Add new `snowflake.ml.data` preview module which contains data reading utilities like `DataConnector`
|
77
|
+
- `DataConnector` provides efficient connectors from Snowpark `DataFrame`
|
78
|
+
and Snowpark ML `Dataset` to external frameworks like PyTorch, TensorFlow, and Pandas. Create `DataConnector`
|
79
|
+
instances using the classmethod constructors `DataConnector.from_dataset()` and `DataConnector.from_dataframe()`.
|
80
|
+
- Data: Add new `DataConnector.from_sources()` classmethod constructor for constructing from `DataSource` objects.
|
81
|
+
- Data: Add new `ingestor_class` arg to `DataConnector` classmethod constructors for easier `DataIngestor` injection.
|
82
|
+
- Dataset: `DatasetReader` now subclasses new `DataConnector` class.
|
83
|
+
- Add optional `limit` arg to `DatasetReader.to_pandas()`
|
32
84
|
|
33
85
|
### Behavior Changes
|
34
86
|
|
{snowflake_ml_python-1.6.0/snowflake_ml_python.egg-info → snowflake_ml_python-1.6.2}/PKG-INFO
RENAMED
@@ -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,51 @@ 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)
|
397
|
+
|
398
|
+
### Bug Fixes
|
399
|
+
|
400
|
+
- Feature Store: Support large metadata blob when generating dataset
|
401
|
+
- Feature Store: Added a hidden knob in FeatureView as kargs for setting customized
|
402
|
+
refresh_mode
|
403
|
+
- Registry: Fix an error message in Model Version `run` when `function_name` is not mentioned and model has multiple
|
404
|
+
target methods.
|
405
|
+
- Cortex inference: snowflake.cortex.Complete now only uses the REST API for streaming and the use_rest_api_experimental
|
406
|
+
is no longer needed.
|
407
|
+
- Feature Store: Add a new API: FeatureView.list_columns() which list all column information.
|
408
|
+
- Data: Fix `DataFrame` ingestion with `ArrowIngestor`.
|
409
|
+
|
410
|
+
### New Features
|
411
|
+
|
412
|
+
- Enable `set_params` to set the parameters of the underlying sklearn estimator, if the snowflake-ml model has been fit.
|
413
|
+
- Data: Add `snowflake.ml.data.ingestor_utils` module with utility functions helpful for `DataIngestor` implementations.
|
414
|
+
- Data: Add new `to_torch_dataset()` connector to `DataConnector` to replace deprecated DataPipe.
|
415
|
+
- Registry: Option to `enable_explainability` set to True by default for XGBoost, LightGBM and CatBoost as PuPr feature.
|
416
|
+
- Registry: Option to `enable_explainability` when registering SHAP supported sklearn models.
|
417
|
+
|
418
|
+
### Behavior Changes
|
419
|
+
|
420
|
+
## 1.6.0 (2024-07-29)
|
377
421
|
|
378
422
|
### Bug Fixes
|
379
423
|
|
@@ -402,6 +446,14 @@ be compatibility issues. Server-side functionality that `snowflake-ml-python` de
|
|
402
446
|
distributed_hpo_trainer.ENABLE_EFFICIENT_MEMORY_USAGE = False
|
403
447
|
`
|
404
448
|
- Registry: Option to `enable_explainability` when registering LightGBM models as a pre-PuPr feature.
|
449
|
+
- Data: Add new `snowflake.ml.data` preview module which contains data reading utilities like `DataConnector`
|
450
|
+
- `DataConnector` provides efficient connectors from Snowpark `DataFrame`
|
451
|
+
and Snowpark ML `Dataset` to external frameworks like PyTorch, TensorFlow, and Pandas. Create `DataConnector`
|
452
|
+
instances using the classmethod constructors `DataConnector.from_dataset()` and `DataConnector.from_dataframe()`.
|
453
|
+
- Data: Add new `DataConnector.from_sources()` classmethod constructor for constructing from `DataSource` objects.
|
454
|
+
- Data: Add new `ingestor_class` arg to `DataConnector` classmethod constructors for easier `DataIngestor` injection.
|
455
|
+
- Dataset: `DatasetReader` now subclasses new `DataConnector` class.
|
456
|
+
- Add optional `limit` arg to `DatasetReader.to_pandas()`
|
405
457
|
|
406
458
|
### Behavior Changes
|
407
459
|
|
@@ -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"
|
@@ -90,7 +90,6 @@ def _call_complete_rest(
|
|
90
90
|
prompt: Union[str, List[ConversationMessage]],
|
91
91
|
options: Optional[CompleteOptions] = None,
|
92
92
|
session: Optional[snowpark.Session] = None,
|
93
|
-
stream: bool = False,
|
94
93
|
) -> requests.Response:
|
95
94
|
session = session or context.get_active_session()
|
96
95
|
if session is None:
|
@@ -121,7 +120,7 @@ def _call_complete_rest(
|
|
121
120
|
|
122
121
|
data = {
|
123
122
|
"model": model,
|
124
|
-
"stream":
|
123
|
+
"stream": True,
|
125
124
|
}
|
126
125
|
if isinstance(prompt, List):
|
127
126
|
data["messages"] = prompt
|
@@ -137,32 +136,15 @@ def _call_complete_rest(
|
|
137
136
|
if "top_p" in options:
|
138
137
|
data["top_p"] = options["top_p"]
|
139
138
|
|
140
|
-
logger.debug(f"making POST request to {url} (model={model}
|
139
|
+
logger.debug(f"making POST request to {url} (model={model})")
|
141
140
|
return requests.post(
|
142
141
|
url,
|
143
142
|
json=data,
|
144
143
|
headers=headers,
|
145
|
-
stream=
|
144
|
+
stream=True,
|
146
145
|
)
|
147
146
|
|
148
147
|
|
149
|
-
def _process_rest_response(
|
150
|
-
response: requests.Response,
|
151
|
-
stream: bool = False,
|
152
|
-
deadline: Optional[float] = None,
|
153
|
-
) -> Union[str, Iterator[str]]:
|
154
|
-
if stream:
|
155
|
-
return _return_stream_response(response, deadline)
|
156
|
-
|
157
|
-
try:
|
158
|
-
content = response.json()["choices"][0]["message"]["content"]
|
159
|
-
assert isinstance(content, str)
|
160
|
-
return content
|
161
|
-
except (KeyError, IndexError, AssertionError) as e:
|
162
|
-
# Unlike the streaming case, errors are not ignored because a message must be returned.
|
163
|
-
raise ResponseParseException("Failed to parse message from response.") from e
|
164
|
-
|
165
|
-
|
166
148
|
def _return_stream_response(response: requests.Response, deadline: Optional[float]) -> Iterator[str]:
|
167
149
|
client = SSEClient(response)
|
168
150
|
for event in client.events():
|
@@ -243,7 +225,6 @@ def _complete_impl(
|
|
243
225
|
prompt: Union[str, List[ConversationMessage], snowpark.Column],
|
244
226
|
options: Optional[CompleteOptions] = None,
|
245
227
|
session: Optional[snowpark.Session] = None,
|
246
|
-
use_rest_api_experimental: bool = False,
|
247
228
|
stream: bool = False,
|
248
229
|
function: str = "snowflake.cortex.complete",
|
249
230
|
timeout: Optional[float] = None,
|
@@ -253,16 +234,14 @@ def _complete_impl(
|
|
253
234
|
raise ValueError('only one of "timeout" and "deadline" must be set')
|
254
235
|
if timeout is not None:
|
255
236
|
deadline = time.time() + timeout
|
256
|
-
if
|
237
|
+
if stream:
|
257
238
|
if not isinstance(model, str):
|
258
239
|
raise ValueError("in REST mode, 'model' must be a string")
|
259
240
|
if not isinstance(prompt, str) and not isinstance(prompt, List):
|
260
241
|
raise ValueError("in REST mode, 'prompt' must be a string or a list of ConversationMessage")
|
261
|
-
response = _call_complete_rest(model, prompt, options, session=session,
|
242
|
+
response = _call_complete_rest(model, prompt, options, session=session, deadline=deadline)
|
262
243
|
assert response.status_code >= 200 and response.status_code < 300
|
263
|
-
return
|
264
|
-
if stream is True:
|
265
|
-
raise ValueError("streaming can only be enabled in REST mode, set use_rest_api_experimental=True")
|
244
|
+
return _return_stream_response(response, deadline)
|
266
245
|
return _complete_sql_impl(function, model, prompt, options, session)
|
267
246
|
|
268
247
|
|
@@ -275,7 +254,6 @@ def Complete(
|
|
275
254
|
*,
|
276
255
|
options: Optional[CompleteOptions] = None,
|
277
256
|
session: Optional[snowpark.Session] = None,
|
278
|
-
use_rest_api_experimental: bool = False,
|
279
257
|
stream: bool = False,
|
280
258
|
timeout: Optional[float] = None,
|
281
259
|
deadline: Optional[float] = None,
|
@@ -287,16 +265,13 @@ def Complete(
|
|
287
265
|
prompt: A Column of prompts to send to the LLM.
|
288
266
|
options: A instance of snowflake.cortex.CompleteOptions
|
289
267
|
session: The snowpark session to use. Will be inferred by context if not specified.
|
290
|
-
use_rest_api_experimental (bool): Toggles between the use of SQL and REST implementation. This feature is
|
291
|
-
experimental and can be removed at any time.
|
292
268
|
stream (bool): Enables streaming. When enabled, a generator function is returned that provides the streaming
|
293
269
|
output as it is received. Each update is a string containing the new text content since the previous update.
|
294
|
-
The use of streaming requires the experimental use_rest_api_experimental flag to be enabled.
|
295
270
|
timeout (float): Timeout in seconds to retry failed REST requests.
|
296
271
|
deadline (float): Time in seconds since the epoch (as returned by time.time()) to retry failed REST requests.
|
297
272
|
|
298
273
|
Raises:
|
299
|
-
ValueError:
|
274
|
+
ValueError: incorrect argument.
|
300
275
|
|
301
276
|
Returns:
|
302
277
|
A column of string responses.
|
@@ -307,7 +282,6 @@ def Complete(
|
|
307
282
|
prompt,
|
308
283
|
options=options,
|
309
284
|
session=session,
|
310
|
-
use_rest_api_experimental=use_rest_api_experimental,
|
311
285
|
stream=stream,
|
312
286
|
timeout=timeout,
|
313
287
|
deadline=deadline,
|
@@ -27,7 +27,6 @@ class CONDA_OS(Enum):
|
|
27
27
|
NO_ARCH = "noarch"
|
28
28
|
|
29
29
|
|
30
|
-
_SNOWFLAKE_CONDA_CHANNEL_URL = "https://repo.anaconda.com/pkgs/snowflake"
|
31
30
|
_NODEFAULTS = "nodefaults"
|
32
31
|
_SNOWFLAKE_INFO_SCHEMA_PACKAGE_CACHE: Dict[str, List[version.Version]] = {}
|
33
32
|
_SNOWFLAKE_CONDA_PACKAGE_CACHE: Dict[str, List[version.Version]] = {}
|
@@ -36,6 +35,7 @@ _SUPPORTED_PACKAGE_SPEC_OPS = ["==", ">=", "<=", ">", "<"]
|
|
36
35
|
DEFAULT_CHANNEL_NAME = ""
|
37
36
|
SNOWML_SPROC_ENV = "IN_SNOWML_SPROC"
|
38
37
|
SNOWPARK_ML_PKG_NAME = "snowflake-ml-python"
|
38
|
+
SNOWFLAKE_CONDA_CHANNEL_URL = "https://repo.anaconda.com/pkgs/snowflake"
|
39
39
|
|
40
40
|
|
41
41
|
def _validate_pip_requirement_string(req_str: str) -> requirements.Requirement:
|
@@ -370,7 +370,7 @@ def get_matched_package_versions_in_snowflake_conda_channel(
|
|
370
370
|
|
371
371
|
assert not snowpark_utils.is_in_stored_procedure() # type: ignore[no-untyped-call]
|
372
372
|
|
373
|
-
url = f"{
|
373
|
+
url = f"{SNOWFLAKE_CONDA_CHANNEL_URL}/{conda_os.value}/repodata.json"
|
374
374
|
|
375
375
|
if req.name not in _SNOWFLAKE_CONDA_PACKAGE_CACHE:
|
376
376
|
try:
|
@@ -477,6 +477,7 @@ def save_conda_env_file(
|
|
477
477
|
path: pathlib.Path,
|
478
478
|
conda_chan_deps: DefaultDict[str, List[requirements.Requirement]],
|
479
479
|
python_version: str,
|
480
|
+
default_channel_override: str = SNOWFLAKE_CONDA_CHANNEL_URL,
|
480
481
|
) -> None:
|
481
482
|
"""Generate conda.yml file given a dict of dependencies after validation.
|
482
483
|
The channels part of conda.yml file will contains Snowflake Anaconda Channel, nodefaults and all channel names
|
@@ -489,6 +490,7 @@ def save_conda_env_file(
|
|
489
490
|
path: Path to the conda.yml file.
|
490
491
|
conda_chan_deps: Dict of conda dependencies after validated.
|
491
492
|
python_version: A string 'major.minor' showing python version relate to model.
|
493
|
+
default_channel_override: The default channel to be put in the first place of the channels section.
|
492
494
|
"""
|
493
495
|
assert path.suffix in [".yml", ".yaml"], "Conda environment file should have extension of yml or yaml."
|
494
496
|
path.parent.mkdir(parents=True, exist_ok=True)
|
@@ -499,7 +501,11 @@ def save_conda_env_file(
|
|
499
501
|
channels = list(dict(sorted(conda_chan_deps.items(), key=lambda item: len(item[1]), reverse=True)).keys())
|
500
502
|
if DEFAULT_CHANNEL_NAME in channels:
|
501
503
|
channels.remove(DEFAULT_CHANNEL_NAME)
|
502
|
-
|
504
|
+
|
505
|
+
if default_channel_override in channels:
|
506
|
+
channels.remove(default_channel_override)
|
507
|
+
|
508
|
+
env["channels"] = [default_channel_override] + channels + [_NODEFAULTS]
|
503
509
|
env["dependencies"] = [f"python=={python_version}.*"]
|
504
510
|
for chan, reqs in conda_chan_deps.items():
|
505
511
|
env["dependencies"].extend(
|
@@ -567,8 +573,8 @@ def load_conda_env_file(
|
|
567
573
|
python_version = None
|
568
574
|
|
569
575
|
channels = env.get("channels", [])
|
570
|
-
if
|
571
|
-
channels
|
576
|
+
if len(channels) >= 1:
|
577
|
+
channels = channels[1:] # Skip the first channel which is the default channel
|
572
578
|
if _NODEFAULTS in channels:
|
573
579
|
channels.remove(_NODEFAULTS)
|
574
580
|
|
@@ -4,7 +4,10 @@ ATTRIBUTE_NOT_SET = (
|
|
4
4
|
"-differences."
|
5
5
|
)
|
6
6
|
SIZE_MISMATCH = "Size mismatch: {}={}, {}={}."
|
7
|
-
INVALID_MODEL_PARAM =
|
7
|
+
INVALID_MODEL_PARAM = (
|
8
|
+
"Invalid parameter {} for model {}. Valid parameters: {}."
|
9
|
+
"Note: Scikit learn params cannot be set until the model has been fit."
|
10
|
+
)
|
8
11
|
UNSUPPORTED_MODEL_CONVERSION = "Object doesn't support {}. Please use {}."
|
9
12
|
INCOMPATIBLE_NEW_SKLEARN_PARAM = "Incompatible scikit-learn version: {} requires scikit-learn>={}. Installed: {}."
|
10
13
|
REMOVED_SKLEARN_PARAM = "Incompatible scikit-learn version: {} is removed in scikit-learn>={}. Installed: {}."
|
@@ -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
|
@@ -44,6 +46,20 @@ _Args = ParamSpec("_Args")
|
|
44
46
|
_ReturnValue = TypeVar("_ReturnValue")
|
45
47
|
|
46
48
|
|
49
|
+
@enum.unique
|
50
|
+
class TelemetryProject(enum.Enum):
|
51
|
+
MLOPS = "MLOps"
|
52
|
+
MODELING = "ModelDevelopment"
|
53
|
+
# TODO: Update with remaining projects.
|
54
|
+
|
55
|
+
|
56
|
+
@enum.unique
|
57
|
+
class TelemetrySubProject(enum.Enum):
|
58
|
+
MONITORING = "Monitoring"
|
59
|
+
REGISTRY = "ModelManagement"
|
60
|
+
# TODO: Update with remaining subprojects.
|
61
|
+
|
62
|
+
|
47
63
|
@enum.unique
|
48
64
|
class TelemetryField(enum.Enum):
|
49
65
|
# constants
|
@@ -71,6 +87,122 @@ class TelemetryField(enum.Enum):
|
|
71
87
|
FUNC_CAT_USAGE = "usage"
|
72
88
|
|
73
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
|
+
|
74
206
|
def get_statement_params(
|
75
207
|
project: str, subproject: Optional[str] = None, class_name: Optional[str] = None
|
76
208
|
) -> Dict[str, Any]:
|
@@ -361,7 +493,18 @@ def send_api_usage_telemetry(
|
|
361
493
|
obj._statement_params = statement_params # type: ignore[assignment]
|
362
494
|
return obj
|
363
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
|
+
|
364
506
|
# prioritize `conn_attr_name` over the active session
|
507
|
+
telemetry_enabled = True
|
365
508
|
if conn_attr_name:
|
366
509
|
# raise AttributeError if conn attribute does not exist in `self`
|
367
510
|
conn = operator.attrgetter(conn_attr_name)(args[0])
|
@@ -373,22 +516,17 @@ def send_api_usage_telemetry(
|
|
373
516
|
else:
|
374
517
|
try:
|
375
518
|
active_session = next(iter(session._get_active_sessions()))
|
376
|
-
|
519
|
+
conn = active_session._conn._conn
|
520
|
+
telemetry_enabled = active_session.telemetry_enabled
|
377
521
|
except snowpark_exceptions.SnowparkSessionException:
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
conn = active_session._conn._conn
|
387
|
-
if (not active_session.telemetry_enabled) or (conn is None):
|
388
|
-
try:
|
389
|
-
return update_stmt_params_if_snowpark_df(func(*args, **kwargs), statement_params)
|
390
|
-
except snowml_exceptions.SnowflakeMLException as e:
|
391
|
-
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
|
392
530
|
|
393
531
|
# TODO(hayu): [SNOW-750287] Optimize telemetry client to a singleton.
|
394
532
|
telemetry = _SourceTelemetryClient(conn=conn, project=project, subproject=subproject_name)
|
@@ -401,11 +539,11 @@ def send_api_usage_telemetry(
|
|
401
539
|
custom_tags=custom_tags,
|
402
540
|
)
|
403
541
|
try:
|
404
|
-
|
542
|
+
return ctx.run(execute_func_with_statement_params)
|
405
543
|
except Exception as e:
|
406
544
|
if not isinstance(e, snowml_exceptions.SnowflakeMLException):
|
407
545
|
# already handled via a nested decorated function
|
408
|
-
if
|
546
|
+
if getattr(e, "_snowflake_ml_handled", False):
|
409
547
|
raise e
|
410
548
|
if isinstance(e, snowpark_exceptions.SnowparkClientException):
|
411
549
|
me = snowml_exceptions.SnowflakeMLException(
|
@@ -424,8 +562,6 @@ def send_api_usage_telemetry(
|
|
424
562
|
raise me.original_exception from None
|
425
563
|
else:
|
426
564
|
raise me.original_exception from e
|
427
|
-
else:
|
428
|
-
return update_stmt_params_if_snowpark_df(res, statement_params)
|
429
565
|
finally:
|
430
566
|
telemetry.send_function_usage_telemetry(**telemetry_args)
|
431
567
|
global _log_counter
|