snowflake-ml-python 1.37.0__tar.gz → 1.39.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 (531) hide show
  1. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/CHANGELOG.md +56 -1
  2. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/PKG-INFO +57 -3
  3. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/pyproject.toml +1 -1
  4. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/env_utils.py +20 -0
  5. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/aggregation.py +18 -0
  6. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/feature.py +13 -2
  7. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/feature_store.py +190 -35
  8. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/feature_view.py +194 -4
  9. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/online_service.py +0 -5
  10. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/tile_sql_generator.py +260 -11
  11. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/constants.py +1 -0
  12. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/payload_utils.py +8 -1
  13. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/job_definition.py +5 -1
  14. snowflake_ml_python-1.39.0/snowflake/ml/model/_client/model/batch_inference_task.py +220 -0
  15. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_composer.py +2 -1
  16. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +5 -1
  17. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -5
  18. snowflake_ml_python-1.39.0/snowflake/ml/model/_model_composer/model_method/infer_partitioned_init_once.py_template +106 -0
  19. snowflake_ml_python-1.39.0/snowflake/ml/model/_model_composer/model_method/infer_table_function_init_once.py_template +106 -0
  20. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +4 -4
  21. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_env/model_env.py +36 -4
  22. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/fill_mask.py +1 -1
  23. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_classification.py +1 -1
  24. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_feature_extraction.py +1 -1
  25. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/object_detection.py +1 -1
  26. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/question_answering.py +1 -1
  27. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/table_question_answering.py +1 -1
  28. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_classification.py +8 -1
  29. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_classification.py +1 -1
  30. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/visual_question_answering.py +1 -1
  31. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_audio_classification.py +1 -1
  32. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_image_classification.py +1 -1
  33. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_object_detection.py +1 -1
  34. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_text_classification.py +1 -1
  35. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +58 -5
  36. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +19 -4
  37. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_packager.py +2 -0
  38. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +0 -1
  39. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/utils.py +95 -24
  40. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/batch/__init__.py +2 -0
  41. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/type_hints.py +2 -2
  42. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +28 -3
  43. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/registry/_manager/model_manager.py +1 -1
  44. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/registry/_manager/model_parameter_reconciler.py +147 -23
  45. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/utils/stage_file.py +74 -2
  46. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/version.py +1 -1
  47. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake_ml_python.egg-info/PKG-INFO +57 -3
  48. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake_ml_python.egg-info/SOURCES.txt +3 -0
  49. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake_ml_python.egg-info/requires.txt +0 -1
  50. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/LICENSE.txt +0 -0
  51. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/README.md +0 -0
  52. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/setup.cfg +0 -0
  53. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/__init__.py +0 -0
  54. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_classify_text.py +0 -0
  55. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_complete.py +0 -0
  56. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_embed_text_1024.py +0 -0
  57. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_embed_text_768.py +0 -0
  58. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_extract_answer.py +0 -0
  59. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_finetune.py +0 -0
  60. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_sentiment.py +0 -0
  61. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_sse_client.py +0 -0
  62. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_summarize.py +0 -0
  63. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_translate.py +0 -0
  64. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_util.py +0 -0
  65. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/env.py +0 -0
  66. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
  67. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
  68. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
  69. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
  70. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
  71. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
  72. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
  73. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
  74. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
  75. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/file_utils.py +0 -0
  76. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
  77. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
  78. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
  79. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
  80. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/init_utils.py +0 -0
  81. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
  82. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
  83. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/platform_capabilities.py +0 -0
  84. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
  85. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/telemetry.py +0 -0
  86. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/type_utils.py +0 -0
  87. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/connection_params.py +0 -0
  88. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
  89. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
  90. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/identifier.py +0 -0
  91. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
  92. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
  93. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/mixins.py +0 -0
  94. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
  95. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
  96. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
  97. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/result.py +0 -0
  98. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/service_logger.py +0 -0
  99. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
  100. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
  101. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
  102. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
  103. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/tee.py +0 -0
  104. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
  105. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/url.py +0 -0
  106. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/data/__init__.py +0 -0
  107. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
  108. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/data/data_connector.py +0 -0
  109. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/data/data_ingestor.py +0 -0
  110. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/data/data_source.py +0 -0
  111. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/data/ingestor_utils.py +0 -0
  112. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/data/torch_utils.py +0 -0
  113. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/dataset/__init__.py +0 -0
  114. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/dataset/dataset.py +0 -0
  115. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
  116. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
  117. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
  118. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/__init__.py +0 -0
  119. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_client/artifact.py +0 -0
  120. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +0 -0
  121. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_entities/__init__.py +0 -0
  122. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_entities/experiment.py +0 -0
  123. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_entities/run.py +0 -0
  124. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
  125. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_experiment_info.py +0 -0
  126. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_logging/__init__.py +0 -0
  127. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_logging/experiment_logger.py +0 -0
  128. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_logging/experiment_logging_context.py +0 -0
  129. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/callback/keras.py +0 -0
  130. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/callback/lightgbm.py +0 -0
  131. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/callback/xgboost.py +0 -0
  132. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/experiment_tracking.py +0 -0
  133. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/utils.py +0 -0
  134. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/__init__.py +0 -0
  135. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/access_manager.py +0 -0
  136. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/entity.py +0 -0
  137. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
  138. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
  139. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
  140. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
  141. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
  142. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
  143. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
  144. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
  145. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
  146. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
  147. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
  148. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
  149. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
  150. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
  151. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
  152. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
  153. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
  154. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
  155. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
  156. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
  157. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
  158. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
  159. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/interval_utils.py +0 -0
  160. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/metadata_manager.py +0 -0
  161. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/online_service_http_client.py +0 -0
  162. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/request_source.py +0 -0
  163. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/spec/__init__.py +0 -0
  164. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/spec/builder.py +0 -0
  165. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/spec/enums.py +0 -0
  166. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/spec/models.py +0 -0
  167. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/stream_config.py +0 -0
  168. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/stream_source.py +0 -0
  169. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/streaming_registration.py +0 -0
  170. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
  171. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/fileset/fileset.py +0 -0
  172. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/fileset/sfcfs.py +0 -0
  173. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/fileset/snowfs.py +0 -0
  174. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/fileset/stage_fs.py +0 -0
  175. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/__init__.py +0 -0
  176. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/__init__.py +0 -0
  177. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/data_utils.py +0 -0
  178. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/dto_schema.py +0 -0
  179. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/exception_utils.py +0 -0
  180. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/legacy.py +0 -0
  181. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/protocols.py +0 -0
  182. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/results.py +0 -0
  183. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/utils.py +0 -0
  184. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/__init__.py +0 -0
  185. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/arg_protocol.py +0 -0
  186. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/feature_flags.py +0 -0
  187. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/query_helper.py +0 -0
  188. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/runtime_env_utils.py +0 -0
  189. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/scripts/constants.py +0 -0
  190. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +0 -0
  191. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +0 -0
  192. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +0 -0
  193. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/scripts/start_mlruntime.sh +0 -0
  194. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/scripts/startup.sh +0 -0
  195. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +0 -0
  196. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/stage_utils.py +0 -0
  197. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/type_utils.py +0 -0
  198. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/decorators.py +0 -0
  199. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/job.py +0 -0
  200. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/manager.py +0 -0
  201. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/lineage/__init__.py +0 -0
  202. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/lineage/lineage_node.py +0 -0
  203. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/__init__.py +0 -0
  204. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/model/batch_inference_definition.py +0 -0
  205. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/model/batch_inference_serialization.py +0 -0
  206. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/model/batch_inference_specs.py +0 -0
  207. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/model/inference_engine_utils.py +0 -0
  208. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/model/model_impl.py +0 -0
  209. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/model/model_version_impl.py +0 -0
  210. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/ops/deployment_step.py +0 -0
  211. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
  212. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/ops/model_ops.py +0 -0
  213. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/ops/param_ops.py +0 -0
  214. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/ops/param_utils.py +0 -0
  215. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/ops/service_ops.py +0 -0
  216. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/service/import_model_spec_schema.py +0 -0
  217. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +0 -0
  218. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +0 -0
  219. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
  220. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/sql/model.py +0 -0
  221. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/sql/model_version.py +0 -0
  222. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/sql/service.py +0 -0
  223. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/sql/stage.py +0 -0
  224. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
  225. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
  226. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
  227. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
  228. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
  229. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/infer_function_init_once.py_template +0 -0
  230. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
  231. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/utils.py +0 -0
  232. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
  233. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
  234. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
  235. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
  236. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
  237. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
  238. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/__init__.py +0 -0
  239. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_default.py +0 -0
  240. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_handler.py +0 -0
  241. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_openai_chat_wrapper.py +0 -0
  242. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_task_handler.py +0 -0
  243. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_utils.py +0 -0
  244. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/audio_text_to_text.py +0 -0
  245. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/automatic_speech_recognition.py +0 -0
  246. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/conversational.py +0 -0
  247. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/document_question_answering.py +0 -0
  248. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_text_to_text.py +0 -0
  249. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_to_text.py +0 -0
  250. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/summarization.py +0 -0
  251. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text2text_generation.py +0 -0
  252. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_generation.py +0 -0
  253. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/token_classification.py +0 -0
  254. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/translation.py +0 -0
  255. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_text_to_text.py +0 -0
  256. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
  257. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
  258. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
  259. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/prophet.py +0 -0
  260. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
  261. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +0 -0
  262. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
  263. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
  264. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
  265. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
  266. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
  267. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +0 -0
  268. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +0 -0
  269. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +0 -0
  270. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +0 -0
  271. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
  272. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -0
  273. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
  274. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
  275. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
  276. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
  277. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
  278. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
  279. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
  280. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/core.py +0 -0
  281. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
  282. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
  283. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
  284. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
  285. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
  286. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
  287. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/code_path.py +0 -0
  288. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/compute_pool.py +0 -0
  289. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/custom_model.py +0 -0
  290. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/event_handler.py +0 -0
  291. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/inference_engine.py +0 -0
  292. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/model_signature.py +0 -0
  293. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/models/huggingface.py +0 -0
  294. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
  295. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/openai_signatures.py +0 -0
  296. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/target_platform.py +0 -0
  297. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/task.py +0 -0
  298. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/volatility.py +0 -0
  299. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
  300. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
  301. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
  302. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
  303. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
  304. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
  305. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
  306. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
  307. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
  308. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
  309. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
  310. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
  311. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
  312. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
  313. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
  314. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
  315. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
  316. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/birch.py +0 -0
  317. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
  318. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
  319. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
  320. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/k_means.py +0 -0
  321. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
  322. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
  323. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/optics.py +0 -0
  324. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
  325. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
  326. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
  327. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
  328. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
  329. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
  330. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
  331. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
  332. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
  333. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
  334. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
  335. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
  336. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
  337. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/oas.py +0 -0
  338. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
  339. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
  340. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
  341. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
  342. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
  343. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
  344. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
  345. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
  346. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
  347. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/pca.py +0 -0
  348. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
  349. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
  350. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
  351. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
  352. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
  353. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
  354. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
  355. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
  356. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
  357. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
  358. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
  359. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
  360. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
  361. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
  362. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
  363. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
  364. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
  365. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
  366. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
  367. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
  368. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
  369. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
  370. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
  371. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
  372. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
  373. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
  374. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
  375. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
  376. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
  377. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
  378. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
  379. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
  380. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/framework/base.py +0 -0
  381. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
  382. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
  383. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
  384. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
  385. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
  386. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
  387. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
  388. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
  389. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
  390. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
  391. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
  392. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
  393. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
  394. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
  395. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
  396. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
  397. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
  398. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
  399. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
  400. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
  401. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
  402. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
  403. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
  404. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
  405. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
  406. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
  407. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/lars.py +0 -0
  408. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
  409. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
  410. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
  411. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
  412. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
  413. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
  414. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
  415. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
  416. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
  417. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
  418. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
  419. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
  420. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
  421. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
  422. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
  423. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
  424. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
  425. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
  426. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
  427. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
  428. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
  429. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
  430. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
  431. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
  432. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
  433. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
  434. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
  435. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
  436. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
  437. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/manifold/isomap.py +0 -0
  438. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/manifold/mds.py +0 -0
  439. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
  440. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/manifold/tsne.py +0 -0
  441. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
  442. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
  443. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
  444. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
  445. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
  446. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
  447. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
  448. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
  449. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
  450. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
  451. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
  452. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
  453. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
  454. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
  455. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
  456. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
  457. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
  458. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
  459. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
  460. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
  461. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
  462. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
  463. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
  464. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
  465. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
  466. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
  467. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
  468. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
  469. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
  470. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
  471. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
  472. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
  473. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
  474. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
  475. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
  476. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
  477. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
  478. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
  479. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
  480. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
  481. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
  482. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
  483. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
  484. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
  485. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
  486. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
  487. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
  488. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
  489. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
  490. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
  491. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
  492. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
  493. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
  494. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
  495. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
  496. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
  497. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
  498. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
  499. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
  500. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
  501. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
  502. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
  503. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/svm/svc.py +0 -0
  504. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/svm/svr.py +0 -0
  505. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
  506. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
  507. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
  508. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
  509. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
  510. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
  511. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
  512. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
  513. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
  514. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
  515. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
  516. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
  517. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
  518. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
  519. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
  520. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/explain_visualize.py +0 -0
  521. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/model_monitor.py +0 -0
  522. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/shap.py +0 -0
  523. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/registry/__init__.py +0 -0
  524. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/registry/registry.py +0 -0
  525. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/utils/authentication.py +0 -0
  526. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/utils/connection_params.py +0 -0
  527. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/utils/html_utils.py +0 -0
  528. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/utils/sparse.py +0 -0
  529. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake/ml/utils/sql_client.py +0 -0
  530. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
  531. {snowflake_ml_python-1.37.0 → snowflake_ml_python-1.39.0}/snowflake_ml_python.egg-info/top_level.txt +0 -0
