snowflake-ml-python 1.22.0__tar.gz → 1.24.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 (480) hide show
  1. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/CHANGELOG.md +104 -0
  2. {snowflake_ml_python-1.22.0/snowflake_ml_python.egg-info → snowflake_ml_python-1.24.0}/PKG-INFO +105 -1
  3. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/platform_capabilities.py +0 -4
  4. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/__init__.py +2 -0
  5. snowflake_ml_python-1.24.0/snowflake/ml/feature_store/aggregation.py +367 -0
  6. snowflake_ml_python-1.24.0/snowflake/ml/feature_store/feature.py +366 -0
  7. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/feature_store.py +234 -20
  8. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/feature_view.py +189 -4
  9. snowflake_ml_python-1.24.0/snowflake/ml/feature_store/metadata_manager.py +425 -0
  10. snowflake_ml_python-1.24.0/snowflake/ml/feature_store/tile_sql_generator.py +1079 -0
  11. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/__init__.py +2 -0
  12. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/constants.py +1 -0
  13. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/payload_utils.py +38 -18
  14. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/query_helper.py +8 -1
  15. snowflake_ml_python-1.24.0/snowflake/ml/jobs/_utils/runtime_env_utils.py +117 -0
  16. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/stage_utils.py +2 -2
  17. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/types.py +22 -2
  18. snowflake_ml_python-1.24.0/snowflake/ml/jobs/job_definition.py +232 -0
  19. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/manager.py +16 -177
  20. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/__init__.py +4 -0
  21. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/model/batch_inference_specs.py +38 -2
  22. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/model/model_version_impl.py +120 -89
  23. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/ops/model_ops.py +4 -26
  24. snowflake_ml_python-1.24.0/snowflake/ml/model/_client/ops/param_utils.py +124 -0
  25. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/ops/service_ops.py +63 -23
  26. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +12 -5
  27. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +1 -0
  28. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/sql/service.py +25 -54
  29. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +21 -3
  30. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +21 -3
  31. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +21 -3
  32. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +3 -1
  33. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/huggingface.py +74 -10
  34. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +121 -29
  35. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/utils.py +130 -0
  36. snowflake_ml_python-1.24.0/snowflake/ml/model/openai_signatures.py +154 -0
  37. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/registry/_manager/model_parameter_reconciler.py +1 -1
  38. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/version.py +1 -1
  39. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0/snowflake_ml_python.egg-info}/PKG-INFO +105 -1
  40. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake_ml_python.egg-info/SOURCES.txt +7 -1
  41. snowflake_ml_python-1.22.0/snowflake/ml/jobs/_utils/__init__.py +0 -0
  42. snowflake_ml_python-1.22.0/snowflake/ml/model/openai_signatures.py +0 -57
  43. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/LICENSE.txt +0 -0
  44. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/README.md +0 -0
  45. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/pyproject.toml +0 -0
  46. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/setup.cfg +0 -0
  47. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/__init__.py +0 -0
  48. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_classify_text.py +0 -0
  49. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_complete.py +0 -0
  50. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_embed_text_1024.py +0 -0
  51. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_embed_text_768.py +0 -0
  52. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_extract_answer.py +0 -0
  53. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_finetune.py +0 -0
  54. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_sentiment.py +0 -0
  55. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_sse_client.py +0 -0
  56. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_summarize.py +0 -0
  57. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_translate.py +0 -0
  58. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_util.py +0 -0
  59. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/env.py +0 -0
  60. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/env_utils.py +0 -0
  61. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
  62. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
  63. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
  64. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
  65. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
  66. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
  67. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
  68. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
  69. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
  70. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/file_utils.py +0 -0
  71. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
  72. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
  73. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
  74. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
  75. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/init_utils.py +0 -0
  76. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
  77. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
  78. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
  79. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/telemetry.py +0 -0
  80. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/type_utils.py +0 -0
  81. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/connection_params.py +0 -0
  82. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
  83. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
  84. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/identifier.py +0 -0
  85. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
  86. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
  87. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/mixins.py +0 -0
  88. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
  89. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
  90. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
  91. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/result.py +0 -0
  92. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/service_logger.py +0 -0
  93. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
  94. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
  95. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
  96. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
  97. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
  98. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/url.py +0 -0
  99. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/data/__init__.py +0 -0
  100. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
  101. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/data/data_connector.py +0 -0
  102. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/data/data_ingestor.py +0 -0
  103. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/data/data_source.py +0 -0
  104. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/data/ingestor_utils.py +0 -0
  105. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/data/torch_utils.py +0 -0
  106. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/dataset/__init__.py +0 -0
  107. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/dataset/dataset.py +0 -0
  108. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
  109. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
  110. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
  111. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/__init__.py +0 -0
  112. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/_client/artifact.py +0 -0
  113. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +0 -0
  114. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/_entities/__init__.py +0 -0
  115. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/_entities/experiment.py +0 -0
  116. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/_entities/run.py +0 -0
  117. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
  118. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/_experiment_info.py +0 -0
  119. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/callback/keras.py +0 -0
  120. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/callback/lightgbm.py +0 -0
  121. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/callback/xgboost.py +0 -0
  122. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/experiment_tracking.py +0 -0
  123. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/utils.py +0 -0
  124. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/access_manager.py +0 -0
  125. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/entity.py +0 -0
  126. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
  127. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
  128. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
  129. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
  130. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
  131. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
  132. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
  133. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
  134. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
  135. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
  136. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
  137. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
  138. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
  139. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
  140. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
  141. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
  142. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
  143. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
  144. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
  145. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
  146. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
  147. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
  148. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
  149. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/fileset/fileset.py +0 -0
  150. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/fileset/sfcfs.py +0 -0
  151. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/fileset/snowfs.py +0 -0
  152. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/fileset/stage_fs.py +0 -0
  153. {snowflake_ml_python-1.22.0/snowflake/ml/experiment/callback → snowflake_ml_python-1.24.0/snowflake/ml/jobs/_interop}/__init__.py +0 -0
  154. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_interop/data_utils.py +0 -0
  155. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_interop/dto_schema.py +0 -0
  156. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_interop/exception_utils.py +0 -0
  157. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_interop/legacy.py +0 -0
  158. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_interop/protocols.py +0 -0
  159. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_interop/results.py +0 -0
  160. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_interop/utils.py +0 -0
  161. {snowflake_ml_python-1.22.0/snowflake/ml/jobs/_interop → snowflake_ml_python-1.24.0/snowflake/ml/jobs/_utils}/__init__.py +0 -0
  162. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/feature_flags.py +0 -0
  163. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/function_payload_utils.py +0 -0
  164. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/scripts/constants.py +0 -0
  165. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +0 -0
  166. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +0 -0
  167. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +0 -0
  168. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/scripts/start_mlruntime.sh +0 -0
  169. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/scripts/startup.sh +0 -0
  170. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +0 -0
  171. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/spec_utils.py +0 -0
  172. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/decorators.py +0 -0
  173. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/job.py +0 -0
  174. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/lineage/__init__.py +0 -0
  175. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/lineage/lineage_node.py +0 -0
  176. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/model/inference_engine_utils.py +0 -0
  177. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/model/model_impl.py +0 -0
  178. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/ops/deployment_step.py +0 -0
  179. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
  180. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/service/import_model_spec_schema.py +0 -0
  181. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
  182. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/sql/model.py +0 -0
  183. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/sql/model_version.py +0 -0
  184. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/sql/stage.py +0 -0
  185. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
  186. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
  187. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
  188. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
  189. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
  190. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
  191. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_method/utils.py +0 -0
  192. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
  193. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_env/model_env.py +0 -0
  194. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
  195. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
  196. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
  197. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
  198. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
  199. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
  200. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
  201. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
  202. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/prophet.py +0 -0
  203. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
  204. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +0 -0
  205. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
  206. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
  207. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
  208. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
  209. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
  210. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +0 -0
  211. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +0 -0
  212. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +0 -0
  213. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +0 -0
  214. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
  215. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +0 -0
  216. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -0
  217. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
  218. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
  219. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
  220. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_packager.py +0 -0
  221. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +0 -0
  222. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
  223. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
  224. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
  225. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
  226. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/core.py +0 -0
  227. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
  228. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
  229. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
  230. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
  231. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
  232. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
  233. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/code_path.py +0 -0
  234. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/compute_pool.py +0 -0
  235. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/custom_model.py +0 -0
  236. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/event_handler.py +0 -0
  237. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/inference_engine.py +0 -0
  238. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/model_signature.py +0 -0
  239. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/models/huggingface.py +0 -0
  240. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
  241. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/target_platform.py +0 -0
  242. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/task.py +0 -0
  243. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/type_hints.py +0 -0
  244. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/volatility.py +0 -0
  245. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
  246. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
  247. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
  248. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
  249. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
  250. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
  251. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
  252. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
  253. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
  254. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
  255. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
  256. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
  257. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
  258. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
  259. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
  260. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
  261. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
  262. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
  263. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/birch.py +0 -0
  264. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
  265. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
  266. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
  267. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/k_means.py +0 -0
  268. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
  269. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
  270. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/optics.py +0 -0
  271. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
  272. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
  273. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
  274. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
  275. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
  276. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
  277. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
  278. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
  279. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
  280. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
  281. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
  282. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
  283. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
  284. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/oas.py +0 -0
  285. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
  286. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
  287. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
  288. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
  289. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
  290. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
  291. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
  292. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
  293. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
  294. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/pca.py +0 -0
  295. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
  296. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
  297. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
  298. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
  299. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
  300. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
  301. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
  302. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
  303. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
  304. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
  305. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
  306. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
  307. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
  308. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
  309. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
  310. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
  311. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
  312. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
  313. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
  314. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
  315. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
  316. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
  317. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
  318. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
  319. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
  320. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
  321. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
  322. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
  323. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
  324. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
  325. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
  326. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
  327. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/framework/base.py +0 -0
  328. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
  329. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
  330. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
  331. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
  332. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
  333. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
  334. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
  335. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
  336. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
  337. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
  338. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
  339. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
  340. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
  341. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
  342. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
  343. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
  344. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
  345. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
  346. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
  347. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
  348. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
  349. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
  350. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
  351. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
  352. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
  353. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
  354. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/lars.py +0 -0
  355. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
  356. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
  357. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
  358. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
  359. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
  360. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
  361. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
  362. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
  363. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
  364. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
  365. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
  366. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
  367. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
  368. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
  369. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
  370. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
  371. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
  372. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
  373. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
  374. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
  375. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
  376. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
  377. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
  378. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
  379. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
  380. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
  381. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
  382. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
  383. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
  384. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/manifold/isomap.py +0 -0
  385. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/manifold/mds.py +0 -0
  386. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
  387. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/manifold/tsne.py +0 -0
  388. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
  389. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
  390. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
  391. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
  392. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
  393. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
  394. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
  395. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
  396. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
  397. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
  398. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
  399. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
  400. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
  401. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
  402. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
  403. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
  404. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
  405. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
  406. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
  407. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
  408. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
  409. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
  410. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
  411. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
  412. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
  413. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
  414. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
  415. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
  416. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
  417. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
  418. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
  419. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
  420. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
  421. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
  422. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
  423. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
  424. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
  425. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
  426. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
  427. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
  428. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
  429. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
  430. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
  431. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
  432. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
  433. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
  434. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
  435. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
  436. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
  437. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
  438. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
  439. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
  440. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
  441. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
  442. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
  443. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
  444. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
  445. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
  446. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
  447. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
  448. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
  449. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
  450. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/svm/svc.py +0 -0
  451. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/svm/svr.py +0 -0
  452. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
  453. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
  454. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
  455. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
  456. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
  457. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
  458. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
  459. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
  460. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
  461. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
  462. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
  463. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
  464. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
  465. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
  466. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
  467. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/explain_visualize.py +0 -0
  468. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/model_monitor.py +0 -0
  469. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/shap.py +0 -0
  470. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/registry/__init__.py +0 -0
  471. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/registry/_manager/model_manager.py +0 -0
  472. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/registry/registry.py +0 -0
  473. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/utils/authentication.py +0 -0
  474. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/utils/connection_params.py +0 -0
  475. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/utils/html_utils.py +0 -0
  476. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/utils/sparse.py +0 -0
  477. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/utils/sql_client.py +0 -0
  478. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
  479. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake_ml_python.egg-info/requires.txt +0 -0
  480. {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake_ml_python.egg-info/top_level.txt +0 -0
@@ -1,5 +1,59 @@
1
1
  # Release History
2
2
 
3
+ ## 1.24.0
4
+
5
+ ### New Features
6
+
7
+ * Feature Store: Added tile-based aggregation support with a new `Feature` API for efficient and
8
+ point-in-time correct time-series feature computation using pre-computed tiles stored in Dynamic Tables.
9
+
10
+ * Registry: Added auto-signature inference for SentenceTransformer models. When logging a SentenceTransformer
11
+ model, `sample_input_data` is now optional. If not provided, the signature is automatically inferred from
12
+ the model's embedding dimension. Supported methods: `encode`, `encode_query`, `encode_document`,
13
+ `encode_queries`, `encode_documents`.
14
+
15
+ ```python
16
+ import sentence_transformers
17
+ from snowflake.ml.registry import Registry
18
+
19
+ # Create model
20
+ model = sentence_transformers.SentenceTransformer("all-MiniLM-L6-v2")
21
+
22
+ # Log model without sample_input_data - signature is auto-inferred
23
+ registry = Registry(session)
24
+ mv = registry.log_model(
25
+ model=model,
26
+ model_name="my_sentence_transformer",
27
+ version_name="v1",
28
+ )
29
+
30
+ # Run inference with auto-inferred signature (input: "text", output: "output")
31
+ import pandas as pd
32
+ result = mv.run(pd.DataFrame({"text": ["Hello world"]}))
33
+ ```
34
+
35
+ ### Bug Fixes
36
+
37
+ ### Behavior Changes
38
+
39
+ ### Deprecations
40
+
41
+ ## 1.23.0
42
+
43
+ ### New Features
44
+
45
+ * ML Jobs: Enabled support for Python 3.11 and Python 3.12 by default. Jobs will automatically select a
46
+ runtime environment matching the client Python version.
47
+
48
+ ### Bug Fixes
49
+
50
+ * Registry: Fix failures on empty output in HuggingFace's Token Classification (aka Named Entity Recognition) models.
51
+ * Model serving: don't parse instance or container statuses to fix bug with missing container status.
52
+
53
+ ### Behavior Changes
54
+
55
+ ### Deprecations
56
+
3
57
  ## 1.22.0
4
58
 
5
59
  ### New Features
@@ -22,10 +76,60 @@ mv = registry.log_model(
22
76
  )
23
77
  ```
24
78
 
79
+ * Registry: Added support for `image-text-to-text` task type in `huggingface.TransformersPipeline`.
80
+ Note: Requires vLLM inference engine while creating the service.
81
+
25
82
  ### Bug Fixes
26
83
 
27
84
  ### Behavior Changes
28
85
 
86
+ * Registry: The `openai_signatures.OPENAI_CHAT_SIGNATURE` signature now handles content parts and
87
+ requires input data to be passed in list of dictionary. To use string content (previous behavior),
88
+ use `openai_signatures.OPENAI_CHAT_SIGNATURE_WITH_CONTENT_FORMAT_STRING`.
89
+
90
+ ```python
91
+ from snowflake.ml.model import openai_signatures
92
+ import pandas as pd
93
+
94
+ mv = snowflake_registry.log_model(
95
+ model=generator,
96
+ model_name=...,
97
+ ...,
98
+ signatures=openai_signatures.OPENAI_CHAT_SIGNATURE,
99
+ )
100
+
101
+ # create a pd.DataFrame with openai.client.chat.completions arguments like below:
102
+ x_df = pd.DataFrame.from_records(
103
+ [
104
+ {
105
+ "messages": [
106
+ {"role": "system", "content": "Complete the sentence."},
107
+ {
108
+ "role": "user",
109
+ "content": [
110
+ {
111
+ "type": "text",
112
+ "text": "A descendant of the Lost City of Atlantis, who swam to Earth while saying, ",
113
+ }
114
+ ],
115
+ },
116
+ ],
117
+ "max_completion_tokens": 250,
118
+ "temperature": 0.9,
119
+ "stop": None,
120
+ "n": 3,
121
+ "stream": False,
122
+ "top_p": 1.0,
123
+ "frequency_penalty": 0.1,
124
+ "presence_penalty": 0.2,
125
+ }
126
+ ],
127
+ )
128
+
129
+ # OpenAI Chat Completion compatible output
130
+ output_df = mv.run(X=x_df)
131
+ ```
132
+
29
133
  ### Deprecations
30
134
 
31
135
  ## 1.21.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snowflake-ml-python
3
- Version: 1.22.0
3
+ Version: 1.24.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:
@@ -417,6 +417,60 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
417
417
 
418
418
  # Release History
419
419
 
420
+ ## 1.24.0
421
+
422
+ ### New Features
423
+
424
+ * Feature Store: Added tile-based aggregation support with a new `Feature` API for efficient and
425
+ point-in-time correct time-series feature computation using pre-computed tiles stored in Dynamic Tables.
426
+
427
+ * Registry: Added auto-signature inference for SentenceTransformer models. When logging a SentenceTransformer
428
+ model, `sample_input_data` is now optional. If not provided, the signature is automatically inferred from
429
+ the model's embedding dimension. Supported methods: `encode`, `encode_query`, `encode_document`,
430
+ `encode_queries`, `encode_documents`.
431
+
432
+ ```python
433
+ import sentence_transformers
434
+ from snowflake.ml.registry import Registry
435
+
436
+ # Create model
437
+ model = sentence_transformers.SentenceTransformer("all-MiniLM-L6-v2")
438
+
439
+ # Log model without sample_input_data - signature is auto-inferred
440
+ registry = Registry(session)
441
+ mv = registry.log_model(
442
+ model=model,
443
+ model_name="my_sentence_transformer",
444
+ version_name="v1",
445
+ )
446
+
447
+ # Run inference with auto-inferred signature (input: "text", output: "output")
448
+ import pandas as pd
449
+ result = mv.run(pd.DataFrame({"text": ["Hello world"]}))
450
+ ```
451
+
452
+ ### Bug Fixes
453
+
454
+ ### Behavior Changes
455
+
456
+ ### Deprecations
457
+
458
+ ## 1.23.0
459
+
460
+ ### New Features
461
+
462
+ * ML Jobs: Enabled support for Python 3.11 and Python 3.12 by default. Jobs will automatically select a
463
+ runtime environment matching the client Python version.
464
+
465
+ ### Bug Fixes
466
+
467
+ * Registry: Fix failures on empty output in HuggingFace's Token Classification (aka Named Entity Recognition) models.
468
+ * Model serving: don't parse instance or container statuses to fix bug with missing container status.
469
+
470
+ ### Behavior Changes
471
+
472
+ ### Deprecations
473
+
420
474
  ## 1.22.0
421
475
 
422
476
  ### New Features
@@ -439,10 +493,60 @@ mv = registry.log_model(
439
493
  )
440
494
  ```
441
495
 
496
+ * Registry: Added support for `image-text-to-text` task type in `huggingface.TransformersPipeline`.
497
+ Note: Requires vLLM inference engine while creating the service.
498
+
442
499
  ### Bug Fixes
443
500
 
444
501
  ### Behavior Changes
445
502
 
503
+ * Registry: The `openai_signatures.OPENAI_CHAT_SIGNATURE` signature now handles content parts and
504
+ requires input data to be passed in list of dictionary. To use string content (previous behavior),
505
+ use `openai_signatures.OPENAI_CHAT_SIGNATURE_WITH_CONTENT_FORMAT_STRING`.
506
+
507
+ ```python
508
+ from snowflake.ml.model import openai_signatures
509
+ import pandas as pd
510
+
511
+ mv = snowflake_registry.log_model(
512
+ model=generator,
513
+ model_name=...,
514
+ ...,
515
+ signatures=openai_signatures.OPENAI_CHAT_SIGNATURE,
516
+ )
517
+
518
+ # create a pd.DataFrame with openai.client.chat.completions arguments like below:
519
+ x_df = pd.DataFrame.from_records(
520
+ [
521
+ {
522
+ "messages": [
523
+ {"role": "system", "content": "Complete the sentence."},
524
+ {
525
+ "role": "user",
526
+ "content": [
527
+ {
528
+ "type": "text",
529
+ "text": "A descendant of the Lost City of Atlantis, who swam to Earth while saying, ",
530
+ }
531
+ ],
532
+ },
533
+ ],
534
+ "max_completion_tokens": 250,
535
+ "temperature": 0.9,
536
+ "stop": None,
537
+ "n": 3,
538
+ "stream": False,
539
+ "top_p": 1.0,
540
+ "frequency_penalty": 0.1,
541
+ "presence_penalty": 0.2,
542
+ }
543
+ ],
544
+ )
545
+
546
+ # OpenAI Chat Completion compatible output
547
+ output_df = mv.run(X=x_df)
548
+ ```
549
+
446
550
  ### Deprecations
447
551
 
448
552
  ## 1.21.0
@@ -19,7 +19,6 @@ LIVE_COMMIT_PARAMETER = "ENABLE_LIVE_VERSION_IN_SDK"
19
19
  INLINE_DEPLOYMENT_SPEC_PARAMETER = "ENABLE_INLINE_DEPLOYMENT_SPEC_FROM_CLIENT_VERSION"
20
20
  SET_MODULE_FUNCTIONS_VOLATILITY_FROM_MANIFEST = "SET_MODULE_FUNCTIONS_VOLATILITY_FROM_MANIFEST"
21
21
  ENABLE_MODEL_METHOD_SIGNATURE_PARAMETERS = "ENABLE_MODEL_METHOD_SIGNATURE_PARAMETERS"
22
- FEATURE_MODEL_INFERENCE_AUTOCAPTURE = "FEATURE_MODEL_INFERENCE_AUTOCAPTURE"
23
22
 
24
23
 
25
24
  class PlatformCapabilities:
@@ -85,9 +84,6 @@ class PlatformCapabilities:
85
84
  def is_model_method_signature_parameters_enabled(self) -> bool:
86
85
  return self._get_bool_feature(ENABLE_MODEL_METHOD_SIGNATURE_PARAMETERS, False)
87
86
 
88
- def is_inference_autocapture_enabled(self) -> bool:
89
- return self._is_feature_enabled(FEATURE_MODEL_INFERENCE_AUTOCAPTURE)
90
-
91
87
  @staticmethod
92
88
  def _get_features(session: snowpark_session.Session) -> dict[str, Any]:
93
89
  try:
@@ -3,6 +3,7 @@ import os
3
3
  from snowflake.ml._internal import init_utils
4
4
 
5
5
  from .access_manager import setup_feature_store
6
+ from .feature import Feature
6
7
 
7
8
  pkg_dir = os.path.dirname(__file__)
8
9
  pkg_name = __name__
@@ -12,4 +13,5 @@ for k, v in exportable_classes.items():
12
13
 
13
14
  __all__ = list(exportable_classes.keys()) + [
14
15
  "setup_feature_store",
16
+ "Feature",
15
17
  ]
@@ -0,0 +1,367 @@
1
+ """Aggregation types and specifications for tile-based feature views.
2
+
3
+ This module provides the building blocks for defining time-series aggregations
4
+ that are computed using a tile-based approach for efficiency and correctness.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import re
10
+ from dataclasses import dataclass, field
11
+ from enum import Enum
12
+ from typing import Any
13
+
14
+
15
+ class AggregationType(Enum):
16
+ """Supported aggregation functions for tiled feature views.
17
+
18
+ These aggregation types are classified into categories:
19
+ - Simple aggregations (SUM, COUNT, AVG, MIN, MAX, STD, VAR): Stored as scalar partial results in tiles
20
+ - Sketch aggregations (APPROX_COUNT_DISTINCT, APPROX_PERCENTILE): Stored as mergeable state in tiles
21
+ - List aggregations (LAST_N, LAST_DISTINCT_N, FIRST_N, FIRST_DISTINCT_N): Stored as arrays in tiles
22
+ """
23
+
24
+ SUM = "sum"
25
+ COUNT = "count"
26
+ AVG = "avg"
27
+ MIN = "min"
28
+ MAX = "max"
29
+ STD = "std"
30
+ VAR = "var"
31
+ APPROX_COUNT_DISTINCT = "approx_count_distinct"
32
+ APPROX_PERCENTILE = "approx_percentile"
33
+ LAST_N = "last_n"
34
+ LAST_DISTINCT_N = "last_distinct_n"
35
+ FIRST_N = "first_n"
36
+ FIRST_DISTINCT_N = "first_distinct_n"
37
+
38
+ def is_simple(self) -> bool:
39
+ """Check if this is a simple aggregation (scalar result per tile).
40
+
41
+ Simple aggregations include both basic aggregates (SUM, COUNT, etc.)
42
+ and sketch-based aggregates (APPROX_COUNT_DISTINCT, APPROX_PERCENTILE)
43
+ because they all produce a single value per entity per tile boundary.
44
+
45
+ Returns:
46
+ True if this is a simple aggregation type, False otherwise.
47
+ """
48
+ return self in (
49
+ AggregationType.SUM,
50
+ AggregationType.COUNT,
51
+ AggregationType.AVG,
52
+ AggregationType.MIN,
53
+ AggregationType.MAX,
54
+ AggregationType.STD,
55
+ AggregationType.VAR,
56
+ AggregationType.APPROX_COUNT_DISTINCT,
57
+ AggregationType.APPROX_PERCENTILE,
58
+ )
59
+
60
+ def is_list(self) -> bool:
61
+ """Check if this is a list aggregation (array result per tile)."""
62
+ return self in (
63
+ AggregationType.LAST_N,
64
+ AggregationType.LAST_DISTINCT_N,
65
+ AggregationType.FIRST_N,
66
+ AggregationType.FIRST_DISTINCT_N,
67
+ )
68
+
69
+ def is_sketch(self) -> bool:
70
+ """Check if this is a sketch-based aggregation (HLL, T-Digest)."""
71
+ return self in (
72
+ AggregationType.APPROX_COUNT_DISTINCT,
73
+ AggregationType.APPROX_PERCENTILE,
74
+ )
75
+
76
+
77
+ # Special window value for lifetime aggregations
78
+ LIFETIME_WINDOW = "lifetime"
79
+
80
+ # Regex pattern for interval parsing: "1h", "24 hours", "30 minutes", etc.
81
+ _INTERVAL_PATTERN = re.compile(
82
+ r"^\s*(\d+)\s*(s|sec|secs|second|seconds|m|min|mins|minute|minutes|h|hr|hrs|hour|hours|d|day|days)\s*$",
83
+ re.IGNORECASE,
84
+ )
85
+
86
+ # Mapping of interval unit aliases to canonical Snowflake units
87
+ _INTERVAL_UNIT_MAP = {
88
+ "s": "SECOND",
89
+ "sec": "SECOND",
90
+ "secs": "SECOND",
91
+ "second": "SECOND",
92
+ "seconds": "SECOND",
93
+ "m": "MINUTE",
94
+ "min": "MINUTE",
95
+ "mins": "MINUTE",
96
+ "minute": "MINUTE",
97
+ "minutes": "MINUTE",
98
+ "h": "HOUR",
99
+ "hr": "HOUR",
100
+ "hrs": "HOUR",
101
+ "hour": "HOUR",
102
+ "hours": "HOUR",
103
+ "d": "DAY",
104
+ "day": "DAY",
105
+ "days": "DAY",
106
+ }
107
+
108
+ # Seconds per unit for calculating window sizes
109
+ _SECONDS_PER_UNIT = {
110
+ "SECOND": 1,
111
+ "MINUTE": 60,
112
+ "HOUR": 3600,
113
+ "DAY": 86400,
114
+ }
115
+
116
+
117
+ def is_lifetime_window(window: str) -> bool:
118
+ """Check if a window string represents a lifetime aggregation.
119
+
120
+ Args:
121
+ window: The window string to check.
122
+
123
+ Returns:
124
+ True if the window is "lifetime", False otherwise.
125
+ """
126
+ return window.lower().strip() == LIFETIME_WINDOW
127
+
128
+
129
+ def parse_interval(interval: str) -> tuple[int, str]:
130
+ """Parse an interval string into (value, unit) tuple.
131
+
132
+ Args:
133
+ interval: Interval string like "1h", "24 hours", "30 minutes".
134
+ Note: "lifetime" is NOT a valid interval - use is_lifetime_window() first.
135
+
136
+ Returns:
137
+ Tuple of (numeric_value, snowflake_unit) e.g. (1, "HOUR").
138
+
139
+ Raises:
140
+ ValueError: If the interval format is invalid.
141
+ """
142
+ if is_lifetime_window(interval):
143
+ raise ValueError(
144
+ f"'{interval}' is not a numeric interval. " f"Use is_lifetime_window() to check for lifetime windows."
145
+ )
146
+
147
+ match = _INTERVAL_PATTERN.match(interval)
148
+ if not match:
149
+ raise ValueError(
150
+ f"Invalid interval format: '{interval}'. "
151
+ f"Expected format: '<number> <unit>' where unit is one of: "
152
+ f"seconds, minutes, hours, days (or abbreviations s, m, h, d)"
153
+ )
154
+
155
+ value = int(match.group(1))
156
+ unit_str = match.group(2).lower()
157
+ unit = _INTERVAL_UNIT_MAP[unit_str]
158
+
159
+ if value <= 0:
160
+ raise ValueError(f"Interval value must be positive, got: {value}")
161
+
162
+ return value, unit
163
+
164
+
165
+ def interval_to_seconds(interval: str) -> int:
166
+ """Convert an interval string to total seconds.
167
+
168
+ Args:
169
+ interval: Interval string like "1h", "24 hours".
170
+ Note: "lifetime" is NOT supported - returns -1 as sentinel.
171
+
172
+ Returns:
173
+ Total seconds represented by the interval, or -1 for lifetime.
174
+ """
175
+ if is_lifetime_window(interval):
176
+ return -1 # Sentinel value for lifetime
177
+ value, unit = parse_interval(interval)
178
+ return value * _SECONDS_PER_UNIT[unit]
179
+
180
+
181
+ def format_interval_for_snowflake(interval: str) -> str:
182
+ """Format an interval string for use in Snowflake SQL.
183
+
184
+ Args:
185
+ interval: Interval string like "1h", "24 hours".
186
+
187
+ Returns:
188
+ Formatted string like "HOUR" or "DAY" for use with DATEADD/TIME_SLICE.
189
+ """
190
+ _, unit = parse_interval(interval)
191
+ return unit
192
+
193
+
194
+ @dataclass(frozen=True)
195
+ class AggregationSpec:
196
+ """Internal representation of an aggregation specification.
197
+
198
+ This is the serializable form that gets stored in metadata and used
199
+ for SQL generation. Users interact with the Feature class instead.
200
+
201
+ Attributes:
202
+ function: The aggregation function type.
203
+ source_column: The column to aggregate.
204
+ window: The lookback window for the aggregation (e.g., "24h", "7d").
205
+ output_column: The name of the output column.
206
+ offset: Offset to shift the window into the past (e.g., "1d" means [t-window-1d, t-1d]).
207
+ params: Additional parameters (e.g., {"n": 10} for LAST_N).
208
+ """
209
+
210
+ function: AggregationType
211
+ source_column: str
212
+ window: str
213
+ output_column: str
214
+ offset: str = "0"
215
+ params: dict[str, Any] = field(default_factory=dict)
216
+
217
+ def __post_init__(self) -> None:
218
+ """Validate the aggregation spec after initialization."""
219
+ # Validate window format (allow "lifetime" as special case)
220
+ if not is_lifetime_window(self.window):
221
+ try:
222
+ interval_to_seconds(self.window)
223
+ except ValueError as e:
224
+ raise ValueError(f"Invalid window for aggregation '{self.output_column}': {e}") from e
225
+
226
+ # Validate offset format (if not "0")
227
+ # Note: offset is not allowed with lifetime windows
228
+ if self.offset != "0":
229
+ if is_lifetime_window(self.window):
230
+ raise ValueError(
231
+ f"Offset is not supported with lifetime windows for aggregation '{self.output_column}'"
232
+ )
233
+ try:
234
+ offset_seconds = interval_to_seconds(self.offset)
235
+ if offset_seconds < 0:
236
+ raise ValueError("Offset must be non-negative")
237
+ except ValueError as e:
238
+ raise ValueError(f"Invalid offset for aggregation '{self.output_column}': {e}") from e
239
+
240
+ # Validate params for list aggregations
241
+ if self.function.is_list():
242
+ if "n" not in self.params:
243
+ raise ValueError(
244
+ f"Parameter 'n' is required for {self.function.value} aggregation " f"'{self.output_column}'"
245
+ )
246
+ n = self.params["n"]
247
+ if not isinstance(n, int) or n <= 0:
248
+ raise ValueError(
249
+ f"Parameter 'n' must be a positive integer for aggregation " f"'{self.output_column}', got: {n}"
250
+ )
251
+
252
+ # Validate params for approx_percentile
253
+ if self.function == AggregationType.APPROX_PERCENTILE:
254
+ if "percentile" not in self.params:
255
+ raise ValueError(
256
+ f"Parameter 'percentile' is required for approx_percentile aggregation '{self.output_column}'"
257
+ )
258
+ percentile = self.params["percentile"]
259
+ if not isinstance(percentile, (int, float)) or not (0.0 <= percentile <= 1.0):
260
+ raise ValueError(
261
+ f"Parameter 'percentile' must be a float between 0.0 and 1.0 for aggregation "
262
+ f"'{self.output_column}', got: {percentile}"
263
+ )
264
+
265
+ # Validate lifetime window support
266
+ # Only simple scalar aggregations support lifetime (O(1) via cumulative columns)
267
+ if is_lifetime_window(self.window):
268
+ supported_lifetime_types = (
269
+ AggregationType.SUM,
270
+ AggregationType.COUNT,
271
+ AggregationType.AVG,
272
+ AggregationType.MIN,
273
+ AggregationType.MAX,
274
+ AggregationType.STD,
275
+ AggregationType.VAR,
276
+ )
277
+ if self.function not in supported_lifetime_types:
278
+ supported_names = ", ".join(t.value.upper() for t in supported_lifetime_types)
279
+ raise ValueError(
280
+ f"Lifetime window is not supported for {self.function.value} aggregation "
281
+ f"'{self.output_column}'. Lifetime is only supported for: {supported_names}."
282
+ )
283
+
284
+ def is_lifetime(self) -> bool:
285
+ """Check if this aggregation has a lifetime window.
286
+
287
+ Returns:
288
+ True if the window is "lifetime", False otherwise.
289
+ """
290
+ return is_lifetime_window(self.window)
291
+
292
+ def get_window_seconds(self) -> int:
293
+ """Get the window size in seconds.
294
+
295
+ Returns:
296
+ Total seconds for the window, or -1 for lifetime windows.
297
+ """
298
+ return interval_to_seconds(self.window)
299
+
300
+ def get_offset_seconds(self) -> int:
301
+ """Get the offset in seconds."""
302
+ return interval_to_seconds(self.offset) if self.offset != "0" else 0
303
+
304
+ def get_cumulative_column_name(self, partial_type: str) -> str:
305
+ """Get the cumulative column name for lifetime aggregations.
306
+
307
+ Similar to get_tile_column_name but with _CUM_ prefix instead of _PARTIAL_.
308
+
309
+ Args:
310
+ partial_type: One of "SUM", "COUNT", "SUM_SQ", "HLL", "TDIGEST", "MIN", "MAX", "FIRST".
311
+
312
+ Returns:
313
+ Column name used in the tile table (prefixed with _CUM_).
314
+ """
315
+ return f"_CUM_{partial_type}_{self.source_column.upper()}"
316
+
317
+ def get_tile_column_name(self, partial_type: str) -> str:
318
+ """Get the internal tile column name for a base partial aggregate.
319
+
320
+ Aggregations are computed from base partials:
321
+ - _PARTIAL_SUM_{col}: SUM(col) - used by SUM, AVG, STD, VAR
322
+ - _PARTIAL_COUNT_{col}: COUNT(col) - used by COUNT, AVG, STD, VAR
323
+ - _PARTIAL_SUM_SQ_{col}: SUM(col*col) - used by STD, VAR
324
+ - _PARTIAL_HLL_{col}: HLL state - used by APPROX_COUNT_DISTINCT
325
+ - _PARTIAL_TDIGEST_{col}: T-Digest state - used by APPROX_PERCENTILE
326
+
327
+ This allows sharing columns across aggregation types on the same column.
328
+
329
+ Args:
330
+ partial_type: One of "SUM", "COUNT", "SUM_SQ", "HLL", "TDIGEST", "LAST", "FIRST".
331
+
332
+ Returns:
333
+ Column name used in the tile table (prefixed with _PARTIAL_).
334
+ """
335
+ return f"_PARTIAL_{partial_type}_{self.source_column.upper()}"
336
+
337
+ def get_sql_column_name(self) -> str:
338
+ """Get the output column name formatted for SQL.
339
+
340
+ Returns:
341
+ Column name ready for use in SQL. Case-sensitive names are stored
342
+ with quotes (e.g., '"My_Col"'), case-insensitive names are uppercase.
343
+ """
344
+ return self.output_column
345
+
346
+ def to_dict(self) -> dict[str, Any]:
347
+ """Convert to a dictionary for JSON serialization."""
348
+ return {
349
+ "function": self.function.value,
350
+ "source_column": self.source_column,
351
+ "window": self.window,
352
+ "output_column": self.output_column,
353
+ "offset": self.offset,
354
+ "params": self.params,
355
+ }
356
+
357
+ @classmethod
358
+ def from_dict(cls, data: dict[str, Any]) -> AggregationSpec:
359
+ """Create an AggregationSpec from a dictionary."""
360
+ return cls(
361
+ function=AggregationType(data["function"]),
362
+ source_column=data["source_column"],
363
+ window=data["window"],
364
+ output_column=data["output_column"],
365
+ offset=data.get("offset", "0"),
366
+ params=data.get("params", {}),
367
+ )