snowflake-ml-python 1.38.0__tar.gz → 1.39.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.38.0 → snowflake_ml_python-1.39.0}/CHANGELOG.md +32 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/PKG-INFO +33 -1
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/aggregation.py +18 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/feature.py +5 -2
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/feature_store.py +190 -35
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/feature_view.py +194 -4
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/tile_sql_generator.py +260 -11
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/constants.py +1 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/job_definition.py +5 -1
- snowflake_ml_python-1.39.0/snowflake/ml/model/_client/model/batch_inference_task.py +220 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_composer.py +2 -1
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +5 -1
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -5
- snowflake_ml_python-1.39.0/snowflake/ml/model/_model_composer/model_method/infer_partitioned_init_once.py_template +106 -0
- snowflake_ml_python-1.39.0/snowflake/ml/model/_model_composer/model_method/infer_table_function_init_once.py_template +106 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +4 -4
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_env/model_env.py +36 -4
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +58 -5
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +18 -32
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_packager.py +2 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/batch/__init__.py +2 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/type_hints.py +2 -2
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/registry/_manager/model_manager.py +1 -1
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/registry/_manager/model_parameter_reconciler.py +147 -23
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/utils/stage_file.py +17 -3
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/version.py +1 -1
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake_ml_python.egg-info/PKG-INFO +33 -1
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake_ml_python.egg-info/SOURCES.txt +3 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/LICENSE.txt +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/README.md +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/pyproject.toml +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/setup.cfg +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_classify_text.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_complete.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_embed_text_1024.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_embed_text_768.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_extract_answer.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_finetune.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_sentiment.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_sse_client.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_summarize.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_translate.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/cortex/_util.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/env.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/env_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/file_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/init_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/platform_capabilities.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/telemetry.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/type_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/identifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/mixins.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/result.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/service_logger.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/tee.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/_internal/utils/url.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/data/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/data/data_connector.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/data/data_ingestor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/data/data_source.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/data/ingestor_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/data/torch_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/dataset/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/dataset/dataset.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_client/artifact.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_entities/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_entities/experiment.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_entities/run.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_experiment_info.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_logging/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_logging/experiment_logger.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/_logging/experiment_logging_context.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/callback/keras.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/callback/lightgbm.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/callback/xgboost.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/experiment_tracking.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/experiment/utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/access_manager.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/entity.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/interval_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/metadata_manager.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/online_service.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/online_service_http_client.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/request_source.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/spec/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/spec/builder.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/spec/enums.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/spec/models.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/stream_config.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/stream_source.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/streaming_registration.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/fileset/fileset.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/fileset/sfcfs.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/fileset/snowfs.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/fileset/stage_fs.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/data_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/dto_schema.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/exception_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/legacy.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/protocols.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/results.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_interop/utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/arg_protocol.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/feature_flags.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/payload_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/query_helper.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/runtime_env_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/scripts/constants.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/scripts/start_mlruntime.sh +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/scripts/startup.sh +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/stage_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/_utils/type_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/decorators.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/job.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/jobs/manager.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/lineage/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/lineage/lineage_node.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/model/batch_inference_definition.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/model/batch_inference_serialization.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/model/batch_inference_specs.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/model/inference_engine_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/model/model_impl.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/model/model_version_impl.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/ops/deployment_step.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/ops/model_ops.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/ops/param_ops.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/ops/param_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/ops/service_ops.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/service/import_model_spec_schema.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/sql/model.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/sql/model_version.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/sql/service.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/sql/stage.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/infer_function_init_once.py_template +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_method/utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_default.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_handler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_openai_chat_wrapper.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_task_handler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/audio_text_to_text.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/automatic_speech_recognition.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/conversational.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/document_question_answering.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/fill_mask.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_classification.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_feature_extraction.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_text_to_text.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_to_text.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/object_detection.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/question_answering.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/summarization.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/table_question_answering.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text2text_generation.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_classification.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_generation.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/token_classification.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/translation.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_classification.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_text_to_text.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/visual_question_answering.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_audio_classification.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_image_classification.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_object_detection.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_text_classification.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/prophet.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/core.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/_signatures/utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/code_path.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/compute_pool.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/custom_model.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/event_handler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/inference_engine.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/model_signature.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/models/huggingface.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/openai_signatures.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/target_platform.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/task.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/model/volatility.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/birch.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/k_means.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/optics.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/oas.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/pca.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/framework/base.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/lars.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/manifold/isomap.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/manifold/mds.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/manifold/tsne.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/svm/svc.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/svm/svr.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/explain_visualize.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/model_monitor.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/monitoring/shap.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/registry/__init__.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/registry/registry.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/utils/authentication.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/utils/html_utils.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/utils/sparse.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/utils/sql_client.py +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake_ml_python.egg-info/requires.txt +0 -0
- {snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake_ml_python.egg-info/top_level.txt +0 -0
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Release History
|
|
2
2
|
|
|
3
|
+
## 1.39.0
|
|
4
|
+
|
|
5
|
+
### New Features
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* Feature Store: `update_feature_view` now correctly handles every transition between duration-based
|
|
10
|
+
and CRON-based `refresh_freq`. Previously a CRON expression was forwarded to the Dynamic Table's
|
|
11
|
+
`TARGET_LAG` (which Snowflake rejects), `duration → cron` failed because the companion Task did not
|
|
12
|
+
yet exist, and `cron → duration` left the Task orphaned and continuing to fire on its old schedule.
|
|
13
|
+
All four `(old, new)` transitions now correctly create, alter, or drop the Task as needed, with
|
|
14
|
+
symmetric rollback on failure.
|
|
15
|
+
|
|
16
|
+
### Behavior Changes
|
|
17
|
+
|
|
18
|
+
* Feature Store: For CRON-based feature views, `get_feature_view()`, `list_feature_views()`, and
|
|
19
|
+
`register_feature_view()` now return the original cron expression as `refresh_freq` instead of
|
|
20
|
+
`"DOWNSTREAM"`. The underlying Dynamic Table still uses `TARGET_LAG = 'DOWNSTREAM'` with a companion
|
|
21
|
+
Task — this is purely a display change so the round-trip preserves what the user passed in.
|
|
22
|
+
|
|
23
|
+
* Registry: When `target_platforms` includes WAREHOUSE and pip installs are needed without a user-supplied
|
|
24
|
+
`pip` artifact repository, `log_model` injects `snowflake.snowpark.pypi_shared_repository` after
|
|
25
|
+
verifying access. This applies to explicit `pip_requirements` and to pip-only packaging when there are
|
|
26
|
+
no user conda dependencies. If `pypi_shared_repository` is inaccessible in the pip-only case, automatic packaging
|
|
27
|
+
dependencies fall back to conda instead of forcing pip-only without an index.
|
|
28
|
+
|
|
29
|
+
### Deprecations
|
|
30
|
+
|
|
3
31
|
## 1.38.0
|
|
4
32
|
|
|
5
33
|
### New Features
|
|
@@ -27,6 +55,10 @@
|
|
|
27
55
|
|
|
28
56
|
### New Features
|
|
29
57
|
|
|
58
|
+
* Registry (PrPr): The `model_init_once` save option now applies to **TABLE_FUNCTION** model methods (including
|
|
59
|
+
partitioned table functions) for warehouse deployments, in addition to scalar **FUNCTION** methods. The generated
|
|
60
|
+
handler uses the same eager `@udf_init_once` model load path as UDFs.
|
|
61
|
+
|
|
30
62
|
* Experiment Tracking: `end_run` now accepts an optional `status` argument (`"FINISHED"` or `"FAILED"`) to explicitly
|
|
31
63
|
set the final run status. When a run's context manager exits with an exception, the status is automatically set to
|
|
32
64
|
`"FAILED"`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-ml-python
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.39.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:
|
|
@@ -416,6 +416,34 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
|
416
416
|
|
|
417
417
|
# Release History
|
|
418
418
|
|
|
419
|
+
## 1.39.0
|
|
420
|
+
|
|
421
|
+
### New Features
|
|
422
|
+
|
|
423
|
+
### Bug Fixes
|
|
424
|
+
|
|
425
|
+
* Feature Store: `update_feature_view` now correctly handles every transition between duration-based
|
|
426
|
+
and CRON-based `refresh_freq`. Previously a CRON expression was forwarded to the Dynamic Table's
|
|
427
|
+
`TARGET_LAG` (which Snowflake rejects), `duration → cron` failed because the companion Task did not
|
|
428
|
+
yet exist, and `cron → duration` left the Task orphaned and continuing to fire on its old schedule.
|
|
429
|
+
All four `(old, new)` transitions now correctly create, alter, or drop the Task as needed, with
|
|
430
|
+
symmetric rollback on failure.
|
|
431
|
+
|
|
432
|
+
### Behavior Changes
|
|
433
|
+
|
|
434
|
+
* Feature Store: For CRON-based feature views, `get_feature_view()`, `list_feature_views()`, and
|
|
435
|
+
`register_feature_view()` now return the original cron expression as `refresh_freq` instead of
|
|
436
|
+
`"DOWNSTREAM"`. The underlying Dynamic Table still uses `TARGET_LAG = 'DOWNSTREAM'` with a companion
|
|
437
|
+
Task — this is purely a display change so the round-trip preserves what the user passed in.
|
|
438
|
+
|
|
439
|
+
* Registry: When `target_platforms` includes WAREHOUSE and pip installs are needed without a user-supplied
|
|
440
|
+
`pip` artifact repository, `log_model` injects `snowflake.snowpark.pypi_shared_repository` after
|
|
441
|
+
verifying access. This applies to explicit `pip_requirements` and to pip-only packaging when there are
|
|
442
|
+
no user conda dependencies. If `pypi_shared_repository` is inaccessible in the pip-only case, automatic packaging
|
|
443
|
+
dependencies fall back to conda instead of forcing pip-only without an index.
|
|
444
|
+
|
|
445
|
+
### Deprecations
|
|
446
|
+
|
|
419
447
|
## 1.38.0
|
|
420
448
|
|
|
421
449
|
### New Features
|
|
@@ -443,6 +471,10 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
|
443
471
|
|
|
444
472
|
### New Features
|
|
445
473
|
|
|
474
|
+
* Registry (PrPr): The `model_init_once` save option now applies to **TABLE_FUNCTION** model methods (including
|
|
475
|
+
partitioned table functions) for warehouse deployments, in addition to scalar **FUNCTION** methods. The generated
|
|
476
|
+
handler uses the same eager `@udf_init_once` model load path as UDFs.
|
|
477
|
+
|
|
446
478
|
* Experiment Tracking: `end_run` now accepts an optional `status` argument (`"FINISHED"` or `"FAILED"`) to explicitly
|
|
447
479
|
set the final run status. When a run's context manager exits with an exception, the status is automatically set to
|
|
448
480
|
`"FAILED"`.
|
{snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/aggregation.py
RENAMED
|
@@ -27,6 +27,7 @@ class AggregationType(Enum):
|
|
|
27
27
|
- Simple aggregations (SUM, COUNT, AVG, MIN, MAX, STD, VAR): Stored as scalar partial results in tiles
|
|
28
28
|
- Sketch aggregations (APPROX_COUNT_DISTINCT, APPROX_PERCENTILE): Stored as mergeable state in tiles
|
|
29
29
|
- List aggregations (LAST_N, LAST_DISTINCT_N, FIRST_N, FIRST_DISTINCT_N): Stored as arrays in tiles
|
|
30
|
+
- Secondary-key array (_SECONDARY_KEY_ARRAY): Internal-only ARRAY_AGG of the secondary-key column
|
|
30
31
|
"""
|
|
31
32
|
|
|
32
33
|
SUM = "sum"
|
|
@@ -42,6 +43,7 @@ class AggregationType(Enum):
|
|
|
42
43
|
LAST_DISTINCT_N = "last_distinct_n"
|
|
43
44
|
FIRST_N = "first_n"
|
|
44
45
|
FIRST_DISTINCT_N = "first_distinct_n"
|
|
46
|
+
_SECONDARY_KEY_ARRAY = "secondary_key_array"
|
|
45
47
|
|
|
46
48
|
def is_simple(self) -> bool:
|
|
47
49
|
"""Check if this is a simple aggregation (scalar result per tile).
|
|
@@ -81,6 +83,10 @@ class AggregationType(Enum):
|
|
|
81
83
|
AggregationType.APPROX_PERCENTILE,
|
|
82
84
|
)
|
|
83
85
|
|
|
86
|
+
def is_secondary_key_array(self) -> bool:
|
|
87
|
+
"""Check if this is the synthesized secondary-key ``ARRAY_AGG`` type."""
|
|
88
|
+
return self == AggregationType._SECONDARY_KEY_ARRAY
|
|
89
|
+
|
|
84
90
|
|
|
85
91
|
# Internal column name prefixes used in tile tables.
|
|
86
92
|
# WARNING: Changing these will break existing registered tiled feature views.
|
|
@@ -169,6 +175,18 @@ class AggregationSpec:
|
|
|
169
175
|
f"'{self.output_column}', got: {percentile}"
|
|
170
176
|
)
|
|
171
177
|
|
|
178
|
+
# Validate _SECONDARY_KEY_ARRAY specs
|
|
179
|
+
if self.function.is_secondary_key_array():
|
|
180
|
+
if self.params:
|
|
181
|
+
raise ValueError(
|
|
182
|
+
f"_SECONDARY_KEY_ARRAY aggregation '{self.output_column}' must not carry params, "
|
|
183
|
+
f"got: {self.params}"
|
|
184
|
+
)
|
|
185
|
+
if is_lifetime_window(self.window):
|
|
186
|
+
raise ValueError(
|
|
187
|
+
f"_SECONDARY_KEY_ARRAY aggregation '{self.output_column}' cannot use a lifetime window."
|
|
188
|
+
)
|
|
189
|
+
|
|
172
190
|
# Validate lifetime window support
|
|
173
191
|
# Only simple scalar aggregations support lifetime (O(1) via cumulative columns)
|
|
174
192
|
if is_lifetime_window(self.window):
|
{snowflake_ml_python-1.38.0 → snowflake_ml_python-1.39.0}/snowflake/ml/feature_store/feature.py
RENAMED
|
@@ -17,6 +17,8 @@ from snowflake.ml.feature_store.aggregation import (
|
|
|
17
17
|
)
|
|
18
18
|
|
|
19
19
|
_NO_OFFSET = "0"
|
|
20
|
+
_KEYS = "keys"
|
|
21
|
+
_LIFETIME = "lifetime"
|
|
20
22
|
|
|
21
23
|
|
|
22
24
|
class Feature:
|
|
@@ -95,10 +97,11 @@ class Feature:
|
|
|
95
97
|
def _default_output_name(self) -> str:
|
|
96
98
|
"""Generate a default output column name."""
|
|
97
99
|
if is_lifetime_window(self._window):
|
|
98
|
-
window_suffix =
|
|
100
|
+
window_suffix = _LIFETIME
|
|
99
101
|
else:
|
|
100
102
|
window_suffix = self._window.replace(" ", "").lower()
|
|
101
|
-
|
|
103
|
+
function_value = _KEYS if self._function.is_secondary_key_array() else self._function.value
|
|
104
|
+
base_name = f"{self._column}_{function_value}_{window_suffix}"
|
|
102
105
|
|
|
103
106
|
offset_seconds = interval_to_seconds(self._offset) if self._offset != _NO_OFFSET else 0
|
|
104
107
|
if offset_seconds > 0:
|
|
@@ -1963,10 +1963,11 @@ class FeatureStore:
|
|
|
1963
1963
|
self._session.sql(f"DROP DYNAMIC TABLE IF EXISTS {fully_qualified_name}").collect(
|
|
1964
1964
|
statement_params=self._telemetry_stmp
|
|
1965
1965
|
)
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1966
|
+
# CRON-based FVs have a companion Task with the same name. Drop it
|
|
1967
|
+
# unconditionally — IF EXISTS makes this a no-op for duration-based FVs.
|
|
1968
|
+
self._session.sql(f"DROP TASK IF EXISTS {fully_qualified_name}").collect(
|
|
1969
|
+
statement_params=self._telemetry_stmp
|
|
1970
|
+
)
|
|
1970
1971
|
|
|
1971
1972
|
# Delete online feature table if it exists
|
|
1972
1973
|
if feature_view.online:
|
|
@@ -3000,30 +3001,127 @@ class FeatureStore:
|
|
|
3000
3001
|
)
|
|
3001
3002
|
|
|
3002
3003
|
def _build_offline_update_queries(
|
|
3003
|
-
self,
|
|
3004
|
-
|
|
3005
|
-
|
|
3004
|
+
self,
|
|
3005
|
+
feature_view: FeatureView,
|
|
3006
|
+
refresh_freq: Optional[str],
|
|
3007
|
+
warehouse: Optional[str],
|
|
3008
|
+
desc: str,
|
|
3009
|
+
) -> tuple[list[tuple[str, str]], list[tuple[str, str]]]:
|
|
3010
|
+
"""Build offline update operations and their rollback operations.
|
|
3011
|
+
|
|
3012
|
+
For CRON-based refresh, the DT must keep ``TARGET_LAG = 'DOWNSTREAM'``
|
|
3013
|
+
and the actual cron schedule lives on a companion Task — Dynamic Tables
|
|
3014
|
+
do not accept cron expressions in ``TARGET_LAG``. Duration-based refresh
|
|
3015
|
+
sets ``TARGET_LAG`` directly on the DT and there is no Task.
|
|
3016
|
+
|
|
3017
|
+
The presence/absence of the companion Task is what disambiguates a
|
|
3018
|
+
user-set ``refresh_freq='DOWNSTREAM'`` from a cron-driven FV (whose DT
|
|
3019
|
+
also carries ``TARGET_LAG='DOWNSTREAM'``) when reading state back via
|
|
3020
|
+
``get_feature_view``. Maintain that invariant across all four
|
|
3021
|
+
``(old_kind, new_kind)`` transitions:
|
|
3022
|
+
|
|
3023
|
+
duration ↔ duration : DT-only ALTER; no Task involvement.
|
|
3024
|
+
duration → cron : ALTER DT to DOWNSTREAM, then create the Task.
|
|
3025
|
+
cron → duration : ALTER DT to the new lag, then drop the Task.
|
|
3026
|
+
cron ↔ cron : ALTER DT, then SUSPEND/SET SCHEDULE/RESUME the Task.
|
|
3027
|
+
|
|
3028
|
+
("duration" above includes a literal ``"DOWNSTREAM"`` value.)
|
|
3029
|
+
|
|
3030
|
+
Args:
|
|
3031
|
+
feature_view: The currently registered ``FeatureView`` whose
|
|
3032
|
+
offline state is being mutated; supplies the existing
|
|
3033
|
+
refresh_freq/warehouse/desc used to construct the rollback.
|
|
3034
|
+
refresh_freq: New refresh frequency requested by the caller, or
|
|
3035
|
+
``None`` to keep the existing value.
|
|
3036
|
+
warehouse: New warehouse identifier requested by the caller, or
|
|
3037
|
+
``None`` to keep the existing value.
|
|
3038
|
+
desc: New description to set on the DT/view.
|
|
3039
|
+
|
|
3040
|
+
Returns:
|
|
3041
|
+
A tuple of ``(operations, rollback_operations)`` where each is a
|
|
3042
|
+
list of ``(op_type, sql)`` tuples consumable by
|
|
3043
|
+
``_execute_atomic_operations``.
|
|
3044
|
+
"""
|
|
3045
|
+
fqn = feature_view.fully_qualified_name()
|
|
3046
|
+
|
|
3006
3047
|
if feature_view.status == FeatureViewStatus.STATIC:
|
|
3007
|
-
|
|
3008
|
-
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
3023
|
-
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3048
|
+
return [("OFFLINE_UPDATE", f"ALTER VIEW {fqn} SET COMMENT = '{desc}'")], []
|
|
3049
|
+
|
|
3050
|
+
# Managed (Dynamic-Table-backed) FVs always have a refresh_freq — the
|
|
3051
|
+
# only refresh_freq=None case is an external (View-backed) FV, which
|
|
3052
|
+
# is STATIC and handled above.
|
|
3053
|
+
assert feature_view.refresh_freq is not None, "Managed FV must have a refresh_freq"
|
|
3054
|
+
new_warehouse = SqlIdentifier(warehouse) if warehouse else feature_view.warehouse
|
|
3055
|
+
old_warehouse = feature_view.warehouse
|
|
3056
|
+
effective_freq: str = refresh_freq if refresh_freq is not None else feature_view.refresh_freq
|
|
3057
|
+
new_is_cron = effective_freq != "DOWNSTREAM" and timeparse(effective_freq) is None
|
|
3058
|
+
old_freq: str = feature_view.refresh_freq
|
|
3059
|
+
old_is_cron = old_freq != "DOWNSTREAM" and timeparse(old_freq) is None
|
|
3060
|
+
|
|
3061
|
+
new_target_lag = "DOWNSTREAM" if new_is_cron else effective_freq
|
|
3062
|
+
old_target_lag = "DOWNSTREAM" if old_is_cron else old_freq
|
|
3063
|
+
|
|
3064
|
+
def alter_dt(op_type: str, *, target_lag: str, wh: Optional[SqlIdentifier], comment: str) -> tuple[str, str]:
|
|
3065
|
+
return (
|
|
3066
|
+
op_type,
|
|
3067
|
+
f"ALTER DYNAMIC TABLE {fqn} SET TARGET_LAG = '{target_lag}'" f" WAREHOUSE = {wh} COMMENT = '{comment}'",
|
|
3068
|
+
)
|
|
3069
|
+
|
|
3070
|
+
def create_task_ops(op_type: str, *, cron_expr: str, wh: Optional[SqlIdentifier]) -> list[tuple[str, str]]:
|
|
3071
|
+
# CREATE OR REPLACE keeps the operation idempotent even if a stale
|
|
3072
|
+
# task with the same name happens to exist (e.g. partial prior failure).
|
|
3073
|
+
task_obj_info = _FeatureStoreObjInfo(
|
|
3074
|
+
_FeatureStoreObjTypes.FEATURE_VIEW_REFRESH_TASK, snowml_version.VERSION
|
|
3075
|
+
)
|
|
3076
|
+
tag_path = self._get_fully_qualified_name(_FEATURE_STORE_OBJECT_TAG)
|
|
3077
|
+
return [
|
|
3078
|
+
(
|
|
3079
|
+
op_type,
|
|
3080
|
+
f"CREATE OR REPLACE TASK {fqn} WAREHOUSE = {wh} "
|
|
3081
|
+
f"SCHEDULE = 'USING CRON {cron_expr}' "
|
|
3082
|
+
f"AS ALTER DYNAMIC TABLE {fqn} REFRESH",
|
|
3083
|
+
),
|
|
3084
|
+
(op_type, f"ALTER TASK {fqn} SET TAG {tag_path}='{task_obj_info.to_json()}'"),
|
|
3085
|
+
(op_type, f"ALTER TASK {fqn} RESUME"),
|
|
3086
|
+
]
|
|
3087
|
+
|
|
3088
|
+
def drop_task_op(op_type: str) -> tuple[str, str]:
|
|
3089
|
+
return (op_type, f"DROP TASK IF EXISTS {fqn}")
|
|
3090
|
+
|
|
3091
|
+
def alter_task_schedule_ops(op_type: str, *, cron_expr: str) -> list[tuple[str, str]]:
|
|
3092
|
+
# ALTER TASK SET SCHEDULE requires the task to be suspended.
|
|
3093
|
+
return [
|
|
3094
|
+
(op_type, f"ALTER TASK {fqn} SUSPEND"),
|
|
3095
|
+
(op_type, f"ALTER TASK {fqn} SET SCHEDULE = 'USING CRON {cron_expr}'"),
|
|
3096
|
+
(op_type, f"ALTER TASK {fqn} RESUME"),
|
|
3097
|
+
]
|
|
3098
|
+
|
|
3099
|
+
operations: list[tuple[str, str]] = [
|
|
3100
|
+
alter_dt("OFFLINE_UPDATE", target_lag=new_target_lag, wh=new_warehouse, comment=desc)
|
|
3101
|
+
]
|
|
3102
|
+
if old_is_cron and new_is_cron:
|
|
3103
|
+
operations.extend(alter_task_schedule_ops("OFFLINE_UPDATE", cron_expr=effective_freq))
|
|
3104
|
+
elif old_is_cron and not new_is_cron:
|
|
3105
|
+
operations.append(drop_task_op("OFFLINE_UPDATE"))
|
|
3106
|
+
elif not old_is_cron and new_is_cron:
|
|
3107
|
+
operations.extend(create_task_ops("OFFLINE_UPDATE", cron_expr=effective_freq, wh=new_warehouse))
|
|
3108
|
+
|
|
3109
|
+
rollback_ops: list[tuple[str, str]] = [
|
|
3110
|
+
alter_dt(
|
|
3111
|
+
"OFFLINE_ROLLBACK",
|
|
3112
|
+
target_lag=old_target_lag,
|
|
3113
|
+
wh=old_warehouse,
|
|
3114
|
+
comment=feature_view.desc,
|
|
3115
|
+
)
|
|
3116
|
+
]
|
|
3117
|
+
if old_is_cron and new_is_cron:
|
|
3118
|
+
rollback_ops.extend(alter_task_schedule_ops("OFFLINE_ROLLBACK", cron_expr=old_freq))
|
|
3119
|
+
elif old_is_cron and not new_is_cron:
|
|
3120
|
+
rollback_ops.extend(create_task_ops("OFFLINE_ROLLBACK", cron_expr=old_freq, wh=old_warehouse))
|
|
3121
|
+
elif not old_is_cron and new_is_cron:
|
|
3122
|
+
rollback_ops.append(drop_task_op("OFFLINE_ROLLBACK"))
|
|
3123
|
+
|
|
3124
|
+
return operations, rollback_ops
|
|
3027
3125
|
|
|
3028
3126
|
@dataclass(frozen=True)
|
|
3029
3127
|
class _OnlineUpdateStrategy:
|
|
@@ -3156,12 +3254,11 @@ class FeatureStore:
|
|
|
3156
3254
|
rollback_operations: list[tuple[str, Union[str, FeatureView]]] = []
|
|
3157
3255
|
|
|
3158
3256
|
# Plan offline updates
|
|
3159
|
-
|
|
3257
|
+
offline_ops, offline_rollback_ops = self._build_offline_update_queries(
|
|
3160
3258
|
feature_view, refresh_freq, warehouse, desc
|
|
3161
3259
|
)
|
|
3162
|
-
operations.
|
|
3163
|
-
|
|
3164
|
-
rollback_operations.append(("OFFLINE_ROLLBACK", offline_rollback))
|
|
3260
|
+
operations.extend(offline_ops)
|
|
3261
|
+
rollback_operations.extend(offline_rollback_ops)
|
|
3165
3262
|
|
|
3166
3263
|
# Plan online updates
|
|
3167
3264
|
online_strategy = self._plan_online_update(feature_view, online_config)
|
|
@@ -3395,8 +3492,24 @@ class FeatureStore:
|
|
|
3395
3492
|
all_feature_cols = [spec.get_sql_column_name() for spec in feature_view.aggregation_specs]
|
|
3396
3493
|
if feature_names:
|
|
3397
3494
|
# Filter to requested features
|
|
3398
|
-
|
|
3399
|
-
|
|
3495
|
+
requested = {SqlIdentifier(f).resolved() for f in feature_names}
|
|
3496
|
+
keys_cols_to_keep: set[str] = set()
|
|
3497
|
+
keys_spec_by_window_offset = {
|
|
3498
|
+
(spec.window, spec.offset): spec
|
|
3499
|
+
for spec in feature_view.aggregation_specs
|
|
3500
|
+
if spec.function.is_secondary_key_array()
|
|
3501
|
+
}
|
|
3502
|
+
if keys_spec_by_window_offset:
|
|
3503
|
+
for spec in feature_view.aggregation_specs:
|
|
3504
|
+
if spec.function.is_secondary_key_array():
|
|
3505
|
+
continue
|
|
3506
|
+
if SqlIdentifier(spec.get_sql_column_name()).resolved() in requested:
|
|
3507
|
+
keys_spec = keys_spec_by_window_offset.get((spec.window, spec.offset))
|
|
3508
|
+
if keys_spec is not None:
|
|
3509
|
+
keys_cols_to_keep.add(keys_spec.get_sql_column_name())
|
|
3510
|
+
all_feature_cols = [
|
|
3511
|
+
c for c in all_feature_cols if SqlIdentifier(c).resolved() in requested or c in keys_cols_to_keep
|
|
3512
|
+
]
|
|
3400
3513
|
|
|
3401
3514
|
feature_cols_str = ", ".join(all_feature_cols)
|
|
3402
3515
|
# CTE name format matches generator: FV{index:03d}
|
|
@@ -4981,6 +5094,34 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
4981
5094
|
|
|
4982
5095
|
return complete_query
|
|
4983
5096
|
|
|
5097
|
+
def _resolve_task_schedule(self, fv_name: SqlIdentifier, fallback: str) -> str:
|
|
5098
|
+
"""Look up the Task schedule for a cron-driven feature view.
|
|
5099
|
+
|
|
5100
|
+
CRON-based FVs use ``TARGET_LAG = 'DOWNSTREAM'`` on the DT while the
|
|
5101
|
+
actual cron schedule lives on a companion Task with the same name.
|
|
5102
|
+
This helper retrieves that schedule so the reconstructed
|
|
5103
|
+
``FeatureView`` carries the real cron expression instead of
|
|
5104
|
+
``'DOWNSTREAM'``.
|
|
5105
|
+
|
|
5106
|
+
Args:
|
|
5107
|
+
fv_name: Resolved physical name of the feature view (e.g. ``FV$V1``).
|
|
5108
|
+
fallback: Value to return when no Task is found (i.e. the FV was
|
|
5109
|
+
truly registered with ``refresh_freq='DOWNSTREAM'``).
|
|
5110
|
+
|
|
5111
|
+
Returns:
|
|
5112
|
+
The cron expression from the Task (with the ``USING CRON `` prefix
|
|
5113
|
+
stripped), or ``fallback`` if no Task exists.
|
|
5114
|
+
"""
|
|
5115
|
+
task_rows = self._session.sql(
|
|
5116
|
+
f"SHOW TASKS LIKE '{fv_name.resolved()}' IN SCHEMA {self._config.full_schema_path}"
|
|
5117
|
+
).collect(statement_params=self._telemetry_stmp)
|
|
5118
|
+
if not task_rows:
|
|
5119
|
+
return fallback
|
|
5120
|
+
schedule: str = task_rows[0]["schedule"]
|
|
5121
|
+
if schedule.upper().startswith("USING CRON "):
|
|
5122
|
+
schedule = schedule[len("USING CRON ") :]
|
|
5123
|
+
return schedule
|
|
5124
|
+
|
|
4984
5125
|
def _get_entity_name(self, raw_name: SqlIdentifier) -> SqlIdentifier:
|
|
4985
5126
|
return SqlIdentifier(identifier.concat_names([_ENTITY_TAG_PREFIX, raw_name]))
|
|
4986
5127
|
|
|
@@ -5238,7 +5379,14 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
5238
5379
|
values.append(row["owner"])
|
|
5239
5380
|
values.append(row["comment"])
|
|
5240
5381
|
values.append(fv_metadata.entities)
|
|
5241
|
-
|
|
5382
|
+
# CRON-based FVs use TARGET_LAG='DOWNSTREAM' on the DT and store the actual
|
|
5383
|
+
# cron expression on a companion Task. Recover it so list_feature_views()
|
|
5384
|
+
# surfaces the same value the user originally passed in (matching the
|
|
5385
|
+
# round-trip behavior of get_feature_view / register_feature_view).
|
|
5386
|
+
target_lag = row["target_lag"] if "target_lag" in row else None
|
|
5387
|
+
if target_lag == "DOWNSTREAM":
|
|
5388
|
+
target_lag = self._resolve_task_schedule(FeatureView._get_physical_name(name, version), target_lag)
|
|
5389
|
+
values.append(target_lag)
|
|
5242
5390
|
values.append(row["refresh_mode"] if "refresh_mode" in row else None)
|
|
5243
5391
|
values.append(row["scheduling_state"] if "scheduling_state" in row else None)
|
|
5244
5392
|
values.append(row["warehouse"] if "warehouse" in row else None)
|
|
@@ -5460,6 +5608,13 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
5460
5608
|
else:
|
|
5461
5609
|
feature_descs = self._fetch_column_descs("DYNAMIC TABLE", fv_name)
|
|
5462
5610
|
|
|
5611
|
+
# CRON-based FVs use TARGET_LAG='DOWNSTREAM' on the DT and store the
|
|
5612
|
+
# actual cron expression on a companion Task. Recover it so the
|
|
5613
|
+
# round-trip (register → get → update) preserves what the user passed.
|
|
5614
|
+
refresh_freq = row["target_lag"]
|
|
5615
|
+
if refresh_freq == "DOWNSTREAM":
|
|
5616
|
+
refresh_freq = self._resolve_task_schedule(fv_name, refresh_freq)
|
|
5617
|
+
|
|
5463
5618
|
fv = FeatureView._construct_feature_view(
|
|
5464
5619
|
name=name,
|
|
5465
5620
|
entities=entities,
|
|
@@ -5473,7 +5628,7 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
5473
5628
|
else FeatureViewStatus.MASKED
|
|
5474
5629
|
),
|
|
5475
5630
|
feature_descs=feature_descs,
|
|
5476
|
-
refresh_freq=
|
|
5631
|
+
refresh_freq=refresh_freq,
|
|
5477
5632
|
database=self._config.database.identifier(),
|
|
5478
5633
|
schema=self._config.schema.identifier(),
|
|
5479
5634
|
warehouse=(
|