snowflake-ml-python 1.10.0__tar.gz → 1.12.0__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.
Files changed (454) hide show
  1. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/CHANGELOG.md +83 -3
  2. {snowflake_ml_python-1.10.0/snowflake_ml_python.egg-info → snowflake_ml_python-1.12.0}/PKG-INFO +87 -7
  3. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/pyproject.toml +1 -1
  4. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/cortex/_complete.py +3 -2
  5. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/service_logger.py +26 -1
  6. snowflake_ml_python-1.12.0/snowflake/ml/experiment/_client/artifact.py +76 -0
  7. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +64 -1
  8. snowflake_ml_python-1.12.0/snowflake/ml/experiment/callback/keras.py +63 -0
  9. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/experiment/callback/lightgbm.py +5 -1
  10. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/experiment/callback/xgboost.py +5 -1
  11. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/experiment/experiment_tracking.py +89 -4
  12. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/feature_store.py +1150 -131
  13. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/feature_view.py +122 -0
  14. snowflake_ml_python-1.12.0/snowflake/ml/jobs/_utils/__init__.py +0 -0
  15. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/_utils/constants.py +9 -14
  16. snowflake_ml_python-1.12.0/snowflake/ml/jobs/_utils/feature_flags.py +16 -0
  17. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/_utils/payload_utils.py +61 -19
  18. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/_utils/query_helper.py +5 -1
  19. snowflake_ml_python-1.12.0/snowflake/ml/jobs/_utils/runtime_env_utils.py +63 -0
  20. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +18 -7
  21. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +15 -7
  22. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/_utils/spec_utils.py +44 -13
  23. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/_utils/stage_utils.py +22 -9
  24. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/_utils/types.py +7 -8
  25. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/job.py +34 -18
  26. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/manager.py +107 -24
  27. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/__init__.py +6 -1
  28. snowflake_ml_python-1.12.0/snowflake/ml/model/_client/model/batch_inference_specs.py +27 -0
  29. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_client/model/model_version_impl.py +225 -73
  30. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_client/ops/service_ops.py +128 -174
  31. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +123 -64
  32. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +25 -9
  33. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_model_composer/model_composer.py +1 -70
  34. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +2 -43
  35. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers/huggingface_pipeline.py +207 -2
  36. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +3 -1
  37. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +3 -3
  38. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_signatures/snowpark_handler.py +1 -1
  39. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_signatures/utils.py +4 -2
  40. snowflake_ml_python-1.12.0/snowflake/ml/model/inference_engine.py +5 -0
  41. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/models/huggingface_pipeline.py +4 -3
  42. snowflake_ml_python-1.12.0/snowflake/ml/model/openai_signatures.py +57 -0
  43. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/_internal/estimator_utils.py +43 -1
  44. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +14 -3
  45. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +17 -6
  46. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +1 -1
  47. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +1 -1
  48. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +1 -1
  49. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/cluster/birch.py +1 -1
  50. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +1 -1
  51. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/cluster/dbscan.py +1 -1
  52. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +1 -1
  53. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/cluster/k_means.py +1 -1
  54. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/cluster/mean_shift.py +1 -1
  55. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +1 -1
  56. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/cluster/optics.py +1 -1
  57. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +1 -1
  58. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +1 -1
  59. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +1 -1
  60. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/compose/column_transformer.py +1 -1
  61. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +1 -1
  62. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +1 -1
  63. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +1 -1
  64. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +1 -1
  65. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +1 -1
  66. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +1 -1
  67. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/covariance/min_cov_det.py +1 -1
  68. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/covariance/oas.py +1 -1
  69. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +1 -1
  70. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +1 -1
  71. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +1 -1
  72. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/decomposition/fast_ica.py +1 -1
  73. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +1 -1
  74. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +1 -1
  75. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +1 -1
  76. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +1 -1
  77. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/decomposition/pca.py +1 -1
  78. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +1 -1
  79. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +1 -1
  80. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +1 -1
  81. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +1 -1
  82. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +1 -1
  83. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +1 -1
  84. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +1 -1
  85. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +1 -1
  86. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +1 -1
  87. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +1 -1
  88. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +1 -1
  89. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +1 -1
  90. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +1 -1
  91. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +1 -1
  92. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +1 -1
  93. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +1 -1
  94. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +1 -1
  95. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +1 -1
  96. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +1 -1
  97. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +1 -1
  98. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +1 -1
  99. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +1 -1
  100. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +1 -1
  101. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +1 -1
  102. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +1 -1
  103. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +1 -1
  104. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +1 -1
  105. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +1 -1
  106. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +1 -1
  107. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +1 -1
  108. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/impute/iterative_imputer.py +1 -1
  109. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/impute/knn_imputer.py +1 -1
  110. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/impute/missing_indicator.py +1 -1
  111. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +1 -1
  112. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +1 -1
  113. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +1 -1
  114. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +1 -1
  115. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +1 -1
  116. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +1 -1
  117. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +1 -1
  118. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +1 -1
  119. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/ard_regression.py +1 -1
  120. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +1 -1
  121. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/elastic_net.py +1 -1
  122. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +1 -1
  123. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +1 -1
  124. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +1 -1
  125. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/lars.py +1 -1
  126. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/lars_cv.py +1 -1
  127. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/lasso.py +1 -1
  128. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +1 -1
  129. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +1 -1
  130. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +1 -1
  131. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +1 -1
  132. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/linear_regression.py +1 -1
  133. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +1 -1
  134. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +1 -1
  135. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +1 -1
  136. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +1 -1
  137. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +1 -1
  138. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +1 -1
  139. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +1 -1
  140. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +1 -1
  141. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +1 -1
  142. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/perceptron.py +1 -1
  143. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +1 -1
  144. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +1 -1
  145. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/ridge.py +1 -1
  146. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +1 -1
  147. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +1 -1
  148. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +1 -1
  149. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +1 -1
  150. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +1 -1
  151. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +1 -1
  152. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +1 -1
  153. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +1 -1
  154. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/manifold/isomap.py +1 -1
  155. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/manifold/mds.py +1 -1
  156. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +1 -1
  157. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/manifold/tsne.py +1 -1
  158. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +1 -1
  159. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +1 -1
  160. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +1 -1
  161. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +1 -1
  162. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +1 -1
  163. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +1 -1
  164. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +1 -1
  165. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +1 -1
  166. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +1 -1
  167. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +1 -1
  168. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +1 -1
  169. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +1 -1
  170. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/neighbors/kernel_density.py +1 -1
  171. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +1 -1
  172. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +1 -1
  173. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +1 -1
  174. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +1 -1
  175. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +1 -1
  176. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +1 -1
  177. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +1 -1
  178. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +1 -1
  179. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +1 -1
  180. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +1 -1
  181. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +1 -1
  182. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +1 -1
  183. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/svm/linear_svc.py +1 -1
  184. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/svm/linear_svr.py +1 -1
  185. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/svm/nu_svc.py +1 -1
  186. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/svm/nu_svr.py +1 -1
  187. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/svm/svc.py +1 -1
  188. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/svm/svr.py +1 -1
  189. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +1 -1
  190. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +1 -1
  191. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +1 -1
  192. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +1 -1
  193. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +1 -1
  194. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +1 -1
  195. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +1 -1
  196. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +1 -1
  197. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +91 -6
  198. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +3 -0
  199. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +3 -0
  200. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/monitoring/model_monitor.py +26 -0
  201. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/registry/_manager/model_manager.py +7 -35
  202. snowflake_ml_python-1.12.0/snowflake/ml/registry/_manager/model_parameter_reconciler.py +294 -0
  203. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/version.py +1 -1
  204. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0/snowflake_ml_python.egg-info}/PKG-INFO +87 -7
  205. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake_ml_python.egg-info/SOURCES.txt +8 -0
  206. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake_ml_python.egg-info/requires.txt +3 -3
  207. snowflake_ml_python-1.10.0/snowflake/ml/registry/_manager/model_parameter_reconciler.py +0 -105
  208. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/LICENSE.txt +0 -0
  209. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/README.md +0 -0
  210. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/setup.cfg +0 -0
  211. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/cortex/__init__.py +0 -0
  212. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/cortex/_classify_text.py +0 -0
  213. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/cortex/_embed_text_1024.py +0 -0
  214. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/cortex/_embed_text_768.py +0 -0
  215. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/cortex/_extract_answer.py +0 -0
  216. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/cortex/_finetune.py +0 -0
  217. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/cortex/_sentiment.py +0 -0
  218. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/cortex/_sse_client.py +0 -0
  219. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/cortex/_summarize.py +0 -0
  220. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/cortex/_translate.py +0 -0
  221. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/cortex/_util.py +0 -0
  222. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/env.py +0 -0
  223. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/env_utils.py +0 -0
  224. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
  225. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
  226. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
  227. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
  228. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
  229. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
  230. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
  231. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
  232. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
  233. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/file_utils.py +0 -0
  234. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
  235. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
  236. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
  237. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
  238. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/init_utils.py +0 -0
  239. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
  240. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
  241. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/platform_capabilities.py +0 -0
  242. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
  243. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/telemetry.py +0 -0
  244. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/type_utils.py +0 -0
  245. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/connection_params.py +0 -0
  246. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
  247. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
  248. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/identifier.py +0 -0
  249. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
  250. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
  251. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/mixins.py +0 -0
  252. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
  253. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
  254. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
  255. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/result.py +0 -0
  256. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
  257. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
  258. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
  259. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
  260. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
  261. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/data/__init__.py +0 -0
  262. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
  263. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/data/data_connector.py +0 -0
  264. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/data/data_ingestor.py +0 -0
  265. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/data/data_source.py +0 -0
  266. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/data/ingestor_utils.py +0 -0
  267. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/data/torch_utils.py +0 -0
  268. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/dataset/__init__.py +0 -0
  269. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/dataset/dataset.py +0 -0
  270. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
  271. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
  272. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
  273. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/experiment/__init__.py +0 -0
  274. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/experiment/_entities/__init__.py +0 -0
  275. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/experiment/_entities/experiment.py +0 -0
  276. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/experiment/_entities/run.py +0 -0
  277. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
  278. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/experiment/_experiment_info.py +0 -0
  279. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/experiment/utils.py +0 -0
  280. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/__init__.py +0 -0
  281. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/access_manager.py +0 -0
  282. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/entity.py +0 -0
  283. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
  284. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
  285. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
  286. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
  287. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
  288. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
  289. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
  290. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
  291. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
  292. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
  293. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
  294. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
  295. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
  296. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
  297. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
  298. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
  299. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
  300. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
  301. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
  302. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
  303. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
  304. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
  305. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
  306. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/fileset/fileset.py +0 -0
  307. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/fileset/sfcfs.py +0 -0
  308. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/fileset/snowfs.py +0 -0
  309. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/fileset/stage_fs.py +0 -0
  310. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/__init__.py +0 -0
  311. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/_utils/function_payload_utils.py +0 -0
  312. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/_utils/interop_utils.py +0 -0
  313. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/_utils/scripts/constants.py +0 -0
  314. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +0 -0
  315. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +0 -0
  316. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/jobs/decorators.py +0 -0
  317. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/lineage/__init__.py +0 -0
  318. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/lineage/lineage_node.py +0 -0
  319. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_client/model/model_impl.py +0 -0
  320. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
  321. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_client/ops/model_ops.py +0 -0
  322. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
  323. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_client/sql/model.py +0 -0
  324. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_client/sql/model_version.py +0 -0
  325. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_client/sql/service.py +0 -0
  326. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_client/sql/stage.py +0 -0
  327. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
  328. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
  329. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
  330. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
  331. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
  332. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
  333. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
  334. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
  335. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
  336. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_env/model_env.py +0 -0
  337. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
  338. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
  339. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
  340. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
  341. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
  342. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
  343. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
  344. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
  345. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
  346. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +0 -0
  347. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
  348. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
  349. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
  350. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
  351. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
  352. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +0 -0
  353. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +0 -0
  354. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +0 -0
  355. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +0 -0
  356. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
  357. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +0 -0
  358. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -0
  359. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
  360. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
  361. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
  362. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_packager.py +0 -0
  363. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
  364. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
  365. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
  366. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
  367. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_signatures/core.py +0 -0
  368. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
  369. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
  370. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
  371. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
  372. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
  373. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/custom_model.py +0 -0
  374. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/event_handler.py +0 -0
  375. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/model_signature.py +0 -0
  376. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/target_platform.py +0 -0
  377. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/task.py +0 -0
  378. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/model/type_hints.py +0 -0
  379. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
  380. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
  381. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
  382. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
  383. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
  384. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
  385. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
  386. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
  387. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
  388. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
  389. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
  390. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
  391. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
  392. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
  393. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
  394. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
  395. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
  396. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
  397. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
  398. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/framework/base.py +0 -0
  399. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
  400. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
  401. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
  402. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
  403. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
  404. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
  405. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
  406. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
  407. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
  408. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
  409. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
  410. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
  411. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
  412. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
  413. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
  414. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
  415. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
  416. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
  417. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
  418. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
  419. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
  420. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
  421. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
  422. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
  423. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
  424. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
  425. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
  426. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
  427. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
  428. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
  429. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
  430. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
  431. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
  432. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
  433. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
  434. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
  435. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
  436. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
  437. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
  438. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
  439. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
  440. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
  441. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
  442. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
  443. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
  444. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/monitoring/explain_visualize.py +0 -0
  445. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/monitoring/shap.py +0 -0
  446. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/registry/__init__.py +0 -0
  447. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/registry/registry.py +0 -0
  448. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/utils/authentication.py +0 -0
  449. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/utils/connection_params.py +0 -0
  450. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/utils/html_utils.py +0 -0
  451. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/utils/sparse.py +0 -0
  452. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake/ml/utils/sql_client.py +0 -0
  453. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
  454. {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.12.0}/snowflake_ml_python.egg-info/top_level.txt +0 -0