@@ -1,9 +1,64 @@
1
1
  # Release History
2
2
 
3
- ## 1.37.0
3
+ ## 1.39.0
4
4
 
5
5
  ### New Features
6
6
 
7
+ ### Bug Fixes
8
+
9
+ * Feature Store: `update_feature_view` now correctly handles every transition between duration-based
10
+ and CRON-based `refresh_freq`. Previously a CRON expression was forwarded to the Dynamic Table's
11
+ `TARGET_LAG` (which Snowflake rejects), `duration → cron` failed because the companion Task did not
12
+ yet exist, and `cron → duration` left the Task orphaned and continuing to fire on its old schedule.
13
+ All four `(old, new)` transitions now correctly create, alter, or drop the Task as needed, with
14
+ symmetric rollback on failure.
15
+
16
+ ### Behavior Changes
17
+
18
+ * Feature Store: For CRON-based feature views, `get_feature_view()`, `list_feature_views()`, and
19
+ `register_feature_view()` now return the original cron expression as `refresh_freq` instead of
20
+ `"DOWNSTREAM"`. The underlying Dynamic Table still uses `TARGET_LAG = 'DOWNSTREAM'` with a companion
21
+ Task — this is purely a display change so the round-trip preserves what the user passed in.
22
+
23
+ * Registry: When `target_platforms` includes WAREHOUSE and pip installs are needed without a user-supplied
24
+ `pip` artifact repository, `log_model` injects `snowflake.snowpark.pypi_shared_repository` after
25
+ verifying access. This applies to explicit `pip_requirements` and to pip-only packaging when there are
26
+ no user conda dependencies. If `pypi_shared_repository` is inaccessible in the pip-only case, automatic packaging
27
+ dependencies fall back to conda instead of forcing pip-only without an index.
28
+
29
+ ### Deprecations
30
+
31
+ ## 1.38.0
32
+
33
+ ### New Features
34
+
35
+ ### Bug Fixes
36
+
37
+ ### Behavior Changes
38
+
39
+ * Registry: For HuggingFace `text-generation` pipelines whose tokenizer defines a chat template, the
40
+ auto-inferred signature now matches the OpenAI Chat Completions API
41
+ (`_OPENAI_CHAT_SIGNATURE_WITH_PARAMS_SPEC`). Inputs are a single `messages` column and inference
42
+ controls (`temperature`, `max_completion_tokens`, `stop`, `n`, `stream`, `top_p`, `frequency_penalty`,
43
+ `presence_penalty`) move from `inputs` to `params` with default values. Predictions return the OpenAI
44
+ response shape (`id`, `object`, `created`, `model`, `choices`, `usage`); the generated text is at
45
+ `choices[0].message.content` instead of `outputs[0].generated_text`.
46
+
47
+ * Registry: For HuggingFace `image-text-to-text`, `video-text-to-text`, and `audio-text-to-text`
48
+ pipelines, the auto-inferred signature now uses `_OPENAI_CHAT_SIGNATURE_WITH_PARAMS_SPEC` instead of
49
+ `_OPENAI_CHAT_SIGNATURE_SPEC`. The input column set narrows to just `messages`, and the inference
50
+ controls move to `params` with default values; the output schema is unchanged.
51
+
52
+ ### Deprecations
53
+
54
+ ## 1.37.0 (2026-04-29)
55
+
56
+ ### New Features
57
+
58
+ * Registry (PrPr): The `model_init_once` save option now applies to **TABLE_FUNCTION** model methods (including
59
+ partitioned table functions) for warehouse deployments, in addition to scalar **FUNCTION** methods. The generated
60
+ handler uses the same eager `@udf_init_once` model load path as UDFs.
61
+
7
62
  * Experiment Tracking: `end_run` now accepts an optional `status` argument (`"FINISHED"` or `"FAILED"`) to explicitly
