snowflake-ml-python 1.49.0__tar.gz → 1.51.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 (550) hide show
  1. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/CHANGELOG.md +40 -7
  2. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/PKG-INFO +44 -12
  3. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/pyproject.toml +4 -4
  4. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/query_result_checker.py +2 -0
  5. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/feature_store.py +161 -15
  6. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/feature_view.py +49 -0
  7. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/online_service.py +10 -0
  8. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/type_utils.py +1 -0
  9. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/decorators.py +2 -0
  10. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/job_definition.py +7 -0
  11. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/manager.py +6 -0
  12. snowflake_ml_python-1.51.0/snowflake/ml/model/_client/model/batch_inference_job_specs.py +166 -0
  13. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/model/batch_inference_serialization.py +3 -1
  14. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/model/batch_inference_specs.py +7 -105
  15. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/model/batch_inference_task.py +13 -0
  16. snowflake_ml_python-1.51.0/snowflake/ml/model/_client/model/batch_inference_task_v2.py +156 -0
  17. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/model/model_version_impl.py +87 -30
  18. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/ops/service_ops.py +307 -56
  19. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/service/inference_job_service_spec.py +8 -6
  20. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/sql/model_version.py +10 -6
  21. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/sql/service.py +68 -19
  22. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_env/model_env.py +12 -6
  23. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +122 -94
  24. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +0 -1
  25. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/batch/__init__.py +4 -2
  26. snowflake_ml_python-1.51.0/snowflake/ml/model/batch_inference/__init__.py +27 -0
  27. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/version.py +1 -1
  28. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake_ml_python.egg-info/PKG-INFO +44 -12
  29. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake_ml_python.egg-info/SOURCES.txt +3 -0
  30. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake_ml_python.egg-info/requires.txt +3 -4
  31. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/LICENSE.txt +0 -0
  32. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/README.md +0 -0
  33. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/setup.cfg +0 -0
  34. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/__init__.py +0 -0
  35. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_classify_text.py +0 -0
  36. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_complete.py +0 -0
  37. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_embed_text_1024.py +0 -0
  38. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_embed_text_768.py +0 -0
  39. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_extract_answer.py +0 -0
  40. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_finetune.py +0 -0
  41. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_sentiment.py +0 -0
  42. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_sse_client.py +0 -0
  43. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_summarize.py +0 -0
  44. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_translate.py +0 -0
  45. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_util.py +0 -0
  46. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/env.py +0 -0
  47. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/env_utils.py +0 -0
  48. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
  49. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
  50. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
  51. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
  52. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
  53. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
  54. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
  55. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
  56. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
  57. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/file_utils.py +0 -0
  58. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
  59. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
  60. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
  61. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
  62. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/init_utils.py +0 -0
  63. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
  64. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
  65. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/platform_capabilities.py +0 -0
  66. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
  67. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/telemetry.py +0 -0
  68. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/type_utils.py +0 -0
  69. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/connection_params.py +0 -0
  70. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
  71. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
  72. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/identifier.py +0 -0
  73. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
  74. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
  75. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/mixins.py +0 -0
  76. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
  77. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
  78. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/result.py +0 -0
  79. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/service_logger.py +0 -0
  80. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
  81. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
  82. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
  83. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
  84. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/tee.py +0 -0
  85. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
  86. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/url.py +0 -0
  87. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/data/__init__.py +0 -0
  88. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
  89. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/data/data_connector.py +0 -0
  90. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/data/data_ingestor.py +0 -0
  91. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/data/data_source.py +0 -0
  92. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/data/ingestor_utils.py +0 -0
  93. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/data/torch_utils.py +0 -0
  94. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/dataset/__init__.py +0 -0
  95. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/dataset/dataset.py +0 -0
  96. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
  97. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
  98. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
  99. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/__init__.py +0 -0
  100. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_client/artifact.py +0 -0
  101. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +0 -0
  102. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_entities/__init__.py +0 -0
  103. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_entities/experiment.py +0 -0
  104. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_entities/run.py +0 -0
  105. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
  106. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_experiment_info.py +0 -0
  107. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_logging/__init__.py +0 -0
  108. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_logging/experiment_logger.py +0 -0
  109. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_logging/experiment_logging_context.py +0 -0
  110. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_source_info.py +0 -0
  111. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/callback/keras.py +0 -0
  112. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/callback/lightgbm.py +0 -0
  113. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/callback/xgboost.py +0 -0
  114. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/experiment_tracking.py +0 -0
  115. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/utils.py +0 -0
  116. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/__init__.py +0 -0
  117. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/_compute_fn_validation.py +0 -0
  118. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/access_manager.py +0 -0
  119. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/aggregation.py +0 -0
  120. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/entity.py +0 -0
  121. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
  122. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
  123. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
  124. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
  125. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
  126. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
  127. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
  128. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
  129. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
  130. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
  131. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
  132. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
  133. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
  134. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
  135. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
  136. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
  137. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
  138. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
  139. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
  140. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
  141. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
  142. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
  143. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/feature.py +0 -0
  144. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/feature_group.py +0 -0
  145. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/feature_view_append_only_validation.py +0 -0
  146. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/feature_view_refresh_freq.py +0 -0
  147. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/interval_utils.py +0 -0
  148. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/metadata_manager.py +0 -0
  149. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/online_service_http_client.py +0 -0
  150. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/realtime_config.py +0 -0
  151. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/realtime_dataset.py +0 -0
  152. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/realtime_dataset_udf.py +0 -0
  153. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/realtime_registration.py +0 -0
  154. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/request_source.py +0 -0
  155. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/spec/__init__.py +0 -0
  156. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/spec/builder.py +0 -0
  157. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/spec/enums.py +0 -0
  158. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/spec/models.py +0 -0
  159. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/spec/table_schema_evolution.py +0 -0
  160. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/stream_config.py +0 -0
  161. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/stream_source.py +0 -0
  162. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/streaming_registration.py +0 -0
  163. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/tile_sql_generator.py +0 -0
  164. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
  165. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/fileset/fileset.py +0 -0
  166. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/fileset/sfcfs.py +0 -0
  167. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/fileset/snowfs.py +0 -0
  168. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/fileset/stage_fs.py +0 -0
  169. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/__init__.py +0 -0
  170. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/__init__.py +0 -0
  171. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/data_utils.py +0 -0
  172. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/dto_schema.py +0 -0
  173. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/exception_utils.py +0 -0
  174. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/legacy.py +0 -0
  175. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/protocols.py +0 -0
  176. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/results.py +0 -0
  177. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/utils.py +0 -0
  178. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/__init__.py +0 -0
  179. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/arg_protocol.py +0 -0
  180. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/constants.py +0 -0
  181. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/feature_flags.py +0 -0
  182. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/payload_utils.py +0 -0
  183. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/query_helper.py +0 -0
  184. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/runtime_env_utils.py +0 -0
  185. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/__init__.py +0 -0
  186. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/constants.py +0 -0
  187. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +0 -0
  188. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +0 -0
  189. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +0 -0
  190. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/start_mlruntime.sh +0 -0
  191. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/startup.sh +0 -0
  192. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +0 -0
  193. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/stage_utils.py +0 -0
  194. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/job.py +0 -0
  195. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/lineage/__init__.py +0 -0
  196. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/lineage/lineage_node.py +0 -0
  197. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/__init__.py +0 -0
  198. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/model/inference_engine_utils.py +0 -0
  199. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/model/model_impl.py +0 -0
  200. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/ops/deployment_step.py +0 -0
  201. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/ops/live_commit_naming.py +0 -0
  202. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
  203. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/ops/model_ops.py +0 -0
  204. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/ops/param_ops.py +0 -0
  205. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/ops/param_utils.py +0 -0
  206. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/service/import_model_spec_schema.py +0 -0
  207. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +0 -0
  208. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +0 -0
  209. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
  210. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/sql/model.py +0 -0
  211. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/sql/stage.py +0 -0
  212. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
  213. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/huggingface_lazy_uploader.py +0 -0
  214. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
  215. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
  216. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
  217. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
  218. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
  219. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
  220. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/infer_function_init_once.py_template +0 -0
  221. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
  222. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned_init_once.py_template +0 -0
  223. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
  224. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function_init_once.py_template +0 -0
  225. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
  226. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/utils.py +0 -0
  227. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
  228. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
  229. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
  230. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
  231. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
  232. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
  233. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/__init__.py +0 -0
  234. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_default.py +0 -0
  235. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_handler.py +0 -0
  236. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_openai_chat_wrapper.py +0 -0
  237. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_task_handler.py +0 -0
  238. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_utils.py +0 -0
  239. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/audio_classification.py +0 -0
  240. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/audio_text_to_text.py +0 -0
  241. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/automatic_speech_recognition.py +0 -0
  242. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/conversational.py +0 -0
  243. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/document_question_answering.py +0 -0
  244. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/fill_mask.py +0 -0
  245. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_classification.py +0 -0
  246. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_feature_extraction.py +0 -0
  247. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_text_to_text.py +0 -0
  248. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_to_text.py +0 -0
  249. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/object_detection.py +0 -0
  250. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/question_answering.py +0 -0
  251. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/summarization.py +0 -0
  252. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/table_question_answering.py +0 -0
  253. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text2text_generation.py +0 -0
  254. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_classification.py +0 -0
  255. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_generation.py +0 -0
  256. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/token_classification.py +0 -0
  257. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/translation.py +0 -0
  258. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_classification.py +0 -0
  259. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_text_to_text.py +0 -0
  260. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/visual_question_answering.py +0 -0
  261. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_audio_classification.py +0 -0
  262. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_image_classification.py +0 -0
  263. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_object_detection.py +0 -0
  264. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_text_classification.py +0 -0
  265. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
  266. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
  267. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/prophet.py +0 -0
  268. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
  269. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +0 -0
  270. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +0 -0
  271. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
  272. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
  273. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
  274. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
  275. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
  276. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +0 -0
  277. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +0 -0
  278. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +0 -0
  279. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +0 -0
  280. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
  281. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +0 -0
  282. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -0
  283. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_meta/model_sample_input_data.py +0 -0
  284. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
  285. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
  286. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
  287. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_packager.py +0 -0
  288. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
  289. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_save_options.py +0 -0
  290. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
  291. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
  292. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
  293. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/core.py +0 -0
  294. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
  295. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
  296. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
  297. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
  298. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
  299. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
  300. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/utils.py +0 -0
  301. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/code_path.py +0 -0
  302. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/compute_pool.py +0 -0
  303. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/custom_model.py +0 -0
  304. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/event_handler.py +0 -0
  305. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/inference_engine.py +0 -0
  306. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/model_signature.py +0 -0
  307. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/models/huggingface.py +0 -0
  308. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
  309. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/openai_signatures.py +0 -0
  310. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/target_platform.py +0 -0
  311. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/task.py +0 -0
  312. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/type_hints.py +0 -0
  313. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/volatility.py +0 -0
  314. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
  315. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
  316. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
  317. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
  318. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
  319. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
  320. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
  321. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
  322. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
  323. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
  324. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
  325. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
  326. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
  327. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
  328. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
  329. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
  330. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
  331. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
  332. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/birch.py +0 -0
  333. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
  334. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
  335. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
  336. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/k_means.py +0 -0
  337. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
  338. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
  339. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/optics.py +0 -0
  340. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
  341. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
  342. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
  343. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
  344. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
  345. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
  346. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
  347. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
  348. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
  349. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
  350. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
  351. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
  352. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
  353. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/oas.py +0 -0
  354. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
  355. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
  356. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
  357. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
  358. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
  359. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
  360. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
  361. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
  362. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
  363. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/pca.py +0 -0
  364. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
  365. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
  366. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
  367. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
  368. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
  369. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
  370. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
  371. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
  372. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
  373. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
  374. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
  375. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
  376. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
  377. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
  378. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
  379. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
  380. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
  381. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
  382. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
  383. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
  384. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
  385. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
  386. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
  387. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
  388. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
  389. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
  390. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
  391. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
  392. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
  393. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
  394. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
  395. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
  396. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/framework/base.py +0 -0
  397. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
  398. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
  399. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
  400. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
  401. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
  402. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
  403. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
  404. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
  405. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
  406. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
  407. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
  408. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
  409. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
  410. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
  411. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
  412. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
  413. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
  414. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
  415. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
  416. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
  417. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
  418. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
  419. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
  420. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
  421. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
  422. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
  423. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/lars.py +0 -0
  424. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
  425. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
  426. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
  427. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
  428. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
  429. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
  430. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
  431. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
  432. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
  433. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
  434. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
  435. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
  436. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
  437. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
  438. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
  439. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
  440. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
  441. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
  442. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
  443. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
  444. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
  445. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
  446. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
  447. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
  448. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
  449. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
  450. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
  451. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
  452. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
  453. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/manifold/isomap.py +0 -0
  454. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/manifold/mds.py +0 -0
  455. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
  456. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/manifold/tsne.py +0 -0
  457. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
  458. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
  459. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
  460. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
  461. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
  462. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
  463. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
  464. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
  465. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
  466. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
  467. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
  468. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
  469. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
  470. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
  471. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
  472. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
  473. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
  474. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
  475. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
  476. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
  477. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
  478. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
  479. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
  480. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
  481. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
  482. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
  483. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
  484. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
  485. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
  486. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
  487. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
  488. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
  489. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
  490. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
  491. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
  492. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
  493. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
  494. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
  495. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
  496. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
  497. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
  498. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
  499. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
  500. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
  501. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
  502. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
  503. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
  504. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
  505. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
  506. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
  507. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
  508. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
  509. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
  510. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
  511. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
  512. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
  513. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
  514. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
  515. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
  516. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
  517. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
  518. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
  519. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/svm/svc.py +0 -0
  520. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/svm/svr.py +0 -0
  521. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
  522. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
  523. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
  524. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
  525. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
  526. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
  527. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
  528. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
  529. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
  530. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
  531. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
  532. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
  533. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
  534. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
  535. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
  536. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/explain_visualize.py +0 -0
  537. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/model_monitor.py +0 -0
  538. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/shap.py +0 -0
  539. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/registry/__init__.py +0 -0
  540. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/registry/_manager/model_manager.py +0 -0
  541. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/registry/_manager/model_parameter_reconciler.py +0 -0
  542. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/registry/registry.py +0 -0
  543. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/utils/authentication.py +0 -0
  544. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/utils/connection_params.py +0 -0
  545. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/utils/html_utils.py +0 -0
  546. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/utils/sparse.py +0 -0
  547. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/utils/sql_client.py +0 -0
  548. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/utils/stage_file.py +0 -0
  549. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
  550. {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake_ml_python.egg-info/top_level.txt +0 -0
@@ -1,18 +1,46 @@
1
1
  # Release History
2
2
 
3
- ## 1.49.0
3
+ ## 1.51.0
4
4
 
5
5
  ### New Features
6
6
 
7
+ * ML Jobs: `artifact_repositories` now accepts a list of repositories, allowing multiple artifact
8
+ repositories to be specified for a job.
9
+ * Registry: Added support for logging and running MLflow 3.x models.
10
+
7
11
  ### Bug Fixes
8
12
 
9
- * Registry: Fixed a bug where logging a model with explainability enabled could fail with a data validation error
10
- ("There is no non-null data in column ...") when a numeric input column was entirely null within the background
11
- sample. The `explain` method now reuses the model's existing input signature instead of re-inferring it from the
12
- sample.
13
+ * Registry: Fixed a bug where an MLflow model logged with
14
+ `target_platforms=["SNOWPARK_CONTAINER_SERVICES"]` could drop its pip dependencies, leaving the
15
+ deployed model missing required packages.
16
+
17
+ ### Behavior Changes
18
+
19
+ ### Deprecations
20
+
21
+ ## 1.50.0 (2026-08-03)
22
+
23
+ ### New Features
24
+
25
+ ### Bug Fixes
26
+
27
+ ### Behavior Changes
13
28
 
14
- * Feature Store: Fixed a bug where `get_feature_view()` could return stale metadata after re-registering a feature
15
- view with `overwrite=True`. Metadata reads now select the most recently written row.
29
+ ### Deprecations
30
+
31
+ ## 1.49.0 (2026-07-29)
32
+
33
+ ### New Features
34
+
35
+ * Experiment Tracking: `ExperimentTracking` now captures best-effort source provenance (entry-point filename and any
36
+ surrounding git commit, branch, and remote URL) for each new run by default. Pass `capture_source_info=False` to
37
+ disable it. Collection is always non-fatal and never blocks run creation.
38
+
39
+ ### Bug Fixes
40
+
41
+ * Registry: Fixed `ModelVersion.load()` failing with `Result for query <id> has expired` inside Snowflake Container
42
+ Runtime notebooks. Model file downloads now use the `session.file.get` FileOperation API (the same mechanism used
43
+ when logging a model) instead of a raw `GET` query, avoiding a dependency on `collect()` result sets.
16
44
 
17
45
  ### Behavior Changes
18
46
 
@@ -28,6 +56,11 @@
28
56
 
29
57
  ### Bug Fixes
30
58
 
59
+ * Registry: Fixed a bug where logging a model with explainability enabled could fail with a data validation error
60
+ ("There is no non-null data in column ...") when a numeric input column was entirely null within the background
61
+ sample. The `explain` method now reuses the model's existing input signature instead of re-inferring it from the
62
+ sample.
63
+
31
64
  ### Behavior Changes
32
65
 
33
66
  ### Deprecations
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snowflake-ml-python
3
- Version: 1.49.0
3
+ Version: 1.51.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:
@@ -236,7 +236,6 @@ License-File: LICENSE.txt
236
236
  Requires-Dist: anyio<5,>=3.5.0
237
237
  Requires-Dist: cachetools>=3.1.1
238
238
  Requires-Dist: cloudpickle>=2.0.0
239
- Requires-Dist: cryptography
240
239
  Requires-Dist: fsspec[http]<2026,>=2024.6.1
241
240
  Requires-Dist: h2<5,>=4.3.0
242
241
  Requires-Dist: importlib_resources<7,>=6.1.1
@@ -265,7 +264,7 @@ Requires-Dist: altair<7,>=5; extra == "all"
265
264
  Requires-Dist: catboost<2,>=1.2.0; extra == "all"
266
265
  Requires-Dist: keras<4,>=2.0.0; extra == "all"
267
266
  Requires-Dist: lightgbm<5,>=4.1.0; extra == "all"
268
- Requires-Dist: mlflow<3,>=2.16.0; extra == "all"
267
+ Requires-Dist: mlflow<4,>=2.16.0; extra == "all"
269
268
  Requires-Dist: prophet<2,>=1.1.0; extra == "all"
270
269
  Requires-Dist: sentence-transformers<6,>=2.7.0; extra == "all"
271
270
  Requires-Dist: sentencepiece<0.3,>=0.1.95; extra == "all"
@@ -286,7 +285,7 @@ Requires-Dist: torch<3,>=2.0.1; extra == "keras"
286
285
  Provides-Extra: lightgbm
287
286
  Requires-Dist: lightgbm<5,>=4.1.0; extra == "lightgbm"
288
287
  Provides-Extra: llm
289
- Requires-Dist: mlflow<3,>=2.16.0; extra == "llm"
288
+ Requires-Dist: mlflow<4,>=2.16.0; extra == "llm"
290
289
  Requires-Dist: sentence-transformers<6,>=2.7.0; extra == "llm"
291
290
  Requires-Dist: sentencepiece<0.3,>=0.1.95; extra == "llm"
292
291
  Requires-Dist: tokenizers<1,>=0.15.1; extra == "llm"
@@ -294,7 +293,7 @@ Requires-Dist: torch<3,>=2.0.1; extra == "llm"
294
293
  Requires-Dist: torchdata<1,>=0.4; extra == "llm"
295
294
  Requires-Dist: transformers!=4.51.3,<6,>=4.39.3; extra == "llm"
296
295
  Provides-Extra: mlflow
297
- Requires-Dist: mlflow<3,>=2.16.0; extra == "mlflow"
296
+ Requires-Dist: mlflow<4,>=2.16.0; extra == "mlflow"
298
297
  Provides-Extra: prophet
299
298
  Requires-Dist: prophet<2,>=1.1.0; extra == "prophet"
300
299
  Provides-Extra: streamlit
@@ -417,19 +416,47 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
417
416
 
418
417
  # Release History
419
418
 
420
- ## 1.49.0
419
+ ## 1.51.0
421
420
 
422
421
  ### New Features
423
422
 
423
+ * ML Jobs: `artifact_repositories` now accepts a list of repositories, allowing multiple artifact
424
+ repositories to be specified for a job.
425
+ * Registry: Added support for logging and running MLflow 3.x models.
426
+
424
427
  ### Bug Fixes
425
428
 
426
- * Registry: Fixed a bug where logging a model with explainability enabled could fail with a data validation error
427
- ("There is no non-null data in column ...") when a numeric input column was entirely null within the background
428
- sample. The `explain` method now reuses the model's existing input signature instead of re-inferring it from the
429
- sample.
429
+ * Registry: Fixed a bug where an MLflow model logged with
430
+ `target_platforms=["SNOWPARK_CONTAINER_SERVICES"]` could drop its pip dependencies, leaving the
431
+ deployed model missing required packages.
432
+
433
+ ### Behavior Changes
434
+
435
+ ### Deprecations
436
+
437
+ ## 1.50.0 (2026-08-03)
438
+
439
+ ### New Features
440
+
441
+ ### Bug Fixes
442
+
443
+ ### Behavior Changes
430
444
 
431
- * Feature Store: Fixed a bug where `get_feature_view()` could return stale metadata after re-registering a feature
432
- view with `overwrite=True`. Metadata reads now select the most recently written row.
445
+ ### Deprecations
446
+
447
+ ## 1.49.0 (2026-07-29)
448
+
449
+ ### New Features
450
+
451
+ * Experiment Tracking: `ExperimentTracking` now captures best-effort source provenance (entry-point filename and any
452
+ surrounding git commit, branch, and remote URL) for each new run by default. Pass `capture_source_info=False` to
453
+ disable it. Collection is always non-fatal and never blocks run creation.
454
+
455
+ ### Bug Fixes
456
+
457
+ * Registry: Fixed `ModelVersion.load()` failing with `Result for query <id> has expired` inside Snowflake Container
458
+ Runtime notebooks. Model file downloads now use the `session.file.get` FileOperation API (the same mechanism used
459
+ when logging a model) instead of a raw `GET` query, avoiding a dependency on `collect()` result sets.
433
460
 
434
461
  ### Behavior Changes
435
462
 
@@ -445,6 +472,11 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
445
472
 
446
473
  ### Bug Fixes
447
474
 
475
+ * Registry: Fixed a bug where logging a model with explainability enabled could fail with a data validation error
476
+ ("There is no non-null data in column ...") when a numeric input column was entirely null within the background
477
+ sample. The `explain` method now reuses the model's existing input signature instead of re-inferring it from the
478
+ sample.
479
+
448
480
  ### Behavior Changes
449
481
 
450
482
  ### Deprecations
@@ -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.14"
10
10
  dynamic = [ "version", "readme",]
11
- dependencies = [ "anyio>=3.5.0,<5", "cachetools>=3.1.1", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "h2>=4.3.0,<5", "importlib_resources>=6.1.1, <7", "jinja2>=3.1.0,<4", "numpy>=1.23,<3", "packaging>=20.9,<26", "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", "scikit-learn<1.9", "scipy>=1.9,<2", "shap>=0.46.0,<1", "snowflake-connector-python[pandas]>=3.17.3,<5", "snowflake-snowpark-python>=1.17.0,<2,!=1.26.0", "sqlparse>=0.4,<1", "tqdm<5", "typing-extensions>=4.1.0,<5", "xgboost<4",]
11
+ dependencies = [ "anyio>=3.5.0,<5", "cachetools>=3.1.1", "cloudpickle>=2.0.0", "fsspec[http]>=2024.6.1,<2026", "h2>=4.3.0,<5", "importlib_resources>=6.1.1, <7", "jinja2>=3.1.0,<4", "numpy>=1.23,<3", "packaging>=20.9,<26", "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", "scikit-learn<1.9", "scipy>=1.9,<2", "shap>=0.46.0,<1", "snowflake-connector-python[pandas]>=3.17.3,<5", "snowflake-snowpark-python>=1.17.0,<2,!=1.26.0", "sqlparse>=0.4,<1", "tqdm<5", "typing-extensions>=4.1.0,<5", "xgboost<4",]
12
12
  [[project.authors]]
13
13
  name = "Snowflake, Inc"
14
14
  email = "support@snowflake.com"
@@ -24,13 +24,13 @@ Issues = "https://github.com/snowflakedb/snowflake-ml-python/issues"
24
24
  Changelog = "https://github.com/snowflakedb/snowflake-ml-python/blob/master/CHANGELOG.md"
25
25
 
26
26
  [project.optional-dependencies]
27
- all = [ "altair>=5,<7", "catboost>=1.2.0, <2", "keras>=2.0.0,<4", "lightgbm>=4.1.0, <5", "mlflow>=2.16.0, <3", "prophet>=1.1.0, <2", "sentence-transformers>=2.7.0,<6", "sentencepiece>=0.1.95,<0.3", "streamlit>=1.30.0,<2", "tensorflow>=2.17.0,<3", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "torchdata>=0.4,<1", "transformers>=4.39.3,!=4.51.3,<6",]
27
+ all = [ "altair>=5,<7", "catboost>=1.2.0, <2", "keras>=2.0.0,<4", "lightgbm>=4.1.0, <5", "mlflow>=2.16.0, <4", "prophet>=1.1.0, <2", "sentence-transformers>=2.7.0,<6", "sentencepiece>=0.1.95,<0.3", "streamlit>=1.30.0,<2", "tensorflow>=2.17.0,<3", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "torchdata>=0.4,<1", "transformers>=4.39.3,!=4.51.3,<6",]
28
28
  altair = [ "altair>=5,<7",]
29
29
  catboost = [ "catboost>=1.2.0, <2",]
30
30
  keras = [ "keras>=2.0.0,<4", "tensorflow>=2.17.0,<3", "torch>=2.0.1,<3",]
31
31
  lightgbm = [ "lightgbm>=4.1.0, <5",]
32
- llm = [ "mlflow>=2.16.0, <3", "sentence-transformers>=2.7.0,<6", "sentencepiece>=0.1.95,<0.3", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "torchdata>=0.4,<1", "transformers>=4.39.3,!=4.51.3,<6",]
33
- mlflow = [ "mlflow>=2.16.0, <3",]
32
+ llm = [ "mlflow>=2.16.0, <4", "sentence-transformers>=2.7.0,<6", "sentencepiece>=0.1.95,<0.3", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "torchdata>=0.4,<1", "transformers>=4.39.3,!=4.51.3,<6",]
33
+ mlflow = [ "mlflow>=2.16.0, <4",]
34
34
  prophet = [ "prophet>=1.1.0, <2",]
35
35
  streamlit = [ "streamlit>=1.30.0,<2",]
36
36
  tensorflow = [ "tensorflow>=2.17.0,<3",]
@@ -270,4 +270,6 @@ class SqlResultValidator(ResultValidator):
270
270
 
271
271
  def _get_result(self) -> list[snowpark.Row]:
272
272
  """Collect the result of the given SQL query."""
273
+ if self._params is None:
274
+ return self._session.sql(self._query).collect(statement_params=self._statement_params)
273
275
  return self._session.sql(self._query, params=self._params).collect(statement_params=self._statement_params)
@@ -27,7 +27,6 @@ from typing_extensions import Concatenate, ParamSpec
27
27
 
28
28
  import snowflake.ml.feature_store.feature_view as fv_mod
29
29
  import snowflake.ml.version as snowml_version
30
- from snowflake.ml import dataset
31
30
  from snowflake.ml._internal import telemetry
32
31
  from snowflake.ml._internal.exceptions import (
33
32
  dataset_errors,
@@ -42,11 +41,15 @@ from snowflake.ml._internal.utils.sql_identifier import (
42
41
  parse_fully_qualified_name,
43
42
  to_sql_identifiers,
44
43
  )
45
- from snowflake.ml.dataset.dataset_metadata import FeatureStoreMetadata
44
+
45
+ if TYPE_CHECKING:
46
+ from snowflake.ml import dataset
47
+
46
48
  from snowflake.ml.feature_store import (
47
49
  feature_group as fg_mod,
48
50
  feature_view_append_only_validation,
49
51
  feature_view_refresh_freq,
52
+ interval_utils,
50
53
  online_service,
51
54
  online_service_http_client,
52
55
  realtime_dataset as rtfv_dataset,
@@ -447,6 +450,59 @@ class _FeatureStoreConfig:
447
450
  return f"{self.database}.{self.schema}"
448
451
 
449
452
 
453
+ def _canonicalize_operational_fields(payload: dict[str, Any]) -> dict[str, Any]:
454
+ """Return a canonicalized copy of an FV operational-field payload (Plan section A4).
455
+
456
+ Closes Bug 2 (``UPDATE_FV`` operational drift on tiled online BFVs) by
457
+ coercing two fields to a single representation that the diff logic in
458
+ ``decl/invariants.py`` and ``decl/planner.py`` consumes symmetrically:
459
+
460
+ * ``online_store_type`` — lowercased and whitespace-stripped. Snowflake
461
+ ``DESCRIBE … TYPE = SPECIFICATION`` returns mixed-case enum values
462
+ with surrounding whitespace; the local compile emits the lowercase
463
+ form. Without canonicalization the diff observes cosmetic drift on
464
+ a clean re-plan.
465
+ * ``target_lag_sec`` — always an ``int`` computed from the deployed
466
+ string form (``payload["target_lag"]``) via
467
+ :func:`interval_utils.interval_to_seconds`. The OFT may return
468
+ either ``"5 minutes"`` or ``"300 SECONDS"`` for the same value;
469
+ diffing on seconds (not strings) makes the comparison stable.
470
+
471
+ The helper is pure: the input ``payload`` is not mutated. Absent or
472
+ ``None`` keys are preserved as-is so callers can chain this through a
473
+ pipeline of canonicalizers without re-introducing fields.
474
+
475
+ The ``"DOWNSTREAM"`` sentinel (CRON-task target_lag) is silently
476
+ skipped: the planner recovers the cron expression via the companion
477
+ Task, and ``interval_to_seconds`` would otherwise crash trying to
478
+ parse it.
479
+
480
+ Args:
481
+ payload: Operational-field dictionary, typically the
482
+ ``spec_payload["spec"]`` shape that ``decl/`` consumes.
483
+
484
+ Returns:
485
+ A new dict (caller's payload is not mutated) with
486
+ ``online_store_type`` and ``target_lag_sec`` in canonical form.
487
+ """
488
+ out = dict(payload)
489
+
490
+ if "online_store_type" in out:
491
+ value = out["online_store_type"]
492
+ if isinstance(value, str):
493
+ out["online_store_type"] = value.strip().lower()
494
+
495
+ if "target_lag" in out and out["target_lag"] is not None:
496
+ target_lag_str = str(out["target_lag"])
497
+ if target_lag_str.strip().upper() != "DOWNSTREAM":
498
+ try:
499
+ out["target_lag_sec"] = int(interval_utils.interval_to_seconds(target_lag_str))
500
+ except (KeyError, ValueError, TypeError):
501
+ pass
502
+
503
+ return out
504
+
505
+
450
506
  def switch_warehouse(
451
507
  f: Callable[Concatenate[FeatureStore, _Args], _RT],
452
508
  ) -> Callable[Concatenate[FeatureStore, _Args], _RT]:
@@ -860,7 +916,12 @@ class FeatureStore:
860
916
 
861
917
  return self.get_entity(entity.name)
862
918
 
863
- def update_entity(self, name: str, *, desc: Optional[str] = None) -> Optional[Entity]:
919
+ def update_entity(
920
+ self,
921
+ name: str,
922
+ *,
923
+ desc: Optional[str] = None,
924
+ ) -> Optional[Entity]:
864
925
  """Update a registered entity with provided information.
865
926
 
866
927
  Args:
@@ -908,9 +969,9 @@ class FeatureStore:
908
969
  return None
909
970
 
910
971
  new_desc = desc if desc is not None else found_rows[0]["DESC"]
972
+ full_name = f"{self._config.full_schema_path}.{self._get_entity_name(name)}"
911
973
 
912
974
  try:
913
- full_name = f"{self._config.full_schema_path}.{self._get_entity_name(name)}"
914
975
  self._session.sql(f"ALTER TAG {full_name} SET COMMENT = {_sql_string_literal(new_desc)}").collect(
915
976
  statement_params=self._telemetry_stmp
916
977
  )
@@ -3783,6 +3844,11 @@ class FeatureStore:
3783
3844
  -------------------------------------------------------
3784
3845
 
3785
3846
  """
3847
+ from snowflake.ml import (
3848
+ dataset, # lazy import — heavy deps (numpy/pandas/pyarrow)
3849
+ )
3850
+ from snowflake.ml.dataset.dataset_metadata import FeatureStoreMetadata
3851
+
3786
3852
  if output_type not in {"table", "dataset"}:
3787
3853
  raise snowml_exceptions.SnowflakeMLException(
3788
3854
  error_code=error_codes.INVALID_ARGUMENT,
@@ -3904,6 +3970,10 @@ class FeatureStore:
3904
3970
  1.0
3905
3971
 
3906
3972
  """
3973
+ from snowflake.ml.dataset.dataset_metadata import (
3974
+ FeatureStoreMetadata, # lazy import
3975
+ )
3976
+
3907
3977
  assert ds.selected_version is not None
3908
3978
  source_meta = ds.selected_version._get_metadata()
3909
3979
  if (
@@ -7910,12 +7980,6 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
7910
7980
  source_refs_meta = self._metadata_manager.get_feature_view_source_refs(name, version)
7911
7981
  source_refs_json = json.dumps(source_refs_meta.sources) if source_refs_meta is not None else None
7912
7982
 
7913
- # Surface the authored source-ref list (JSON-encoded) when a
7914
- # ``FV_SOURCE_REFS`` row exists; otherwise leave the column null.
7915
- # Verbose-only: goes into output_values_extra alongside backup_source.
7916
- source_refs_meta = self._metadata_manager.get_feature_view_source_refs(name, version)
7917
- source_refs_json = json.dumps(source_refs_meta.sources) if source_refs_meta is not None else None
7918
-
7919
7983
  backup_source: Optional[str] = None
7920
7984
  if fv_metadata.is_append_only:
7921
7985
  append_only_meta = self._metadata_manager.get_append_only_metadata(name, version)
@@ -8099,11 +8163,6 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
8099
8163
  source_refs_meta = self._metadata_manager.get_feature_view_source_refs(name.identifier(), version)
8100
8164
  restored_source_refs = source_refs_meta.sources if source_refs_meta is not None else None
8101
8165
 
8102
- # Rehydrate the authored source-ref list onto the reconstructed
8103
- # FV when a ``FV_SOURCE_REFS`` row was persisted at register time.
8104
- source_refs_meta = self._metadata_manager.get_feature_view_source_refs(name.identifier(), version)
8105
- restored_source_refs = source_refs_meta.sources if source_refs_meta is not None else None
8106
-
8107
8166
  if obj_type == _FeatureStoreObjTypes.MANAGED_FEATURE_VIEW:
8108
8167
  df = self._session.sql(query)
8109
8168
  entities = [find_and_compose_entity(n) for n in fv_metadata.entities]
@@ -8500,6 +8559,11 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
8500
8559
  else:
8501
8560
  source_clause = f"FROM {source_table_name}"
8502
8561
 
8562
+ # A view-backed source only lets the OFT refresh incrementally when it has change tracking
8563
+ # enabled; otherwise the backend silently downgrades the OFT to a FULL refresh. Enable it
8564
+ # before issuing the CREATE so the refresh mode is derived correctly.
8565
+ self._enable_source_view_change_tracking_for_incremental_oft(feature_view, source_table_name)
8566
+
8503
8567
  # Create online feature table
8504
8568
  try:
8505
8569
  query = fv_mod.build_oft_create_sql(
@@ -8525,6 +8589,88 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
8525
8589
 
8526
8590
  return online_table_name
8527
8591
 
8592
+ def _enable_source_view_change_tracking_for_incremental_oft(
8593
+ self,
8594
+ feature_view: FeatureView,
8595
+ fully_qualified_source_name: str,
8596
+ ) -> None:
8597
+ """Enable change tracking on a POSTGRES-backed OFT's source view so it can refresh incrementally.
8598
+
8599
+ The backend derives a spec-backed (POSTGRES) Online Feature Table's refresh mode from its
8600
+ source object. When that source is a plain View (static/external feature views), change
8601
+ tracking is off by default and the OFT silently falls back to a FULL refresh — an explicit
8602
+ ``INCREMENTAL`` request even errors. Enabling change tracking on the view lets the OFT
8603
+ resolve to an incremental refresh.
8604
+
8605
+ This targets the object the OFT actually reads from at refresh time, and is a no-op
8606
+ otherwise:
8607
+
8608
+ - Managed feature views are backed by a Dynamic Table (change tracking is inherent to an
8609
+ incremental DT and cannot be enabled on a FULL one), so their OFT never reads from a
8610
+ plain view.
8611
+ - Streaming feature views may be backed offline by a view (a non-aggregated SFV with
8612
+ ``refresh_freq is None`` materializes as a View), but their OFT is spec-backed by the
8613
+ UDF-transformed table / stream source (``FROM SPECIFICATION``) and refreshes
8614
+ continuously — it does not read from that offline view, so enabling change tracking on
8615
+ it would not affect the OFT.
8616
+ - Realtime feature views have no offline view at all.
8617
+ - HYBRID_TABLE-backed OFTs are out of scope. This targets the spec-backed refresh-mode
8618
+ derivation used by POSTGRES OFTs, and enabling change tracking has real side effects
8619
+ (it cascades to the view's base tables and requires ``OWNERSHIP`` on them), so we do not
8620
+ newly impose it on the legacy HYBRID_TABLE path — its behavior is left unchanged.
8621
+
8622
+ It is also skipped when the refresh mode is not one that benefits from change tracking
8623
+ (i.e., only AUTO, INCREMENTAL, and the default None proceed; FULL and unknown/future
8624
+ modes are conservatively skipped).
8625
+
8626
+ Args:
8627
+ feature_view: The FeatureView backing the online feature table.
8628
+ fully_qualified_source_name: ``DB.SCHEMA.SOURCE`` object the OFT reads from.
8629
+
8630
+ Raises:
8631
+ SnowflakeMLException: If enabling change tracking fails and the refresh mode is
8632
+ explicitly ``INCREMENTAL``. For ``AUTO`` or unset modes the failure is logged
8633
+ as a warning and the OFT falls back to FULL refresh.
8634
+ """
8635
+ # Only POSTGRES-backed OFTs whose source is a plain View need this. The offline object is a
8636
+ # View exactly when refresh_freq is None (managed FVs are DT-backed); streaming/realtime FVs
8637
+ # are excluded because their OFT does not read from an offline view. HYBRID_TABLE is out of
8638
+ # scope: enabling change tracking has base-table side effects we don't impose on the legacy path.
8639
+ online_config = feature_view.online_config
8640
+ oft_reads_from_source_view = (
8641
+ online_config is not None
8642
+ and online_config.store_type == OnlineStoreType.POSTGRES
8643
+ and feature_view.refresh_freq is None
8644
+ and not feature_view.is_streaming
8645
+ and not feature_view.is_realtime_feature_view
8646
+ )
8647
+ if not oft_reads_from_source_view:
8648
+ return
8649
+
8650
+ refresh_mode = feature_view.refresh_mode
8651
+ if refresh_mode is not None and refresh_mode.upper() not in ("AUTO", "INCREMENTAL"):
8652
+ return
8653
+
8654
+ try:
8655
+ self._session.sql(fv_mod.build_enable_view_change_tracking_sql(fully_qualified_source_name)).collect(
8656
+ statement_params=self._telemetry_stmp
8657
+ )
8658
+ except SnowparkSQLException as e:
8659
+ if refresh_mode is not None and refresh_mode.upper() == "INCREMENTAL":
8660
+ raise snowml_exceptions.SnowflakeMLException(
8661
+ error_code=error_codes.SNOWML_CREATE_FAILED,
8662
+ original_exception=RuntimeError(
8663
+ f"Failed to enable change tracking on source view {fully_qualified_source_name}, "
8664
+ f"which the online feature table requires to refresh incrementally: {e}"
8665
+ ),
8666
+ ) from e
8667
+ logger.warning(
8668
+ "Could not enable change tracking on source view %s; "
8669
+ "the online feature table will use FULL refresh: %s",
8670
+ fully_qualified_source_name,
8671
+ e,
8672
+ )
8673
+
8528
8674
  def _build_batch_feature_view_spec(
8529
8675
  self,
8530
8676
  feature_view: FeatureView,
@@ -66,6 +66,34 @@ _PG_IDENTIFIER_BYTE_LIMIT = 63
66
66
  _POSTGRES_ONLINE_MAX_NAME_VERSION_LEN = 45
67
67
  _POSTGRES_ONLINE_MAX_COLUMN_LEN = 30
68
68
 
69
+ # The online-store schema is derived as "{schema}__{oft_id}", so its budget reserves room for the "__"
70
+ # separator and a 19-digit (64-bit) oft_id, keeping the derived identifier within the limit (63 - 2 - 19).
71
+ _POSTGRES_ONLINE_MAX_SCHEMA_LEN = 42
72
+
73
+
74
+ def validate_postgres_online_schema_length(feature_store_schema: str) -> None:
75
+ """Reject a Feature Store schema too long for the Postgres online-store schema identifier.
76
+
77
+ The online store derives its schema as "{feature_store_schema}__{oft_id}" and must fit PostgreSQL's
78
+ 63-byte identifier limit, so the budget reserves room for the "__" separator and the downstream-assigned
79
+ oft_id. Called from :func:`online_service.create_online_service`, before any feature view or feature
80
+ group is materialized.
81
+
82
+ Args:
83
+ feature_store_schema: The Feature Store schema name that will prefix the Postgres online-store
84
+ schema.
85
+
86
+ Raises:
87
+ ValueError: If the schema length exceeds the Postgres online-store budget.
88
+ """
89
+ if len(feature_store_schema) > _POSTGRES_ONLINE_MAX_SCHEMA_LEN:
90
+ raise ValueError(
91
+ f"feature store schema '{feature_store_schema}' is too long for the Postgres online store: "
92
+ f"it uses {len(feature_store_schema)} characters, but the limit is "
93
+ f"{_POSTGRES_ONLINE_MAX_SCHEMA_LEN}. Use a shorter Feature Store schema."
94
+ )
95
+
96
+
69
97
  _RESULT_SCAN_QUERY_PATTERN = re.compile(
70
98
  r".*FROM\s*TABLE\s*\(\s*RESULT_SCAN\s*\(.*",
71
99
  flags=re.DOTALL | re.IGNORECASE | re.X,
@@ -2921,6 +2949,27 @@ def build_oft_warehouse_clause(
2921
2949
  return ""
2922
2950
 
2923
2951
 
2952
+ def build_enable_view_change_tracking_sql(fully_qualified_view_name: str) -> str:
2953
+ """Build ``ALTER VIEW ... SET CHANGE_TRACKING = TRUE`` for an OFT source view.
2954
+
2955
+ An Online Feature Table can only resolve to an incremental refresh when the
2956
+ object it reads from exposes change tracking. Managed feature views are
2957
+ backed by a Dynamic Table (change tracking is inherent to an incremental DT
2958
+ and cannot be enabled on a FULL one), but static/external feature views are
2959
+ backed by a plain View that has change tracking disabled by default. Without
2960
+ it the backend silently downgrades the OFT to a FULL refresh. This statement
2961
+ is a no-op when change tracking is already enabled.
2962
+
2963
+ Args:
2964
+ fully_qualified_view_name: ``DB.SCHEMA.VIEW`` the Online Feature Table
2965
+ reads from.
2966
+
2967
+ Returns:
2968
+ The ``ALTER VIEW ... SET CHANGE_TRACKING = TRUE`` SQL.
2969
+ """
2970
+ return f"ALTER VIEW {fully_qualified_view_name} SET CHANGE_TRACKING = TRUE"
2971
+
2972
+
2924
2973
  def build_oft_create_sql(
2925
2974
  *,
2926
2975
  fully_qualified_oft_name: str,
@@ -241,6 +241,16 @@ def create_online_service(
241
241
  error_code=error_codes.INVALID_ARGUMENT,
242
242
  original_exception=ValueError("producer_role and consumer_role must be non-empty."),
243
243
  )
244
+ from snowflake.ml.feature_store.feature_view import (
245
+ validate_postgres_online_schema_length,
246
+ )
247
+
248
+ try:
249
+ validate_postgres_online_schema_length(schema.resolved())
250
+ except ValueError as e:
251
+ raise snowml_exceptions.SnowflakeMLException(
252
+ error_code=error_codes.INVALID_ARGUMENT, original_exception=e
253
+ ) from e
244
254
  payload = json.dumps(
245
255
  {
246
256
  "roles": {
@@ -148,3 +148,4 @@ class SpecOptions:
148
148
  spec_overrides: Optional[dict[str, Any]] = None
149
149
  runtime: Optional[str] = None
150
150
  enable_stage_mount_v2: Optional[bool] = True
151
+ artifact_repositories: Optional[list[str]] = None
@@ -48,6 +48,8 @@ def remote(
48
48
  runtime_environment (str): The runtime image to use. Only support image tag or full image URL,
49
49
  e.g. "1.7.1" or "image_repo/image_name:image_tag". When it refers to a full image URL,
50
50
  it should contain image repository, image name and image tag.
51
+ artifact_repositories (list[str]): (Public Preview) A list of artifact repositories to use for
52
+ resolving pip requirements. Each entry is the name of a Snowflake artifact repository.
51
53
  name (str): The name of the job. If not specified, a name will be generated based on the
52
54
  entrypoint file name or function name. A unique suffix is appended to the final name.
53
55
 
@@ -102,6 +102,7 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
102
102
  database: Optional[str] = None,
103
103
  schema: Optional[str] = None,
104
104
  payload: Optional[payload_utils.JobPayload] = None,
105
+ artifact_repositories: Optional[list[str]] = None,
105
106
  ) -> None:
106
107
  self.source = source
107
108
  self.compute_pool = identifier.resolve_identifier(compute_pool)
@@ -122,6 +123,7 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
122
123
  self.runtime_environment = runtime_environment
123
124
  self.overwrite = overwrite
124
125
  self.payload = payload
126
+ self.artifact_repositories = artifact_repositories
125
127
 
126
128
  self._is_registered = False
127
129
 
@@ -197,6 +199,7 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
197
199
  spec_overrides=self.spec_overrides,
198
200
  runtime=self.runtime_environment if self.runtime_environment else None,
199
201
  enable_stage_mount_v2=feature_flags.FeatureFlags.ENABLE_STAGE_MOUNT_V2.is_enabled(),
202
+ artifact_repositories=self.artifact_repositories if self.artifact_repositories else None,
200
203
  )
201
204
 
202
205
  self.job_options = type_utils.JobOptions(
@@ -304,6 +307,9 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
304
307
  target_instances = kwargs.pop("target_instances", 1)
305
308
  min_instances = kwargs.pop("min_instances", target_instances)
306
309
  pip_requirements = kwargs.pop("pip_requirements", None)
310
+ artifact_repositories = kwargs.pop("artifact_repositories", None)
311
+ if artifact_repositories is not None:
312
+ logger.warning("'artifact_repositories' is in public preview since 1.50.0.")
307
313
  external_access_integrations = kwargs.pop("external_access_integrations", None)
308
314
  env_vars = kwargs.pop("env_vars", None)
309
315
  spec_overrides = kwargs.pop("spec_overrides", None)
@@ -368,6 +374,7 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
368
374
  database=database,
369
375
  schema=schema,
370
376
  payload=payload,
377
+ artifact_repositories=artifact_repositories,
371
378
  )
372
379
 
373
380
  @classmethod
@@ -235,6 +235,8 @@ def submit_file(
235
235
  runtime_environment (str): The runtime image to use. Only support image tag or full image URL,
236
236
  e.g. "1.7.1" or "image_repo/image_name:image_tag". When it refers to a full image URL,
237
237
  it should contain image repository, image name and image tag.
238
+ artifact_repositories (list[str]): (Public Preview) A list of artifact repositories to use for
239
+ resolving pip requirements. Each entry is the name of a Snowflake artifact repository.
238
240
  name (str): The name of the job. If not specified, a name will be generated based on the
239
241
  entrypoint file name or function name. A unique suffix is appended to the final name.
240
242
 
@@ -298,6 +300,8 @@ def submit_directory(
298
300
  runtime_environment (str): The runtime image to use. Only support image tag or full image URL,
299
301
  e.g. "1.7.1" or "image_repo/image_name:image_tag". When it refers to a full image URL,
300
302
  it should contain image repository, image name and image tag.
303
+ artifact_repositories (list[str]): (Public Preview) A list of artifact repositories to use for
304
+ resolving pip requirements. Each entry is the name of a Snowflake artifact repository.
301
305
  name (str): The name of the job. If not specified, a name will be generated based on the
302
306
  entrypoint file name or function name. A unique suffix is appended to the final name.
303
307
 
@@ -363,6 +367,8 @@ def submit_from_stage(
363
367
  runtime_environment (str): The runtime image to use. Only support image tag or full image URL,
364
368
  e.g. "1.7.1" or "image_repo/image_name:image_tag". When it refers to a full image URL,
365
369
  it should contain image repository, image name and image tag.
370
+ artifact_repositories (list[str]): (Public Preview) A list of artifact repositories to use for
371
+ resolving pip requirements. Each entry is the name of a Snowflake artifact repository.
366
372
  name (str): The name of the job. If not specified, a name will be generated based on the
367
373
  entrypoint file name or function name. A unique suffix is appended to the final name.
368
374