@@ -1,13 +1,94 @@
1
1
  # Release History
2
2
 
3
- ## 1.10.0
3
+ ## 1.12.0
4
+
5
+ ### Bug Fixes
6
+
7
+ * Registry: Fixed an issue where the string representation of dictionary-type output columns was being incorrectly
8
+ created during structured output deserialization. Now, the original data type is properly preserved.
9
+
10
+ ### Behavior Changes
11
+
12
+ ### New Features
13
+
14
+ * Registry: Add OpenAI chat completion compatible signature option for `text-generation` models.
15
+
16
+ ```python
17
+ from snowflake.ml.model import openai_signatures
18
+ import pandas as pd
19
+
20
+ mv = snowflake_registry.log_model(
21
+ model=generator,
22
+ model_name=...,
23
+ ...,
24
+ signatures=openai_signatures.OPENAI_CHAT_SIGNATURE,
25
+ )
26
+
27
+ # create a pd.DataFrame with openai.client.chat.completions arguments like below:
28
+ x_df = pd.DataFrame.from_records(
29
+ [
30
+ {
31
+ "messages": [
32
+ {"role": "system", "content": "Complete the sentence."},
33
+ {
34
+ "role": "user",
35
+ "content": "A descendant of the Lost City of Atlantis, who swam to Earth while saying, ",
36
+ },
37
+ ],
38
+ "max_completion_tokens": 250,
39
+ "temperature": 0.9,
40
+ "stop": None,
41
+ "n": 3,
42
+ "stream": False,
43
+ "top_p": 1.0,
44
+ "frequency_penalty": 0.1,
45
+ "presence_penalty": 0.2,
46
+ }
47
+ ],
48
+ )
49
+
50
+ # OpenAI Chat Completion compatible output
51
+ output_df = mv.run(X=x_df)
52
+ ```
53
+
54
+ * Model Monitoring: Added support for segment columns to enable filtered analysis.
55
+ * Added `segment_columns` parameter to `ModelMonitorSourceConfig` to specify columns for segmenting monitoring data
56
+ * Segment columns must be of STRING type and exist in the source table
57
+ * Added methods to dynamically manage segments:
58
+ * `add_segment_column()`: Add a new segment column to an existing monitor
59
+ * `drop_segment_column()`: Remove a segment column from an existing monitor
60
+ * Experiment Tracking (PrPr): Support for logging artifacts (files and directories) with `log_artifact`
61
+ * Experiment Tracking (PrPr): Support for listing artifacts in a run with `list_artifacts`
62
+ * Experiment Tracking (PrPr): Support for downloading artifacts in a run with `download_artifacts`
63
+
64
+ ## 1.11.0 (08-12-2025)
4
65
 