8
63
  set the final run status. When a run's context manager exits with an exception, the status is automatically set to
9
64
  `"FAILED"`.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snowflake-ml-python
3
- Version: 1.37.0
3
+ Version: 1.39.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:
@@ -250,7 +250,6 @@ Requires-Dist: pyjwt<3,>=2.0.0
250
250
  Requires-Dist: pytimeparse<2,>=1.1.8
251
251
  Requires-Dist: pyyaml<7,>=6.0
252
252
  Requires-Dist: retrying<2,>=1.3.3
253
- Requires-Dist: s3fs<2026,>=2024.6.1
254
253
  Requires-Dist: scikit-learn<1.8
255
254
  Requires-Dist: scipy<2,>=1.9
256
255
  Requires-Dist: shap<1,>=0.46.0
@@ -417,10 +416,65 @@ 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.37.0
419
+ ## 1.39.0
421
420
 
422
421
  ### New Features
423
422
 
423
+ ### Bug Fixes
424
+
425
+ * Feature Store: `update_feature_view` now correctly handles every transition between duration-based
426
+ and CRON-based `refresh_freq`. Previously a CRON expression was forwarded to the Dynamic Table's
427
+ `TARGET_LAG` (which Snowflake rejects), `duration → cron` failed because the companion Task did not
428
+ yet exist, and `cron → duration` left the Task orphaned and continuing to fire on its old schedule.
429
+ All four `(old, new)` transitions now correctly create, alter, or drop the Task as needed, with
430
+ symmetric rollback on failure.
431
+
432
+ ### Behavior Changes
433
+
434
+ * Feature Store: For CRON-based feature views, `get_feature_view()`, `list_feature_views()`, and
435
+ `register_feature_view()` now return the original cron expression as `refresh_freq` instead of
436
+ `"DOWNSTREAM"`. The underlying Dynamic Table still uses `TARGET_LAG = 'DOWNSTREAM'` with a companion
437
+ Task — this is purely a display change so the round-trip preserves what the user passed in.
438
+
439
+ * Registry: When `target_platforms` includes WAREHOUSE and pip installs are needed without a user-supplied
440
+ `pip` artifact repository, `log_model` injects `snowflake.snowpark.pypi_shared_repository` after
441
+ verifying access. This applies to explicit `pip_requirements` and to pip-only packaging when there are
442
+ no user conda dependencies. If `pypi_shared_repository` is inaccessible in the pip-only case, automatic packaging
443
+ dependencies fall back to conda instead of forcing pip-only without an index.
444
+
445
+ ### Deprecations
446
+
447
+ ## 1.38.0
448
+
449
+ ### New Features
450
+
451
+ ### Bug Fixes
452
+
453
+ ### Behavior Changes
454
+
455
+ * Registry: For HuggingFace `text-generation` pipelines whose tokenizer defines a chat template, the
456
+ auto-inferred signature now matches the OpenAI Chat Completions API
457
+ (`_OPENAI_CHAT_SIGNATURE_WITH_PARAMS_SPEC`). Inputs are a single `messages` column and inference
458
+ controls (`temperature`, `max_completion_tokens`, `stop`, `n`, `stream`, `top_p`, `frequency_penalty`,
459
+ `presence_penalty`) move from `inputs` to `params` with default values. Predictions return the OpenAI
460
+ response shape (`id`, `object`, `created`, `model`, `choices`, `usage`); the generated text is at
461
+ `choices[0].message.content` instead of `outputs[0].generated_text`.
462
+
463
+ * Registry: For HuggingFace `image-text-to-text`, `video-text-to-text`, and `audio-text-to-text`
464
+ pipelines, the auto-inferred signature now uses `_OPENAI_CHAT_SIGNATURE_WITH_PARAMS_SPEC` instead of
465
+ `_OPENAI_CHAT_SIGNATURE_SPEC`. The input column set narrows to just `messages`, and the inference
466
+ controls move to `params` with default values; the output schema is unchanged.
467
+
468
+ ### Deprecations
469
+
470
+ ## 1.37.0 (2026-04-29)
471
+
472
+ ### New Features
473
+
474
+ * Registry (PrPr): The `model_init_once` save option now applies to **TABLE_FUNCTION** model methods (including
475
+ partitioned table functions) for warehouse deployments, in addition to scalar **FUNCTION** methods. The generated
476
+ handler uses the same eager `@udf_init_once` model load path as UDFs.
477
+
424
478
  * Experiment Tracking: `end_run` now accepts an optional `status` argument (`"FINISHED"` or `"FAILED"`) to explicitly
