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.
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/CHANGELOG.md +104 -0
- {snowflake_ml_python-1.22.0/snowflake_ml_python.egg-info → snowflake_ml_python-1.24.0}/PKG-INFO +105 -1
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/platform_capabilities.py +0 -4
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/__init__.py +2 -0
- snowflake_ml_python-1.24.0/snowflake/ml/feature_store/aggregation.py +367 -0
- snowflake_ml_python-1.24.0/snowflake/ml/feature_store/feature.py +366 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/feature_store.py +234 -20
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/feature_view.py +189 -4
- snowflake_ml_python-1.24.0/snowflake/ml/feature_store/metadata_manager.py +425 -0
- snowflake_ml_python-1.24.0/snowflake/ml/feature_store/tile_sql_generator.py +1079 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/__init__.py +2 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/constants.py +1 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/payload_utils.py +38 -18
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/query_helper.py +8 -1
- snowflake_ml_python-1.24.0/snowflake/ml/jobs/_utils/runtime_env_utils.py +117 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/stage_utils.py +2 -2
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/types.py +22 -2
- snowflake_ml_python-1.24.0/snowflake/ml/jobs/job_definition.py +232 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/manager.py +16 -177
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/__init__.py +4 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/model/batch_inference_specs.py +38 -2
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/model/model_version_impl.py +120 -89
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/ops/model_ops.py +4 -26
- snowflake_ml_python-1.24.0/snowflake/ml/model/_client/ops/param_utils.py +124 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/ops/service_ops.py +63 -23
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +12 -5
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +1 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/sql/service.py +25 -54
- {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
- {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
- {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
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +3 -1
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/huggingface.py +74 -10
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +121 -29
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/utils.py +130 -0
- snowflake_ml_python-1.24.0/snowflake/ml/model/openai_signatures.py +154 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/registry/_manager/model_parameter_reconciler.py +1 -1
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/version.py +1 -1
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0/snowflake_ml_python.egg-info}/PKG-INFO +105 -1
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake_ml_python.egg-info/SOURCES.txt +7 -1
- snowflake_ml_python-1.22.0/snowflake/ml/jobs/_utils/__init__.py +0 -0
- snowflake_ml_python-1.22.0/snowflake/ml/model/openai_signatures.py +0 -57
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/LICENSE.txt +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/README.md +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/pyproject.toml +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/setup.cfg +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_classify_text.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_complete.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_embed_text_1024.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_embed_text_768.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_extract_answer.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_finetune.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_sentiment.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_sse_client.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_summarize.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_translate.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/cortex/_util.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/env.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/env_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/file_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/init_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/telemetry.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/type_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/identifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/mixins.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/result.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/service_logger.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/_internal/utils/url.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/data/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/data/data_connector.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/data/data_ingestor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/data/data_source.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/data/ingestor_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/data/torch_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/dataset/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/dataset/dataset.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/_client/artifact.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/_entities/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/_entities/experiment.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/_entities/run.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/_experiment_info.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/callback/keras.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/callback/lightgbm.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/callback/xgboost.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/experiment_tracking.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/experiment/utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/access_manager.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/entity.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
- {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
- {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
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
- {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
- {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
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
- {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
- {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
- {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
- {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
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
- {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
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
- {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
- {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
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/fileset/fileset.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/fileset/sfcfs.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/fileset/snowfs.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/fileset/stage_fs.py +0 -0
- {snowflake_ml_python-1.22.0/snowflake/ml/experiment/callback → snowflake_ml_python-1.24.0/snowflake/ml/jobs/_interop}/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_interop/data_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_interop/dto_schema.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_interop/exception_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_interop/legacy.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_interop/protocols.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_interop/results.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_interop/utils.py +0 -0
- {snowflake_ml_python-1.22.0/snowflake/ml/jobs/_interop → snowflake_ml_python-1.24.0/snowflake/ml/jobs/_utils}/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/feature_flags.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/function_payload_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/scripts/constants.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/scripts/start_mlruntime.sh +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/scripts/startup.sh +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/_utils/spec_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/decorators.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/jobs/job.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/lineage/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/lineage/lineage_node.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/model/inference_engine_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/model/model_impl.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/ops/deployment_step.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/service/import_model_spec_schema.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/sql/model.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/sql/model_version.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/sql/stage.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
- {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
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_model_composer/model_method/utils.py +0 -0
- {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
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_env/model_env.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/prophet.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
- {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
- {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
- {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
- {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
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_packager.py +0 -0
- {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
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/core.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/code_path.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/compute_pool.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/custom_model.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/event_handler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/inference_engine.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/model_signature.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/models/huggingface.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/target_platform.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/task.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/type_hints.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/model/volatility.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
- {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
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
- {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
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/birch.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/k_means.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/optics.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/oas.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/pca.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/framework/base.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/lars.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
- {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
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/manifold/isomap.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/manifold/mds.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/manifold/tsne.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/svm/svc.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/svm/svr.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/explain_visualize.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/model_monitor.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/monitoring/shap.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/registry/__init__.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/registry/_manager/model_manager.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/registry/registry.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/utils/authentication.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/utils/html_utils.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/utils/sparse.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/utils/sql_client.py +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
- {snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake_ml_python.egg-info/requires.txt +0 -0
- {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
|
{snowflake_ml_python-1.22.0/snowflake_ml_python.egg-info → snowflake_ml_python-1.24.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-ml-python
|
|
3
|
-
Version: 1.
|
|
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:
|
{snowflake_ml_python-1.22.0 → snowflake_ml_python-1.24.0}/snowflake/ml/feature_store/__init__.py
RENAMED
|
@@ -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
|
+
)
|