5
66
  ### Bug Fixes
6
67
 
68
+ * ML Job: Fix `Error: Unable to retrieve head IP address` if not all instances start within the timeout.
69
+ * ML Job: Fix `TypeError: SnowflakeCursor.execute() got an unexpected keyword argument '_force_qmark_paramstyle'`
70
+ when running inside Stored Procedures.
71
+
7
72
  ### Behavior Changes
8
73
 
9
74
  ### New Features
10
75
 
76
+ * `ModelVersion.create_service()`: Made `image_repo` argument optional. By
77
+ default it will use a default image repo, which is
78
+ being rolled out in server version 9.22+.
79
+ * Experiment Tracking (PrPr): Automatically log the model, metrics, and parameters while training Keras models with
80
+ `snowflake.ml.experiment.callback.keras.SnowflakeKerasCallback`.
81
+
82
+ ## 1.10.0
83
+
84
+ ### Behavior Changes
85
+
86
+ * Experiment Tracking (PrPr): The import paths for the auto-logging callbacks have changed to
87
+ `snowflake.ml.experiment.callback.xgboost.SnowflakeXgboostCallback` and
88
+ `snowflake.ml.experiment.callback.lightgbm.SnowflakeLightgbmCallback`.
89
+
90
+ ### New Features
91
+
11
92
  * Registry: add progress bars for `ModelVersion.create_service` and `ModelVersion.log_model`.