425
479
  set the final run status. When a run's context manager exits with an exception, the status is automatically set to
426
480
  `"FAILED"`.
@@ -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,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "h2>=4.3.0,<5", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<3", "packaging>=20.9,<26", "pandas>=2.1.4,<3", "platformdirs<5", "pyarrow<19.0.0", "pydantic>=2.8.2, <3", "pyjwt>=2.0.0, <3", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "s3fs>=2024.6.1,<2026", "scikit-learn<1.8", "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,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "h2>=4.3.0,<5", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<3", "packaging>=20.9,<26", "pandas>=2.1.4,<3", "platformdirs<5", "pyarrow<19.0.0", "pydantic>=2.8.2, <3", "pyjwt>=2.0.0, <3", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "scikit-learn<1.8", "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"
@@ -1,7 +1,9 @@
1
1
  import collections
2
2
  import copy
3
+ import os
3
4
  import pathlib
4
5
  import re
6
+ import sys
5
7
  import textwrap
6
8
  import warnings
7
9
  from enum import Enum
@@ -54,6 +56,24 @@ def get_execution_context() -> str:
54
56
  return "EXTERNAL"
55
57
 
56
58
 
59
+ def is_local_conda_environment() -> bool:
60
+ """Return True if the active Python interpreter appears to run inside a conda env
61
+ or under conda session context (e.g. a venv created inside an activated conda env).
62
+
63
+ Uses the presence of a ``conda-meta`` directory under :py:data:`sys.prefix`, which is
64
+ standard for conda-created environments. A nested venv typically has ``sys.prefix``
65
+ pointing at the venv without ``conda-meta``; conda still sets ``CONDA_PREFIX`` when
66
+ an environment is activated, so a non-empty ``CONDA_PREFIX`` is treated as conda context.
67
+
68
+ Returns:
69
+ ``True`` if ``sys.prefix`` contains ``conda-meta`` or ``CONDA_PREFIX`` is set and
70
+ non-empty, else ``False``.
71
+ """
72
+ if os.path.isdir(os.path.join(sys.prefix, "conda-meta")):
73
+ return True
74
+ return bool(os.environ.get("CONDA_PREFIX", "").strip())
75
+
76
+
57
77
  def _validate_pip_requirement_string(req_str: str) -> requirements.Requirement:
