snowflake-ml-python 1.18.0__tar.gz → 1.19.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 (464) hide show
  1. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/CHANGELOG.md +16 -0
  2. {snowflake_ml_python-1.18.0/snowflake_ml_python.egg-info → snowflake_ml_python-1.19.0}/PKG-INFO +26 -4
  3. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/pyproject.toml +3 -2
  4. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +1 -7
  5. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/experiment/experiment_tracking.py +31 -63
  6. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/feature_store.py +85 -30
  7. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/feature_view.py +12 -6
  8. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/fileset/stage_fs.py +12 -1
  9. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/job.py +3 -3
  10. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/manager.py +6 -6
  11. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_client/ops/model_ops.py +11 -4
  12. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +1 -1
  13. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/monitoring/explain_visualize.py +3 -1
  14. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/version.py +1 -1
  15. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0/snowflake_ml_python.egg-info}/PKG-INFO +26 -4
  16. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake_ml_python.egg-info/requires.txt +10 -3
  17. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/LICENSE.txt +0 -0
  18. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/README.md +0 -0
  19. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/setup.cfg +0 -0
  20. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/cortex/__init__.py +0 -0
  21. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/cortex/_classify_text.py +0 -0
  22. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/cortex/_complete.py +0 -0
  23. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/cortex/_embed_text_1024.py +0 -0
  24. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/cortex/_embed_text_768.py +0 -0
  25. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/cortex/_extract_answer.py +0 -0
  26. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/cortex/_finetune.py +0 -0
  27. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/cortex/_sentiment.py +0 -0
  28. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/cortex/_sse_client.py +0 -0
  29. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/cortex/_summarize.py +0 -0
  30. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/cortex/_translate.py +0 -0
  31. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/cortex/_util.py +0 -0
  32. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/env.py +0 -0
  33. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/env_utils.py +0 -0
  34. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
  35. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
  36. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
  37. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
  38. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
  39. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
  40. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
  41. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
  42. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
  43. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/file_utils.py +0 -0
  44. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
  45. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
  46. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
  47. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
  48. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/init_utils.py +0 -0
  49. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
  50. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
  51. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/platform_capabilities.py +0 -0
  52. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
  53. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/telemetry.py +0 -0
  54. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/type_utils.py +0 -0
  55. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/connection_params.py +0 -0
  56. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
  57. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
  58. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/identifier.py +0 -0
  59. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
  60. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
  61. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/mixins.py +0 -0
  62. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
  63. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
  64. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
  65. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/result.py +0 -0
  66. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/service_logger.py +0 -0
  67. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
  68. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
  69. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
  70. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
  71. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
  72. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/data/__init__.py +0 -0
  73. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
  74. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/data/data_connector.py +0 -0
  75. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/data/data_ingestor.py +0 -0
  76. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/data/data_source.py +0 -0
  77. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/data/ingestor_utils.py +0 -0
  78. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/data/torch_utils.py +0 -0
  79. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/dataset/__init__.py +0 -0
  80. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/dataset/dataset.py +0 -0
  81. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
  82. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
  83. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
  84. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/experiment/__init__.py +0 -0
  85. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/experiment/_client/artifact.py +0 -0
  86. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/experiment/_entities/__init__.py +0 -0
  87. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/experiment/_entities/experiment.py +0 -0
  88. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/experiment/_entities/run.py +0 -0
  89. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
  90. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/experiment/_experiment_info.py +0 -0
  91. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/experiment/callback/keras.py +0 -0
  92. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/experiment/callback/lightgbm.py +0 -0
  93. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/experiment/callback/xgboost.py +0 -0
  94. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/experiment/utils.py +0 -0
  95. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/__init__.py +0 -0
  96. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/access_manager.py +0 -0
  97. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/entity.py +0 -0
  98. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
  99. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
  100. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
  101. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
  102. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
  103. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
  104. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
  105. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
  106. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
  107. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
  108. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
  109. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
  110. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
  111. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
  112. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
  113. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
  114. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
  115. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
  116. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
  117. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
  118. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
  119. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
  120. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
  121. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/fileset/fileset.py +0 -0
  122. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/fileset/sfcfs.py +0 -0
  123. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/fileset/snowfs.py +0 -0
  124. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/__init__.py +0 -0
  125. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_interop/__init__.py +0 -0
  126. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_interop/data_utils.py +0 -0
  127. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_interop/dto_schema.py +0 -0
  128. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_interop/exception_utils.py +0 -0
  129. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_interop/legacy.py +0 -0
  130. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_interop/protocols.py +0 -0
  131. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_interop/results.py +0 -0
  132. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_interop/utils.py +0 -0
  133. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_utils/__init__.py +0 -0
  134. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_utils/constants.py +0 -0
  135. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_utils/feature_flags.py +0 -0
  136. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_utils/function_payload_utils.py +0 -0
  137. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_utils/payload_utils.py +0 -0
  138. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_utils/query_helper.py +0 -0
  139. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_utils/runtime_env_utils.py +0 -0
  140. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_utils/scripts/constants.py +0 -0
  141. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +0 -0
  142. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +0 -0
  143. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +0 -0
  144. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +0 -0
  145. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_utils/spec_utils.py +0 -0
  146. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_utils/stage_utils.py +0 -0
  147. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/_utils/types.py +0 -0
  148. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/jobs/decorators.py +0 -0
  149. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/lineage/__init__.py +0 -0
  150. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/lineage/lineage_node.py +0 -0
  151. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/__init__.py +0 -0
  152. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_client/model/batch_inference_specs.py +0 -0
  153. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_client/model/inference_engine_utils.py +0 -0
  154. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_client/model/model_impl.py +0 -0
  155. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_client/model/model_version_impl.py +0 -0
  156. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
  157. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_client/ops/service_ops.py +0 -0
  158. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +0 -0
  159. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +0 -0
  160. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
  161. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_client/sql/model.py +0 -0
  162. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_client/sql/model_version.py +0 -0
  163. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_client/sql/service.py +0 -0
  164. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_client/sql/stage.py +0 -0
  165. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
  166. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
  167. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
  168. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
  169. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
  170. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
  171. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
  172. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
  173. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
  174. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
  175. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_model_composer/model_method/utils.py +0 -0
  176. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
  177. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_env/model_env.py +0 -0
  178. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
  179. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
  180. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
  181. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
  182. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
  183. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/huggingface_pipeline.py +0 -0
  184. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
  185. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
  186. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
  187. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/prophet.py +0 -0
  188. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
  189. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +0 -0
  190. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +0 -0
  191. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
  192. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
  193. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
  194. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
  195. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
  196. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +0 -0
  197. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +0 -0
  198. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +0 -0
  199. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +0 -0
  200. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
  201. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +0 -0
  202. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -0
  203. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
  204. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
  205. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
  206. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_packager.py +0 -0
  207. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
  208. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
  209. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
  210. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
  211. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_signatures/core.py +0 -0
  212. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
  213. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
  214. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
  215. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
  216. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
  217. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
  218. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/_signatures/utils.py +0 -0
  219. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/custom_model.py +0 -0
  220. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/event_handler.py +0 -0
  221. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/inference_engine.py +0 -0
  222. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/model_signature.py +0 -0
  223. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
  224. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/openai_signatures.py +0 -0
  225. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/target_platform.py +0 -0
  226. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/task.py +0 -0
  227. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/type_hints.py +0 -0
  228. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/model/volatility.py +0 -0
  229. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
  230. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
  231. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
  232. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
  233. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
  234. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
  235. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
  236. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
  237. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
  238. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
  239. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
  240. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
  241. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
  242. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
  243. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
  244. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
  245. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
  246. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
  247. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/cluster/birch.py +0 -0
  248. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
  249. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
  250. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
  251. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/cluster/k_means.py +0 -0
  252. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
  253. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
  254. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/cluster/optics.py +0 -0
  255. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
  256. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
  257. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
  258. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
  259. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
  260. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
  261. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
  262. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
  263. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
  264. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
  265. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
  266. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
  267. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
  268. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/covariance/oas.py +0 -0
  269. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
  270. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
  271. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
  272. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
  273. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
  274. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
  275. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
  276. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
  277. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
  278. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/decomposition/pca.py +0 -0
  279. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
  280. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
  281. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
  282. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
  283. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
  284. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
  285. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
  286. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
  287. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
  288. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
  289. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
  290. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
  291. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
  292. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
  293. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
  294. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
  295. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
  296. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
  297. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
  298. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
  299. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
  300. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
  301. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
  302. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
  303. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
  304. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
  305. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
  306. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
  307. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
  308. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
  309. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
  310. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
  311. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/framework/base.py +0 -0
  312. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
  313. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
  314. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
  315. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
  316. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
  317. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
  318. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
  319. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
  320. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
  321. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
  322. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
  323. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
  324. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
  325. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
  326. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
  327. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
  328. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
  329. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
  330. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
  331. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
  332. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
  333. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
  334. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
  335. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
  336. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
  337. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
  338. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/lars.py +0 -0
  339. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
  340. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
  341. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
  342. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
  343. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
  344. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
  345. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
  346. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
  347. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
  348. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
  349. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
  350. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
  351. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
  352. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
  353. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
  354. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
  355. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
  356. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
  357. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
  358. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
  359. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
  360. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
  361. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
  362. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
  363. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
  364. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
  365. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
  366. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
  367. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
  368. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/manifold/isomap.py +0 -0
  369. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/manifold/mds.py +0 -0
  370. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
  371. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/manifold/tsne.py +0 -0
  372. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
  373. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
  374. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
  375. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
  376. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
  377. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
  378. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
  379. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
  380. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
  381. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
  382. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
  383. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
  384. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
  385. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
  386. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
  387. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
  388. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
  389. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
  390. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
  391. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
  392. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
  393. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
  394. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
  395. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
  396. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
  397. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
  398. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
  399. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
  400. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
  401. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
  402. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
  403. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
  404. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
  405. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
  406. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
  407. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
  408. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
  409. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
  410. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
  411. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
  412. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
  413. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
  414. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
  415. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
  416. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
  417. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
  418. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
  419. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
  420. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
  421. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
  422. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
  423. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
  424. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
  425. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
  426. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
  427. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
  428. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
  429. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
  430. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
  431. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
  432. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
  433. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
  434. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/svm/svc.py +0 -0
  435. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/svm/svr.py +0 -0
  436. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
  437. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
  438. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
  439. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
  440. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
  441. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
  442. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
  443. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
  444. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
  445. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
  446. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
  447. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
  448. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
  449. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
  450. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
  451. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/monitoring/model_monitor.py +0 -0
  452. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/monitoring/shap.py +0 -0
  453. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/registry/__init__.py +0 -0
  454. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/registry/_manager/model_manager.py +0 -0
  455. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/registry/_manager/model_parameter_reconciler.py +0 -0
  456. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/registry/registry.py +0 -0
  457. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/utils/authentication.py +0 -0
  458. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/utils/connection_params.py +0 -0
  459. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/utils/html_utils.py +0 -0
  460. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/utils/sparse.py +0 -0
  461. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake/ml/utils/sql_client.py +0 -0
  462. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake_ml_python.egg-info/SOURCES.txt +0 -0
  463. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
  464. {snowflake_ml_python-1.18.0 → snowflake_ml_python-1.19.0}/snowflake_ml_python.egg-info/top_level.txt +0 -0
