snowflake-ml-python 1.49.0__tar.gz → 1.51.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.49.0 → snowflake_ml_python-1.51.0}/CHANGELOG.md +40 -7
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/PKG-INFO +44 -12
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/pyproject.toml +4 -4
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/query_result_checker.py +2 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/feature_store.py +161 -15
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/feature_view.py +49 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/online_service.py +10 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/type_utils.py +1 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/decorators.py +2 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/job_definition.py +7 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/manager.py +6 -0
- snowflake_ml_python-1.51.0/snowflake/ml/model/_client/model/batch_inference_job_specs.py +166 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/model/batch_inference_serialization.py +3 -1
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/model/batch_inference_specs.py +7 -105
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/model/batch_inference_task.py +13 -0
- snowflake_ml_python-1.51.0/snowflake/ml/model/_client/model/batch_inference_task_v2.py +156 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/model/model_version_impl.py +87 -30
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/ops/service_ops.py +307 -56
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/service/inference_job_service_spec.py +8 -6
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/sql/model_version.py +10 -6
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/sql/service.py +68 -19
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_env/model_env.py +12 -6
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +122 -94
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +0 -1
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/batch/__init__.py +4 -2
- snowflake_ml_python-1.51.0/snowflake/ml/model/batch_inference/__init__.py +27 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/version.py +1 -1
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake_ml_python.egg-info/PKG-INFO +44 -12
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake_ml_python.egg-info/SOURCES.txt +3 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake_ml_python.egg-info/requires.txt +3 -4
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/LICENSE.txt +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/README.md +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/setup.cfg +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_classify_text.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_complete.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_embed_text_1024.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_embed_text_768.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_extract_answer.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_finetune.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_sentiment.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_sse_client.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_summarize.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_translate.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/cortex/_util.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/env.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/env_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/file_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/init_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/platform_capabilities.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/telemetry.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/type_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/identifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/mixins.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/result.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/service_logger.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/tee.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/_internal/utils/url.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/data/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/data/data_connector.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/data/data_ingestor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/data/data_source.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/data/ingestor_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/data/torch_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/dataset/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/dataset/dataset.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_client/artifact.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_entities/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_entities/experiment.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_entities/run.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_experiment_info.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_logging/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_logging/experiment_logger.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_logging/experiment_logging_context.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/_source_info.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/callback/keras.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/callback/lightgbm.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/callback/xgboost.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/experiment_tracking.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/experiment/utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/_compute_fn_validation.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/access_manager.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/aggregation.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/entity.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/feature.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/feature_group.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/feature_view_append_only_validation.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/feature_view_refresh_freq.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/interval_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/metadata_manager.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/online_service_http_client.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/realtime_config.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/realtime_dataset.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/realtime_dataset_udf.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/realtime_registration.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/request_source.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/spec/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/spec/builder.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/spec/enums.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/spec/models.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/spec/table_schema_evolution.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/stream_config.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/stream_source.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/streaming_registration.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/tile_sql_generator.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/fileset/fileset.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/fileset/sfcfs.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/fileset/snowfs.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/fileset/stage_fs.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/data_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/dto_schema.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/exception_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/legacy.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/protocols.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/results.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_interop/utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/arg_protocol.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/constants.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/feature_flags.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/payload_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/query_helper.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/runtime_env_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/constants.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/start_mlruntime.sh +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/startup.sh +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/_utils/stage_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/job.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/lineage/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/lineage/lineage_node.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/model/inference_engine_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/model/model_impl.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/ops/deployment_step.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/ops/live_commit_naming.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/ops/model_ops.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/ops/param_ops.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/ops/param_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/service/import_model_spec_schema.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/sql/model.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/sql/stage.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/huggingface_lazy_uploader.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/infer_function_init_once.py_template +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned_init_once.py_template +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function_init_once.py_template +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_method/utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_default.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_handler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_openai_chat_wrapper.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_task_handler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/audio_classification.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/audio_text_to_text.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/automatic_speech_recognition.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/conversational.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/document_question_answering.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/fill_mask.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_classification.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_feature_extraction.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_text_to_text.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_to_text.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/object_detection.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/question_answering.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/summarization.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/table_question_answering.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text2text_generation.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_classification.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_generation.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/token_classification.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/translation.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_classification.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_text_to_text.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/visual_question_answering.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_audio_classification.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_image_classification.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_object_detection.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_text_classification.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/prophet.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_meta/model_sample_input_data.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_packager.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_save_options.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/core.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/_signatures/utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/code_path.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/compute_pool.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/custom_model.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/event_handler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/inference_engine.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/model_signature.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/models/huggingface.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/openai_signatures.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/target_platform.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/task.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/type_hints.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/model/volatility.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/birch.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/k_means.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/optics.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/oas.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/pca.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/framework/base.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/lars.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/manifold/isomap.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/manifold/mds.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/manifold/tsne.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/svm/svc.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/svm/svr.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/explain_visualize.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/model_monitor.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/monitoring/shap.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/registry/__init__.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/registry/_manager/model_manager.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/registry/_manager/model_parameter_reconciler.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/registry/registry.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/utils/authentication.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/utils/html_utils.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/utils/sparse.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/utils/sql_client.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/utils/stage_file.py +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
- {snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake_ml_python.egg-info/top_level.txt +0 -0
|
@@ -1,18 +1,46 @@
|
|
|
1
1
|
# Release History
|
|
2
2
|
|
|
3
|
-
## 1.
|
|
3
|
+
## 1.51.0
|
|
4
4
|
|
|
5
5
|
### New Features
|
|
6
6
|
|
|
7
|
+
* ML Jobs: `artifact_repositories` now accepts a list of repositories, allowing multiple artifact
|
|
8
|
+
repositories to be specified for a job.
|
|
9
|
+
* Registry: Added support for logging and running MLflow 3.x models.
|
|
10
|
+
|
|
7
11
|
### Bug Fixes
|
|
8
12
|
|
|
9
|
-
* Registry: Fixed a bug where
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
* Registry: Fixed a bug where an MLflow model logged with
|
|
14
|
+
`target_platforms=["SNOWPARK_CONTAINER_SERVICES"]` could drop its pip dependencies, leaving the
|
|
15
|
+
deployed model missing required packages.
|
|
16
|
+
|
|
17
|
+
### Behavior Changes
|
|
18
|
+
|
|
19
|
+
### Deprecations
|
|
20
|
+
|
|
21
|
+
## 1.50.0 (2026-08-03)
|
|
22
|
+
|
|
23
|
+
### New Features
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
### Behavior Changes
|
|
13
28
|
|
|
14
|
-
|
|
15
|
-
|
|
29
|
+
### Deprecations
|
|
30
|
+
|
|
31
|
+
## 1.49.0 (2026-07-29)
|
|
32
|
+
|
|
33
|
+
### New Features
|
|
34
|
+
|
|
35
|
+
* Experiment Tracking: `ExperimentTracking` now captures best-effort source provenance (entry-point filename and any
|
|
36
|
+
surrounding git commit, branch, and remote URL) for each new run by default. Pass `capture_source_info=False` to
|
|
37
|
+
disable it. Collection is always non-fatal and never blocks run creation.
|
|
38
|
+
|
|
39
|
+
### Bug Fixes
|
|
40
|
+
|
|
41
|
+
* Registry: Fixed `ModelVersion.load()` failing with `Result for query <id> has expired` inside Snowflake Container
|
|
42
|
+
Runtime notebooks. Model file downloads now use the `session.file.get` FileOperation API (the same mechanism used
|
|
43
|
+
when logging a model) instead of a raw `GET` query, avoiding a dependency on `collect()` result sets.
|
|
16
44
|
|
|
17
45
|
### Behavior Changes
|
|
18
46
|
|
|
@@ -28,6 +56,11 @@
|
|
|
28
56
|
|
|
29
57
|
### Bug Fixes
|
|
30
58
|
|
|
59
|
+
* Registry: Fixed a bug where logging a model with explainability enabled could fail with a data validation error
|
|
60
|
+
("There is no non-null data in column ...") when a numeric input column was entirely null within the background
|
|
61
|
+
sample. The `explain` method now reuses the model's existing input signature instead of re-inferring it from the
|
|
62
|
+
sample.
|
|
63
|
+
|
|
31
64
|
### Behavior Changes
|
|
32
65
|
|
|
33
66
|
### Deprecations
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-ml-python
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.51.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:
|
|
@@ -236,7 +236,6 @@ License-File: LICENSE.txt
|
|
|
236
236
|
Requires-Dist: anyio<5,>=3.5.0
|
|
237
237
|
Requires-Dist: cachetools>=3.1.1
|
|
238
238
|
Requires-Dist: cloudpickle>=2.0.0
|
|
239
|
-
Requires-Dist: cryptography
|
|
240
239
|
Requires-Dist: fsspec[http]<2026,>=2024.6.1
|
|
241
240
|
Requires-Dist: h2<5,>=4.3.0
|
|
242
241
|
Requires-Dist: importlib_resources<7,>=6.1.1
|
|
@@ -265,7 +264,7 @@ Requires-Dist: altair<7,>=5; extra == "all"
|
|
|
265
264
|
Requires-Dist: catboost<2,>=1.2.0; extra == "all"
|
|
266
265
|
Requires-Dist: keras<4,>=2.0.0; extra == "all"
|
|
267
266
|
Requires-Dist: lightgbm<5,>=4.1.0; extra == "all"
|
|
268
|
-
Requires-Dist: mlflow<
|
|
267
|
+
Requires-Dist: mlflow<4,>=2.16.0; extra == "all"
|
|
269
268
|
Requires-Dist: prophet<2,>=1.1.0; extra == "all"
|
|
270
269
|
Requires-Dist: sentence-transformers<6,>=2.7.0; extra == "all"
|
|
271
270
|
Requires-Dist: sentencepiece<0.3,>=0.1.95; extra == "all"
|
|
@@ -286,7 +285,7 @@ Requires-Dist: torch<3,>=2.0.1; extra == "keras"
|
|
|
286
285
|
Provides-Extra: lightgbm
|
|
287
286
|
Requires-Dist: lightgbm<5,>=4.1.0; extra == "lightgbm"
|
|
288
287
|
Provides-Extra: llm
|
|
289
|
-
Requires-Dist: mlflow<
|
|
288
|
+
Requires-Dist: mlflow<4,>=2.16.0; extra == "llm"
|
|
290
289
|
Requires-Dist: sentence-transformers<6,>=2.7.0; extra == "llm"
|
|
291
290
|
Requires-Dist: sentencepiece<0.3,>=0.1.95; extra == "llm"
|
|
292
291
|
Requires-Dist: tokenizers<1,>=0.15.1; extra == "llm"
|
|
@@ -294,7 +293,7 @@ Requires-Dist: torch<3,>=2.0.1; extra == "llm"
|
|
|
294
293
|
Requires-Dist: torchdata<1,>=0.4; extra == "llm"
|
|
295
294
|
Requires-Dist: transformers!=4.51.3,<6,>=4.39.3; extra == "llm"
|
|
296
295
|
Provides-Extra: mlflow
|
|
297
|
-
Requires-Dist: mlflow<
|
|
296
|
+
Requires-Dist: mlflow<4,>=2.16.0; extra == "mlflow"
|
|
298
297
|
Provides-Extra: prophet
|
|
299
298
|
Requires-Dist: prophet<2,>=1.1.0; extra == "prophet"
|
|
300
299
|
Provides-Extra: streamlit
|
|
@@ -417,19 +416,47 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
|
417
416
|
|
|
418
417
|
# Release History
|
|
419
418
|
|
|
420
|
-
## 1.
|
|
419
|
+
## 1.51.0
|
|
421
420
|
|
|
422
421
|
### New Features
|
|
423
422
|
|
|
423
|
+
* ML Jobs: `artifact_repositories` now accepts a list of repositories, allowing multiple artifact
|
|
424
|
+
repositories to be specified for a job.
|
|
425
|
+
* Registry: Added support for logging and running MLflow 3.x models.
|
|
426
|
+
|
|
424
427
|
### Bug Fixes
|
|
425
428
|
|
|
426
|
-
* Registry: Fixed a bug where
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
429
|
+
* Registry: Fixed a bug where an MLflow model logged with
|
|
430
|
+
`target_platforms=["SNOWPARK_CONTAINER_SERVICES"]` could drop its pip dependencies, leaving the
|
|
431
|
+
deployed model missing required packages.
|
|
432
|
+
|
|
433
|
+
### Behavior Changes
|
|
434
|
+
|
|
435
|
+
### Deprecations
|
|
436
|
+
|
|
437
|
+
## 1.50.0 (2026-08-03)
|
|
438
|
+
|
|
439
|
+
### New Features
|
|
440
|
+
|
|
441
|
+
### Bug Fixes
|
|
442
|
+
|
|
443
|
+
### Behavior Changes
|
|
430
444
|
|
|
431
|
-
|
|
432
|
-
|
|
445
|
+
### Deprecations
|
|
446
|
+
|
|
447
|
+
## 1.49.0 (2026-07-29)
|
|
448
|
+
|
|
449
|
+
### New Features
|
|
450
|
+
|
|
451
|
+
* Experiment Tracking: `ExperimentTracking` now captures best-effort source provenance (entry-point filename and any
|
|
452
|
+
surrounding git commit, branch, and remote URL) for each new run by default. Pass `capture_source_info=False` to
|
|
453
|
+
disable it. Collection is always non-fatal and never blocks run creation.
|
|
454
|
+
|
|
455
|
+
### Bug Fixes
|
|
456
|
+
|
|
457
|
+
* Registry: Fixed `ModelVersion.load()` failing with `Result for query <id> has expired` inside Snowflake Container
|
|
458
|
+
Runtime notebooks. Model file downloads now use the `session.file.get` FileOperation API (the same mechanism used
|
|
459
|
+
when logging a model) instead of a raw `GET` query, avoiding a dependency on `collect()` result sets.
|
|
433
460
|
|
|
434
461
|
### Behavior Changes
|
|
435
462
|
|
|
@@ -445,6 +472,11 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
|
445
472
|
|
|
446
473
|
### Bug Fixes
|
|
447
474
|
|
|
475
|
+
* Registry: Fixed a bug where logging a model with explainability enabled could fail with a data validation error
|
|
476
|
+
("There is no non-null data in column ...") when a numeric input column was entirely null within the background
|
|
477
|
+
sample. The `explain` method now reuses the model's existing input signature instead of re-inferring it from the
|
|
478
|
+
sample.
|
|
479
|
+
|
|
448
480
|
### Behavior Changes
|
|
449
481
|
|
|
450
482
|
### Deprecations
|
|
@@ -8,7 +8,7 @@ description = "The machine learning client library that is used for interacting
|
|
|
8
8
|
classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: Other Environment", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Database", "Topic :: Software Development", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Scientific/Engineering :: Information Analysis",]
|
|
9
9
|
requires-python = ">=3.9, <3.14"
|
|
10
10
|
dynamic = [ "version", "readme",]
|
|
11
|
-
dependencies = [ "anyio>=3.5.0,<5", "cachetools>=3.1.1", "cloudpickle>=2.0.0", "
|
|
11
|
+
dependencies = [ "anyio>=3.5.0,<5", "cachetools>=3.1.1", "cloudpickle>=2.0.0", "fsspec[http]>=2024.6.1,<2026", "h2>=4.3.0,<5", "importlib_resources>=6.1.1, <7", "jinja2>=3.1.0,<4", "numpy>=1.23,<3", "packaging>=20.9,<26", "pandas>=2.1.4,<3", "platformdirs<5", "pyarrow", "pydantic>=2.8.2, <3", "pyjwt>=2.0.0, <3", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "scikit-learn<1.9", "scipy>=1.9,<2", "shap>=0.46.0,<1", "snowflake-connector-python[pandas]>=3.17.3,<5", "snowflake-snowpark-python>=1.17.0,<2,!=1.26.0", "sqlparse>=0.4,<1", "tqdm<5", "typing-extensions>=4.1.0,<5", "xgboost<4",]
|
|
12
12
|
[[project.authors]]
|
|
13
13
|
name = "Snowflake, Inc"
|
|
14
14
|
email = "support@snowflake.com"
|
|
@@ -24,13 +24,13 @@ Issues = "https://github.com/snowflakedb/snowflake-ml-python/issues"
|
|
|
24
24
|
Changelog = "https://github.com/snowflakedb/snowflake-ml-python/blob/master/CHANGELOG.md"
|
|
25
25
|
|
|
26
26
|
[project.optional-dependencies]
|
|
27
|
-
all = [ "altair>=5,<7", "catboost>=1.2.0, <2", "keras>=2.0.0,<4", "lightgbm>=4.1.0, <5", "mlflow>=2.16.0, <
|
|
27
|
+
all = [ "altair>=5,<7", "catboost>=1.2.0, <2", "keras>=2.0.0,<4", "lightgbm>=4.1.0, <5", "mlflow>=2.16.0, <4", "prophet>=1.1.0, <2", "sentence-transformers>=2.7.0,<6", "sentencepiece>=0.1.95,<0.3", "streamlit>=1.30.0,<2", "tensorflow>=2.17.0,<3", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "torchdata>=0.4,<1", "transformers>=4.39.3,!=4.51.3,<6",]
|
|
28
28
|
altair = [ "altair>=5,<7",]
|
|
29
29
|
catboost = [ "catboost>=1.2.0, <2",]
|
|
30
30
|
keras = [ "keras>=2.0.0,<4", "tensorflow>=2.17.0,<3", "torch>=2.0.1,<3",]
|
|
31
31
|
lightgbm = [ "lightgbm>=4.1.0, <5",]
|
|
32
|
-
llm = [ "mlflow>=2.16.0, <
|
|
33
|
-
mlflow = [ "mlflow>=2.16.0, <
|
|
32
|
+
llm = [ "mlflow>=2.16.0, <4", "sentence-transformers>=2.7.0,<6", "sentencepiece>=0.1.95,<0.3", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "torchdata>=0.4,<1", "transformers>=4.39.3,!=4.51.3,<6",]
|
|
33
|
+
mlflow = [ "mlflow>=2.16.0, <4",]
|
|
34
34
|
prophet = [ "prophet>=1.1.0, <2",]
|
|
35
35
|
streamlit = [ "streamlit>=1.30.0,<2",]
|
|
36
36
|
tensorflow = [ "tensorflow>=2.17.0,<3",]
|
|
@@ -270,4 +270,6 @@ class SqlResultValidator(ResultValidator):
|
|
|
270
270
|
|
|
271
271
|
def _get_result(self) -> list[snowpark.Row]:
|
|
272
272
|
"""Collect the result of the given SQL query."""
|
|
273
|
+
if self._params is None:
|
|
274
|
+
return self._session.sql(self._query).collect(statement_params=self._statement_params)
|
|
273
275
|
return self._session.sql(self._query, params=self._params).collect(statement_params=self._statement_params)
|
|
@@ -27,7 +27,6 @@ from typing_extensions import Concatenate, ParamSpec
|
|
|
27
27
|
|
|
28
28
|
import snowflake.ml.feature_store.feature_view as fv_mod
|
|
29
29
|
import snowflake.ml.version as snowml_version
|
|
30
|
-
from snowflake.ml import dataset
|
|
31
30
|
from snowflake.ml._internal import telemetry
|
|
32
31
|
from snowflake.ml._internal.exceptions import (
|
|
33
32
|
dataset_errors,
|
|
@@ -42,11 +41,15 @@ from snowflake.ml._internal.utils.sql_identifier import (
|
|
|
42
41
|
parse_fully_qualified_name,
|
|
43
42
|
to_sql_identifiers,
|
|
44
43
|
)
|
|
45
|
-
|
|
44
|
+
|
|
45
|
+
if TYPE_CHECKING:
|
|
46
|
+
from snowflake.ml import dataset
|
|
47
|
+
|
|
46
48
|
from snowflake.ml.feature_store import (
|
|
47
49
|
feature_group as fg_mod,
|
|
48
50
|
feature_view_append_only_validation,
|
|
49
51
|
feature_view_refresh_freq,
|
|
52
|
+
interval_utils,
|
|
50
53
|
online_service,
|
|
51
54
|
online_service_http_client,
|
|
52
55
|
realtime_dataset as rtfv_dataset,
|
|
@@ -447,6 +450,59 @@ class _FeatureStoreConfig:
|
|
|
447
450
|
return f"{self.database}.{self.schema}"
|
|
448
451
|
|
|
449
452
|
|
|
453
|
+
def _canonicalize_operational_fields(payload: dict[str, Any]) -> dict[str, Any]:
|
|
454
|
+
"""Return a canonicalized copy of an FV operational-field payload (Plan section A4).
|
|
455
|
+
|
|
456
|
+
Closes Bug 2 (``UPDATE_FV`` operational drift on tiled online BFVs) by
|
|
457
|
+
coercing two fields to a single representation that the diff logic in
|
|
458
|
+
``decl/invariants.py`` and ``decl/planner.py`` consumes symmetrically:
|
|
459
|
+
|
|
460
|
+
* ``online_store_type`` — lowercased and whitespace-stripped. Snowflake
|
|
461
|
+
``DESCRIBE … TYPE = SPECIFICATION`` returns mixed-case enum values
|
|
462
|
+
with surrounding whitespace; the local compile emits the lowercase
|
|
463
|
+
form. Without canonicalization the diff observes cosmetic drift on
|
|
464
|
+
a clean re-plan.
|
|
465
|
+
* ``target_lag_sec`` — always an ``int`` computed from the deployed
|
|
466
|
+
string form (``payload["target_lag"]``) via
|
|
467
|
+
:func:`interval_utils.interval_to_seconds`. The OFT may return
|
|
468
|
+
either ``"5 minutes"`` or ``"300 SECONDS"`` for the same value;
|
|
469
|
+
diffing on seconds (not strings) makes the comparison stable.
|
|
470
|
+
|
|
471
|
+
The helper is pure: the input ``payload`` is not mutated. Absent or
|
|
472
|
+
``None`` keys are preserved as-is so callers can chain this through a
|
|
473
|
+
pipeline of canonicalizers without re-introducing fields.
|
|
474
|
+
|
|
475
|
+
The ``"DOWNSTREAM"`` sentinel (CRON-task target_lag) is silently
|
|
476
|
+
skipped: the planner recovers the cron expression via the companion
|
|
477
|
+
Task, and ``interval_to_seconds`` would otherwise crash trying to
|
|
478
|
+
parse it.
|
|
479
|
+
|
|
480
|
+
Args:
|
|
481
|
+
payload: Operational-field dictionary, typically the
|
|
482
|
+
``spec_payload["spec"]`` shape that ``decl/`` consumes.
|
|
483
|
+
|
|
484
|
+
Returns:
|
|
485
|
+
A new dict (caller's payload is not mutated) with
|
|
486
|
+
``online_store_type`` and ``target_lag_sec`` in canonical form.
|
|
487
|
+
"""
|
|
488
|
+
out = dict(payload)
|
|
489
|
+
|
|
490
|
+
if "online_store_type" in out:
|
|
491
|
+
value = out["online_store_type"]
|
|
492
|
+
if isinstance(value, str):
|
|
493
|
+
out["online_store_type"] = value.strip().lower()
|
|
494
|
+
|
|
495
|
+
if "target_lag" in out and out["target_lag"] is not None:
|
|
496
|
+
target_lag_str = str(out["target_lag"])
|
|
497
|
+
if target_lag_str.strip().upper() != "DOWNSTREAM":
|
|
498
|
+
try:
|
|
499
|
+
out["target_lag_sec"] = int(interval_utils.interval_to_seconds(target_lag_str))
|
|
500
|
+
except (KeyError, ValueError, TypeError):
|
|
501
|
+
pass
|
|
502
|
+
|
|
503
|
+
return out
|
|
504
|
+
|
|
505
|
+
|
|
450
506
|
def switch_warehouse(
|
|
451
507
|
f: Callable[Concatenate[FeatureStore, _Args], _RT],
|
|
452
508
|
) -> Callable[Concatenate[FeatureStore, _Args], _RT]:
|
|
@@ -860,7 +916,12 @@ class FeatureStore:
|
|
|
860
916
|
|
|
861
917
|
return self.get_entity(entity.name)
|
|
862
918
|
|
|
863
|
-
def update_entity(
|
|
919
|
+
def update_entity(
|
|
920
|
+
self,
|
|
921
|
+
name: str,
|
|
922
|
+
*,
|
|
923
|
+
desc: Optional[str] = None,
|
|
924
|
+
) -> Optional[Entity]:
|
|
864
925
|
"""Update a registered entity with provided information.
|
|
865
926
|
|
|
866
927
|
Args:
|
|
@@ -908,9 +969,9 @@ class FeatureStore:
|
|
|
908
969
|
return None
|
|
909
970
|
|
|
910
971
|
new_desc = desc if desc is not None else found_rows[0]["DESC"]
|
|
972
|
+
full_name = f"{self._config.full_schema_path}.{self._get_entity_name(name)}"
|
|
911
973
|
|
|
912
974
|
try:
|
|
913
|
-
full_name = f"{self._config.full_schema_path}.{self._get_entity_name(name)}"
|
|
914
975
|
self._session.sql(f"ALTER TAG {full_name} SET COMMENT = {_sql_string_literal(new_desc)}").collect(
|
|
915
976
|
statement_params=self._telemetry_stmp
|
|
916
977
|
)
|
|
@@ -3783,6 +3844,11 @@ class FeatureStore:
|
|
|
3783
3844
|
-------------------------------------------------------
|
|
3784
3845
|
|
|
3785
3846
|
"""
|
|
3847
|
+
from snowflake.ml import (
|
|
3848
|
+
dataset, # lazy import — heavy deps (numpy/pandas/pyarrow)
|
|
3849
|
+
)
|
|
3850
|
+
from snowflake.ml.dataset.dataset_metadata import FeatureStoreMetadata
|
|
3851
|
+
|
|
3786
3852
|
if output_type not in {"table", "dataset"}:
|
|
3787
3853
|
raise snowml_exceptions.SnowflakeMLException(
|
|
3788
3854
|
error_code=error_codes.INVALID_ARGUMENT,
|
|
@@ -3904,6 +3970,10 @@ class FeatureStore:
|
|
|
3904
3970
|
1.0
|
|
3905
3971
|
|
|
3906
3972
|
"""
|
|
3973
|
+
from snowflake.ml.dataset.dataset_metadata import (
|
|
3974
|
+
FeatureStoreMetadata, # lazy import
|
|
3975
|
+
)
|
|
3976
|
+
|
|
3907
3977
|
assert ds.selected_version is not None
|
|
3908
3978
|
source_meta = ds.selected_version._get_metadata()
|
|
3909
3979
|
if (
|
|
@@ -7910,12 +7980,6 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
7910
7980
|
source_refs_meta = self._metadata_manager.get_feature_view_source_refs(name, version)
|
|
7911
7981
|
source_refs_json = json.dumps(source_refs_meta.sources) if source_refs_meta is not None else None
|
|
7912
7982
|
|
|
7913
|
-
# Surface the authored source-ref list (JSON-encoded) when a
|
|
7914
|
-
# ``FV_SOURCE_REFS`` row exists; otherwise leave the column null.
|
|
7915
|
-
# Verbose-only: goes into output_values_extra alongside backup_source.
|
|
7916
|
-
source_refs_meta = self._metadata_manager.get_feature_view_source_refs(name, version)
|
|
7917
|
-
source_refs_json = json.dumps(source_refs_meta.sources) if source_refs_meta is not None else None
|
|
7918
|
-
|
|
7919
7983
|
backup_source: Optional[str] = None
|
|
7920
7984
|
if fv_metadata.is_append_only:
|
|
7921
7985
|
append_only_meta = self._metadata_manager.get_append_only_metadata(name, version)
|
|
@@ -8099,11 +8163,6 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
8099
8163
|
source_refs_meta = self._metadata_manager.get_feature_view_source_refs(name.identifier(), version)
|
|
8100
8164
|
restored_source_refs = source_refs_meta.sources if source_refs_meta is not None else None
|
|
8101
8165
|
|
|
8102
|
-
# Rehydrate the authored source-ref list onto the reconstructed
|
|
8103
|
-
# FV when a ``FV_SOURCE_REFS`` row was persisted at register time.
|
|
8104
|
-
source_refs_meta = self._metadata_manager.get_feature_view_source_refs(name.identifier(), version)
|
|
8105
|
-
restored_source_refs = source_refs_meta.sources if source_refs_meta is not None else None
|
|
8106
|
-
|
|
8107
8166
|
if obj_type == _FeatureStoreObjTypes.MANAGED_FEATURE_VIEW:
|
|
8108
8167
|
df = self._session.sql(query)
|
|
8109
8168
|
entities = [find_and_compose_entity(n) for n in fv_metadata.entities]
|
|
@@ -8500,6 +8559,11 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
8500
8559
|
else:
|
|
8501
8560
|
source_clause = f"FROM {source_table_name}"
|
|
8502
8561
|
|
|
8562
|
+
# A view-backed source only lets the OFT refresh incrementally when it has change tracking
|
|
8563
|
+
# enabled; otherwise the backend silently downgrades the OFT to a FULL refresh. Enable it
|
|
8564
|
+
# before issuing the CREATE so the refresh mode is derived correctly.
|
|
8565
|
+
self._enable_source_view_change_tracking_for_incremental_oft(feature_view, source_table_name)
|
|
8566
|
+
|
|
8503
8567
|
# Create online feature table
|
|
8504
8568
|
try:
|
|
8505
8569
|
query = fv_mod.build_oft_create_sql(
|
|
@@ -8525,6 +8589,88 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
8525
8589
|
|
|
8526
8590
|
return online_table_name
|
|
8527
8591
|
|
|
8592
|
+
def _enable_source_view_change_tracking_for_incremental_oft(
|
|
8593
|
+
self,
|
|
8594
|
+
feature_view: FeatureView,
|
|
8595
|
+
fully_qualified_source_name: str,
|
|
8596
|
+
) -> None:
|
|
8597
|
+
"""Enable change tracking on a POSTGRES-backed OFT's source view so it can refresh incrementally.
|
|
8598
|
+
|
|
8599
|
+
The backend derives a spec-backed (POSTGRES) Online Feature Table's refresh mode from its
|
|
8600
|
+
source object. When that source is a plain View (static/external feature views), change
|
|
8601
|
+
tracking is off by default and the OFT silently falls back to a FULL refresh — an explicit
|
|
8602
|
+
``INCREMENTAL`` request even errors. Enabling change tracking on the view lets the OFT
|
|
8603
|
+
resolve to an incremental refresh.
|
|
8604
|
+
|
|
8605
|
+
This targets the object the OFT actually reads from at refresh time, and is a no-op
|
|
8606
|
+
otherwise:
|
|
8607
|
+
|
|
8608
|
+
- Managed feature views are backed by a Dynamic Table (change tracking is inherent to an
|
|
8609
|
+
incremental DT and cannot be enabled on a FULL one), so their OFT never reads from a
|
|
8610
|
+
plain view.
|
|
8611
|
+
- Streaming feature views may be backed offline by a view (a non-aggregated SFV with
|
|
8612
|
+
``refresh_freq is None`` materializes as a View), but their OFT is spec-backed by the
|
|
8613
|
+
UDF-transformed table / stream source (``FROM SPECIFICATION``) and refreshes
|
|
8614
|
+
continuously — it does not read from that offline view, so enabling change tracking on
|
|
8615
|
+
it would not affect the OFT.
|
|
8616
|
+
- Realtime feature views have no offline view at all.
|
|
8617
|
+
- HYBRID_TABLE-backed OFTs are out of scope. This targets the spec-backed refresh-mode
|
|
8618
|
+
derivation used by POSTGRES OFTs, and enabling change tracking has real side effects
|
|
8619
|
+
(it cascades to the view's base tables and requires ``OWNERSHIP`` on them), so we do not
|
|
8620
|
+
newly impose it on the legacy HYBRID_TABLE path — its behavior is left unchanged.
|
|
8621
|
+
|
|
8622
|
+
It is also skipped when the refresh mode is not one that benefits from change tracking
|
|
8623
|
+
(i.e., only AUTO, INCREMENTAL, and the default None proceed; FULL and unknown/future
|
|
8624
|
+
modes are conservatively skipped).
|
|
8625
|
+
|
|
8626
|
+
Args:
|
|
8627
|
+
feature_view: The FeatureView backing the online feature table.
|
|
8628
|
+
fully_qualified_source_name: ``DB.SCHEMA.SOURCE`` object the OFT reads from.
|
|
8629
|
+
|
|
8630
|
+
Raises:
|
|
8631
|
+
SnowflakeMLException: If enabling change tracking fails and the refresh mode is
|
|
8632
|
+
explicitly ``INCREMENTAL``. For ``AUTO`` or unset modes the failure is logged
|
|
8633
|
+
as a warning and the OFT falls back to FULL refresh.
|
|
8634
|
+
"""
|
|
8635
|
+
# Only POSTGRES-backed OFTs whose source is a plain View need this. The offline object is a
|
|
8636
|
+
# View exactly when refresh_freq is None (managed FVs are DT-backed); streaming/realtime FVs
|
|
8637
|
+
# are excluded because their OFT does not read from an offline view. HYBRID_TABLE is out of
|
|
8638
|
+
# scope: enabling change tracking has base-table side effects we don't impose on the legacy path.
|
|
8639
|
+
online_config = feature_view.online_config
|
|
8640
|
+
oft_reads_from_source_view = (
|
|
8641
|
+
online_config is not None
|
|
8642
|
+
and online_config.store_type == OnlineStoreType.POSTGRES
|
|
8643
|
+
and feature_view.refresh_freq is None
|
|
8644
|
+
and not feature_view.is_streaming
|
|
8645
|
+
and not feature_view.is_realtime_feature_view
|
|
8646
|
+
)
|
|
8647
|
+
if not oft_reads_from_source_view:
|
|
8648
|
+
return
|
|
8649
|
+
|
|
8650
|
+
refresh_mode = feature_view.refresh_mode
|
|
8651
|
+
if refresh_mode is not None and refresh_mode.upper() not in ("AUTO", "INCREMENTAL"):
|
|
8652
|
+
return
|
|
8653
|
+
|
|
8654
|
+
try:
|
|
8655
|
+
self._session.sql(fv_mod.build_enable_view_change_tracking_sql(fully_qualified_source_name)).collect(
|
|
8656
|
+
statement_params=self._telemetry_stmp
|
|
8657
|
+
)
|
|
8658
|
+
except SnowparkSQLException as e:
|
|
8659
|
+
if refresh_mode is not None and refresh_mode.upper() == "INCREMENTAL":
|
|
8660
|
+
raise snowml_exceptions.SnowflakeMLException(
|
|
8661
|
+
error_code=error_codes.SNOWML_CREATE_FAILED,
|
|
8662
|
+
original_exception=RuntimeError(
|
|
8663
|
+
f"Failed to enable change tracking on source view {fully_qualified_source_name}, "
|
|
8664
|
+
f"which the online feature table requires to refresh incrementally: {e}"
|
|
8665
|
+
),
|
|
8666
|
+
) from e
|
|
8667
|
+
logger.warning(
|
|
8668
|
+
"Could not enable change tracking on source view %s; "
|
|
8669
|
+
"the online feature table will use FULL refresh: %s",
|
|
8670
|
+
fully_qualified_source_name,
|
|
8671
|
+
e,
|
|
8672
|
+
)
|
|
8673
|
+
|
|
8528
8674
|
def _build_batch_feature_view_spec(
|
|
8529
8675
|
self,
|
|
8530
8676
|
feature_view: FeatureView,
|
{snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/feature_store/feature_view.py
RENAMED
|
@@ -66,6 +66,34 @@ _PG_IDENTIFIER_BYTE_LIMIT = 63
|
|
|
66
66
|
_POSTGRES_ONLINE_MAX_NAME_VERSION_LEN = 45
|
|
67
67
|
_POSTGRES_ONLINE_MAX_COLUMN_LEN = 30
|
|
68
68
|
|
|
69
|
+
# The online-store schema is derived as "{schema}__{oft_id}", so its budget reserves room for the "__"
|
|
70
|
+
# separator and a 19-digit (64-bit) oft_id, keeping the derived identifier within the limit (63 - 2 - 19).
|
|
71
|
+
_POSTGRES_ONLINE_MAX_SCHEMA_LEN = 42
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def validate_postgres_online_schema_length(feature_store_schema: str) -> None:
|
|
75
|
+
"""Reject a Feature Store schema too long for the Postgres online-store schema identifier.
|
|
76
|
+
|
|
77
|
+
The online store derives its schema as "{feature_store_schema}__{oft_id}" and must fit PostgreSQL's
|
|
78
|
+
63-byte identifier limit, so the budget reserves room for the "__" separator and the downstream-assigned
|
|
79
|
+
oft_id. Called from :func:`online_service.create_online_service`, before any feature view or feature
|
|
80
|
+
group is materialized.
|
|
81
|
+
|
|
82
|
+
Args:
|
|
83
|
+
feature_store_schema: The Feature Store schema name that will prefix the Postgres online-store
|
|
84
|
+
schema.
|
|
85
|
+
|
|
86
|
+
Raises:
|
|
87
|
+
ValueError: If the schema length exceeds the Postgres online-store budget.
|
|
88
|
+
"""
|
|
89
|
+
if len(feature_store_schema) > _POSTGRES_ONLINE_MAX_SCHEMA_LEN:
|
|
90
|
+
raise ValueError(
|
|
91
|
+
f"feature store schema '{feature_store_schema}' is too long for the Postgres online store: "
|
|
92
|
+
f"it uses {len(feature_store_schema)} characters, but the limit is "
|
|
93
|
+
f"{_POSTGRES_ONLINE_MAX_SCHEMA_LEN}. Use a shorter Feature Store schema."
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
|
|
69
97
|
_RESULT_SCAN_QUERY_PATTERN = re.compile(
|
|
70
98
|
r".*FROM\s*TABLE\s*\(\s*RESULT_SCAN\s*\(.*",
|
|
71
99
|
flags=re.DOTALL | re.IGNORECASE | re.X,
|
|
@@ -2921,6 +2949,27 @@ def build_oft_warehouse_clause(
|
|
|
2921
2949
|
return ""
|
|
2922
2950
|
|
|
2923
2951
|
|
|
2952
|
+
def build_enable_view_change_tracking_sql(fully_qualified_view_name: str) -> str:
|
|
2953
|
+
"""Build ``ALTER VIEW ... SET CHANGE_TRACKING = TRUE`` for an OFT source view.
|
|
2954
|
+
|
|
2955
|
+
An Online Feature Table can only resolve to an incremental refresh when the
|
|
2956
|
+
object it reads from exposes change tracking. Managed feature views are
|
|
2957
|
+
backed by a Dynamic Table (change tracking is inherent to an incremental DT
|
|
2958
|
+
and cannot be enabled on a FULL one), but static/external feature views are
|
|
2959
|
+
backed by a plain View that has change tracking disabled by default. Without
|
|
2960
|
+
it the backend silently downgrades the OFT to a FULL refresh. This statement
|
|
2961
|
+
is a no-op when change tracking is already enabled.
|
|
2962
|
+
|
|
2963
|
+
Args:
|
|
2964
|
+
fully_qualified_view_name: ``DB.SCHEMA.VIEW`` the Online Feature Table
|
|
2965
|
+
reads from.
|
|
2966
|
+
|
|
2967
|
+
Returns:
|
|
2968
|
+
The ``ALTER VIEW ... SET CHANGE_TRACKING = TRUE`` SQL.
|
|
2969
|
+
"""
|
|
2970
|
+
return f"ALTER VIEW {fully_qualified_view_name} SET CHANGE_TRACKING = TRUE"
|
|
2971
|
+
|
|
2972
|
+
|
|
2924
2973
|
def build_oft_create_sql(
|
|
2925
2974
|
*,
|
|
2926
2975
|
fully_qualified_oft_name: str,
|
|
@@ -241,6 +241,16 @@ def create_online_service(
|
|
|
241
241
|
error_code=error_codes.INVALID_ARGUMENT,
|
|
242
242
|
original_exception=ValueError("producer_role and consumer_role must be non-empty."),
|
|
243
243
|
)
|
|
244
|
+
from snowflake.ml.feature_store.feature_view import (
|
|
245
|
+
validate_postgres_online_schema_length,
|
|
246
|
+
)
|
|
247
|
+
|
|
248
|
+
try:
|
|
249
|
+
validate_postgres_online_schema_length(schema.resolved())
|
|
250
|
+
except ValueError as e:
|
|
251
|
+
raise snowml_exceptions.SnowflakeMLException(
|
|
252
|
+
error_code=error_codes.INVALID_ARGUMENT, original_exception=e
|
|
253
|
+
) from e
|
|
244
254
|
payload = json.dumps(
|
|
245
255
|
{
|
|
246
256
|
"roles": {
|
|
@@ -48,6 +48,8 @@ def remote(
|
|
|
48
48
|
runtime_environment (str): The runtime image to use. Only support image tag or full image URL,
|
|
49
49
|
e.g. "1.7.1" or "image_repo/image_name:image_tag". When it refers to a full image URL,
|
|
50
50
|
it should contain image repository, image name and image tag.
|
|
51
|
+
artifact_repositories (list[str]): (Public Preview) A list of artifact repositories to use for
|
|
52
|
+
resolving pip requirements. Each entry is the name of a Snowflake artifact repository.
|
|
51
53
|
name (str): The name of the job. If not specified, a name will be generated based on the
|
|
52
54
|
entrypoint file name or function name. A unique suffix is appended to the final name.
|
|
53
55
|
|
{snowflake_ml_python-1.49.0 → snowflake_ml_python-1.51.0}/snowflake/ml/jobs/job_definition.py
RENAMED
|
@@ -102,6 +102,7 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
102
102
|
database: Optional[str] = None,
|
|
103
103
|
schema: Optional[str] = None,
|
|
104
104
|
payload: Optional[payload_utils.JobPayload] = None,
|
|
105
|
+
artifact_repositories: Optional[list[str]] = None,
|
|
105
106
|
) -> None:
|
|
106
107
|
self.source = source
|
|
107
108
|
self.compute_pool = identifier.resolve_identifier(compute_pool)
|
|
@@ -122,6 +123,7 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
122
123
|
self.runtime_environment = runtime_environment
|
|
123
124
|
self.overwrite = overwrite
|
|
124
125
|
self.payload = payload
|
|
126
|
+
self.artifact_repositories = artifact_repositories
|
|
125
127
|
|
|
126
128
|
self._is_registered = False
|
|
127
129
|
|
|
@@ -197,6 +199,7 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
197
199
|
spec_overrides=self.spec_overrides,
|
|
198
200
|
runtime=self.runtime_environment if self.runtime_environment else None,
|
|
199
201
|
enable_stage_mount_v2=feature_flags.FeatureFlags.ENABLE_STAGE_MOUNT_V2.is_enabled(),
|
|
202
|
+
artifact_repositories=self.artifact_repositories if self.artifact_repositories else None,
|
|
200
203
|
)
|
|
201
204
|
|
|
202
205
|
self.job_options = type_utils.JobOptions(
|
|
@@ -304,6 +307,9 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
304
307
|
target_instances = kwargs.pop("target_instances", 1)
|
|
305
308
|
min_instances = kwargs.pop("min_instances", target_instances)
|
|
306
309
|
pip_requirements = kwargs.pop("pip_requirements", None)
|
|
310
|
+
artifact_repositories = kwargs.pop("artifact_repositories", None)
|
|
311
|
+
if artifact_repositories is not None:
|
|
312
|
+
logger.warning("'artifact_repositories' is in public preview since 1.50.0.")
|
|
307
313
|
external_access_integrations = kwargs.pop("external_access_integrations", None)
|
|
308
314
|
env_vars = kwargs.pop("env_vars", None)
|
|
309
315
|
spec_overrides = kwargs.pop("spec_overrides", None)
|
|
@@ -368,6 +374,7 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
368
374
|
database=database,
|
|
369
375
|
schema=schema,
|
|
370
376
|
payload=payload,
|
|
377
|
+
artifact_repositories=artifact_repositories,
|
|
371
378
|
)
|
|
372
379
|
|
|
373
380
|
@classmethod
|
|
@@ -235,6 +235,8 @@ def submit_file(
|
|
|
235
235
|
runtime_environment (str): The runtime image to use. Only support image tag or full image URL,
|
|
236
236
|
e.g. "1.7.1" or "image_repo/image_name:image_tag". When it refers to a full image URL,
|
|
237
237
|
it should contain image repository, image name and image tag.
|
|
238
|
+
artifact_repositories (list[str]): (Public Preview) A list of artifact repositories to use for
|
|
239
|
+
resolving pip requirements. Each entry is the name of a Snowflake artifact repository.
|
|
238
240
|
name (str): The name of the job. If not specified, a name will be generated based on the
|
|
239
241
|
entrypoint file name or function name. A unique suffix is appended to the final name.
|
|
240
242
|
|
|
@@ -298,6 +300,8 @@ def submit_directory(
|
|
|
298
300
|
runtime_environment (str): The runtime image to use. Only support image tag or full image URL,
|
|
299
301
|
e.g. "1.7.1" or "image_repo/image_name:image_tag". When it refers to a full image URL,
|
|
300
302
|
it should contain image repository, image name and image tag.
|
|
303
|
+
artifact_repositories (list[str]): (Public Preview) A list of artifact repositories to use for
|
|
304
|
+
resolving pip requirements. Each entry is the name of a Snowflake artifact repository.
|
|
301
305
|
name (str): The name of the job. If not specified, a name will be generated based on the
|
|
302
306
|
entrypoint file name or function name. A unique suffix is appended to the final name.
|
|
303
307
|
|
|
@@ -363,6 +367,8 @@ def submit_from_stage(
|
|
|
363
367
|
runtime_environment (str): The runtime image to use. Only support image tag or full image URL,
|
|
364
368
|
e.g. "1.7.1" or "image_repo/image_name:image_tag". When it refers to a full image URL,
|
|
365
369
|
it should contain image repository, image name and image tag.
|
|
370
|
+
artifact_repositories (list[str]): (Public Preview) A list of artifact repositories to use for
|
|
371
|
+
resolving pip requirements. Each entry is the name of a Snowflake artifact repository.
|
|
366
372
|
name (str): The name of the job. If not specified, a name will be generated based on the
|
|
367
373
|
entrypoint file name or function name. A unique suffix is appended to the final name.
|
|
368
374
|
|