58
78
  """Validate the input pip requirement string according to PEP 508.
59
79
 
@@ -27,6 +27,7 @@ class AggregationType(Enum):
27
27
  - Simple aggregations (SUM, COUNT, AVG, MIN, MAX, STD, VAR): Stored as scalar partial results in tiles
28
28
  - Sketch aggregations (APPROX_COUNT_DISTINCT, APPROX_PERCENTILE): Stored as mergeable state in tiles
29
29
  - List aggregations (LAST_N, LAST_DISTINCT_N, FIRST_N, FIRST_DISTINCT_N): Stored as arrays in tiles
30
+ - Secondary-key array (_SECONDARY_KEY_ARRAY): Internal-only ARRAY_AGG of the secondary-key column
30
31
  """
31
32
 
32
33
  SUM = "sum"
@@ -42,6 +43,7 @@ class AggregationType(Enum):
42
43
  LAST_DISTINCT_N = "last_distinct_n"
43
44
  FIRST_N = "first_n"
44
45
  FIRST_DISTINCT_N = "first_distinct_n"
46
+ _SECONDARY_KEY_ARRAY = "secondary_key_array"
45
47
 
46
48
  def is_simple(self) -> bool:
47
49
  """Check if this is a simple aggregation (scalar result per tile).
@@ -81,6 +83,10 @@ class AggregationType(Enum):
81
83
  AggregationType.APPROX_PERCENTILE,
82
84
  )
83
85
 
86
+ def is_secondary_key_array(self) -> bool:
87
+ """Check if this is the synthesized secondary-key ``ARRAY_AGG`` type."""
88
+ return self == AggregationType._SECONDARY_KEY_ARRAY
89
+
84
90
 
85
91
  # Internal column name prefixes used in tile tables.
86
92
  # WARNING: Changing these will break existing registered tiled feature views.
@@ -169,6 +175,18 @@ class AggregationSpec:
169
175
  f"'{self.output_column}', got: {percentile}"
170
176
  )
171
177
 
178
+ # Validate _SECONDARY_KEY_ARRAY specs
179
+ if self.function.is_secondary_key_array():
180
+ if self.params:
181
+ raise ValueError(
182
+ f"_SECONDARY_KEY_ARRAY aggregation '{self.output_column}' must not carry params, "
183
+ f"got: {self.params}"
184
+ )
185
+ if is_lifetime_window(self.window):
186
+ raise ValueError(
187
+ f"_SECONDARY_KEY_ARRAY aggregation '{self.output_column}' cannot use a lifetime window."
188
+ )
189
+
172
190
  # Validate lifetime window support
173
191
  # Only simple scalar aggregations support lifetime (O(1) via cumulative columns)
174
192
  if is_lifetime_window(self.window):
@@ -12,9 +12,14 @@ from typing import Any, Optional
12
12
  from snowflake.ml.feature_store.aggregation import (
13
13
  AggregationSpec,
14
14
  AggregationType,
15
+ interval_to_seconds,
15
16
  is_lifetime_window,
16
17
  )
17
18
 
19
+ _NO_OFFSET = "0"
20
+ _KEYS = "keys"
21
+ _LIFETIME = "lifetime"
22
+
18
23
 
19
24
  class Feature:
20
25
  """Fluent builder for defining features in a FeatureView.
@@ -92,10 +97,16 @@ class Feature:
92
97
  def _default_output_name(self) -> str:
93
98
  """Generate a default output column name."""
94
99
  if is_lifetime_window(self._window):
95
- window_suffix = "lifetime"
100
+ window_suffix = _LIFETIME
96
101
  else:
97
102
  window_suffix = self._window.replace(" ", "").lower()
98
- base_name = f"{self._column}_{self._function.value}_{window_suffix}"
103
+ function_value = _KEYS if self._function.is_secondary_key_array() else self._function.value
104
+ base_name = f"{self._column}_{function_value}_{window_suffix}"
105
+
106
+ offset_seconds = interval_to_seconds(self._offset) if self._offset != _NO_OFFSET else 0
107
+ if offset_seconds > 0:
108
+ offset_suffix = self._offset.replace(" ", "").lower()
109
+ base_name = f"{base_name}_offset_{offset_suffix}"
99
110
  return base_name.upper()
