snowflake-ml-python 1.7.4__tar.gz → 1.7.5__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 (417) hide show
  1. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/CHANGELOG.md +36 -5
  2. {snowflake_ml_python-1.7.4/snowflake_ml_python.egg-info → snowflake_ml_python-1.7.5}/PKG-INFO +58 -25
  3. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/README.md +1 -1
  4. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/pyproject.toml +7 -7
  5. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/env_utils.py +64 -21
  6. snowflake_ml_python-1.7.5/snowflake/ml/_internal/relax_version_strategy.py +16 -0
  7. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/telemetry.py +21 -0
  8. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/data/_internal/arrow_ingestor.py +1 -1
  9. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/feature_store.py +18 -0
  10. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/feature_view.py +46 -1
  11. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/_utils/constants.py +7 -1
  12. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/_utils/payload_utils.py +139 -53
  13. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/_utils/spec_utils.py +5 -7
  14. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/decorators.py +5 -25
  15. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/job.py +4 -4
  16. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_env/model_env.py +45 -28
  17. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/_utils.py +8 -4
  18. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/huggingface_pipeline.py +16 -0
  19. snowflake_ml_python-1.7.5/snowflake/ml/model/_packager/model_handlers/keras.py +230 -0
  20. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/pytorch.py +1 -0
  21. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/sklearn.py +28 -3
  22. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +74 -21
  23. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +27 -49
  24. snowflake_ml_python-1.7.5/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +48 -0
  25. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_meta/model_meta.py +1 -1
  26. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +3 -0
  27. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +1 -1
  28. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +4 -1
  29. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_task/model_task_utils.py +5 -1
  30. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/core.py +2 -2
  31. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/numpy_handler.py +5 -5
  32. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/pandas_handler.py +9 -7
  33. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/pytorch_handler.py +1 -1
  34. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/model_signature.py +8 -0
  35. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/type_hints.py +15 -0
  36. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +14 -1
  37. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/pipeline/pipeline.py +18 -1
  38. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/polynomial_features.py +2 -2
  39. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/registry/registry.py +34 -4
  40. snowflake_ml_python-1.7.5/snowflake/ml/version.py +1 -0
  41. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5/snowflake_ml_python.egg-info}/PKG-INFO +58 -25
  42. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake_ml_python.egg-info/SOURCES.txt +3 -0
  43. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake_ml_python.egg-info/requires.txt +19 -18
  44. snowflake_ml_python-1.7.4/snowflake/ml/version.py +0 -1
  45. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/LICENSE.txt +0 -0
  46. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/setup.cfg +0 -0
  47. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/__init__.py +0 -0
  48. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_classify_text.py +0 -0
  49. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_complete.py +0 -0
  50. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_embed_text_1024.py +0 -0
  51. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_embed_text_768.py +0 -0
  52. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_extract_answer.py +0 -0
  53. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_finetune.py +0 -0
  54. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_sentiment.py +0 -0
  55. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_sse_client.py +0 -0
  56. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_summarize.py +0 -0
  57. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_translate.py +0 -0
  58. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_util.py +0 -0
  59. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/env.py +0 -0
  60. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
  61. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
  62. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
  63. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
  64. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
  65. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
  66. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
  67. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
  68. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
  69. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/file_utils.py +0 -0
  70. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
  71. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
  72. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
  73. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
  74. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/init_utils.py +0 -0
  75. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
  76. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/migrator_utils.py +0 -0
  77. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/platform_capabilities.py +0 -0
  78. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/type_utils.py +0 -0
  79. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/db_utils.py +0 -0
  80. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/formatting.py +0 -0
  81. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/identifier.py +0 -0
  82. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/import_utils.py +0 -0
  83. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
  84. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/parallelize.py +0 -0
  85. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
  86. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
  87. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/result.py +0 -0
  88. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/service_logger.py +0 -0
  89. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
  90. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
  91. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
  92. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/table_manager.py +0 -0
  93. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
  94. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/data/__init__.py +0 -0
  95. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/data/data_connector.py +0 -0
  96. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/data/data_ingestor.py +0 -0
  97. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/data/data_source.py +0 -0
  98. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/data/ingestor_utils.py +0 -0
  99. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/data/torch_utils.py +0 -0
  100. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/dataset/__init__.py +0 -0
  101. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/dataset/dataset.py +0 -0
  102. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/dataset/dataset_factory.py +0 -0
  103. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/dataset/dataset_metadata.py +0 -0
  104. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/dataset/dataset_reader.py +0 -0
  105. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/__init__.py +0 -0
  106. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/access_manager.py +0 -0
  107. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/entity.py +0 -0
  108. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
  109. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
  110. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
  111. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
  112. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
  113. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
  114. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
  115. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
  116. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
  117. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
  118. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
  119. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
  120. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
  121. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
  122. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
  123. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
  124. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
  125. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
  126. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
  127. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
  128. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
  129. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
  130. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
  131. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/fileset/fileset.py +0 -0
  132. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/fileset/sfcfs.py +0 -0
  133. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/fileset/snowfs.py +0 -0
  134. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/fileset/stage_fs.py +0 -0
  135. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/__init__.py +0 -0
  136. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/_utils/types.py +0 -0
  137. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/manager.py +0 -0
  138. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/lineage/__init__.py +0 -0
  139. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/lineage/lineage_node.py +0 -0
  140. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/__init__.py +0 -0
  141. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/model/model_impl.py +0 -0
  142. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/model/model_version_impl.py +0 -0
  143. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
  144. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/ops/model_ops.py +0 -0
  145. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/ops/service_ops.py +0 -0
  146. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/service/model_deployment_spec.py +0 -0
  147. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +0 -0
  148. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/sql/_base.py +0 -0
  149. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/sql/model.py +0 -0
  150. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/sql/model_version.py +0 -0
  151. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/sql/service.py +0 -0
  152. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/sql/stage.py +0 -0
  153. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/sql/tag.py +0 -0
  154. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
  155. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
  156. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
  157. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
  158. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
  159. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
  160. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
  161. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
  162. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
  163. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
  164. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handler.py +0 -0
  165. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
  166. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
  167. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
  168. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
  169. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
  170. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +0 -0
  171. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
  172. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
  173. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
  174. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_meta/_packaging_requirements.py +0 -0
  175. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
  176. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
  177. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
  178. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
  179. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_packager.py +0 -0
  180. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/base_handler.py +0 -0
  181. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
  182. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
  183. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
  184. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/utils.py +0 -0
  185. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/custom_model.py +0 -0
  186. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
  187. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/constants.py +0 -0
  188. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
  189. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
  190. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
  191. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
  192. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
  193. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
  194. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
  195. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
  196. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
  197. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
  198. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
  199. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
  200. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/calibration/__init__.py +0 -0
  201. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
  202. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/__init__.py +0 -0
  203. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
  204. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
  205. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/birch.py +0 -0
  206. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
  207. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
  208. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
  209. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/k_means.py +0 -0
  210. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
  211. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
  212. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/optics.py +0 -0
  213. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
  214. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
  215. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
  216. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/compose/__init__.py +0 -0
  217. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
  218. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
  219. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/__init__.py +0 -0
  220. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
  221. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
  222. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
  223. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
  224. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
  225. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
  226. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/oas.py +0 -0
  227. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
  228. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
  229. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
  230. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
  231. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
  232. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
  233. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
  234. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
  235. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
  236. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/pca.py +0 -0
  237. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
  238. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
  239. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
  240. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
  241. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
  242. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
  243. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
  244. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
  245. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
  246. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
  247. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
  248. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
  249. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
  250. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
  251. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
  252. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
  253. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
  254. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
  255. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
  256. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
  257. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
  258. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
  259. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
  260. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
  261. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
  262. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
  263. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
  264. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
  265. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
  266. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
  267. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
  268. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/framework/_utils.py +0 -0
  269. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/framework/base.py +0 -0
  270. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
  271. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
  272. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
  273. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/impute/__init__.py +0 -0
  274. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
  275. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
  276. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
  277. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
  278. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
  279. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
  280. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
  281. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
  282. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
  283. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
  284. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
  285. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
  286. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
  287. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
  288. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
  289. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
  290. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
  291. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
  292. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
  293. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
  294. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
  295. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
  296. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/lars.py +0 -0
  297. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
  298. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
  299. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
  300. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
  301. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
  302. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
  303. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
  304. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
  305. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
  306. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
  307. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
  308. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
  309. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
  310. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
  311. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
  312. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
  313. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
  314. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
  315. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
  316. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
  317. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
  318. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
  319. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
  320. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
  321. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
  322. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
  323. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
  324. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
  325. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/manifold/__init__.py +0 -0
  326. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/manifold/isomap.py +0 -0
  327. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/manifold/mds.py +0 -0
  328. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
  329. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/manifold/tsne.py +0 -0
  330. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/metrics/__init__.py +0 -0
  331. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/metrics/classification.py +0 -0
  332. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/metrics/correlation.py +0 -0
  333. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/metrics/covariance.py +0 -0
  334. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
  335. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/metrics/ranking.py +0 -0
  336. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/metrics/regression.py +0 -0
  337. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/mixture/__init__.py +0 -0
  338. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
  339. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
  340. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
  341. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
  342. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
  343. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
  344. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
  345. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
  346. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
  347. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
  348. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
  349. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
  350. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
  351. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
  352. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
  353. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
  354. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
  355. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
  356. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
  357. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
  358. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
  359. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
  360. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
  361. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
  362. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
  363. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
  364. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
  365. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
  366. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
  367. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
  368. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
  369. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
  370. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
  371. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
  372. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
  373. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
  374. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
  375. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
  376. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
  377. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
  378. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
  379. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
  380. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
  381. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
  382. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
  383. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
  384. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
  385. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/svm/__init__.py +0 -0
  386. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
  387. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
  388. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
  389. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
  390. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/svm/svc.py +0 -0
  391. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/svm/svr.py +0 -0
  392. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/tree/__init__.py +0 -0
  393. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
  394. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
  395. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
  396. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
  397. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
  398. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
  399. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
  400. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
  401. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
  402. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
  403. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
  404. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
  405. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
  406. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
  407. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/model_monitor.py +0 -0
  408. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/model_monitor_version.py +0 -0
  409. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/shap.py +0 -0
  410. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/registry/__init__.py +0 -0
  411. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/registry/_manager/model_manager.py +0 -0
  412. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/utils/authentication.py +0 -0
  413. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/utils/connection_params.py +0 -0
  414. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/utils/sparse.py +0 -0
  415. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/utils/sql_client.py +0 -0
  416. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
  417. {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake_ml_python.egg-info/top_level.txt +0 -0
@@ -1,27 +1,53 @@
1
1
  # Release History
2
2
 
3
- ## 1.7.4
3
+ ## 1.7.5
4
+
5
+ - Support Python 3.12.
6
+ - Explainability: Support native and snowml sklearn pipeline
7
+
8
+ ### Bug Fixes
9
+
10
+ - Registry: Fixed a compatibility issue when using `snowflake-ml-python` 1.7.0 or greater to save a `tensorflow.keras`
11
+ model with `keras` 2.x, if `relax_version` is set or default to True, and newer version of `snowflake-ml-python`
12
+ is available in Snowflake Anaconda Channel, model could not be run in Snowflake. If you have such model, you could
13
+ use the latest version of `snowflake-ml-python` and call `ModelVersion.load` to load it back, and re-log it.
14
+ Alternatively, you can prevent this issue by setting `relax_version=False` when saving the model.
15
+ - Registry: Removed the validation that disallows data that does not have non-null values being passed to
16
+ `ModelVersion.run`.
17
+ - ML Job (PrPr): No longer require CREATE STAGE privilege if `stage_name` points to an existing stage
18
+ - ML Job (PrPr): Fixed a bug causing some payload source and entrypoint path
19
+ combinations to be erroneously rejected with
20
+ `ValueError(f"{self.entrypoint} must be a subpath of {self.source}")`
21
+ - ML Job (PrPr): Fixed a bug in Ray cluster startup config which caused certain Runtime APIs to fail
22
+
23
+ ### Behavior Change
24
+
25
+ ### New Features
26
+
27
+ - Registry: Added support for handling Hugging Face model configurations with auto-mapping functionality.
28
+ - Registry: Added support for `keras` 3.x model with `tensorflow` and `pytorch` backend
29
+ - ML Job (PrPr): Support any serializable (pickleable) argument for `@remote` decorated functions
30
+
31
+ ## 1.7.4 (01-28-2025)
4
32
 
5
33
  - FileSet: The `snowflake.ml.fileset.FileSet` has been deprecated and will be removed in a future version.
6
34
  Use [snowflake.ml.dataset.Dataset](https://docs.snowflake.com/en/developer-guide/snowflake-ml/dataset) and
7
35
  [snowflake.ml.data.DataConnector](https://docs.snowflake.com/en/developer-guide/snowpark-ml/reference/latest/api/data/snowflake.ml.data.data_connector.DataConnector)
8
36
  instead.
37
+ - Registry: `ModelVersion.run` on a service would require redeploying the service once account opts into nested function.
9
38
 
10
39
  ### Bug Fixes
11
40
 
12
41
  - Registry: Fixed an issue that the hugging face pipeline is loaded using incorrect dtype.
13
42
  - Registry: Fixed an issue that only 1 row is used when infer the model signature in the modeling model.
14
43
 
15
- ### Behavior Changes
16
-
17
- - Registry: `ModelVersion.run` on a service would require redeploying the service once account opts into nested function.
18
-
19
44
  ### New Features
20
45
 
21
46
  - Add new `snowflake.ml.jobs` preview API for running headless workloads on SPCS using
22
47
  [Container Runtime for ML](https://docs.snowflake.com/en/developer-guide/snowflake-ml/container-runtime-ml)
23
48
  - Added `guardrails` option to Cortex `complete` function, enabling
24
49
  [Cortex Guard](https://docs.snowflake.com/en/user-guide/snowflake-cortex/llm-functions#cortex-guard) support
50
+ - Model Monitoring: Expose Model Monitoring Python API by default.
25
51
 
26
52
  ## 1.7.3 (2025-01-08)
27
53
 
@@ -29,6 +55,7 @@
29
55
  - Bumped the requirements of `fsspec` and `s3fs` to `>=2024.6.1,<2026`
30
56
  - Bumped the requirement of `mlflow` to `>=2.16.0, <3`
31
57
  - Registry: Support 500+ features for model registry
58
+ - Feature Store: Add support for `cluster_by` for feature views.
32
59
 
33
60
  ### Bug Fixes
34
61
 
@@ -146,6 +173,10 @@ class ExamplePipelineModel(custom_model.CustomModel):
146
173
  - Data Connector: Add the option of passing a `None` sized batch to `to_torch_dataset` for better
147
174
  interoperability with PyTorch DataLoader.
148
175
  - Model Registry: Support [pandas.CategoricalDtype](https://pandas.pydata.org/docs/reference/api/pandas.CategoricalDtype.html#pandas-categoricaldtype)
176
+ - Limitations:
177
+ - The native categorical data handling handling by XGBoost using `enable_categorical=True` is not supported.
178
+ Instead please use [`sklearn.pipeline`](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html)
179
+ to preprocess the categorical datatype and log the pipeline with the XGBoost model.
149
180
  - Registry: It is now possible to pass `signatures` and `sample_input_data` at the same time to capture background
150
181
  data from explainablity and data lineage.
151
182
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: snowflake-ml-python
3
- Version: 1.7.4
3
+ Version: 1.7.5
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:
@@ -223,13 +223,14 @@ Classifier: Operating System :: OS Independent
223
223
  Classifier: Programming Language :: Python :: 3.9
224
224
  Classifier: Programming Language :: Python :: 3.10
225
225
  Classifier: Programming Language :: Python :: 3.11
226
+ Classifier: Programming Language :: Python :: 3.12
226
227
  Classifier: Topic :: Database
227
228
  Classifier: Topic :: Software Development
228
229
  Classifier: Topic :: Software Development :: Libraries
229
230
  Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
230
231
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
231
232
  Classifier: Topic :: Scientific/Engineering :: Information Analysis
232
- Requires-Python: <3.12,>=3.9
233
+ Requires-Python: <3.13,>=3.9
233
234
  Description-Content-Type: text/markdown
234
235
  License-File: LICENSE.txt
235
236
  Requires-Dist: absl-py<2,>=0.15
@@ -257,39 +258,40 @@ Requires-Dist: typing-extensions<5,>=4.1.0
257
258
  Requires-Dist: xgboost<3,>=1.7.3
258
259
  Provides-Extra: all
259
260
  Requires-Dist: catboost<2,>=1.2.0; extra == "all"
260
- Requires-Dist: huggingface_hub<0.26; extra == "all"
261
+ Requires-Dist: keras<4,>=2.0.0; extra == "all"
261
262
  Requires-Dist: lightgbm<5,>=4.1.0; extra == "all"
262
263
  Requires-Dist: mlflow<3,>=2.16.0; extra == "all"
263
- Requires-Dist: peft<1,>=0.5.0; extra == "all"
264
- Requires-Dist: sentence-transformers<3,>=2.2.2; extra == "all"
265
- Requires-Dist: sentencepiece<1,>=0.1.95; extra == "all"
264
+ Requires-Dist: sentence-transformers<3,>=2.7.0; extra == "all"
265
+ Requires-Dist: sentencepiece<0.2.0,>=0.1.95; extra == "all"
266
266
  Requires-Dist: shap<1,>=0.46.0; extra == "all"
267
- Requires-Dist: tensorflow<3,>=2.12.0; extra == "all"
268
- Requires-Dist: tokenizers<1,>=0.10; extra == "all"
269
- Requires-Dist: torch<2.3.0,>=2.0.1; extra == "all"
267
+ Requires-Dist: tensorflow<3,>=2.17.0; extra == "all"
268
+ Requires-Dist: tokenizers<1,>=0.15.1; extra == "all"
269
+ Requires-Dist: torch<3,>=2.0.1; extra == "all"
270
270
  Requires-Dist: torchdata<1,>=0.4; extra == "all"
271
- Requires-Dist: transformers<5,>=4.32.1; extra == "all"
271
+ Requires-Dist: transformers<5,>=4.37.2; extra == "all"
272
272
  Provides-Extra: catboost
273
273
  Requires-Dist: catboost<2,>=1.2.0; extra == "catboost"
274
+ Provides-Extra: keras
275
+ Requires-Dist: keras<4,>=2.0.0; extra == "keras"
276
+ Requires-Dist: tensorflow<3,>=2.17.0; extra == "keras"
277
+ Requires-Dist: torch<3,>=2.0.1; extra == "keras"
274
278
  Provides-Extra: lightgbm
275
279
  Requires-Dist: lightgbm<5,>=4.1.0; extra == "lightgbm"
276
- Provides-Extra: llm
277
- Requires-Dist: peft<1,>=0.5.0; extra == "llm"
278
280
  Provides-Extra: mlflow
279
281
  Requires-Dist: mlflow<3,>=2.16.0; extra == "mlflow"
280
282
  Provides-Extra: shap
281
283
  Requires-Dist: shap<1,>=0.46.0; extra == "shap"
282
284
  Provides-Extra: tensorflow
283
- Requires-Dist: tensorflow<3,>=2.12.0; extra == "tensorflow"
285
+ Requires-Dist: tensorflow<3,>=2.17.0; extra == "tensorflow"
284
286
  Provides-Extra: torch
285
- Requires-Dist: torch<2.3.0,>=2.0.1; extra == "torch"
287
+ Requires-Dist: torch<3,>=2.0.1; extra == "torch"
286
288
  Requires-Dist: torchdata<1,>=0.4; extra == "torch"
287
289
  Provides-Extra: transformers
288
- Requires-Dist: huggingface_hub<0.26; extra == "transformers"
289
- Requires-Dist: sentence-transformers<3,>=2.2.2; extra == "transformers"
290
- Requires-Dist: sentencepiece<1,>=0.1.95; extra == "transformers"
291
- Requires-Dist: tokenizers<1,>=0.10; extra == "transformers"
292
- Requires-Dist: transformers<5,>=4.32.1; extra == "transformers"
290
+ Requires-Dist: sentence-transformers<3,>=2.7.0; extra == "transformers"
291
+ Requires-Dist: sentencepiece<0.2.0,>=0.1.95; extra == "transformers"
292
+ Requires-Dist: tokenizers<1,>=0.15.1; extra == "transformers"
293
+ Requires-Dist: torch<3,>=2.0.1; extra == "transformers"
294
+ Requires-Dist: transformers<5,>=4.37.2; extra == "transformers"
293
295
 
294
296
  # Snowpark ML
295
297
 
@@ -346,7 +348,7 @@ If you don't have a Snowflake account yet, you can [sign up for a 30-day free tr
346
348
  Follow the [installation instructions](https://docs.snowflake.com/en/developer-guide/snowpark-ml/index#installing-snowpark-ml)
347
349
  in the Snowflake documentation.
348
350
 
349
- Python versions 3.9 to 3.11 are supported. You can use [miniconda](https://docs.conda.io/en/latest/miniconda.html) or
351
+ Python versions 3.9 to 3.12 are supported. You can use [miniconda](https://docs.conda.io/en/latest/miniconda.html) or
350
352
  [anaconda](https://www.anaconda.com/) to create a Conda environment (recommended),
351
353
  or [virtualenv](https://docs.python.org/3/tutorial/venv.html) to create a virtual environment.
352
354
 
@@ -399,28 +401,54 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
399
401
 
400
402
  # Release History
401
403
 
402
- ## 1.7.4
404
+ ## 1.7.5
405
+
406
+ - Support Python 3.12.
407
+ - Explainability: Support native and snowml sklearn pipeline
408
+
409
+ ### Bug Fixes
410
+
411
+ - Registry: Fixed a compatibility issue when using `snowflake-ml-python` 1.7.0 or greater to save a `tensorflow.keras`
412
+ model with `keras` 2.x, if `relax_version` is set or default to True, and newer version of `snowflake-ml-python`
413
+ is available in Snowflake Anaconda Channel, model could not be run in Snowflake. If you have such model, you could
414
+ use the latest version of `snowflake-ml-python` and call `ModelVersion.load` to load it back, and re-log it.
415
+ Alternatively, you can prevent this issue by setting `relax_version=False` when saving the model.
416
+ - Registry: Removed the validation that disallows data that does not have non-null values being passed to
417
+ `ModelVersion.run`.
418
+ - ML Job (PrPr): No longer require CREATE STAGE privilege if `stage_name` points to an existing stage
419
+ - ML Job (PrPr): Fixed a bug causing some payload source and entrypoint path
420
+ combinations to be erroneously rejected with
421
+ `ValueError(f"{self.entrypoint} must be a subpath of {self.source}")`
422
+ - ML Job (PrPr): Fixed a bug in Ray cluster startup config which caused certain Runtime APIs to fail
423
+
424
+ ### Behavior Change
425
+
426
+ ### New Features
427
+
428
+ - Registry: Added support for handling Hugging Face model configurations with auto-mapping functionality.
429
+ - Registry: Added support for `keras` 3.x model with `tensorflow` and `pytorch` backend
430
+ - ML Job (PrPr): Support any serializable (pickleable) argument for `@remote` decorated functions
431
+
432
+ ## 1.7.4 (01-28-2025)
403
433
 
404
434
  - FileSet: The `snowflake.ml.fileset.FileSet` has been deprecated and will be removed in a future version.
405
435
  Use [snowflake.ml.dataset.Dataset](https://docs.snowflake.com/en/developer-guide/snowflake-ml/dataset) and
406
436
  [snowflake.ml.data.DataConnector](https://docs.snowflake.com/en/developer-guide/snowpark-ml/reference/latest/api/data/snowflake.ml.data.data_connector.DataConnector)
407
437
  instead.
438
+ - Registry: `ModelVersion.run` on a service would require redeploying the service once account opts into nested function.
408
439
 
409
440
  ### Bug Fixes
410
441
 
411
442
  - Registry: Fixed an issue that the hugging face pipeline is loaded using incorrect dtype.
412
443
  - Registry: Fixed an issue that only 1 row is used when infer the model signature in the modeling model.
413
444
 
414
- ### Behavior Changes
415
-
416
- - Registry: `ModelVersion.run` on a service would require redeploying the service once account opts into nested function.
417
-
418
445
  ### New Features
419
446
 
420
447
  - Add new `snowflake.ml.jobs` preview API for running headless workloads on SPCS using
421
448
  [Container Runtime for ML](https://docs.snowflake.com/en/developer-guide/snowflake-ml/container-runtime-ml)
422
449
  - Added `guardrails` option to Cortex `complete` function, enabling
423
450
  [Cortex Guard](https://docs.snowflake.com/en/user-guide/snowflake-cortex/llm-functions#cortex-guard) support
451
+ - Model Monitoring: Expose Model Monitoring Python API by default.
424
452
 
425
453
  ## 1.7.3 (2025-01-08)
426
454
 
@@ -428,6 +456,7 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
428
456
  - Bumped the requirements of `fsspec` and `s3fs` to `>=2024.6.1,<2026`
429
457
  - Bumped the requirement of `mlflow` to `>=2.16.0, <3`
430
458
  - Registry: Support 500+ features for model registry
459
+ - Feature Store: Add support for `cluster_by` for feature views.
431
460
 
432
461
  ### Bug Fixes
433
462
 
@@ -545,6 +574,10 @@ class ExamplePipelineModel(custom_model.CustomModel):
545
574
  - Data Connector: Add the option of passing a `None` sized batch to `to_torch_dataset` for better
546
575
  interoperability with PyTorch DataLoader.
547
576
  - Model Registry: Support [pandas.CategoricalDtype](https://pandas.pydata.org/docs/reference/api/pandas.CategoricalDtype.html#pandas-categoricaldtype)
577
+ - Limitations:
578
+ - The native categorical data handling handling by XGBoost using `enable_categorical=True` is not supported.
579
+ Instead please use [`sklearn.pipeline`](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html)
580
+ to preprocess the categorical datatype and log the pipeline with the XGBoost model.
548
581
  - Registry: It is now possible to pass `signatures` and `sample_input_data` at the same time to capture background
549
582
  data from explainablity and data lineage.
550
583
 
@@ -53,7 +53,7 @@ If you don't have a Snowflake account yet, you can [sign up for a 30-day free tr
53
53
  Follow the [installation instructions](https://docs.snowflake.com/en/developer-guide/snowpark-ml/index#installing-snowpark-ml)
54
54
  in the Snowflake documentation.
55
55
 
56
- Python versions 3.9 to 3.11 are supported. You can use [miniconda](https://docs.conda.io/en/latest/miniconda.html) or
56
+ Python versions 3.9 to 3.12 are supported. You can use [miniconda](https://docs.conda.io/en/latest/miniconda.html) or
57
57
  [anaconda](https://www.anaconda.com/) to create a Conda environment (recommended),
58
58
  or [virtualenv](https://docs.python.org/3/tutorial/venv.html) to create a virtual environment.
59
59
 
@@ -5,8 +5,8 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  name = "snowflake-ml-python"
7
7
  description = "The machine learning client library that is used for interacting with Snowflake to build machine learning solutions."
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", "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
- requires-python = ">=3.9, <3.12"
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
+ requires-python = ">=3.9, <3.13"
10
10
  dynamic = [ "version", "readme",]
11
11
  dependencies = [ "absl-py>=0.15,<2", "anyio>=3.5.0,<5", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<2", "packaging>=20.9,<25", "pandas>=1.0.0,<3", "pyarrow", "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.4,<1.6", "scipy>=1.9,<2", "snowflake-connector-python[pandas]>=3.5.0,<4", "snowflake-snowpark-python>=1.17.0,<2,!=1.26.0", "sqlparse>=0.4,<1", "typing-extensions>=4.1.0,<5", "xgboost>=1.7.3,<3",]
12
12
  [[project.authors]]
@@ -24,15 +24,15 @@ Issues = "https://github.com/snowflakedb/snowflake-ml-python/issues"
24
24
  Changelog = "https://github.com/snowflakedb/snowflake-ml-python/blob/master/CHANGELOG.md"
25
25
 
26
26
  [project.optional-dependencies]
27
- all = [ "catboost>=1.2.0, <2", "huggingface_hub<0.26", "lightgbm>=4.1.0, <5", "mlflow>=2.16.0, <3", "peft>=0.5.0,<1", "sentence-transformers>=2.2.2,<3", "sentencepiece>=0.1.95,<1", "shap>=0.46.0,<1", "tensorflow>=2.12.0,<3", "tokenizers>=0.10,<1", "torch>=2.0.1,<2.3.0", "torchdata>=0.4,<1", "transformers>=4.32.1,<5",]
27
+ all = [ "catboost>=1.2.0, <2", "keras>=2.0.0,<4", "lightgbm>=4.1.0, <5", "mlflow>=2.16.0, <3", "sentence-transformers>=2.7.0,<3", "sentencepiece>=0.1.95,<0.2.0", "shap>=0.46.0,<1", "tensorflow>=2.17.0,<3", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "torchdata>=0.4,<1", "transformers>=4.37.2,<5",]
28
28
  catboost = [ "catboost>=1.2.0, <2",]
29
+ keras = [ "keras>=2.0.0,<4", "tensorflow>=2.17.0,<3", "torch>=2.0.1,<3",]
29
30
  lightgbm = [ "lightgbm>=4.1.0, <5",]
30
- llm = [ "peft>=0.5.0,<1",]
31
31
  mlflow = [ "mlflow>=2.16.0, <3",]
32
32
  shap = [ "shap>=0.46.0,<1",]
33
- tensorflow = [ "tensorflow>=2.12.0,<3",]
34
- torch = [ "torch>=2.0.1,<2.3.0", "torchdata>=0.4,<1",]
35
- transformers = [ "huggingface_hub<0.26", "sentence-transformers>=2.2.2,<3", "sentencepiece>=0.1.95,<1", "tokenizers>=0.10,<1", "transformers>=4.32.1,<5",]
33
+ tensorflow = [ "tensorflow>=2.17.0,<3",]
34
+ torch = [ "torch>=2.0.1,<3", "torchdata>=0.4,<1",]
35
+ transformers = [ "sentence-transformers>=2.7.0,<3", "sentencepiece>=0.1.95,<0.2.0", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "transformers>=4.37.2,<5",]
36
36
 
37
37
  [tool.setuptools.package-data]
38
38
  "*" = [ "*",]
@@ -12,7 +12,7 @@ import yaml
12
12
  from packaging import requirements, specifiers, version
13
13
 
14
14
  import snowflake.connector
15
- from snowflake.ml._internal import env as snowml_env
15
+ from snowflake.ml._internal import env as snowml_env, relax_version_strategy
16
16
  from snowflake.ml._internal.utils import query_result_checker
17
17
  from snowflake.snowpark import context, exceptions, session
18
18
 
@@ -56,6 +56,8 @@ def _validate_pip_requirement_string(req_str: str) -> requirements.Requirement:
56
56
 
57
57
  if r.name == "python":
58
58
  raise ValueError("Don't specify python as a dependency, use python version argument instead.")
59
+ if r.name == "cuda":
60
+ raise ValueError("Don't specify cuda as a dependency, use cuda version argument instead.")
59
61
  except requirements.InvalidRequirement:
60
62
  raise ValueError(f"Invalid package requirement {req_str} found.")
61
63
 
@@ -313,19 +315,14 @@ def get_package_spec_with_supported_ops_only(req: requirements.Requirement) -> r
313
315
  return new_req
314
316
 
315
317
 
316
- def relax_requirement_version(req: requirements.Requirement) -> requirements.Requirement:
317
- """Relax version specifier from a requirement. It detects any ==x.y.z in specifiers and replaced with
318
- >=x.y, <(x+1)
319
-
320
- Args:
321
- req: The requirement that version specifier to be removed.
322
-
323
- Returns:
324
- A new requirement object after relaxations.
325
- """
326
- new_req = copy.deepcopy(req)
318
+ def _relax_specifier_set(
319
+ specifier_set: specifiers.SpecifierSet, strategy: relax_version_strategy.RelaxVersionStrategy
320
+ ) -> specifiers.SpecifierSet:
321
+ if strategy == relax_version_strategy.RelaxVersionStrategy.NO_RELAX:
322
+ return specifier_set
323
+ specifier_set = copy.deepcopy(specifier_set)
327
324
  relaxed_specifier_set = set()
328
- for spec in new_req.specifier._specs:
325
+ for spec in specifier_set._specs:
329
326
  if spec.operator != "==":
330
327
  relaxed_specifier_set.add(spec)
331
328
  continue
@@ -337,9 +334,40 @@ def relax_requirement_version(req: requirements.Requirement) -> requirements.Req
337
334
  relaxed_specifier_set.add(spec)
338
335
  continue
339
336
  assert pinned_version is not None
340
- relaxed_specifier_set.add(specifiers.Specifier(f">={pinned_version.major}.{pinned_version.minor}"))
341
- relaxed_specifier_set.add(specifiers.Specifier(f"<{pinned_version.major + 1}"))
342
- new_req.specifier._specs = frozenset(relaxed_specifier_set)
337
+ if strategy == relax_version_strategy.RelaxVersionStrategy.PATCH:
338
+ relaxed_specifier_set.add(specifiers.Specifier(f">={pinned_version.major}.{pinned_version.minor}"))
339
+ relaxed_specifier_set.add(specifiers.Specifier(f"<{pinned_version.major}.{pinned_version.minor+1}"))
340
+ elif strategy == relax_version_strategy.RelaxVersionStrategy.MINOR:
341
+ relaxed_specifier_set.add(specifiers.Specifier(f">={pinned_version.major}.{pinned_version.minor}"))
342
+ relaxed_specifier_set.add(specifiers.Specifier(f"<{pinned_version.major + 1}"))
343
+ elif strategy == relax_version_strategy.RelaxVersionStrategy.MAJOR:
344
+ relaxed_specifier_set.add(specifiers.Specifier(f">={pinned_version.major}"))
345
+ relaxed_specifier_set.add(specifiers.Specifier(f"<{pinned_version.major + 1}"))
346
+ specifier_set._specs = frozenset(relaxed_specifier_set)
347
+ return specifier_set
348
+
349
+
350
+ def relax_requirement_version(req: requirements.Requirement) -> requirements.Requirement:
351
+ """Relax version specifier from a requirement. It detects any ==x.y.z in specifiers and replaced with relaxed
352
+ version specifier based on the strategy defined in RELAX_VERSION_STRATEGY_MAP.
353
+
354
+ NO_RELAX: No relaxation.
355
+ PATCH: >=x.y, <x.(y+1)
356
+ MINOR (default): >=x.y, <(x+1)
357
+ MAJOR: >=x, <(x+1)
358
+
359
+
360
+ Args:
361
+ req: The requirement that version specifier to be removed.
362
+
363
+ Returns:
364
+ A new requirement object after relaxations.
365
+ """
366
+ new_req = copy.deepcopy(req)
367
+ strategy = relax_version_strategy.RELAX_VERSION_STRATEGY_MAP.get(
368
+ req.name, relax_version_strategy.RelaxVersionStrategy.MINOR
369
+ )
370
+ new_req.specifier = _relax_specifier_set(new_req.specifier, strategy)
343
371
  return new_req
344
372
 
345
373
 
@@ -431,10 +459,11 @@ def save_conda_env_file(
431
459
  path: pathlib.Path,
432
460
  conda_chan_deps: DefaultDict[str, List[requirements.Requirement]],
433
461
  python_version: str,
462
+ cuda_version: Optional[str] = None,
434
463
  default_channel_override: str = SNOWFLAKE_CONDA_CHANNEL_URL,
435
464
  ) -> None:
436
465
  """Generate conda.yml file given a dict of dependencies after validation.
437
- The channels part of conda.yml file will contains Snowflake Anaconda Channel, nodefaults and all channel names
466
+ The channels part of conda.yml file will contain Snowflake Anaconda Channel, nodefaults and all channel names
438
467
  in keys of the dict, ordered by the number of the packages which belongs to.
439
468
  The dependencies part of conda.yml file will contains requirements specifications. If the requirements is in the
440
469
  value list whose key is DEFAULT_CHANNEL_NAME, then the channel won't be specified explicitly. Otherwise, it will be
@@ -443,7 +472,8 @@ def save_conda_env_file(
443
472
  Args:
444
473
  path: Path to the conda.yml file.
445
474
  conda_chan_deps: Dict of conda dependencies after validated.
446
- python_version: A string 'major.minor' showing python version relate to model.
475
+ python_version: A string 'major.minor' for the model's python version.
476
+ cuda_version: A string 'major.minor' for the model's cuda version.
447
477
  default_channel_override: The default channel to be put in the first place of the channels section.
448
478
  """
449
479
  assert path.suffix in [".yml", ".yaml"], "Conda environment file should have extension of yml or yaml."
@@ -461,6 +491,10 @@ def save_conda_env_file(
461
491
 
462
492
  env["channels"] = [default_channel_override] + channels + [_NODEFAULTS]
463
493
  env["dependencies"] = [f"python=={python_version}.*"]
494
+
495
+ if cuda_version is not None:
496
+ env["dependencies"].extend([f"nvidia::cuda=={cuda_version}.*"])
497
+
464
498
  for chan, reqs in conda_chan_deps.items():
465
499
  env["dependencies"].extend(
466
500
  [f"{chan}::{str(req)}" if chan != DEFAULT_CHANNEL_NAME else str(req) for req in reqs]
@@ -487,7 +521,12 @@ def save_requirements_file(path: pathlib.Path, pip_deps: List[requirements.Requi
487
521
 
488
522
  def load_conda_env_file(
489
523
  path: pathlib.Path,
490
- ) -> Tuple[DefaultDict[str, List[requirements.Requirement]], Optional[List[requirements.Requirement]], Optional[str]]:
524
+ ) -> Tuple[
525
+ DefaultDict[str, List[requirements.Requirement]],
526
+ Optional[List[requirements.Requirement]],
527
+ Optional[str],
528
+ Optional[str],
529
+ ]:
491
530
  """Read conda.yml file to get a dict of dependencies after validation.
492
531
  The channels part of conda.yml file will be processed with following rules:
493
532
  1. If it is Snowflake Anaconda Channel, ignore as it is default.
@@ -515,7 +554,7 @@ def load_conda_env_file(
515
554
  and a string 'major.minor.patchlevel' of python version.
516
555
  """
517
556
  if not path.exists():
518
- return collections.defaultdict(list), None, None
557
+ return collections.defaultdict(list), None, None, None
519
558
 
520
559
  with open(path, encoding="utf-8") as f:
521
560
  env = yaml.safe_load(stream=f)
@@ -526,6 +565,7 @@ def load_conda_env_file(
526
565
  pip_deps = []
527
566
 
528
567
  python_version = None
568
+ cuda_version = None
529
569
 
530
570
  channels = env.get("channels", [])
531
571
  if len(channels) >= 1:
@@ -541,6 +581,9 @@ def load_conda_env_file(
541
581
  # ver is str: python w/ specifier
542
582
  if ver:
543
583
  python_version = ver
584
+ elif dep.startswith("nvidia::cuda"):
585
+ r = requirements.Requirement(dep.split("nvidia::")[1])
586
+ cuda_version = list(r.specifier)[0].version.strip(".*")
544
587
  elif ver is None:
545
588
  deps.append(dep)
546
589
  elif isinstance(dep, dict) and "pip" in dep:
@@ -555,7 +598,7 @@ def load_conda_env_file(
555
598
  if channel not in conda_dep_dict:
556
599
  conda_dep_dict[channel] = []
557
600
 
558
- return conda_dep_dict, pip_deps_list if pip_deps_list else None, python_version
601
+ return conda_dep_dict, pip_deps_list if pip_deps_list else None, python_version, cuda_version
559
602
 
560
603
 
561
604
  def load_requirements_file(path: pathlib.Path) -> List[requirements.Requirement]:
@@ -0,0 +1,16 @@
1
+ from enum import Enum
2
+
3
+
4
+ class RelaxVersionStrategy(Enum):
5
+ NO_RELAX = "no_relax"
6
+ PATCH = "patch"
7
+ MINOR = "minor"
8
+ MAJOR = "major"
9
+
10
+
11
+ RELAX_VERSION_STRATEGY_MAP = {
12
+ # The version of cloudpickle should not be relaxed as it is used for serialization.
13
+ "cloudpickle": RelaxVersionStrategy.NO_RELAX,
14
+ # The version of scikit-learn should be relaxed only in patch version as it has breaking changes in minor version.
15
+ "scikit-learn": RelaxVersionStrategy.PATCH,
16
+ }
@@ -4,6 +4,9 @@ import enum
4
4
  import functools
5
5
  import inspect
6
6
  import operator
7
+ import sys
8
+ import time
9
+ import traceback
7
10
  import types
8
11
  from typing import (
9
12
  Any,
@@ -75,6 +78,8 @@ class TelemetryField(enum.Enum):
75
78
  KEY_FUNC_PARAMS = "func_params"
76
79
  KEY_ERROR_INFO = "error_info"
77
80
  KEY_ERROR_CODE = "error_code"
81
+ KEY_STACK_TRACE = "stack_trace"
82
+ KEY_DURATION = "duration"
78
83
  KEY_VERSION = "version"
79
84
  KEY_PYTHON_VERSION = "python_version"
80
85
  KEY_OS = "operating_system"
@@ -435,6 +440,7 @@ def send_api_usage_telemetry(
435
440
 
436
441
  # noqa: DAR402
437
442
  """
443
+ start_time = time.perf_counter()
438
444
 
439
445
  if subproject is not None and subproject_extractor is not None:
440
446
  raise ValueError("Specifying both subproject and subproject_extractor is not allowed")
@@ -555,8 +561,16 @@ def send_api_usage_telemetry(
555
561
  )
556
562
  else:
557
563
  me = e
564
+
558
565
  telemetry_args["error"] = repr(me)
559
566
  telemetry_args["error_code"] = me.error_code
567
+ # exclude telemetry frames
568
+ excluded_frames = 2
569
+ tb = traceback.extract_tb(sys.exc_info()[2])
570
+ formatted_tb = "".join(traceback.format_list(tb[excluded_frames:]))
571
+ formatted_exception = traceback.format_exception_only(*sys.exc_info()[:2])[0] # error type + message
572
+ telemetry_args["stack_trace"] = formatted_tb + formatted_exception
573
+
560
574
  me.original_exception._snowflake_ml_handled = True # type: ignore[attr-defined]
561
575
  if e is not me:
562
576
  raise # Directly raise non-wrapped exceptions to preserve original stacktrace
@@ -565,6 +579,7 @@ def send_api_usage_telemetry(
565
579
  else:
566
580
  raise me.original_exception from e
567
581
  finally:
582
+ telemetry_args["duration"] = time.perf_counter() - start_time # type: ignore[assignment]
568
583
  telemetry.send_function_usage_telemetry(**telemetry_args)
569
584
  global _log_counter
570
585
  _log_counter += 1
@@ -718,12 +733,14 @@ class _SourceTelemetryClient:
718
733
  self,
719
734
  func_name: str,
720
735
  function_category: str,
736
+ duration: float,
721
737
  func_params: Optional[Dict[str, Any]] = None,
722
738
  api_calls: Optional[List[Dict[str, Any]]] = None,
723
739
  sfqids: Optional[List[Any]] = None,
724
740
  custom_tags: Optional[Dict[str, Union[bool, int, str, float]]] = None,
725
741
  error: Optional[str] = None,
726
742
  error_code: Optional[str] = None,
743
+ stack_trace: Optional[str] = None,
727
744
  ) -> None:
728
745
  """
729
746
  Send function usage telemetry message.
@@ -731,12 +748,14 @@ class _SourceTelemetryClient:
731
748
  Args:
732
749
  func_name: Function name.
733
750
  function_category: Function category.
751
+ duration: Function duration.
734
752
  func_params: Function parameters.
735
753
  api_calls: API calls.
736
754
  sfqids: Snowflake query IDs.
737
755
  custom_tags: Custom tags.
738
756
  error: Error.
739
757
  error_code: Error code.
758
+ stack_trace: Error stack trace.
740
759
  """
741
760
  data: Dict[str, Any] = {
742
761
  TelemetryField.KEY_FUNC_NAME.value: func_name,
@@ -755,11 +774,13 @@ class _SourceTelemetryClient:
755
774
  message: Dict[str, Any] = {
756
775
  **self._create_basic_telemetry_data(telemetry_type),
757
776
  TelemetryField.KEY_DATA.value: data,
777
+ TelemetryField.KEY_DURATION.value: duration,
758
778
  }
759
779
 
760
780
  if error:
761
781
  message[TelemetryField.KEY_ERROR_INFO.value] = error
762
782
  message[TelemetryField.KEY_ERROR_CODE.value] = error_code
783
+ message[TelemetryField.KEY_STACK_TRACE.value] = stack_trace
763
784
 
764
785
  self._send(message)
765
786
 
@@ -116,7 +116,7 @@ class ArrowIngestor(data_ingestor.DataIngestor):
116
116
  def to_pandas(self, limit: Optional[int] = None) -> pd.DataFrame:
117
117
  ds = self._get_dataset(shuffle=False)
118
118
  table = ds.to_table() if limit is None else ds.head(num_rows=limit)
119
- return table.to_pandas()
119
+ return table.to_pandas(split_blocks=True, self_destruct=True)
120
120
 
121
121
  def _get_dataset(self, shuffle: bool) -> pds.Dataset:
122
122
  format = self._format
@@ -144,6 +144,7 @@ _LIST_FEATURE_VIEW_SCHEMA = StructType(
144
144
  StructField("refresh_mode", StringType()),
145
145
  StructField("scheduling_state", StringType()),
146
146
  StructField("warehouse", StringType()),
147
+ StructField("cluster_by", StringType()),
147
148
  ]
148
149
  )
149
150
 
@@ -1832,6 +1833,12 @@ class FeatureStore:
1832
1833
  WAREHOUSE = {warehouse}
1833
1834
  REFRESH_MODE = {feature_view.refresh_mode}
1834
1835
  INITIALIZE = {feature_view.initialize}
1836
+ """
1837
+ if feature_view.cluster_by:
1838
+ cluster_by_clause = f"CLUSTER BY ({', '.join(feature_view.cluster_by)})"
1839
+ query += f"{cluster_by_clause}"
1840
+
1841
+ query += f"""
1835
1842
  AS {feature_view.query}
1836
1843
  """
1837
1844
  self._session.sql(query).collect(block=block, statement_params=self._telemetry_stmp)
@@ -2249,6 +2256,7 @@ class FeatureStore:
2249
2256
  values.append(row["refresh_mode"] if "refresh_mode" in row else None)
2250
2257
  values.append(row["scheduling_state"] if "scheduling_state" in row else None)
2251
2258
  values.append(row["warehouse"] if "warehouse" in row else None)
2259
+ values.append(json.dumps(self._extract_cluster_by_columns(row["cluster_by"])) if "cluster_by" in row else None)
2252
2260
  output_values.append(values)
2253
2261
 
2254
2262
  def _lookup_feature_view_metadata(self, row: Row, fv_name: str) -> Tuple[_FeatureViewMetadata, str]:
@@ -2335,6 +2343,7 @@ class FeatureStore:
2335
2343
  owner=row["owner"],
2336
2344
  infer_schema_df=infer_schema_df,
2337
2345
  session=self._session,
2346
+ cluster_by=self._extract_cluster_by_columns(row["cluster_by"]),
2338
2347
  )
2339
2348
  return fv
2340
2349
  else:
@@ -2625,3 +2634,12 @@ class FeatureStore:
2625
2634
  )
2626
2635
 
2627
2636
  return feature_view
2637
+
2638
+ @staticmethod
2639
+ def _extract_cluster_by_columns(cluster_by_clause: str) -> List[str]:
2640
+ # Use regex to extract elements inside the parentheses.
2641
+ match = re.search(r"\((.*?)\)", cluster_by_clause)
2642
+ if match:
2643
+ # Handle both quoted and unquoted column names.
2644
+ return re.findall(identifier.SF_IDENTIFIER_RE, match.group(1))
2645
+ return []