12
93
  * ModelRegistry: Logs emitted during `ModelVersion.create_service` will be written to a file. The file location
13
94
  will be shown in the console.
@@ -26,13 +107,13 @@
26
107
 
27
108
  ```python
28
109
  from snowflake.ml.experiment import ExperimentTracking
110
+ from snowflake.ml.experiment.callback import SnowflakeXgboostCallback, SnowflakeLightgbmCallback
29
111
 
30
112
  exp = ExperimentTracking(session=sp_session, database_name="ML", schema_name="PUBLIC")
31
113
 
32
114
  exp.set_experiment("MY_EXPERIMENT")
33
115
 
34
116
  # XGBoost
35
- from snowflake.ml.experiment.callback.xgboost import SnowflakeXgboostCallback
36
117
  callback = SnowflakeXgboostCallback(
37
118
  exp, log_model=True, log_metrics=True, log_params=True, model_name="model_name", model_signature=sig
38
119
  )
@@ -41,7 +122,6 @@ with exp.start_run():
41
122
  model.fit(X, y, eval_set=[(X_test, y_test)])
42
123
 
43
124
  # LightGBM
44
- from snowflake.ml.experiment.callback.lightgbm import SnowflakeLightgbmCallback
45
125
  callback = SnowflakeLightgbmCallback(
46
126
  exp, log_model=True, log_metrics=True, log_params=True, model_name="model_name", model_signature=sig
47
127
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snowflake-ml-python
3
- Version: 1.10.0
3
+ Version: 1.12.0
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:
@@ -244,17 +244,17 @@ Requires-Dist: numpy<3,>=1.23
244
244
  Requires-Dist: packaging<25,>=20.9
245
245
  Requires-Dist: pandas<3,>=2.1.4
246
246
  Requires-Dist: platformdirs<5
247
- Requires-Dist: pyarrow
247
+ Requires-Dist: pyarrow<19.0.0
248
248
  Requires-Dist: pydantic<3,>=2.8.2
249
249
  Requires-Dist: pyjwt<3,>=2.0.0
250
250
  Requires-Dist: pytimeparse<2,>=1.1.8
251
251
  Requires-Dist: pyyaml<7,>=6.0
252
252
  Requires-Dist: retrying<2,>=1.3.3
253
253
  Requires-Dist: s3fs<2026,>=2024.6.1
254
- Requires-Dist: scikit-learn<1.6
254
+ Requires-Dist: scikit-learn<1.7
255
255
  Requires-Dist: scipy<2,>=1.9
256
256
  Requires-Dist: shap<1,>=0.46.0
257
- Requires-Dist: snowflake-connector-python[pandas]<4,>=3.15.0
257
+ Requires-Dist: snowflake-connector-python[pandas]<4,>=3.16.0
258
258
  Requires-Dist: snowflake-snowpark-python!=1.26.0,<2,>=1.17.0
259
259
  Requires-Dist: snowflake.core<2,>=1.0.2
260
260
  Requires-Dist: sqlparse<1,>=0.4
@@ -410,14 +410,95 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
410
410
 
411
411
  # Release History
412
412
 
413
- ## 1.10.0
413
+ ## 1.12.0
414
+
415
+ ### Bug Fixes
416
+
417
+ * Registry: Fixed an issue where the string representation of dictionary-type output columns was being incorrectly
418
+ created during structured output deserialization. Now, the original data type is properly preserved.
419
+
420
+ ### Behavior Changes
421
+
422
+ ### New Features
423
+
424
+ * Registry: Add OpenAI chat completion compatible signature option for `text-generation` models.
425
+
426
+ ```python
427
+ from snowflake.ml.model import openai_signatures
428
+ import pandas as pd
429
+
430
+ mv = snowflake_registry.log_model(
431
+ model=generator,
432
+ model_name=...,
433
+ ...,
434
+ signatures=openai_signatures.OPENAI_CHAT_SIGNATURE,
435
+ )
436
+
437
+ # create a pd.DataFrame with openai.client.chat.completions arguments like below:
438
+ x_df = pd.DataFrame.from_records(
439
+ [
440
+ {
441
+ "messages": [
442
+ {"role": "system", "content": "Complete the sentence."},
443
+ {
444
+ "role": "user",
445
+ "content": "A descendant of the Lost City of Atlantis, who swam to Earth while saying, ",
446
+ },
447
+ ],
448
+ "max_completion_tokens": 250,
449
+ "temperature": 0.9,
450
+ "stop": None,
451
+ "n": 3,
452
+ "stream": False,
453
+ "top_p": 1.0,
454
+ "frequency_penalty": 0.1,
455
+ "presence_penalty": 0.2,
456
+ }
457
+ ],
458
+ )
459
+
460
+ # OpenAI Chat Completion compatible output
461
+ output_df = mv.run(X=x_df)
462
+ ```
463
+
464
+ * Model Monitoring: Added support for segment columns to enable filtered analysis.
465
+ * Added `segment_columns` parameter to `ModelMonitorSourceConfig` to specify columns for segmenting monitoring data
466
+ * Segment columns must be of STRING type and exist in the source table
467
+ * Added methods to dynamically manage segments:
468
+ * `add_segment_column()`: Add a new segment column to an existing monitor
469
+ * `drop_segment_column()`: Remove a segment column from an existing monitor
470
+ * Experiment Tracking (PrPr): Support for logging artifacts (files and directories) with `log_artifact`
471
+ * Experiment Tracking (PrPr): Support for listing artifacts in a run with `list_artifacts`
472
+ * Experiment Tracking (PrPr): Support for downloading artifacts in a run with `download_artifacts`
473
+
474
+ ## 1.11.0 (08-12-2025)
414
475
 
415
476
  ### Bug Fixes
416
477
 
478
+ * ML Job: Fix `Error: Unable to retrieve head IP address` if not all instances start within the timeout.
479
+ * ML Job: Fix `TypeError: SnowflakeCursor.execute() got an unexpected keyword argument '_force_qmark_paramstyle'`
480
+ when running inside Stored Procedures.
481
+
417
482
  ### Behavior Changes
418
483
 
419
484
  ### New Features
420
485
 
486
+ * `ModelVersion.create_service()`: Made `image_repo` argument optional. By
487
+ default it will use a default image repo, which is
488
+ being rolled out in server version 9.22+.
489
+ * Experiment Tracking (PrPr): Automatically log the model, metrics, and parameters while training Keras models with
490
+ `snowflake.ml.experiment.callback.keras.SnowflakeKerasCallback`.
491
+
492
+ ## 1.10.0
493
+
494
+ ### Behavior Changes
495
+
496
+ * Experiment Tracking (PrPr): The import paths for the auto-logging callbacks have changed to
497
+ `snowflake.ml.experiment.callback.xgboost.SnowflakeXgboostCallback` and
498
+ `snowflake.ml.experiment.callback.lightgbm.SnowflakeLightgbmCallback`.
499
+
500
+ ### New Features
501
+
421
502
  * Registry: add progress bars for `ModelVersion.create_service` and `ModelVersion.log_model`.
422
503
  * ModelRegistry: Logs emitted during `ModelVersion.create_service` will be written to a file. The file location
423
504
  will be shown in the console.
@@ -436,13 +517,13 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
436
517
 
437
518
  ```python