100
111
 
101
112
  # Factory methods for creating features
@@ -1963,10 +1963,11 @@ class FeatureStore:
1963
1963
  self._session.sql(f"DROP DYNAMIC TABLE IF EXISTS {fully_qualified_name}").collect(
1964
1964
  statement_params=self._telemetry_stmp
1965
1965
  )
1966
- if feature_view.refresh_freq == "DOWNSTREAM":
1967
- self._session.sql(f"DROP TASK IF EXISTS {fully_qualified_name}").collect(
1968
- statement_params=self._telemetry_stmp
1969
- )
1966
+ # CRON-based FVs have a companion Task with the same name. Drop it
1967
+ # unconditionally IF EXISTS makes this a no-op for duration-based FVs.
1968
+ self._session.sql(f"DROP TASK IF EXISTS {fully_qualified_name}").collect(
1969
+ statement_params=self._telemetry_stmp
1970
+ )
1970
1971
 
1971
1972
  # Delete online feature table if it exists
1972
1973
  if feature_view.online:
@@ -3000,30 +3001,127 @@ class FeatureStore:
3000
3001
  )
3001
3002
 
3002
3003
  def _build_offline_update_queries(
3003
- self, feature_view: FeatureView, refresh_freq: Optional[str], warehouse: Optional[str], desc: str
3004
- ) -> tuple[str, Optional[str]]:
3005
- """Build offline update query and its rollback query."""
3004
+ self,
3005
+ feature_view: FeatureView,
3006
+ refresh_freq: Optional[str],
3007
+ warehouse: Optional[str],
3008
+ desc: str,
3009
+ ) -> tuple[list[tuple[str, str]], list[tuple[str, str]]]:
3010
+ """Build offline update operations and their rollback operations.
3011
+
3012
+ For CRON-based refresh, the DT must keep ``TARGET_LAG = 'DOWNSTREAM'``
3013
+ and the actual cron schedule lives on a companion Task — Dynamic Tables
3014
+ do not accept cron expressions in ``TARGET_LAG``. Duration-based refresh
3015
+ sets ``TARGET_LAG`` directly on the DT and there is no Task.
3016
+
3017
+ The presence/absence of the companion Task is what disambiguates a
3018
+ user-set ``refresh_freq='DOWNSTREAM'`` from a cron-driven FV (whose DT
3019
+ also carries ``TARGET_LAG='DOWNSTREAM'``) when reading state back via
3020
+ ``get_feature_view``. Maintain that invariant across all four
3021
+ ``(old_kind, new_kind)`` transitions:
3022
+
3023
+ duration ↔ duration : DT-only ALTER; no Task involvement.
3024
+ duration → cron : ALTER DT to DOWNSTREAM, then create the Task.
3025
+ cron → duration : ALTER DT to the new lag, then drop the Task.
3026
+ cron ↔ cron : ALTER DT, then SUSPEND/SET SCHEDULE/RESUME the Task.
3027
+
3028
+ ("duration" above includes a literal ``"DOWNSTREAM"`` value.)
3029
+
3030
+ Args:
3031
+ feature_view: The currently registered ``FeatureView`` whose
3032
+ offline state is being mutated; supplies the existing
3033
+ refresh_freq/warehouse/desc used to construct the rollback.
3034
+ refresh_freq: New refresh frequency requested by the caller, or
3035
+ ``None`` to keep the existing value.
3036
+ warehouse: New warehouse identifier requested by the caller, or
3037
+ ``None`` to keep the existing value.
3038
+ desc: New description to set on the DT/view.
3039
+
3040
+ Returns:
3041
+ A tuple of ``(operations, rollback_operations)`` where each is a
3042
+ list of ``(op_type, sql)`` tuples consumable by
3043
+ ``_execute_atomic_operations``.
3044
+ """
3045
+ fqn = feature_view.fully_qualified_name()
3046
+
3006
3047
  if feature_view.status == FeatureViewStatus.STATIC:
3007
- update_query = f"""
3008
- ALTER VIEW {feature_view.fully_qualified_name()} SET
3009
- COMMENT = '{desc}'
3010
- """
3011
- return update_query, None # No rollback needed for comment changes
3012
- else:
3013
- warehouse_id = SqlIdentifier(warehouse) if warehouse else feature_view.warehouse
3014
- # TODO: SNOW-2260633 Handle cron expression updates for refresh_freq
3015
- update_query = f"""
3016
- ALTER DYNAMIC TABLE {feature_view.fully_qualified_name()} SET
3017
- TARGET_LAG = '{refresh_freq or feature_view.refresh_freq}'
3018
- WAREHOUSE = {warehouse_id}
3019
- COMMENT = '{desc}'
3020
- """
3021
- rollback_query = f"""ALTER DYNAMIC TABLE {feature_view.fully_qualified_name()} SET
3022
- TARGET_LAG = '{feature_view.refresh_freq}'
3023
- WAREHOUSE = {feature_view.warehouse}
3024
- COMMENT = '{feature_view.desc}'
3025
- """
3026
- return update_query, rollback_query
3048
+ return [("OFFLINE_UPDATE", f"ALTER VIEW {fqn} SET COMMENT = '{desc}'")], []
3049
+
3050
+ # Managed (Dynamic-Table-backed) FVs always have a refresh_freq — the
3051
+ # only refresh_freq=None case is an external (View-backed) FV, which
3052
+ # is STATIC and handled above.
3053
+ assert feature_view.refresh_freq is not None, "Managed FV must have a refresh_freq"
3054
+ new_warehouse = SqlIdentifier(warehouse) if warehouse else feature_view.warehouse
3055
+ old_warehouse = feature_view.warehouse
3056
+ effective_freq: str = refresh_freq if refresh_freq is not None else feature_view.refresh_freq
3057
+ new_is_cron = effective_freq != "DOWNSTREAM" and timeparse(effective_freq) is None
3058
+ old_freq: str = feature_view.refresh_freq
3059
+ old_is_cron = old_freq != "DOWNSTREAM" and timeparse(old_freq) is None
3060
+
3061
+ new_target_lag = "DOWNSTREAM" if new_is_cron else effective_freq
3062
+ old_target_lag = "DOWNSTREAM" if old_is_cron else old_freq
3063
+
3064
+ def alter_dt(op_type: str, *, target_lag: str, wh: Optional[SqlIdentifier], comment: str) -> tuple[str, str]:
3065
+ return (
3066
+ op_type,
3067
+ f"ALTER DYNAMIC TABLE {fqn} SET TARGET_LAG = '{target_lag}'" f" WAREHOUSE = {wh} COMMENT = '{comment}'",
3068
+ )
3069
+
3070
+ def create_task_ops(op_type: str, *, cron_expr: str, wh: Optional[SqlIdentifier]) -> list[tuple[str, str]]:
3071
+ # CREATE OR REPLACE keeps the operation idempotent even if a stale
3072
+ # task with the same name happens to exist (e.g. partial prior failure).
3073
+ task_obj_info = _FeatureStoreObjInfo(
3074
+ _FeatureStoreObjTypes.FEATURE_VIEW_REFRESH_TASK, snowml_version.VERSION
3075
+ )
3076
+ tag_path = self._get_fully_qualified_name(_FEATURE_STORE_OBJECT_TAG)
3077
+ return [
3078
+ (
3079
+ op_type,
3080
+ f"CREATE OR REPLACE TASK {fqn} WAREHOUSE = {wh} "
3081
+ f"SCHEDULE = 'USING CRON {cron_expr}' "
3082
+ f"AS ALTER DYNAMIC TABLE {fqn} REFRESH",
3083
+ ),
3084
+ (op_type, f"ALTER TASK {fqn} SET TAG {tag_path}='{task_obj_info.to_json()}'"),
3085
+ (op_type, f"ALTER TASK {fqn} RESUME"),
3086
+ ]
3087
+
3088
+ def drop_task_op(op_type: str) -> tuple[str, str]:
3089
+ return (op_type, f"DROP TASK IF EXISTS {fqn}")
3090
+
3091
+ def alter_task_schedule_ops(op_type: str, *, cron_expr: str) -> list[tuple[str, str]]:
3092
+ # ALTER TASK SET SCHEDULE requires the task to be suspended.
3093
+ return [
3094
+ (op_type, f"ALTER TASK {fqn} SUSPEND"),
3095
+ (op_type, f"ALTER TASK {fqn} SET SCHEDULE = 'USING CRON {cron_expr}'"),
3096
+ (op_type, f"ALTER TASK {fqn} RESUME"),
3097
+ ]
3098
+
3099
+ operations: list[tuple[str, str]] = [
3100
+ alter_dt("OFFLINE_UPDATE", target_lag=new_target_lag, wh=new_warehouse, comment=desc)
3101
+ ]
3102
+ if old_is_cron and new_is_cron:
3103
+ operations.extend(alter_task_schedule_ops("OFFLINE_UPDATE", cron_expr=effective_freq))
3104
+ elif old_is_cron and not new_is_cron:
3105
+ operations.append(drop_task_op("OFFLINE_UPDATE"))
3106
+ elif not old_is_cron and new_is_cron:
3107
+ operations.extend(create_task_ops("OFFLINE_UPDATE", cron_expr=effective_freq, wh=new_warehouse))
3108
+
3109
+ rollback_ops: list[tuple[str, str]] = [
3110
+ alter_dt(
3111
+ "OFFLINE_ROLLBACK",
3112
+ target_lag=old_target_lag,
3113
+ wh=old_warehouse,
3114
+ comment=feature_view.desc,
3115
+ )
3116
+ ]
3117
+ if old_is_cron and new_is_cron:
3118
+ rollback_ops.extend(alter_task_schedule_ops("OFFLINE_ROLLBACK", cron_expr=old_freq))
3119
+ elif old_is_cron and not new_is_cron:
3120
+ rollback_ops.extend(create_task_ops("OFFLINE_ROLLBACK", cron_expr=old_freq, wh=old_warehouse))
3121
+ elif not old_is_cron and new_is_cron:
3122
+ rollback_ops.append(drop_task_op("OFFLINE_ROLLBACK"))
3123
+
3124
+ return operations, rollback_ops
3027
3125
 
3028
3126
  @dataclass(frozen=True)
3029
3127
  class _OnlineUpdateStrategy:
@@ -3156,12 +3254,11 @@ class FeatureStore:
3156
3254
  rollback_operations: list[tuple[str, Union[str, FeatureView]]] = []
3157
3255
 
3158
3256
  # Plan offline updates