@@ -1,5 +1,21 @@
1
1
  # Release History
2
2
 
3
+ ## 1.19.0
4
+
5
+ ### Bug Fixes
6
+
7
+ * Experiment Tracking (PrPr): No longer throw an exception in `list_artifacts` when run does not have artifacts.
8
+ * Registry: Fix `get_version_by_alias`: now requires an exact match of snowflake identifier.
9
+
10
+ ### Behavior Changes
11
+
12
+ ### New Features
13
+
14
+ * Online feature serving in Feature Store is in public preview.
15
+ * Experiment Tracking (`snowflake.ml.experiment`) is in public preview.
16
+
17
+ ### Deprecations
18
+
3
19
  ## 1.18.0
4
20
 
5
21
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snowflake-ml-python
3
- Version: 1.18.0
3
+ Version: 1.19.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:
@@ -253,7 +253,7 @@ Requires-Dist: s3fs<2026,>=2024.6.1
253
253
  Requires-Dist: scikit-learn<1.8
254
254
  Requires-Dist: scipy<2,>=1.9
255
255
  Requires-Dist: shap<1,>=0.46.0
256
- Requires-Dist: snowflake-connector-python[pandas]<4,>=3.17.0
256
+ Requires-Dist: snowflake-connector-python[pandas]<4,>=3.17.3
257
257
  Requires-Dist: snowflake-snowpark-python!=1.26.0,<2,>=1.17.0