438
519
  from snowflake.ml.experiment import ExperimentTracking
520
+ from snowflake.ml.experiment.callback import SnowflakeXgboostCallback, SnowflakeLightgbmCallback
439
521
 
440
522
  exp = ExperimentTracking(session=sp_session, database_name="ML", schema_name="PUBLIC")
441
523
 
442
524
  exp.set_experiment("MY_EXPERIMENT")
443
525
 
444
526
  # XGBoost
445
- from snowflake.ml.experiment.callback.xgboost import SnowflakeXgboostCallback
446
527
  callback = SnowflakeXgboostCallback(
447
528
  exp, log_model=True, log_metrics=True, log_params=True, model_name="model_name", model_signature=sig
448
529
  )
@@ -451,7 +532,6 @@ with exp.start_run():
451
532
  model.fit(X, y, eval_set=[(X_test, y_test)])
452
533
 
453
534
  # LightGBM
454
- from snowflake.ml.experiment.callback.lightgbm import SnowflakeLightgbmCallback
455
535
  callback = SnowflakeLightgbmCallback(
456
536
  exp, log_model=True, log_metrics=True, log_params=True, model_name="model_name", model_signature=sig
457
537
  )
@@ -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.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "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.9, <3.13"
10
10
  dynamic = [ "version", "readme",]