3159
- offline_update, offline_rollback = self._build_offline_update_queries(
3257
+ offline_ops, offline_rollback_ops = self._build_offline_update_queries(
3160
3258
  feature_view, refresh_freq, warehouse, desc
3161
3259
  )
3162
- operations.append(("OFFLINE_UPDATE", offline_update))
3163
- if offline_rollback:
3164
- rollback_operations.append(("OFFLINE_ROLLBACK", offline_rollback))
3260
+ operations.extend(offline_ops)
3261
+ rollback_operations.extend(offline_rollback_ops)
3165
3262
 
3166
3263
  # Plan online updates
3167
3264
  online_strategy = self._plan_online_update(feature_view, online_config)
@@ -3395,8 +3492,24 @@ class FeatureStore:
3395
3492
  all_feature_cols = [spec.get_sql_column_name() for spec in feature_view.aggregation_specs]
3396
3493
  if feature_names:
3397
3494
  # Filter to requested features
3398
- feature_names_upper = [f.upper() for f in feature_names]
3399
- all_feature_cols = [c for c in all_feature_cols if c.strip('"').upper() in feature_names_upper]
3495
+ requested = {SqlIdentifier(f).resolved() for f in feature_names}
3496
+ keys_cols_to_keep: set[str] = set()
3497
+ keys_spec_by_window_offset = {
3498
+ (spec.window, spec.offset): spec
3499
+ for spec in feature_view.aggregation_specs
3500
+ if spec.function.is_secondary_key_array()
3501
+ }
3502
+ if keys_spec_by_window_offset:
3503
+ for spec in feature_view.aggregation_specs:
3504
+ if spec.function.is_secondary_key_array():
3505
+ continue
3506
+ if SqlIdentifier(spec.get_sql_column_name()).resolved() in requested:
3507
+ keys_spec = keys_spec_by_window_offset.get((spec.window, spec.offset))
3508
+ if keys_spec is not None:
3509
+ keys_cols_to_keep.add(keys_spec.get_sql_column_name())
3510
+ all_feature_cols = [
3511
+ c for c in all_feature_cols if SqlIdentifier(c).resolved() in requested or c in keys_cols_to_keep
3512
+ ]
3400
3513
 
3401
3514
  feature_cols_str = ", ".join(all_feature_cols)
3402
3515
  # CTE name format matches generator: FV{index:03d}
@@ -4981,6 +5094,34 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
4981
5094
 
4982
5095
  return complete_query
4983
5096
 
5097
+ def _resolve_task_schedule(self, fv_name: SqlIdentifier, fallback: str) -> str:
5098
+ """Look up the Task schedule for a cron-driven feature view.
5099
+
5100
+ CRON-based FVs use ``TARGET_LAG = 'DOWNSTREAM'`` on the DT while the
5101
+ actual cron schedule lives on a companion Task with the same name.
5102
+ This helper retrieves that schedule so the reconstructed
5103
+ ``FeatureView`` carries the real cron expression instead of
5104
+ ``'DOWNSTREAM'``.
5105
+
5106
+ Args:
5107
+ fv_name: Resolved physical name of the feature view (e.g. ``FV$V1``).
5108
+ fallback: Value to return when no Task is found (i.e. the FV was
5109
+ truly registered with ``refresh_freq='DOWNSTREAM'``).
5110
+
5111
+ Returns:
5112
+ The cron expression from the Task (with the ``USING CRON `` prefix
5113
+ stripped), or ``fallback`` if no Task exists.
5114
+ """
5115
+ task_rows = self._session.sql(
5116
+ f"SHOW TASKS LIKE '{fv_name.resolved()}' IN SCHEMA {self._config.full_schema_path}"
5117
+ ).collect(statement_params=self._telemetry_stmp)
5118
+ if not task_rows:
5119
+ return fallback
5120
+ schedule: str = task_rows[0]["schedule"]
5121
+ if schedule.upper().startswith("USING CRON "):
5122
+ schedule = schedule[len("USING CRON ") :]
5123
+ return schedule
5124
+
4984
5125
  def _get_entity_name(self, raw_name: SqlIdentifier) -> SqlIdentifier:
4985
5126
  return SqlIdentifier(identifier.concat_names([_ENTITY_TAG_PREFIX, raw_name]))
4986
5127
 
@@ -5238,7 +5379,14 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
5238
5379
  values.append(row["owner"])
5239
5380
  values.append(row["comment"])
5240
5381
  values.append(fv_metadata.entities)
5241
- values.append(row["target_lag"] if "target_lag" in row else None)
5382
+ # CRON-based FVs use TARGET_LAG='DOWNSTREAM' on the DT and store the actual
5383
+ # cron expression on a companion Task. Recover it so list_feature_views()
5384
+ # surfaces the same value the user originally passed in (matching the
5385
+ # round-trip behavior of get_feature_view / register_feature_view).
5386
+ target_lag = row["target_lag"] if "target_lag" in row else None
5387
+ if target_lag == "DOWNSTREAM":
5388
+ target_lag = self._resolve_task_schedule(FeatureView._get_physical_name(name, version), target_lag)
5389
+ values.append(target_lag)
5242
5390
  values.append(row["refresh_mode"] if "refresh_mode" in row else None)
5243
5391
  values.append(row["scheduling_state"] if "scheduling_state" in row else None)
5244
5392
  values.append(row["warehouse"] if "warehouse" in row else None)
@@ -5460,6 +5608,13 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
5460
5608
  else:
5461
5609
  feature_descs = self._fetch_column_descs("DYNAMIC TABLE", fv_name)
5462
5610
 
5611
+ # CRON-based FVs use TARGET_LAG='DOWNSTREAM' on the DT and store the
5612
+ # actual cron expression on a companion Task. Recover it so the
5613
+ # round-trip (register → get → update) preserves what the user passed.
5614
+ refresh_freq = row["target_lag"]
5615
+ if refresh_freq == "DOWNSTREAM":
5616
+ refresh_freq = self._resolve_task_schedule(fv_name, refresh_freq)
5617
+
5463
5618
  fv = FeatureView._construct_feature_view(
5464
5619
  name=name,
5465
5620
  entities=entities,
@@ -5473,7 +5628,7 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
5473
5628
  else FeatureViewStatus.MASKED
5474
5629
  ),
5475
5630
  feature_descs=feature_descs,
5476
- refresh_freq=row["target_lag"],
5631
+ refresh_freq=refresh_freq,
5477
5632
  database=self._config.database.identifier(),
5478
5633
  schema=self._config.schema.identifier(),
5479
5634
  warehouse=(