258
258
  Requires-Dist: snowflake.core<2,>=1.0.2
259
259
  Requires-Dist: sqlparse<1,>=0.4
@@ -285,6 +285,14 @@ Requires-Dist: tensorflow<3,>=2.17.0; extra == "keras"
285
285
  Requires-Dist: torch<3,>=2.0.1; extra == "keras"
286
286
  Provides-Extra: lightgbm
287
287
  Requires-Dist: lightgbm<5,>=4.1.0; extra == "lightgbm"
288
+ Provides-Extra: llm
289
+ Requires-Dist: mlflow<3,>=2.16.0; extra == "llm"
290
+ Requires-Dist: sentence-transformers<4,>=2.7.0; extra == "llm"
291
+ Requires-Dist: sentencepiece<0.2.0,>=0.1.95; extra == "llm"
292
+ Requires-Dist: tokenizers<1,>=0.15.1; extra == "llm"
293
+ Requires-Dist: torch<3,>=2.0.1; extra == "llm"
294
+ Requires-Dist: torchdata<1,>=0.4; extra == "llm"
295
+ Requires-Dist: transformers!=4.51.3,<5,>=4.39.3; extra == "llm"
288
296
  Provides-Extra: mlflow
289
297
  Requires-Dist: mlflow<3,>=2.16.0; extra == "mlflow"
290
298
  Provides-Extra: prophet
@@ -299,9 +307,7 @@ Requires-Dist: torchdata<1,>=0.4; extra == "torch"
299
307
  Provides-Extra: transformers
300
308
  Requires-Dist: sentence-transformers<4,>=2.7.0; extra == "transformers"
301
309
  Requires-Dist: sentencepiece<0.2.0,>=0.1.95; extra == "transformers"
302
- Requires-Dist: tokenizers<1,>=0.15.1; extra == "transformers"
303
310
  Requires-Dist: torch<3,>=2.0.1; extra == "transformers"
304
- Requires-Dist: transformers!=4.51.3,<5,>=4.39.3; extra == "transformers"
305
311
  Dynamic: license-file
306
312
 
307
313
  # Snowflake ML Python
@@ -409,6 +415,22 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
409
415
 
410
416
  # Release History
411
417
 
418
+ ## 1.19.0
419
+
420
+ ### Bug Fixes
421
+
422
+ * Experiment Tracking (PrPr): No longer throw an exception in `list_artifacts` when run does not have artifacts.
423
+ * Registry: Fix `get_version_by_alias`: now requires an exact match of snowflake identifier.
424
+
425
+ ### Behavior Changes
426
+
427
+ ### New Features
428
+
429
+ * Online feature serving in Feature Store is in public preview.
430
+ * Experiment Tracking (`snowflake.ml.experiment`) is in public preview.
431
+
432
+ ### Deprecations
433
+
412
434
  ## 1.18.0
413
435
 
414
436
  ### Bug Fixes
@@ -8,7 +8,7 @@ description = "The machine learning client library that is used for interacting
8
8
  classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: Other Environment", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Database", "Topic :: Software Development", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Scientific/Engineering :: Information Analysis",]
9
9
  requires-python = ">=3.9, <3.13"
10
10
  dynamic = [ "version", "readme",]