11
- dependencies = [ "absl-py>=0.15,<2", "anyio>=3.5.0,<5", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<3", "packaging>=20.9,<25", "pandas>=2.1.4,<3", "platformdirs<5", "pyarrow", "pydantic>=2.8.2, <3", "pyjwt>=2.0.0, <3", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "s3fs>=2024.6.1,<2026", "scikit-learn<1.6", "scipy>=1.9,<2", "shap>=0.46.0,<1", "snowflake-connector-python[pandas]>=3.15.0,<4", "snowflake-snowpark-python>=1.17.0,<2,!=1.26.0", "snowflake.core>=1.0.2,<2", "sqlparse>=0.4,<1", "tqdm<5", "typing-extensions>=4.1.0,<5", "xgboost>=1.7.3,<3",]
11
+ dependencies = [ "absl-py>=0.15,<2", "anyio>=3.5.0,<5", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<3", "packaging>=20.9,<25", "pandas>=2.1.4,<3", "platformdirs<5", "pyarrow<19.0.0", "pydantic>=2.8.2, <3", "pyjwt>=2.0.0, <3", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "s3fs>=2024.6.1,<2026", "scikit-learn<1.7", "scipy>=1.9,<2", "shap>=0.46.0,<1", "snowflake-connector-python[pandas]>=3.16.0,<4", "snowflake-snowpark-python>=1.17.0,<2,!=1.26.0", "snowflake.core>=1.0.2,<2", "sqlparse>=0.4,<1", "tqdm<5", "typing-extensions>=4.1.0,<5", "xgboost>=1.7.3,<3",]
12
12
  [[project.authors]]
13
13
  name = "Snowflake, Inc"
14
14
  email = "support@snowflake.com"
@@ -88,7 +88,7 @@ class MidStreamException(Exception):
88
88
  message = reason
89
89
  if http_resp:
90
90
  message = f"Error in stream (HTTP Response: {http_resp.status}) - {http_resp.reason}"
91
- if request_id != "":
91
+ if request_id is not None and request_id != "":
92
92
  # add request_id to error message
93
93
  message += f" (Request ID: {request_id})"
94
94
  super().__init__(message)
@@ -327,7 +327,8 @@ def _return_stream_response(
327
327
  # This is the case of midstream errors which were introduced specifically for structured output.
328
328
  # TODO: discuss during code review
329
329
  if parsed_resp.get("error"):
330
- raise MidStreamException(reason=response.text, request_id=request_id)
330
+ error_info = parsed_resp["error"]
331
+ raise MidStreamException(reason=str(error_info), request_id=request_id)
331
332
  else:
332
333
  pass
333
334
 
@@ -9,8 +9,33 @@ from typing import Optional
9
9
 
10
10
  import platformdirs
11
11
 
12
+
13
+ class ProgressBarAwareConsoleHandler(logging.StreamHandler): # type: ignore[type-arg]
14
+ """A logging handler that adapts to different progress bar systems to avoid interfering with display."""
15
+
16
+ def emit(self, record: logging.LogRecord) -> None:
17
+ try:
18
+ msg = self.format(record)
19
+
20
+ # Check if tqdm progress bars are active - use tqdm.write() to avoid interference
21
+ try:
22
+ import tqdm
23
+
24
+ if hasattr(tqdm.tqdm, "_instances") and tqdm.tqdm._instances:
25
+ tqdm.tqdm.write(msg, file=self.stream)
26
+ return
27
+ except (ImportError, AttributeError):
28
+ pass
29
+
30
+ # Fallback to regular stream writing (works for all contexts including Streamlit)
31
+ self.stream.write(msg + "\n")
32
+ self.flush()
33
+ except Exception:
34
+ self.handleError(record)
35
+
36
+
12
37
  # Module-level logger for operational messages that should appear on console
13
- stdout_handler = logging.StreamHandler(sys.stdout)
38
+ stdout_handler = ProgressBarAwareConsoleHandler(sys.stdout)
14
39
  stdout_handler.setFormatter(logging.Formatter("%(message)s"))
15
40
 
16
41
  console_logger = logging.getLogger(__name__)
@@ -0,0 +1,76 @@
1
+ import os
2
+ import posixpath
3
+ from typing import NamedTuple
4
+
5
+
6
+ class ArtifactInfo(NamedTuple):
7
+ name: str
8
+ size: int
9
+ md5: str
10
+ last_modified: str
11
+
12
+
13
+ def get_put_path_pairs(local_path: str, artifact_path: str) -> list[tuple[str, str]]:
14
+ """Enumerate files to upload and their destination subdirectories.
15
+
16
+ Expands a local path (file or directory) into a list of pairs used for uploading
17
+ artifacts to the stage.
18
+
19
+ Args:
20
+ local_path: Absolute or relative path to a local file or directory to upload.
21
+ artifact_path: Destination subdirectory under the run's artifact root in the
22
+ stage. If empty, files are uploaded to the root. When uploading a
23
+ directory, this value is prepended to each file's relative path.
24
+
25
+ Returns:
26
+ A list of tuples ``(local_file_path, destination_artifact_subdir)``. For a
27
+ single file, the list contains one entry with ``destination_artifact_subdir``
28
+ set to ``artifact_path``. For directories, one entry per file is produced and
29
+ subdirectories are preserved using POSIX separators.
30
+
31
+ Raises:
32
+ FileNotFoundError: If ``local_path`` does not exist.
33
+ """
34
+ if not os.path.exists(local_path):
35
+ raise FileNotFoundError(f"Local path does not exist: {local_path}")
36
+
37
+ if os.path.isfile(local_path):
38
+ return [(local_path, artifact_path)]
39
+
40
+ pairs: list[tuple[str, str]] = []
41
+ base_dir = local_path
42
+ for root, _, files in os.walk(base_dir):
43
+ if not files:
44
+ continue
45
+ rel_dir = os.path.relpath(root, base_dir)
46
+ rel_dir_posix = "" if rel_dir in (".", "") else rel_dir.replace(os.sep, "/")
47
+ dest_artifact_path = posixpath.join(artifact_path, rel_dir_posix) if rel_dir_posix else artifact_path
48
+ for filename in files:
49
+ file_path = os.path.join(root, filename)
50
+ pairs.append((file_path, dest_artifact_path))
51
+ return pairs
52
+
53
+
54
+ def get_download_path_pairs(artifacts: list[ArtifactInfo], base_target_dir: str) -> list[tuple[str, str]]:
55
+ """Given artifact metadata entries, computes where each artifact should be written
56
+ locally.
57
+
58
+ Args:
59
+ artifacts: List of artifact metadata where ``name`` is a POSIX-style path
60
+ relative to the run's artifact root (e.g., ``"file.txt"`` or
61
+ ``"nested/dir/file.txt"``).
62
+ base_target_dir: Local base directory to download into. If empty, the
63
+ current working directory is used. Directories will be created as
64
+ needed.
65
+
66
+ Returns:
67
+ A list of tuples ``(artifact_relative_path, local_directory)``. Each tuple
68
+ provides the relative path to request from the stage and the local directory
69
+ where the file should be written.
70
+ """
71
+ planned: list[tuple[str, str]] = []
72
+ for info in artifacts:
73
+ rel_dir = os.path.dirname(info.name)
74
+ local_dir = base_target_dir if rel_dir in ("", ".") else os.path.join(base_target_dir, rel_dir)
75
+ planned.append((info.name, local_dir))
76
+ return planned
@@ -1,9 +1,10 @@
1
1
  from typing import Optional
2
2
 
3
3
  from snowflake.ml._internal.utils import query_result_checker, sql_identifier
4
+ from snowflake.ml.experiment._client import artifact
4
5
  from snowflake.ml.model._client.sql import _base
5
6
  from snowflake.ml.utils import sql_client
6
- from snowflake.snowpark import row, session
7
+ from snowflake.snowpark import file_operation, row, session
7
8
 
8
9
 
9
10
  class ExperimentTrackingSQLClient(_base._BaseSQLClient):
@@ -88,6 +89,59 @@ class ExperimentTrackingSQLClient(_base._BaseSQLClient):
88
89
  f"ALTER EXPERIMENT {experiment_fqn} MODIFY RUN {run_name} SET METADATA=$${run_metadata}$$",
89
90
  ).has_dimensions(expected_rows=1, expected_cols=1).validate()
90
91
 
92
+ def put_artifact(
93
+ self,
94
+ *,
95
+ experiment_name: sql_identifier.SqlIdentifier,
96
+ run_name: sql_identifier.SqlIdentifier,
97
+ artifact_path: str,
98
+ file_path: str,
99
+ auto_compress: bool = False,
100
+ ) -> file_operation.PutResult:
101
+ return self._session.file.put(
102
+ local_file_name=file_path,
103
+ stage_location=self._build_snow_uri(experiment_name, run_name, artifact_path),
104
+ overwrite=True,
105
+ auto_compress=auto_compress,
106
+ )[0]
107
+
108
+ def list_artifacts(
109
+ self,
110
+ *,
111
+ experiment_name: sql_identifier.SqlIdentifier,
112
+ run_name: sql_identifier.SqlIdentifier,
113
+ artifact_path: str,
114
+ ) -> list[artifact.ArtifactInfo]:
115
+ results = (
116
+ query_result_checker.SqlResultValidator(
117
+ self._session, f"LIST {self._build_snow_uri(experiment_name, run_name, artifact_path)}"
118
+ )
119
+ .has_dimensions(expected_cols=4)
120
+ .validate()
121
+ )
122
+ return [
123
+ artifact.ArtifactInfo(
124
+ name=str(result.name).removeprefix(f"/versions/{run_name}/"),
125
+ size=result.size,
126
+ md5=result.md5,
127
+ last_modified=result.last_modified,
128
+ )
129
+ for result in results
130
+ ]
131
+
132
+ def get_artifact(
133
+ self,
134
+ *,
135
+ experiment_name: sql_identifier.SqlIdentifier,
136
+ run_name: sql_identifier.SqlIdentifier,
137
+ artifact_path: str,
138
+ target_path: str,
139
+ ) -> file_operation.GetResult:
140
+ return self._session.file.get(
141
+ stage_location=self._build_snow_uri(experiment_name, run_name, artifact_path),
142
+ target_directory=target_path,
143
+ )[0]
144
+
91
145
  def show_runs_in_experiment(
92
146
  self, *, experiment_name: sql_identifier.SqlIdentifier, like: Optional[str] = None
93
147
  ) -> list[row.Row]:
@@ -96,3 +150,12 @@ class ExperimentTrackingSQLClient(_base._BaseSQLClient):
96
150
  return query_result_checker.SqlResultValidator(
97
151
  self._session, f"SHOW RUNS {like_clause} IN EXPERIMENT {experiment_fqn}"
98
152
  ).validate()
153
+
154
+ def _build_snow_uri(
155
+ self, experiment_name: sql_identifier.SqlIdentifier, run_name: sql_identifier.SqlIdentifier, artifact_path: str
156
+ ) -> str:
157
+ experiment_fqn = self.fully_qualified_object_name(self._database_name, self._schema_name, experiment_name)
158
+ uri = f"snow://experiment/{experiment_fqn}/versions/{run_name}"
159
+ if artifact_path:
160
+ uri += f"/{artifact_path}"
161
+ return uri
@@ -0,0 +1,63 @@
1
+ import json
2
+ from typing import TYPE_CHECKING, Any, Optional
3
+ from warnings import warn
4
+
5
+ import keras
6
+
7
+ from snowflake.ml.experiment import utils
8
+
9
+ if TYPE_CHECKING:
10
+ from snowflake.ml.experiment.experiment_tracking import ExperimentTracking
11
+ from snowflake.ml.model.model_signature import ModelSignature
12
+
13
+
14
+ class SnowflakeKerasCallback(keras.callbacks.Callback):
15
+ def __init__(
16
+ self,
17
+ experiment_tracking: "ExperimentTracking",
18
+ log_model: bool = True,
19
+ log_metrics: bool = True,
20
+ log_params: bool = True,
21
+ log_every_n_epochs: int = 1,
22
+ model_name: Optional[str] = None,
23
+ model_signature: Optional["ModelSignature"] = None,
24
+ ) -> None:
25
+ self._experiment_tracking = experiment_tracking
26
+ self.log_model = log_model
27
+ self.log_metrics = log_metrics
28
+ self.log_params = log_params
29
+ if log_every_n_epochs < 1:
30
+ raise ValueError("`log_every_n_epochs` must be positive.")
31
+ self.log_every_n_epochs = log_every_n_epochs
32
+ self.model_name = model_name
33
+ self.model_signature = model_signature
34
+
35
+ def on_train_begin(self, logs: Optional[dict[str, Any]] = None) -> None:
36
+ if self.log_params:
37
+ params = json.loads(self.model.to_json())
38
+ self._experiment_tracking.log_params(utils.flatten_nested_params(params))
39
+
40
+ def on_epoch_end(self, epoch: int, logs: Optional[dict[str, Any]] = None) -> None:
41
+ if self.log_metrics and logs and epoch % self.log_every_n_epochs == 0:
42
+ for key, value in logs.items():
43
+ try:
44
+ value = float(value)
45
+ except Exception:
46
+ pass
47
+ else:
48
+ self._experiment_tracking.log_metric(key=key, value=value, step=epoch)
49
+
50
+ def on_train_end(self, logs: Optional[dict[str, Any]] = None) -> None:
51
+ if self.log_model:
52
+ if not self.model_signature:
53
+ warn(
54
+ "Model will not be logged because model signature is missing. "
55
+ "To autolog the model, please specify `model_signature` when constructing SnowflakeKerasCallback."
56
+ )
57
+ return
58
+ model_name = self.model_name or self._experiment_tracking._get_or_set_experiment().name + "_model"
59
+ self._experiment_tracking.log_model( # type: ignore[call-arg]
60
+ model=self.model,
61
+ model_name=model_name,
62
+ signatures={"predict": self.model_signature},
63
+ )
@@ -15,6 +15,7 @@ class SnowflakeLightgbmCallback(lgb.callback._RecordEvaluationCallback):
15
15
  log_model: bool = True,
16
16
  log_metrics: bool = True,
17
17
  log_params: bool = True,
18
+ log_every_n_epochs: int = 1,
18
19
  model_name: Optional[str] = None,
19
20
  model_signature: Optional["ModelSignature"] = None,
20
21
  ) -> None:
@@ -22,6 +23,9 @@ class SnowflakeLightgbmCallback(lgb.callback._RecordEvaluationCallback):
22
23
  self.log_model = log_model
23
24
  self.log_metrics = log_metrics
24
25
  self.log_params = log_params
26
+ if log_every_n_epochs < 1:
27
+ raise ValueError("`log_every_n_epochs` must be positive.")
28
+ self.log_every_n_epochs = log_every_n_epochs
25
29
  self.model_name = model_name
26
30
  self.model_signature = model_signature
27
31
 
@@ -32,7 +36,7 @@ class SnowflakeLightgbmCallback(lgb.callback._RecordEvaluationCallback):
32
36
  if env.iteration == env.begin_iteration: # Log params only at the first iteration
33
37
  self._experiment_tracking.log_params(env.params)
34
38
 
35
- if self.log_metrics:
39
+ if self.log_metrics and env.iteration % self.log_every_n_epochs == 0:
36
40
  super().__call__(env)
37
41
  for dataset_name, metrics in self.eval_result.items():
38
42
  for metric_name, log in metrics.items():
@@ -18,6 +18,7 @@ class SnowflakeXgboostCallback(xgb.callback.TrainingCallback):
18
18
  log_model: bool = True,
19
19
  log_metrics: bool = True,
20
20
  log_params: bool = True,
21
+ log_every_n_epochs: int = 1,
21
22
  model_name: Optional[str] = None,
22
23
  model_signature: Optional["ModelSignature"] = None,
23
24
  ) -> None:
@@ -25,6 +26,9 @@ class SnowflakeXgboostCallback(xgb.callback.TrainingCallback):
25
26
  self.log_model = log_model
26
27
  self.log_metrics = log_metrics
27
28
  self.log_params = log_params
29
+ if log_every_n_epochs < 1:
30
+ raise ValueError("`log_every_n_epochs` must be positive.")
31
+ self.log_every_n_epochs = log_every_n_epochs
28
32
  self.model_name = model_name
29
33
  self.model_signature = model_signature
30
34
 
@@ -36,7 +40,7 @@ class SnowflakeXgboostCallback(xgb.callback.TrainingCallback):
36
40
  return model
37
41
 
38
42
  def after_iteration(self, model: Any, epoch: int, evals_log: dict[str, dict[str, Any]]) -> bool:
39
- if self.log_metrics:
43
+ if self.log_metrics and epoch % self.log_every_n_epochs == 0:
40
44
  for dataset_name, metrics in evals_log.items():
41
45
  for metric_name, log in metrics.items():
42
46
  metric_key = dataset_name + ":" + metric_name