11
- dependencies = [ "anyio>=3.5.0,<5", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<3", "packaging>=20.9,<25", "pandas>=2.1.4,<3", "platformdirs<5", "pyarrow<19.0.0", "pydantic>=2.8.2, <3", "pyjwt>=2.0.0, <3", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "s3fs>=2024.6.1,<2026", "scikit-learn<1.8", "scipy>=1.9,<2", "shap>=0.46.0,<1", "snowflake-connector-python[pandas]>=3.17.0,<4", "snowflake-snowpark-python>=1.17.0,<2,!=1.26.0", "snowflake.core>=1.0.2,<2", "sqlparse>=0.4,<1", "tqdm<5", "typing-extensions>=4.1.0,<5", "xgboost<4",]
11
+ dependencies = [ "anyio>=3.5.0,<5", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<3", "packaging>=20.9,<25", "pandas>=2.1.4,<3", "platformdirs<5", "pyarrow<19.0.0", "pydantic>=2.8.2, <3", "pyjwt>=2.0.0, <3", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "s3fs>=2024.6.1,<2026", "scikit-learn<1.8", "scipy>=1.9,<2", "shap>=0.46.0,<1", "snowflake-connector-python[pandas]>=3.17.3,<4", "snowflake-snowpark-python>=1.17.0,<2,!=1.26.0", "snowflake.core>=1.0.2,<2", "sqlparse>=0.4,<1", "tqdm<5", "typing-extensions>=4.1.0,<5", "xgboost<4",]
12
12
  [[project.authors]]
13
13
  name = "Snowflake, Inc"
14
14
  email = "support@snowflake.com"
@@ -29,12 +29,13 @@ altair = [ "altair>=5,<6",]
29
29
  catboost = [ "catboost>=1.2.0, <2",]
30
30
  keras = [ "keras>=2.0.0,<4", "tensorflow>=2.17.0,<3", "torch>=2.0.1,<3",]
31
31
  lightgbm = [ "lightgbm>=4.1.0, <5",]
32
+ llm = [ "mlflow>=2.16.0, <3", "sentence-transformers>=2.7.0,<4", "sentencepiece>=0.1.95,<0.2.0", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "torchdata>=0.4,<1", "transformers>=4.39.3,<5,!=4.51.3",]
32
33
  mlflow = [ "mlflow>=2.16.0, <3",]
33
34
  prophet = [ "prophet>=1.1.0, <2",]
34
35
  streamlit = [ "streamlit>=1.30.0,<2",]
35
36
  tensorflow = [ "tensorflow>=2.17.0,<3",]
36
37
  torch = [ "torch>=2.0.1,<3", "torchdata>=0.4,<1",]
37
- transformers = [ "sentence-transformers>=2.7.0,<4", "sentencepiece>=0.1.95,<0.2.0", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "transformers>=4.39.3,<5,!=4.51.3",]
38
+ transformers = [ "sentence-transformers>=2.7.0,<4", "sentencepiece>=0.1.95,<0.2.0", "torch>=2.0.1,<3",]
38
39
 
39
40
  [tool.setuptools.package-data]
40
41
  "*" = [ "*",]
@@ -128,13 +128,7 @@ class ExperimentTrackingSQLClient(_base._BaseSQLClient):
128
128
  run_name: sql_identifier.SqlIdentifier,
129
129
  artifact_path: str,
130
130
  ) -> list[artifact.ArtifactInfo]:
131
- results = (
132
- query_result_checker.SqlResultValidator(
133
- self._session, f"LIST {self._build_snow_uri(experiment_name, run_name, artifact_path)}"
134
- )
135
- .has_dimensions(expected_cols=4)
136
- .validate()
137
- )
131
+ results = self._session.sql(f"LIST {self._build_snow_uri(experiment_name, run_name, artifact_path)}").collect()
138
132
  return [
139
133
  artifact.ArtifactInfo(
140
134
  name=str(result.name).removeprefix(f"/versions/{run_name}/"),
@@ -1,13 +1,13 @@
1
1
  import functools
2
2
  import json
3
3
  import sys
4
- from typing import Any, Callable, Concatenate, Optional, ParamSpec, TypeVar, Union
4
+ from typing import Any, Optional, Union
5
5
  from urllib.parse import quote
6
6
 
7
7
  from snowflake import snowpark
8
8
  from snowflake.ml import model as ml_model, registry
9
9
  from snowflake.ml._internal.human_readable_id import hrid_generator
10
- from snowflake.ml._internal.utils import mixins, sql_identifier
10
+ from snowflake.ml._internal.utils import connection_params, sql_identifier
11
11
  from snowflake.ml.experiment import (
12
12
  _entities as entities,
13
13
  _experiment_info as experiment_info,
@@ -21,34 +21,12 @@ from snowflake.ml.utils import sql_client as sql_client_utils
21
21
 
22
22
  DEFAULT_EXPERIMENT_NAME = sql_identifier.SqlIdentifier("DEFAULT")
23
23
 
24
- P = ParamSpec("P")
25
- T = TypeVar("T")
26
24
 
27
-
28
- def _restore_session(
29
- func: Callable[Concatenate["ExperimentTracking", P], T],
30
- ) -> Callable[Concatenate["ExperimentTracking", P], T]:
31
- @functools.wraps(func)
32
- def wrapper(self: "ExperimentTracking", /, *args: P.args, **kwargs: P.kwargs) -> T:
33
- if self._session is None:
34
- if self._session_state is None:
35
- raise RuntimeError(
36
- f"Session is not set before calling {func.__name__}, and there is no session state to restore from"
37
- )
38
- self._set_session(self._session_state)
39
- if self._session is None:
40
- raise RuntimeError(f"Failed to restore session before calling {func.__name__}")
41
- return func(self, *args, **kwargs)
42
-
43
- return wrapper
44
-
45
-
46
- class ExperimentTracking(mixins.SerializableSessionMixin):
25
+ class ExperimentTracking:
47
26
  """
48
27
  Class to manage experiments in Snowflake.
49
28
  """
50
29
 
51
- @snowpark._internal.utils.private_preview(version="1.9.1")
52
30
  def __init__(
53
31
  self,
54
32
  session: snowpark.Session,
@@ -93,10 +71,7 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
93
71
  database_name=self._database_name,
94
72
  schema_name=self._schema_name,
95
73
  )
96
- self._session: Optional[snowpark.Session] = session
97
- # Used to store information about the session if the session could not be restored during unpickling
98
- # _session_state is None if and only if _session is not None
99
- self._session_state: Optional[mixins._SessionState] = None
74
+ self._session = session
100
75
 
101
76
  # The experiment in context
102
77
  self._experiment: Optional[entities.Experiment] = None
@@ -104,35 +79,40 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
104
79
  self._run: Optional[entities.Run] = None
105
80
 
106
81
  def __getstate__(self) -> dict[str, Any]:
107
- state = super().__getstate__()
82
+ parent_state = (
83
+ super().__getstate__() # type: ignore[misc] # object.__getstate__ appears in 3.11
84
+ if hasattr(super(), "__getstate__")
85
+ else self.__dict__
86
+ )
87
+ state = dict(parent_state) # Create a copy so we can safely modify the state
88
+
108
89
  # Remove unpicklable attributes
90
+ state["_session"] = None
109
91
  state["_sql_client"] = None
110
92
  state["_registry"] = None
111
93
  return state
112
94
 
113
- def _set_session(self, session_state: mixins._SessionState) -> None:
114
- try:
115
- super()._set_session(session_state)
116
- assert self._session is not None
117
- except (snowpark.exceptions.SnowparkSessionException, AssertionError):
118
- # If session was not set, store the session state
119
- self._session = None
120
- self._session_state = session_state
95
+ def __setstate__(self, state: dict[str, Any]) -> None:
96
+ if hasattr(super(), "__setstate__"):
97
+ super().__setstate__(state) # type: ignore[misc]
121
98
  else:
122
- # If session was set, clear the session state, and reinitialize the SQL client and registry
123
- self._session_state = None
124
- self._sql_client = sql_client.ExperimentTrackingSQLClient(
125
- session=self._session,
126
- database_name=self._database_name,
127
- schema_name=self._schema_name,
128
- )
129
- self._registry = registry.Registry(
130
- session=self._session,
131
- database_name=self._database_name,
132
- schema_name=self._schema_name,
133
- )
99
+ self.__dict__.update(state)
100
+
101
+ # Restore unpicklable attributes
102
+ options: dict[str, Any] = connection_params.SnowflakeLoginOptions()
103
+ options["client_session_keep_alive"] = True # Needed for long-running training jobs
104
+ self._session = snowpark.Session.builder.configs(options).getOrCreate()
105
+ self._sql_client = sql_client.ExperimentTrackingSQLClient(
106
+ session=self._session,
107
+ database_name=self._database_name,
108
+ schema_name=self._schema_name,
109
+ )
110
+ self._registry = registry.Registry(
111
+ session=self._session,
112
+ database_name=self._database_name,
113
+ schema_name=self._schema_name,
114
+ )
134
115
 
135
- @_restore_session
136
116
  def set_experiment(
137
117
  self,
138
118
  experiment_name: str,
@@ -157,7 +137,6 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
157
137
  self._run = None
158
138
  return self._experiment
159
139
 
160
- @_restore_session
161
140
  def delete_experiment(
162
141
  self,
163
142
  experiment_name: str,
@@ -174,10 +153,8 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
174
153
  self._run = None
175
154
 
176
155
  @functools.wraps(registry.Registry.log_model)
177
- @_restore_session
178
156
  def log_model(
179
157
  self,
180
- /, # self needs to be a positional argument to stop mypy from complaining
181
158
  model: Union[type_hints.SupportedModelType, ml_model.ModelVersion],
182
159
  *,
183
160
  model_name: str,
@@ -187,7 +164,6 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
187
164
  with experiment_info.ExperimentInfoPatcher(experiment_info=run._get_experiment_info()):
188
165
  return self._registry.log_model(model, model_name=model_name, **kwargs)
189
166
 
190
- @_restore_session
191
167
  def start_run(
192
168
  self,
193
169
  run_name: Optional[str] = None,
@@ -229,7 +205,6 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
229
205
  self._run = entities.Run(experiment_tracking=self, experiment_name=experiment.name, run_name=run_name)
230
206
  return self._run
231
207
 
232
- @_restore_session
233
208
  def end_run(self, run_name: Optional[str] = None) -> None:
234
209
  """
235
210
  End the current run if no run name is provided. Otherwise, the specified run is ended.
@@ -259,7 +234,6 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
259
234
  self._run = None
260
235
  self._print_urls(experiment_name=experiment_name, run_name=run_name)
261
236
 
262
- @_restore_session
263
237
  def delete_run(
264
238
  self,
265
239
  run_name: str,
@@ -298,7 +272,6 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
298
272
  """
299
273
  self.log_metrics(metrics={key: value}, step=step)
300
274
 
301
- @_restore_session
302
275
  def log_metrics(
303
276
  self,
304
277
  metrics: dict[str, float],
@@ -335,7 +308,6 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
335
308
  """
336
309
  self.log_params({key: value})
337
310
 
338
- @_restore_session
339
311
  def log_params(
340
312
  self,
341
313
  params: dict[str, Any],
@@ -357,7 +329,6 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
357
329
  params=json.dumps([param.to_dict() for param in params_list]),
358
330
  )
359
331
 
360
- @_restore_session
361
332
  def log_artifact(
362
333
  self,
363
334
  local_path: str,
@@ -381,7 +352,6 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
381
352
  file_path=file_path,
382
353
  )
383
354
 
384
- @_restore_session
385
355
  def list_artifacts(
386
356
  self,
387
357
  run_name: str,
@@ -410,7 +380,6 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
410
380
  artifact_path=artifact_path or "",
411
381
  )
412
382
 
413
- @_restore_session
414
383
  def download_artifacts(
415
384
  self,
416
385
  run_name: str,
@@ -452,7 +421,6 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
452
421
  return self._run
453
422
  return self.start_run()
454
423
 
455
- @_restore_session
456
424
  def _generate_run_name(self, experiment: entities.Experiment) -> sql_identifier.SqlIdentifier:
457
425
  generator = hrid_generator.HRID16()
458
426
  existing_runs = self._sql_client.show_runs_in_experiment(experiment_name=experiment.name)
@@ -474,8 +474,8 @@ class FeatureStore:
474
474
  feature_view: FeatureView instance to materialize.
475
475
  version: version of the registered FeatureView.
476
476
  NOTE: Version only accepts letters, numbers and underscore. Also version will be capitalized.
477
- block: Specify whether the FeatureView backend materialization should be blocking or not. If blocking then
478
- the API will wait until the initial FeatureView data is generated. Default to true.
477
+ block: Deprecated. To make the initial refresh asynchronous, set the `initialize`
478
+ argument on the `FeatureView` to `"ON_SCHEDULE"`. Default is true.
479
479
  overwrite: Overwrite the existing FeatureView with same version. This is the same as dropping the
480
480
  FeatureView first then recreate. NOTE: there will be backfill cost associated if the FeatureView is
481
481
  being continuously maintained.
@@ -521,6 +521,15 @@ class FeatureStore:
521
521
  """
522
522
  version = FeatureViewVersion(version)
523
523
 
524
+ if block is False:
525
+ raise snowml_exceptions.SnowflakeMLException(
526
+ error_code=error_codes.INVALID_ARGUMENT,
527
+ original_exception=ValueError(
528
+ 'block=False is deprecated. Use FeatureView(..., initialize="ON_SCHEDULE") '
529
+ "for async initial refresh."
530
+ ),
531
+ )
532
+
524
533
  if feature_view.status != FeatureViewStatus.DRAFT:
525
534
  try:
526
535
  return self._get_feature_view_if_exists(feature_view.name, str(version))
@@ -2094,26 +2103,48 @@ class FeatureStore:
2094
2103
  def _plan_online_update(
2095
2104
  self, feature_view: FeatureView, online_config: Optional[fv_mod.OnlineConfig]
2096
2105
  ) -> _OnlineUpdateStrategy:
2097
- """Plan online update operations based on current state and target config."""
2106
+ """Plan online update operations based on current state and target config.
2107
+
2108
+ Handles three cases:
2109
+ - enable is None: Preserve current online state, only update if currently online
2110
+ - enable is True: Enable online storage (create if needed, update if exists)
2111
+ - enable is False: Disable online storage (drop if exists)
2112
+
2113
+ Args:
2114
+ feature_view: The FeatureView object to check current online state.
2115
+ online_config: The OnlineConfig with target enable and lag settings.
2116
+
2117
+ Returns:
2118
+ _OnlineUpdateStrategy containing operations and their rollbacks.
2119
+ """
2098
2120
  if online_config is None:
2099
2121
  return self._OnlineUpdateStrategy([], [], None)
2100
2122
 
2101
2123
  current_online = feature_view.online
2102
2124
  target_online = online_config.enable
2103
2125
 
2104
- # Enable online (create table)
2126
+ # Case 1: enable is None - preserve current online state, only update if currently online
2127
+ if target_online is None:
2128
+ if current_online and (online_config.target_lag is not None):
2129
+ # Online is currently enabled and user wants to update lag
2130
+ return self._plan_online_update_existing(feature_view, online_config)
2131
+ else:
2132
+ # No online changes needed (either not online, or lag not specified)
2133
+ return self._OnlineUpdateStrategy([], [], None)
2134
+
2135
+ # Case 2: Enable online (create table)
2105
2136
  if target_online and not current_online:
2106
2137
  return self._plan_online_enable(feature_view, online_config)
2107
2138
 
2108
- # Disable online (drop table)
2139
+ # Case 3: Disable online (drop table)
2109
2140
  elif not target_online and current_online:
2110
2141
  return self._plan_online_disable(feature_view)
2111
2142
 
2112
- # Update existing online table
2143
+ # Case 4: Update existing online table
2113
2144
  elif target_online and current_online:
2114
2145
  return self._plan_online_update_existing(feature_view, online_config)
2115
2146
 
2116
- # No change needed
2147
+ # Case 5: No change needed
2117
2148
  else:
2118
2149
  return self._OnlineUpdateStrategy([], [], online_config)
2119
2150
 
@@ -2621,9 +2652,10 @@ class FeatureStore:
2621
2652
 
2622
2653
  This method supports feature views with different join keys by:
2623
2654
  1. Creating a spine CTE that includes all possible join keys
2624
- 2. Performing ASOF JOINs for each feature view using only its specific join keys when timestamp columns exist
2625
- 3. Performing LEFT JOINs for each feature view when timestamp columns are missing
2626
- 4. Combining results using INNER JOINs on each feature view's specific join keys
2655
+ 2. For each feature view, creating a deduplicated spine subquery with only that FV's join keys
2656
+ 3. Performing ASOF JOINs on the deduplicated spine when timestamp columns exist
2657
+ 4. Performing LEFT JOINs on the deduplicated spine when timestamp columns are missing
2658
+ 5. Combining results by LEFT JOINing each FV CTE back to the original SPINE
2627
2659
 
2628
2660
  Args:
2629
2661
  feature_views: A list of feature views to join.
@@ -2633,9 +2665,6 @@ class FeatureStore:
2633
2665
  include_feature_view_timestamp_col: Whether to include the timestamp column of
2634
2666
  the feature view in the result. Default to false.
2635
2667
 
2636
- Note: This method does NOT work when there are duplicate combinations of join keys and timestamp columns
2637
- in spine.
2638
-
2639
2668
  Returns:
2640
2669
  A SQL query string with CTE structure for joining feature views.
2641
2670
  """
@@ -2659,11 +2688,17 @@ class FeatureStore:
2659
2688
  fv_join_keys = list({k for e in feature_view.entities for k in e.join_keys})
2660
2689
  join_keys_str = ", ".join(fv_join_keys)
2661
2690
 
2662
- # Build the JOIN condition using only this feature view's join keys
2663
- join_conditions = [f'SPINE."{col}" = FEATURE."{col}"' for col in fv_join_keys]
2664
-
2665
2691
  # Use ASOF JOIN if both spine and feature view have timestamp columns, otherwise use LEFT JOIN
2666
2692
  if spine_timestamp_col is not None and feature_timestamp_col is not None:
2693
+ # Build the deduplicated spine columns set (join keys + timestamp)
2694
+ spine_dedup_cols_set = set(fv_join_keys)
2695
+ if spine_timestamp_col not in spine_dedup_cols_set:
2696
+ spine_dedup_cols_set.add(spine_timestamp_col)
2697
+ spine_dedup_cols_str = ", ".join(f'"{col}"' for col in spine_dedup_cols_set)
2698
+
2699
+ # Build the JOIN condition using only this feature view's join keys
2700
+ join_conditions_dedup = [f'SPINE_DEDUP."{col}" = FEATURE."{col}"' for col in fv_join_keys]
2701
+
2667
2702
  if include_feature_view_timestamp_col:
2668
2703
  f_ts_col_alias = identifier.concat_names(
2669
2704
  [feature_view.name, "_", str(feature_view.version), "_", feature_timestamp_col]
@@ -2674,36 +2709,46 @@ class FeatureStore:
2674
2709
  ctes.append(
2675
2710
  f"""{cte_name} AS (
2676
2711
  SELECT
2677
- SPINE.*,
2712
+ SPINE_DEDUP.*,
2678
2713
  {f_ts_col_str}
2679
2714
  FEATURE.* EXCLUDE ({join_keys_str}, {feature_timestamp_col})
2680
- FROM
2681
- SPINE
2715
+ FROM (
2716
+ SELECT DISTINCT {spine_dedup_cols_str}
2717
+ FROM SPINE
2718
+ ) SPINE_DEDUP
2682
2719
  ASOF JOIN (
2683
2720
  SELECT {join_keys_str}, {feature_timestamp_col}, {feature_columns[i]}
2684
2721
  FROM {feature_view.fully_qualified_name()}
2685
2722
  ) FEATURE
2686
- MATCH_CONDITION (SPINE."{spine_timestamp_col}" >= FEATURE."{feature_timestamp_col}")
2687
- ON {" AND ".join(join_conditions)}
2723
+ MATCH_CONDITION (SPINE_DEDUP."{spine_timestamp_col}" >= FEATURE."{feature_timestamp_col}")
2724
+ ON {" AND ".join(join_conditions_dedup)}
2688
2725
  )"""
2689
2726
  )
2690
2727
  else:
2728
+ # Build the deduplicated spine columns list (just join keys, no timestamp)
2729
+ spine_dedup_cols_str = ", ".join(f'"{col}"' for col in fv_join_keys)
2730
+
2731
+ # Build the JOIN condition using only this feature view's join keys
2732
+ join_conditions_dedup = [f'SPINE_DEDUP."{col}" = FEATURE."{col}"' for col in fv_join_keys]
2733
+
2691
2734
  ctes.append(
2692
2735
  f"""{cte_name} AS (
2693
2736
  SELECT
2694
- SPINE.*,
2737
+ SPINE_DEDUP.*,
2695
2738
  FEATURE.* EXCLUDE ({join_keys_str})
2696
- FROM
2697
- SPINE
2739
+ FROM (
2740
+ SELECT DISTINCT {spine_dedup_cols_str}
2741
+ FROM SPINE
2742
+ ) SPINE_DEDUP
2698
2743
  LEFT JOIN (
2699
2744
  SELECT {join_keys_str}, {feature_columns[i]}
2700
2745
  FROM {feature_view.fully_qualified_name()}
2701
2746
  ) FEATURE
2702
- ON {" AND ".join(join_conditions)}
2747
+ ON {" AND ".join(join_conditions_dedup)}
2703
2748
  )"""
2704
2749
  )
2705
2750
 
2706
- # Build final SELECT with individual joins to each FV CTE
2751
+ # Build final SELECT with LEFT joins to each FV CTE
2707
2752
  select_columns = []
2708
2753
  join_clauses = []
2709
2754
 
@@ -2711,19 +2756,29 @@ class FeatureStore:
2711
2756
  feature_view = feature_views[i]
2712
2757
  fv_join_keys = list({k for e in feature_view.entities for k in e.join_keys})
2713
2758
  join_conditions = [f'SPINE."{col}" = {cte_name}."{col}"' for col in fv_join_keys]
2714
- if spine_timestamp_col is not None:
2759
+ # Only include spine timestamp in join condition if both spine and FV have timestamps
2760
+ if spine_timestamp_col is not None and feature_view.timestamp_col is not None:
2715
2761
  join_conditions.append(f'SPINE."{spine_timestamp_col}" = {cte_name}."{spine_timestamp_col}"')
2762
+
2716
2763
  if include_feature_view_timestamp_col and feature_view.timestamp_col is not None:
2717
2764
  f_ts_col_alias = identifier.concat_names(
2718
2765
  [feature_view.name, "_", str(feature_view.version), "_", feature_view.timestamp_col]
2719
2766
  )
2720
2767
  f_ts_col_str = f"{cte_name}.{f_ts_col_alias} AS {f_ts_col_alias}"
2721
2768
  select_columns.append(f_ts_col_str)
2722
- select_columns.append(feature_columns[i])
2769
+
2770
+ # Select features from the CTE
2771
+ # feature_columns[i] is already a comma-separated string of column names
2772
+ feature_cols_from_cte = []
2773
+ for col in feature_columns[i].split(", "):
2774
+ col_clean = col.strip()
2775
+ feature_cols_from_cte.append(f"{cte_name}.{col_clean}")
2776
+ select_columns.extend(feature_cols_from_cte)
2777
+
2723
2778
  # Create join condition using only this feature view's join keys
2724
2779
  join_clauses.append(
2725
2780
  f"""
2726
- INNER JOIN {cte_name}
2781
+ LEFT JOIN {cte_name}
2727
2782
  ON {" AND ".join(join_conditions)}"""
2728
2783
  )
2729
2784
 
@@ -3388,7 +3443,7 @@ FROM SPINE{' '.join(join_clauses)}
3388
3443
  online_table_name = FeatureView._get_online_table_name(feature_view_name)
3389
3444
 
3390
3445
  fully_qualified_online_name = self._get_fully_qualified_name(online_table_name)
3391
- source_table_name = feature_view_name
3446
+ source_table_name = self._get_fully_qualified_name(feature_view_name)
3392
3447
 
3393
3448
  # Extract join keys for PRIMARY KEY (preserve order and ensure unique)
3394
3449
  ordered_join_keys: list[str] = []
@@ -1,7 +1,7 @@
1
+ """Feature view module for Snowflake ML Feature Store."""
1
2
  from __future__ import annotations
2
3
 
3
4
  import json
4
- import logging
5
5
  import re
6
6
  import warnings
7
7
  from collections import OrderedDict
@@ -52,7 +52,7 @@ _RESULT_SCAN_QUERY_PATTERN = re.compile(
52
52
  class OnlineConfig:
53
53
  """Configuration for online feature storage."""
54
54
 
55
- enable: bool = False
55
+ enable: Optional[bool] = None
56
56
  target_lag: Optional[str] = None
57
57
 
58
58
  def __post_init__(self) -> None:
@@ -248,6 +248,7 @@ class FeatureView(lineage_node.LineageNode):
248
248
  - If `timestamp_col` is provided, it is added to the default clustering keys.
249
249
  online_config: Optional configuration for online storage. If provided with enable=True,
250
250
  online storage will be enabled. Defaults to None (no online storage).
251
+ NOTE: this feature is currently in Public Preview.
251
252
  _kwargs: reserved kwargs for system generated args. NOTE: DO NOT USE.
252
253
 
253
254
  Example::
@@ -289,8 +290,6 @@ class FeatureView(lineage_node.LineageNode):
289
290
 
290
291
  # noqa: DAR401
291
292
  """
292
- if online_config is not None:
293
- logging.warning("'online_config' is in private preview since 1.12.0. Do not use it in production.")
294
293
 
295
294
  self._name: SqlIdentifier = SqlIdentifier(name)
296
295
  self._entities: list[Entity] = entities
@@ -533,8 +532,15 @@ class FeatureView(lineage_node.LineageNode):
533
532
  return self._feature_desc
534
533
 
535
534
  @property
536
- def online(self) -> bool:
537
- return self._online_config.enable if self._online_config else False
535
+ def online(self) -> bool: # noqa: DAR101
536
+ """Check if online storage is enabled for this feature view.
537
+
538
+ Returns:
539
+ True if online storage is enabled, False otherwise.
540
+ """
541
+ if self._online_config and self._online_config.enable is True:
542
+ return True
543
+ return False
538
544
 
539
545
  @property
540
546
  def online_config(self) -> Optional[OnlineConfig]:
@@ -1,5 +1,6 @@
1
1
  import inspect
2
2
  import logging
3
+ import re
3
4
  import time
4
5
  from dataclasses import dataclass
5
6
  from typing import Any, Optional, Union, cast
@@ -27,6 +28,8 @@ _PRESIGNED_URL_LIFETIME_SEC = 14400
27
28
  # The threshold of when the presigned url should get refreshed before its expiration.
28
29
  _PRESIGNED_URL_HEADROOM_SEC = 3600
29
30
 
31
+ # Regex pattern to match cloud storage prefixes (s3://, gcs://, azure://) and bucket/container name at start of string
32
+ _CLOUD_PATH_PREFIX_PATTERN = re.compile(r"^(s3|gcs|azure)://[^/]+/", re.IGNORECASE)
30
33
 
31
34
  _PROJECT = "FileSet"
32
35
 
@@ -355,8 +358,16 @@ class SFStageFileSystem(fsspec.AbstractFileSystem):
355
358
 
356
359
  Returns:
357
360
  A string of the relative stage path.
361
+
362
+ Raises:
363
+ ValueError: If the stage path format is invalid.
358
364
  """
359
- return stage_path[len(self._stage) + 1 :]
365
+ if stage_path.lower().startswith(self._stage.lower()):
366
+ return stage_path[len(self._stage) + 1 :]
367
+ elif match := _CLOUD_PATH_PREFIX_PATTERN.match(stage_path):
368
+ return stage_path[match.end() :]
369
+
370
+ raise ValueError(f"Invalid stage path: {stage_path}")
360
371
 
361
372
  def _add_file_info_helper(
362
373
  self,